From: Geert J. <gj...@us...> - 2002-09-03 19:40:57
|
Update of /cvsroot/woc/woc/src/woc/wocjava/source/com/egonw/woc/files In directory usw-pr-cvs1:/tmp/cvs-serv23171/woc/wocjava/source/com/egonw/woc/files Added Files: DictFile.java FileReadAble.java FileWriteAble.java ItemFile.java ItemWriteFile.java LetterFile.java SLetterFile.java ShortLetterFile.java WMLHandler.java WMLReadFile.java WocListHandler.java WocListReadFile.java WocReportFile.java XItemFile.java Log Message: --- NEW FILE: DictFile.java --- package com.egonw.woc.files; import com.objectspace.jgl.*; import java.io.*; import java.lang.*; import java.util.*; import com.egonw.util.*; import com.egonw.woc.*; import com.egonw.woc.util.*; import com.egonw.woc.wml.*; import com.egonw.woc.predicate.*; public class DictFile extends HtmlWriteFile implements FileWriteAble { private OrderedSet words; private String loc; private String lang; private Path repository; public DictFile(Path repository, String fn, String landcode) throws IOException { super(fn); words = new OrderedSet(new LessFWord()); this.loc = "Vertalingen"; this.lang = landcode; this.repository = repository; } public String getName() { return ("DictFile"); } public void setLocation(String location) { this.loc = location; } public void close() throws IOException { super.close(); } public void start() { super.start(); writeLine("<head>"); writeLine(" <base href=\"" + repository.getHtmlRoot() + "\">"); writeLine(" <link rel=\"stylesheet\" href=\"" + repository.getHtmlRoot() + repository.getCSSSubDir() + "woc.css\" type=\"text/css\">"); writeLine(" <script src=\"" + repository.getJavascriptSubDir() + "browsertest.js\"></script>"); writeLine(" <script src=\"" + repository.getJavascriptSubDir() + "location.js\"></script>"); writeLine(" <script>"); writeLine(" <!--"); writeLine(" setLocation(\"" + this.loc + "\");"); writeLine(" // -->"); writeLine(" </script>"); writeLine("</head>"); writeLine("<body class=\"main\">"); writeLine("<hr>"); writeLine("<table border=0 celpadding=0 cellspacing=0 width=100%>"); } public void end() { // dump alle woorden Enumeration ewords = words.elements(); while (ewords.hasMoreElements()) { FWord fword = (FWord)ewords.nextElement(); writeLine("<tr><td class=\"main\">"); writeLine( fword.getFWord() ); writeLine("</td><td>"); writeLine("<a href=\"" + repository.getItemFileSubDir() + fword.getAnchor() + ".shtml\">" + fword.getDWord() + "</a>"); writeLine("</td>"); } // print normale eind writeLine("</table>"); writeLine("<hr></body>"); super.end(); } public void startItems(Item first) {}; public void endItems(Item last) {}; public void writeItem(Item item) { if (item.contains(XItem.XNAME)) { String dword = new String(); String eword = new String(); FWord fword = new FWord(this.lang); Vector names = (Vector)item.get(XItem.XNAME); Enumeration e = names.elements(); while (e.hasMoreElements()) { XNAME xname = (XNAME)e.nextElement(); int check = 0; Enumeration langs = xname.elements(); while (langs.hasMoreElements()) { XLANG xl = (XLANG)langs.nextElement(); if (xl.getID().equals("NL")) { dword = xl.getValue(); check++; } else if (xl.getID().equals(this.lang)) { eword = xl.getValue(); check++; } } if (check == 2) { fword.setFWord(eword); fword.setDWord(dword); fword.setAnchor((String)item.get(Item.ANCHOR)); words.add(fword); } } } } }; --- NEW FILE: FileReadAble.java --- package com.egonw.woc.files; import com.egonw.util.*; import com.egonw.woc.*; import com.egonw.woc.exception.*; public interface FileReadAble { Item readItem() throws WocException; String getName(); } --- NEW FILE: FileWriteAble.java --- package com.egonw.woc.files; import java.io.*; import com.egonw.util.*; import com.egonw.woc.*; import com.egonw.woc.exception.*; public interface FileWriteAble { void start(); void end(); void startItems(Item first); void endItems(Item last); void writeItem(Item i) throws IOException; String getName(); } --- NEW FILE: ItemFile.java --- package com.egonw.woc.files; import org.xml.sax.Parser; import org.xml.sax.DocumentHandler; import org.xml.sax.helpers.ParserFactory; import java.io.*; import java.text.*; import java.util.*; import java.net.*; import java.util.*; import com.egonw.util.*; import com.egonw.woc.*; import com.egonw.woc.wml.*; import com.egonw.woc.util.*; import com.egonw.woc.predicate.*; import org.openscience.dadml.*; import org.openscience.dadml.filereaders.*; import org.openscience.dadml.tools.*; /** * WriteFile with special HTML-format functions. * * @author Egon Willighagen * @version 1.1, 23/01/98 */ public class ItemFile extends HtmlWriteFile { private Path repository; private DBDEFLIST dbdeflist; protected String titel; protected String locatie; protected String style; protected String letter; protected String lang; protected int mode; protected int count; public static int SHORT = 1; public static int LONG = 2; public ItemFile(Path repository, String fn) throws IOException { super(fn); this.titel = "Woordenboek Organische Chemie"; this.locatie = ""; this.style = "woc"; this.lang = "nl"; this.mode = SHORT; this.letter = "no"; this.count = 0; this.repository = repository; } public ItemFile(Path repository, String fn, DBDEFLIST list) throws IOException { this(repository, fn); this.dbdeflist = list; } public void close() throws IOException { super.close(); } public void setTitle(String titel) { this.titel = titel; } public void setLocatie(String locatie) { this.locatie = locatie; } public void setStyle(String style) { this.style = style; } public void setLang(String lang) { this.lang = lang; } public void setMode(int mode) { this.mode = mode; } public void setLetter() { this.letter = "yes"; } public void start() { super.start(); } public void startItems(Item i) { writeLine("<head>"); writeLine(" <title>" + this.titel + "</title>"); writeLine(" <base href=\"" + repository.getHtmlRoot() + "\">"); writeLine(" <link rel=\"stylesheet\" href=\"" + repository.getHtmlRoot() + repository.getCSSSubDir() + this.style + ".css\" type=\"text/css\">"); Vector keys = ItemInfo.listKeywords(i); if (!keys.isEmpty() && this.letter.equals("no")) { write(" <META name=\"keywords\" content=\""); Enumeration vals = keys.elements(); while (vals.hasMoreElements()) { write((String)vals.nextElement()); if (vals.hasMoreElements()) { write (", "); } } writeLine("\">"); } writeLine(" <script src=\"" + repository.getJavascriptSubDir() + "isframe.js\"></script>"); writeLine(" <script src=\"" + repository.getJavascriptSubDir() + "browsertest.js\"></script>"); // check frame writeLine(" <script>"); writeLine(" <!--"); if (this.letter.equals("no")) { writeLine(" checkFrame(\"" + (String)i.get(XItem.XFILENAME) + "\");"); } writeLine(" // -->"); writeLine(" </script>"); writeLine("</head>"); writeLine("<body class=\"main\">"); writeLine("<hr>"); } /** * Ends the writing to a Html-format file. */ public void end() { writeLine("<hr>"); writeLine("</font>"); SimpleDateFormat longdate = new SimpleDateFormat ("dd MMM yyyy"); SimpleDateFormat year = new SimpleDateFormat ("yyyy"); Date current = new Date(); writeLine("<center><i>Last updated on " + longdate.format(current) + ". © Copyright " + year.format(current) + " Woordenboek Organische Chemie</i></center>"); writeLine("<center>U bent bezoeker "); writeLine("<!--WEBBOT bot=\"HTMLMarkup\" startspan ALT=\"Site Meter\" -->"); writeLine("<script>var site=\"woccounter\"</script>"); writeLine("<script language=\"JavaScript1.2\" src=\"http://www.sitemeter.com/js/counter.js?site=woccounter\">"); writeLine("</script>"); writeLine("<noscript>"); writeLine("<a href=\"http://www.sitemeter.com/stats.asp?site=woccounter\" target=_top>"); writeLine("<img src=\"http://www.sitemeter.com/meter.asp?site=woccounter\" alt=\"Site Meter\" nosave border=0></a>"); writeLine("</noscript>"); writeLine("<script>document.write(\"//\"+\"-\"+\"-\"+\">\");</script>"); writeLine("<!-- Copyright 1999 Site Meter -->"); writeLine("<!--WEBBOT bot=\"HTMLMarkup\" Endspan -->"); writeLine(".</center>"); writeLine("</body>"); super.end(); } public void endItems(Item last) {}; public void writeItem(Item i) throws IOException { //Titelregel writeLine("<TABLE border=\"0\" width=100%>"); if (i.contains(XItem.XSEEONLY)) { DefRegel(); KopZieRegel(i); } else { DefRegel(); KopRegel(i); ReactieRegel(i); InfoRegel(i); VoorbeeldRegel(i); ZieVergRegel(i); LinksRegel(i); BronnenRegel(i); // ModelsRegel(i); TopicMapRegel(i); DbsRegel(i); ToLongRegel(i); } writeLine("</TABLE>"); } private void DefRegel() { writeLine("<TR border=0 width=100%>"); writeLine("<TD width=5%></TD>"); writeLine("<TD width=5%></TD>"); writeLine("<TD width=50%></TD>"); writeLine("<TD width=40%></TD>"); writeLine("</TR>"); } private void KopZieRegel(Item i) { try { writeLine("<TR border=\"0\" width=\"100%\">"); writeLine("<TD valign=top colspan=\"4\">"); write("<a class=\"item\" name=\"" + i.get(Item.ANCHOR) + "\">"); write("<B>"); if (i.result(new IsChemical())) { write("<img alt=\"chemical: \" src=\"gui/pictures/static_azijnzuur.gif" + QUOT + " height=" + QUOT + "10" + QUOT + " width=" + QUOT + "10" + QUOT + ">"); }; if (i.contains(Item.EIGENNAME)) { write(toItalic((String)i.get(Item.NAME))); } else { write((String)i.get(Item.NAME)); } writeLine("</B></a> "); write("zie <i>"); Enumeration zies = ((Vector)i.get(Item.ZIE)).elements(); while (zies.hasMoreElements()) { String zie = (String)zies.nextElement(); writeLine("<a href=\"" + repository.getHtmlRoot() + repository.getItemFileSubDir() + i.get(XItem.XFILENAME) + ".shtml\">" + zie + "</a>"); if (zies.hasMoreElements()) writeLine(", "); } writeLine("</i>"); writeLine("</TD>"); } catch (NullPointerException e) { System.out.println("titel regel"); } } private void KopRegel(Item i) { try { writeLine("<TR border=\"0\" width=\"100%\">"); if (i.contains(Item.SUBITEM)) { writeLine("<TD></td>"); writeLine("<td colspan=2>"); } else { writeLine("<TD valign=top colspan=3>"); } write("<a class=\"item\" name=\"" + i.get(XItem.XFILENAME) + "\">"); write("<B>"); if (i.result(new IsChemical())) { write("<img alt=\"chemical: \" src=\"gui/pictures/static_azijnzuur.gif" + QUOT + " height=" + QUOT + "10" + QUOT + " width=" + QUOT + "10" + QUOT + ">"); }; if (i.contains(Item.EIGENNAME)) { write(toItalic((String)i.get(Item.NAME))); } else { write((String)i.get(Item.NAME)); } if (i.contains(Item.FUNCTIE)) { write(" " + toItalic((String)i.get(Item.FUNCTIE))); } writeLine("</B></a>"); if (mode == LONG) { if (i.contains(Item.LIDWOORD)) writeLine(", <i>" + i.get(Item.LIDWOORD) + "</i>"); if (i.contains(XItem.XMEERVOUD)) { // System.out.println(" ... meervoud gevonden..."); writeLine(", <i>mv. " + ((XNODE)i.get(XItem.XMEERVOUD)).getCDATA() + "</i>"); } } if (i.contains(Item.CASNR)) { writeLine(" (" + toItalic((String)i.get(Item.CASNR)) + ")"); } writeLine("</TD>"); writeLine("<TD width=40% align=right>"); writeButtonBar(i); writeLine("</td></tr>"); } catch (NullPointerException e) { System.out.println("titel regel"); } } private void ReactieRegel(Item i) { try { //reactie if (i.contains(XItem.XMEDIA)) { Enumeration e = ((Vector)i.get(XItem.XMEDIA)).elements(); while (e.hasMoreElements()) { XNODE x = (XNODE)e.nextElement(); if (x.containsATT("MIME")) { if (x.getATT("MIME").equals("image/gif") && x.containsATT("VIEW") && x.getATT("VIEW").equals("TOP") ) { writeLine("<TR border=0 width=100%>"); writeLine("<TD width=5%></td>"); writeLine("<TD colspan=3>"); write("<img src=\"" + repository.getHtmlRoot() + repository.getPictureSubDir()); if (x.containsATT("PATH")) { write(x.getATT("PATH") + "/"); } else if (i.contains(Item.PICTUREDIR)) { write((String)i.get(Item.PICTUREDIR)+ "/"); } writeLine(x.getCDATA().trim() + "\">"); if (x.containsATT("TITLE")) { write("<br><i>" + x.getATT("TITLE") + "</i>"); } writeLine("</TD></tr>"); } } } } else if (i.contains(Item.REACTIE)) { writeLine("<TR border=0 width=100%>"); writeLine("<TD width=5%></td>"); writeLine("<TD colspan=3>"); write("<img src=" + QUOT + repository.getHtmlRoot() + repository.getPictureSubDir()); if (i.contains(Item.PICTUREDIR)) write((String)i.get(Item.PICTUREDIR)+ "/"); writeLine((String)i.get(Item.REACTIE)+ QUOT + ">"); writeLine("</TD></tr>"); } } catch (NullPointerException e) { System.out.println("Fout bij schrijven van info regel"); } } private void InfoRegel(Item i) { try { //inforegel writeLine("<TR border=\"0\" width=\"100%\">"); writeLine("<TD width=5%></td>"); writeLine("<TD colspan=\"2\" valign=\"top\">"); writeLine("<P>"); if (i.contains(Item.LEVEN)) writeLine("<i>" + i.get(Item.LEVEN) + "</i><br>"); if (i.contains(XItem.XFORMULA)) { Enumeration formulas = ((Vector)i.get(XItem.XFORMULA)).elements(); while (formulas.hasMoreElements()) { XNODE xn = (XNODE)formulas.nextElement(); if (xn.containsATT("CLASS")) { if (xn.getATT("CLASS").equals("STRUCTURAL")) { Bruto f = new Bruto(xn.getCDATA()); write("<br><b>structuurformule</b>: " + f.toHTMLString()); } else if (xn.getATT("CLASS").equals("GROUP-LEFT")) { Bruto f = new Bruto(xn.getCDATA()); write("<br><b>functionele groep</b>: "); if (xn.containsATT("ORDER")) { if (xn.getATT("ORDER").equals("2")) { writeLine(f.toHTMLString() + "="); } else if (xn.getATT("ORDER").equals("1")) { writeLine(f.toHTMLString() + "-"); } } else { writeLine(f.toHTMLString() + "-"); } } else if (xn.getATT("CLASS").equals("GROUP-RIGHT")) { Bruto f = new Bruto(xn.getCDATA()); write("<br><b>functionele groep</b>: "); if (xn.containsATT("ORDER")) { if (xn.getATT("ORDER").equals("2")) { writeLine( "=" + f.toHTMLString()); } else if (xn.getATT("ORDER").equals("1")) { writeLine( "-" + f.toHTMLString()); } } else { writeLine( "-" + f.toHTMLString()); } } else if (xn.getATT("CLASS").equals("STOICH")) { StoichFormule sf = new StoichFormule(xn.getCDATA()); writeLine("<br><b>formule</b>: " + sf.toHTMLString()); } else if (xn.getATT("CLASS").equals("CLASS")) { StoichFormule sf = new StoichFormule(xn.getCDATA()); writeLine("<br><b>klasse</b>: " + sf.toHTMLString()); } else if (xn.getATT("CLASS").equals("ION") && xn.containsATT("CHARGE")) { StoichFormule sf = new StoichFormule(xn.getCDATA()); writeLine("<br><b>ion</b>: " + sf.toHTMLString() + "<sup>" + xn.getATT("CHARGE") + "</sup>"); } } writeLine("<br>"); } } if (i.contains(Item.FORMULA)) { writeLine("<b>formule</b>: " + ((Raw)i.get(Item.FORMULA)).toHTMLString() + "<br>"); } else if (i.contains(Item.BRUTO)) { writeLine("<b>brutoformule</b>: " + ((Bruto)i.get(Item.BRUTO)).toHTMLString()); writeLine("<br>"); } if (i.contains(Item.TRIVIALNAME)) { writeLine("<b>synoniemen</b>: "); Enumeration values = ((Vector)i.get(Item.TRIVIALNAME)).elements(); while (values.hasMoreElements()) { String triv = (String)values.nextElement(); write("<i>" + triv + "</i>"); if (values.hasMoreElements()) write(", "); } writeLine("<br>"); } if (i.contains(Item.IUPACNAME)) { write("<b>IUPAC naam</b>: "); write("<i>" + (String)i.get(Item.IUPACNAME) + "</i><br>"); } if (i.contains(XItem.XAFKORT)) { write("<b>afkorting</b>: "); Enumeration afkortingen = ((Vector)i.get(XItem.XAFKORT)).elements(); while (afkortingen.hasMoreElements()) { write("<i>" + ((XNODE)afkortingen.nextElement()).getCDATA() + "</i>"); if (afkortingen.hasMoreElements()) { writeLine(", "); } else { writeLine("<br>"); } } } else if (i.contains(Item.AFKORT)) { write("<b>afkorting</b>: "); writeLine("<i>" + i.get(Item.AFKORT) + "</i><br>"); } if (mode == LONG) { //print Engelse & Duitse woorden if (i.contains(Item.ENGLISH) || i.contains(XItem.XGERMAN) || i.contains(XItem.XLATIN) || i.contains(XItem.XFRENCH) || i.contains(XItem.XSPANISH) || i.contains(XItem.XITALIAN)) writeLine("<P>"); if (i.contains(Item.ENGLISH)) { writeLine("<b>engelse vertaling</b>: " + (String)i.get(Item.ENGLISH) + "<br>"); } if (i.contains(XItem.XGERMAN)) { writeLine("<b>duitse vertaling</b>: " + (String)i.get(XItem.XGERMAN) + "<br>"); } if (i.contains(XItem.XFRENCH)) { writeLine("<b>franse vertaling</b>: " + (String)i.get(XItem.XFRENCH) + "<br>"); } if (i.contains(XItem.XSPANISH)) { writeLine("<b>spaanse vertaling</b>: " + (String)i.get(XItem.XSPANISH) + "<br>"); } if (i.contains(XItem.XITALIAN)) { writeLine("<b>italiaanse vertaling</b>: " + (String)i.get(XItem.XITALIAN) + "<br>"); } if (i.contains(XItem.XLATIN)) { writeLine("<b>latijnse vertaling</b>: " + (String)i.get(XItem.XLATIN) + "<br>"); } if (i.contains(XItem.XFRYSIAN)) { writeLine("<b>friese vertaling</b>: " + (String)i.get(XItem.XFRYSIAN) + "<br>"); } } if (i.contains(Item.GROUP)) { writeLine("<b>Groepen</b>: "); Enumeration groepen = ((Vector)i.get(Item.GROUP)).elements(); while (groepen.hasMoreElements()) { String group = (String)groepen.nextElement(); String anchor = Convert.NAMELikeToANCHORLike(group); writeLine("<a href=\"" + repository.getHtmlRoot() + repository.getItemFileSubDir() + anchor + ".shtml\">" + group + "</a>"); if (groepen.hasMoreElements()) writeLine(", "); } writeLine("<br>"); } if (mode == LONG) { //print Indices if (i.contains(Item.CASNR) || i.contains(XItem.XENR) || i.contains(XItem.XUNNR)) writeLine("<p>"); if (i.contains(Item.CASNR)) { writeLine("<b>CAS Nummer</b>: " + (String)i.get(Item.CASNR) + "<br>"); } if (i.contains(XItem.XNSC)) { writeLine("<b>NSC Nummer</b>: " + (String)i.get(XItem.XNSC) + "<br>"); } if (i.contains(XItem.XENR)) { writeLine("<b>E-Nummer</b>: E" + (String)i.get(XItem.XENR) + "<br>"); } if (i.contains(XItem.XUNNR)) { writeLine("<b>UN Nummer</b>: " + (String)i.get(XItem.XUNNR) + "<br>"); } } if (i.contains(XItem.XDISCDATE) || i.contains(XItem.XDISCPLACE)) { writeLine("<P><b>Ontdekking</b>:"); writeLine("<br />datum: "); if (i.contains(XItem.XDISCDATE)) { writeLine((String)i.get(XItem.XDISCDATE)); } writeLine("<br />plaats: "); if (i.contains(XItem.XDISCPLACE)) { writeLine((String)i.get(XItem.XDISCPLACE)); } writeLine("</P>"); } if (ItemInfo.containsFysicalProps(i) || i.contains(XItem.XPKA) || i.contains(XItem.XPKB)) { if (mode == LONG) { writeLine("<P>"); // het volgende is voor niet Java'ers if (i.contains(Item.BOILINGPOINT)) writeLine("<i>Kookpunt : " + i.get(Item.BOILINGPOINT) + "<sup>o</sup>C</i><br>"); if (i.contains(Item.MELTINGPOINT)) writeLine("<i>Smeltpunt : " + i.get(Item.MELTINGPOINT) + " <sup>o</sup>C</i><br>"); if (i.contains(XItem.XFLASH)) writeLine("<i>Vlampunt : " + i.get(XItem.XFLASH) + " <sup>o</sup>C</i><br>"); if (i.contains(Item.MASS)) writeLine("<i>Massa : " + i.get(Item.MASS) + " g/mol</i><br>"); if (i.contains(Item.RHO)) writeLine("<i>Dichtheid : " + i.get(Item.RHO) + " g/ml</i><br>"); if (i.contains(Item.DIPOOL)) writeLine("<i>Dipool : " + i.get(Item.DIPOOL) + " D</i><br>"); if (i.contains(XItem.XPKA)) writeLine("<i>pK<sub>a</sub> : " + i.get(XItem.XPKA) + "</i><br>"); if (i.contains(XItem.XPKB)) writeLine("<i>pK<sub>b</sub> : " + i.get(XItem.XPKB) + "</i><br>"); } writeLine("<br>"); } if (i.contains(Item.COMMENT)) { write("<p>"); Enumeration comments = ((Vector)i.get(Item.COMMENT)).elements(); if (!ItemInfo.hasMoreThanOneComment(i)) { writeLine((Memo)comments.nextElement()); } else { writeLine("<table width=\"100%\">"); int j=0; while (comments.hasMoreElements()) { Memo m = (Memo)comments.nextElement(); j++; writeLine("<tr>\n<td valign=\"top\" width=\"10\"><b>" + Integer.toString(j) + ".</b></td>"); writeLine("<td valign=\"top\">"); writeLine(m); writeLine("</td>\n</tr>"); } writeLine("</table>"); } } writeLine(" "); writeLine("</TD>"); writeLine("<TD width=40% valign=top align=center>"); writeRightPicture(i); writeLine("</td>"); writeLine("</tr>"); } catch (NullPointerException e) { System.out.println("Fout bij schrijven van info regel"); } } private void VoorbeeldRegel(Item i) { try { writeLine("<TR>"); writeLine("<TD colspan=2></td>"); writeLine("<TD width=55% bgcolor=\"silver\">"); if (i.contains(Item.VOORBEELD)) { Enumeration comments = ((Vector)i.get(Item.VOORBEELD)).elements(); if (!ItemInfo.hasMoreThanOneVoorbeeld(i)) { writeLine("<b><i>Voorbeeld</i></b> "); writeLine((Memo)comments.nextElement()); } else { int j=0; while (comments.hasMoreElements()) { Memo m = (Memo)comments.nextElement(); j++; writeLine("<b>Voorbeeld " + Integer.toString(j) + ".</b> "); writeLine(m); } } } writeLine("</TD>"); writeLine("</TR>"); } catch (NullPointerException e) { System.out.println("Fout bij schrijven van info regel"); } } private void ZieVergRegel(Item i) { try { //Zie-Vergelijkregel if (i.contains(Item.ZIE)) { writeLine("<tr width=100%>"); writeLine("<td width=5%></td>"); writeLine("<td colspan=3 align=left valign=top>"); write("Zie <i>"); Enumeration zies = ((Vector)i.get(Item.ZIE)).elements(); while (zies.hasMoreElements()) { String zie = (String)zies.nextElement(); String anchor = Convert.NAMELikeToANCHORLike(zie); writeLine("<a href=\"" + repository.getHtmlRoot() + repository.getItemFileSubDir() + anchor + ".shtml\">" + zie + "</a>"); if (zies.hasMoreElements()) writeLine(", "); } writeLine("</i></td></tr>"); } if (i.contains(Item.VERGELIJK)) { writeLine("<tr width=100%>"); writeLine("<td width=5%></td>"); writeLine("<td colspan=3 align=left valign=top>"); write("Vergelijk <i>"); Enumeration verg = ((Vector)i.get(Item.VERGELIJK)).elements(); while (verg.hasMoreElements()) { String vergelijk = (String)verg.nextElement(); String anchor = Convert.NAMELikeToANCHORLike(vergelijk); writeLine("<a href=\"" + repository.getHtmlRoot() + repository.getItemFileSubDir() + anchor + ".shtml\">" + vergelijk + "</a>"); if (verg.hasMoreElements()) writeLine(", "); } writeLine("</i></td></tr>"); } } catch (NullPointerException e) { System.out.println("zie/vgl regel"); } } private void ModelsRegel(Item i) { try { //Bronnen's if (ItemInfo.containsModels(i) && mode == LONG) { writeLine("<tr width=100%>"); writeLine("<td width=5%></td>"); writeLine("<td colspan=3 align=left valign=top>"); writeLine("<P>Modellen: "); if (i.contains(Item.PICTUREFILE)) { writeLine("<a href=" + QUOT + repository.getHtmlRoot() + repository.getPictureSubDir() + ((Picture)i.get(Item.PICTUREFILE)).path() + QUOT + ">GIF</a>"); if (i.contains(Item.PDB) || i.contains(Item.MOL) || i.contains(Item.XYZFILE)) writeLine(", "); } if (i.contains(Item.MOL)) { writeLine("<a href=" + QUOT + repository.getHtmlRoot() + repository.getModelsSubDir() + repository.getMolSubDir() + ((String)i.get(Item.MOL)) + QUOT + ">MOL (2D)</a>"); if (i.contains(Item.PDB) || i.contains(Item.XYZFILE)) writeLine(", "); } if (i.contains(Item.PDB)) { writeLine("<a href=" + QUOT + repository.getHtmlRoot() + repository.getModelsSubDir() + repository.getPdbSubDir() + ((String)i.get(Item.PDB)) + QUOT + ">PDB</a>"); if (i.contains(Item.XYZFILE)) writeLine(", "); } if (i.contains(Item.XYZFILE)) { writeLine("<a href=" + QUOT + repository.getHtmlRoot() + repository.getModelsSubDir() + repository.getXyzSubDir() + ((String)i.get(Item.XYZFILE)) + QUOT + ">XYZ</a>"); } } writeLine("</P></td></tr>"); } catch (NullPointerException e) { System.out.println("bronnen regel"); }; } private void DbsRegel(Item i) { try { //Andere Databases if (mode == LONG && i.contains(Item.CASNR)) { writeLine("<tr width=100%>"); writeLine("<td width=5%></td>"); writeLine("<td colspan=3 align=left valign=top>"); writeLine("<P><img src=" + QUOT + repository.getHtmlRoot() + repository.getPictureSubDir() + "system/dbs.gif" + QUOT + "><br>"); writeLine("<ul><div class=\"small\"><b>NB:</b> Hieronder staan links naar andere databases. Een link betekent NIET dat de "+ "andere database ook echt informatie heeft."); Hashtable indexlist = new Hashtable(); indexlist.put("CAS-NUMBER", i.get(Item.CASNR)); if (i.contains(XItem.XENR)) { indexlist.put("E-NUMBER", i.get(XItem.XENR)); } if (dbdeflist != null) { writeLine("<p>"); Enumeration list = this.dbdeflist.elements(); while (list.hasMoreElements()) { Enumeration indices = indexlist.keys(); DBDEF dbdef = (DBDEF)(list.nextElement()); // System.err.println("Trying: " + dbdef.getTITLE()); while (indices.hasMoreElements()) { String index = (String)(indices.nextElement()); // System.err.println("Index: " + index); if (DBDEFInfo.hasINDEX(dbdef, index)) { writeLine("<b>" +dbdef.getTITLE() + "</b><br />"); Enumeration fields = dbdef.fields(); while (fields.hasMoreElements()) { FIELD f = (FIELD)fields.nextElement(); Enumeration findices = f.getINDEX(); while (findices.hasMoreElements()) { INDEX ind = (INDEX)findices.nextElement(); if (ind.getTYPE().equals(index)) { String url = dbdef.getURL() + ind.getACCESS_PREFIX() + indexlist.get(index) + ind.getACCESS_SUFFIX(); // System.err.println("Downloading: " + url); try { URL u = new URL(url); URLConnection conn = u.openConnection(); if (conn instanceof HttpURLConnection) { if (((HttpURLConnection)conn).getResponseCode() == HttpURLConnection.HTTP_OK) { writeLine("<dd><a href=\"" + url + "\">" + f.getNAME() + "</a></dd><br />"); } } else { writeLine("<dd><a href=\"" + url + "\">" + f.getNAME() + "</a></dd><br />"); } } catch (MalformedURLException mue) { System.err.println("OpenDADMLFrame: Malformed URL" + mue); } catch (Exception fnfe) { // System.err.println("OpenDADMLFrame: File Not Found." + fnfe); } } } } } } } } else { // Oud mechanism, gebruik makend van SSI write("<p><!--#include virtual=\"/cgi-bin-woc/ssi/dadml.pl?"); write("CAS-NUMBER+" + (String)i.get(Item.CASNR)); if (i.contains(XItem.XENR)) { write("+E-NUMBER+" + (String)i.get(XItem.XENR)); } writeLine("\"-->"); } writeLine("</div></ul>"); writeLine("</P></td></tr>"); } } catch (NullPointerException e) { System.out.println("databases"); }; } private void TopicMapRegel(Item i) { if (mode == LONG && i.contains(XItem.XTOPICMAP)) { writeLine("<tr width=100%>"); writeLine("<td width=5%></td>"); writeLine("<td colspan=3 align=left valign=top>"); writeLine("<b>Samenhang</b>:<br><ul>"); write("<!--#include virtual=\"/cgi-bin-woc/ssi/topicmap.pl?"); write((String)i.get(XItem.ANCHOR)); writeLine(".xml\"-->"); writeLine("</ul></td></tr>"); } } private void LinksRegel(Item i) { try { //URL's if (i.contains(Item.URL)) { writeLine("<tr width=100%>"); writeLine("<td width=5%></td>"); writeLine("<td colspan=3 align=left valign=top>"); writeLine("<img src=" + QUOT + repository.getHtmlRoot() + repository.getPictureSubDir() + "system/urls.gif" + QUOT + "><br>"); writeLine("<dd>"); Enumeration urls = ((Vector)i.get(Item.URL)).elements(); while (urls.hasMoreElements()) { String url = (String)urls.nextElement(); writeLine("<dt><a href=" + QUOT + url + QUOT + " target=" + QUOT + "_MoreInfo" + QUOT + ">" + url + "</a>"); if (urls.hasMoreElements()) writeLine(", "); } writeLine("</dd>"); writeLine("</td></tr>"); } } catch (NullPointerException e) { System.out.println("url regel"); }; } private void BronnenRegel(Item i) { try { //Bronnen's if (i.contains(Item.BRON) && (this.mode == LONG)) { writeLine("<tr width=100%>"); writeLine("<td width=5%></td>"); writeLine("<td colspan=3 align=left valign=top>"); writeLine("<p>Bronnen: "); writeLine("<ul>"); Enumeration bronnen = ((Vector)i.get(Item.BRON)).elements(); while (bronnen.hasMoreElements()) { String bron = (String)bronnen.nextElement(); writeLine("[<a href=" + QUOT + repository.getHtmlRoot() + repository.getBronnenFile() + "#" + bron + QUOT + " target=" + QUOT + "_BronInfo" + QUOT + ">" + bron + "</a>]<br>"); if (bronnen.hasMoreElements()) writeLine(", "); } writeLine("</ul>"); writeLine("</td></tr>"); } } catch (NullPointerException e) { System.out.println("bronnen regel"); }; } private void ToLongRegel(Item i) { if (ItemInfo.containsLongInfo(i) && mode == SHORT) { try { writeLine("<tr width=100%>"); writeLine("<td width=5%></td>"); writeLine("<td colspan=3 align=left valign=top>"); if (i.contains(XItem.XGROUP)) { String anchor = Convert.NAMELikeToANCHORLike((String)i.get(Item.NAME)); writeLine("<a href=\"" + repository.getHtmlRoot() + repository.getGroupFileSubDir() + anchor + ".html\">Alle items</a><br>"); } else { String anchor = Convert.NAMELikeToANCHORLike((String)i.get(Item.NAME)); writeLine("<a href=" + QUOT + repository.getHtmlRoot() + repository.getItemFileSubDir() + anchor + ".shtml\">Meer informatie</a><br>"); } writeLine("</td></tr>"); } catch (NullPointerException e) { System.out.println("ToLongRegel"); }; } else if (ItemInfo.containsLongInfo(i)) { try { writeLine("<tr width=100%>"); writeLine("<td width=5%></td>"); writeLine("<td colspan=3 align=left valign=top>"); if (i.contains(XItem.XGROUP)) { String anchor = Convert.NAMELikeToANCHORLike((String)i.get(Item.NAME)); writeLine("<a href=\"" + repository.getHtmlRoot() + repository.getGroupFileSubDir() + anchor + ".html\">Alle items</a><br>"); } writeLine("</td></tr>"); } catch (NullPointerException e) { System.out.println("ToLongRegel"); }; } } private void writeButtonBar(Item i) { if (i.contains(Item.XYZFILE) || i.contains(Item.PDB)) { if (i.contains(Item.PICTUREFILE)) { write("<a href=\"" + repository.getCgiBinRoot() + "viewer/viewer.pl?"); write((String)i.get(Item.NAME) + "+" + (String)i.get(Item.CASNR)); write("\">"); } writeLine("<img src=\"" + repository.getHtmlRoot() + repository.getPictureSubDir() + "system/xyzfile.gif\" heigth=16 width=16 border=0></a>"); } if (i.contains(Item.CASNR)) { write("<a href=\"" + repository.getCgiBinRoot() + "msds/link.pl?"); write((String)i.get(Item.CASNR)+ "\">"); writeLine("<img src=\"" + repository.getHtmlRoot() + repository.getPictureSubDir() + "system/msds.gif\"" + " heigth=16 width=16 border=0></a>"); } if (i.contains(Item.CASNR)) { write("<a href=\"" + repository.getCgiBinRoot() + "spectra.pl?"); // bug XXXXX write((String)i.get(Item.NAME) + "+"); write((String)i.get(Item.CASNR)+ "\">"); writeLine("<img src=\"" + repository.getHtmlRoot() + repository.getPictureSubDir() + "system/ir.gif\" heigth=16 width=16 border=0></a>"); } if (i.contains(XItem.XGROUP)) { write("<a href=\"" + repository.getCgiBinRoot() + "tree/tree.pl?repos=" + repository.getName() + "&query="); if (i.contains(XItem.WOCNR)) { write((String)i.get(XItem.WOCNR)); } else { write((String)i.get(Item.NAME)); } writeLine("\"><img src=\"" + repository.getHtmlRoot() + repository.getPictureSubDir() + "system/map.gif\" heigth=\"16\" width=\"16\" border=\"0\"></a>"); } if (i.contains(Item.ENGLISH)) { write("<a href=\"" + repository.getCgiBinRoot() + "search/netsearch.pl?lang=EN&query="); write((String)i.get(XItem.WOCNR) + "\">"); writeLine("<img alt=\"Laat het WOC meer informatie zoeken op het internet...\" " + "src=\"" + repository.getHtmlRoot() + repository.getPictureSubDir() + "system/searchmachine.gif\" heigth=\"16\" width=\"16\" border=\"0\"></a>"); } } private void writeRightPicture(Item i) { if (i.contains(XItem.XMEDIA)) { Enumeration e = ((Vector)i.get(XItem.XMEDIA)).elements(); while (e.hasMoreElements()) { XNODE x = (XNODE)e.nextElement(); if (x.containsATT("MIME")) { if (x.getATT("MIME").equals("image/gif") && (!x.containsATT("VIEW") || !x.getATT("VIEW").equals("TOP")) ) { writeLine(" <center>"); if (i.contains(Item.MOL)) write("<a href=\"" + repository.getHtmlRoot() + repository.getModelsSubDir() + repository.getMolSubDir() + i.get(Item.MOL) + "\">"); write("<img border=\"0\" src=\"" + repository.getHtmlRoot() + repository.getPictureSubDir()); if (x.containsATT("PATH")) { write(x.getATT("PATH") + "/"); } else if (i.contains(Item.PICTUREDIR)) { write((String)i.get(Item.PICTUREDIR)+ "/"); } writeLine(x.getCDATA().trim() + "\">"); if (i.contains(Item.MOL)) writeLine("</a>"); if (x.containsATT("TITLE")) { write("<br><i>" + x.getATT("TITLE") + "</i>"); } writeLine("</TD></tr>"); } } } } else if (i.contains(Item.PICTUREFILE)) { writeLine(" <center>"); if (i.contains(Item.MOL)) write("<a href=" + QUOT + repository.getHtmlRoot() + repository.getModelsSubDir() + repository.getMolSubDir() + i.get(Item.MOL) + QUOT + ">"); if (i.contains(Item.PICTUREDIR)) { writeLine(" <img src=" + QUOT + repository.getHtmlRoot() + repository.getPictureSubDir() + (String)i.get(Item.PICTUREDIR) + "/" + ((Picture)i.get(Item.PICTUREFILE)).path() + QUOT + " border=0><br>"); if (i.contains(Item.MOL)) writeLine("</a>"); writeLine("<i>" + ((Picture)i.get(Item.PICTUREFILE)).subtitle() + "</i>"); } else { writeLine(" <img src=" + QUOT + repository.getHtmlRoot() + repository.getPictureSubDir() + ((Picture)i.get(Item.PICTUREFILE)).path() + QUOT + "><br>"); if (i.contains(Item.MOL)) writeLine("</a>"); writeLine("<i>" + ((Picture)i.get(Item.PICTUREFILE)).subtitle() + "</i>"); } writeLine(" </center>"); } else if (i.contains(Item.SMILE)) { } } }; --- NEW FILE: ItemWriteFile.java --- package com.egonw.woc.files; import org.xml.sax.Parser; import org.xml.sax.DocumentHandler; import org.xml.sax.helpers.ParserFactory; import java.io.*; import java.text.*; import java.util.*; import java.net.*; import com.egonw.util.*; import com.egonw.woc.*; import com.egonw.woc.util.*; import org.openscience.dadml.*; import org.openscience.dadml.filereaders.*; import org.openscience.dadml.tools.*; /** * WriteFile with special HTML-format functions. * * @author Egon Willighagen * @version 1.1, 23/01/98 */ public class ItemWriteFile extends ItemFile implements FileWriteAble { public ItemWriteFile(Path repository, String fn) throws IOException { super(repository, fn); } public ItemWriteFile(Path repository, String fn, int mode) throws IOException { super(repository, fn); super.setMode(mode); } public ItemWriteFile(Path repository, String fn, int mode, DBDEFLIST list) throws IOException { super(repository, fn, list); super.setMode(mode); } public String getName() { return "ItemWriteFile"; } public void start() { super.start(); } public void end() { super.end(); } public void startItems(Item first) { super.startItems(first); }; public void endItems(Item last) { super.endItems(last); }; public void writeItem(Item i) throws IOException { super.writeItem(i); } }; --- NEW FILE: LetterFile.java --- package com.egonw.woc.files; import java.io.*; import java.text.*; import java.util.Enumeration; import com.egonw.woc.*; import com.egonw.woc.util.*; import com.egonw.woc.exception.*; /** * WriteFile with special HTML-format functions. * * @author Egon Willighagen * @version 1.0, 24/11/97 */ public class LetterFile extends ItemFile implements FileWriteAble { private Path repository; public LetterFile(Path repository, String fn) throws IOException { super(repository, fn); this.repository = repository; } public LetterFile(Path repository, char c) throws IOException { super(repository, repository.getPhysicalRoot() + repository.getLetterFileSubDir() + c + ".html"); this.repository = repository; super.setLocatie("Letter " + c); } public String getName() { return ("LetterFile"); } public void close() throws IOException { super.close(); } public void start() { super.start(); } public void end() { super.end(); } public void startItems(Item first) { super.startItems(first); }; public void endItems(Item last) { super.endItems(last); }; public void writeItem(Item i) throws IOException { super.writeItem(i); } }; --- NEW FILE: SLetterFile.java --- package com.egonw.woc.files; import java.io.*; import java.text.*; import java.util.*; import com.egonw.woc.*; import com.egonw.woc.util.*; import com.egonw.woc.exception.*; /** * WriteFile with special HTML-format functions. * * @author Egon Willighagen * @version 1.0, 24/11/97 */ public class SLetterFile extends ItemFile implements FileWriteAble { private Path repository; private char letter; private int up; private int count; private int down; private int total; private Vector items; private Item first; private Item last; public SLetterFile(Path repository, char letter, int count) throws IOException { super(repository, repository.getPhysicalRoot() + repository.getLetterFileSubDir() + letter + count + ".html"); super.setLocatie("Letter " + letter); super.setLetter(); this.letter = letter; this.count = count; this.up = 0; this.down = 0; this.items = new Vector(); this.first = new Item(); this.last = new Item(); this.repository = repository; } public void setUp(int i) { this.up = i; } public void setDown(int i) { this.down = i; } public void setTotal(int i) { this.total = i; } public String getName() { return ("SLetterFile"); } public void close() throws IOException { super.close(); } public void start() { super.start(); } public void end() { if ( up > 0 ) writeLine(" <a href=\"" + repository.getLetterFileSubDir() + letter + up + ".html\"><img src=\"gui/pictures/up.gif\" border=\"0\"> Blader terug</a>"); writeLine(" " + first.get(Item.NAME) + " <i>t/m</i> " + last.get(Item.NAME)); if ( down > 0 ) writeLine(" <a href=\"" + repository.getLetterFileSubDir() + letter + down + ".html\"><img src=\"gui/pictures/down.gif\" border=\"0\"> Blader verder</a>"); if (this.total > 1) { write(" [ "); for ( int i = 1; i <= this.total; i++) { if (this.count == i) { writeLine(" <b>" + i + "</b> "); } else { write(" <a href=\"" + repository.getLetterFileSubDir() + letter + i + ".html\">" + i + "</a> "); } } writeLine("]"); } writeLine(" <hr>"); Item item = new Item(); Enumeration eitems = items.elements(); while (eitems.hasMoreElements()) { item = (Item)eitems.nextElement(); try { super.writeItem(item); } catch (IOException e) {} } if ( down > 0 ) { writeLine(" <hr>"); writeLine(" <a href=\"" + repository.getLetterFileSubDir() + letter + down + ".html\"><img src=\"gui/pictures/down.gif\" border=\"0\"> Blader verder</a>"); } super.end(); } public void startItems(Item first) { super.startItems(first); this.first = first; }; public void endItems(Item last) { super.endItems(last); this.last = last; }; public void writeItem(Item i) throws IOException { items.addElement(i); } }; --- NEW FILE: ShortLetterFile.java --- package com.egonw.woc.files; import java.io.*; import java.text.*; import java.util.*; import com.egonw.woc.*; import com.egonw.woc.util.*; import com.egonw.woc.exception.*; public class ShortLetterFile implements FileWriteAble { private char letter; private int aantal; private int count; private String locatie; private SLetterFile activeFile; private Vector files; private Vector items; private Path repository; public ShortLetterFile(Path repository, char letter, int aantal) throws IOException { this.locatie = ""; this.aantal = aantal; this.count = 0; this.files = new Vector(); this.letter = letter; this.repository = repository; } public String getName() { return ("ShortLetterFile"); } public void close() throws IOException { } public void start() { items = new Vector(); } public void end() { // Zit er nog iets in items? (Ja, minstens 1 item) // Zo ja, dan nog een file erbij if (!items.isEmpty()) { files.addElement(items); } // Dump Items naar files count = 0; Enumeration efiles = files.elements(); int total = files.size(); while (efiles.hasMoreElements()) { count++; try { activeFile = new SLetterFile(repository, letter, count); activeFile.setTotal( total ); if (count > 1) activeFile.setUp(count - 1); Vector efile = (Vector)efiles.nextElement(); if (efiles.hasMoreElements()) activeFile.setDown(count + 1); activeFile.setLocatie(locatie); activeFile.start(); Enumeration eitems = efile.elements(); // een file heeft altijd meer dan 1 item (risky) Item i = (Item)eitems.nextElement(); activeFile.startItems(i); activeFile.writeItem(i); while (eitems.hasMoreElements()) { i = (Item)eitems.nextElement(); activeFile.writeItem(i); } activeFile.endItems(i); activeFile.end(); activeFile.close(); } catch (IOException e) { System.out.println("Hier gaat iets niet goed!"); System.out.println(e.toString()); e.printStackTrace(); System.exit(1); } } } public void startItems(Item first) {}; public void endItems(Item last) {}; public void writeItem(Item i) throws IOException { count++; if (count > aantal) { count = 1; files.addElement(items); items = new Vector(); } items.addElement(i); } }; --- NEW FILE: WMLHandler.java --- package com.egonw.woc.files; import java.util.*; import java.io.*; import org.openscience.dadml.*; import com.egonw.woc.*; import com.egonw.woc.exception.*; import com.egonw.woc.wml.*; import com.egonw.woc.util.*; import org.xml.sax.*; import org.xml.sax.helpers.*; import javax.xml.transform.*; public class WMLHandler extends DefaultHandler { private final int UNKNOWN = -1; private final int DICT = -2; private final int LANG = -3; private final int INDEX = -4; private final int ANY = -6; private final int WOC = -7; private final int REFERENCE = -8; private final int XSL = -9; private final int IMPORT = -10; private final int TMASSOC = -11; private final int TMASSOCRL = -12; private final int EXCLUDE = 13; private final int CI_MSDS = 1; private final int CI_CAS = 2; private final int CI_SMILES = 3; private final int CI_WOC = 4; private final int CI_UNNR = 5; private final int CI_ENR = 6; private final int CI_NSC = 7; private XItem item; private int CurrentElement; private int CI; private String NameClass; private Memo memo; private StringBuffer xslString; private String importFile; private XNODE media; private XNODE formula; private XNODE insert; private XNODE abbrev; private XNODE meervoud; private boolean any_on; private boolean xsl_on; private boolean lang_on; private XNAME xname; private XLANG xlang; private TopicMap tm; private Vector names; private Vector formulas; private Vector medias; private Vector v; private Vector groups; private Vector zies; private Vector vergs; private TMAssoc rls; private String DiscDate; private String DiscPlace; private String DiscPersons; private Path repository; private javax.xml.transform.TransformerFactory tFactory; public WMLHandler (Path repository) { item = new XItem(); xname = new XNAME(); this.repository = repository; tFactory = TransformerFactory.newInstance(); }; public XItem returnItem () { return (XItem)item; } public void startDocument () { item = new XItem(); any_on = false; xsl_on = false; } public void endDocument () {} public void startElement (String URI, String name, String qname, Attributes atts) { setCurrentElement(name); switch (CurrentElement) { case ANY : StringBuffer sb = new StringBuffer(); sb.append("<" + name); for (int i = 0; i < atts.getLength(); i++) { sb.append(" " + atts.getQName(i) + "=\"" + atts.getValue(i) + "\""); } sb.append(">"); memo.add(sb.toString()); break; case XSL : xslString.append("<" + name); for (int i = 0; i < atts.getLength(); i++) { xslString.append(" " + atts.getQName(i) + "=\"" + atts.getValue(i) + "\""); } xslString.append(">"); break; case XItem.XTOPICMAP: tm = new TopicMap(); break; case TMASSOC: rls = new TMAssoc(); for (int i = 0; i < atts.getLength(); i++) { if (atts.getQName(i).equals("id")) { rls.setName(atts.getValue(i)); } } break; case TMASSOCRL: for (int i = 0; i < atts.getLength(); i++) { if (atts.getQName(i).equals("xlink:href")) { rls.addRL(atts.getValue(i)); } }; break; case XItem.XDISCDATE: DiscDate = new String(); break; case XItem.XDISCPLACE: DiscPlace = new String(); break; case WOC : medias = new Vector(); break; case XItem.XAFKORT : abbrev = new XNODE(); break; case XItem.XMEERVOUD : meervoud = new XNODE(); break; case Item.ITEM : for (int i = 0; i < atts.getLength(); i++) { if (atts.getQName(i).equals("CODE") || atts.getQName(i).equals("FILE")) { item.add(XItem.XFILENAME, atts.getValue(i)); } else if (atts.getQName(i).equals("ID")) { item.add(XItem.WOCNR, atts.getValue(i)); } else if (atts.getQName(i).equals("CLASS")) { XTYPE xt = new XTYPE(); if (item.contains(XItem.XTYPE)) { xt = (XTYPE)item.get(XItem.XTYPE); } if ( atts.getValue(i).equals("CHEMICAL")) { item.add(Item.CHEMICAL, new String()); xt.setType(XTYPE.CHEMICAL); } else if (atts.getValue(i).equals("ABBREV")) { xt.setType(XTYPE.ABBREV); } else if (atts.getValue(i).equals("POLYMER")) { xt.setType(XTYPE.POLYMER); } else if (atts.getValue(i).equals("MIXTURE")) { xt.setType(XTYPE.MIXTURE); } else if (atts.getValue(i).equals("GROUP")) { xt.setType(XTYPE.GROUP); } else if (atts.getValue(i).equals("NOMENCLATURE")) { xt.setType(XTYPE.IUPAC_RULE); } else if (atts.getValue(i).equals("REACTION")) { xt.setType(XTYPE.REACTION); } item.add(XItem.XTYPE, xt); } } item.add(Item.PICTUREDIR, "other"); groups = new Vector(); zies = new Vector(); vergs = new Vector(); break; case Item.NAME : xname = new XNAME(); for (int i = 0; i < atts.getLength(); i++) { if (atts.getQName(i).equals("CLASS")) { xname.setCLASS(atts.getValue(i)); } } break; case DICT : names = new Vector(); formulas = new Vector(); v = new Vector(); break; case REFERENCE : v = new Vector(); break; case INDEX : // System.out.println("Index found"); for (int i = 0; i < atts.getLength(); i++) { // System.out.println(" Att: " + atts.getQName(i)); // System.out.println(" " + atts.getValue(i)); if (atts.getQName(i).equals("CLASS")) { if (atts.getValue(i).equals("MSDS-CODE")) { CI = CI_MSDS; } else if (atts.getValue(i).equals("SMILES")) { CI = CI_SMILES; } else if (atts.getValue(i).equals("CAS-NUMBER")) { CI = CI_CAS; } else if (atts.getValue(i).equals("WOC-NUMBER")) { CI = CI_WOC; } else if (atts.getValue(i).equals("UN-NUMBER")) { CI = CI_UNNR; } else if (atts.getValue(i).equals("NSC-NUMBER")) { CI = CI_NSC; } else if (atts.getValue(i).equals("E-NUMBER")) { CI = CI_ENR; } else { CI = UNKNOWN; } } } break; case XItem.XMEDIA : media = new XNODE(); for (int i = 0; i < atts.getLength(); i++) media.setATT(atts.getQName(i), atts.getValue(i)); break; case XItem.XINSERTS : insert = new XNODE(); for (int i = 0; i < atts.getLength(); i++) insert.setATT(atts.getQName(i), atts.getValue(i)); break; case XItem.XFORMULA : formula = new XNODE(); for (int i = 0; i < atts.getLength(); i++) formula.setATT(atts.getQName(i), atts.getValue(i)); break; case LANG : xlang = new XLANG(); for (int i = 0; i < atts.getLength(); i++) { if (atts.getQName(i).equals("ID")) { xlang.setID(atts.getValue(i)); } else if (atts.getQName(i).equals("LIDWOORD")) { xlang.setLIDWOORD(atts.getValue(i)); } } break; case Item.COMMENT : memo = new Memo(); break; case IMPORT : String importItem = ""; String importMacro = ""; importFile = ""; for (int i = 0; i < atts.getLength(); i++) { if (atts.getQName(i).equals("select")) { importItem = atts.getValue(i); } else if (atts.getQName(i).equals("macro")) { importMacro = atts.getValue(i); } else if (atts.getQName(i).equals("ITEM")) { importFile = atts.getValue(i); } } xslString = new StringBuffer(); xslString.append("<xsl:stylesheet xmlns:xsl=\"http://www.w3.org/XSL/Transform/1.0\">\n"); // expand macro's String repos = importItem.substring(importItem.indexOf("@")+1); String item = importItem.substring(0,importItem.indexOf("@")); Path irepos = new Path(repos); if (importMacro.equals("picture")) { xslString.append(" <xsl:import href=\"file://" + irepos.getPhysicalRoot() + irepos.getWMLSubDir() + "/picture.xsl\"/>"); } // deduce importFile if not given if (importItem.length() > 0) { // oke import:* was used if (importItem.indexOf("@") == -1) { System.out.println("Error: import:* select does not specify repository!"); } else { importFile = irepos.getPhysicalRoot() + irepos.getWMLSubDir() + "/" + item + ".xml"; } } else { importFile = repository.getPhysicalRoot() + repository.getDataSubDir() + importFile; } //System.out.println("XSLT: importing " + importFile); break; case Item.VOORBEELD : memo = new Memo(); break; } } public void endElement (String URI, String name, String qname) { setCurrentElement(name); switch (CurrentElement) { case ANY : StringBuffer sb = new StringBuffer(); sb.append("</" + name + ">"); memo.add(sb.toString()); break; case XSL : xslString.append("</" + name + ">"); break; case Item.ITEM : if (!groups.isEmpty()) { groups.trimToSize(); item.add(Item.GROUP, groups); } if (!zies.isEmpty()) { zies.trimToSize(); item.add(Item.ZIE, zies); } if (!vergs.isEmpty()) { vergs.trimToSize(); item.add(Item.VERGELIJK, vergs); } break; case XItem.XDISCDATE : item.add(XItem.XDISCDATE, DiscDate); break; case XItem.XDISCPLACE : item.add(XItem.XDISCPLACE, DiscPlace); break; case XItem.XTOPICMAP : item.add(XItem.XTOPICMAP, tm); break; case TMASSOC: tm.addAssocRL(rls); break; case TMASSOCRL: break; case Item.NAME : names.addElement(xname); break; case LANG : xname.addLANG(xlang); break; case DICT : if (!names.isEmpty()) { names.trimToSize(); item.add(XItem.XNAME, names); } if (!item.contains(Item.NAME)) { // get name from DICT Enumeration xnames = names.elements(); while (xnames.hasMoreElements() && !item.contains(Item.NAME)) { XNAME xname = (XNAME)(xnames.nextElement()); if (xname.getName("NL").length() > 0) { // System.out.println("Deducing name from DICT..."); item.add(Item.NAME, xname.getName("NL")); } } } if (!formulas.isEmpty()) { formulas.trimToSize(); item.add(XItem.XFORMULA, formulas); } if (!v.isEmpty()) { v.trimToSize(); item.add(XItem.XAFKORT, v); } if (!item.contains(Item.NAME)) { // get name from DICT Enumeration xnames = v.elements(); while (xnames.hasMoreElements() && !item.contains(Item.NAME)) { XNODE xname = (XNODE)(xnames.nextElement()); if (xname.getCDATA().length() > 0) { // System.out.println("Deducing name from DICT..."); item.add(Item.NAME, xname.getCDATA()); } } } if (!item.contains(Item.NAME)) { System.out.println("No suitable name detected (" + item.get(XItem.XCODE) + ")!"); // System.out.println(names.toString()); } break; case REFERENCE : if (!v.isEmpty()) { v.trimToSize(); item.add(Item.URL, v); } break; case Item.COMMENT : Vector commentlist; if (item.contains(Item.COMMENT)) { commentlist = (Vector)item.get(Item.COMMENT); } else { commentlist = new Vector(); } /** return platte tekst */ commentlist.addElement( memo ); /** vervang oude Vector met nieuwe */ item.add(Item.COMMENT,commentlist); break; case IMPORT : xslString.append("\n</xsl:stylesheet>"); // System.out.println(xslString.toString()); // and here should begin the hidious task of parsing the // xsl code String URL = "file://" + importFile; // System.out.println(URL); File in = new File(importFile); if (!in.exists()) { System.out.println("File (" + importFile + ") not found!"); System.exit(1); } OutputStream htmlStream = (OutputStream)new ByteArrayOutputStream(); try { Transformer transformer = tFactory.newTransformer( new javax.xml.transform.stream.StreamSource( new StringBufferInputStream(xslString.toString()) ) ); transformer.transform( new javax.xml.transform.stream.StreamSource("URL"), new javax.xml.transform.stream.StreamResult(htmlStream) ); memo.add(htmlStream.toString()); } catch (Exception e) { System.out.println("Error while parsing: " + e); } break; case Item.VOORBEELD : Vector vblist; if (item.contains(Item.VOORBEELD)) { vblist = (Vector)item.get(Item.VOORBEELD); } else { vblist = new Vector(); } /** return platte tekst */ vblist.addElement( memo ); /** vervang oude Vector met nieuwe */ ite... [truncated message content] |