Changeset 25730 for main


Ignore:
Timestamp:
2012-05-31T17:43:00+12:00 (12 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.

File:
1 edited

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        {
Note: See TracChangeset for help on using the changeset viewer.