Changeset 25666

Show
Ignore:
Timestamp:
23.05.2012 21:01:47 (7 years ago)
Author:
ak19
Message:

For image-e, the OpenDialog? was displaying the Chinese collection display name and description (zh was the last language code in collectionConfig.xml for which name and description were defined). Now the code first looks for any meta specified for the gli lang annd if not, then for any meta specified for the default language (en), and if that's not there, the it finally falls back to using the value of the first language for which the metadata is specified.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • main/trunk/gli/src/org/greenstone/gatherer/collection/BasicCollectionConfiguration.java

    r22455 r25666  
    3939import java.io.*; 
    4040import java.util.ArrayList; 
     41import org.greenstone.gatherer.Configuration; 
    4142import org.greenstone.gatherer.DebugStream; 
    4243import org.greenstone.gatherer.Dictionary; 
     
    168169        Node displayItemListNode = XMLTools.getChildByTagName(root, StaticStrings.DISPLAYITEMLIST_STR); 
    169170 
     171        // Get the metadataList and displayItemList metadata for the current gli language 
     172        String default_language = StaticStrings.ENGLISH_LANGUAGE_STR; // is this always the case? 
     173        String gli_language_code = Configuration.getLanguage(); // definitely returns some language code 
     174 
    170175        if (metadataListNode != null) { 
    171176          ArrayList metadata_list = XMLTools.getChildElementsByTagName((Element)metadataListNode, StaticStrings.METADATA_STR); 
     177 
     178          String fallback_lang_creator = ""; 
     179          String fallback_lang_maintainer = ""; 
     180          String fallback_lang_is_public = ""; 
     181           
    172182          for (int i=0; i<metadata_list.size(); i++) { 
    173183            Element meta = (Element) metadata_list.get(i); 
    174184            String meta_name = meta.getAttribute(StaticStrings.NAME_ATTRIBUTE); 
     185 
     186            // want to get the metadata matching GLI's language, or else fall back on the default language 
     187            // version, or else fall back onto the first value for any language provided for the metadata 
     188            String meta_lang = meta.getAttribute(StaticStrings.LANG_ATTRIBUTE); // returns "" if no such attribute 
     189            if(meta_lang.equals("")) { 
     190            meta_lang = default_language; 
     191            } 
     192             
    175193            if (meta_name.equals(StaticStrings.COLLECTIONMETADATA_CREATOR_STR)) { 
    176               creator = XMLTools.getNodeText(meta); 
     194            if (meta_lang.equals(gli_language_code)) { // metadata's language matched the requested language 
     195                creator = XMLTools.getNodeText(meta); 
     196            } else if (meta_lang.equals(default_language)) { // meta_lang matched fall back language 
     197                fallback_lang_creator = XMLTools.getNodeText(meta); 
     198            } else if (creator.equals("") && fallback_lang_creator.equals("")) { // resort to first value for meta we can find 
     199                fallback_lang_creator = XMLTools.getNodeText(meta); 
     200            } 
    177201            } else if (meta_name.equals(StaticStrings.COLLECTIONMETADATA_MAINTAINER_STR)) { 
    178               maintainer = XMLTools.getNodeText(meta); 
     202            if (meta_lang.equals(gli_language_code)) { 
     203                maintainer = XMLTools.getNodeText(meta); 
     204            } else if (meta_lang.equals(default_language)) { 
     205                fallback_lang_maintainer = XMLTools.getNodeText(meta); 
     206            } else if (maintainer.equals("") && fallback_lang_maintainer.equals("")) { // resort to first value for meta we can find 
     207                fallback_lang_maintainer = XMLTools.getNodeText(meta); 
     208            } 
    179209            } else if (meta_name.equals(StaticStrings.COLLECTIONMETADATA_PUBLIC_STR)) { 
    180               is_public = XMLTools.getNodeText(meta); 
    181             } 
    182           } 
    183            
     210            if (meta_lang.equals(gli_language_code)) { 
     211                is_public = XMLTools.getNodeText(meta); 
     212            } else if (meta_lang.equals(default_language)) { 
     213                fallback_lang_is_public = XMLTools.getNodeText(meta); 
     214            } else if (is_public.equals("") && fallback_lang_is_public.equals("")) { // resort to first value for meta we can find 
     215                fallback_lang_is_public = XMLTools.getNodeText(meta); 
     216            } 
     217            }        
     218          } 
     219          // if no metadata found for the requested language, use the one set in the default language 
     220          if(creator.equals("")) { 
     221              creator = fallback_lang_creator; 
     222          } 
     223          if(maintainer.equals("")) { 
     224              maintainer = fallback_lang_maintainer; 
     225          } 
     226          if(is_public.equals("")) { 
     227              is_public = fallback_lang_is_public; 
     228          } 
    184229        } 
     230 
     231 
    185232        if (displayItemListNode != null) { 
    186233          ArrayList display_list = XMLTools.getChildElementsByTagName((Element)displayItemListNode, StaticStrings.DISPLAYITEM_STR); 
     234 
     235          String fallback_lang_name = ""; 
     236          String fallback_lang_description = ""; 
     237 
    187238          for (int i=0; i<display_list.size(); i++) { 
    188239            Element meta = (Element) display_list.get(i); 
    189240            String meta_name = meta.getAttribute(StaticStrings.NAME_ATTRIBUTE); 
     241            String meta_lang = meta.getAttribute(StaticStrings.LANG_ATTRIBUTE); 
     242            if(meta_lang.equals("")) { 
     243            meta_lang = default_language; 
     244            } 
     245 
    190246            if (meta_name.equals(StaticStrings.NAME_STR)) { 
    191               name = XMLTools.getNodeText(meta); 
     247            if (meta_lang.equals(gli_language_code)) { 
     248                name = XMLTools.getNodeText(meta); 
     249            } else if (meta_lang.equals(default_language)) { 
     250                fallback_lang_name = XMLTools.getNodeText(meta); 
     251            } else if (name.equals("") && fallback_lang_name.equals("")) { 
     252                fallback_lang_name = XMLTools.getNodeText(meta); 
     253            } 
    192254            } else if (meta_name.equals(StaticStrings.DESCRIPTION_STR)) { 
    193               description = XMLTools.getNodeText(meta); 
     255            if (meta_lang.equals(gli_language_code)) { 
     256                description = XMLTools.getNodeText(meta); 
     257            } else if (meta_lang.equals(default_language)) { 
     258                fallback_lang_description = XMLTools.getNodeText(meta); 
     259            } else if (description.equals("") && fallback_lang_description.equals("")) { 
     260                fallback_lang_description = XMLTools.getNodeText(meta); 
     261            } 
    194262            }  
    195263             
     264          } 
     265 
     266          if(name.equals("")) { 
     267              name = fallback_lang_name;               
     268          } 
     269          if(description.equals("")) { 
     270              description = fallback_lang_description; 
    196271          } 
    197272        }