{"id":1240,"date":"2024-03-13T10:33:13","date_gmt":"2024-03-13T09:33:13","guid":{"rendered":"https:\/\/contecon.de\/picapportwiki\/?page_id=1240"},"modified":"2024-05-21T15:43:10","modified_gmt":"2024-05-21T13:43:10","slug":"add-on-type-database-field-extension-pagf","status":"publish","type":"page","link":"https:\/\/contecon.de\/picapportwiki\/add-on-type-database-field-extension-pagf\/","title":{"rendered":"Add-on type: Database Field extension (pagf)"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1240\" class=\"elementor elementor-1240\">\n\t\t\t\t<div class=\"elementor-element elementor-element-cdd8d9a e-flex e-con-boxed e-con e-parent\" data-id=\"cdd8d9a\" data-element_type=\"container\" data-settings=\"{&quot;content_width&quot;:&quot;boxed&quot;}\" data-core-v316-plus=\"true\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-53b210b elementor-widget elementor-widget-heading\" data-id=\"53b210b\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.19.0 - 07-02-2024 *\/\n.elementor-heading-title{padding:0;margin:0;line-height:1}.elementor-widget-heading .elementor-heading-title[class*=elementor-size-]>a{color:inherit;font-size:inherit;line-height:inherit}.elementor-widget-heading .elementor-heading-title.elementor-size-small{font-size:15px}.elementor-widget-heading .elementor-heading-title.elementor-size-medium{font-size:19px}.elementor-widget-heading .elementor-heading-title.elementor-size-large{font-size:29px}.elementor-widget-heading .elementor-heading-title.elementor-size-xl{font-size:39px}.elementor-widget-heading .elementor-heading-title.elementor-size-xxl{font-size:59px}<\/style><h2 class=\"elementor-heading-title elementor-size-default\">Add-on type: Database Field extension (pagf)<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f63a10e elementor-widget elementor-widget-heading\" data-id=\"f63a10e\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">General<\/h3>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-197bd41 elementor-widget elementor-widget-text-editor\" data-id=\"197bd41\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.19.0 - 07-02-2024 *\/\n.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:#69727d;color:#fff}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap{color:#69727d;border:3px solid;background-color:transparent}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap{margin-top:8px}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter{width:1em;height:1em}.elementor-widget-text-editor .elementor-drop-cap{float:left;text-align:center;line-height:1;font-size:50px}.elementor-widget-text-editor .elementor-drop-cap-letter{display:inline-block}<\/style>\t\t\t\t<p>A Database Field extension adds one or more (indexed) attributes to the PicApport database. The configuration of these attribute is declared in a Map and is returned in the <em><strong>init()<\/strong><\/em> method of the Add-on.<\/p><p>A groovy script is recognized as a <em><strong>Database Field extension<\/strong><\/em> if it extends the class: <a class=\"external-link\" href=\"https:\/\/picapport.de\/plugins\/javadoc\/de\/contecon\/picapport\/groovy\/PhotoFieldProvider.html\" rel=\"nofollow\">de.contecon.picapport.groovy.PhotoFieldProvider<\/a><\/p><p>See also <a class=\"external-link\" href=\"https:\/\/picapport.de\/plugins\/javadoc\/de\/contecon\/picapport\/groovy\/PhotoFieldProvider.html\" rel=\"nofollow\">de.contecon.picapport.groovy.PhotoFieldProvider<\/a> for the methods that can be overwritten to create your own Database fields.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9b024cc elementor-widget elementor-widget-heading\" data-id=\"9b024cc\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Updating<\/h3>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6d7fdea elementor-widget elementor-widget-text-editor\" data-id=\"6d7fdea\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>When a\u00a0Database Field extension has been updated it will automatically be reloaded and compiled when:<\/p><ul><li>When the PicApport Server starts<\/li><li>When the <em><strong>reloadaddons<\/strong> <\/em>console command is executed<\/li><\/ul>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-691f600 elementor-widget elementor-widget-heading\" data-id=\"691f600\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">The init() Method<\/h3>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-89c1f88 elementor-widget elementor-widget-text-editor\" data-id=\"89c1f88\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>The <em><strong>init()<\/strong><\/em> method of a\u00a0<strong><em>Database Field extension <\/em><\/strong>must return a Map which defines the metadata of the <em><strong>Fields:<\/strong><\/em><\/p><div class=\"table-wrap\"><table class=\"relative-table wrapped confluenceTable tablesorter tablesorter-default\" role=\"grid\"><colgroup><col \/><col \/><col \/><col \/><\/colgroup><thead><\/thead><\/table><\/div><table class=\"relative-table wrapped confluenceTable tablesorter tablesorter-default\" role=\"grid\"><tbody aria-live=\"polite\" aria-relevant=\"all\"><tr role=\"row\"><td class=\"confluenceTd\"><em><strong>version<\/strong><\/em><\/td><td class=\"confluenceTd\">String<\/td><td class=\"confluenceTd\" colspan=\"1\">no<\/td><td class=\"confluenceTd\" colspan=\"1\">Version information<\/td><\/tr><tr role=\"row\"><td class=\"confluenceTd\"><p><em><strong>fields<\/strong><\/em><\/p><\/td><td class=\"confluenceTd\">List of Fields-Key-Value pairs<\/td><td class=\"confluenceTd\" colspan=\"1\">no<\/td><td class=\"confluenceTd\" colspan=\"1\"><p>A list of at least one field that is declared by this Add-on. A field must have a PicApport wide unique id\u00a0\u00a0 (e.g. <em><strong>osmCountry<\/strong><\/em> in the example below).<br \/>The field id is also used as the search operator for the filed value: e.G <em><strong>osmCountry:&#8220;Germany&#8220;<\/strong><\/em> in the example below.<\/p><p>A <em><strong>field<\/strong><\/em> has the following configuration parameters:<\/p><div class=\"table-wrap\">\u00a0<\/div><\/td><\/tr><\/tbody><\/table><div class=\"table-wrap\"><table class=\"relative-table wrapped confluenceTable tablesorter tablesorter-default\" role=\"grid\"><tbody aria-live=\"polite\" aria-relevant=\"all\"><tr role=\"row\"><td class=\"confluenceTd\" colspan=\"1\"><div class=\"table-wrap\"><table class=\"wrapped confluenceTable tablesorter tablesorter-default\" role=\"grid\"><tbody aria-live=\"polite\" aria-relevant=\"all\"><tr role=\"row\"><td class=\"confluenceTd\"><em><strong>type<\/strong><\/em><\/td><td class=\"confluenceTd\">String<\/td><td class=\"confluenceTd\" colspan=\"1\">no<\/td><td class=\"confluenceTd\" colspan=\"1\"><p>PhotoFieldProvider.DATA_TYPE_* values<\/p><p>see <a class=\"external-link\" href=\"https:\/\/picapport.de\/plugins\/javadoc\/de\/contecon\/picapport\/groovy\/PhotoFieldProvider.html\" rel=\"nofollow\">PhotoFieldProvider<\/a> for a list of possible types.<\/p><\/td><\/tr><tr role=\"row\"><td class=\"confluenceTd\"><em><strong>addToGlobalFulltext<\/strong><\/em><\/td><td class=\"confluenceTd\">boolean<\/td><td class=\"confluenceTd\" colspan=\"1\"><p>yes<br \/>(default = false)<\/p><\/td><td class=\"confluenceTd\" colspan=\"1\">If set to <em><strong>true<\/strong><\/em>, the String based content of this field is added to PicApports global full text search.<\/td><\/tr><tr role=\"row\"><td class=\"confluenceTd\" colspan=\"1\"><p><em><strong>indexType<\/strong><\/em><\/p><\/td><td class=\"confluenceTd\" colspan=\"1\">String<\/td><td class=\"confluenceTd\" colspan=\"1\">no<\/td><td class=\"confluenceTd\" colspan=\"1\"><p>PhotoFieldProvider.INDEX_TYPE_* values<\/p><p>see <a class=\"external-link\" href=\"https:\/\/picapport.de\/plugins\/javadoc\/de\/contecon\/picapport\/groovy\/PhotoFieldProvider.html\" rel=\"nofollow\">PhotoFieldProvider<\/a> for a list of possible types.<\/p><\/td><\/tr><tr role=\"row\"><td class=\"confluenceTd\" colspan=\"1\"><em><strong>addToReport<\/strong><\/em><\/td><td class=\"confluenceTd\" colspan=\"1\">String<\/td><td class=\"confluenceTd\" colspan=\"1\">no<\/td><td class=\"confluenceTd\" colspan=\"1\"><p class=\"auto-cursor-target\">If set to <em><strong>true<\/strong><\/em>, the String based content of this field is added to PicApports build-in metadata report.<\/p><\/td><\/tr><tr role=\"row\"><td class=\"confluenceTd\" colspan=\"1\"><em><strong>addToGlobalKeywords<\/strong><\/em><\/td><td class=\"confluenceTd\" colspan=\"1\">boolean<\/td><td class=\"confluenceTd\" colspan=\"1\">yes<br \/>(default = false)<\/td><td class=\"confluenceTd\" colspan=\"1\">If set to true, the String based content of this filed is added to PicApports internal <strong><em>keyword:<\/em><\/strong> serach<\/td><\/tr><tr role=\"row\"><td class=\"confluenceTd\" colspan=\"1\"><em><strong>dataId<\/strong><\/em><\/td><td class=\"confluenceTd\" colspan=\"1\">String<\/td><td class=\"confluenceTd\" colspan=\"1\">only required if<br \/><strong><em>addToGlobalKeywords<\/em><\/strong>=true<\/td><td class=\"confluenceTd\" colspan=\"1\"><p>Because keywords can be removed with PicApports Web-GUI. The Add-on <em><strong>dataId<\/strong> <\/em>must provided to give the Add-on a chance to delete the keywords if required by user.<\/p><p>See also method <em><strong>removeKeywords<\/strong><\/em> in <a class=\"external-link\" href=\"https:\/\/picapport.de\/plugins\/javadoc\/de\/contecon\/picapport\/groovy\/PhotoFieldProvider.html\" rel=\"nofollow\">PhotoFieldProvider<\/a>\u00a0<\/p><\/td><\/tr><\/tbody><\/table><\/div><\/td><\/tr><\/tbody><\/table><\/div><h3 id=\"Add-ontype:DatabaseFieldextension(pagf)-ExampleinitMethod\">Example init Method<\/h3><div class=\"code panel pdl conf-macro output-block\" data-hasbody=\"true\" data-macro-name=\"code\"><div class=\"codeContent panelContent pdl\"><div><div id=\"highlighter_606250\" class=\"syntaxhighlighter sh-confluence nogutter  groovy\"><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"code\"><div class=\"container\" title=\"Hint: double-click to select code\"><div class=\"line number1 index0 alt2\"><code class=\"groovy keyword\">private<\/code> <code class=\"groovy plain\">final <\/code><code class=\"groovy keyword\">static<\/code> <code class=\"groovy plain\">String FIELD_NAME_OSM\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = <\/code><code class=\"groovy string\">\"osm\"<\/code><code class=\"groovy plain\">;\u00a0 <\/code><\/div><div class=\"line number2 index1 alt1\"><code class=\"groovy keyword\">private<\/code> <code class=\"groovy plain\">final <\/code><code class=\"groovy keyword\">static<\/code> <code class=\"groovy plain\">String FIELD_NAME_OSM_COUNTRY = <\/code><code class=\"groovy string\">\"osmCountry\"<\/code><code class=\"groovy plain\">;<\/code><\/div><div class=\"line number3 index2 alt2\"><code class=\"groovy keyword\">private<\/code> <code class=\"groovy plain\">final <\/code><code class=\"groovy keyword\">static<\/code> <code class=\"groovy plain\">String FIELD_NAME_OSM_STATE\u00a0\u00a0 = <\/code><code class=\"groovy string\">\"osmState\"<\/code><code class=\"groovy plain\">;<\/code><\/div><div class=\"line number4 index3 alt1\"><code class=\"groovy keyword\">private<\/code> <code class=\"groovy plain\">final <\/code><code class=\"groovy keyword\">static<\/code> <code class=\"groovy plain\">String FIELD_NAME_OSM_POSTCODE= <\/code><code class=\"groovy string\">\"osmPostcode\"<\/code><code class=\"groovy plain\">;<\/code><\/div><div class=\"line number5 index4 alt2\"><code class=\"groovy keyword\">private<\/code> <code class=\"groovy plain\">final <\/code><code class=\"groovy keyword\">static<\/code> <code class=\"groovy plain\">String FIELD_NAME_OSM_CITY=\u00a0\u00a0\u00a0\u00a0 <\/code><code class=\"groovy string\">\"osmCity\"<\/code><code class=\"groovy plain\">;<\/code><\/div><div class=\"line number6 index5 alt1\"><code class=\"groovy keyword\">private<\/code> <code class=\"groovy plain\">final <\/code><code class=\"groovy keyword\">static<\/code> <code class=\"groovy plain\">String FIELD_NAME_OSM_ROAD=\u00a0\u00a0\u00a0\u00a0 <\/code><code class=\"groovy string\">\"osmRoad\"<\/code><code class=\"groovy plain\">;<\/code><\/div><div class=\"line number7 index6 alt2\"><code class=\"groovy spaces\">\u00a0\u00a0<\/code>\u00a0<\/div><div class=\"line number8 index7 alt1\"><code class=\"groovy spaces\">\u00a0\u00a0<\/code>\u00a0<\/div><div class=\"line number9 index8 alt2\"><code class=\"groovy keyword\">public<\/code> <code class=\"groovy plain\">Map init(IAddonContext addonContext) {<\/code><\/div><div class=\"line number10 index9 alt1\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">addonContext.getLogger().logMessage(<\/code><code class=\"groovy string\">\" Addon loaded Autor: E. Schreiner (c)2020 Contecon Software GmbH\"<\/code> <code class=\"groovy plain\">);<\/code><\/div><div class=\"line number11 index10 alt2\">\u00a0<\/div><div class=\"line number12 index11 alt1\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy keyword\">def<\/code> <code class=\"groovy plain\">meta =\u00a0 [<\/code><\/div><div class=\"line number13 index12 alt2\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">version:<\/code><code class=\"groovy string\">'1.0.0'<\/code><code class=\"groovy plain\">,<\/code><\/div><div class=\"line number14 index13 alt1\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">fields: [<\/code><\/div><div class=\"line number15 index14 alt2\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">(FIELD_NAME_OSM): [ <\/code><code class=\"groovy comments\">\/\/ \"display_name\" returned from OSM<\/code><\/div><div class=\"line number16 index15 alt1\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">type:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 PhotoFieldProvider.DATA_TYPE_STRING,<\/code><\/div><div class=\"line number17 index16 alt2\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">addToGlobalFulltext:\u00a0\u00a0 true,<\/code><\/div><div class=\"line number18 index17 alt1\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">indexType:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 PhotoFieldProvider.INDEX_TYPE_FULLTEXT,<\/code><\/div><div class=\"line number19 index18 alt2\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">addToReport:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 true,<\/code><\/div><div class=\"line number20 index19 alt1\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">],<\/code><\/div><div class=\"line number21 index20 alt2\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">(FIELD_NAME_OSM_COUNTRY): [ <\/code><code class=\"groovy comments\">\/\/ \"country\" returned from OSM<\/code><\/div><div class=\"line number22 index21 alt1\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">type:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 PhotoFieldProvider.DATA_TYPE_STRING,<\/code><\/div><div class=\"line number23 index22 alt2\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">addToGlobalFulltext:\u00a0\u00a0 false,<\/code><\/div><div class=\"line number24 index23 alt1\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">indexType:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 PhotoFieldProvider.INDEX_TYPE_FULLTEXT,<\/code><\/div><div class=\"line number25 index24 alt2\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">addToReport:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 true,<\/code><\/div><div class=\"line number26 index25 alt1\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">],<\/code><\/div><div class=\"line number27 index26 alt2\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">(FIELD_NAME_OSM_STATE): [ <\/code><code class=\"groovy comments\">\/\/ \"state\" returned from OSM<\/code><\/div><div class=\"line number28 index27 alt1\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">type:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 PhotoFieldProvider.DATA_TYPE_STRING,<\/code><\/div><div class=\"line number29 index28 alt2\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">addToGlobalFulltext:\u00a0\u00a0 false,<\/code><\/div><div class=\"line number30 index29 alt1\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">indexType:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 PhotoFieldProvider.INDEX_TYPE_FULLTEXT,<\/code><\/div><div class=\"line number31 index30 alt2\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">addToReport:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 true,<\/code><\/div><div class=\"line number32 index31 alt1\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">],<\/code><\/div><div class=\"line number33 index32 alt2\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">(FIELD_NAME_OSM_POSTCODE): [ <\/code><code class=\"groovy comments\">\/\/ \"postcode\" returned from OSM<\/code><\/div><div class=\"line number34 index33 alt1\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">type:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 PhotoFieldProvider.DATA_TYPE_STRING,<\/code><\/div><div class=\"line number35 index34 alt2\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">addToGlobalFulltext:\u00a0\u00a0 false,<\/code><\/div><div class=\"line number36 index35 alt1\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">indexType:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 PhotoFieldProvider.INDEX_TYPE_ID,<\/code><\/div><div class=\"line number37 index36 alt2\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">addToReport:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 true,<\/code><\/div><div class=\"line number38 index37 alt1\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">],<\/code><\/div><div class=\"line number39 index38 alt2\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">(FIELD_NAME_OSM_CITY): [ <\/code><code class=\"groovy comments\">\/\/ \"city\", \"town\", \"village\" returned from OSM<\/code><\/div><div class=\"line number40 index39 alt1\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">type:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 PhotoFieldProvider.DATA_TYPE_STRING,<\/code><\/div><div class=\"line number41 index40 alt2\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">addToGlobalFulltext:\u00a0\u00a0 false,<\/code><\/div><div class=\"line number42 index41 alt1\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">indexType:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 PhotoFieldProvider.INDEX_TYPE_FULLTEXT,<\/code><\/div><div class=\"line number43 index42 alt2\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">addToReport:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 true,<\/code><\/div><div class=\"line number44 index43 alt1\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">],<\/code><\/div><div class=\"line number45 index44 alt2\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">(FIELD_NAME_OSM_ROAD): [ <\/code><code class=\"groovy comments\">\/\/ \"road\" returned from OSM<\/code><\/div><div class=\"line number46 index45 alt1\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">type:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 PhotoFieldProvider.DATA_TYPE_STRING,<\/code><\/div><div class=\"line number47 index46 alt2\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">addToGlobalFulltext:\u00a0\u00a0 false,<\/code><\/div><div class=\"line number48 index47 alt1\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">indexType:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 PhotoFieldProvider.INDEX_TYPE_FULLTEXT,<\/code><\/div><div class=\"line number49 index48 alt2\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">addToReport:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 true,<\/code><\/div><div class=\"line number50 index49 alt1\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">]\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/code><\/div><div class=\"line number51 index50 alt2\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">]<\/code><\/div><div class=\"line number52 index51 alt1\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">]\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/code><\/div><div class=\"line number53 index52 alt2\"><code class=\"groovy spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"groovy plain\">}<\/code><\/div><\/div><\/td><\/tr><\/tbody><\/table><\/div><\/div><\/div><\/div>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-216edc9 elementor-widget elementor-widget-heading\" data-id=\"216edc9\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Sample Implementation of a Database Field extension<\/h3>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d10083b elementor-widget elementor-widget-text-editor\" data-id=\"d10083b\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>See&nbsp;<a href=\"https:\/\/contecon.de\/picapportwiki\/picapport-add-on-openstreetmap-geo-reverse-encoder-2\/\">PicApport Add-on: OpenStreetMap Geo-Reverse-Encoder \u2013 PicApport Wiki (contecon.de)<\/a>&nbsp;which contains a download-URL for our sample implementation of a Database Field extension<\/p>\n<p>A short an straight forward example is our&nbsp;<a href=\"https:\/\/contecon.de\/picapportwiki\/picapport-add-on-nonjpgtitlefield-2\/\">PicApport Add-on: NonJpgTitleField \u2013 PicApport Wiki (contecon.de)<\/a>&nbsp;Add-on. Just see the complete code below:<\/p>\n<div class=\"code panel pdl conf-macro output-block\" data-hasbody=\"true\" data-macro-name=\"code\">\n<div class=\"codeContent panelContent pdl\">\n<div>\n<div id=\"highlighter_954254\" class=\"syntaxhighlighter sh-confluence nogutter groovy\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"code\">\n<div class=\"container\" title=\"Hint: double-click to select code\">\n<div class=\"line number1 index0 alt2\"><code class=\"groovy keyword\">import<\/code> <code class=\"groovy plain\">de.contecon.imageutils.IccImageMetaData;<\/code><\/div>\n<div class=\"line number2 index1 alt1\">&nbsp;<\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"groovy keyword\">import<\/code> <code class=\"groovy plain\">de.contecon.picapport.IPhotoMetaDataFilter;<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"groovy keyword\">import<\/code> <code class=\"groovy plain\">de.contecon.picapport.groovy.IAddonContext;<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"groovy keyword\">import<\/code> <code class=\"groovy plain\">de.contecon.picapport.groovy.PhotoFieldProvider;<\/code><\/div>\n<div class=\"line number6 index5 alt1\">&nbsp;<\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"groovy keyword\">class<\/code> <code class=\"groovy plain\">NonJpgTitleField <\/code><code class=\"groovy keyword\">extends<\/code> <code class=\"groovy plain\">PhotoFieldProvider {<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"groovy spaces\">&nbsp;&nbsp;<\/code>&nbsp;<\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"groovy keyword\">public<\/code> <code class=\"groovy plain\">Map init(IAddonContext addonContext) {<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"groovy spaces\">&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"groovy plain\">addonContext.getLogger().logMessage(<\/code><code class=\"groovy string\">\" Addon loaded Autor: E. Schreiner (c)2020 Contecon Software GmbH\"<\/code> <code class=\"groovy plain\">);<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"groovy spaces\">&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"groovy plain\">[version:<\/code><code class=\"groovy string\">'1.0.0'<\/code><code class=\"groovy plain\">]; <\/code><code class=\"groovy comments\">\/\/return Map with version.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"groovy spaces\">&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"groovy plain\">}<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"groovy spaces\">&nbsp;<\/code>&nbsp;<\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"groovy keyword\">public<\/code> <code class=\"groovy color1\">void<\/code> <code class=\"groovy plain\">setFieldValues(IAddonContext addonContext, IccImageMetaData metaDataFile, IPhotoMetaDataFilter metadataDatabase) {<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"groovy spaces\">&nbsp;&nbsp;&nbsp;<\/code><code class=\"groovy keyword\">def<\/code> <code class=\"groovy plain\">oExt=metadataDatabase.getPhotoInFileSystem().getOriginalFileExtension();<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"groovy spaces\">&nbsp;&nbsp;&nbsp;<\/code><code class=\"groovy keyword\">if<\/code><code class=\"groovy plain\">(<\/code><code class=\"groovy constants\">null<\/code> <code class=\"groovy plain\">!= oExt &amp;&amp; oExt.length() &gt; <\/code><code class=\"groovy value\">1<\/code><code class=\"groovy plain\">) {<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"groovy spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"groovy plain\">oExt= oExt.substring(<\/code><code class=\"groovy value\">1<\/code><code class=\"groovy plain\">).toUpperCase();<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"groovy spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"groovy keyword\">if<\/code><code class=\"groovy plain\">(!(oExt == <\/code><code class=\"groovy string\">\"JPG\"<\/code> <code class=\"groovy plain\">|| oExt ==<\/code><code class=\"groovy string\">\"JPEG\"<\/code><code class=\"groovy plain\">)) {<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"groovy spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"groovy plain\">metadataDatabase.setThumbTitle(oExt);<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"groovy spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"groovy plain\">metadataDatabase.setThumbTitleColor(<\/code><code class=\"groovy string\">\"#DD130E\"<\/code><code class=\"groovy plain\">);<\/code><\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"groovy spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"groovy plain\">}&nbsp;&nbsp;&nbsp; <\/code><\/div>\n<div class=\"line number22 index21 alt1\"><code class=\"groovy spaces\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/code><code class=\"groovy plain\">} <\/code><\/div>\n<div class=\"line number23 index22 alt2\"><code class=\"groovy spaces\">&nbsp;&nbsp;&nbsp;<\/code><code class=\"groovy plain\">}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/code><\/div>\n<div class=\"line number24 index23 alt1\"><code class=\"groovy plain\">}<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-515d15b e-flex e-con-boxed e-con e-parent\" data-id=\"515d15b\" data-element_type=\"container\" data-settings=\"{&quot;content_width&quot;:&quot;boxed&quot;}\" data-core-v316-plus=\"true\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Add-on type: Database Field extension (pagf) General A Database Field extension adds one or more (indexed) attributes to the PicApport database. The configuration of these attribute is declared in a Map and is returned in the init() method of the Add-on. A groovy script is recognized as a Database Field extension if it extends the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1240","page","type-page","status-publish","hentry","entry"],"_links":{"self":[{"href":"https:\/\/contecon.de\/picapportwiki\/wp-json\/wp\/v2\/pages\/1240","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/contecon.de\/picapportwiki\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/contecon.de\/picapportwiki\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/contecon.de\/picapportwiki\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/contecon.de\/picapportwiki\/wp-json\/wp\/v2\/comments?post=1240"}],"version-history":[{"count":7,"href":"https:\/\/contecon.de\/picapportwiki\/wp-json\/wp\/v2\/pages\/1240\/revisions"}],"predecessor-version":[{"id":2050,"href":"https:\/\/contecon.de\/picapportwiki\/wp-json\/wp\/v2\/pages\/1240\/revisions\/2050"}],"wp:attachment":[{"href":"https:\/\/contecon.de\/picapportwiki\/wp-json\/wp\/v2\/media?parent=1240"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}