Changeset 25730

Show
Ignore:
Timestamp:
31.05.2012 17:43:00 (7 years ago)
Author:
ak19
Message:

All displayItems in collectionConfig.xml are written out. Especially necesary in legacy GS2 dec collections that have been converted into GS3 collections and which contain translated displayItem elements. These were previously not preserved by GLI.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • main/trunk/gli/src/org/greenstone/gatherer/cdm/CollectionConfigXMLReadWrite.java

    r25207 r25730  
    3131import java.util.ArrayList; 
    3232import java.util.HashMap; 
     33import java.util.Iterator; 
     34import java.util.LinkedHashSet; 
     35import java.util.Map; 
     36import java.util.Set; 
    3337import java.util.StringTokenizer; 
    3438 
     
    11611165        Element destination = to.getDocumentElement(); 
    11621166 
    1163         String[] att_values = { StaticStrings.COLLECTIONMETADATA_COLLECTIONEXTRA_STR, StaticStrings.COLLECTIONMETADATA_ICONCOLLECTIONSMALL_STR, StaticStrings.COLLECTIONMETADATA_ICONCOLLECTION_STR, StaticStrings.COLLECTIONMETADATA_COLLECTIONNAME_STR }; 
    1164  
    1165         String[] map_attrs = { StaticStrings.DESCRIPTION_STR, StaticStrings.SMALLICON_STR, StaticStrings.ICON_STR, StaticStrings.NAME_STR }; 
    1166  
    1167         for (int i = 0; i < att_values.length; i++) 
    1168         { 
    1169  
    1170             //dOc 
    1171             ArrayList e_list = XMLTools.getNamedElementList(from.getDocumentElement(), StaticStrings.COLLECTIONMETADATA_ELEMENT, StaticStrings.NAME_ATTRIBUTE, att_values[i]); 
    1172             // if such elements don't exist, don't bother 
    1173             if (e_list == null) 
    1174             { 
    1175                 continue; 
    1176             } 
    1177             for (int j = 0; j < e_list.size(); j++) 
    1178             { 
    1179                 Element e = (Element) e_list.get(j); 
    1180                 if (e.getAttribute(StaticStrings.ASSIGNED_ATTRIBUTE).equals(StaticStrings.FALSE_STR)) 
    1181                 { 
    1182                     continue; 
    1183                 } 
    1184                 String text = XMLTools.getNodeText(e); 
    1185                 String lang = e.getAttribute(StaticStrings.LANGUAGE_ATTRIBUTE); 
    1186  
    1187                 Element displayItem = constructElement(StaticStrings.DISPLAYITEM_STR, map_attrs[i], StaticStrings.LANG_STR, lang, text, to); 
    1188                 displayItemList.appendChild(displayItem); 
    1189             } 
    1190  
     1167        Map attributeMap = new HashMap(4); 
     1168        attributeMap.put(StaticStrings.COLLECTIONMETADATA_COLLECTIONEXTRA_STR,StaticStrings.DESCRIPTION_STR); 
     1169        attributeMap.put(StaticStrings.COLLECTIONMETADATA_COLLECTIONNAME_STR,StaticStrings.NAME_STR); 
     1170        attributeMap.put(StaticStrings.COLLECTIONMETADATA_ICONCOLLECTIONSMALL_STR,StaticStrings.SMALLICON_STR); 
     1171        attributeMap.put(StaticStrings.COLLECTIONMETADATA_ICONCOLLECTION_STR,StaticStrings.ICON_STR); 
     1172 
     1173        NodeList e_list = from.getDocumentElement().getElementsByTagName(StaticStrings.COLLECTIONMETADATA_ELEMENT); 
     1174        // if such elements don't exist, don't bother 
     1175        if (e_list != null) {  
     1176             
     1177            for (int j = 0; j < e_list.getLength(); j++) { 
     1178            Element e = (Element) e_list.item(j); 
     1179            if (e.getAttribute(StaticStrings.ASSIGNED_ATTRIBUTE).equals(StaticStrings.FALSE_STR)) { 
     1180                continue; 
     1181            } 
     1182            String text = XMLTools.getNodeText(e); 
     1183            String lang = e.getAttribute(StaticStrings.LANGUAGE_ATTRIBUTE); 
     1184            String name_value = e.getAttribute(StaticStrings.NAME_ATTRIBUTE); 
     1185             
     1186            String name_mapping = (String)attributeMap.get(name_value); 
     1187            if(name_mapping != null) { 
     1188                name_value = name_mapping; 
     1189            } 
     1190 
     1191            Element displayItem = constructElement(StaticStrings.DISPLAYITEM_STR, name_value, StaticStrings.LANG_STR, lang, text, to); 
     1192            displayItemList.appendChild(displayItem); 
     1193            } 
     1194             
    11911195        } 
    11921196        destination.appendChild(displayItemList); 
     
    23342338        } 
    23352339 
     2340        if (displayItemListNode != null) 
     2341        { 
     2342 
     2343            NodeList nl = ((Element)displayItemListNode).getElementsByTagName(StaticStrings.DISPLAYITEM_STR); 
     2344 
     2345            // make a list of all unique attribute names that are specifically not 
     2346            // description, smallicon, icon and name, since these are already processed above 
     2347            Set setOfUniqueDisplayItemNames = new LinkedHashSet(); 
     2348            for(int i = 0; i < nl.getLength(); i++) { 
     2349            Element displayItem = (Element)nl.item(i); 
     2350            String name = displayItem.getAttribute(StaticStrings.NAME_ATTRIBUTE); 
     2351 
     2352            if(name.equals("")) continue; // no name attribute 
     2353 
     2354            if(name.equals(StaticStrings.DESCRIPTION_STR)) continue; 
     2355            if(name.equals(StaticStrings.SMALLICON_STR)) continue; 
     2356            if(name.equals(StaticStrings.ICON_STR)) continue; 
     2357            if(name.equals(StaticStrings.NAME_STR)) continue; 
     2358 
     2359            // otherwise 
     2360            setOfUniqueDisplayItemNames.add(name); // Set will ensure no duplicate names 
     2361            } 
     2362             
     2363            Iterator i = setOfUniqueDisplayItemNames.iterator(); 
     2364            while (i.hasNext()) { 
     2365            String displayItemName = (String)i.next(); 
     2366 
     2367            ArrayList custom_displayItem = doDisplayItemList(dOc, displayItemListNode, displayItemName, displayItemName);        
     2368            appendArrayList(toElement, custom_displayItem); 
     2369            } 
     2370        } 
     2371 
    23362372        if (buildtype_value.equalsIgnoreCase("mg")) 
    23372373        {