Changeset 5121


Ignore:
Timestamp:
05/26/09 13:58:23 (11 years ago)
Author:
melissa
Message:
  • Lots of cleanup in PerkinElmerReader.
  • Reworked the getUsedFiles methods so that getUsedFiles() always delegates to getUsedFiles(false).
Location:
trunk/components/bio-formats/src/loci/formats
Files:
22 edited

Legend:

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

    r5094 r5121  
    679679  /* @see IFormatReader#getUsedFiles() */ 
    680680  public String[] getUsedFiles() { 
    681     FormatTools.assertId(currentId, true, 1); 
    682     return new String[] {currentId}; 
     681    return getUsedFiles(false); 
    683682  } 
    684683 
    685684  /* @see IFormatReader#getUsedFiles() */ 
    686685  public String[] getUsedFiles(boolean noPixels) { 
    687     return noPixels ? null : getUsedFiles(); 
     686    return noPixels ? null : new String[] {currentId}; 
    688687  } 
    689688 
  • trunk/components/bio-formats/src/loci/formats/in/APLReader.java

    r5094 r5121  
    6666  public boolean isThisType(RandomAccessInputStream stream) throws IOException { 
    6767    return false; 
    68   } 
    69  
    70   /* @see loci.formats.IFormatReader#getUsedFiles() */ 
    71   public String[] getUsedFiles() { 
    72     FormatTools.assertId(currentId, true, 1); 
    73     if (used == null) return new String[0]; 
    74     return used.toArray(new String[0]); 
    7568  } 
    7669 
     
    8881      return files.toArray(new String[0]); 
    8982    } 
    90     return getUsedFiles(); 
     83    return used == null ? new String[0] : used.toArray(new String[0]); 
    9184  } 
    9285 
  • trunk/components/bio-formats/src/loci/formats/in/AnalyzeReader.java

    r5094 r5121  
    8989  } 
    9090 
    91   /* @see loci.formats.IFormatReader#getUsedFiles() */ 
    92   public String[] getUsedFiles() { 
    93     FormatTools.assertId(currentId, true, 1); 
    94     String[] s = new String[2]; 
    95     s[0] = currentId; 
    96     s[1] = pixelsFilename; 
    97     return s; 
    98   } 
    99  
    10091  /* @see loci.formats.IFormatReader#getUsedFiles(boolean) */ 
    10192  public String[] getUsedFiles(boolean noPixels) { 
    10293    FormatTools.assertId(currentId, true, 1); 
    103     return new String[] {currentId}; 
     94    return noPixels ? new String[] {currentId} : 
     95      new String[] {currentId, pixelsFilename}; 
    10496  } 
    10597 
  • trunk/components/bio-formats/src/loci/formats/in/BioRadReader.java

    r5094 r5121  
    9797  // -- Fields -- 
    9898 
    99   private Vector used; 
     99  private Vector<String> used; 
    100100 
    101101  private String[] picFiles; 
     
    145145  } 
    146146 
    147   /* @see loci.formats.IFormatReader#getUsedFiles() */ 
    148   public String[] getUsedFiles() { 
    149     FormatTools.assertId(currentId, true, 1); 
    150     return (String[]) used.toArray(new String[0]); 
    151   } 
    152  
    153147  /* @see loci.formats.IFormatReader#getUsedFiles(boolean) */ 
    154148  public String[] getUsedFiles(boolean noPixels) { 
    155149    FormatTools.assertId(currentId, true, 1); 
    156150    if (noPixels) { 
    157       Vector files = new Vector(); 
    158       for (int i=0; i<used.size(); i++) { 
    159         String f = (String) used.get(i); 
    160         if (checkSuffix(f, PIC_SUFFIX)) files.add(f); 
    161       } 
    162       return (String[]) files.toArray(new String[0]); 
    163     } 
    164     return getUsedFiles(); 
     151      Vector<String> files = new Vector<String>(); 
     152      for (String f : used) { 
     153        if (!checkSuffix(f, PIC_SUFFIX)) files.add(f); 
     154      } 
     155      return files.toArray(new String[0]); 
     156    } 
     157    return used.toArray(new String[0]); 
    165158  } 
    166159 
     
    230223    in.order(true); 
    231224 
    232     used = new Vector(); 
     225    used = new Vector<String>(); 
    233226    used.add(currentId); 
    234227 
  • trunk/components/bio-formats/src/loci/formats/in/DeltavisionReader.java

    r5095 r5121  
    109109  } 
    110110 
    111   /* @see loci.formats.IFormatReader#getUsedFiles() */ 
    112   public String[] getUsedFiles() { 
    113     FormatTools.assertId(currentId, true, 1); 
    114     Vector files = new Vector(); 
    115     files.add(currentId); 
    116     if (logFile != null) files.add(logFile); 
    117     if (deconvolutionLogFile != null) files.add(deconvolutionLogFile); 
    118     return (String[]) files.toArray(new String[0]); 
    119   } 
    120  
    121111  /* @see loci.formats.IFormatReader#getUsedFiles(boolean) */ 
    122112  public String[] getUsedFiles(boolean noPixels) { 
    123113    FormatTools.assertId(currentId, true, 1); 
    124     if (noPixels) { 
    125       Vector files = new Vector(); 
    126       if (logFile != null) files.add(logFile); 
    127       if (deconvolutionLogFile != null) files.add(deconvolutionLogFile); 
    128       return (String[]) files.toArray(new String[0]); 
    129     } 
    130     return getUsedFiles(); 
     114    Vector<String> files = new Vector<String>(); 
     115    if (logFile != null) files.add(logFile); 
     116    if (deconvolutionLogFile != null) files.add(deconvolutionLogFile); 
     117    if (!noPixels) files.add(currentId); 
     118    return files.toArray(new String[0]); 
    131119  } 
    132120 
  • trunk/components/bio-formats/src/loci/formats/in/DicomReader.java

    r5120 r5121  
    122122  private String pixelSizeX, pixelSizeY; 
    123123 
    124   private Vector fileList; 
     124  private Vector<String> fileList; 
    125125  private int imagesPerFile; 
    126126 
     
    182182  } 
    183183 
    184   /* @see loci.formats.IFormatReader#getUsedFiles() */ 
    185   public String[] getUsedFiles() { 
    186     return fileList == null ? null : (String[]) fileList.toArray(new String[0]); 
     184  /* @see loci.formats.IFormatReader#getUsedFiles(boolean) */ 
     185  public String[] getUsedFiles(boolean noPixels) { 
     186    FormatTools.assertId(currentId, true, 1); 
     187    return noPixels || fileList == null ? null : 
     188      fileList.toArray(new String[0]); 
    187189  } 
    188190 
     
    205207      int fileNumber = no / imagesPerFile; 
    206208      no = no % imagesPerFile; 
    207       initFile((String) fileList.get(fileNumber)); 
     209      initFile(fileList.get(fileNumber)); 
    208210    } 
    209211 
     
    606608      originalTime != null) 
    607609    { 
    608       fileList = new Vector(); 
     610      fileList = new Vector<String>(); 
    609611 
    610612      int instanceNumber = Integer.parseInt(originalInstance) - 1; 
     
    666668      } 
    667669 
    668       files = (String[]) fileList.toArray(new String[0]); 
     670      files = fileList.toArray(new String[0]); 
    669671      fileList.clear(); 
    670672      for (int i=0; i<files.length; i++) { 
     
    673675    } 
    674676    else if (fileList == null) { 
    675       fileList = new Vector(); 
     677      fileList = new Vector<String>(); 
    676678      fileList.add(currentId); 
    677679    } 
  • trunk/components/bio-formats/src/loci/formats/in/FV1000Reader.java

    r5104 r5121  
    8585 
    8686  /** Names of every TIFF file to open. */ 
    87   private Vector tiffs; 
     87  private Vector<String> tiffs; 
    8888 
    8989  /** Name of thumbnail file. */ 
     
    9494 
    9595  /** Used file list. */ 
    96   private Vector usedFiles; 
     96  private Vector<String> usedFiles; 
    9797 
    9898  /** Flag indicating this is an OIB dataset. */ 
     
    100100 
    101101  /** File mappings for OIB file. */ 
    102   private Hashtable oibMapping; 
     102  private Hashtable<String, String> oibMapping; 
    103103 
    104104  private String[] code, size, pixelSize; 
     
    192192      file = no / (getImageCount() / tiffs.size()); 
    193193      image = no % (getImageCount() / tiffs.size()); 
    194       if (file < tiffs.size()) filename = (String) tiffs.get(file); 
     194      if (file < tiffs.size()) filename = tiffs.get(file); 
    195195    } 
    196196    else { 
     
    222222  } 
    223223 
    224   /* @see loci.formats.IFormatReader#getUsedFiles() */ 
    225   public String[] getUsedFiles() { 
    226     FormatTools.assertId(currentId, true, 1); 
    227     if (usedFiles == null) return new String[] {currentId}; 
    228     return (String[]) usedFiles.toArray(new String[0]); 
    229   } 
    230  
    231224  /* @see loci.formats.IFormatReader#getUsedFiles(boolean) */ 
    232225  public String[] getUsedFiles(boolean noPixels) { 
     
    234227    if (noPixels) { 
    235228      if (isOIB) return null; 
    236       Vector files = new Vector(); 
     229      Vector<String> files = new Vector<String>(); 
    237230      for (int i=0; i<usedFiles.size(); i++) { 
    238         String file = ((String) usedFiles.get(i)).toLowerCase(); 
    239         if (!file.endsWith(".tif") && !file.endsWith(".tiff") && 
    240           !file.endsWith(".bmp")) 
     231        String f = usedFiles.get(i).toLowerCase(); 
     232        if (!f.endsWith(".tif") && !f.endsWith(".tiff") && !f.endsWith(".bmp")) 
    241233        { 
    242234          files.add(usedFiles.get(i)); 
    243235        } 
    244236      } 
    245       return (String[]) files.toArray(new String[0]); 
    246     } 
    247     return getUsedFiles(); 
     237      return files.toArray(new String[0]); 
     238    } 
     239    if (usedFiles == null) return new String[] {currentId}; 
     240    return usedFiles.toArray(new String[0]); 
    248241  } 
    249242 
     
    321314      RandomAccessInputStream ras = poi.getDocumentStream(infoFile); 
    322315 
    323       oibMapping = new Hashtable(); 
     316      oibMapping = new Hashtable<String, String>(); 
    324317 
    325318      // set up file name mappings 
     
    720713 
    721714    core[0].imageCount = filenames.size(); 
    722     tiffs = new Vector(getImageCount()); 
     715    tiffs = new Vector<String>(getImageCount()); 
    723716 
    724717    thumbReader = new BMPReader(); 
     
    809802    } 
    810803 
    811     usedFiles = new Vector(); 
     804    usedFiles = new Vector<String>(); 
    812805 
    813806    if (tiffPath != null) { 
     
    12731266      } 
    12741267      name = name.replace('\\', '/'); 
    1275       return poi.getDocumentStream((String) oibMapping.get(name)); 
     1268      return poi.getDocumentStream(oibMapping.get(name)); 
    12761269    } 
    12771270    else return new RandomAccessInputStream(name); 
  • trunk/components/bio-formats/src/loci/formats/in/ICSReader.java

    r5119 r5121  
    197197  } 
    198198 
    199   /* @see loci.formats.IFormatReader#getUsedFiles() */ 
    200   public String[] getUsedFiles() { 
    201     FormatTools.assertId(currentId, true, 1); 
    202     if (versionTwo) { 
    203       return new String[] {currentId}; 
    204     } 
    205     return new String[] {currentIdsId, currentIcsId}; 
    206   } 
    207  
    208199  /* @see loci.formats.IFormatReader#getUsedFiles(boolean) */ 
    209200  public String[] getUsedFiles(boolean noPixels) { 
    210201    FormatTools.assertId(currentId, true, 1); 
    211     if (noPixels && !versionTwo) return new String[] {currentIcsId}; 
    212     else if (noPixels) return null; 
    213     return getUsedFiles(); 
     202    if (versionTwo) { 
     203      return noPixels ? null : new String[] {currentIcsId}; 
     204    } 
     205    return noPixels ? new String[] {currentIcsId} : 
     206      new String[] {currentIcsId, currentIdsId}; 
    214207  } 
    215208 
  • trunk/components/bio-formats/src/loci/formats/in/InCellReader.java

    r5094 r5121  
    129129  } 
    130130 
    131   /* @see loci.formats.IFormatReader#getUsedFiles() */ 
    132   public String[] getUsedFiles() { 
     131  /* @see loci.formats.IFormatReader#getUsedFiles(boolean) */ 
     132  public String[] getUsedFiles(boolean noPixels) { 
    133133    FormatTools.assertId(currentId, true, 1); 
    134     Vector files = new Vector(); 
     134    if (noPixels) return new String[] {currentId}; 
     135    Vector<String> files = new Vector<String>(); 
    135136    if (imageFiles != null) { 
    136137      for (int well=0; well<wellRows*wellCols; well++) { 
     
    148149    } 
    149150    files.add(currentId); 
    150     return (String[]) files.toArray(new String[0]); 
    151   } 
    152  
    153   /* @see loci.formats.IFormatReader#getUsedFiles(boolean) */ 
    154   public String[] getUsedFiles(boolean noPixels) { 
    155     FormatTools.assertId(currentId, true, 1); 
    156     return noPixels ? new String[] {currentId} : getUsedFiles(); 
     151    return files.toArray(new String[0]); 
    157152  } 
    158153 
  • trunk/components/bio-formats/src/loci/formats/in/L2DReader.java

    r5094 r5121  
    5454 
    5555  /** List of all files in the dataset. */ 
    56   private Vector used; 
     56  private Vector<String> used; 
    5757 
    5858  private MinimalTiffReader reader; 
     
    9191  } 
    9292 
    93   /* @see loci.formats.IFormatReader#getUsedFiles() */ 
    94   public String[] getUsedFiles() { 
    95     FormatTools.assertId(currentId, true, 1); 
    96     return (String[]) used.toArray(new String[0]); 
    97   } 
    98  
    9993  /* @see loci.formats.IFormatReader#getUsedFiles(boolean) */ 
    10094  public String[] getUsedFiles(boolean noPixels) { 
    10195    FormatTools.assertId(currentId, true, 1); 
    10296    if (noPixels) { 
    103       Vector files = new Vector(); 
     97      Vector<String> files = new Vector<String>(); 
    10498      for (int i=0; i<used.size(); i++) { 
    105         String f = ((String) used.get(i)).toLowerCase(); 
     99        String f = used.get(i).toLowerCase(); 
    106100        if (!f.endsWith(".tif") && !f.endsWith(".tiff")) { 
    107101          files.add(used.get(i)); 
    108102        } 
    109103      } 
    110       return (String[]) used.toArray(new String[0]); 
    111     } 
    112     return getUsedFiles(); 
     104      return files.toArray(new String[0]); 
     105    } 
     106    return used.toArray(new String[0]); 
    113107  } 
    114108 
     
    150144    in = new RandomAccessInputStream(id); 
    151145 
    152     used = new Vector(); 
     146    used = new Vector<String>(); 
    153147    used.add(new Location(id).getAbsolutePath()); 
    154148 
  • trunk/components/bio-formats/src/loci/formats/in/LeicaReader.java

    r5094 r5121  
    219219  } 
    220220 
    221   /* @see loci.formats.IFormatReader#getUsedFiles() */ 
    222   public String[] getUsedFiles() { 
     221  /* @see loci.formats.IFormatReader#getUsedFiles(boolean) */ 
     222  public String[] getUsedFiles(boolean noPixels) { 
    223223    FormatTools.assertId(currentId, true, 1); 
    224     Vector v = new Vector(); 
     224    if (noPixels) return new String[] {currentId}; 
     225    Vector<String> v = new Vector<String>(); 
    225226    v.add(leiFilename); 
    226227    for (int i=0; i<files.length; i++) { 
    227228      for (int j=0; j<files[i].size(); j++) { 
    228         v.add(files[i].get(j)); 
    229       } 
    230     } 
    231     return (String[]) v.toArray(new String[0]); 
    232   } 
    233  
    234   /* @see loci.formats.IFormatReader#getUsedFiles(boolean) */ 
    235   public String[] getUsedFiles(boolean noPixels) { 
    236     FormatTools.assertId(currentId, true, 1); 
    237     return noPixels ? new String[] {currentId} : getUsedFiles(); 
     229        v.add((String) files[i].get(j)); 
     230      } 
     231    } 
     232    return v.toArray(new String[0]); 
    238233  } 
    239234 
  • trunk/components/bio-formats/src/loci/formats/in/MetamorphReader.java

    r5112 r5121  
    132132  } 
    133133 
    134   /* @see loci.formats.IFormatReader#getUsedFiles() */ 
    135   public String[] getUsedFiles() { 
    136     FormatTools.assertId(currentId, true, 1); 
    137     if (stks == null) return super.getUsedFiles(); 
    138     Vector v = new Vector(); 
    139     if (ndFilename != null) v.add(ndFilename); 
    140     for (int i=0; i<stks.length; i++) { 
    141       for (int j=0; j<stks[i].length; j++) { 
    142         v.add(stks[i][j]); 
    143       } 
    144     } 
    145     return (String[]) v.toArray(new String[0]); 
    146   } 
    147  
    148134  /* @see loci.formats.IFormatReader#getUsedFiles(boolean) */ 
    149135  public String[] getUsedFiles(boolean noPixels) { 
     
    153139      return new String[] {ndFilename}; 
    154140    } 
    155     return getUsedFiles(); 
     141    if (stks == null) return super.getUsedFiles(); 
     142    Vector<String> v = new Vector<String>(); 
     143    if (ndFilename != null) v.add(ndFilename); 
     144    for (int i=0; i<stks.length; i++) { 
     145      for (int j=0; j<stks[i].length; j++) { 
     146        v.add(stks[i][j]); 
     147      } 
     148    } 
     149    return v.toArray(new String[0]); 
    156150  } 
    157151 
  • trunk/components/bio-formats/src/loci/formats/in/MicromanagerReader.java

    r5094 r5121  
    121121  } 
    122122 
    123   /* @see loci.formats.IFormatReader#getUsedFiles() */ 
    124   public String[] getUsedFiles() { 
     123  /* @see loci.formats.IFormatReader#getUsedFiles(boolean) */ 
     124  public String[] getUsedFiles(boolean noPixels) { 
    125125    FormatTools.assertId(currentId, true, 1); 
     126    if (noPixels) return new String[] {metadataFile}; 
    126127    String[] s = new String[tiffs.size() + 1]; 
    127128    tiffs.copyInto(s); 
    128129    s[tiffs.size()] = metadataFile; 
    129130    return s; 
    130   } 
    131  
    132   /* @see loci.formats.IFormatReader#getUsedFiles(boolean) */ 
    133   public String[] getUsedFiles(boolean noPixels) { 
    134     FormatTools.assertId(currentId, true, 1); 
    135     return noPixels ? new String[] {metadataFile} : getUsedFiles(); 
    136131  } 
    137132 
  • trunk/components/bio-formats/src/loci/formats/in/NRRDReader.java

    r5094 r5121  
    8383  } 
    8484 
    85   /* @see loci.formats.IFormatReader#getUsedFiles() */ 
    86   public String[] getUsedFiles() { 
    87     FormatTools.assertId(currentId, true, 1); 
    88     if (dataFile == null) return new String[] {currentId}; 
    89     return new String[] {currentId, dataFile}; 
    90   } 
    91  
    9285  /* @see loci.formats.IFormatReader#getUsedFiles(boolean) */ 
    9386  public String[] getUsedFiles(boolean noPixels) { 
     
    9790      return new String[] {currentId}; 
    9891    } 
    99     return getUsedFiles(); 
     92    if (dataFile == null) return new String[] {currentId}; 
     93    return new String[] {currentId, dataFile}; 
    10094  } 
    10195 
  • trunk/components/bio-formats/src/loci/formats/in/NiftiReader.java

    r5094 r5121  
    126126  } 
    127127 
    128   /* @see loci.formats.IFormatReader#getUsedFiles() */ 
    129   public String[] getUsedFiles() { 
    130     FormatTools.assertId(currentId, true, 1); 
    131     if (pixelsFilename.equals(currentId)) return new String[] {currentId}; 
    132     return new String[] {currentId, pixelsFilename}; 
    133   } 
    134  
    135128  /* @see loci.formats.IFormatReader#getUsedFiles(boolean) */ 
    136129  public String[] getUsedFiles(boolean noPixels) { 
    137130    FormatTools.assertId(currentId, true, 1); 
    138     if (pixelsFilename.equals(currentId)) return null; 
     131    if (pixelsFilename.equals(currentId) && noPixels) return null; 
     132    if (!noPixels && !pixelsFilename.equals(currentId)) { 
     133      return new String[] {currentId, pixelsFilename}; 
     134    } 
    139135    return new String[] {currentId}; 
    140136  } 
  • trunk/components/bio-formats/src/loci/formats/in/OMETiffReader.java

    r5112 r5121  
    125125  } 
    126126 
    127   /* @see loci.formats.IFormatReader#getUsedFiles() */ 
    128   public String[] getUsedFiles() { 
     127  /* @see loci.formats.IFormatReader#getUsedFiles(boolean) */ 
     128  public String[] getUsedFiles(boolean noPixels) { 
    129129    FormatTools.assertId(currentId, true, 1); 
    130     return used; 
     130    return noPixels ? null : used; 
    131131  } 
    132132 
  • trunk/components/bio-formats/src/loci/formats/in/PerkinElmerReader.java

    r5094 r5121  
    2626import java.io.File; 
    2727import java.io.IOException; 
    28 import java.lang.reflect.InvocationTargetException; 
    29 import java.lang.reflect.Method; 
    30 import java.text.ParsePosition; 
    31 import java.text.SimpleDateFormat; 
    3228import java.util.Arrays; 
    3329import java.util.Comparator; 
    34 import java.util.Date; 
    3530import java.util.Hashtable; 
    36 import java.util.StringTokenizer; 
    3731import java.util.Vector; 
    3832 
     33import loci.common.DataTools; 
    3934import loci.common.Location; 
    4035import loci.common.RandomAccessInputStream; 
     
    6762  public static final String[] HTM_SUFFIX = {"htm"}; 
    6863 
     64  public static final String HTML_REGEX = 
     65    "<p>|</p>|<br>|<hr>|<b>|</b>|<HTML>|<HEAD>|</HTML>|" + 
     66    "</HEAD>|<h1>|</h1>|<HR>|</body>"; 
     67 
    6968  // -- Fields -- 
    7069 
     
    7978 
    8079  /** List of all files to open */ 
    81   private Vector allFiles; 
     80  private Vector<String> allFiles; 
    8281 
    8382  private String details, sliceSpace; 
     
    168167  } 
    169168 
    170   /* @see loci.formats.IFormatReader#getUsedFiles() */ 
    171   public String[] getUsedFiles() { 
    172     FormatTools.assertId(currentId, true, 1); 
    173     return (String[]) allFiles.toArray(new String[0]); 
    174   } 
    175  
    176169  /* @see loci.formats.IFormatReader#getUsedFiles(boolean) */ 
    177170  public String[] getUsedFiles(boolean noPixels) { 
    178171    FormatTools.assertId(currentId, true, 1); 
    179172    if (noPixels) { 
    180       Vector files = new Vector(); 
     173      Vector<String> files = new Vector<String>(); 
    181174      if (isTiff) { 
    182175        for (int i=0; i<allFiles.size(); i++) { 
    183           String f = ((String) allFiles.get(i)).toLowerCase(); 
     176          String f = allFiles.get(i).toLowerCase(); 
    184177          if (!f.endsWith(".tif") && !f.endsWith(".tiff")) { 
    185178            files.add(allFiles.get(i)); 
     
    189182      else { 
    190183        for (int i=0; i<allFiles.size(); i++) { 
    191           String f = (String) allFiles.get(i); 
     184          String f = allFiles.get(i); 
    192185          String ext = f.substring(f.lastIndexOf(".") + 1); 
    193186          try { 
    194187            Integer.parseInt(ext, 16); 
    195             files.add(f); 
    196           } 
    197           catch (NumberFormatException e) { } 
    198         } 
    199       } 
    200       return (String[]) files.toArray(new String[0]); 
    201     } 
    202     return getUsedFiles(); 
     188          } 
     189          catch (NumberFormatException e) { files.add(f); } 
     190        } 
     191      } 
     192      return files.toArray(new String[0]); 
     193    } 
     194    return allFiles.toArray(new String[0]); 
    203195  } 
    204196 
     
    239231      Location parent = new Location(id).getAbsoluteFile().getParentFile(); 
    240232      String[] ls = parent.list(); 
    241       for (int i=0; i<ls.length; i++) { 
    242         if (checkSuffix(ls[i], HTM_SUFFIX) && !ls[i].startsWith(".")) { 
    243           id = new Location(parent.getAbsolutePath(), ls[i]).getAbsolutePath(); 
     233      for (String file : ls) { 
     234        if (checkSuffix(file, HTM_SUFFIX) && !file.startsWith(".")) { 
     235          id = new Location(parent.getAbsolutePath(), file).getAbsolutePath(); 
    244236          break; 
    245237        } 
     
    249241    super.initFile(id); 
    250242 
    251     allFiles = new Vector(); 
     243    allFiles = new Vector<String>(); 
    252244 
    253245    // get the working directory 
    254     File tmpFile = new File(id).getAbsoluteFile(); 
    255     File workingDir = tmpFile.getParentFile(); 
    256     if (workingDir == null) workingDir = new File("."); 
     246    Location tmpFile = new Location(id).getAbsoluteFile(); 
     247    Location workingDir = tmpFile.getParentFile(); 
     248    if (workingDir == null) workingDir = new Location("."); 
    257249    String workingDirPath = workingDir.getPath(); 
    258250    if (!workingDirPath.equals("")) workingDirPath += File.separator; 
    259251    String[] ls = workingDir.list(); 
    260     if (!new File(id).exists()) { 
     252    if (!new Location(id).exists()) { 
    261253      ls = (String[]) Location.getIdMap().keySet().toArray(new String[0]); 
    262254      workingDirPath = ""; 
     
    265257    // remove files that start with '.' 
    266258 
    267     Vector v = new Vector(); 
     259    Vector<String> v = new Vector<String>(); 
    268260    for (int i=0; i<ls.length; i++) { 
    269261      String file = ls[i]; 
     
    275267      } 
    276268    } 
    277     ls = (String[]) v.toArray(new String[0]); 
     269    ls = v.toArray(new String[0]); 
    278270 
    279271    status("Searching for all metadata companion files"); 
     
    281273    // check if we have any of the required header file types 
    282274 
    283     int cfgPos = -1; 
    284     int anoPos = -1; 
    285     int recPos = -1; 
    286     int timPos = -1; 
    287     int csvPos = -1; 
    288     int zpoPos = -1; 
    289     int htmPos = -1; 
     275    String cfgFile = null, anoFile = null, recFile = null; 
     276    String timFile = null, csvFile = null, zpoFile = null; 
     277    String htmFile = null; 
     278 
    290279    int filesPt = 0; 
    291280    files = new String[ls.length]; 
     
    298287 
    299288    String prefix = null; 
    300  
    301     Location tempFile = null; 
    302289 
    303290    for (int i=0; i<ls.length; i++) { 
     
    315302        ((prefix != null) && (s.startsWith(prefix)))) 
    316303      { 
    317         if (cfgPos == -1 && checkSuffix(ls[i], CFG_SUFFIX)) { 
    318           cfgPos = i; 
    319           prefix = ls[i].substring(0, d); 
    320         } 
    321         if (anoPos == -1 && checkSuffix(ls[i], ANO_SUFFIX)) { 
    322           anoPos = i; 
    323           prefix = ls[i].substring(0, d); 
    324         } 
    325         if (recPos == -1 && checkSuffix(ls[i], REC_SUFFIX)) { 
    326           recPos = i; 
    327           prefix = ls[i].substring(0, d); 
    328         } 
    329         if (timPos == -1 && checkSuffix(ls[i], TIM_SUFFIX)) { 
    330           timPos = i; 
    331           prefix = ls[i].substring(0, d); 
    332         } 
    333         if (csvPos == -1 && checkSuffix(ls[i], CSV_SUFFIX)) { 
    334           csvPos = i; 
    335           prefix = ls[i].substring(0, d); 
    336         } 
    337         if (zpoPos == -1 && checkSuffix(ls[i], ZPO_SUFFIX)) { 
    338           zpoPos = i; 
    339           prefix = ls[i].substring(0, d); 
    340         } 
    341         if (htmPos == -1 && checkSuffix(ls[i], HTM_SUFFIX)) { 
    342           htmPos = i; 
    343           prefix = ls[i].substring(0, d); 
    344         } 
     304        prefix = ls[i].substring(0, d); 
     305        if (cfgFile == null && checkSuffix(ls[i], CFG_SUFFIX)) cfgFile = ls[i]; 
     306        if (anoFile == null && checkSuffix(ls[i], ANO_SUFFIX)) anoFile = ls[i]; 
     307        if (recFile == null && checkSuffix(ls[i], REC_SUFFIX)) recFile = ls[i]; 
     308        if (timFile == null && checkSuffix(ls[i], TIM_SUFFIX)) timFile = ls[i]; 
     309        if (csvFile == null && checkSuffix(ls[i], CSV_SUFFIX)) csvFile = ls[i]; 
     310        if (zpoFile == null && checkSuffix(ls[i], ZPO_SUFFIX)) zpoFile = ls[i]; 
     311        if (htmFile == null && checkSuffix(ls[i], HTM_SUFFIX)) htmFile = ls[i]; 
    345312 
    346313        if (checkSuffix(ls[i], TiffReader.TIFF_SUFFIXES)) { 
    347           files[filesPt] = workingDirPath + ls[i]; 
    348           filesPt++; 
     314          files[filesPt++] = workingDirPath + ls[i]; 
    349315        } 
    350316 
     
    353319          Integer.parseInt(ext, 16); 
    354320          isTiff = false; 
    355           files[filesPt] = workingDirPath + ls[i]; 
    356           filesPt++; 
     321          files[filesPt++] = workingDirPath + ls[i]; 
    357322        } 
    358323        catch (NumberFormatException exc) { 
     
    372337 
    373338    int extCount = 0; 
    374     Vector foundExts = new Vector(); 
     339    Vector<String> foundExts = new Vector<String>(); 
    375340    for (int i=0; i<filesPt; i++) { 
    376341      String ext = tempFiles[i].substring(tempFiles[i].lastIndexOf(".") + 1); 
     
    380345      } 
    381346    } 
     347    foundExts = null; 
    382348 
    383349    for (int i=0; i<filesPt; i+=extCount) { 
    384       Vector extSet = new Vector(); 
     350      Vector<String> extSet = new Vector<String>(); 
    385351      for (int j=0; j<extCount; j++) { 
    386         if (extSet.size() == 0) extSet.add(tempFiles[i + j]); 
     352        String file = tempFiles[i + j]; 
     353        if (extSet.size() == 0) extSet.add(file); 
    387354        else { 
    388           if (tempFiles[i + j] == null) continue; 
    389           String ext = 
    390             tempFiles[i+j].substring(tempFiles[i+j].lastIndexOf(".") + 1); 
     355          if (file == null) continue; 
     356          String ext = file.substring(file.lastIndexOf(".") + 1); 
    391357          int extNum = Integer.parseInt(ext, 16); 
    392358 
     
    439405    RandomAccessInputStream read; 
    440406    byte[] data; 
    441     StringTokenizer t; 
    442407 
    443408    tiff = new MinimalTiffReader(); 
     
    448413    status("Parsing metadata values"); 
    449414 
    450     if (cfgPos != -1) { 
    451       tempFile = new Location(workingDirPath, ls[cfgPos]); 
    452       if (!workingDirPath.equals("")) allFiles.add(tempFile.getAbsolutePath()); 
    453       else allFiles.add(ls[cfgPos]); 
    454     } 
    455     if (anoPos != -1) { 
    456       tempFile = new Location(workingDirPath, ls[anoPos]); 
    457       if (!workingDirPath.equals("")) allFiles.add(tempFile.getAbsolutePath()); 
    458       else allFiles.add(ls[anoPos]); 
    459     } 
    460     if (recPos != -1) { 
    461       tempFile = new Location(workingDirPath, ls[recPos]); 
    462       if (!workingDirPath.equals("")) allFiles.add(tempFile.getAbsolutePath()); 
    463       else allFiles.add(ls[recPos]); 
    464     } 
    465  
    466     if (timPos != -1) { 
    467       tempFile = new Location(workingDirPath, ls[timPos]); 
    468       if (!workingDirPath.equals("")) allFiles.add(tempFile.getAbsolutePath()); 
    469       else allFiles.add(ls[timPos]); 
    470       read = new RandomAccessInputStream((String) 
    471         allFiles.get(allFiles.size() - 1)); 
    472       t = new StringTokenizer(read.readString((int) read.length())); 
     415    addUsedFile(workingDirPath, cfgFile); 
     416    addUsedFile(workingDirPath, anoFile); 
     417    addUsedFile(workingDirPath, recFile); 
     418    addUsedFile(workingDirPath, timFile); 
     419    if (timFile != null) timFile = allFiles.get(allFiles.size() - 1); 
     420    addUsedFile(workingDirPath, csvFile); 
     421    if (csvFile != null) csvFile = allFiles.get(allFiles.size() - 1); 
     422    addUsedFile(workingDirPath, zpoFile); 
     423    if (zpoFile != null) zpoFile = allFiles.get(allFiles.size() - 1); 
     424    addUsedFile(workingDirPath, htmFile); 
     425    if (htmFile != null) htmFile = allFiles.get(allFiles.size() - 1); 
     426 
     427    if (timFile != null) { 
     428      read = new RandomAccessInputStream(timFile); 
     429      String[] tokens = read.readString((int) read.length()).split("\\s"); 
    473430      int tNum = 0; 
    474431      // can ignore "Zero x" and "Extra int" 
     
    482439      // there are 9 additional tokens, but I don't know what they're for 
    483440 
    484       while (t.hasMoreTokens() && tNum<hashKeys.length) { 
    485         String token = t.nextToken(); 
     441      for (String token : tokens) { 
     442        if (token.trim().length() == 0) continue; 
     443        if (tNum >= hashKeys.length) break; 
    486444        if (token.equals("um")) tNum = 5; 
    487445        while ((tNum == 1 || tNum == 2) && !token.trim().equals("0")) { 
    488446          tNum++; 
    489447        } 
    490  
    491448        if (tNum == 4) { 
    492           try { Integer.parseInt(token); } 
    493           catch (NumberFormatException e) { tNum++; } 
     449          try { 
     450            Integer.parseInt(token); 
     451          } 
     452          catch (NumberFormatException e) { 
     453            tNum++; 
     454          } 
    494455        } 
    495456        parseKeyValue(hashKeys[tNum++], token); 
    496457      } 
     458 
    497459      read.close(); 
    498460    } 
    499461 
    500     if (csvPos != -1) { 
    501       tempFile = new Location(workingDirPath, ls[csvPos]); 
    502       if (!workingDirPath.equals("")) allFiles.add(tempFile.getAbsolutePath()); 
    503       else allFiles.add(ls[csvPos]); 
    504       read = new RandomAccessInputStream((String) 
    505         allFiles.get(allFiles.size() - 1)); 
    506       t = new StringTokenizer(read.readString((int) read.length())); 
     462    if (csvFile != null) { 
     463      read = new RandomAccessInputStream(csvFile); 
     464      String[] tokens = read.readString((int) read.length()).split("\\s"); 
     465      Vector<String> tmp = new Vector<String>(); 
     466      for (String token : tokens) { 
     467        if (token.trim().length() > 0) tmp.add(token.trim()); 
     468      } 
     469      tokens = tmp.toArray(new String[0]); 
     470      read.close(); 
     471 
    507472      int tNum = 0; 
    508473      String[] hashKeys = {"Calibration Unit", "Pixel Size X", "Pixel Size Y", 
    509474        "Z slice space"}; 
    510475      int pt = 0; 
    511       while (t.hasMoreTokens()) { 
     476      for (int j=0; j<tokens.length;) { 
    512477        String key = null, value = null; 
    513         if (tNum < 7) { t.nextToken(); } 
     478        if (tNum < 7) { j++; } 
    514479        else if ((tNum > 7 && tNum < 12) || 
    515480          (tNum > 12 && tNum < 18) || (tNum > 18 && tNum < 22)) 
    516481        { 
    517           t.nextToken(); 
     482          j++; 
    518483        } 
    519484        else if (pt < hashKeys.length) { 
    520           key = hashKeys[pt]; 
    521           value = t.nextToken(); 
    522           pt++; 
     485          key = hashKeys[pt++]; 
     486          value = tokens[j++]; 
    523487        } 
    524488        else { 
    525           key = t.nextToken() + t.nextToken(); 
    526           value = t.nextToken(); 
     489          key = tokens[j++] + tokens[j++]; 
     490          value = tokens[j++]; 
    527491        } 
    528492 
    529493        parseKeyValue(key, value); 
    530  
    531494        tNum++; 
    532495      } 
     496    } 
     497 
     498    if (zpoFile != null && csvFile == null) { 
     499      // parse .zpo only if no .csv is available 
     500      read = new RandomAccessInputStream(zpoFile); 
     501      String[] tokens = read.readString((int) read.length()).split("\\s"); 
     502      for (int t=0; t<tokens.length; t++) { 
     503        addMeta("Z slice #" + t + " position", tokens[t]); 
     504      } 
    533505      read.close(); 
    534     } 
    535     if (zpoPos != -1) { 
    536       tempFile = new Location(workingDirPath, ls[zpoPos]); 
    537       if (!workingDirPath.equals("")) allFiles.add(tempFile.getAbsolutePath()); 
    538       else allFiles.add(ls[zpoPos]); 
    539       if (csvPos < 0) { 
    540         // parse .zpo only if no .csv is available 
    541         read = new RandomAccessInputStream((String) 
    542           allFiles.get(allFiles.size() - 1)); 
    543         t = new StringTokenizer(read.readString((int) read.length())); 
    544         int tNum = 0; 
    545         while (t.hasMoreTokens()) { 
    546           addMeta("Z slice #" + tNum + " position", t.nextToken()); 
    547           tNum++; 
    548         } 
    549         read.close(); 
    550       } 
    551506    } 
    552507 
     
    554509    // explicitly defines the number of wavelengths and timepoints 
    555510 
    556     Vector exposureTimes = new Vector(); 
    557     Vector zPositions = new Vector(); 
    558     Vector emWaves = new Vector(); 
    559     Vector exWaves = new Vector(); 
    560  
    561     if (htmPos != -1) { 
    562       tempFile = new Location(workingDirPath, ls[htmPos]); 
    563       if (!workingDirPath.equals("")) allFiles.add(tempFile.getAbsolutePath()); 
    564       else allFiles.add(ls[htmPos]); 
    565       read = new RandomAccessInputStream((String) 
    566         allFiles.get(allFiles.size() - 1)); 
    567       data = new byte[(int) read.length()]; 
    568       read.read(data); 
    569  
    570       String regex = "<p>|</p>|<br>|<hr>|<b>|</b>|<HTML>|<HEAD>|</HTML>|" + 
    571         "</HEAD>|<h1>|</h1>|<HR>|</body>"; 
    572  
    573       // use reflection to avoid dependency on Java 1.4-specific split method 
    574       Class c = String.class; 
    575       String[] tokens = new String[0]; 
    576       Throwable th = null; 
    577       try { 
    578         Method split = c.getMethod("split", new Class[] {c}); 
    579         tokens = (String[]) split.invoke(new String(data), 
    580           new Object[] {regex}); 
    581       } 
    582       catch (NoSuchMethodException exc) { if (debug) trace(exc); } 
    583       catch (IllegalAccessException exc) { if (debug) trace(exc); } 
    584       catch (InvocationTargetException exc) { if (debug) trace(exc); } 
     511    Vector<Float> exposureTimes = new Vector<Float>(); 
     512    Vector<Float> zPositions = new Vector<Float>(); 
     513    Vector<Integer> emWaves = new Vector<Integer>(); 
     514    Vector<Integer> exWaves = new Vector<Integer>(); 
     515 
     516    if (htmFile != null) { 
     517      read = new RandomAccessInputStream(htmFile); 
     518      String[] tokens = read.readString((int) read.length()).split(HTML_REGEX); 
     519      read.close(); 
    585520 
    586521      for (int j=0; j<tokens.length; j++) { 
     
    632567        } 
    633568      } 
    634       read.close(); 
    635569    } 
    636570    else { 
     
    641575 
    642576    if (details != null) { 
    643       t = new StringTokenizer(details); 
    644       int tokenNum = 0; 
    645       String prevToken = ""; 
    646       while (t.hasMoreTokens()) { 
    647         String token = t.nextToken(); 
    648         if (token.equals("Wavelengths")) { 
    649           core[0].sizeC = Integer.parseInt(prevToken); 
    650         } 
    651         else if (token.equals("Frames")) { 
    652           core[0].sizeT = Integer.parseInt(prevToken); 
    653         } 
    654         else if (token.equals("Slices")) { 
    655           core[0].sizeZ = Integer.parseInt(prevToken); 
    656         } 
    657         tokenNum++; 
    658         prevToken = token; 
     577      String[] tokens = details.split("\\s"); 
     578      int n = 0; 
     579      for (String token : tokens) { 
     580        if (token.equals("Wavelengths")) core[0].sizeC = n; 
     581        else if (token.equals("Frames")) core[0].sizeT = n; 
     582        else if (token.equals("Slices")) core[0].sizeZ = n; 
     583        try { 
     584          n = Integer.parseInt(token); 
     585        } 
     586        catch (NumberFormatException e) { n = 0; } 
    659587      } 
    660588    } 
     
    707635      files = new String[imageCount]; 
    708636 
    709       Hashtable zSections = new Hashtable(); 
     637      Hashtable<String, Integer> zSections = new Hashtable<String, Integer>(); 
    710638      for (int i=0; i<tmpFiles.length; i++) { 
    711639        int underscore = tmpFiles[i].lastIndexOf("_"); 
     
    714642        if (zSections.get(z) == null) zSections.put(z, new Integer(1)); 
    715643        else { 
    716           int count = ((Integer) zSections.get(z)).intValue() + 1; 
     644          int count = zSections.get(z).intValue() + 1; 
    717645          zSections.put(z, new Integer(count)); 
    718646        } 
     
    722650      int oldFile = 0; 
    723651      Arrays.sort(tmpFiles, new PEComparator()); 
    724       String[] keys = (String[]) zSections.keySet().toArray(new String[0]); 
     652      String[] keys = zSections.keySet().toArray(new String[0]); 
    725653      Arrays.sort(keys); 
    726654      for (int i=0; i<keys.length; i++) { 
    727         int oldCount = ((Integer) zSections.get(keys[i])).intValue(); 
     655        int oldCount = zSections.get(keys[i]).intValue(); 
    728656        int nPlanes = 
    729657          (isTiff ? tiff.getEffectiveSizeC() : getSizeC()) * getSizeT(); 
     
    738666 
    739667    core[0].dimensionOrder = "XYCTZ"; 
    740  
    741668    core[0].rgb = isTiff ? tiff.isRGB() : false; 
    742669    core[0].interleaved = false; 
     
    760687    store.setImageName("", 0); 
    761688    if (finishTime != null) { 
    762       SimpleDateFormat parse = new SimpleDateFormat("HH:mm:ss (MM/dd/yyyy)"); 
    763       Date date = parse.parse(finishTime, new ParsePosition(0)); 
    764       SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); 
    765       finishTime = fmt.format(date); 
     689      finishTime = DataTools.formatDate(finishTime, "HH:mm:ss (MM/dd/yyyy)"); 
    766690      store.setImageCreationDate(finishTime, 0); 
    767691    } 
     
    773697 
    774698    // populate LogicalChannel element 
    775     for (int i=0; i<getSizeC(); i++) { 
     699    for (int i=0; i<getEffectiveSizeC(); i++) { 
    776700      if (i < emWaves.size()) { 
    777         store.setLogicalChannelEmWave((Integer) emWaves.get(i), 0, i); 
     701        store.setLogicalChannelEmWave(emWaves.get(i), 0, i); 
    778702      } 
    779703      if (i < exWaves.size()) { 
    780         store.setLogicalChannelExWave((Integer) exWaves.get(i), 0, i); 
    781       } 
    782     } 
    783  
    784     // populate PlaneTiming 
     704        store.setLogicalChannelExWave(exWaves.get(i), 0, i); 
     705      } 
     706    } 
     707 
     708    // populate PlaneTiming and StagePosition 
    785709 
    786710    long start = 0, end = 0; 
    787711    if (startTime != null) { 
    788       SimpleDateFormat parse = new SimpleDateFormat("HH:mm:ss (MM/dd/yyyy)"); 
    789       Date date = parse.parse(startTime, new ParsePosition(0)); 
    790       start = date.getTime(); 
     712      start = DataTools.getTime(startTime, "HH:mm:ss (MM/dd/yyyy)"); 
    791713    } 
    792714    if (finishTime != null) { 
    793       SimpleDateFormat parse = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); 
    794       Date date = parse.parse(finishTime, new ParsePosition(0)); 
    795       end = date.getTime(); 
    796     } 
    797  
    798     long range = end - start; 
    799     float msPerPlane = (float) range / getImageCount(); 
    800  
    801     int plane = 0; 
    802     for (int zi=0; zi<getSizeZ(); zi++) { 
    803       for (int ti=0; ti<getSizeT(); ti++) { 
    804         for (int ci=0; ci<getSizeC(); ci++) { 
    805           store.setPlaneTimingDeltaT(new Float((plane * msPerPlane) / 1000), 
    806             0, 0, plane); 
    807           if (ci < exposureTimes.size()) { 
    808             store.setPlaneTimingExposureTime( 
    809               (Float) exposureTimes.get(ci), 0, 0, plane); 
    810           } 
    811           plane++; 
    812         } 
    813       } 
    814     } 
    815  
    816     // populate StagePosition 
     715      end = DataTools.getTime(finishTime, "yyyy-MM-dd'T'HH:mm:ss"); 
     716    } 
     717 
     718    float secondsPerPlane = ((float) (end - start) / getImageCount()) / 1000f; 
    817719 
    818720    for (int i=0; i<getImageCount(); i++) { 
    819721      int[] zct = getZCTCoords(i); 
     722      store.setPlaneTimingDeltaT(new Float(i * secondsPerPlane), 0, 0, i); 
     723      if (zct[1] < exposureTimes.size()) { 
     724        store.setPlaneTimingExposureTime(exposureTimes.get(zct[1]), 0, 0, i); 
     725      } 
     726 
    820727      if (zct[0] < zPositions.size()) { 
    821         store.setStagePositionPositionX(new Float(0.0), 0, 0, plane); 
    822         store.setStagePositionPositionY(new Float(0.0), 0, 0, plane); 
    823         store.setStagePositionPositionZ((Float) zPositions.get(zct[0]), 
    824           0, 0, plane); 
     728        store.setStagePositionPositionX(new Float(0.0), 0, 0, i); 
     729        store.setStagePositionPositionY(new Float(0.0), 0, 0, i); 
     730        store.setStagePositionPositionZ(zPositions.get(zct[0]), 0, 0, i); 
    825731      } 
    826732    } 
     
    867773  } 
    868774 
     775  /** Add the given file to the used files list. */ 
     776  private void addUsedFile(String workingDirPath, String file) { 
     777    if (file == null) return; 
     778    Location f = new Location(workingDirPath, file); 
     779    if (!workingDirPath.equals("")) allFiles.add(f.getAbsolutePath()); 
     780    else allFiles.add(file); 
     781  } 
     782 
    869783  // -- Helper class -- 
    870784 
     
    876790      if (s1.equals(s2)) return 0; 
    877791 
    878       int underscore1 = s1.lastIndexOf("_"); 
    879       int underscore2 = s2.lastIndexOf("_"); 
    880       int dot1 = s1.lastIndexOf("."); 
    881       int dot2 = s2.lastIndexOf("."); 
     792      int underscore1 = (int) Math.max(s1.lastIndexOf("_"), 0); 
     793      int underscore2 = (int) Math.max(s2.lastIndexOf("_"), 0); 
     794      int dot1 = (int) Math.max(s1.lastIndexOf("."), 0); 
     795      int dot2 = (int) Math.max(s2.lastIndexOf("."), 0); 
    882796 
    883797      String prefix1 = s1.substring(0, underscore1); 
     
    886800      if (!prefix1.equals(prefix2)) return prefix1.compareTo(prefix2); 
    887801 
    888       int z1 = Integer.parseInt(s1.substring(underscore1 + 1, dot1)); 
    889       int z2 = Integer.parseInt(s2.substring(underscore2 + 1, dot2)); 
    890  
    891       if (z1 < z2) return -1; 
    892       if (z2 < z1) return 1; 
     802      try { 
     803        int z1 = Integer.parseInt(s1.substring(underscore1 + 1, dot1)); 
     804        int z2 = Integer.parseInt(s2.substring(underscore2 + 1, dot2)); 
     805 
     806        if (z1 < z2) return -1; 
     807        if (z2 < z1) return 1; 
     808      } 
     809      catch (NumberFormatException e) { } 
    893810 
    894811      try { 
     
    897814 
    898815        if (ext1 < ext2) return -1; 
    899         return 1; 
     816        if (ext1 > ext2) return 1; 
    900817      } 
    901818      catch (NumberFormatException e) { } 
  • trunk/components/bio-formats/src/loci/formats/in/PrairieReader.java

    r5094 r5121  
    145145  } 
    146146 
    147   /* @see loci.formats.IFormatReader#getUsedFiles() */ 
    148   public String[] getUsedFiles() { 
     147  /* @see loci.formats.IFormatReader#getUsedFiles(boolean) */ 
     148  public String[] getUsedFiles(boolean noPixels) { 
    149149    FormatTools.assertId(currentId, true, 1); 
     150    if (noPixels) { 
     151      return new String[] {xmlFile, cfgFile}; 
     152    } 
    150153    String[] s = new String[files.length + 2]; 
    151154    System.arraycopy(files, 0, s, 0, files.length); 
     
    153156    s[files.length + 1] = cfgFile; 
    154157    return s; 
    155   } 
    156  
    157   /* @see loci.formats.IFormatReader#getUsedFiles(boolean) */ 
    158   public String[] getUsedFiles(boolean noPixels) { 
    159     FormatTools.assertId(currentId, true, 1); 
    160     if (noPixels) { 
    161       return new String[] {xmlFile, cfgFile}; 
    162     } 
    163     return getUsedFiles(); 
    164158  } 
    165159 
  • trunk/components/bio-formats/src/loci/formats/in/TCSReader.java

    r5094 r5121  
    6464 
    6565  /** List of TIFF files. */ 
    66   private Vector tiffs; 
     66  private Vector<String> tiffs; 
    6767 
    6868  /** Helper readers. */ 
     
    171171  } 
    172172 
    173   /* @see loci.formats.IFormatReader#getUsedFiles() */ 
    174   public String[] getUsedFiles() { 
    175     FormatTools.assertId(currentId, true, 1); 
    176     Vector v = new Vector(); 
    177     for (int i=0; i<tiffs.size(); i++) { 
    178       v.add(tiffs.get(i)); 
    179     } 
    180     if (!v.contains(currentId)) v.add(currentId); 
    181     return (String[]) v.toArray(new String[0]); 
    182   } 
    183  
    184173  /* @see loci.formats.IFormatReader#getUsedFiles(boolean) */ 
    185174  public String[] getUsedFiles(boolean noPixels) { 
     
    190179      return new String[] {currentId}; 
    191180    } 
    192     return getUsedFiles(); 
     181    Vector<String> v = new Vector<String>(); 
     182    for (String f : tiffs) { 
     183      v.add(f); 
     184    } 
     185    if (!v.contains(currentId)) v.add(currentId); 
     186    return v.toArray(new String[0]); 
    193187  } 
    194188 
     
    259253      // look for associated TIFF files 
    260254 
    261       tiffs = new Vector(); 
     255      tiffs = new Vector<String>(); 
    262256 
    263257      Location parent = new Location(id).getAbsoluteFile().getParentFile(); 
     
    281275      for (int i=0; i<tiffReaders.length; i++) { 
    282276        tiffReaders[i] = new TiffReader(); 
    283         tiffReaders[i].setId((String) tiffs.get(i)); 
     277        tiffReaders[i].setId(tiffs.get(i)); 
    284278      } 
    285279 
     
    345339    } 
    346340    else { 
    347       tiffs = new Vector(); 
     341      tiffs = new Vector<String>(); 
    348342      tiffs.add(id); 
    349343      tiffReaders = new TiffReader[1]; 
  • trunk/components/bio-formats/src/loci/formats/in/VisitechReader.java

    r5094 r5121  
    5454 
    5555  /** Files in this dataset. */ 
    56   private Vector files; 
     56  private Vector<String> files; 
    5757 
    5858  // -- Constructor -- 
     
    9191    int planeIndex = no % div; 
    9292 
    93     String file = (String) files.get(fileIndex); 
     93    String file = files.get(fileIndex); 
    9494    RandomAccessInputStream s = new RandomAccessInputStream(file); 
    9595    s.seek(374); 
     
    107107  } 
    108108 
    109   /* @see loci.formats.IFormatReader#getUsedFiles() */ 
    110   public String[] getUsedFiles() { 
    111     FormatTools.assertId(currentId, true, 1); 
    112     if (files == null) return new String[0]; 
    113     return (String[]) files.toArray(new String[0]); 
    114   } 
    115  
    116109  /* @see loci.formats.IFormatReader#getUsedFiles(boolean) */ 
    117110  public String[] getUsedFiles(boolean noPixels) { 
    118111    FormatTools.assertId(currentId, true, 1); 
    119     return noPixels ? new String[] {currentId} : getUsedFiles(); 
     112    if (noPixels) return new String[] {currentId}; 
     113    return files == null ? new String[0] : files.toArray(new String[0]); 
    120114  } 
    121115 
     
    259253    // find pixels files - we think there is one channel per file 
    260254 
    261     files = new Vector(); 
     255    files = new Vector<String>(); 
    262256 
    263257    int ndx = currentId.lastIndexOf(File.separator) + 1; 
  • trunk/components/bio-formats/src/loci/formats/in/ZeissLSMReader.java

    r5094 r5121  
    176176  } 
    177177 
    178   /* @see loci.formats.IFormatReader#getUsedFiles() */ 
    179   public String[] getUsedFiles() { 
    180     FormatTools.assertId(currentId, true, 1); 
    181     if (lsmFilenames == null) return new String[] {currentId}; 
    182     if (lsmFilenames.length == 1 && currentId.equals(lsmFilenames[0])) { 
    183       return lsmFilenames; 
    184     } 
    185     String[] files = new String[lsmFilenames.length + 1]; 
    186     System.arraycopy(lsmFilenames, 0, files, 0, lsmFilenames.length); 
    187     files[files.length - 1] = currentId; 
    188     return files; 
    189   } 
    190  
    191178  /* @see loci.formats.IFormatReader#getUsedFiles(boolean) */ 
    192179  public String[] getUsedFiles(boolean noPixels) { 
     
    196183      return null; 
    197184    } 
    198     return getUsedFiles(); 
     185    if (lsmFilenames == null) return new String[] {currentId}; 
     186    if (lsmFilenames.length == 1 && currentId.equals(lsmFilenames[0])) { 
     187      return lsmFilenames; 
     188    } 
     189    String[] files = new String[lsmFilenames.length + 1]; 
     190    System.arraycopy(lsmFilenames, 0, files, 0, lsmFilenames.length); 
     191    files[files.length - 1] = currentId; 
     192    return files; 
    199193  } 
    200194 
  • trunk/components/bio-formats/src/loci/formats/in/ZipReader.java

    r5112 r5121  
    7575  } 
    7676 
    77   /* @see loci.formats.IFormatReader#getUsedFiles() */ 
    78   public String[] getUsedFiles() { 
    79     return reader.getUsedFiles(); 
     77  /* @see loci.formats.IFormatReader#getUsedFiles(boolean) */ 
     78  public String[] getUsedFiles(boolean noPixels) { 
     79    return reader.getUsedFiles(noPixels); 
    8080  } 
    8181 
Note: See TracChangeset for help on using the changeset viewer.