Changeset 6741


Ignore:
Timestamp:
07/27/10 20:18:01 (9 years ago)
Author:
melissa
Message:

Several more type checking fixes, see #273.

Includes a fix for a very, very evil bug in NRRDReader that prevented more than one NRRD file from being initialized in any JVM instance. The moral of the story: *never* directly modify the ClassList returned by ImageReader.getDefaultReaderClasses().

Location:
trunk/components/bio-formats/src/loci/formats/in
Files:
4 edited

Legend:

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

    r6702 r6741  
    248248    plane.close(); 
    249249    plane = null; 
     250    tp = null; 
    250251    return buf; 
    251252  } 
     
    535536          ifds = tp.getIFDs(); 
    536537          preview.close(); 
     538          tp = null; 
    537539          core[1].imageCount += ifds.size(); 
    538540        } 
     
    654656 
    655657    if (tiffPath != null) { 
    656       usedFiles.add(id); 
     658      usedFiles.add(isOIB ? id : oifName); 
    657659      if (!isOIB) { 
    658660        Location dir = new Location(tiffPath); 
     
    662664        } 
    663665        String[] list = mappedOIF ? 
    664           Location.getIdMap().keySet().toArray(new String[0]) : dir.list(); 
     666          Location.getIdMap().keySet().toArray(new String[0]) : dir.list(true); 
    665667        for (int i=0; i<list.length; i++) { 
    666668          if (mappedOIF) usedFiles.add(list[i]); 
     
    12171219    if (baseFile == null || baseFile.indexOf("_") == -1) return null; 
    12181220    baseFile = baseFile.substring(0, baseFile.lastIndexOf("_")); 
    1219     if (checkSuffix(current.getName(), "roi")) { 
    1220       // ROI files have an extra underscore 
    1221       baseFile = baseFile.substring(0, baseFile.lastIndexOf("_")); 
     1221    if (checkSuffix(current.getName(), new String[] {"roi", "lut"})) { 
     1222      if (!new Location(tmp, baseFile + ".oif").exists() && 
     1223        !new Location(tmp, baseFile + ".OIF").exists() && 
     1224        baseFile.indexOf("_") >= 0) 
     1225      { 
     1226        // some metadata files have an extra underscore 
     1227        baseFile = baseFile.substring(0, baseFile.lastIndexOf("_")); 
     1228      } 
    12221229    } 
    12231230    baseFile += ".oif"; 
     
    12291236      tmp = new Location(oifFile); 
    12301237      if (!tmp.exists()) { 
    1231         // check in parent directory 
    1232         if (parent.endsWith(File.separator)) { 
    1233           parent = parent.substring(0, parent.length() - 1); 
    1234         } 
    1235         String dir = parent.substring(parent.lastIndexOf(File.separator)); 
    1236         dir = dir.substring(0, dir.lastIndexOf(".")); 
    1237         tmp = new Location(parent); 
    1238         oifFile = new Location(tmp, dir).getAbsolutePath(); 
    1239         if (!new Location(oifFile).exists()) { 
    1240           throw new FormatException("OIF file not found"); 
     1238        baseFile = current.getParent(); 
     1239        baseFile = baseFile.substring(0, baseFile.lastIndexOf(".")); 
     1240        baseFile = baseFile.substring(0, baseFile.lastIndexOf(".")); 
     1241        tmp = new Location(baseFile + ".oif"); 
     1242        oifFile = tmp.getAbsolutePath(); 
     1243 
     1244        if (!tmp.exists()) { 
     1245          tmp = new Location(tmp.getParent(), tmp.getName().toUpperCase()); 
     1246          oifFile = tmp.getAbsolutePath(); 
     1247 
     1248          if (!tmp.exists()) { 
     1249            // check in parent directory 
     1250             if (parent.endsWith(File.separator)) { 
     1251              parent = parent.substring(0, parent.length() - 1); 
     1252            } 
     1253            String dir = parent.substring(parent.lastIndexOf(File.separator)); 
     1254            dir = dir.substring(0, dir.lastIndexOf(".")); 
     1255            tmp = new Location(parent); 
     1256            oifFile = new Location(tmp, dir).getAbsolutePath(); 
     1257            if (!new Location(oifFile).exists()) { 
     1258              throw new FormatException("OIF file not found"); 
     1259            } 
     1260          } 
    12411261        } 
    12421262      } 
     
    14391459      } 
    14401460    } 
     1461    reader.close(); 
    14411462    return list; 
    14421463  } 
  • trunk/components/bio-formats/src/loci/formats/in/NRRDReader.java

    r6655 r6741  
    152152  /* @see loci.formats.FormatReader#initFile(String) */ 
    153153  protected void initFile(String id) throws FormatException, IOException { 
    154     super.initFile(id); 
    155  
    156154    // make sure we actually have the .nrrd/.nhdr file 
    157155    if (!checkSuffix(id, "nhdr") && !checkSuffix(id, "nrrd")) { 
     
    159157    } 
    160158 
     159    super.initFile(id); 
     160 
    161161    in = new RandomAccessInputStream(id); 
    162162 
    163163    ClassList<IFormatReader> classes = ImageReader.getDefaultReaderClasses(); 
    164     classes.removeClass(getClass()); 
    165     helper = new ImageReader(classes); 
     164    Class<? extends IFormatReader>[] classArray = classes.getClasses(); 
     165    ClassList<IFormatReader> newClasses = 
     166      new ClassList<IFormatReader>(IFormatReader.class); 
     167    for (Class<? extends IFormatReader> c : classArray) { 
     168      if (!c.equals(NRRDReader.class)) { 
     169        newClasses.addClass(c); 
     170      } 
     171    } 
     172    helper = new ImageReader(newClasses); 
    166173 
    167174    String key, v; 
  • trunk/components/bio-formats/src/loci/formats/in/PerkinElmerReader.java

    r6724 r6741  
    131131    } 
    132132 
    133     String prefix = name; 
    134     if (prefix.indexOf(".") != -1) { 
    135       prefix = prefix.substring(0, prefix.lastIndexOf(".")); 
    136     } 
    137     if (prefix.indexOf("_") != -1 && binFile) { 
    138       prefix = prefix.substring(0, prefix.lastIndexOf("_")); 
    139     } 
     133    Location baseFile = new Location(name).getAbsoluteFile(); 
     134    String prefix = baseFile.getParent() + File.separator; 
     135 
     136    String namePrefix = baseFile.getName(); 
     137    if (namePrefix.indexOf(".") != -1) { 
     138      namePrefix = namePrefix.substring(0, namePrefix.lastIndexOf(".")); 
     139    } 
     140    if (namePrefix.indexOf("_") != -1 && binFile) { 
     141      namePrefix = namePrefix.substring(0, namePrefix.lastIndexOf("_")); 
     142    } 
     143    prefix += namePrefix; 
    140144 
    141145    Location htmlFile = new Location(prefix + ".htm"); 
  • trunk/components/bio-formats/src/loci/formats/in/TillVisionReader.java

    r6724 r6741  
    425425    tmpSeriesMetadata = null; 
    426426    populateMetadataStore(); 
     427 
     428    poi.close(); 
     429    poi = null; 
    427430  } 
    428431 
Note: See TracChangeset for help on using the changeset viewer.