Changeset 1329


Ignore:
Timestamp:
08/23/06 10:16:40 (14 years ago)
Author:
melissa
Message:
  • fixed NullPointerException when reading metadata from stitched/merged files
  • significantly improved metadata parsing in OIB
Location:
trunk/loci/formats
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/loci/formats/ChannelMerger.java

    r1264 r1329  
    101101    if (!id.equals(currentId)) initFile(id); 
    102102    return reader.getMetadata(id); 
     103  } 
     104 
     105  /** 
     106   * Obtains the specified metadata field's value for the given file. 
     107   * 
     108   * @param field the name associated with the metadata field 
     109   * @return the value, or null if the field doesn't exit 
     110   */ 
     111  public Object getMetadataValue(String id, String field) 
     112    throws FormatException, IOException 
     113  { 
     114    if (!id.equals(currentId)) initFile(id); 
     115    return reader.getMetadataValue(id, field); 
    103116  } 
    104117 
  • trunk/loci/formats/FileStitcher.java

    r1306 r1329  
    111111    if (!id.equals(currentId)) initFile(id); 
    112112    return reader.getMetadata(id); 
     113  } 
     114   
     115  /** 
     116   * Obtains the specified metadata field's value for the given file. 
     117   * 
     118   * @param field the name associated with the metadata field 
     119   * @return the value, or null if the field doesn't exit 
     120   */ 
     121  public Object getMetadataValue(String id, String field) 
     122    throws FormatException, IOException 
     123  { 
     124    if (!id.equals(currentId)) initFile(id); 
     125    return reader.getMetadataValue(id, field); 
    113126  } 
    114127 
  • trunk/loci/formats/in/OIBReader.java

    r1264 r1329  
    5353  private int height; 
    5454 
     55  /** Number of channels. */ 
     56  private int sizeC = 1; 
     57 
    5558  /** Pixel data. */ 
    5659  private Hashtable pixelData; 
     
    7780  /** Checks if the images in the file are RGB. */ 
    7881  public boolean isRGB(String id) throws FormatException, IOException { 
     82    if (!id.equals(currentId)) initFile(id); 
    7983    return false; 
    8084  } 
     
    99103  /** Get the size of the C dimension. */ 
    100104  public int getSizeC(String id) throws FormatException, IOException { 
    101     return 1; 
     105    if (!id.equals(currentId)) initFile(id); 
     106    return sizeC; 
    102107  } 
    103108 
     
    105110  public int getSizeT(String id) throws FormatException, IOException { 
    106111    if (!id.equals(currentId)) initFile(id); 
    107     return numImages; 
     112    return numImages / getSizeC(id); 
    108113  } 
    109114 
     
    121126  public String getDimensionOrder(String id) throws FormatException, IOException 
    122127  { 
    123     return "XYCZT"; 
     128    return "XYCTZ"; 
    124129  } 
    125130 
     
    169174      pathName = DataTools.stripString(pathName); 
    170175 
    171       if (pathName.endsWith("OibInfo.txt")) { 
    172         // some kind of metadata 
     176      if (DataTools.stripString(new String(data)).indexOf("Parameters") != -1) { 
     177        // this file contains INI-style metadata 
     178      
     179        String meta = DataTools.stripString(new String(data)); 
     180        try { 
     181          meta = meta.substring(meta.indexOf("]") + 1); 
     182          meta = meta.substring(0, meta.lastIndexOf("]")); 
     183        } 
     184        catch (Exception e) { meta = ""; } 
     185 
     186        boolean setSizeC = false; 
     187 
     188        while (meta.length() > 1) { 
     189          int eqIndex = meta.indexOf("="); 
     190          try { 
     191            String key = meta.substring(0, eqIndex); 
     192            String value =  
     193              meta.substring(eqIndex + 1, meta.indexOf("\r\n", eqIndex)); 
     194            if (key.length() < 512 && value.length() < 512) { 
     195              metadata.put(key.trim(), value.trim()); 
     196              
     197              if (key.indexOf("??") != -1 || value.indexOf("??") != -1 || 
     198                key.indexOf("   ") != -1 || value.indexOf("   ") != -1) 
     199              { 
     200                break; 
     201              } 
     202 
     203              if (key.trim().endsWith("AbsPositionUnitName") &&  
     204                value.trim().equals("\"Ch\""))  
     205              { 
     206                setSizeC = true;  
     207              } 
     208 
     209              if (setSizeC && key.trim().equals("Number")) { 
     210                if (Integer.parseInt(value.trim()) > sizeC) { 
     211                  sizeC = Integer.parseInt(value.trim()); 
     212                } 
     213                setSizeC = false; 
     214              } 
     215            } 
     216            meta = meta.substring(meta.indexOf("\r\n", eqIndex)); 
     217          } 
     218          catch (Exception e) { break; } 
     219        } 
    173220      } 
    174       else if (pathName.indexOf("Stream") != -1) { 
     221 
     222      if (pathName.indexOf("Stream") != -1) { 
    175223        // first get the image number 
    176224        String num = pathName.substring(pathName.indexOf("Stream") + 6); 
     
    244292    btr.ifds = tiffIFDs; 
    245293    btr.initMetadata(); 
    246     metadata = btr.getMetadata(id); // HACK 
     294    //metadata = btr.getMetadata(id); // HACK 
    247295 
    248296    MetadataStore store = getMetadataStore(id); 
Note: See TracChangeset for help on using the changeset viewer.