Changeset 2219


Ignore:
Timestamp:
02/07/07 09:36:11 (13 years ago)
Author:
melissa
Message:

Bugfixes.

Location:
trunk/loci/formats
Files:
25 edited

Legend:

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

    r2210 r2219  
    4747 
    4848  /** Maximum number of open files. */ 
    49   protected static final int MAX_FILES = 128; 
     49  protected static final int MAX_FILES = 100; 
    5050 
    5151  /** Indicators for most efficient method of reading. */ 
     
    115115      nextMark = MAX_OVERHEAD; 
    116116    } 
    117     else { 
     117    else if (file.startsWith("http")) { 
    118118      raf = new RAUrl(Location.getMappedId(file), "r"); 
    119119    } 
     120    else throw new IOException("File not found : " + file); 
    120121    this.file = file; 
    121122    fp = 0; 
     
    180181    dis = null; 
    181182    buf = null; 
    182     fileCache.put(this, Boolean.FALSE); 
    183     openFiles--; 
     183    if (fileCache.get(this) != Boolean.FALSE) { 
     184      fileCache.put(this, Boolean.FALSE); 
     185      openFiles--; 
     186    } 
    184187  } 
    185188 
     
    546549    int closed = 0; 
    547550    int ndx = 0; 
    548     int blahCounter = 0; 
    549     int oldOpen = openFiles; 
    550551     
    551552    while (closed < toClose) { 
     
    555556        try { files[ndx].close(); } 
    556557        catch (IOException e) { e.printStackTrace(); } 
    557         blahCounter++; 
    558558        closed++; 
    559559      } 
  • trunk/loci/formats/in/AVIReader.java

    r2182 r2219  
    279279                addMeta("Length", new Integer(dwLength)); 
    280280 
    281                 try { 
     281                if (spos + size <= in.length()) {   
    282282                  in.seek((int) (spos + size)); 
    283                 } 
    284                 catch (Exception e) { 
    285                   // CTR TODO - eliminate catch-all exception handling 
    286                   if (debug) e.printStackTrace(); 
    287283                } 
    288284              } 
     
    328324                addMeta("Stream sample size", new Integer(dwStreamSampleSize)); 
    329325 
    330                 try { 
     326                if (spos + size <= in.length()) {   
    331327                  in.seek((int) (spos + size)); 
    332                 } 
    333                 catch (Exception e) { 
    334                   // CTR TODO - eliminate catch-all exception handling 
    335                   if (debug) e.printStackTrace(); 
    336328                } 
    337329              } 
     
    447439          } 
    448440 
    449           try { 
     441          if (startPos + streamSize + 8 <= in.length()) {   
    450442            in.seek(startPos + 8 + streamSize); 
    451           } 
    452           catch (Exception e) { 
    453             // CTR TODO - eliminate catch-all exception handling 
    454             if (debug) e.printStackTrace(); 
    455443          } 
    456444        } 
     
    511499        // skipping unknown block 
    512500        type = readStringBytes(); 
    513         try { 
     501        if (in.getFilePointer() + size + 4 <= in.length()) {   
    514502          size = in.readInt(); 
    515503          in.skipBytes(size); 
    516         } 
    517         catch (Exception iae) { 
    518           // CTR TODO - eliminate catch-all exception handling 
    519           if (debug) iae.printStackTrace(); 
    520504        } 
    521505      } 
  • trunk/loci/formats/in/AndorReader.java

    r2178 r2219  
    110110      little = isLittleEndian(currentId); 
    111111    } 
    112     catch (Exception e) { 
    113       // CTR TODO - eliminate catch-all exception handling 
    114       if (debug) e.printStackTrace(); 
     112    catch (IOException e) { 
     113      throw new FormatException(e); 
    115114    } 
    116115 
     
    343342 
    344343  protected void initMetadataStore() { 
     344    super.initMetadataStore(); 
     345 
     346    float pixelSizeX = 0.0f, pixelSizeY = 0.0f, pixelSizeZ = 0.0f; 
     347 
     348    for (int i=1; i<10; i++) { 
     349      String name = (String) getMeta("Dimension " + i + " Name"); 
     350      String size = (String) getMeta("Dimension " + i + " Resolution"); 
     351 
     352      if (name != null && size != null) { 
     353        if (name.equals("x")) pixelSizeX = Float.parseFloat(size); 
     354        else if (name.equals("y")) pixelSizeY = Float.parseFloat(size); 
     355        else if (name.equals("z")) pixelSizeZ = Float.parseFloat(size); 
     356      } 
     357    } 
     358 
    345359    try { 
    346       super.initMetadataStore(); 
    347  
    348       float pixelSizeX = 0.0f, pixelSizeY = 0.0f, pixelSizeZ = 0.0f; 
    349  
    350       for (int i=1; i<10; i++) { 
    351         String name = (String) getMeta("Dimension " + i + " Name"); 
    352         String size = (String) getMeta("Dimension " + i + " Resolution"); 
    353  
    354         if (name != null && size != null) { 
    355           if (name.equals("x")) pixelSizeX = Float.parseFloat(size); 
    356           else if (name.equals("y")) pixelSizeY = Float.parseFloat(size); 
    357           else if (name.equals("z")) pixelSizeZ = Float.parseFloat(size); 
    358         } 
    359       } 
    360  
    361360      MetadataStore store = getMetadataStore(currentId); 
    362361      store.setDimensions(new Float(pixelSizeX), new Float(pixelSizeY), 
    363362        new Float(pixelSizeZ), null, null, null); 
    364363    } 
    365     catch (Exception e) { 
    366       // CTR TODO - eliminate catch-all exception handling 
     364    catch (FormatException e) { 
     365      if (debug) e.printStackTrace(); 
     366    } 
     367    catch (IOException e) { 
    367368      if (debug) e.printStackTrace(); 
    368369    } 
  • trunk/loci/formats/in/BaseTiffReader.java

    r2182 r2219  
    459459    } 
    460460 
     461    sizeX[0] = 
     462      TiffTools.getIFDIntValue(ifds[0], TiffTools.IMAGE_WIDTH, false, 0); 
     463    sizeY[0] = 
     464      TiffTools.getIFDIntValue(ifds[0], TiffTools.IMAGE_LENGTH, false, 0); 
     465    sizeZ[0] = 1; 
     466     
    461467    try { 
    462       sizeX[0] = 
    463         TiffTools.getIFDIntValue(ifds[0], TiffTools.IMAGE_WIDTH, false, 0); 
    464       sizeY[0] = 
    465         TiffTools.getIFDIntValue(ifds[0], TiffTools.IMAGE_LENGTH, false, 0); 
    466       sizeZ[0] = 1; 
    467468      sizeC[0] = isRGB(currentId) ? 3 : 1; 
    468       sizeT[0] = ifds.length; 
    469  
    470       int bitFormat = TiffTools.getIFDIntValue(ifds[0], 
    471         TiffTools.SAMPLE_FORMAT); 
    472  
    473       while (bps % 8 != 0) bps++; 
    474       if (bps == 24 || bps == 48) bps /= 3; 
    475  
    476       if (bitFormat == 3) pixelType[0] = FormatReader.FLOAT; 
    477       else if (bitFormat == 2) { 
    478         switch (bps) { 
    479           case 8: 
    480             pixelType[0] = FormatReader.UINT8; 
    481             break; 
    482           case 16: 
    483             pixelType[0] = FormatReader.INT16; 
    484             break; 
    485           case 32: 
    486             pixelType[0] = FormatReader.INT32; 
    487             break; 
    488           default: 
    489             pixelType[0] = FormatReader.UINT8; 
    490         } 
     469    } 
     470    catch (IOException e) { 
     471      throw new FormatException(e); 
     472    } 
     473     
     474    sizeT[0] = ifds.length; 
     475 
     476    int bitFormat = TiffTools.getIFDIntValue(ifds[0], 
     477      TiffTools.SAMPLE_FORMAT); 
     478 
     479    while (bps % 8 != 0) bps++; 
     480    if (bps == 24 || bps == 48) bps /= 3; 
     481 
     482    if (bitFormat == 3) pixelType[0] = FormatReader.FLOAT; 
     483    else if (bitFormat == 2) { 
     484      switch (bps) { 
     485        case 8: 
     486          pixelType[0] = FormatReader.UINT8; 
     487          break; 
     488        case 16: 
     489          pixelType[0] = FormatReader.INT16; 
     490          break; 
     491        case 32: 
     492          pixelType[0] = FormatReader.INT32; 
     493          break; 
     494        default: 
     495          pixelType[0] = FormatReader.UINT8; 
    491496      } 
    492       else { 
    493         switch (bps) { 
    494           case 8: 
    495             pixelType[0] = FormatReader.UINT8; 
    496             break; 
    497           case 16: 
    498             pixelType[0] = FormatReader.UINT16; 
    499             break; 
    500           case 32: 
    501             pixelType[0] = FormatReader.UINT32; 
    502             break; 
    503           default: 
    504             pixelType[0] = FormatReader.UINT8; 
    505         } 
     497    } 
     498    else { 
     499      switch (bps) { 
     500        case 8: 
     501          pixelType[0] = FormatReader.UINT8; 
     502          break; 
     503        case 16: 
     504          pixelType[0] = FormatReader.UINT16; 
     505          break; 
     506        case 32: 
     507          pixelType[0] = FormatReader.UINT32; 
     508          break; 
     509        default: 
     510          pixelType[0] = FormatReader.UINT8; 
    506511      } 
    507  
    508       currentOrder[0] = "XYCZT"; 
    509     } 
    510     catch (Exception e) { 
    511       // CTR TODO - eliminate catch-all exception handling 
    512       if (debug) e.printStackTrace(); 
    513     } 
     512    } 
     513 
     514    currentOrder[0] = "XYCZT"; 
    514515  } 
    515516 
     
    568569          } 
    569570        } 
    570         catch (Exception e) { 
    571           // CTR TODO - eliminate catch-all exception handling 
     571        catch (FormatException e) { 
     572          if (debug) e.printStackTrace(); 
     573        } 
     574        catch (IOException e) { 
    572575          if (debug) e.printStackTrace(); 
    573576        } 
     
    662665      return true; 
    663666    } 
    664     try { 
    665       int p = TiffTools.getIFDIntValue(ifds[0], 
    666         TiffTools.PHOTOMETRIC_INTERPRETATION, true, 0); 
    667       return (!isColorTableIgnored() && 
    668         (p == TiffTools.RGB_PALETTE || p == TiffTools.CFA_ARRAY)) || 
    669         p == TiffTools.RGB; 
    670     } 
    671     catch (Exception e) { 
    672       // CTR TODO - eliminate catch-all exception handling 
    673       if (debug) e.printStackTrace(); 
    674       return TiffTools.getIFDIntValue(ifds[0], 
    675         TiffTools.SAMPLES_PER_PIXEL, true, 0) > 1; 
    676     } 
     667    int p = TiffTools.getIFDIntValue(ifds[0], 
     668      TiffTools.PHOTOMETRIC_INTERPRETATION, true, 0); 
     669    return (!isColorTableIgnored() && 
     670      (p == TiffTools.RGB_PALETTE || p == TiffTools.CFA_ARRAY)) || 
     671      p == TiffTools.RGB; 
    677672  } 
    678673 
  • trunk/loci/formats/in/BioRadReader.java

    r2182 r2219  
    374374    boolean eof = false; 
    375375    while (!eof && numLuts < 3) { 
    376       try { 
     376      if (in.getFilePointer() + lut[numLuts].length <= in.length()) {   
    377377        in.read(lut[numLuts]); 
    378378        numLuts++; 
    379379      } 
    380       catch (Exception exc) { 
    381         // CTR TODO - eliminate catch-all exception handling 
    382         eof = true; 
    383         if (debug) exc.printStackTrace(); 
    384       } 
     380      else eof = true; 
    385381    } 
    386382 
  • trunk/loci/formats/in/DicomReader.java

    r2182 r2219  
    516516    if (skip) { 
    517517      long skipCount = (long) elementLength; 
    518       try { 
     518      if (in.getFilePointer() + skipCount <= in.length()) {   
    519519        in.skipBytes((int) skipCount); 
    520       } 
    521       catch (Exception e) { 
    522         // CTR TODO - eliminate catch-all exception handling 
    523         if (debug) e.printStackTrace(); 
    524520      } 
    525521      location += elementLength; 
  • trunk/loci/formats/in/EPSReader.java

    r2200 r2219  
    149149      } 
    150150    } 
     151    ras.close(); 
    151152 
    152153    return p; 
  • trunk/loci/formats/in/FluoviewReader.java

    r2216 r2219  
    113113  protected void initStandardMetadata() throws FormatException { 
    114114    super.initStandardMetadata(); 
     115 
     116    sizeZ[0] = 1; 
     117    sizeC[0] = 1; 
     118    sizeT[0] = 1; 
    115119 
    116120    try { 
     
    248252      String descr = (String) getMeta("Comment"); 
    249253      metadata.remove("Comment"); 
     254      if (descr == null) descr = ""; 
    250255 
    251256      // strip LUT data from image description 
    252257      int firstIndex = descr.indexOf("[LUT Ch"); 
    253258      int lastIndex = descr.lastIndexOf("[LUT Ch") + 13; 
    254       descr = descr.substring(0, firstIndex) + descr.substring(lastIndex); 
     259      if (firstIndex != -1 && lastIndex > firstIndex) { 
     260        descr = descr.substring(0, firstIndex) + descr.substring(lastIndex); 
     261      } 
    255262 
    256263      // now parse key-value pairs in the description field 
     
    371378        int q = Integer.parseInt(pos); 
    372379 
    373         if (name.equals("Ch")) sizeC[series] = q; 
     380        if (name.equals("Ch")) { 
     381          sizeC[series] = q; 
     382        } 
    374383        else if (name.equals("Animation") || name.equals("T")) { 
    375384          sizeT[series] = q; 
     
    399408      } 
    400409 
    401       for (int i=0; i<ifds.length; i++) { 
    402         ifds[i].put(new Integer(TiffTools.VALID_BITS), validBits); 
     410      if (validBits != null) { 
     411        for (int i=0; i<ifds.length; i++) { 
     412          ifds[i].put(new Integer(TiffTools.VALID_BITS), validBits); 
     413        } 
    403414      } 
    404415 
     
    437448      currentOrder[series] = order; 
    438449    } 
    439     catch (Exception e) { 
    440       // CTR TODO - eliminate catch-all exception handling 
    441       if (debug) e.printStackTrace(); 
     450    catch (IOException e) { 
     451      throw new FormatException(e); 
    442452    } 
    443453  } 
  • trunk/loci/formats/in/ICSReader.java

    r2182 r2219  
    253253    b = new byte[(int) reader.length()]; 
    254254    reader.read(b); 
     255    reader.close(); 
    255256    String s = new String(b); 
    256257    StringTokenizer st = new StringTokenizer(s, "\n"); 
     
    372373        data = v.toByteArray(); 
    373374      } 
    374       catch (Exception dfe) { 
    375         // CTR TODO - eliminate catch-all exception handling 
     375      catch (IOException dfe) { 
    376376        throw new FormatException("Error uncompressing gzip'ed data", dfe); 
    377377      } 
  • trunk/loci/formats/in/IPLabReader.java

    r2182 r2219  
    452452        store.setImage(id, null, notes, null); 
    453453      } 
    454       try { 
     454       
     455      if (in.getFilePointer() + 4 <= in.length()) {   
    455456        in.read(fourBytes); 
    456457        tag = new String(fourBytes); 
    457458      } 
    458       catch (Exception e) { 
    459         // CTR TODO - eliminate catch-all exception handling 
    460         if (debug) e.printStackTrace(); 
     459      else { 
     460        tag = "fini"; 
     461      } 
     462      if (in.getFilePointer() >= in.length() && !tag.equals("fini")) { 
    461463        tag = "fini"; 
    462464      } 
  • trunk/loci/formats/in/ImageIOReader.java

    r2182 r2219  
    105105    } 
    106106 
    107     return ImageIO.read(new DataInputStream(new BufferedInputStream( 
    108       new RandomAccessStream(id), 4096))); 
     107    RandomAccessStream ras = new RandomAccessStream(id); 
     108    DataInputStream dis = new DataInputStream(new BufferedInputStream(ras, 4096)); 
     109    BufferedImage b = ImageIO.read(dis); 
     110    ras.close(); 
     111    dis.close(); 
     112    return b; 
    109113  } 
    110114 
  • trunk/loci/formats/in/LIFReader.java

    r2218 r2219  
    413413                String sMax = (String) tmp.get("Max"); 
    414414                if (sMin != null && sMax != null) { 
    415                   try { 
     415                    /* 
    416416                    Integer min = new Integer(sMin); 
    417417                    Integer max = new Integer(sMax); 
    418418                    channelMins.add(min); 
    419419                    channelMaxs.add(max); 
    420                   } 
    421                   catch (NumberFormatException exc) { 
    422                     if (debug) exc.printStackTrace(); 
    423                   } 
     420                    */ 
     421                  double min = Double.parseDouble(sMin); 
     422                  double max = Double.parseDouble(sMax); 
     423                  channelMins.add(new Integer((int) min)); 
     424                  channelMaxs.add(new Integer((int) max)); 
    424425                } 
    425426              } 
     
    452453 
    453454          ndx++; 
    454           try { 
     455          if (elements != null && ndx < elements.size()) {   
    455456            token = (String) elements.get(ndx); 
    456457          } 
    457           catch (Exception e) { 
    458             // CTR TODO - eliminate catch-all exception handling 
    459             if (debug) e.printStackTrace(); 
    460             break; 
    461           } 
     458          else break; 
    462459        } 
    463460        extraDims.add(new Integer(extras)); 
  • trunk/loci/formats/in/LeicaReader.java

    r2215 r2219  
    627627      if (debug) exc.printStackTrace(); 
    628628    } 
    629     catch (NullPointerException exc) { 
    630       if (debug) exc.printStackTrace(); 
    631     } 
    632629    return false; 
    633630  } 
     
    849846        // time data 
    850847        // ID_TIMEINFO 
    851         try { 
    852           int nDims = DataTools.bytesToInt(temp, 0, 4, littleEndian); 
    853           addMeta("Number of time-stamped dimensions", new Integer(nDims)); 
    854           addMeta("Time-stamped dimension",  
    855             new Integer(DataTools.bytesToInt(temp, 4, 4, littleEndian))); 
    856  
    857           int pt = 8; 
    858  
    859           for (int j=0; j < nDims; j++) { 
    860             addMeta("Dimension " + j + " ID", 
    861               new Integer(DataTools.bytesToInt(temp, pt, 4, littleEndian))); 
    862             pt += 4; 
    863             addMeta("Dimension " + j + " size", 
    864               new Integer(DataTools.bytesToInt(temp, pt, 4, littleEndian))); 
    865             pt += 4; 
    866             addMeta("Dimension " + j + " distance between dimensions", 
     848        int nDims = DataTools.bytesToInt(temp, 0, 4, littleEndian); 
     849        addMeta("Number of time-stamped dimensions", new Integer(nDims)); 
     850        addMeta("Time-stamped dimension",  
     851          new Integer(DataTools.bytesToInt(temp, 4, 4, littleEndian))); 
     852 
     853        int pt = 8; 
     854 
     855        for (int j=0; j < nDims; j++) { 
     856          addMeta("Dimension " + j + " ID", 
     857            new Integer(DataTools.bytesToInt(temp, pt, 4, littleEndian))); 
     858          pt += 4; 
     859          addMeta("Dimension " + j + " size", 
     860            new Integer(DataTools.bytesToInt(temp, pt, 4, littleEndian))); 
     861          pt += 4; 
     862          addMeta("Dimension " + j + " distance between dimensions", 
     863            new Integer(DataTools.bytesToInt(temp, pt, 4, littleEndian))); 
     864          pt += 4; 
     865        } 
     866 
     867        int numStamps = DataTools.bytesToInt(temp, pt, 4, littleEndian); 
     868        pt += 4; 
     869        addMeta("Number of time-stamps", new Integer(numStamps)); 
     870        for (int j=0; j<numStamps; j++) { 
     871          addMeta("Timestamp " + j, 
     872            DataTools.stripString(new String(temp, pt, 64))); 
     873          pt += 64; 
     874        } 
     875 
     876        int numTMs = DataTools.bytesToInt(temp, pt, 4, littleEndian); 
     877        pt += 4; 
     878        addMeta("Number of time-markers", new Integer(numTMs)); 
     879        for (int j=0; j<numTMs; j++) { 
     880          int numDims = DataTools.bytesToInt(temp, pt, 4, littleEndian); 
     881          pt += 4; 
     882 
     883          for (int k=0; k<numDims; k++) { 
     884            addMeta("Time-marker " + j + 
     885              " Dimension " + k + " coordinate", 
    867886              new Integer(DataTools.bytesToInt(temp, pt, 4, littleEndian))); 
    868887            pt += 4; 
    869888          } 
    870  
    871           int numStamps = DataTools.bytesToInt(temp, pt, 4, littleEndian); 
    872           pt += 4; 
    873           addMeta("Number of time-stamps", new Integer(numStamps)); 
    874           for (int j=0; j<numStamps; j++) { 
    875             addMeta("Timestamp " + j, 
    876               DataTools.stripString(new String(temp, pt, 64))); 
    877             pt += 64; 
    878           } 
    879  
    880           int numTMs = DataTools.bytesToInt(temp, pt, 4, littleEndian); 
    881           pt += 4; 
    882           addMeta("Number of time-markers", new Integer(numTMs)); 
    883           for (int j=0; j<numTMs; j++) { 
    884             int numDims = DataTools.bytesToInt(temp, pt, 4, littleEndian); 
    885             pt += 4; 
    886  
    887             for (int k=0; k<numDims; k++) { 
    888               addMeta("Time-marker " + j + 
    889                 " Dimension " + k + " coordinate", 
    890                 new Integer(DataTools.bytesToInt(temp, pt, 4, littleEndian))); 
    891               pt += 4; 
    892             } 
    893             addMeta("Time-marker " + j, 
    894               DataTools.stripString(new String(temp, pt, 64))); 
    895             pt += 64; 
    896           } 
    897         } 
    898         catch (Throwable t) { 
    899           // CTR TODO - eliminate catch-all exception handling 
    900           if (debug) t.printStackTrace(); 
     889          addMeta("Time-marker " + j, 
     890            DataTools.stripString(new String(temp, pt, 64))); 
     891          pt += 64; 
    901892        } 
    902893      } 
     
    10421033      store = getMetadataStore(currentId); 
    10431034    } 
    1044     catch (Exception e) { 
    1045       // CTR TODO - eliminate catch-all exception handling 
     1035    catch (FormatException e) { 
     1036      if (debug) e.printStackTrace(); 
     1037    } 
     1038    catch (IOException e) { 
    10461039      if (debug) e.printStackTrace(); 
    10471040    } 
     
    10901083      String description = (String) getMeta("Image Description"); 
    10911084 
    1092       try { 
    1093         store.setImage(null, timestamp.substring(3), 
    1094           description, new Integer(i)); 
    1095       } 
    1096       catch (NullPointerException n) { 
    1097         if (debug) n.printStackTrace(); 
    1098       } 
     1085      store.setImage(null, timestamp == null ? null : timestamp.substring(3), 
     1086        description, new Integer(i)); 
    10991087    } 
    11001088  } 
  • trunk/loci/formats/in/MetamorphReader.java

    r2178 r2219  
    241241      super.initStandardMetadata(); 
    242242    } 
    243     catch (Throwable t) { 
     243    catch (Exception t) { 
    244244      // CTR TODO - eliminate catch-all exception handling 
    245       t.printStackTrace(); 
     245      if (debug) t.printStackTrace(); 
    246246    } 
    247247 
  • trunk/loci/formats/in/ND2Reader.java

    r2217 r2219  
    222222    } 
    223223    bis.close(); 
     224    mciis.close(); 
    224225    b = null; 
    225226 
     
    386387                  else { 
    387388                    String v = (String) getMeta(effectiveKey); 
    388                     try { 
    389                       if (Double.parseDouble(v) < Double.parseDouble(value)) { 
    390                         addMeta(effectiveKey, value); 
    391                       } 
     389                    boolean parse = true; 
     390                    for (int i=0; i<v.length(); i++) { 
     391                      if (Character.isLetter(v.charAt(i)) ||  
     392                        Character.isWhitespace(v.charAt(i))) 
     393                      { 
     394                        parse = false; 
     395                        break; 
     396                      }  
    392397                    } 
    393                     catch (NumberFormatException exc) { 
    394                       if (debug) exc.printStackTrace(); 
     398                    if (parse) { 
     399                      addMeta(effectiveKey, value); 
    395400                    } 
    396401                  } 
  • trunk/loci/formats/in/NikonReader.java

    r2178 r2219  
    224224    initMetadata(); 
    225225 
    226     try { 
     226    Object pattern = getMeta("CFA pattern"); 
     227    if (pattern != null) { 
    227228      realImage.put(new Integer(TiffTools.COLOR_MAP), getMeta("CFA pattern")); 
    228     } 
    229     catch (Exception e) { 
    230       // CTR TODO - eliminate catch-all exception handling 
    231       if (debug) e.printStackTrace(); 
    232229    } 
    233230  } 
     
    282279    // read the maker note 
    283280 
     281    byte[] offsets = (byte[]) getMeta("Offset to maker note"); 
     282    makerNoteOffset = offsets[0]; 
    284283    try { 
    285       byte[] offsets = (byte[]) getMeta("Offset to maker note"); 
    286       makerNoteOffset = offsets[0]; 
     284      if (makerNoteOffset >= in.length() || makerNoteOffset == 0) return; 
    287285      Hashtable makerNote = TiffTools.getIFD(in, 0, makerNoteOffset); 
    288286      if (makerNote != null) { 
     
    292290          key = (Integer) e.nextElement(); 
    293291          int tag = key.intValue(); 
    294           addMeta(getTagName(tag), makerNote.get(key)); 
     292          if (makerNote.containsKey(key)) { 
     293            addMeta(getTagName(tag), makerNote.get(key)); 
     294          } 
    295295        } 
    296296      } 
    297297    } 
    298     catch (Exception io) { 
    299       // CTR TODO - eliminate catch-all exception handling 
    300       if (debug) io.printStackTrace(); 
     298    catch (IOException e) { 
     299      if (debug) e.printStackTrace(); 
    301300    } 
    302301  } 
  • trunk/loci/formats/in/OIBReader.java

    r2196 r2219  
    451451      initMetadata(); 
    452452    } 
    453     catch (Exception e) { 
    454       // CTR TODO - eliminate catch-all exception handling 
     453    catch (FormatException e) { 
     454      if (debug) e.printStackTrace(); 
     455    } 
     456    catch (IOException e) { 
    455457      if (debug) e.printStackTrace(); 
    456458    } 
  • trunk/loci/formats/in/OpenlabReader.java

    r2182 r2219  
    112112        in.read(b); 
    113113      } 
    114       catch (Exception e) { 
    115         // CTR TODO - eliminate catch-all exception handling 
     114      catch (IOException e) { 
    116115        if (debug) e.printStackTrace(); 
     116        return false; 
    117117      } 
    118118      return isThisType(b); 
     
    431431        nextTag = readTagHeader(); 
    432432      } 
    433       catch (Exception e) { 
    434         // CTR TODO - eliminate catch-all exception handling 
     433      catch (IOException e) { 
    435434        if (debug) e.printStackTrace(); 
    436435 
  • trunk/loci/formats/in/PerkinElmerReader.java

    r2182 r2219  
    285285          filesPt++; 
    286286        } 
    287         catch (Exception e) { 
    288           // CTR TODO - eliminate catch-all exception handling 
    289           if (debug) e.printStackTrace(); 
    290  
     287        catch (NumberFormatException e) { 
    291288          try { 
    292289            String ext = filename.substring(filename.lastIndexOf(".") + 1); 
     
    296293            filesPt++; 
    297294          } 
    298           catch (Exception f) { 
    299             // CTR TODO - eliminate catch-all exception handling 
     295          catch (NumberFormatException f) { 
    300296            if (debug) f.printStackTrace(); 
    301297          } 
     
    492488    // parse details to get number of wavelengths and timepoints 
    493489 
    494     t = new StringTokenizer(details); 
    495     int tokenNum = 0; 
    496490    String wavelengths = "1"; 
    497     int numTokens = t.countTokens(); 
    498     boolean foundId = false; 
    499     String prevToken = ""; 
    500     while (t.hasMoreTokens()) { 
    501       String token = t.nextToken(); 
    502       foundId = token.equals("Wavelengths"); 
    503       if (foundId) { 
    504         wavelengths = prevToken; 
    505       } 
    506       tokenNum++; 
    507       prevToken = token; 
     491    if (details != null) { 
     492      t = new StringTokenizer(details); 
     493      int tokenNum = 0; 
     494      int numTokens = t.countTokens(); 
     495      boolean foundId = false; 
     496      String prevToken = ""; 
     497      while (t.hasMoreTokens()) { 
     498        String token = t.nextToken(); 
     499        foundId = token.equals("Wavelengths"); 
     500        if (foundId) { 
     501          wavelengths = prevToken; 
     502        } 
     503        tokenNum++; 
     504        prevToken = token; 
     505      } 
    508506    } 
    509507 
     
    567565    // populate Image element 
    568566    String time = (String) getMeta("Finish Time:"); 
    569     time = time.substring(1).trim(); 
    570     store.setImage(null, time, null, null); 
     567    if (time != null) { 
     568      time = time.substring(1).trim(); 
     569      store.setImage(null, time, null, null); 
     570    } 
    571571 
    572572    // populate Pixels element 
     
    589589    String originY = (String) getMeta("Origin Y"); 
    590590    String originZ = (String) getMeta("Origin Z"); 
     591     
    591592    try { 
    592       store.setStageLabel(null, new Float(originX), new Float(originY), 
    593                         new Float(originZ), null); 
    594     } 
    595     catch (Exception e) { 
    596       // CTR TODO - eliminate catch-all exception handling 
     593      store.setStageLabel(null, originX == null ? null : new Float(originX),  
     594        originY == null ? null : new Float(originY), 
     595        originZ == null ? null : new Float(originZ), null); 
     596    } 
     597    catch (NumberFormatException e) { 
    597598      if (debug) e.printStackTrace(); 
    598599    } 
  • trunk/loci/formats/in/PictReader.java

    r2182 r2219  
    204204 
    205205    sizeX[0] = d.width; 
     206    while (sizeX[0] % 8 != 0) sizeX[0]++; 
    206207    sizeY[0] = d.height; 
    207208    sizeZ[0] = 1; 
  • trunk/loci/formats/in/PrairieReader.java

    r2182 r2219  
    232232      while (s.length() > 0) { 
    233233        int ndx = s.indexOf("<"); 
    234         String sub = s.substring(ndx + 1, s.indexOf(">", ndx)); 
    235         s = s.substring(s.indexOf(">", ndx) + 1); 
    236         elements.add(sub); 
     234        int val1 = s.indexOf(">", ndx); 
     235        if (val1 != -1 && val1 > ndx) { 
     236          String sub = s.substring(ndx + 1, val1); 
     237          s = s.substring(val1 + 1); 
     238          elements.add(sub); 
     239        } 
    237240      } 
    238241 
  • trunk/loci/formats/in/SEQReader.java

    r2178 r2219  
    115115      if (isRGB(currentId) && sizeC[0] != 3) sizeC[0] *= 3; 
    116116    } 
    117     catch (Exception e) { 
    118       // CTR TODO - eliminate catch-all exception handling 
    119       if (debug) e.printStackTrace(); 
     117    catch (IOException e) { 
     118      throw new FormatException(e); 
    120119    } 
    121120 
  • trunk/loci/formats/in/ZeissLSMReader.java

    r2178 r2219  
    163163 
    164164    int numThumbs = 0; 
    165     try { 
     165    //try { 
    166166      long prevOffset = 0; 
    167167      byte[] b = new byte[48]; 
     
    200200        prevOffset = offsets[0]; 
    201201      } 
     202    /* 
    202203    } 
    203204    catch (Exception e) { 
     
    205206      if (debug) e.printStackTrace(); 
    206207    } 
     208    */ 
    207209 
    208210    // now copy ifds to a temp array so that we can get rid of 
     
    516518        // read in the intensity value for each color 
    517519 
    518         in.seek(offsetNames); 
    519  
    520         for (int i=0; i<numColors; i++) { 
    521           data = in.readInt(); 
    522           put("Intensity" + i, data); 
    523         } 
    524  
    525         // read in the channel names 
    526  
    527         for (int i=0; i<numNames; i++) { 
    528           // we want to read until we find a null char 
    529           StringBuffer sb = new StringBuffer(); 
    530           char current = (char) in.read(); 
    531           while (current != 0) { 
    532             sb.append(current); 
    533             current = (char) in.read(); 
     520        if (offsetNames >= 0) { 
     521          in.seek(offsetNames); 
     522 
     523          for (int i=0; i<numColors; i++) { 
     524            data = in.readInt(); 
     525            put("Intensity" + i, data); 
    534526          } 
    535           String name = sb.toString(); 
    536           put("ChannelName" + i, name); 
     527 
     528          // read in the channel names 
     529   
     530          for (int i=0; i<numNames; i++) { 
     531            // we want to read until we find a null char 
     532            StringBuffer sb = new StringBuffer(); 
     533            char current = (char) in.read(); 
     534            while (current != 0) { 
     535              sb.append(current); 
     536              current = (char) in.read(); 
     537            } 
     538            String name = sb.toString(); 
     539            put("ChannelName" + i, name); 
     540          } 
    537541        } 
    538542        in.seek(pos); 
     
    599603              numBytes = in.length() - in.getFilePointer(); 
    600604            } 
     605            if (numBytes < 16) numBytes = 16; 
    601606            byte[] descr = new byte[(int) (numBytes - 16)]; 
    602607            in.read(descr); 
     
    668673      if (debug) e.printStackTrace(); 
    669674    } 
     675    /* 
    670676    catch (Exception e) { 
    671677      // CTR TODO - eliminate catch-all exception handling 
    672678      if (debug) e.printStackTrace(); 
    673679    } 
     680    */ 
    674681 
    675682    sizeZ[0] = zSize > 0 ? zSize : 1; 
     
    678685    currentOrder[0] = "XYZCT"; 
    679686 
     687    Object pixelSizeX = getMeta("VoxelSizeX"); 
     688    Object pixelSizeY = getMeta("VoxelSizeY"); 
     689    Object pixelSizeZ = getMeta("VoxelSizeZ"); 
     690 
     691    Float pixX = new Float(pixelSizeX == null ? "0" : pixelSizeX.toString()); 
     692    Float pixY = new Float(pixelSizeY == null ? "0" : pixelSizeY.toString()); 
     693    Float pixZ = new Float(pixelSizeZ == null ? "0" : pixelSizeZ.toString()); 
     694 
    680695    try { 
    681       Float pixX = new Float(getMeta("VoxelSizeX").toString()); 
    682       Float pixY = new Float(getMeta("VoxelSizeY").toString()); 
    683       Float pixZ = new Float(getMeta("VoxelSizeZ").toString()); 
    684  
    685696      MetadataStore store = getMetadataStore(currentId); 
    686697      store.setDimensions(pixX, pixY, pixZ, null, null, null); 
    687698    } 
    688     catch (Exception e) { 
    689       // CTR TODO - eliminate catch-all exception handling 
    690       if (debug) e.printStackTrace(); 
     699    catch (FormatException e) { 
     700      if (FormatReader.debug) e.printStackTrace(); 
     701    } 
     702    catch (IOException e) { 
     703      if (FormatReader.debug) e.printStackTrace(); 
    691704    } 
    692705 
  • trunk/loci/formats/in/ZeissZVIReader.java

    r2209 r2219  
    450450      else currentOrder[0] = (zSize > tSize) ? "XYZTC" : "XYTZC"; 
    451451    } 
    452     catch (Throwable t) { 
    453       // CTR TODO - eliminate catch-all exception handling 
     452    catch (ReflectException e) { 
    454453      needLegacy = true; 
    455       if (debug) t.printStackTrace(); 
     454      if (debug) e.printStackTrace(); 
    456455      initFile(id); 
    457456    } 
     
    460459      initMetadata(); 
    461460    } 
    462     catch (Exception e) { 
    463       // CTR TODO - eliminate catch-all exception handling 
     461    catch (FormatException e) { 
     462      if (debug) e.printStackTrace(); 
     463    } 
     464    catch (IOException e) { 
    464465      if (debug) e.printStackTrace(); 
    465466    } 
     
    487488      null); 
    488489 
     490    String pixX = (String) getMeta("Scale Factor for X"); 
     491    String pixY = (String) getMeta("Scale Factor for Y"); 
     492    String pixZ = (String) getMeta("Scale Factor for Z"); 
     493     
    489494    store.setDimensions( 
    490       new Float((String) getMeta("Scale Factor for X")), 
    491       new Float((String) getMeta("Scale Factor for Y")), 
    492       new Float((String) getMeta("Scale Factor for Z")), 
     495      pixX == null ? null : new Float(pixX), 
     496      pixY == null ? null : new Float(pixY), 
     497      pixZ == null ? null : new Float(pixZ), 
    493498      null, null, null); 
    494499  } 
     
    681686                int len = DataTools.bytesToInt(data, pt, 4, true); 
    682687                pt += 4; 
    683                 try { 
     688                if (pt + len < data.length) { 
    684689                  value = new String(data, pt, len); 
    685690                  pt += len; 
    686691                } 
    687                 catch (Exception e) { 
    688                   // CTR TODO - eliminate catch-all exception handling 
    689                   if (debug) e.printStackTrace(); 
    690                   return; 
    691                 } 
     692                else return; 
    692693                break; 
    693694              case 20: 
     
    714715                  pt += 2; 
    715716                } 
    716                 try { 
     717                if (oldPt - 2 > 0 && pt < data.length) { 
    717718                  value = new String(data, oldPt - 2, pt - oldPt + 2); 
    718719                } 
    719                 catch (Exception e) { 
    720                   // CTR TODO - eliminate catch-all exception handling 
    721                   if (debug) e.printStackTrace(); 
    722                   return; 
    723                 } 
     720                else return; 
    724721            } 
    725722 
     
    754751          pt += 2; 
    755752          if (data[pt] == 0 && data[pt + 1] == 0) pt += 2; 
    756           try { 
    757             String typeDescription = new String(data, pt, len); 
     753           
     754          String typeDescription = ""; 
     755          if (pt + len <= data.length) { 
     756            typeDescription = new String(data, pt, len); 
    758757            pt += len; 
    759758          } 
    760           catch (Exception e) { 
    761             // CTR TODO - eliminate catch-all exception handling 
    762             if (debug) e.printStackTrace(); 
    763             break; 
    764           } 
     759          else break; 
    765760 
    766761          vt = DataTools.bytesToInt(data, pt, 2, true); 
     
    826821            DataTools.bytesToInt(data, pt + 4, 4, true) == height; 
    827822          boolean findFailed = false; 
    828           try { 
    829             while ((!foundWidth || !foundHeight) && pt < data.length) { 
    830               pt++; 
    831               foundWidth = DataTools.bytesToInt(data, pt, 4, true) == width; 
    832               foundHeight = 
    833                 DataTools.bytesToInt(data, pt + 4, 4, true) == height; 
    834             } 
    835           } 
    836           catch (Exception e) { 
    837             // CTR TODO - eliminate catch-all exception handling 
    838             if (debug) e.printStackTrace(); 
     823          while ((!foundWidth || !foundHeight) && pt + 9 < data.length) { 
     824            pt++; 
     825            foundWidth = DataTools.bytesToInt(data, pt, 4, true) == width; 
     826            foundHeight = 
     827              DataTools.bytesToInt(data, pt + 4, 4, true) == height; 
    839828          } 
    840829          pt -= 8; 
  • trunk/loci/formats/test/ReaderTest.java

    r2212 r2219  
    152152    } 
    153153    if (!success) writeLog(id + " failed BufferedImage test"); 
    154     try { reader.close(); } 
     154    try {  
     155      reader.close();  
     156      System.gc(); 
     157      Thread.sleep(100); 
     158      System.gc(); 
     159    } 
    155160    catch (Exception e) { } 
    156161    finalMemory = (int) (rt.totalMemory() - rt.freeMemory()) >> 20; 
     
    193198    } 
    194199    if (!success) writeLog(id + " failed byte array test"); 
    195     try { reader.close(); } 
     200    try { reader.close(true); } 
    196201    catch (Exception e) { } 
    197202    assertTrue(success); 
     
    220225    } 
    221226    if (!success) writeLog(id + " failed image count test"); 
    222     try { reader.close(); } 
     227    try { reader.close(true); } 
    223228    catch (Exception e) { } 
    224229    assertTrue(success); 
     
    280285    } 
    281286    if (!success) writeLog(id + " failed OME-XML sanity test"); 
    282     try { reader.close(); } 
     287    try { reader.close(true); } 
    283288    catch (Exception e) { } 
    284289    assertTrue(success); 
     
    452457     
    453458    // we want the maximum usage to be no more than twice the file size 
    454     if (maxMemory - initialMemory > 2*config.getFileSize(id)) { 
     459    if (maxMemory - initialMemory > 2*(config.getFileSize(id)+1)) { 
    455460      success = false; 
    456461      writeLog(id + " failed maximum memory usage test (used " +  
    457462        (maxMemory - initialMemory) + "MB; expected <= " +  
    458         2*config.getFileSize(id) + "MB)"); 
     463        (2*config.getFileSize(id) + 1) + "MB)"); 
    459464    } 
    460465   
     
    519524      suite.addTest(new ReaderTest("testOMEXML", id)); 
    520525    } 
    521     suite.addTest(new ReaderTest("testConsistent", id)); 
     526    if (config.initialized(id) || writeConfigFiles) { 
     527      suite.addTest(new ReaderTest("testConsistent", id)); 
     528    } 
    522529    if (config.initialized(id) && !writeConfigFiles) { 
    523530      suite.addTest(new ReaderTest("testMemoryUsage", id)); 
     
    568575    } 
    569576    ImageReader ir = new ImageReader(); 
     577    Vector similarFiles = new Vector(); 
    570578    for (int i=0; i<subs.length; i++) { 
    571579      if (FormatReader.debug) debug("Checking file " + subs[i]); 
    572580      subs[i] = root + (root.endsWith(File.separator) ? "" : File.separator) + 
    573581        subs[i]; 
    574       if (isBadFile(subs[i])) { 
     582      if (isBadFile(subs[i]) || similarFiles.contains(subs[i]) || 
     583        similarFiles.contains(new Location(root, subs[i]).getAbsolutePath()))  
     584      { 
    575585        if (FormatReader.debug) debug(subs[i] + " is a bad file"); 
     586        String[] matching = new FilePattern(subs[i]).getFiles(); 
     587        for (int j=0; j<matching.length; j++) { 
     588          similarFiles.add(new Location(root, matching[j]).getAbsolutePath()); 
     589        } 
    576590        continue; 
    577591      } 
     
    659673      if (used == null) { 
    660674        System.out.println("Warning: used files list is null for " + id); 
    661         files.removeElementAt(0); 
     675       
     676        used = new FilePattern(pattern).getFiles(); 
     677        if (used != null) { 
     678          for (int i=0; i<used.length; i++) { 
     679            if (FormatReader.debug) System.out.println("Removing " + used[i]); 
     680            files.removeElement(used[i]); 
     681          } 
     682        } 
     683        else files.removeElementAt(0); 
    662684      } 
    663685      else { 
     
    667689        } 
    668690      } 
     691      while (files.contains(id)) files.remove(id); 
    669692 
    670693      test.close(); 
Note: See TracChangeset for help on using the changeset viewer.