Changeset 3846


Ignore:
Timestamp:
03/25/08 11:56:26 (12 years ago)
Author:
melissa
Message:

Preliminary support for checking UUIDs.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/loci/formats/in/OMETiffReader.java

    r3842 r3846  
    6161  private Vector pixelsIDs; 
    6262 
     63  /** List of TiffData UUIDs. */ 
     64  private Vector planeUUIDs; 
     65 
     66  /** List of file UUIDs. */ 
     67  private Vector fileUUIDs; 
     68 
    6369  private Vector tempIfdMap, tempFileMap, tempIfdCount; 
    6470  private int currentFile, currentSeries, seriesCount; 
    6571  private int[] numIFDs; 
    6672  private int[][] ifdMap, fileMap; 
    67   private boolean lsids, fileIDs, isWiscScan; 
     73  private boolean uuids, lsids, isWiscScan; 
    6874  private Hashtable[][] usedIFDs; 
    6975  private Hashtable keyMetadata, temporaryKeyMetadata; 
     
    9399    imageIDs = null; 
    94100    pixelsIDs = null; 
     101    planeUUIDs = null; 
     102    fileUUIDs = null; 
    95103    lsids = true; 
    96104 
     
    125133    String[] fileList = new File(currentId).exists() ? l.list() : 
    126134      (String[]) Location.getIdMap().keySet().toArray(new String[0]); 
    127  
    128     /* 
    129     if (!lsids) { 
    130       fileList = new String[] {currentId}; 
    131       LogTools.println("Not searching for other files - " + 
    132         "Image LSID not present"); 
    133     } 
    134     */ 
    135135 
    136136    int oldSeriesCount = seriesCount; 
     
    146146        if (icomment == null || icomment.trim().length() == 0) continue; 
    147147        boolean addToList = true; 
    148         if (lsids && imageIDs != null) { 
     148        if (uuids) { 
     149          currentSeries = -1; 
     150          seriesCount = 0; 
     151          handler = new OMETiffHandler(true); 
     152          try { 
     153            SAXParser parser = SAX_FACTORY.newSAXParser(); 
     154            parser.parse( 
     155              new ByteArrayInputStream(icomment.getBytes()), handler); 
     156          } 
     157          catch (ParserConfigurationException exc) { 
     158            throw new FormatException(exc); 
     159          } 
     160          catch (SAXException exc) { 
     161            throw new FormatException(exc); 
     162          } 
     163          addToList = planeUUIDs.contains(fileUUIDs.get(fileUUIDs.size() - 1)); 
     164        } 
     165        // the rest of this logic is a hack for obsolete OME-TIFF files 
     166        else if (lsids && imageIDs != null) { 
    149167          for (int k=0; k<imageIDs.size(); k++) { 
    150168            if (icomment.indexOf((String) imageIDs.get(k)) == -1) { 
     
    161179            } 
    162180          } 
    163         } 
    164         else if (fileIDs) { 
    165           // TODO : FilePath/FileID checking 
    166181        } 
    167182        else { 
     
    199214    } 
    200215 
     216    if (!files.contains(currentId)) files.add(currentId); 
     217 
    201218    // parse grouped files 
    202219 
     
    247264      currentFile = i; 
    248265 
    249       usedIFDs[i] = TiffTools.getIFDs(new RandomAccessStream(usedFiles[i])); 
     266      RandomAccessStream ras = new RandomAccessStream(usedFiles[i]); 
     267      usedIFDs[i] = TiffTools.getIFDs(ras); 
     268      ras.close(); 
    250269      String c = TiffTools.getComment(usedIFDs[i][0]); 
    251270      handler = new OMETiffHandler(false); 
     
    309328  /* @see loci.formats.IFormatReader#isThisType(String, boolean) */ 
    310329  public boolean isThisType(String name, boolean open) { 
    311     if (!open) return false; 
     330    if (!open && !checkSuffix(name, suffixes)) return false; 
    312331    try { 
    313332      RandomAccessStream s = new RandomAccessStream(name); 
     
    319338      s.read(buf); 
    320339      boolean passSecond = isThisType(buf); 
     340      s.close(); 
    321341      return passFirst || passSecond; 
    322342    } 
     
    379399    usedFiles = null; 
    380400    usedIFDs = null; 
    381     imageIDs = pixelsIDs = null; 
     401    imageIDs = pixelsIDs = planeUUIDs = fileUUIDs = null; 
    382402    tempIfdMap = tempFileMap = tempIfdCount = null; 
    383403    numIFDs = null; 
     
    423443      Attributes attributes) 
    424444    { 
    425       if (qName.equals("Image")) { 
     445      if (qName.equals("OME")) { 
     446        String uuid = attributes.getValue("UUID"); 
     447        if (fileUUIDs == null) fileUUIDs = new Vector(); 
     448        fileUUIDs.add(uuid); 
     449      } 
     450      else if (qName.equals("Image")) { 
    426451        String id = attributes.getValue("ID"); 
    427452        if (!minimal) { 
     
    520545      else if (qName.equals("TiffData")) { 
    521546        if (minimal) return; 
     547        String uuid = attributes.getValue("UUID"); 
    522548        String ifd = attributes.getValue("IFD"); 
     549        if (uuid != null) { 
     550          uuids = true; 
     551          if (planeUUIDs == null) planeUUIDs = new Vector(); 
     552          int ndx = Integer.parseInt(ifd); 
     553          if (ndx < planeUUIDs.size()) planeUUIDs.setElementAt(uuid, ndx); 
     554          else { 
     555            int diff = ndx - planeUUIDs.size(); 
     556            for (int i=0; i<diff; i++) planeUUIDs.add(""); 
     557            planeUUIDs.add(uuid); 
     558          } 
     559        } 
    523560        String numPlanes = attributes.getValue("NumPlanes"); 
    524561        String z = attributes.getValue("FirstZ"); 
Note: See TracChangeset for help on using the changeset viewer.