Changeset 2195


Ignore:
Timestamp:
02/01/07 08:58:33 (13 years ago)
Author:
melissa
Message:

Use new ConfigEntry class to store data from a config file (instead of using a
series of Hashtables). Make sure that in any directory, the config file is
parsed before the data files.

Location:
trunk/loci/formats/test
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/loci/formats/test/ConfigurationFiles.java

    r2178 r2195  
    3131/** Stores data from a set of config files */ 
    3232public class ConfigurationFiles { 
    33   private Hashtable numSeries = new Hashtable(); 
    34   private Hashtable dimensions = new Hashtable(); 
    35   private Hashtable dimOrders = new Hashtable(); 
    36   private Hashtable interleaved = new Hashtable(); 
    37   private Hashtable rgb = new Hashtable(); 
    38   private Hashtable thumbDims = new Hashtable(); 
    39   private Hashtable pixelType = new Hashtable(); 
    40   private Hashtable littleEndian = new Hashtable(); 
    41   private Hashtable readTime = new Hashtable(); 
    42   private Hashtable memUsage = new Hashtable(); 
    43   private Hashtable doTest = new Hashtable(); 
     33  private Hashtable entries = new Hashtable(); 
    4434 
    4535  public Vector parsedFiles = new Vector(); 
    4636 
    47   int currentSeries = 0; 
     37  private int currentSeries = 0; 
    4838 
    4939  public static ConfigurationFiles newInstance() { 
     
    5141  } 
    5242 
    53   public int numFiles() { return numSeries.size(); } 
     43  public int numFiles() { return entries.size(); } 
    5444 
    5545  public boolean initialized(String id) { 
    56     return numSeries.containsKey(id) && getNumSeries(id) <= currentSeries; 
     46    return entries.containsKey(id) && getNumSeries(id) <= currentSeries; 
    5747  } 
    5848 
     
    7464      String line = st.nextToken(); 
    7565      if (!line.startsWith("#") && line.trim().length() > 0) { 
     66        ConfigEntry entry = new ConfigEntry(); 
     67         
    7668        String file = line.substring(1, line.lastIndexOf("\"")); 
    7769        Location newLocation = new Location(l.getParent(), file); 
     
    8274        // first check if 'test' is set to false; if so, don't parse anything 
    8375        // else 
    84        
     76      
    8577        String testValue = line.substring(line.indexOf("test=") + 5).trim(); 
    8678        if (testValue.equals("false")) { 
    87           doTest.put(file, new Boolean(false)); 
     79          entry.test = false; 
    8880        } 
    8981        else { 
    90           doTest.put(file, new Boolean(true)); 
     82          entry.test = true; 
    9183 
    9284          int ndx = line.indexOf("total_series=") + 13; 
    9385          int nSeries =  
    9486            Integer.parseInt(line.substring(ndx, line.indexOf(" ", ndx))); 
    95           numSeries.put(file, new Integer(nSeries)); 
    96  
    97           int[][] dims = new int[nSeries][5]; 
    98           String[] orders = new String[nSeries]; 
    99           boolean[] interleave = new boolean[nSeries]; 
    100           boolean[] isRGB = new boolean[nSeries]; 
    101           int[][] thumbs = new int[nSeries][2]; 
    102           int[] ptype = new int[nSeries]; 
    103           boolean[] little = new boolean[nSeries]; 
     87          entry.numSeries = nSeries; 
     88 
     89          entry.dimensions = new int[nSeries][5]; 
     90          entry.orders = new String[nSeries]; 
     91          entry.interleaved = new boolean[nSeries]; 
     92          entry.rgb = new boolean[nSeries]; 
     93          entry.thumbs = new int[nSeries][2]; 
     94          entry.type = new int[nSeries]; 
     95          entry.littleEndian = new boolean[nSeries]; 
    10496 
    10597          for (int i=0; i<nSeries; i++) { 
     
    10799            String s = line.substring(ndx, line.indexOf("]", ndx)); 
    108100            ndx = s.indexOf("x") + 2; 
    109             dims[i][0] =  
     101            entry.dimensions[i][0] =  
    110102              Integer.parseInt(s.substring(ndx, s.indexOf(" ", ndx))); 
    111103            ndx = s.indexOf("y") + 2; 
    112             dims[i][1] =  
     104            entry.dimensions[i][1] =  
    113105              Integer.parseInt(s.substring(ndx, s.indexOf(" ", ndx))); 
    114106            ndx = s.indexOf("z") + 2; 
    115             dims[i][2] =  
     107            entry.dimensions[i][2] =  
    116108              Integer.parseInt(s.substring(ndx, s.indexOf(" ", ndx))); 
    117109            ndx = s.indexOf("c") + 2; 
    118             dims[i][3] =  
     110            entry.dimensions[i][3] =  
    119111              Integer.parseInt(s.substring(ndx, s.indexOf(" ", ndx))); 
    120112            ndx = s.indexOf("t") + 2; 
    121             dims[i][4] =  
     113            entry.dimensions[i][4] =  
    122114              Integer.parseInt(s.substring(ndx, s.indexOf(" ", ndx))); 
    123115           
    124116            ndx = s.indexOf("order") + 6; 
    125             orders[i] = s.substring(ndx, s.indexOf(" ", ndx)); 
     117            entry.orders[i] = s.substring(ndx, s.indexOf(" ", ndx)); 
    126118            ndx = s.indexOf("interleave") + 11; 
    127             interleave[i] =  
     119            entry.interleaved[i] =  
    128120              s.substring(ndx, s.indexOf(" ", ndx)).equals("true"); 
    129121            ndx = s.indexOf("rgb") + 4; 
    130             isRGB[i] = s.substring(ndx, s.indexOf(" ", ndx)).equals("true"); 
     122            entry.rgb[i] = s.substring(ndx, s.indexOf(" ", ndx)).equals("true"); 
    131123            ndx = s.indexOf("thumbx") + 7; 
    132             thumbs[i][0] =  
     124            entry.thumbs[i][0] =  
    133125              Integer.parseInt(s.substring(ndx, s.indexOf(" ", ndx))); 
    134126            ndx = s.indexOf("thumby") + 7; 
    135             thumbs[i][1] =  
     127            entry.thumbs[i][1] =  
    136128              Integer.parseInt(s.substring(ndx, s.indexOf(" ", ndx))); 
    137129            ndx = s.indexOf("type") + 5; 
    138             ptype[i] = FormatReader.pixelTypeFromString( 
     130            entry.type[i] = FormatReader.pixelTypeFromString( 
    139131              s.substring(ndx, s.indexOf(" ", ndx))); 
    140132            ndx = s.indexOf("little") + 7; 
    141             little[i] = s.substring(ndx).equals("true"); 
     133            entry.littleEndian[i] = s.substring(ndx).equals("true"); 
    142134          } 
    143135 
    144           dimensions.put(file, dims); 
    145           dimOrders.put(file, orders); 
    146           interleaved.put(file, interleave); 
    147           rgb.put(file, isRGB); 
    148           thumbDims.put(file, thumbs); 
    149           pixelType.put(file, ptype); 
    150           littleEndian.put(file, little); 
    151            
    152136          ndx = line.indexOf("access=") + 7; 
    153           readTime.put(file, new Float(line.substring(ndx,  
    154             line.indexOf(" ", ndx)))); 
     137          entry.access = Float.parseFloat(line.substring(ndx,  
     138            line.indexOf(" ", ndx))); 
    155139          ndx = line.indexOf("mem=") + 4; 
    156           long mem = Long.parseLong(line.substring(ndx,  
    157             line.indexOf(" ", ndx))); 
    158           memUsage.put(file, new Integer((int) (mem >> 20))); 
     140          entry.mem = (int) (Long.parseLong(line.substring(ndx,  
     141            line.indexOf(" ", ndx))) >> 20); 
    159142        } 
     143        entries.put(file, entry); 
    160144      } 
    161145    } 
     
    169153 
    170154  public int getNumSeries(String id) {  
    171     if (!numSeries.contains(id)) return 0; 
    172     return ((Integer) numSeries.get(id)).intValue(); 
     155    if (!entries.contains(id)) return 0; 
     156    return ((ConfigEntry) entries.get(id)).numSeries; 
    173157  } 
    174158     
    175159  public int getWidth(String id) { 
    176160    if (!initialized(id)) return 0; 
    177     return ((int[][]) dimensions.get(id))[currentSeries][0]; 
     161    return ((ConfigEntry) entries.get(id)).dimensions[currentSeries][0]; 
    178162  } 
    179163     
    180164  public int getHeight(String id) {  
    181165    if (!initialized(id)) return 0; 
    182     return ((int[][]) dimensions.get(id))[currentSeries][1]; 
     166    return ((ConfigEntry) entries.get(id)).dimensions[currentSeries][1]; 
    183167  } 
    184168 
    185169  public int getZ(String id) {  
    186170    if (!initialized(id)) return 0; 
    187     return ((int[][]) dimensions.get(id))[currentSeries][2]; 
     171    return ((ConfigEntry) entries.get(id)).dimensions[currentSeries][2]; 
    188172  } 
    189173     
    190174  public int getC(String id) {  
    191175    if (!initialized(id)) return 0; 
    192     return ((int[][]) dimensions.get(id))[currentSeries][3]; 
     176    return ((ConfigEntry) entries.get(id)).dimensions[currentSeries][3]; 
    193177  } 
    194178     
    195179  public int getT(String id) {  
    196180    if (!initialized(id)) return 0; 
    197     return ((int[][]) dimensions.get(id))[currentSeries][4]; 
     181    return ((ConfigEntry) entries.get(id)).dimensions[currentSeries][4]; 
    198182  } 
    199183     
    200184  public String getDimOrder(String id) {  
    201185    if (!initialized(id)) return null; 
    202     return ((String[]) dimOrders.get(id))[currentSeries]; 
     186    return ((ConfigEntry) entries.get(id)).orders[currentSeries]; 
    203187  } 
    204188 
    205189  public boolean isInterleaved(String id) { 
    206190    if (!initialized(id)) return false; 
    207     return ((boolean[]) interleaved.get(id))[currentSeries];  
     191    return ((ConfigEntry) entries.get(id)).interleaved[currentSeries]; 
    208192  } 
    209193 
    210194  public boolean isRGB(String id) { 
    211195    if (!initialized(id)) return false; 
    212     return ((boolean[]) rgb.get(id))[currentSeries]; 
     196    return ((ConfigEntry) entries.get(id)).rgb[currentSeries]; 
    213197  } 
    214198 
    215199  public int getThumbX(String id) { 
    216200    if (!initialized(id)) return 0; 
    217     return ((int[][]) thumbDims.get(id))[currentSeries][0]; 
     201    return ((ConfigEntry) entries.get(id)).thumbs[currentSeries][0]; 
    218202  } 
    219203 
    220204  public int getThumbY(String id) { 
    221205    if (!initialized(id)) return 0; 
    222     return ((int[][]) thumbDims.get(id))[currentSeries][1]; 
     206    return ((ConfigEntry) entries.get(id)).thumbs[currentSeries][1]; 
    223207  } 
    224208 
    225209  public int getPixelType(String id) { 
    226210    if (!initialized(id)) return -1; 
    227     return ((int[]) pixelType.get(id))[currentSeries];  
     211    return ((ConfigEntry) entries.get(id)).type[currentSeries]; 
    228212  } 
    229213 
    230214  public boolean isLittleEndian(String id) { 
    231215    if (!initialized(id)) return false; 
    232     return ((boolean[]) littleEndian.get(id))[currentSeries]; 
     216    return ((ConfigEntry) entries.get(id)).littleEndian[currentSeries]; 
    233217  } 
    234218 
    235219  public float getTimePerPlane(String id) { 
    236220    if (!initialized(id)) return 0; 
    237     return ((Float) readTime.get(id)).floatValue(); 
     221    return ((ConfigEntry) entries.get(id)).access; 
    238222  } 
    239223 
    240224  public int getFileSize(String id) { 
    241225    if (!initialized(id)) return 0; 
    242     return ((Float) memUsage.get(id)).intValue(); 
     226    return ((ConfigEntry) entries.get(id)).mem; 
    243227  } 
    244228 
    245229  public boolean testFile(String id) { 
    246     if (!doTest.containsKey(id)) return true; 
    247     return ((Boolean) doTest.get(id)).booleanValue();  
     230    if (!entries.containsKey(id)) return true; 
     231    return ((ConfigEntry) entries.get(id)).test; 
     232  } 
     233 
     234  // -- Helper class -- 
     235 
     236  public class ConfigEntry { 
     237    public int numSeries; 
     238    public int[][] dimensions; 
     239    public String[] orders; 
     240    public boolean[] interleaved; 
     241    public boolean[] rgb; 
     242    public int[][] thumbs; 
     243    public int[] type; 
     244    public boolean[] littleEndian; 
     245    public float access; 
     246    public int mem; 
     247    public boolean test; 
    248248  } 
    249249} 
  • trunk/loci/formats/test/ReaderTest.java

    r2189 r2195  
    557557    f = null; 
    558558    Arrays.sort(subs); 
     559     
     560    // make sure that if a config file exists, it is first on the list 
     561    for (int i=0; i<subs.length; i++) { 
     562      if (subs[i].endsWith(".bioformats") && i != 0) { 
     563        String tmp = subs[0]; 
     564        subs[0] = subs[i]; 
     565        subs[i] = tmp; 
     566        break; 
     567      } 
     568    } 
     569     
    559570    if (subs == null) { 
    560571      System.out.println("Invalid directory: " + root); 
Note: See TracChangeset for help on using the changeset viewer.