+++ /dev/null
-/*
- * 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 Dec 10, 2005
- *
- */
-package org.biojava.dasobert.das;
-
-import org.biojava.dasobert.dasregistry.Das1Source;
-import org.biojava.dasobert.dasregistry.DasCoordinateSystem;
-
-/** a class that stores the arguments that can be sent to the AlignmentThread class
- *
- * @author Andreas Prlic
- *
- */
-public class AlignmentParameters {
-
- String query;
- String subject;
- String queryPDBChainId;
- String subjectPDBChainId;
-
-
- DasCoordinateSystem queryCoordinateSystem;
- DasCoordinateSystem subjectCoordinateSystem;
- Das1Source[] dasSources;
-
-
- public static String DEFAULT_PDBCOORDSYS = "PDBresnum,Protein Structure";
- public static String DEFAULT_UNIPROTCOORDSYS = "UniProt,Protein Sequence";
- public static String DEFAULT_ENSPCOORDSYS = "Ensembl,Protein Sequence";
-
-
- public AlignmentParameters() {
- super();
- dasSources = new SpiceDasSource[0];
-
- }
-
- public DasCoordinateSystem getDefaultPDBCoordSys(){
- return DasCoordinateSystem.fromString(DEFAULT_PDBCOORDSYS);
- }
- public DasCoordinateSystem getDefaultUniProtCoordSys(){
- return DasCoordinateSystem.fromString(DEFAULT_UNIPROTCOORDSYS);
- }
- public DasCoordinateSystem getDefaultEnspCoordSys(){
- return DasCoordinateSystem.fromString(DEFAULT_ENSPCOORDSYS);
- }
-
-
- public Das1Source[] getDasSources() {
- return dasSources;
- }
-
-
-
- public void setDasSources(SpiceDasSource[] dasSources) {
- this.dasSources = dasSources;
- }
-
-
-
- public String getQuery() {
- return query;
- }
-
-
-
- public void setQuery(String query) {
- this.query = query;
- }
-
-
-
- public DasCoordinateSystem getQueryCoordinateSystem() {
- return queryCoordinateSystem;
- }
-
-
-
- public void setQueryCoordinateSystem(DasCoordinateSystem queryCoordinateSystem) {
- this.queryCoordinateSystem = queryCoordinateSystem;
- }
-
-
-
- public String getQueryPDBChainId() {
- return queryPDBChainId;
- }
-
-
-
- public void setQueryPDBChainId(String queryPDBChainId) {
- this.queryPDBChainId = queryPDBChainId;
- }
-
-
-
- public String getSubject() {
- return subject;
- }
-
-
-
- public void setSubject(String subject) {
- this.subject = subject;
- }
-
-
-
- public DasCoordinateSystem getSubjectCoordinateSystem() {
- return subjectCoordinateSystem;
- }
-
-
-
- public void setSubjectCoordinateSystem(
- DasCoordinateSystem subjectCoordinateSystem) {
- this.subjectCoordinateSystem = subjectCoordinateSystem;
- }
-
-
-
- public String getSubjectPDBChainId() {
- return subjectPDBChainId;
- }
-
-
-
- public void setSubjectPDBChainId(String subjectPDBChainId) {
- this.subjectPDBChainId = subjectPDBChainId;
- }
-
-
-
-
-}
+++ /dev/null
-/*
- * 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 19.03.2004
- * @author Andreas Prlic
- *
- */
-package org.biojava.dasobert.das;
-
-
-import org.xml.sax.helpers.DefaultHandler;
-import org.xml.sax.Attributes;
-
-/**
- * a class to parse the XML response of a DAS-DNA request.
- * @author andreas
- */
-public class DAS_DNA_Handler extends DefaultHandler {
-
- String sequence ;
- int length ;
- boolean dna_flag;
- /**
- *
- */
- public DAS_DNA_Handler() {
- super();
- // TODO Auto-generated constructor stub
- sequence = "" ;
- length = 0;
- dna_flag = false ;
- }
-
- public void startElement (String uri, String name, String qName, Attributes atts){
-
- if ( qName.equals("DNA")){
- //System.out.println("new element >" + name + "< >" + qName+"<");
- // was : length
- String lenstr = atts.getValue("length");
- length = Integer.parseInt(lenstr);
- dna_flag = true ;
- }
-
- }
-
- public void characters (char ch[], int start, int length){
- //System.out.print("Characters: \"");
- if (dna_flag)
- for (int i = start; i < start + length; i++) {
- switch (ch[i]) {
- case '\\':
- //System.out.print("\\\\");
- break;
- case '"':
- //System.out.print("\\\"");
- break;
- case '\n':
- //System.out.print("\\n");
- break;
- case '\r':
- //System.out.print("\\r");
- break;
- case '\t':
- //System.out.print("\\t");
- break;
- case ' ':
- break;
- default:
- sequence = sequence + ch[i];
- //System.out.print(ch[i]);
- break;
- }
- }
- //System.out.print("\"\n");
-
- }
-
- public String get_sequence() {
- if ( length != sequence.length()) {
- System.err.println("Sequence does not match specified length!");
- }
-
- return sequence;
- }
-
-
-
-}
+++ /dev/null
-/*
- * 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 19.03.2004
- * @author Andreas Prlic
- *
- */
-package org.biojava.dasobert.das ;
-
-import org.xml.sax.helpers.DefaultHandler;
-import org.xml.sax.Attributes;
-
-
-/** a class to parse the reponse of a DAS - types request
- */
-public class DAS_Entry_Points_Handler extends DefaultHandler {
-
- String version ;
-
- public DAS_Entry_Points_Handler() {
- super();
-
- version = null;
- }
-
- public void startElement (String uri, String name, String qName, Attributes atts){
- if ( qName.equals("DASEP")) {
-
- } else if ( qName.equals("ENTRY_POINTS")) {
-
- String v = atts.getValue("version");
- version = v;
- }
- }
-
- /** returns true if the server returns an entry points */
- public String getVersion() {
- return version;
- }
-
-}
-
+++ /dev/null
-/*
- * 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 19.03.2004
- * @author Andreas Prlic
- *
- */
-package org.biojava.dasobert.das;
-
-
-import org.xml.sax.helpers.DefaultHandler;
-import org.xml.sax.Attributes ;
-import java.util.logging.* ;
-
-/**
- * a class that parses the XML response of a DAS - sequence command.
- * @author Andreas Prlic
- *
- */
-public class DAS_Sequence_Handler extends DefaultHandler {
-
- String sequence ;
- int length ;
- boolean dna_flag;
- /**
- *
- */
- public DAS_Sequence_Handler() {
- super();
- // TODO Auto-generated constructor stub
- sequence = "" ;
- length = 0;
- dna_flag = false ;
- }
-
- public void startElement (String uri, String name, String qName, Attributes atts){
-
- if ( qName.equals("SEQUENCE")){
- //System.out.println("new element >" + name + "< >" + qName+"<");
- // was : length
- String lenstr = atts.getValue("stop");
- length = Integer.parseInt(lenstr);
- dna_flag = true ;
- }
-
- }
-
- public void characters (char ch[], int start, int length){
- //System.out.print("Characters: \"");
- if (dna_flag)
- for (int i = start; i < start + length; i++) {
- switch (ch[i]) {
- case '\\':
- //System.out.print("\\\\");
- break;
- case '"':
- //System.out.print("\\\"");
- break;
- case '\n':
- //System.out.print("\\n");
- break;
- case '\r':
- //System.out.print("\\r");
- break;
- case '\t':
- //System.out.print("\\t");
- break;
- case ' ':
- break;
- default:
- sequence = sequence + ch[i];
- //System.out.print(ch[i]);
- break;
- }
- }
- //System.out.print("\"\n");
-
- }
-
- public String get_sequence() {
- if ( length != sequence.length()) {
- Logger logger = Logger.getLogger("org.biojava.spice");
- logger.warning("Sequence does not match specified length!");
-
- }
-
- return sequence;
- }
-
-
-
-}
+++ /dev/null
-/*
- * 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;
- }
-}
+++ /dev/null
-/*
- * 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 org.xml.sax.helpers.DefaultHandler;
-import org.xml.sax.Attributes ;
-import java.util.*;
-import java.util.logging.Logger;
-import java.awt.Color;
-
-/** a class to parse the XML response of a DAS - stylesheet request.
- * @author Andreas Prlic
- *
- */
-public class DAS_Stylesheet_Handler extends DefaultHandler {
-
- List typeGlyphMaps;
- Map currentType;
- String chars ;
- boolean threeDstyle;
- List threeDGlyphMaps;
- static Logger logger = Logger.getLogger("org.biojava.spice");
-
- /**
- *
- */
- public DAS_Stylesheet_Handler() {
- super();
- typeGlyphMaps = new ArrayList();
- currentType = new HashMap();
- threeDGlyphMaps = new ArrayList();
- threeDstyle = false;
- }
-
-
- public Map[] getTypeStyles(){
- return (Map[]) typeGlyphMaps.toArray(new Map[typeGlyphMaps.size()]);
- }
-
- public Map[] get3DStyles(){
- return (Map[]) threeDGlyphMaps.toArray(new Map[threeDGlyphMaps.size()]);
- }
-
- public void startElement (String uri, String name, String qName, Attributes atts){
- chars = "";
-
- if ( qName.equals("CATEGORY")){
- String id = atts.getValue("id");
- if ( id.equals("3D")){
- // here follow the 3D styles...
- threeDstyle = true;
- } else {
- threeDstyle = false;
-
- }
- }
-
- if ( qName.equals("TYPE")){
- // this glyph matches to features of type >id<.
- String id = atts.getValue("id");
- currentType = new HashMap();
- currentType.put("type",id);
- }
-
- else if ( qName.equals("ARROW")){
- currentType.put("style","arrow");
- } else if ( qName.equals("ANCHORED_ARROW")){
- currentType.put("style","anchored_arrow");
- } else if ( qName.equals("BOX")){
- currentType.put("style","box");
- } else if ( qName.equals("CROSS")){
- currentType.put("style","cross");
- } else if ( qName.equals("EX")){
- currentType.put("style","EX");
- } else if ( qName.equals("HELIX")){
- currentType.put("style","helix");
- } else if ( qName.equals("LINE")){
- currentType.put("style","LINE");
- } else if ( qName.equals("SPAN")){
- currentType.put("style","span");
- } else if ( qName.equals("TRIANGLE")){
- currentType.put("style","triangle");
- }
-
- }
-
- /** convert the color provided by the stylesheet to a java Color
- *
- * @param chars
- * @return
- */
- private Color getColorFromString(String chars){
-
-
- if (chars.equals("rotate")) {
- // use the default SPICE colors ...
- return null;
- }
-
- try {
- Color col = Color.decode(chars);
- return col;
- } catch ( Exception e) {
- logger.finest("could not decode color from stylesheet " + e.getMessage());
- }
-
-
- // map the string to a build in color...
- // thanks to the Xpm.java script provided by Phil Brown (under LGPL)
- // AP downloaded it from http://www.bolthole.com/java/Xpm.java
-
- // the DAS spec stylesheet only requires 16 VGA colors to be supported, but here we do more... :-)
-
- int[] rgb = Xpm.NameToRGB3(chars);
- if ( rgb != null) {
- Color col = new Color(rgb[0],rgb[1],rgb[2]);
- return col;
- }
- return null ;
- }
-
- public void endElement(String uri, String name, String qName) {
- if ( qName.equals("HEIGHT")){
- currentType.put("height",chars);
- } else if ( qName.equals("COLOR")){
- //System.out.println("got color " + chars);
- Color col = getColorFromString(chars);
- if ( col != null ){
- currentType.put("color",col);
- } else {
- if ( chars.equals("cpk")){
- currentType.put("cpkcolor","true");
- }
- }
-
- } else if ( qName.equals("OUTLINECOLOR")){
- currentType.put("outlinecolor",chars);
- } else if ( qName.equals("BACKGROUND")){
- currentType.put("background",chars);
- } else if ( qName.equals("BUMP")){
- if ( chars.equals("no"))
- currentType.put("bump","no");
- else
- currentType.put("bump","yes");
-
- // 3D stuff
- } else if ( qName.equals("WIREFRAME")){
- currentType.put("display","wireframe");
- } else if ( qName.equals("SPACEFILL")){
- currentType.put("display","spacefill");
- } else if ( qName.equals("BACKBONE")){
- currentType.put("display","backbone");
- } else if ( qName.equals("CARTOON")){
- currentType.put("display","cartoon");
- } else if ( qName.equals("RIBBONS")){
- currentType.put("display","ribbons");
- } else if ( qName.equals("WIDTH")){
- currentType.put("width",chars);
- }
-
- else if ( qName.equals("TYPE")){
- if ( threeDstyle){
- threeDGlyphMaps.add(currentType);
- } else {
- typeGlyphMaps.add(currentType);
- }
- }
- }
-
- public void characters (char ch[], int start, int length){
-
-
- for (int i = start; i < start + length; i++) {
- chars += ch[i];
- }
-
-
- }
-
-}
-
-
-
-
+++ /dev/null
-/*
- * 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 19.03.2004
- * @author Andreas Prlic
- *
- */
-package org.biojava.dasobert.das ;
-
-import org.xml.sax.helpers.DefaultHandler;
-import org.xml.sax.Attributes;
-
-import java.util.ArrayList ;
-import java.util.List;
-
-
-/** a class to parse the reponse of a DAS - types request
- */
-public class DAS_Types_Handler extends DefaultHandler {
- List types;
- boolean dastypesPresent;
- boolean gffPresent;
- boolean segmentPresent;
-
- public DAS_Types_Handler() {
- super();
- types = new ArrayList();
- dastypesPresent = false;
- gffPresent=false;
- segmentPresent=false;
- }
-
- public void startElement (String uri, String name, String qName, Attributes atts){
- if ( qName.equals("DASTYPES")) {
- dastypesPresent = true;
-
- } else if ( qName.equals("GFF")) {
- gffPresent = true;
-
- } else if ( qName.equals("SEGMENT")) {
- segmentPresent = true;
-
- String id = atts.getValue("id");
- // id is optional here
- if ( id != null ) {
- types.add(id);
- }
- } else if ( qName.equals("TYPE")){
- String type = atts.getValue("id");
- // id is mandatory ...
- types.add(type);
-
- }
-
- }
-
- public String[] getTypes(){
- return (String[])types.toArray(new String[types.size()]);
- }
-}
-
+++ /dev/null
-/*
- * 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 Nov 20, 2005
- *
- */
-package org.biojava.dasobert.das;
-
-import java.io.InputStream;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.util.Iterator;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
-
-import org.biojava.dasobert.dasregistry.Das1Source;
-import org.biojava.dasobert.eventmodel.SequenceEvent;
-import org.biojava.dasobert.eventmodel.SequenceListener;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXNotRecognizedException;
-import org.xml.sax.XMLReader;
-import java.util.*;
-
-/** a thread that gets the sequence from a DAS server
- *
- * @author Andreas Prlic
- *
- */
-public class SequenceThread
-extends Thread {
-
- Das1Source[] sequenceServers;
- String sp_accession;
- List seqListeners;
- static Logger logger = Logger.getLogger("org.biojava.spice");
-
- public SequenceThread(String sp_accession,Das1Source ds ) {
- super();
- Das1Source[] dss =new Das1Source[1];
- dss[0] = ds;
- this.sp_accession = sp_accession;
- this.sequenceServers =dss ;
- clearSequenceListeners();
- }
- public SequenceThread(String sp_accession,Das1Source[] ds ) {
- super();
-
- this.sp_accession = sp_accession;
- this.sequenceServers =ds ;
- clearSequenceListeners();
- }
-
- public void clearSequenceListeners(){
- seqListeners = new ArrayList();
- }
-
- public void addSequenceListener(SequenceListener lis){
- seqListeners.add(lis);
- }
-
- public void run() {
- getSequence();
- }
-
- public void getSequence( ){
-
- boolean gotSequence = false ;
-
- for ( int i = 0 ; i< sequenceServers.length; i++){
-
- if ( gotSequence ) break ;
-
- Das1Source ds = sequenceServers[i];
- String url = ds.getUrl() ;
- char lastChar = url.charAt(url.length()-1);
- if ( ! (lastChar == '/') )
- url +="/" ;
- String dascmd = url + "sequence?segment=";
- String connstr = dascmd + sp_accession ;
-
- try {
-
- String sequence = retrieveSequence(connstr);
- // bug in aristotle das source?
- sequence.replaceAll(" ","");
- gotSequence = true ;
- // set the sequence ...
-
- triggerNewSequence(sp_accession,sequence);
-
-
- return;
- }
- catch (Exception ex) {
- ex.printStackTrace();
- logger.warning(ex.getMessage());
-
- //triggerException(ex);
-
- }
- }
-
- logger.log(Level.WARNING,"could not retreive UniProt sequence from any available DAS sequence server");
-
- triggerNoSequence(sp_accession);
-
- }
-
-
-
-// private void triggerException(Exception e){
-// Iterator iter = seqListeners.iterator();
-// while (iter.hasNext()){
-// SequenceListener li = (SequenceListener)iter.next();
-// li.exceptionOccured(e);
-// }
-// }
-
- private void triggerNewSequence(String sp_accession,String sequence){
-
- Iterator iter = seqListeners.iterator();
- while (iter.hasNext()){
- SequenceListener li = (SequenceListener)iter.next();
- //SequenceEvent event = new SequenceEvent(sequence);
- SequenceEvent event = new SequenceEvent(sp_accession,sequence);
- li.newSequence(event);
- }
- }
-
- private void triggerNoSequence(String ac){
-
- Iterator iter = seqListeners.iterator();
- while (iter.hasNext()){
- SequenceListener li = (SequenceListener)iter.next();
- li.noObjectFound(ac);
- }
-
- }
-
- /** retrieve the Sequence from a DAS server.
- *
- * @param connstr - the DAS - request string. e.g. http://www.ebi.ac.uk/das-srv/uniprot/das/aristotle/sequence?segment=P00280
- * @return the requested Sequence
- * @throws Exception
- */
- public String retrieveSequence( String connstr)
- throws Exception
- {
-
- //logger.finest("trying: " + connstr) ;
- URL dasUrl = new URL(connstr);
- //DAS_httpConnector dhtp = new DAS_httpConnector() ;
- logger.info("requesting sequence from " + connstr);
- InputStream dasInStream =open(dasUrl);
-
-
- SAXParserFactory spfactory =
- SAXParserFactory.newInstance();
-
- // never do this
- //String vali = System.getProperty("XMLVALIDATION");
- String vali = "false";
- boolean validate = false ;
- if ((vali != null) && ( vali.equals("true")) )
- validate = true ;
- spfactory.setValidating(validate);
-
- SAXParser saxParser = null ;
-
- try{
- saxParser =
- spfactory.newSAXParser();
- } catch (ParserConfigurationException e) {
- //e.printStackTrace();
- logger.log(Level.FINER,"Uncaught exception", e);
- }
-
- XMLReader xmlreader = saxParser.getXMLReader();
-
- try {
- xmlreader.setFeature("http://xml.org/sax/features/validation", validate);
- } catch (SAXException e) {
- logger.finer("Cannot set validation to " + validate);
- logger.log(Level.FINER,"Uncaught exception", e);
- }
-
- try {
- xmlreader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd",validate);
- } catch (SAXNotRecognizedException e){
- //e.printStackTrace();
- logger.finer("Cannot set load-external-dtd to" + validate);
- logger.log(Level.FINER,"Uncaught exception", e);
- //System.err.println("Cannot set load-external-dtd to" + validate);
- }
-
-
- //DAS_DNA_Handler cont_handle = new DAS_DNA_Handler() ;
- DAS_Sequence_Handler cont_handle = new DAS_Sequence_Handler() ;
- xmlreader.setContentHandler(cont_handle);
- xmlreader.setErrorHandler(new org.xml.sax.helpers.DefaultHandler());
- InputSource insource = new InputSource() ;
- insource.setByteStream(dasInStream);
-
- xmlreader.parse(insource);
- String sequence = cont_handle.get_sequence();
- //logger.finest("Got sequence from DAS: " +sequence);
- logger.exiting(this.getClass().getName(), "retreiveSequence", sequence);
- return sequence ;
- }
-
- private InputStream open(URL url) {
- {
-
- InputStream inStream = null;
- try{
-
-
-
-
- HttpURLConnection huc = null;
-
- huc = DAS_FeatureRetrieve.openHttpURLConnection(url);
-
-
- logger.finest(huc.getResponseMessage());
-
- inStream = huc.getInputStream();
-
-
- }
- catch ( Exception ex){
- ex.printStackTrace();
- logger.log(Level.WARNING,"exception occured", ex);
- }
-
- return inStream;
- }
-
- }
-
-}
+++ /dev/null
-/*
- * 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 17.10.2004
- * @author Andreas Prlic
- *
- */
-
-package org.biojava.dasobert.das ;
-
-//import org.biojava.services.das.registry.*;
-import org.biojava.dasobert.das.DAS_StylesheetRetrieve;
-import org.biojava.dasobert.dasregistry.Das1Source;
-import org.biojava.dasobert.dasregistry.DasCoordinateSystem;
-import org.biojava.dasobert.dasregistry.DasSource;
-import java.io.IOException ;
-import java.text.DateFormat ;
-import java.text.SimpleDateFormat ;
-import java.util.*;
-
-
-import java.net.URL;
-
-/** Manages all data about a DAS source that SPICE requires */
-public class SpiceDasSource
-extends Das1Source
-
-{
-
-
- boolean status ;
- boolean registered ; // a flag to trace if source comes from registry or from user vonfig
- Map[] typeStyles;
- Map[] threeDstyles;
- public static String DEFAULT_NICKNAME = "MyDASsource";
- public static String DEFAULT_CAPABILITY = "features";
- public SpiceDasSource() {
- super();
-
- status = true ; // default source is actived and used .
- registered = true ; // default true = source comes from registry
- setNickname(DEFAULT_NICKNAME);
- typeStyles = null;
- threeDstyles = null;
- String[] caps = new String[1];
- caps[0] = DEFAULT_CAPABILITY;
- setCapabilities(caps);
- }
-
- public void loadStylesheet(){
- DAS_StylesheetRetrieve dsr = new DAS_StylesheetRetrieve();
- String cmd = getUrl()+"stylesheet";
- URL url = null;
- try {
- url = new URL(cmd);
- } catch (Exception e){
- e.printStackTrace();
- return ;
- }
- Map[] styles = dsr.retrieve(url);
-
- if ( styles != null){
- typeStyles = styles;
- } else {
- typeStyles = new Map[0];
- }
-
-
- Map[] t3dStyles = dsr.get3DStyle();
- if ( t3dStyles != null){
- threeDstyles = t3dStyles;
- } else {
- threeDstyles = new Map[0];
- }
- }
-
- /** returns the Stylesheet that is provided by a DAS source.
- * It provides info of how to draw a particular feature.
- * returns null if not attempt has been made to load the stylesheet.
- * afterwards it returns a Map[0] or the Map[] containing the style data.
- *
- * @return
- */
- public Map[] getStylesheet(){
- return typeStyles;
- }
-
- /** get the stylesheet containing the instructions how to paint in 3D.
- *
- * @return
- */
- public Map[] get3DStylesheet(){
- return threeDstyles;
- }
-
- /** a flag if this das source is active
- * or
- * @param flag
- */
- public void setStatus(boolean flag) { status = flag ; }
- public boolean getStatus() { return status ; }
-
- public void setRegistered(boolean flag) { registered = flag ; }
- public boolean getRegistered() { return registered ; }
-
-
- /** convert DasSource to SpiceDasSource */
- public static SpiceDasSource fromDasSource(DasSource ds) {
- SpiceDasSource s = new SpiceDasSource();
- s.setUrl(ds.getUrl());
- s.setAdminemail(ds.getAdminemail());
- s.setDescription(ds.getDescription());
- s.setCoordinateSystem(ds.getCoordinateSystem());
- s.setCapabilities(ds.getCapabilities());
- s.setRegisterDate(ds.getRegisterDate());
- s.setLeaseDate(ds.getLeaseDate());
- s.setNickname(ds.getNickname());
-
-
- // testcode now part of coordinate system...
- //s.setTestCode(ds.getTestCode());
- s.setId(ds.getId());
- s.setLabels(ds.getLabels());
- s.setHelperurl(ds.getHelperurl());
- return s;
- }
-
-
- public String toString() {
- String txt = getId() + " " + getNickname() + " " + getUrl() ;
- return txt;
- }
-
-
-}
+++ /dev/null
-//@(#) Xpm.java 1.9@(#)
-//Copyright (c) 2001, Phil Brown, phil@bolthole.com
-//licensed under GNU LGPL version 2
-
-/* A library class to convert Xpm data into an image.
- * It also has nice little utilities like converting
- * color NAMES to rgb values (based on X11 rgb.txt)
- *
- * Note1: There might be a slight conflict of copyright,
- * If the rgb.txt data from the X11 distribution has nasty copyright
- * stuff attached to it. If so... my apologies to the X11 folk.
- *
- * This is an improved version, that is not hardcoded so much for
- * "crossfire". It should hopefully handle all xpm types.
- * If it doesnt, please send me email, with a sample xpm image
- * that it fails under, and I'll try to fix it.
- */
-package org.biojava.dasobert.das;
-
-
-import java.awt.Image;
-import java.util.Hashtable;
-import java.awt.Toolkit;
-import java.awt.image.*;
-
-//rgb data originally from
-//! $XConsortium: rgb.txt,v 10.41 94/02/20 18:39:36 rws Exp $
-
-
-
-//Note: This class is huge, and has icky large static initializers.
-//They are also ARRAY-based, which means poor lookup speed.
-//While that is kinda annoying, it shouldn't be TOO bad.
-//And it should greatly improve STARTUP time, which I consider
-//at this point to be more important
-
-public class Xpm
-{
- static String VersionString="Phil@bolthole.com Xpm v1.1";
- static final int rgbents[][] = {
- {255, 250, 250},
- {248, 248, 255},
- {248, 248, 255},
- {245, 245, 245},
- {245, 245, 245},
- {220, 220, 220},
- {255, 250, 240},
- {255, 250, 240},
- {253, 245, 230},
- {253, 245, 230},
- {250, 240, 230},
- {250, 235, 215},
- {250, 235, 215},
- {255, 239, 213},
- {255, 239, 213},
- {255, 235, 205},
- {255, 235, 205},
- {255, 228, 196},
- {255, 218, 185},
- {255, 218, 185},
- {255, 222, 173},
- {255, 222, 173},
- {255, 228, 181},
- {255, 248, 220},
- {255, 255, 240},
- {255, 250, 205},
- {255, 250, 205},
- {255, 245, 238},
- {240, 255, 240},
- {245, 255, 250},
- {245, 255, 250},
- {240, 255, 255},
- {240, 248, 255},
- {240, 248, 255},
- {230, 230, 250},
- {255, 240, 245},
- {255, 240, 245},
- {255, 228, 225},
- {255, 228, 225},
- {255, 255, 255},
- { 0, 0, 0},
- { 47, 79, 79},
- { 47, 79, 79},
- { 47, 79, 79},
- { 47, 79, 79},
- {105, 105, 105},
- {105, 105, 105},
- {105, 105, 105},
- {105, 105, 105},
- {112, 128, 144},
- {112, 128, 144},
- {112, 128, 144},
- {112, 128, 144},
- {119, 136, 153},
- {119, 136, 153},
- {119, 136, 153},
- {119, 136, 153},
- {190, 190, 190},
- {190, 190, 190},
- {211, 211, 211},
- {211, 211, 211},
- {211, 211, 211},
- {211, 211, 211},
- { 25, 25, 112},
- { 25, 25, 112},
- { 0, 0, 128},
- { 0, 0, 128},
- { 0, 0, 128},
- {100, 149, 237},
- {100, 149, 237},
- { 72, 61, 139},
- { 72, 61, 139},
- {106, 90, 205},
- {106, 90, 205},
- {123, 104, 238},
- {123, 104, 238},
- {132, 112, 255},
- {132, 112, 255},
- { 0, 0, 205},
- { 0, 0, 205},
- { 65, 105, 225},
- { 65, 105, 225},
- { 0, 0, 255},
- { 30, 144, 255},
- { 30, 144, 255},
- { 0, 191, 255},
- { 0, 191, 255},
- {135, 206, 235},
- {135, 206, 235},
- {135, 206, 250},
- {135, 206, 250},
- { 70, 130, 180},
- { 70, 130, 180},
- {176, 196, 222},
- {176, 196, 222},
- {173, 216, 230},
- {173, 216, 230},
- {176, 224, 230},
- {176, 224, 230},
- {175, 238, 238},
- {175, 238, 238},
- { 0, 206, 209},
- { 0, 206, 209},
- { 72, 209, 204},
- { 72, 209, 204},
- { 64, 224, 208},
- { 0, 255, 255},
- {224, 255, 255},
- {224, 255, 255},
- { 95, 158, 160},
- { 95, 158, 160},
- {102, 205, 170},
- {102, 205, 170},
- {127, 255, 212},
- { 0, 100, 0},
- { 0, 100, 0},
- { 85, 107, 47},
- { 85, 107, 47},
- {143, 188, 143},
- {143, 188, 143},
- { 46, 139, 87},
- { 46, 139, 87},
- { 60, 179, 113},
- { 60, 179, 113},
- { 32, 178, 170},
- { 32, 178, 170},
- {152, 251, 152},
- {152, 251, 152},
- { 0, 255, 127},
- { 0, 255, 127},
- {124, 252, 0},
- {124, 252, 0},
- { 0, 255, 0},
- {127, 255, 0},
- { 0, 250, 154},
- { 0, 250, 154},
- {173, 255, 47},
- {173, 255, 47},
- { 50, 205, 50},
- { 50, 205, 50},
- {154, 205, 50},
- {154, 205, 50},
- { 34, 139, 34},
- { 34, 139, 34},
- {107, 142, 35},
- {107, 142, 35},
- {189, 183, 107},
- {189, 183, 107},
- {240, 230, 140},
- {238, 232, 170},
- {238, 232, 170},
- {250, 250, 210},
- {250, 250, 210},
- {255, 255, 224},
- {255, 255, 224},
- {255, 255, 0},
- {255, 215, 0},
- {238, 221, 130},
- {238, 221, 130},
- {218, 165, 32},
- {184, 134, 11},
- {184, 134, 11},
- {188, 143, 143},
- {188, 143, 143},
- {205, 92, 92},
- {205, 92, 92},
- {139, 69, 19},
- {139, 69, 19},
- {160, 82, 45},
- {205, 133, 63},
- {222, 184, 135},
- {245, 245, 220},
- {245, 222, 179},
- {244, 164, 96},
- {244, 164, 96},
- {210, 180, 140},
- {210, 105, 30},
- {178, 34, 34},
- {165, 42, 42},
- {233, 150, 122},
- {233, 150, 122},
- {250, 128, 114},
- {255, 160, 122},
- {255, 160, 122},
- {255, 165, 0},
- {255, 140, 0},
- {255, 140, 0},
- {255, 127, 80},
- {240, 128, 128},
- {240, 128, 128},
- {255, 99, 71},
- {255, 69, 0},
- {255, 69, 0},
- {255, 0, 0},
- {255, 105, 180},
- {255, 105, 180},
- {255, 20, 147},
- {255, 20, 147},
- {255, 192, 203},
- {255, 182, 193},
- {255, 182, 193},
- {219, 112, 147},
- {219, 112, 147},
- {176, 48, 96},
- {199, 21, 133},
- {199, 21, 133},
- {208, 32, 144},
- {208, 32, 144},
- {255, 0, 255},
- {238, 130, 238},
- {221, 160, 221},
- {218, 112, 214},
- {186, 85, 211},
- {186, 85, 211},
- {153, 50, 204},
- {153, 50, 204},
- {148, 0, 211},
- {148, 0, 211},
- {138, 43, 226},
- {138, 43, 226},
- {160, 32, 240},
- {147, 112, 219},
- {147, 112, 219},
- {216, 191, 216},
- {255, 250, 250},
- {238, 233, 233},
- {205, 201, 201},
- {139, 137, 137},
- {255, 245, 238},
- {238, 229, 222},
- {205, 197, 191},
- {139, 134, 130},
- {255, 239, 219},
- {238, 223, 204},
- {205, 192, 176},
- {139, 131, 120},
- {255, 228, 196},
- {238, 213, 183},
- {205, 183, 158},
- {139, 125, 107},
- {255, 218, 185},
- {238, 203, 173},
- {205, 175, 149},
- {139, 119, 101},
- {255, 222, 173},
- {238, 207, 161},
- {205, 179, 139},
- {139, 121, 94},
- {255, 250, 205},
- {238, 233, 191},
- {205, 201, 165},
- {139, 137, 112},
- {255, 248, 220},
- {238, 232, 205},
- {205, 200, 177},
- {139, 136, 120},
- {255, 255, 240},
- {238, 238, 224},
- {205, 205, 193},
- {139, 139, 131},
- {240, 255, 240},
- {224, 238, 224},
- {193, 205, 193},
- {131, 139, 131},
- {255, 240, 245},
- {238, 224, 229},
- {205, 193, 197},
- {139, 131, 134},
- {255, 228, 225},
- {238, 213, 210},
- {205, 183, 181},
- {139, 125, 123},
- {240, 255, 255},
- {224, 238, 238},
- {193, 205, 205},
- {131, 139, 139},
- {131, 111, 255},
- {122, 103, 238},
- {105, 89, 205},
- { 71, 60, 139},
- { 72, 118, 255},
- { 67, 110, 238},
- { 58, 95, 205},
- { 39, 64, 139},
- { 0, 0, 255},
- { 0, 0, 238},
- { 0, 0, 205},
- { 0, 0, 139},
- { 30, 144, 255},
- { 28, 134, 238},
- { 24, 116, 205},
- { 16, 78, 139},
- { 99, 184, 255},
- { 92, 172, 238},
- { 79, 148, 205},
- { 54, 100, 139},
- { 0, 191, 255},
- { 0, 178, 238},
- { 0, 154, 205},
- { 0, 104, 139},
- {135, 206, 255},
- {126, 192, 238},
- {108, 166, 205},
- { 74, 112, 139},
- {176, 226, 255},
- {164, 211, 238},
- {141, 182, 205},
- { 96, 123, 139},
- {198, 226, 255},
- {185, 211, 238},
- {159, 182, 205},
- {108, 123, 139},
- {202, 225, 255},
- {188, 210, 238},
- {162, 181, 205},
- {110, 123, 139},
- {191, 239, 255},
- {178, 223, 238},
- {154, 192, 205},
- {104, 131, 139},
- {224, 255, 255},
- {209, 238, 238},
- {180, 205, 205},
- {122, 139, 139},
- {187, 255, 255},
- {174, 238, 238},
- {150, 205, 205},
- {102, 139, 139},
- {152, 245, 255},
- {142, 229, 238},
- {122, 197, 205},
- { 83, 134, 139},
- { 0, 245, 255},
- { 0, 229, 238},
- { 0, 197, 205},
- { 0, 134, 139},
- { 0, 255, 255},
- { 0, 238, 238},
- { 0, 205, 205},
- { 0, 139, 139},
- {151, 255, 255},
- {141, 238, 238},
- {121, 205, 205},
- { 82, 139, 139},
- {127, 255, 212},
- {118, 238, 198},
- {102, 205, 170},
- { 69, 139, 116},
- {193, 255, 193},
- {180, 238, 180},
- {155, 205, 155},
- {105, 139, 105},
- { 84, 255, 159},
- { 78, 238, 148},
- { 67, 205, 128},
- { 46, 139, 87},
- {154, 255, 154},
- {144, 238, 144},
- {124, 205, 124},
- { 84, 139, 84},
- { 0, 255, 127},
- { 0, 238, 118},
- { 0, 205, 102},
- { 0, 139, 69},
- { 0, 255, 0},
- { 0, 238, 0},
- { 0, 205, 0},
- { 0, 139, 0},
- {127, 255, 0},
- {118, 238, 0},
- {102, 205, 0},
- { 69, 139, 0},
- {192, 255, 62},
- {179, 238, 58},
- {154, 205, 50},
- {105, 139, 34},
- {202, 255, 112},
- {188, 238, 104},
- {162, 205, 90},
- {110, 139, 61},
- {255, 246, 143},
- {238, 230, 133},
- {205, 198, 115},
- {139, 134, 78},
- {255, 236, 139},
- {238, 220, 130},
- {205, 190, 112},
- {139, 129, 76},
- {255, 255, 224},
- {238, 238, 209},
- {205, 205, 180},
- {139, 139, 122},
- {255, 255, 0},
- {238, 238, 0},
- {205, 205, 0},
- {139, 139, 0},
- {255, 215, 0},
- {238, 201, 0},
- {205, 173, 0},
- {139, 117, 0},
- {255, 193, 37},
- {238, 180, 34},
- {205, 155, 29},
- {139, 105, 20},
- {255, 185, 15},
- {238, 173, 14},
- {205, 149, 12},
- {139, 101, 8},
- {255, 193, 193},
- {238, 180, 180},
- {205, 155, 155},
- {139, 105, 105},
- {255, 106, 106},
- {238, 99, 99},
- {205, 85, 85},
- {139, 58, 58},
- {255, 130, 71},
- {238, 121, 66},
- {205, 104, 57},
- {139, 71, 38},
- {255, 211, 155},
- {238, 197, 145},
- {205, 170, 125},
- {139, 115, 85},
- {255, 231, 186},
- {238, 216, 174},
- {205, 186, 150},
- {139, 126, 102},
- {255, 165, 79},
- {238, 154, 73},
- {205, 133, 63},
- {139, 90, 43},
- {255, 127, 36},
- {238, 118, 33},
- {205, 102, 29},
- {139, 69, 19},
- {255, 48, 48},
- {238, 44, 44},
- {205, 38, 38},
- {139, 26, 26},
- {255, 64, 64},
- {238, 59, 59},
- {205, 51, 51},
- {139, 35, 35},
- {255, 140, 105},
- {238, 130, 98},
- {205, 112, 84},
- {139, 76, 57},
- {255, 160, 122},
- {238, 149, 114},
- {205, 129, 98},
- {139, 87, 66},
- {255, 165, 0},
- {238, 154, 0},
- {205, 133, 0},
- {139, 90, 0},
- {255, 127, 0},
- {238, 118, 0},
- {205, 102, 0},
- {139, 69, 0},
- {255, 114, 86},
- {238, 106, 80},
- {205, 91, 69},
- {139, 62, 47},
- {255, 99, 71},
- {238, 92, 66},
- {205, 79, 57},
- {139, 54, 38},
- {255, 69, 0},
- {238, 64, 0},
- {205, 55, 0},
- {139, 37, 0},
- {255, 0, 0},
- {238, 0, 0},
- {205, 0, 0},
- {139, 0, 0},
- {255, 20, 147},
- {238, 18, 137},
- {205, 16, 118},
- {139, 10, 80},
- {255, 110, 180},
- {238, 106, 167},
- {205, 96, 144},
- {139, 58, 98},
- {255, 181, 197},
- {238, 169, 184},
- {205, 145, 158},
- {139, 99, 108},
- {255, 174, 185},
- {238, 162, 173},
- {205, 140, 149},
- {139, 95, 101},
- {255, 130, 171},
- {238, 121, 159},
- {205, 104, 137},
- {139, 71, 93},
- {255, 52, 179},
- {238, 48, 167},
- {205, 41, 144},
- {139, 28, 98},
- {255, 62, 150},
- {238, 58, 140},
- {205, 50, 120},
- {139, 34, 82},
- {255, 0, 255},
- {238, 0, 238},
- {205, 0, 205},
- {139, 0, 139},
- {255, 131, 250},
- {238, 122, 233},
- {205, 105, 201},
- {139, 71, 137},
- {255, 187, 255},
- {238, 174, 238},
- {205, 150, 205},
- {139, 102, 139},
- {224, 102, 255},
- {209, 95, 238},
- {180, 82, 205},
- {122, 55, 139},
- {191, 62, 255},
- {178, 58, 238},
- {154, 50, 205},
- {104, 34, 139},
- {155, 48, 255},
- {145, 44, 238},
- {125, 38, 205},
- { 85, 26, 139},
- {171, 130, 255},
- {159, 121, 238},
- {137, 104, 205},
- { 93, 71, 139},
- {255, 225, 255},
- {238, 210, 238},
- {205, 181, 205},
- {139, 123, 139},
- { 0, 0, 0},
- { 0, 0, 0},
- { 3, 3, 3},
- { 3, 3, 3},
- { 5, 5, 5},
- { 5, 5, 5},
- { 8, 8, 8},
- { 8, 8, 8},
- { 10, 10, 10},
- { 10, 10, 10},
- { 13, 13, 13},
- { 13, 13, 13},
- { 15, 15, 15},
- { 15, 15, 15},
- { 18, 18, 18},
- { 18, 18, 18},
- { 20, 20, 20},
- { 20, 20, 20},
- { 23, 23, 23},
- { 23, 23, 23},
- { 26, 26, 26},
- { 26, 26, 26},
- { 28, 28, 28},
- { 28, 28, 28},
- { 31, 31, 31},
- { 31, 31, 31},
- { 33, 33, 33},
- { 33, 33, 33},
- { 36, 36, 36},
- { 36, 36, 36},
- { 38, 38, 38},
- { 38, 38, 38},
- { 41, 41, 41},
- { 41, 41, 41},
- { 43, 43, 43},
- { 43, 43, 43},
- { 46, 46, 46},
- { 46, 46, 46},
- { 48, 48, 48},
- { 48, 48, 48},
- { 51, 51, 51},
- { 51, 51, 51},
- { 54, 54, 54},
- { 54, 54, 54},
- { 56, 56, 56},
- { 56, 56, 56},
- { 59, 59, 59},
- { 59, 59, 59},
- { 61, 61, 61},
- { 61, 61, 61},
- { 64, 64, 64},
- { 64, 64, 64},
- { 66, 66, 66},
- { 66, 66, 66},
- { 69, 69, 69},
- { 69, 69, 69},
- { 71, 71, 71},
- { 71, 71, 71},
- { 74, 74, 74},
- { 74, 74, 74},
- { 77, 77, 77},
- { 77, 77, 77},
- { 79, 79, 79},
- { 79, 79, 79},
- { 82, 82, 82},
- { 82, 82, 82},
- { 84, 84, 84},
- { 84, 84, 84},
- { 87, 87, 87},
- { 87, 87, 87},
- { 89, 89, 89},
- { 89, 89, 89},
- { 92, 92, 92},
- { 92, 92, 92},
- { 94, 94, 94},
- { 94, 94, 94},
- { 97, 97, 97},
- { 97, 97, 97},
- { 99, 99, 99},
- { 99, 99, 99},
- {102, 102, 102},
- {102, 102, 102},
- {105, 105, 105},
- {105, 105, 105},
- {107, 107, 107},
- {107, 107, 107},
- {110, 110, 110},
- {110, 110, 110},
- {112, 112, 112},
- {112, 112, 112},
- {115, 115, 115},
- {115, 115, 115},
- {117, 117, 117},
- {117, 117, 117},
- {120, 120, 120},
- {120, 120, 120},
- {122, 122, 122},
- {122, 122, 122},
- {125, 125, 125},
- {125, 125, 125},
- {127, 127, 127},
- {127, 127, 127},
- {130, 130, 130},
- {130, 130, 130},
- {133, 133, 133},
- {133, 133, 133},
- {135, 135, 135},
- {135, 135, 135},
- {138, 138, 138},
- {138, 138, 138},
- {140, 140, 140},
- {140, 140, 140},
- {143, 143, 143},
- {143, 143, 143},
- {145, 145, 145},
- {145, 145, 145},
- {148, 148, 148},
- {148, 148, 148},
- {150, 150, 150},
- {150, 150, 150},
- {153, 153, 153},
- {153, 153, 153},
- {156, 156, 156},
- {156, 156, 156},
- {158, 158, 158},
- {158, 158, 158},
- {161, 161, 161},
- {161, 161, 161},
- {163, 163, 163},
- {163, 163, 163},
- {166, 166, 166},
- {166, 166, 166},
- {168, 168, 168},
- {168, 168, 168},
- {171, 171, 171},
- {171, 171, 171},
- {173, 173, 173},
- {173, 173, 173},
- {176, 176, 176},
- {176, 176, 176},
- {179, 179, 179},
- {179, 179, 179},
- {181, 181, 181},
- {181, 181, 181},
- {184, 184, 184},
- {184, 184, 184},
- {186, 186, 186},
- {186, 186, 186},
- {189, 189, 189},
- {189, 189, 189},
- {191, 191, 191},
- {191, 191, 191},
- {194, 194, 194},
- {194, 194, 194},
- {196, 196, 196},
- {196, 196, 196},
- {199, 199, 199},
- {199, 199, 199},
- {201, 201, 201},
- {201, 201, 201},
- {204, 204, 204},
- {204, 204, 204},
- {207, 207, 207},
- {207, 207, 207},
- {209, 209, 209},
- {209, 209, 209},
- {212, 212, 212},
- {212, 212, 212},
- {214, 214, 214},
- {214, 214, 214},
- {217, 217, 217},
- {217, 217, 217},
- {219, 219, 219},
- {219, 219, 219},
- {222, 222, 222},
- {222, 222, 222},
- {224, 224, 224},
- {224, 224, 224},
- {227, 227, 227},
- {227, 227, 227},
- {229, 229, 229},
- {229, 229, 229},
- {232, 232, 232},
- {232, 232, 232},
- {235, 235, 235},
- {235, 235, 235},
- {237, 237, 237},
- {237, 237, 237},
- {240, 240, 240},
- {240, 240, 240},
- {242, 242, 242},
- {242, 242, 242},
- {245, 245, 245},
- {245, 245, 245},
- {247, 247, 247},
- {247, 247, 247},
- {250, 250, 250},
- {250, 250, 250},
- {252, 252, 252},
- {252, 252, 252},
- {255, 255, 255},
- {255, 255, 255},
- {169, 169, 169},
- {169, 169, 169},
- {169, 169, 169},
- {169, 169, 169},
- {0, 0, 139},
- {0, 0, 139},
- {0, 139, 139},
- {0, 139, 139},
- {139, 0, 139},
- {139, 0, 139},
- {139, 0, 0},
- {139, 0, 0},
- {144, 238, 144},
- {144, 238, 144}
- };
-
- static String rgbnames[] = {
- "snow",
- "ghost white",
- "GhostWhite",
- "white smoke",
- "WhiteSmoke",
- "gainsboro",
- "floral white",
- "FloralWhite",
- "old lace",
- "OldLace",
- "linen",
- "antique white",
- "AntiqueWhite",
- "papaya whip",
- "PapayaWhip",
- "blanched almond",
- "BlanchedAlmond",
- "bisque",
- "peach puff",
- "PeachPuff",
- "navajo white",
- "NavajoWhite",
- "moccasin",
- "cornsilk",
- "ivory",
- "lemon chiffon",
- "LemonChiffon",
- "seashell",
- "honeydew",
- "mint cream",
- "MintCream",
- "azure",
- "alice blue",
- "AliceBlue",
- "lavender",
- "lavender blush",
- "LavenderBlush",
- "misty rose",
- "MistyRose",
- "white",
- "black",
- "dark slate gray",
- "DarkSlateGray",
- "dark slate grey",
- "DarkSlateGrey",
- "dim gray",
- "DimGray",
- "dim grey",
- "DimGrey",
- "slate gray",
- "SlateGray",
- "slate grey",
- "SlateGrey",
- "light slate gray",
- "LightSlateGray",
- "light slate grey",
- "LightSlateGrey",
- "gray",
- "grey",
- "light grey",
- "LightGrey",
- "light gray",
- "LightGray",
- "midnight blue",
- "MidnightBlue",
- "navy",
- "navy blue",
- "NavyBlue",
- "cornflower blue",
- "CornflowerBlue",
- "dark slate blue",
- "DarkSlateBlue",
- "slate blue",
- "SlateBlue",
- "medium slate blue",
- "MediumSlateBlue",
- "light slate blue",
- "LightSlateBlue",
- "medium blue",
- "MediumBlue",
- "royal blue",
- "RoyalBlue",
- "blue",
- "dodger blue",
- "DodgerBlue",
- "deep sky blue",
- "DeepSkyBlue",
- "sky blue",
- "SkyBlue",
- "light sky blue",
- "LightSkyBlue",
- "steel blue",
- "SteelBlue",
- "light steel blue",
- "LightSteelBlue",
- "light blue",
- "LightBlue",
- "powder blue",
- "PowderBlue",
- "pale turquoise",
- "PaleTurquoise",
- "dark turquoise",
- "DarkTurquoise",
- "medium turquoise",
- "MediumTurquoise",
- "turquoise",
- "cyan",
- "light cyan",
- "LightCyan",
- "cadet blue",
- "CadetBlue",
- "medium aquamarine",
- "MediumAquamarine",
- "aquamarine",
- "dark green",
- "DarkGreen",
- "dark olive green",
- "DarkOliveGreen",
- "dark sea green",
- "DarkSeaGreen",
- "sea green",
- "SeaGreen",
- "medium sea green",
- "MediumSeaGreen",
- "light sea green",
- "LightSeaGreen",
- "pale green",
- "PaleGreen",
- "spring green",
- "SpringGreen",
- "lawn green",
- "LawnGreen",
- "green",
- "chartreuse",
- "medium spring green",
- "MediumSpringGreen",
- "green yellow",
- "GreenYellow",
- "lime green",
- "LimeGreen",
- "yellow green",
- "YellowGreen",
- "forest green",
- "ForestGreen",
- "olive drab",
- "OliveDrab",
- "dark khaki",
- "DarkKhaki",
- "khaki",
- "pale goldenrod",
- "PaleGoldenrod",
- "light goldenrod yellow",
- "LightGoldenrodYellow",
- "light yellow",
- "LightYellow",
- "yellow",
- "gold",
- "light goldenrod",
- "LightGoldenrod",
- "goldenrod",
- "dark goldenrod",
- "DarkGoldenrod",
- "rosy brown",
- "RosyBrown",
- "indian red",
- "IndianRed",
- "saddle brown",
- "SaddleBrown",
- "sienna",
- "peru",
- "burlywood",
- "beige",
- "wheat",
- "sandy brown",
- "SandyBrown",
- "tan",
- "chocolate",
- "firebrick",
- "brown",
- "dark salmon",
- "DarkSalmon",
- "salmon",
- "light salmon",
- "LightSalmon",
- "orange",
- "dark orange",
- "DarkOrange",
- "coral",
- "light coral",
- "LightCoral",
- "tomato",
- "orange red",
- "OrangeRed",
- "red",
- "hot pink",
- "HotPink",
- "deep pink",
- "DeepPink",
- "pink",
- "light pink",
- "LightPink",
- "pale violet red",
- "PaleVioletRed",
- "maroon",
- "medium violet red",
- "MediumVioletRed",
- "violet red",
- "VioletRed",
- "magenta",
- "violet",
- "plum",
- "orchid",
- "medium orchid",
- "MediumOrchid",
- "dark orchid",
- "DarkOrchid",
- "dark violet",
- "DarkViolet",
- "blue violet",
- "BlueViolet",
- "purple",
- "medium purple",
- "MediumPurple",
- "thistle",
- "snow1",
- "snow2",
- "snow3",
- "snow4",
- "seashell1",
- "seashell2",
- "seashell3",
- "seashell4",
- "AntiqueWhite1",
- "AntiqueWhite2",
- "AntiqueWhite3",
- "AntiqueWhite4",
- "bisque1",
- "bisque2",
- "bisque3",
- "bisque4",
- "PeachPuff1",
- "PeachPuff2",
- "PeachPuff3",
- "PeachPuff4",
- "NavajoWhite1",
- "NavajoWhite2",
- "NavajoWhite3",
- "NavajoWhite4",
- "LemonChiffon1",
- "LemonChiffon2",
- "LemonChiffon3",
- "LemonChiffon4",
- "cornsilk1",
- "cornsilk2",
- "cornsilk3",
- "cornsilk4",
- "ivory1",
- "ivory2",
- "ivory3",
- "ivory4",
- "honeydew1",
- "honeydew2",
- "honeydew3",
- "honeydew4",
- "LavenderBlush1",
- "LavenderBlush2",
- "LavenderBlush3",
- "LavenderBlush4",
- "MistyRose1",
- "MistyRose2",
- "MistyRose3",
- "MistyRose4",
- "azure1",
- "azure2",
- "azure3",
- "azure4",
- "SlateBlue1",
- "SlateBlue2",
- "SlateBlue3",
- "SlateBlue4",
- "RoyalBlue1",
- "RoyalBlue2",
- "RoyalBlue3",
- "RoyalBlue4",
- "blue1",
- "blue2",
- "blue3",
- "blue4",
- "DodgerBlue1",
- "DodgerBlue2",
- "DodgerBlue3",
- "DodgerBlue4",
- "SteelBlue1",
- "SteelBlue2",
- "SteelBlue3",
- "SteelBlue4",
- "DeepSkyBlue1",
- "DeepSkyBlue2",
- "DeepSkyBlue3",
- "DeepSkyBlue4",
- "SkyBlue1",
- "SkyBlue2",
- "SkyBlue3",
- "SkyBlue4",
- "LightSkyBlue1",
- "LightSkyBlue2",
- "LightSkyBlue3",
- "LightSkyBlue4",
- "SlateGray1",
- "SlateGray2",
- "SlateGray3",
- "SlateGray4",
- "LightSteelBlue1",
- "LightSteelBlue2",
- "LightSteelBlue3",
- "LightSteelBlue4",
- "LightBlue1",
- "LightBlue2",
- "LightBlue3",
- "LightBlue4",
- "LightCyan1",
- "LightCyan2",
- "LightCyan3",
- "LightCyan4",
- "PaleTurquoise1",
- "PaleTurquoise2",
- "PaleTurquoise3",
- "PaleTurquoise4",
- "CadetBlue1",
- "CadetBlue2",
- "CadetBlue3",
- "CadetBlue4",
- "turquoise1",
- "turquoise2",
- "turquoise3",
- "turquoise4",
- "cyan1",
- "cyan2",
- "cyan3",
- "cyan4",
- "DarkSlateGray1",
- "DarkSlateGray2",
- "DarkSlateGray3",
- "DarkSlateGray4",
- "aquamarine1",
- "aquamarine2",
- "aquamarine3",
- "aquamarine4",
- "DarkSeaGreen1",
- "DarkSeaGreen2",
- "DarkSeaGreen3",
- "DarkSeaGreen4",
- "SeaGreen1",
- "SeaGreen2",
- "SeaGreen3",
- "SeaGreen4",
- "PaleGreen1",
- "PaleGreen2",
- "PaleGreen3",
- "PaleGreen4",
- "SpringGreen1",
- "SpringGreen2",
- "SpringGreen3",
- "SpringGreen4",
- "green1",
- "green2",
- "green3",
- "green4",
- "chartreuse1",
- "chartreuse2",
- "chartreuse3",
- "chartreuse4",
- "OliveDrab1",
- "OliveDrab2",
- "OliveDrab3",
- "OliveDrab4",
- "DarkOliveGreen1",
- "DarkOliveGreen2",
- "DarkOliveGreen3",
- "DarkOliveGreen4",
- "khaki1",
- "khaki2",
- "khaki3",
- "khaki4",
- "LightGoldenrod1",
- "LightGoldenrod2",
- "LightGoldenrod3",
- "LightGoldenrod4",
- "LightYellow1",
- "LightYellow2",
- "LightYellow3",
- "LightYellow4",
- "yellow1",
- "yellow2",
- "yellow3",
- "yellow4",
- "gold1",
- "gold2",
- "gold3",
- "gold4",
- "goldenrod1",
- "goldenrod2",
- "goldenrod3",
- "goldenrod4",
- "DarkGoldenrod1",
- "DarkGoldenrod2",
- "DarkGoldenrod3",
- "DarkGoldenrod4",
- "RosyBrown1",
- "RosyBrown2",
- "RosyBrown3",
- "RosyBrown4",
- "IndianRed1",
- "IndianRed2",
- "IndianRed3",
- "IndianRed4",
- "sienna1",
- "sienna2",
- "sienna3",
- "sienna4",
- "burlywood1",
- "burlywood2",
- "burlywood3",
- "burlywood4",
- "wheat1",
- "wheat2",
- "wheat3",
- "wheat4",
- "tan1",
- "tan2",
- "tan3",
- "tan4",
- "chocolate1",
- "chocolate2",
- "chocolate3",
- "chocolate4",
- "firebrick1",
- "firebrick2",
- "firebrick3",
- "firebrick4",
- "brown1",
- "brown2",
- "brown3",
- "brown4",
- "salmon1",
- "salmon2",
- "salmon3",
- "salmon4",
- "LightSalmon1",
- "LightSalmon2",
- "LightSalmon3",
- "LightSalmon4",
- "orange1",
- "orange2",
- "orange3",
- "orange4",
- "DarkOrange1",
- "DarkOrange2",
- "DarkOrange3",
- "DarkOrange4",
- "coral1",
- "coral2",
- "coral3",
- "coral4",
- "tomato1",
- "tomato2",
- "tomato3",
- "tomato4",
- "OrangeRed1",
- "OrangeRed2",
- "OrangeRed3",
- "OrangeRed4",
- "red1",
- "red2",
- "red3",
- "red4",
- "DeepPink1",
- "DeepPink2",
- "DeepPink3",
- "DeepPink4",
- "HotPink1",
- "HotPink2",
- "HotPink3",
- "HotPink4",
- "pink1",
- "pink2",
- "pink3",
- "pink4",
- "LightPink1",
- "LightPink2",
- "LightPink3",
- "LightPink4",
- "PaleVioletRed1",
- "PaleVioletRed2",
- "PaleVioletRed3",
- "PaleVioletRed4",
- "maroon1",
- "maroon2",
- "maroon3",
- "maroon4",
- "VioletRed1",
- "VioletRed2",
- "VioletRed3",
- "VioletRed4",
- "magenta1",
- "magenta2",
- "magenta3",
- "magenta4",
- "orchid1",
- "orchid2",
- "orchid3",
- "orchid4",
- "plum1",
- "plum2",
- "plum3",
- "plum4",
- "MediumOrchid1",
- "MediumOrchid2",
- "MediumOrchid3",
- "MediumOrchid4",
- "DarkOrchid1",
- "DarkOrchid2",
- "DarkOrchid3",
- "DarkOrchid4",
- "purple1",
- "purple2",
- "purple3",
- "purple4",
- "MediumPurple1",
- "MediumPurple2",
- "MediumPurple3",
- "MediumPurple4",
- "thistle1",
- "thistle2",
- "thistle3",
- "thistle4",
- "gray0",
- "grey0",
- "gray1",
- "grey1",
- "gray2",
- "grey2",
- "gray3",
- "grey3",
- "gray4",
- "grey4",
- "gray5",
- "grey5",
- "gray6",
- "grey6",
- "gray7",
- "grey7",
- "gray8",
- "grey8",
- "gray9",
- "grey9",
- "gray10",
- "grey10",
- "gray11",
- "grey11",
- "gray12",
- "grey12",
- "gray13",
- "grey13",
- "gray14",
- "grey14",
- "gray15",
- "grey15",
- "gray16",
- "grey16",
- "gray17",
- "grey17",
- "gray18",
- "grey18",
- "gray19",
- "grey19",
- "gray20",
- "grey20",
- "gray21",
- "grey21",
- "gray22",
- "grey22",
- "gray23",
- "grey23",
- "gray24",
- "grey24",
- "gray25",
- "grey25",
- "gray26",
- "grey26",
- "gray27",
- "grey27",
- "gray28",
- "grey28",
- "gray29",
- "grey29",
- "gray30",
- "grey30",
- "gray31",
- "grey31",
- "gray32",
- "grey32",
- "gray33",
- "grey33",
- "gray34",
- "grey34",
- "gray35",
- "grey35",
- "gray36",
- "grey36",
- "gray37",
- "grey37",
- "gray38",
- "grey38",
- "gray39",
- "grey39",
- "gray40",
- "grey40",
- "gray41",
- "grey41",
- "gray42",
- "grey42",
- "gray43",
- "grey43",
- "gray44",
- "grey44",
- "gray45",
- "grey45",
- "gray46",
- "grey46",
- "gray47",
- "grey47",
- "gray48",
- "grey48",
- "gray49",
- "grey49",
- "gray50",
- "grey50",
- "gray51",
- "grey51",
- "gray52",
- "grey52",
- "gray53",
- "grey53",
- "gray54",
- "grey54",
- "gray55",
- "grey55",
- "gray56",
- "grey56",
- "gray57",
- "grey57",
- "gray58",
- "grey58",
- "gray59",
- "grey59",
- "gray60",
- "grey60",
- "gray61",
- "grey61",
- "gray62",
- "grey62",
- "gray63",
- "grey63",
- "gray64",
- "grey64",
- "gray65",
- "grey65",
- "gray66",
- "grey66",
- "gray67",
- "grey67",
- "gray68",
- "grey68",
- "gray69",
- "grey69",
- "gray70",
- "grey70",
- "gray71",
- "grey71",
- "gray72",
- "grey72",
- "gray73",
- "grey73",
- "gray74",
- "grey74",
- "gray75",
- "grey75",
- "gray76",
- "grey76",
- "gray77",
- "grey77",
- "gray78",
- "grey78",
- "gray79",
- "grey79",
- "gray80",
- "grey80",
- "gray81",
- "grey81",
- "gray82",
- "grey82",
- "gray83",
- "grey83",
- "gray84",
- "grey84",
- "gray85",
- "grey85",
- "gray86",
- "grey86",
- "gray87",
- "grey87",
- "gray88",
- "grey88",
- "gray89",
- "grey89",
- "gray90",
- "grey90",
- "gray91",
- "grey91",
- "gray92",
- "grey92",
- "gray93",
- "grey93",
- "gray94",
- "grey94",
- "gray95",
- "grey95",
- "gray96",
- "grey96",
- "gray97",
- "grey97",
- "gray98",
- "grey98",
- "gray99",
- "grey99",
- "gray100",
- "grey100",
- "dark grey",
- "DarkGrey",
- "dark gray",
- "DarkGray",
- "dark blue",
- "DarkBlue",
- "dark cyan",
- "DarkCyan",
- "dark magenta",
- "DarkMagenta",
- "dark red",
- "DarkRed",
- "light"
- };
-
- // rgbents, rgbnames
- public static boolean debugflag=false;
-
- static void debug(String msg)
- {
- if(debugflag)
- System.out.println(msg);
- }
-
- // look up string name of color. return int[3] of rgb, or
- // null if color not found
- public static int[] NameToRGB3(String str)
- {
- int rsize=rgbnames.length;
-
- for(int count=0;count<rsize; count++)
- {
- if(str.equalsIgnoreCase(rgbnames[count]))
- {
- return rgbents[count];
- }
- }
-
- return null;
- }
-
- // This returns an int. If the int were represented as
- // 0xffffffff, then the format would match data as
- // 0x00rrggbb
- //BUT.. returns 0xffffffff if color not found
- public static int NameToRGB(String str)
- {
- int rsize=rgbnames.length;
-
- if(str.charAt(0)=='#'){
- // Have to deal with rrggbb, OR rrrrggggbbbb
- // Erm.. except this only deals with
- // #rrggbb, it looks like... ?!!
- String Substr=str.substring(1,7);
- int rgb=Integer.parseInt(Substr,16);
- rgb|=0xff000000;
- return rgb;
- }
-
- for(int count=0;count<rsize; count++)
- {
- if(str.equalsIgnoreCase(rgbnames[count]))
- {
- int ret;
- ret = 0xff000000 |
- (rgbents[count][0]<<16) |
- (rgbents[count][1]<<8) |
- rgbents[count][2];
-
- return ret;
- }
- }
- if(!str.equalsIgnoreCase("None"))
- debug("NameToRGB: Could not find match for color "+str);
- return 0x00000000;
- }
-
- public static String RGB3ToName(int val[])
- {
- if(val.length != 3)
- return null;
-
- int rsize=rgbnames.length;
- for(int count=0; count<rsize; count++)
- {
- if(val[0] ==rgbents[count][0])
- if(val[1] ==rgbents[count][1])
- if(val[2] ==rgbents[count][2])
- return rgbnames[count];
- }
-
- return null;
- }
-
-
- /************************************************************
- * This part implements reading in xpm data, and doing something
- * USEFUL with it. This is the only public routine that people
- * will probably care about.
- * xpm is possibly copyright/trademarked by Arnaud LE HORS,
- * BULL Research, France. lehors@sophia.inria.fr
- ************************************************************/
-
- // we dont care/try to deal with mono conversion
- public static Image XpmToImage(String xpm) {
- debug(xpm);
- /* general rules I'm going to follow:
- *
- * skip all (* xxxx*) but possibly insist on initial
- * (* XPM *)
- * skip static char .....
- * read "<width> <height> <colors> <charsperpixel>" <hotx,hoty>?
- * Then in main reading;
- * take c FIRST. fall back to s. fall back to g. fall back to g4.
- * fall back to m.
- *
- *
- */
-
- if (xpm == null) {
- debug("XpmToImage : Provided xpm is null!");
- return null;
- }
-
- int parse, parseend;
- int width, height,colcount,charsperpixel;
- Hashtable colorlookup = new Hashtable();
- // add default val for "transparent"
- // the initial 0xff should mean it should not show up
-
-
- if(! xpm.startsWith("/* XPM */"))
- {
- debug("xpm data doesn't start with XPM magic. exit");
- debug(xpm.substring(0,10));
- return null;
- }
-
- /*********************************************
- * Do initial width/size,etc parsing
- **********************************************/
- parse = xpm.indexOf('"', 9);
- parse+=1;
-
- parseend=xpm.indexOf(' ', parse);
- width=Integer.parseInt(xpm.substring(parse,parseend));
-
- parse=parseend+1;
- parseend=xpm.indexOf(' ', parse);
- height=Integer.parseInt(xpm.substring(parse,parseend));
-
- parse=parseend+1;
- parseend=xpm.indexOf(' ', parse);
- colcount=Integer.parseInt(xpm.substring(parse,parseend));
-
- parse=parseend+1;
- parseend=xpm.indexOf('"',parse);
- if(parseend==-1){
- return null;
- }
- charsperpixel=Integer.parseInt(xpm.substring(parse,parseend));
-
- debug("width="+width+",height="+height+
- ",colcount="+colcount+",cpp="+charsperpixel);
-
-
-
- if(charsperpixel==1){
- colorlookup.put(new Integer(' '),
- new Integer(0x00000000));
- } else {
- int tmpchar=(' ' &0xff) <<8;
- tmpchar |= (' '&0xff);
- colorlookup.put(new Integer((tmpchar&0xffff)),
- new Integer(0x00000000));
-
- }
-
- /**************************************************
- * Now do parsing of color naming/indexing
- **************************************************/
- Image image;
- int imageb[];
-
- imageb = new int[width * height];
- int bytecount=0; // counting bytes into image array
-
- parse=xpm.indexOf('"', parseend+1)+1;
-
- while(colcount-->0)
- {
- if(parse==0){
- debug("ERROR: expecting color def");
- return null;
- }
-
- Integer colref;
- Integer rgb;
- parseend=xpm.indexOf('"', parse+1);
-
- String colorname =
- getColorName(xpm.substring(parse, parseend));
-
- if(debugflag){
- debug("colorname on line is "+colorname);
- debug("now parsing "+
- xpm.substring(parse,parse+charsperpixel));
-
- }
-
- if(charsperpixel==1){
- colref=new Integer(xpm.charAt(parse++));
- } else{
- int tmpchar=xpm.charAt(parse++);
- tmpchar = (tmpchar&0xff)<<8;
- tmpchar |= xpm.charAt(parse++) & 0xff;
-
- if(debugflag){
- debug("two charsperpixel: substre==" +
- xpm.substring(parse-2,parse)+
- " which generates char "+
- (tmpchar&0xffff));
- }
-
- colref=new Integer(tmpchar&0xffff);
- }
-
-
-
- rgb = new Integer(NameToRGB(colorname));
-
- if(debugflag){
- debug("Color num parsed for \"" +colorname+"\"("+
- Integer.toHexString(colref.intValue())+
- ") is #"+
- Integer.toHexString(rgb.intValue()) );
- }
-
-
- colorlookup.put(colref, rgb);
- parse=xpm.indexOf('"', parseend+1)+1;
-
-
- }
-
- debug("Done with color defs");
-
- /****************************************************
- * Finally, now that we have all the data,
- * fully interpret the actual image
- ***************************************************/
-
- parse = xpm.indexOf("\n\"", parseend+1);
- if(parse==-1)
- {
- debug("ERROR; incomplete Xpm data");
- return null;
- }
- parse+=1;
-
- debug("Xpm starting image parse");
- while(xpm.charAt(parse) =='"')
- {
- parse++;
- parseend = xpm.indexOf('"', parse);
-
- debug("Xpm; parsing \""+xpm.substring(parse, parseend)+"\"");
-
- for(int pix=parse; pix<parseend;pix++)
- {
- int tmpchar;
- Integer pixchar;
- Integer pixval;
-
- if(charsperpixel==1){
- tmpchar=xpm.charAt(pix);
- } else{
- tmpchar=xpm.charAt(pix++);
- tmpchar = (tmpchar&0xff)<<8;
- tmpchar |= xpm.charAt(pix) & 0xff;
-
- }
- pixchar=new Integer(tmpchar&0xffff);
-
-
- pixval = (Integer)colorlookup.get(pixchar);
- if(pixval==null){
- if(debugflag){
- debug("HEY MORON: no value stored "+
- " for int "+
- Integer.toHexString(tmpchar)+
- ", char substring "+
- xpm.substring(pix-charsperpixel,
- pix));
- }
-
- }
- imageb[bytecount++]=pixval.intValue();
- }
-
- parse=xpm.indexOf('"', parseend+1);
- if(parse==-1)
- break;
- }
-
- if(bytecount<(width * height -1))
- {
- debug("Warning.. pixmap truncated!");
- }
-
- //printbytes(imageb);
- image=BytesToImage(imageb, width, height);
-
- return image;
-
-
- }
-
- static Image BytesToImage(int bytes[], int width, int height)
- {
- Image myimage;
- Toolkit tk = Toolkit.getDefaultToolkit();
- myimage=tk.createImage(new MemoryImageSource(width, height, bytes, 0, width));
-
- return myimage;
-
- }
-
- // debug routine
- static void printbytes(int b[])
- {
- int index;
- for(index=0; index<b.length; index++)
- {
- System.out.print(" "+Integer.toHexString(b[index]));
- }
- System.out.println(" ");
- }
-
- // This just parses out the string that defines the colorname
- // we do NOT interpret. we just split it out from the rest of
- // the line. Call NameToRGB() on the result.
- // We make the assumption that our string does NOT
- // have a trailing '"'
- static String getColorName(String xpmline)
- {
- //debug("getColorName passed: "+xpmline);
-
- int parsemid, parsemidend;
- parsemid = xpmline.indexOf("\tc");
- if(parsemid <=0)
- parsemid = xpmline.indexOf(" c");
- if(parsemid <=0)
- {
- debug("Xpm: oops. no c found, in: "+xpmline);
- return null;
- }
- parsemid+=3;
- parsemidend=xpmline.indexOf('\t',parsemid);
- if(parsemidend==-1)
- parsemidend=xpmline.length();
-
- return xpmline.substring(parsemid, parsemidend);
-
-
- }
-
-
-
-}
+++ /dev/null
-/* 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 30.08.2005
- * @author Andreas Prlic
- *
- */
-
-
-package org.biojava.dasobert.dasregistry ;
-
-//import org.biojava.services.das.*;
-//xml stuff
-import org.xml.sax.*;
-import javax.xml.parsers.*;
-import java.util.ArrayList ;
-import java.util.Map ;
-import java.util.List ;
-import java.io.InputStream ;
-
-import java.net.URL ;
-
-
-//for validation add dependency on SPICE... :-/
-import java.net.HttpURLConnection;
-import org.biojava.dasobert.das.*;
-import org.biojava.dasobert.das.DAS_Entry_Points_Handler;
-import org.biojava.dasobert.das.DAS_Types_Handler;
-
-
-
-public class Das1Validator {
-
- public final static String[] DAS_CAPABILITIES = {
- "sequence",
- "structure",
- "alignment",
- "types",
- "features",
- "entry_points",
- "dna",
- "stylesheet"
- } ;
-
-
- //private final static String DATASOURCE_NAME = "jdbc/mysql";
- String validationMessage;
-
- public boolean VALIDATION = false; // DTD validation ..
-
- List all_capabilities;
- public Das1Validator() {
- validationMessage = "" ;
- all_capabilities = new ArrayList();
- for ( int i = 0 ; i< DAS_CAPABILITIES.length; i++ ) {
- all_capabilities.add(DAS_CAPABILITIES[i]);
- }
- }
-
- /** return which errors have been produced during validation... */
- public String getValidationMessage(){
- return validationMessage;
- }
-
-
-
- public String[] validate(String url, DasCoordinateSystem[] coords, String[] capabilities){
- validationMessage="";
- // a list containing all valid DAS requests ...
-
- List lst =new ArrayList();
-
- char lastChar = url.charAt(url.length()-1);
- if ( lastChar != '/')
- url += "/";
-
- validateURL(url);
-
-
- // test if all specified capabilities really work
- for ( int c = 0 ; c < capabilities.length ; c++) {
- String capability = capabilities[c];
- if ( all_capabilities.contains(capability)) {
- //System.out.println("testing " + capability);
-
- if ( capability.equals("sequence")) {
- for ( int i=0;i< coords.length;i++){
- DasCoordinateSystem ds =coords[i];
- String testcode = ds.getTestCode();
-
- // do a DAS sequence retreive
- if ( validateSequence(url,testcode) )
- lst.add(capability);
-
- }
-
- }
- else if ( capability.equals("structure")) {
-
- }
- else if ( capability.equals("features")){
- for ( int i=0;i< coords.length;i++){
- DasCoordinateSystem ds =coords[i];
- String testcode = ds.getTestCode();
-
-
- if ( validateFeatures(url,testcode))
- lst.add(capability);
-
- }
- }
- else if ( capability.equals("alignment")){
-
- } else if ( capability.equals("types")){
- if ( validateTypes(url))
- lst.add(capability);
- //else
- // error =true ;
-
- } else if ( capability.equals("entry_points")) {
- if ( validateEntry_Points(url))
- lst.add(capability);
- //else
- // error = true;
- } else if ( capability.equals("stylesheet")) {
- if ( validateStylesheet(url))
- lst.add(capability);
- //} else
- // error = true;
- } else if ( capability.equals("dna")){
- for ( int i=0;i< coords.length;i++){
- DasCoordinateSystem ds =coords[i];
- String testcode = ds.getTestCode();
-
- if ( validateDNA(url,testcode))
- lst.add(capability);
- }
- }
- else {
- validationMessage += "<br/>---<br/> test of capability " + capability + " not implemented,yet.";
- lst.add(capability);
- }
- }
- }
-
- //if ( error) {
- // System.out.println("DasValidator: "+ validationMessage);
- //}
- //this.validationMessage = validationMessage;
- return (String[])lst.toArray(new String[lst.size()]);
-
- }
-
- /** make sure the URL matches the DAS spec
- returns true if URL looks o.k...
- */
- public boolean validateURL(String url) {
- String[] spl = url.split("/");
-
- //for (int i = 0 ; i < spl.length ; i++ ) {
- // System.out.println("spl["+i+"]:"+spl[i]);
- //}
-
- if (spl == null ) {
- validationMessage +="---<br/> URL is not well formed" ;
- return false;
- }
-
- if ( spl.length <= 4) {
- validationMessage +="---<br/> URL is not well formed <br/>" +
- "should be http[s]://site.specific.prefix/das/dassourcename/";
- return false;
- }
-
- //System.out.println("split 0 : " + spl[0]);
- if ( ! (spl[0].equals("http:"))) {
- if ( ! ( spl[0].equals("https:"))){
- validationMessage +="---<br/> URL is not well formed (does not start with http:// or https://)" ;
- return false;
- }
-
- }
-
- String dastxt = spl[spl.length-2] ;
- //System.out.println("should be >das< " + dastxt);
- if ( ! dastxt.equals("das")) {
- String suggestion = spl[0] + "//" ;
- String wrong = spl[0] + "//" ;
- for (int i = 2 ; i < spl.length -2 ; i++ ) {
- suggestion += spl[i] + "/" ;
- wrong += spl[i] + "/" ;
- }
- suggestion +="<b>das</b>/"+spl[spl.length-1];
- wrong +="<b>" + spl[spl.length-2] + "</b>/"+spl[spl.length-1];
- validationMessage +="--<br/> the URL does not match the DAS spec. it should be <br/>"+
- " http[s]://site.specific.prefix/das/dassourcename/ <br/>" +
- " found >" + dastxt +" < instead of >das< <br/>" +
- " suggested url: " + suggestion + "<br/>"+
- " instead of: " + wrong ;
- return false;
- }
- return true;
-
- }
-
- private boolean validateDNA(String url, String testcode){
- try {
- String cmd = url+"dna?segment="+testcode;
- URL strurl = new URL(cmd);
- InputStream dasInStream = open(strurl);
-
- XMLReader xmlreader = getXMLReader();
-
- DAS_DNA_Handler cont_handle = new DAS_DNA_Handler() ;
-
- xmlreader.setContentHandler(cont_handle);
- xmlreader.setErrorHandler(new org.xml.sax.helpers.DefaultHandler());
- InputSource insource = new InputSource() ;
-
- insource.setByteStream(dasInStream);
- xmlreader.parse(insource);
- String sequence = cont_handle.get_sequence();
- if ( sequence.length() > 0 ) {
- return true;
- } else {
- validationMessage +="<br/>---<br/> contacting " + cmd + "<br/>";
- validationMessage += " no sequence was returned";
-
- return false;
- }
-
-
- } catch ( Exception e) {
- //e.printStackTrace();
- validationMessage += "<br/>---<br/> contacting " + url + "dna?segment="+testcode + "<br/>";
-
- Throwable cause = e.getCause();
- if ( cause != null)
- validationMessage += cause.toString();
- else
- validationMessage += e.toString();
- }
- return false;
-
- }
-
- private boolean validateStylesheet(String url) {
- try {
- DAS_StylesheetRetrieve dsr = new DAS_StylesheetRetrieve();
- URL styleurl = new URL(url+"stylesheet");
-
- Map[] stylesheet = dsr.retrieve(styleurl);
- if (( stylesheet != null ) && ( stylesheet.length > 0))
- return true;
- else {
- validationMessage +="<br/>---<br/> contacting " + url + "stylesheet<br/>";
- validationMessage += " no stylesheet was returned";
- return false;
- }
- } catch (Exception e) {
- validationMessage += "<br/>---<br/> contacting " + url+"stylesheet <br/>";
-
- Throwable cause = e.getCause();
- if ( cause != null)
- validationMessage += cause.toString();
- else
- validationMessage += e.toString();
- }
- return false;
- }
-
-
- private boolean validateEntry_Points(String url){
- try {
- URL u = new URL(url+"entry_points");
-
- InputStream dasInStream = open(u);
-
- XMLReader xmlreader = getXMLReader();
-
- DAS_Entry_Points_Handler cont_handle = new DAS_Entry_Points_Handler() ;
-
- xmlreader.setContentHandler(cont_handle);
- xmlreader.setErrorHandler(new org.xml.sax.helpers.DefaultHandler());
- InputSource insource = new InputSource() ;
- insource.setByteStream(dasInStream);
- xmlreader.parse(insource);
- String version = cont_handle.getVersion();
- if ( version != null ) {
- return true;
- } else {
- validationMessage +="<br/>---<br/> contacting " + url +"entry_points <br/>";
- validationMessage += " no version was returned";
-
- return false;
- }
-
-
- } catch ( Exception e) {
- //e.printStackTrace();
- validationMessage += "<br/>---<br/> contacting " + url+ "types <br/>";
-
- Throwable cause = e.getCause();
- if ( cause != null)
- validationMessage += cause.toString();
- else
- validationMessage += e.toString();
- }
- return false;
- }
-
- private boolean validateTypes(String url){
- try {
- URL u = new URL(url+"types");
- InputStream dasInStream = open(u);
- XMLReader xmlreader = getXMLReader();
-
- DAS_Types_Handler cont_handle = new DAS_Types_Handler() ;
-
- xmlreader.setContentHandler(cont_handle);
- xmlreader.setErrorHandler(new org.xml.sax.helpers.DefaultHandler());
- InputSource insource = new InputSource() ;
- insource.setByteStream(dasInStream);
- xmlreader.parse(insource);
- String[] types = cont_handle.getTypes();
- if ( types.length > 0 ) {
- return true;
- } else {
- validationMessage +="<br/>---<br/> contacting " + url +"types <br/>";
- validationMessage += " no types were returned";
-
- return false;
- }
-
-
- } catch ( Exception e) {
- //e.printStackTrace();
- validationMessage += "<br/>---<br/> contacting " + url+ "types <br/>";
-
- Throwable cause = e.getCause();
- if ( cause != null)
- validationMessage += cause.toString();
- else
- validationMessage += e.toString();
- }
- return false;
- }
-
-
- private boolean validateFeatures(String url, String testcode){
- try {
- URL u = new URL(url+"features?segment="+testcode);
- InputStream dasInStream = open(u);
- XMLReader xmlreader = getXMLReader();
-
- DAS_Feature_Handler cont_handle = new DAS_Feature_Handler() ;
- cont_handle.setDASCommand(url.toString());
- xmlreader.setContentHandler(cont_handle);
- xmlreader.setErrorHandler(new org.xml.sax.helpers.DefaultHandler());
- InputSource insource = new InputSource() ;
- insource.setByteStream(dasInStream);
- xmlreader.parse(insource);
- List features = cont_handle.get_features();
- if ( features.size() > 0 ) {
- return true;
- } else {
- validationMessage +="<br/>---<br/> contacting " + url+"features?segment="+testcode + "<br/>";
- validationMessage += " no features were returned";
-
- return false;
- }
-
- } catch ( Exception e) {
- //e.printStackTrace();
- validationMessage += "<br/>---<br/> contacting " + url+"features?segment="+testcode + "<br/>";
-
- Throwable cause = e.getCause();
- if ( cause != null)
- validationMessage += cause.toString();
- else
- validationMessage += e.toString();
- }
- return false;
- }
- private boolean validateSequence(String url, String testcode) {
- URL dasUrl;
- String cmd = url+"sequence?segment="+testcode;
- try {
- dasUrl = new URL(cmd);
-
- } catch ( Exception e) {
- e.printStackTrace();
- return false;
- }
- try {
- InputStream dasInStream =open(dasUrl);
- SAXParserFactory spfactory =
- SAXParserFactory.newInstance();
- spfactory.setValidating(true);
-
- SAXParser saxParser = null ;
-
- try{
- saxParser =
- spfactory.newSAXParser();
- } catch (ParserConfigurationException e) {
- e.printStackTrace();
- }
- XMLReader xmlreader = saxParser.getXMLReader();
-
- try {
- xmlreader.setFeature("http://xml.org/sax/features/validation", VALIDATION);
- } catch (SAXException e) {
- e.printStackTrace();
- }
- try {
- xmlreader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd",VALIDATION);
- } catch (SAXNotRecognizedException e){
- e.printStackTrace();
- }
-
- DAS_Sequence_Handler cont_handle = new DAS_Sequence_Handler() ;
- xmlreader.setContentHandler(cont_handle);
- xmlreader.setErrorHandler(new org.xml.sax.helpers.DefaultHandler());
- InputSource insource = new InputSource() ;
- insource.setByteStream(dasInStream);
- xmlreader.parse(insource);
- String sequence = cont_handle.get_sequence();
- if ( ( sequence==null) || (sequence.equals(""))) {
- validationMessage += "---<br/>contacting " + cmd +"<br/>";
- validationMessage += "no sequence found";
- return false;
- }
- return true;
- } catch (Exception e) {
- validationMessage += "---<br/>contacting " + cmd +"<br/>";
-
- Throwable cause = e.getCause();
- if ( cause != null)
- validationMessage += cause.toString();
- else
- validationMessage += e.toString();
- //e.printStackTrace();
- }
- return false;
- }
-
- private XMLReader getXMLReader() throws SAXException{
- SAXParserFactory spfactory =
- SAXParserFactory.newInstance();
-
- spfactory.setValidating(false) ;
- SAXParser saxParser = null ;
-
- try{
- saxParser =
- spfactory.newSAXParser();
- } catch (ParserConfigurationException e) {
- e.printStackTrace();
- }
-
- XMLReader xmlreader = saxParser.getXMLReader();
- boolean validation = VALIDATION;
- //XMLReader xmlreader = XMLReaderFactory.createXMLReader();
- try {
- xmlreader.setFeature("http://xml.org/sax/features/validation", validation);
- } catch (SAXException e) {
- e.printStackTrace();
- }
-
- try {
- xmlreader.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd",validation);
- } catch (SAXNotRecognizedException e){
- e.printStackTrace();
- }
- return xmlreader;
-
- }
-
-
-
- private InputStream open(URL url) throws Exception{
-
- // TODO Auto-generated method stub
-
- InputStream inStream = null;
-
- HttpURLConnection huc = null;
- huc = (HttpURLConnection) url.openConnection();
- //String contentEncoding = huc.getContentEncoding();
- inStream = huc.getInputStream();
- return inStream;
- }
-
-
-
-
-
-}
+++ /dev/null
-/*
- * 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 Mar 20, 2006
- *
- */
-package org.biojava.dasobert.dasregistry;
-
-import org.biojava.dasobert.das2.Das2Source;
-
-public class DasSourceValidator {
-
- public DasSourceValidator() {
- super();
-
- }
-
- public void validateDasSource(DasSource ds) throws Exception {
-
- if ( ds instanceof Das2Source ){
-
- Das2Source d2s = (Das2Source)ds;
-
- Das2Validator validator = new Das2Validator();
- boolean ok = validator.validate(d2s);
- if ( ! ok)
- throw new Exception("coul not validate DasSource");
-
- } else {
-
- // a DAS 1 source ...
-
- String url =ds.getUrl();
- String[] caps = ds.getCapabilities();
- //String testCode = ds.getTestCode();
-
- Das1Validator validator = new Das1Validator();
-
- String[] okcaps = validator.validate(url,ds.getCoordinateSystem(),caps);
- String validationMessage = validator.getValidationMessage();
- if ( okcaps.length != caps.length){
- throw new Exception("could not validate DasSource " + validationMessage);
- }
-
-
- }
-
- }
-
-}