Changeset 6844


Ignore:
Timestamp:
08/25/10 10:18:22 (9 years ago)
Author:
melissa
Message:

Sped up original metadata hashtable population.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/components/bio-formats/src/loci/formats/in/LeicaHandler.java

    r6796 r6844  
    285285    if (level != MetadataLevel.MINIMUM) { 
    286286      if (suffix != null && value != null) { 
    287         int index = 1; 
    288         while (h.get(key.toString() + suffix + " " + index) != null) index++; 
    289         h.put(key.toString() + suffix + " " + index, value); 
     287        storeKeyValue(h, key.toString() + suffix, value); 
    290288      } 
    291289      else { 
    292290        for (int i=0; i<attributes.getLength(); i++) { 
    293           int index = 1; 
    294291          String name = attributes.getQName(i); 
    295           while (h.get(key.toString() + name + " " + index) != null) { 
    296             index++; 
    297           } 
    298           h.put(key.toString() + name + " " + index, attributes.getValue(i)); 
     292          storeKeyValue(h, key.toString() + name, attributes.getValue(i)); 
    299293        } 
    300294      } 
     
    893887  private void storeSeriesHashtable(int series, Hashtable h) { 
    894888    if (series < 0) return; 
     889 
     890    Object[] keys = h.keySet().toArray(new Object[h.size()]); 
     891    for (Object key : keys) { 
     892      Object value = h.get(key); 
     893      if (value instanceof Vector) { 
     894        Vector v = (Vector) value; 
     895        for (int o=0; o<v.size(); o++) { 
     896          h.put(key + " " + (o + 1), v.get(o)); 
     897        } 
     898        h.remove(key); 
     899      } 
     900    } 
     901 
    895902    CoreMetadata coreMeta = core.get(series); 
    896903    coreMeta.seriesMetadata = h; 
     
    10551062  } 
    10561063 
     1064  private void storeKeyValue(Hashtable h, String key, String value) { 
     1065    if (h.get(key) == null) { 
     1066      h.put(key, value); 
     1067    } 
     1068    else { 
     1069      Object oldValue = h.get(key); 
     1070      if (oldValue instanceof Vector) { 
     1071        Vector values = (Vector) oldValue; 
     1072        values.add(value); 
     1073        h.put(key, values); 
     1074      } 
     1075      else { 
     1076        Vector values = new Vector(); 
     1077        values.add(oldValue); 
     1078        values.add(value); 
     1079        h.put(key, values); 
     1080      } 
     1081    } 
     1082  } 
     1083 
    10571084  // -- Helper classes -- 
    10581085 
Note: See TracChangeset for help on using the changeset viewer.