Das client files
[jalview.git] / src / org / biojava / dasobert / das / DAS_StylesheetRetrieve.java
diff --git a/src/org/biojava/dasobert/das/DAS_StylesheetRetrieve.java b/src/org/biojava/dasobert/das/DAS_StylesheetRetrieve.java
new file mode 100755 (executable)
index 0000000..8411aca
--- /dev/null
@@ -0,0 +1,111 @@
+/*
+ *                  BioJava development code
+ *
+ * This code may be freely distributed and modified under the
+ * terms of the GNU Lesser General Public Licence.  This should
+ * be distributed with the code.  If you do not have a copy,
+ * see:
+ *
+ *      http://www.gnu.org/copyleft/lesser.html
+ *
+ * Copyright for this code is held jointly by the individual
+ * authors.  These should be listed in @author doc comments.
+ *
+ * For more information on the BioJava project and its aims,
+ * or to join the biojava-l mailing list, visit the home page
+ * at:
+ *
+ *      http://www.biojava.org/
+ *
+ * Created on Aug 3, 2005
+ *
+ */
+package org.biojava.dasobert.das;
+
+import java.io.InputStream;
+import java.net.*;
+import java.util.*;
+import java.util.logging.Logger;
+
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+
+import org.xml.sax.InputSource;
+import org.xml.sax.XMLReader;
+
+/** this stores the stylesheet config for a DAS source.
+ *
+ * @author Andreas Prlic
+ *
+ */
+public class DAS_StylesheetRetrieve {
+    static Logger logger = Logger.getLogger("org.biojava.spice");
+    /**
+     *
+     */
+    Map[] t3DMap;
+    public DAS_StylesheetRetrieve() {
+        super();
+
+    }
+
+    /** retrieve a StyleSheet from a URL
+     * The style sheet is represented as a Map[],
+     *  where each Map contains the description of how to draw a features of a particular type.
+     *
+     *  */
+    public Map[] retrieve(URL dasStylesheetRequest){
+
+        logger.finest("requesting stylesheet from " + dasStylesheetRequest);
+
+        InputStream inStream = null;
+
+               try {
+                   HttpURLConnection huc = DAS_FeatureRetrieve.openHttpURLConnection(dasStylesheetRequest);
+
+                   logger.finest("got connection: "+huc.getResponseMessage());
+                   //String contentEncoding = huc.getContentEncoding();
+                   inStream = huc.getInputStream();
+
+
+                   SAXParserFactory spfactory =
+                           SAXParserFactory.newInstance();
+
+                       spfactory.setValidating(false);
+
+                   SAXParser saxParser = null ;
+
+                       try{
+                           saxParser =
+                               spfactory.newSAXParser();
+                       } catch (ParserConfigurationException e) {
+                           e.printStackTrace();
+                       }
+
+                       DAS_Stylesheet_Handler cont_handle = new DAS_Stylesheet_Handler() ;
+                       XMLReader xmlreader = saxParser.getXMLReader();
+
+                       xmlreader.setContentHandler(cont_handle);
+                       xmlreader.setErrorHandler(new org.xml.sax.helpers.DefaultHandler());
+                       InputSource insource = new InputSource() ;
+                       insource.setByteStream(inStream);
+
+
+                   xmlreader.parse(insource);
+                       Map[] typeMap = cont_handle.getTypeStyles();
+
+                       t3DMap = cont_handle.get3DStyles();
+                       return typeMap;
+
+               } catch (Exception e) {
+                   logger.finest(e.getMessage());
+                   return null;
+               }
+    }
+
+
+    public Map[] get3DStyle(){
+        return t3DMap;
+    }
+}