Changeset 4227


Ignore:
Timestamp:
07/22/08 21:09:58 (11 years ago)
Author:
melissa
Message:
  • Moved XML parsing to DataTools utility method.
  • Fixed Metamorph TIFF comment parsing (courtesy of Thomas Caswell).
Location:
trunk/loci/formats
Files:
10 edited

Legend:

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

    r4200 r4227  
    2828import java.util.Date; 
    2929import java.util.Hashtable; 
     30import javax.xml.parsers.*; 
     31import org.xml.sax.Attributes; 
     32import org.xml.sax.SAXException; 
     33import org.xml.sax.helpers.DefaultHandler; 
    3034 
    3135/** 
     
    5761  public static final long ZVI_EPOCH = 2921084975759000L; 
    5862 
     63  /** Factory for generating SAX parsers. */ 
     64  public static final SAXParserFactory SAX_FACTORY = 
     65    SAXParserFactory.newInstance(); 
     66 
    5967  // -- Static fields -- 
    6068 
     
    742750 
    743751    return buf; 
     752  } 
     753 
     754  public static void parseXML(String xml, DefaultHandler handler) 
     755    throws FormatException, IOException 
     756  { 
     757    parseXML(xml.getBytes(), handler); 
     758  } 
     759 
     760  public static void parseXML(byte[] xml, DefaultHandler handler) 
     761    throws FormatException, IOException 
     762  { 
     763    try { 
     764      SAXParser parser = SAX_FACTORY.newSAXParser(); 
     765      parser.parse(new ByteArrayInputStream(xml), handler); 
     766    } 
     767    catch (ParserConfigurationException exc) { 
     768      throw new FormatException(exc); 
     769    } 
     770    catch (SAXException exc) { 
     771      throw new FormatException(exc); 
     772    } 
    744773  } 
    745774 
  • trunk/loci/formats/in/BioRadReader.java

    r4205 r4227  
    2626import java.io.*; 
    2727import java.util.*; 
    28 import javax.xml.parsers.*; 
    2928import loci.formats.*; 
    3029import loci.formats.meta.FilterMetadata; 
    3130import loci.formats.meta.MetadataStore; 
    3231import org.xml.sax.Attributes; 
    33 import org.xml.sax.SAXException; 
    3432import org.xml.sax.helpers.DefaultHandler; 
    3533 
     
    4846 
    4947  // -- Constants -- 
    50  
    51   /** Factory for generating SAX parsers. */ 
    52   public static final SAXParserFactory SAX_FACTORY = 
    53     SAXParserFactory.newInstance(); 
    5448 
    5549  /** Numerical ID of a valid Bio-Rad PIC file. */ 
     
    636630        raw.close(); 
    637631 
    638         BioRadHandler handler = new BioRadHandler(); 
    639         try { 
    640           SAXParser parser = SAX_FACTORY.newSAXParser(); 
    641           parser.parse(new ByteArrayInputStream(xml), handler); 
    642         } 
    643         catch (SAXException e) { 
    644           if (debug) LogTools.trace(e); 
    645         } 
    646         catch (ParserConfigurationException e) { 
    647           if (debug) LogTools.trace(e); 
    648         } 
     632        DefaultHandler handler = new BioRadHandler(); 
     633        DataTools.parseXML(xml, handler); 
    649634 
    650635        for (int q=0; q<list.length; q++) { 
  • trunk/loci/formats/in/FlexReader.java

    r4200 r4227  
    2828import java.util.Arrays; 
    2929import java.util.Vector; 
    30 import javax.xml.parsers.*; 
    3130import loci.formats.*; 
    3231import loci.formats.meta.*; 
    3332import org.xml.sax.Attributes; 
    34 import org.xml.sax.SAXException; 
    3533import org.xml.sax.helpers.DefaultHandler; 
    3634 
     
    5250  protected static final int FLEX = 65200; 
    5351 
    54   /** Factory for generating SAX parsers. */ 
    55   public static final SAXParserFactory SAX_FACTORY = 
    56     SAXParserFactory.newInstance(); 
    57  
    5852  // -- Fields -- 
    5953 
     
    159153    Vector n = new Vector(); 
    160154    Vector f = new Vector(); 
    161     FlexHandler handler = new FlexHandler(n, f, store); 
    162     try { 
    163       SAXParser saxParser = SAX_FACTORY.newSAXParser(); 
    164       saxParser.parse(new ByteArrayInputStream(c), handler); 
    165     } 
    166     catch (ParserConfigurationException exc) { 
    167       throw new FormatException(exc); 
    168     } 
    169     catch (SAXException exc) { 
    170       throw new FormatException(exc); 
    171     } 
     155    DefaultHandler handler = new FlexHandler(n, f, store); 
     156    DataTools.parseXML(c, handler); 
    172157 
    173158    // verify factor count 
  • trunk/loci/formats/in/InCellReader.java

    r4205 r4227  
    2727import java.io.*; 
    2828import java.util.*; 
    29 import javax.xml.parsers.*; 
    3029import loci.formats.*; 
    3130import loci.formats.meta.FilterMetadata; 
    3231import loci.formats.meta.MetadataStore; 
    3332import org.xml.sax.Attributes; 
    34 import org.xml.sax.SAXException; 
    3533import org.xml.sax.helpers.DefaultHandler; 
    3634 
     
    4543 */ 
    4644public class InCellReader extends FormatReader { 
    47  
    48   // -- Constants -- 
    49  
    50   /** Factory for generating SAX parsers. */ 
    51   public static final SAXParserFactory SAX_FACTORY = 
    52     SAXParserFactory.newInstance(); 
    5345 
    5446  // -- Fields -- 
     
    158150    MetadataStore store = 
    159151      new FilterMetadata(getMetadataStore(), isMetadataFiltered()); 
    160     InCellHandler handler = new InCellHandler(store); 
    161  
    162     try { 
    163       SAXParser parser = SAX_FACTORY.newSAXParser(); 
    164       parser.parse(new ByteArrayInputStream(b), handler); 
    165     } 
    166     catch (ParserConfigurationException exc) { 
    167       throw new FormatException(exc); 
    168     } 
    169     catch (SAXException exc) { 
    170       throw new FormatException(exc); 
    171     } 
     152    DefaultHandler handler = new InCellHandler(store); 
     153    DataTools.parseXML(b, handler); 
     154 
    172155    core.sizeZ[0] = fieldCount * zCount; 
    173156 
  • trunk/loci/formats/in/LIFReader.java

    r4205 r4227  
    2626import java.io.*; 
    2727import java.util.*; 
    28 import javax.xml.parsers.*; 
    2928import loci.formats.*; 
    3029import loci.formats.meta.FilterMetadata; 
    3130import loci.formats.meta.MetadataStore; 
    32 import org.xml.sax.SAXException; 
    3331 
    3432/** 
     
    4341public class LIFReader extends FormatReader { 
    4442 
    45   // -- Constants -- 
    46  
    47   /** Factory for generating SAX parsers. */ 
    48   public static final SAXParserFactory SAX_FACTORY = 
    49     SAXParserFactory.newInstance(); 
    50  
    5143  // -- Fields -- 
    5244 
     
    188180 
    189181    xml = DataTools.sanitizeXML(xml); 
    190  
    191     try { 
    192       SAXParser parser = SAX_FACTORY.newSAXParser(); 
    193       parser.parse(new ByteArrayInputStream(xml.getBytes()), handler); 
    194     } 
    195     catch (ParserConfigurationException exc) { 
    196       throw new FormatException(exc); 
    197     } 
    198     catch (SAXException exc) { 
    199       throw new FormatException(exc); 
    200     } 
     182    DataTools.parseXML(xml, handler); 
    201183 
    202184    Vector widths = handler.getWidths(); 
  • trunk/loci/formats/in/MetamorphTiffReader.java

    r4205 r4227  
    2727import java.text.*; 
    2828import java.util.*; 
    29 import javax.xml.parsers.*; 
    3029import loci.formats.*; 
    3130import loci.formats.meta.FilterMetadata; 
    3231import loci.formats.meta.MetadataStore; 
    3332import org.xml.sax.Attributes; 
    34 import org.xml.sax.SAXException; 
    3533import org.xml.sax.helpers.DefaultHandler; 
    3634 
     
    4240 * <dd><a href="https://skyking.microscopy.wisc.edu/trac/java/browser/trunk/loci/formats/in/MetamorphTiffReader.java">Trac</a>, 
    4341 * <a href="https://skyking.microscopy.wisc.edu/svn/java/trunk/loci/formats/in/MetamorphTiffReader.java">SVN</a></dd></dl> 
     42 * 
     43 * @author Melissa Linkert linkert at wisc.edu 
     44 * @author Thomas Caswell tac42 at cornell.edu 
    4445 */ 
    4546public class MetamorphTiffReader extends BaseTiffReader { 
    46  
    47   // -- Constants -- 
    48  
    49   /** Factory for generating SAX parsers. */ 
    50   public static final SAXParserFactory SAX_FACTORY = 
    51     SAXParserFactory.newInstance(); 
    5247 
    5348  // -- Fields -- 
     
    108103    // parse XML comment 
    109104 
    110     MetamorphHandler handler = new MetamorphHandler(); 
    111     try { 
    112       SAXParser parser = SAX_FACTORY.newSAXParser(); 
    113       for (int i=0; i<comments.length; i++) { 
    114         comments[i] = TiffTools.getComment(ifds[i]); 
    115         parser.parse(new ByteArrayInputStream(comments[i].getBytes()), handler); 
    116       } 
    117     } 
    118     catch (SAXException e) { 
    119       if (debug) LogTools.trace(e); 
    120     } 
    121     catch (ParserConfigurationException e) { 
    122       if (debug) LogTools.trace(e); 
     105    DefaultHandler handler = new MetamorphHandler(); 
     106    for (int i=0; i<comments.length; i++) { 
     107      comments[i] = TiffTools.getComment(ifds[i]); 
     108      DataTools.parseXML(comments[i], handler); 
    123109    } 
    124110 
     
    173159        if (id.equals("Description")) { 
    174160          metadata.remove("Comment"); 
     161 
    175162          String k = null, v = null; 
    176           int colon = value.indexOf(":"); 
    177           while (colon != -1) { 
    178             k = value.substring(0, colon); 
    179             int space = value.lastIndexOf(" ", value.indexOf(":", colon + 1)); 
    180             if (space == -1) space = value.length(); 
    181             v = value.substring(colon + 1, space); 
    182             addMeta(k, v); 
    183             value = value.substring(space).trim(); 
    184             colon = value.indexOf(":"); 
    185  
    186             if (k.equals("Temperature")) { 
    187               temperature = Float.parseFloat(v.trim()); 
     163 
     164          if (value.indexOf("&#13;&#10;") != -1) { 
     165            StringTokenizer tokens = new StringTokenizer(value, "&#130;&#10;"); 
     166            while (tokens.hasMoreTokens()) { 
     167              String line = tokens.nextToken(); 
     168              int colon = line.indexOf(":"); 
     169              if (colon != -1) { 
     170                k = line.substring(0, colon).trim(); 
     171                v = line.substring(colon + 1).trim(); 
     172                addMeta(k, v); 
     173                if (k.equals("Temperature")) { 
     174                  temperature = Float.parseFloat(v.trim()); 
     175                } 
     176              } 
     177            } 
     178          } 
     179          else { 
     180            int colon = value.indexOf(":"); 
     181            while (colon != -1) { 
     182              k = value.substring(0, colon); 
     183              int space = value.lastIndexOf(" ", value.indexOf(":", colon + 1)); 
     184              if (space == -1) space = value.length(); 
     185              v = value.substring(colon + 1, space); 
     186              addMeta(k, v); 
     187              value = value.substring(space).trim(); 
     188              colon = value.indexOf(":"); 
     189 
     190              if (k.equals("Temperature")) { 
     191                temperature = Float.parseFloat(v.trim()); 
     192              } 
    188193            } 
    189194          } 
  • trunk/loci/formats/in/ND2Reader.java

    r4205 r4227  
    2727import java.io.*; 
    2828import java.util.*; 
    29 import javax.xml.parsers.*; 
    3029import loci.formats.*; 
    3130import loci.formats.codec.*; 
     
    3332import loci.formats.meta.MetadataStore; 
    3433import org.xml.sax.Attributes; 
    35 import org.xml.sax.SAXException; 
    3634import org.xml.sax.helpers.DefaultHandler; 
    3735 
     
    5654public class ND2Reader extends FormatReader { 
    5755 
    58   // -- Constants -- 
    59  
    60   /** Factory for generating SAX parsers. */ 
    61   public static final SAXParserFactory SAX_FACTORY = 
    62     SAXParserFactory.newInstance(); 
    63  
    6456  // -- Fields -- 
    6557 
     
    271263      // parse XML blocks 
    272264 
    273       ND2Handler handler = new ND2Handler(); 
     265      DefaultHandler handler = new ND2Handler(); 
    274266      ByteVector xml = new ByteVector(); 
    275267 
     
    309301      xmlString = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><ND2>" + 
    310302        xmlString + "</ND2>"; 
    311  
    312       ByteArrayInputStream s = 
    313         new ByteArrayInputStream(xmlString.getBytes(), 0, xmlString.length()); 
    314  
    315       try { 
    316         SAXParser parser = SAX_FACTORY.newSAXParser(); 
    317         parser.parse(s, handler); 
    318       } 
    319       catch (ParserConfigurationException exc) { 
    320         throw new FormatException(exc); 
    321       } 
    322       catch (SAXException exc) { 
    323         throw new FormatException(exc); 
    324       } 
    325  
    326       s.close(); 
     303      DataTools.parseXML(xmlString, handler); 
    327304 
    328305      // adjust SizeT, if necessary 
     
    587564      status("Finished assembling XML string"); 
    588565 
    589       ND2Handler handler = new ND2Handler(); 
     566      DefaultHandler handler = new ND2Handler(); 
    590567 
    591568      // strip out invalid characters 
     
    601578        } 
    602579      } 
    603  
    604       ByteArrayInputStream s = 
    605         new ByteArrayInputStream(b, offset, len - offset); 
    606  
    607       try { 
    608         SAXParser parser = SAX_FACTORY.newSAXParser(); 
    609         parser.parse(s, handler); 
    610       } 
    611       catch (ParserConfigurationException exc) { 
    612         throw new FormatException(exc); 
    613       } 
    614       catch (SAXException exc) { 
    615         throw new FormatException(exc); 
    616       } 
    617  
    618       s.close(); 
     580      DataTools.parseXML(new String(b, offset, len - offset), handler); 
    619581      xml = null; 
    620582    } 
  • trunk/loci/formats/in/OMEXMLReader.java

    r4205 r4227  
    2626import java.io.*; 
    2727import java.util.*; 
    28 import javax.xml.parsers.*; 
    2928import loci.formats.*; 
    3029import loci.formats.codec.*; 
     
    3231import loci.formats.meta.MetadataStore; 
    3332import org.xml.sax.Attributes; 
    34 import org.xml.sax.SAXException; 
    3533import org.xml.sax.helpers.DefaultHandler; 
    3634 
     
    5250    "obtain ome-java.jar from http://loci.wisc.edu/ome/formats.html"; 
    5351 
    54   private static final SAXParserFactory SAX_FACTORY = 
    55     SAXParserFactory.newInstance(); 
    56  
    5752  // -- Static fields -- 
    5853 
     
    210205    compression = new Vector(); 
    211206 
    212     OMEXMLHandler handler = new OMEXMLHandler(); 
    213     try { 
    214       SAXParser saxParser = SAX_FACTORY.newSAXParser(); 
    215       saxParser.parse(in, handler); 
    216     } 
    217     catch (ParserConfigurationException exc) { 
    218       throw new FormatException(exc); 
    219     } 
    220     catch (SAXException exc) { 
    221       throw new FormatException(exc); 
    222     } 
     207    DefaultHandler handler = new OMEXMLHandler(); 
     208    DataTools.parseXML(in.readString((int) in.length()), handler); 
    223209 
    224210    if (binDataOffsets.size() == 0) { 
  • trunk/loci/formats/in/PrairieReader.java

    r4205 r4227  
    2727import java.text.*; 
    2828import java.util.*; 
    29 import javax.xml.parsers.*; 
    3029import loci.formats.*; 
    3130import loci.formats.meta.FilterMetadata; 
    3231import loci.formats.meta.MetadataStore; 
    3332import org.xml.sax.Attributes; 
    34 import org.xml.sax.SAXException; 
    3533import org.xml.sax.helpers.DefaultHandler; 
    3634 
     
    5856  private static final int PRAIRIE_TAG_2 = 33629; 
    5957  private static final int PRAIRIE_TAG_3 = 33630; 
    60  
    61   /** Factory for generating SAX parsers. */ 
    62   public static final SAXParserFactory SAX_FACTORY = 
    63     SAXParserFactory.newInstance(); 
    6458 
    6559  // -- Fields -- 
     
    215209      is.close(); 
    216210 
    217       PrairieHandler handler = new PrairieHandler(); 
    218       try { 
    219         SAXParser parser = SAX_FACTORY.newSAXParser(); 
    220         parser.parse(new ByteArrayInputStream(b), handler); 
    221       } 
    222       catch (ParserConfigurationException exc) { 
    223         throw new FormatException(exc); 
    224       } 
    225       catch (SAXException exc) { 
    226         throw new FormatException(exc); 
    227       } 
     211      DefaultHandler handler = new PrairieHandler(); 
     212      DataTools.parseXML(b, handler); 
    228213 
    229214      if (checkSuffix(id, XML_SUFFIX)) { 
  • trunk/loci/formats/in/TCSReader.java

    r4205 r4227  
    2727import java.text.*; 
    2828import java.util.*; 
    29 import javax.xml.parsers.*; 
    3029import loci.formats.*; 
    3130import loci.formats.in.TiffReader; 
    3231import loci.formats.meta.FilterMetadata; 
    3332import loci.formats.meta.MetadataStore; 
    34 import org.xml.sax.SAXException; 
    3533 
    3634/** 
     
    4846  // -- Constants -- 
    4947 
    50   /** Factory for generating SAX parsers. */ 
    51   public static final SAXParserFactory SAX_FACTORY = 
    52     SAXParserFactory.newInstance(); 
    53  
    5448  public static final String[] XML_SUFFIX = {"xml"}; 
    5549 
     
    214208      } 
    215209 
    216       try { 
    217         SAXParser parser = SAX_FACTORY.newSAXParser(); 
    218         parser.parse(new ByteArrayInputStream(xml.getBytes()), handler); 
    219       } 
    220       catch (ParserConfigurationException exc) { 
    221         throw new FormatException(exc); 
    222       } 
    223       catch (SAXException exc) { 
    224         throw new FormatException(exc); 
    225       } 
     210      DataTools.parseXML(xml, handler); 
    226211 
    227212      xcal = handler.getXCal(); 
Note: See TracChangeset for help on using the changeset viewer.