Changeset 4177


Ignore:
Timestamp:
07/09/08 13:44:21 (12 years ago)
Author:
melissa
Message:
  • Tweaked MDBParser API to be more usable.
  • Added Olympus APL reader - closes #221.
Location:
trunk/loci/formats
Files:
1 added
3 edited

Legend:

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

    r4176 r4177  
    7979 
    8080  /** Parses table structure for a specified MDB file. */ 
    81   public static void parseDatabase(String filename, Hashtable h) 
    82     throws FormatException 
    83   { 
     81  public static Vector[] parseDatabase(String filename) throws FormatException { 
    8482    if (noMDB) throw new FormatException(NO_MDB_MSG); 
    8583 
     
    103101 
    104102      r.setVar("c", (List) r.getVar("mdb.catalog")); 
    105  
     103      int realCount = num; 
     104      for (int i=0; i<num; i++) { 
     105        r.setVar("i", i); 
     106        r.exec("entry = c.get(i)"); 
     107        int objType = ((Integer) r.getVar("entry.object_type")).intValue(); 
     108        int tableType = ((Integer) r.getVar("Constants.MDB_TABLE")).intValue(); 
     109        String objName = (String) r.getVar("entry.object_name"); 
     110        if (objType != tableType || objName.startsWith("MSys")) { 
     111          realCount--; 
     112        } 
     113      } 
     114      Vector[] rtn = new Vector[realCount]; 
     115 
     116      int index = 0; 
    106117      for (int i=0; i<num; i++) { 
    107118        r.setVar("i", i); 
     
    118129 
    119130        if (isTable && !objName.startsWith("MSys")) { 
     131          rtn[index++] = new Vector(); 
    120132          r.exec("table = Table.mdb_read_table(entry)"); 
    121133          try { 
     
    140152          } 
    141153 
    142           StringBuffer[] sbs = new StringBuffer[numCols]; 
    143           for (int j=0; j<sbs.length; j++) sbs[j] = new StringBuffer(); 
    144  
    145154          boolean moreRows = true; 
    146155          try { 
     
    154163 
    155164          while (moreRows) { 
     165            String[] row = new String[numCols]; 
    156166            for (int j=0; j<numCols; j++) { 
    157167              r.setVar("j", j); 
    158168              r.setVar("columns", (List) r.getVar("table.columns")); 
    159169              r.exec("col = columns.get(j)"); 
    160               if (sbs[j].length() > 0) sbs[j].append(","); 
    161170              r.exec("blah = boundValues.get(j)"); 
    162               sbs[j].append((String) r.getVar("blah.s")); 
     171              row[j] = (String) r.getVar("blah.s"); 
    163172            } 
     173            rtn[index - 1].add(row); 
    164174            try { 
    165175              r.exec("moreRows = Data.mdb_fetch_row(table)"); 
     
    175185          // column, separated by commas 
    176186 
    177           for (int j=0; j<sbs.length; j++) { 
     187          String[] columnNames = new String[numCols + 1]; 
     188          columnNames[0] = objName; 
     189          for (int j=1; j<numCols; j++) { 
    178190            r.setVar("j", j); 
    179191            r.setVar("columns", (List) r.getVar("table.columns")); 
    180192            r.exec("col = columns.get(j)"); 
    181             h.put(objName + " - " + (String) r.getVar("col.name"), 
    182               sbs[j].toString()); 
    183           } 
     193            columnNames[j] = (String) r.getVar("col.name"); 
     194          } 
     195          rtn[index - 1].insertElementAt(columnNames, 0); 
    184196        } 
    185197      } 
     198      return rtn; 
    186199    } 
    187200    catch (ReflectException exc) { 
    188201      LogTools.trace(exc); 
    189202    } 
     203    return null; 
    190204  } 
    191205 
  • trunk/loci/formats/in/ZeissLSMReader.java

    r4132 r4177  
    708708          if (!file.isDirectory()) { 
    709709            mdbFilename = file.getAbsolutePath(); 
    710             MDBParser.parseDatabase(mdbFilename, metadata); 
     710            Vector[] tables = MDBParser.parseDatabase(mdbFilename); 
     711 
     712            for (int table=0; table<tables.length; table++) { 
     713              String[] columnNames = (String[]) tables[table].get(0); 
     714              for (int row=1; row<tables[table].size(); row++) { 
     715                String[] tableRow = (String[]) tables[table].get(row); 
     716                String baseKey = columnNames[0] + " "; 
     717                for (int col=0; col<tableRow.length; col++) { 
     718                  addMeta(baseKey + columnNames[col + 1] + " " + row, 
     719                    tableRow[col]); 
     720                } 
     721              } 
     722            } 
    711723          } 
    712724        } 
  • trunk/loci/formats/readers.txt

    r4165 r4177  
    6262 
    6363# multi-extension messes 
     64loci.formats.in.APLReader             # apl, mtb, tnb 
    6465loci.formats.in.NRRDReader            # nrrd, nhdr, pic 
    6566loci.formats.in.ICSReader             # ics, ids 
Note: See TracChangeset for help on using the changeset viewer.