*** empty log message ***
authorwneuper
Mon, 30 Aug 2004 18:57:59 +0200
changeset 1776298fe6791907
parent 1775 348e54590a44
child 1777 d624c56ae181
*** empty log message ***
src/java/isac/util/parser/FormalizationDigest.java
src/java/isac/util/parser/XMLParserDigest.java
src/java/isac/wsdialog/DialogGuide.java
     1.1 --- a/src/java/isac/util/parser/FormalizationDigest.java	Mon Aug 30 18:57:59 2004 +0200
     1.2 +++ b/src/java/isac/util/parser/FormalizationDigest.java	Mon Aug 30 18:57:59 2004 +0200
     1.3 @@ -1,12 +1,8 @@
     1.4  /*
     1.5   * Created on Nov 24, 2003
     1.6 - *
     1.7 - * To change the template for this generated file go to
     1.8 - * Window>Preferences>Java>Code Generation>Code and Comments
     1.9   */
    1.10  package isac.util.parser;
    1.11  
    1.12 -import isac.util.InformationProcessor;
    1.13  import isac.util.Formalization;
    1.14  import isac.util.Message;
    1.15  import isac.util.ResponseWrapper;
    1.16 @@ -33,301 +29,300 @@
    1.17  import org.xml.sax.SAXParseException;
    1.18  
    1.19  /**
    1.20 - * @author gismo
    1.21 - *
    1.22 - * To change the template for this generated type comment go to
    1.23 - * Window>Preferences>Java>Code Generation>Code and Comments
    1.24 + * @author Andreas Griesmayer
    1.25   */
    1.26  public class FormalizationDigest {
    1.27  
    1.28 -private Digester digester;
    1.29 - private String dtdPath;
    1.30 +	private Digester digester;
    1.31  
    1.32 - class BridgeErrorHandler implements ErrorHandler {
    1.33 -   public void error(SAXParseException e) {
    1.34 -	 System.out.println("---xml-error " + e);
    1.35 -   }
    1.36 -   public void fatalError(SAXParseException e) {
    1.37 -	 System.out.println("---xml-fatalerror " + e);
    1.38 -   }
    1.39 -   public void warning(SAXParseException e) {
    1.40 -	 System.out.println("---xml-warning " + e);
    1.41 -   }
    1.42 - }
    1.43 +	private String dtdPath;
    1.44  
    1.45 - // auxillary class for feeding the dtd
    1.46 - class BridgeEntityResolver implements EntityResolver {
    1.47 -   String dtd;
    1.48 -   public BridgeEntityResolver(String dtd) {
    1.49 -	 this.dtd = dtd;
    1.50 -   }
    1.51 -   public InputSource resolveEntity(String publicId, String systemId)
    1.52 -	 throws SAXException, IOException {
    1.53 -	 if ((systemId != null) && systemId.endsWith("isac.dtd")) {
    1.54 -	   //System.out.println("------->inside entity resolv");
    1.55 -	   return new InputSource(new StringReader(dtd));
    1.56 -	   //new StringReader("<!ELEMENT dummy EMPTY>"));        
    1.57 -	 } else {
    1.58 -	   return null;
    1.59 -	 }
    1.60 -   }
    1.61 - }
    1.62 +	class BridgeErrorHandler implements ErrorHandler {
    1.63 +		public void error(SAXParseException e) {
    1.64 +			System.err.println("---xml-error " + e);
    1.65 +		}
    1.66  
    1.67 - /**
    1.68 -  * Constructor: create a new XMLParserDigest object
    1.69 -  * @param dtdPath Path to the DTD-File (Document Type Description)
    1.70 -  */
    1.71 - //public FormalizationDigest(String dtdPath) {
    1.72 - public FormalizationDigest(){
    1.73 -   digester = new Digester();
    1.74 -//   digester.setErrorHandler(new BridgeErrorHandler());
    1.75 -   /*this.dtdPath = dtdPath;
    1.76 -   //dtd-File --> String (faster validating)
    1.77 -   StringBuffer sb;
    1.78 -   try {
    1.79 -	 BufferedReader br = new BufferedReader(new FileReader(dtdPath));
    1.80 -	 sb = new StringBuffer();
    1.81 -	 while (br.ready()) {
    1.82 -	   sb.append(br.readLine() + "\n");
    1.83 -	 }
    1.84 -	 // Set dtd for parser validation     
    1.85 -	 digester.setEntityResolver(new BridgeEntityResolver(sb.toString()));
    1.86 -   } catch (FileNotFoundException e) {
    1.87 -	 e.printStackTrace();
    1.88 -   } catch (IOException e) {
    1.89 -	 e.printStackTrace();
    1.90 -   }
    1.91 -*/
    1.92 +		public void fatalError(SAXParseException e) {
    1.93 +			System.err.println("---xml-fatalerror " + e);
    1.94 +		}
    1.95  
    1.96 - 	// Rules for the digester to create a formalization
    1.97 - 	digester.addObjectCreate("EXAMPLE/FORMALIZATION", Formalization.class);
    1.98 - 	digester.addObjectCreate("*/FORMALIZATION/VARIANT", Variant.class);
    1.99 - 	digester.addCallMethod("*/TERMLIST/MATHML/ISA", "addNewIsaString",0);
   1.100 - 	digester.addObjectCreate("*/VARIANT/SPECIFICATION", Specification.class);
   1.101 - 	digester.addObjectCreate("*/SPECIFICATION/THEORY", CalcHeadSimpleID.class);
   1.102 - 	digester.addCallMethod("*/SPECIFICATION/THEORY", "setID", 0);
   1.103 - 	digester.addSetNext("*/SPECIFICATION/THEORY", "setTheory");
   1.104 - 	
   1.105 - 	digester.addObjectCreate("*/SPECIFICATION/PROBLEM", CalcHeadCompoundID.class);
   1.106 - 	digester.addCallMethod("*/SPECIFICATION/PROBLEM/KEY/ID", "addString", 0);
   1.107 - 	digester.addSetNext("*/SPECIFICATION/PROBLEM", "setProblem");
   1.108 +		public void warning(SAXParseException e) {
   1.109 +			System.err.println("---xml-warning " + e);
   1.110 +		}
   1.111 +	}
   1.112  
   1.113 -	digester.addObjectCreate("*/SPECIFICATION/METHOD", CalcHeadCompoundID.class);
   1.114 -	digester.addCallMethod("*/SPECIFICATION/METHOD/KEY/ID", "addString", 0);
   1.115 -	digester.addSetNext("*/SPECIFICATION/METHOD", "setMethod");
   1.116 +	// auxillary class for feeding the dtd
   1.117 +	class BridgeEntityResolver implements EntityResolver {
   1.118 +		String dtd;
   1.119  
   1.120 - 	digester.addSetNext("*/VARIANT/SPECIFICATION", "setSpecification");
   1.121 - 	digester.addSetNext("*/FORMALIZATION/VARIANT", "addNewVariant");
   1.122 - 
   1.123 -   // Rules for the digester to create Objects and fill them from XML-Files
   1.124 -   digester.addObjectCreate("ISAC", ResponseWrapper.class);
   1.125 -   digester.addObjectCreate("*/CALCID", CalcHeadSimpleID.class);
   1.126 -   digester.addCallMethod("*/CALCID", "setID", 0);
   1.127 -   digester.addSetRoot("*/CALCID", "setCalcID");
   1.128 +		public BridgeEntityResolver(String dtd) {
   1.129 +			this.dtd = dtd;
   1.130 +		}
   1.131  
   1.132 -   // Rules for parsing Position
   1.133 -   digester.addObjectCreate("*/POSITION", Position.class);
   1.134 -   digester.addCallMethod("*/POSITION/INTLIST/INT", "addInt", 0);
   1.135 -   digester.addCallMethod("*/POSITION/POS", "setKind", 0);
   1.136 -   digester.addSetNext("*/POSITION", "setPosition");
   1.137 +		public InputSource resolveEntity(String publicId, String systemId)
   1.138 +				throws SAXException, IOException {
   1.139 +			if ((systemId != null) && systemId.endsWith("isac.dtd")) {
   1.140 +				//System.out.println("------->inside entity resolv");
   1.141 +				return new InputSource(new StringReader(dtd));
   1.142 +				//new StringReader("<!ELEMENT dummy EMPTY>"));
   1.143 +			} else {
   1.144 +				return null;
   1.145 +			}
   1.146 +		}
   1.147 +	}
   1.148  
   1.149 -   //	Rules for parsing Formula
   1.150 -   digester.addObjectCreate("*/REFFORMULA/FORMULA", Formula.class);
   1.151 -   digester.addCallMethod("*/REFFORMULA/FORMULA/MATHML/ISA", "setText", 0);
   1.152 -   digester.addSetNext("*/REFFORMULA/FORMULA", "setResponse");
   1.153 +	/**
   1.154 +	 * Constructor: create a new XMLParserDigest object
   1.155 +	 * 
   1.156 +	 * @param dtdPath
   1.157 +	 *            Path to the DTD-File (Document Type Description)
   1.158 +	 */
   1.159 +	//public FormalizationDigest(String dtdPath) {
   1.160 +	public FormalizationDigest() {
   1.161 +		digester = new Digester();
   1.162 +		//   digester.setErrorHandler(new BridgeErrorHandler());
   1.163 +		/*
   1.164 +		 * this.dtdPath = dtdPath; //dtd-File --> String (faster validating)
   1.165 +		 * StringBuffer sb; try { BufferedReader br = new BufferedReader(new
   1.166 +		 * FileReader(dtdPath)); sb = new StringBuffer(); while (br.ready()) {
   1.167 +		 * sb.append(br.readLine() + "\n"); } // Set dtd for parser validation
   1.168 +		 * digester.setEntityResolver(new BridgeEntityResolver(sb.toString())); }
   1.169 +		 * catch (FileNotFoundException e) { e.printStackTrace(); } catch
   1.170 +		 * (IOException e) { e.printStackTrace(); }
   1.171 +		 */
   1.172  
   1.173 -   //	Rules for parsing CalcHead
   1.174 -   digester.addObjectCreate("*/CALCHEAD", CalcHead.class);
   1.175 -   digester.addCallMethod("*/CALCHEAD/HEAD", "setHead", 0);
   1.176 -   digester.addCallMethod("*/CALCHEAD/BELONGSTO", "setBelongsTo", 0);
   1.177 -   addItemList(digester, "Given");
   1.178 -   addItemList(digester, "Where");
   1.179 -   addItemList(digester, "Find");
   1.180 -   addItemList(digester, "Relate");
   1.181 -   digester.addObjectCreate("*/CALCHEAD/SPECIFICATION", Specification.class);
   1.182 -   digester.addObjectCreate("*/CALCHEAD/SPECIFICATION/THEORYID", CalcHeadSimpleID.class);
   1.183 -   digester.addCallMethod("*/CALCHEAD/SPECIFICATION/THEORYID", "setID", 0);
   1.184 -   digester.addSetNext("*/CALCHEAD/SPECIFICATION/THEORYID", "setTheory");
   1.185 -   digester.addObjectCreate("*/CALCHEAD/SPECIFICATION/PROBLEMID", CalcHeadCompoundID.class);
   1.186 -   digester.addCallMethod("*/CALCHEAD/SPECIFICATION/PROBLEMID/STRINGLIST/STRING", "addString", 0);
   1.187 -   digester.addSetNext("*/CALCHEAD/SPECIFICATION/PROBLEMID", "setProblem");
   1.188 -   digester.addObjectCreate("*/CALCHEAD/SPECIFICATION/METHODID", CalcHeadCompoundID.class);
   1.189 -   digester.addCallMethod("*/CALCHEAD/SPECIFICATION/METHODID/STRINGLIST/STRING", "addString", 0);
   1.190 -   digester.addSetNext("*/CALCHEAD/SPECIFICATION/METHODID", "setMethod");
   1.191 -   digester.addSetNext("*/CALCHEAD/SPECIFICATION", "setSpecification");
   1.192 -    
   1.193 -   digester.addSetNext("*/CALCHEAD", "setResponse");
   1.194 +		// Rules for the digester to create a formalization
   1.195 +		digester.addObjectCreate("EXAMPLE/FORMALIZATION", Formalization.class);
   1.196 +		digester.addObjectCreate("*/FORMALIZATION/VARIANT", Variant.class);
   1.197 +		digester.addCallMethod("*/TERMLIST/MATHML/ISA", "addNewIsaString", 0);
   1.198 +		digester
   1.199 +				.addObjectCreate("*/VARIANT/SPECIFICATION", Specification.class);
   1.200 +		digester.addObjectCreate("*/SPECIFICATION/THEORY",
   1.201 +				CalcHeadSimpleID.class);
   1.202 +		digester.addCallMethod("*/SPECIFICATION/THEORY", "setID", 0);
   1.203 +		digester.addSetNext("*/SPECIFICATION/THEORY", "setTheory");
   1.204  
   1.205 -   //	Rules for parsing various Tactic Objects
   1.206 -   //	Rules for parsing SimpleTactic
   1.207 -   digester.addObjectCreate("*/SIMPLETACTIC", SimpleTactic.class);
   1.208 -   digester.addCallMethod("*/SIMPLETACTIC/MATHML/ISA", "setArgument", 0);
   1.209 -   digester.addSetProperties("*/SIMPLETACTIC", "name", "name");
   1.210 -   digester.addSetNext("*/SIMPLETACTIC", "setResponse");
   1.211 +		digester.addObjectCreate("*/SPECIFICATION/PROBLEM",
   1.212 +				CalcHeadCompoundID.class);
   1.213 +		digester
   1.214 +				.addCallMethod("*/SPECIFICATION/PROBLEM/KEY/ID", "addString", 0);
   1.215 +		digester.addSetNext("*/SPECIFICATION/PROBLEM", "setProblem");
   1.216  
   1.217 -   //	Rules for parsing KeyListTactic
   1.218 -   digester.addObjectCreate("*/STRINGLISTTACTIC", StringListTactic.class);
   1.219 -   digester.addCallMethod("*/STRINGLISTTACTIC/STRINGLIST/STRING", "addKey", 0);
   1.220 -   digester.addSetProperties("*/STRINGLISTTACTIC", "name", "name");
   1.221 -   digester.addSetNext("*/STRINGLISTTACTIC", "setResponse");
   1.222 +		digester.addObjectCreate("*/SPECIFICATION/METHOD",
   1.223 +				CalcHeadCompoundID.class);
   1.224 +		digester.addCallMethod("*/SPECIFICATION/METHOD/KEY/ID", "addString", 0);
   1.225 +		digester.addSetNext("*/SPECIFICATION/METHOD", "setMethod");
   1.226  
   1.227 -   //	Rules for parsing RewriteSetTactic
   1.228 -   digester.addObjectCreate("*/REWRITESETTACTIC", RewriteSet.class);
   1.229 -   digester.addCallMethod("*/REWRITESETTACTIC/RULESET", "setRuleSet", 0);
   1.230 -   digester.addSetProperties("*/REWRITESETTACTIC", "name", "name");
   1.231 -   digester.addSetNext("*/REWRITESETTACTIC", "setResponse");
   1.232 +		digester.addSetNext("*/VARIANT/SPECIFICATION", "setSpecification");
   1.233 +		digester.addSetNext("*/FORMALIZATION/VARIANT", "addNewVariant");
   1.234  
   1.235 -   //	Rules for parsing RewriteSetInstTactic
   1.236 -   digester.addObjectCreate("*/REWRITESETINSTTACTIC", RewriteSetInst.class);
   1.237 -   digester.addCallMethod("*/REWRITESETINSTTACTIC/RULESET", "setRuleSet", 0);
   1.238 -   digester.addCallMethod(
   1.239 -	 "*/REWRITESETINSTTACTIC/SUBSTITUTION/PAIR/VARIABLE/MATHML/ISA",
   1.240 -	 "setVariable",
   1.241 -	 0);
   1.242 -   digester.addCallMethod(
   1.243 -	 "*/REWRITESETINSTTACTIC/SUBSTITUTION/PAIR/VALUE/MATHML/ISA",
   1.244 -	 "setValue",
   1.245 -	 0);
   1.246 -   digester.addSetProperties("*/REWRITESETINSTTACTIC", "name", "name");
   1.247 -   digester.addSetNext("*/REWRITESETINSTTACTIC", "setResponse");
   1.248 -    
   1.249 -   // Rules for parsing SubProblemTactic
   1.250 -   digester.addObjectCreate("*/SUBPROBLEMTACTIC", SubProblemTactic.class);
   1.251 -   digester.addCallMethod("*/SUBPROBLEMTACTIC/THEORY", "setTheoryID", 0);
   1.252 -   digester.addCallMethod("*/SUBPROBLEMTACTIC/PROBLEM/STRINGLIST/STRING", "addProblemString", 0);
   1.253 -   digester.addSetProperties("*/SUBPROBLEMTACTIC", "name", "name");
   1.254 -   digester.addSetNext("*/SUBPROBLEMTACTIC", "setResponse");
   1.255 +		// Rules for the digester to create Objects and fill them from XML-Files
   1.256 +		digester.addObjectCreate("ISAC", ResponseWrapper.class);
   1.257 +		digester.addObjectCreate("*/CALCID", CalcHeadSimpleID.class);
   1.258 +		digester.addCallMethod("*/CALCID", "setID", 0);
   1.259 +		digester.addSetRoot("*/CALCID", "setCalcID");
   1.260  
   1.261 -   //	Rules for parsing CalcIterator move message
   1.262 -   digester.addObjectCreate("*/CALCITERATOR", Message.class);
   1.263 -   digester.addCallMethod("*/CALCITERATOR/ERROR", "setError", 0);
   1.264 -   digester.addCallMethod("*/CALCITERATOR/OK", "setOK", 0);
   1.265 -   digester.addSetNext("*/CALCITERATOR", "setResponse");
   1.266 +		// Rules for parsing Position
   1.267 +		digester.addObjectCreate("*/POSITION", Position.class);
   1.268 +		digester.addCallMethod("*/POSITION/INTLIST/INT", "addInt", 0);
   1.269 +		digester.addCallMethod("*/POSITION/POS", "setKind", 0);
   1.270 +		digester.addSetNext("*/POSITION", "setPosition");
   1.271  
   1.272 -   //	Rules for parsing CalcIterator constructor message
   1.273 -   digester.addObjectCreate("*/ADDUSER", CalcHeadSimpleID.class);
   1.274 -   digester.addCallMethod("*/ADDUSER/USERID", "setID", 0);
   1.275 -   digester.addSetNext("*/ADDUSER", "setResponse");
   1.276 - }
   1.277 +		//	Rules for parsing Formula
   1.278 +		digester.addObjectCreate("*/REFFORMULA/FORMULA", Formula.class);
   1.279 +		digester.addCallMethod("*/REFFORMULA/FORMULA/MATHML/ISA", "setText", 0);
   1.280 +		digester.addSetNext("*/REFFORMULA/FORMULA", "setResponse");
   1.281  
   1.282 - private void addItemList(Digester digester, String modPart) {
   1.283 -   String modPartUp = modPart.toUpperCase();
   1.284 -   // Rules for parsing ItemLists in the model part of a CalcHead: Given Find Where Relate
   1.285 -   digester.addObjectCreate("*/CALCHEAD/MODEL/" + modPartUp, CalcHeadItemList.class);
   1.286 -   digester.addObjectCreate("*/CALCHEAD/MODEL/" + modPartUp + "/ITEM", CalcHeadItem.class);
   1.287 -   digester.addSetProperties("*/CALCHEAD/MODEL/" + modPartUp + "/ITEM", "status", "itemStatus");
   1.288 -   digester.addCallMethod("*/CALCHEAD/MODEL/" + modPartUp + "/ITEM/MATHML/ISA", "setText", 0);
   1.289 -   digester.addSetNext("*/CALCHEAD/MODEL/" + modPartUp + "/ITEM", "addItem");
   1.290 -   digester.addSetNext("*/CALCHEAD/MODEL/" + modPartUp, "set" + modPart);
   1.291 - }
   1.292 +		//	Rules for parsing CalcHead
   1.293 +		digester.addObjectCreate("*/CALCHEAD", CalcHead.class);
   1.294 +		digester.addCallMethod("*/CALCHEAD/HEAD", "setHead", 0);
   1.295 +		digester.addCallMethod("*/CALCHEAD/BELONGSTO", "setBelongsTo", 0);
   1.296 +		addItemList(digester, "Given");
   1.297 +		addItemList(digester, "Where");
   1.298 +		addItemList(digester, "Find");
   1.299 +		addItemList(digester, "Relate");
   1.300 +		digester.addObjectCreate("*/CALCHEAD/SPECIFICATION",
   1.301 +				Specification.class);
   1.302 +		digester.addObjectCreate("*/CALCHEAD/SPECIFICATION/THEORYID",
   1.303 +				CalcHeadSimpleID.class);
   1.304 +		digester.addCallMethod("*/CALCHEAD/SPECIFICATION/THEORYID", "setID", 0);
   1.305 +		digester.addSetNext("*/CALCHEAD/SPECIFICATION/THEORYID", "setTheory");
   1.306 +		digester.addObjectCreate("*/CALCHEAD/SPECIFICATION/PROBLEMID",
   1.307 +				CalcHeadCompoundID.class);
   1.308 +		digester.addCallMethod(
   1.309 +				"*/CALCHEAD/SPECIFICATION/PROBLEMID/STRINGLIST/STRING",
   1.310 +				"addString", 0);
   1.311 +		digester.addSetNext("*/CALCHEAD/SPECIFICATION/PROBLEMID", "setProblem");
   1.312 +		digester.addObjectCreate("*/CALCHEAD/SPECIFICATION/METHODID",
   1.313 +				CalcHeadCompoundID.class);
   1.314 +		digester.addCallMethod(
   1.315 +				"*/CALCHEAD/SPECIFICATION/METHODID/STRINGLIST/STRING",
   1.316 +				"addString", 0);
   1.317 +		digester.addSetNext("*/CALCHEAD/SPECIFICATION/METHODID", "setMethod");
   1.318 +		digester.addSetNext("*/CALCHEAD/SPECIFICATION", "setSpecification");
   1.319  
   1.320 - /**
   1.321 -  * Set whether or not using the DTD for validating  
   1.322 -  * @param validating 
   1.323 -  * <UL>
   1.324 -  * <LI>true: XML is tested for validity against DTD<LI>
   1.325 -  * <LI>false: XML is only tested for well-formed-ness<LI>   
   1.326 -  * </UL>
   1.327 -  */
   1.328 - public void setValidating(boolean validating) {
   1.329 -   digester.setValidating(validating);
   1.330 - }
   1.331 - /**
   1.332 -  * Parse an XML string to Java Object(s)
   1.333 -  * @param xmlString the string containing the XML content
   1.334 -  * @return ResponseWrapper containing the CalcID and the parsed Object
   1.335 -  */
   1.336 - public Formalization parseFormalization(String xmlString) {
   1.337 -   Object o = null;
   1.338 - //  xmlString =
   1.339 -//	 "<?xml version=\"1.0\"?>"//<!DOCTYPE ISAC SYSTEM \""
   1.340 -	   //+ dtdPath
   1.341 -	   //+ "\">" 
   1.342 -//	   +"<ISAC>"
   1.343 -//	   xmlString
   1.344 -//	   + "</ISAC>";        	
   1.345 -//;
   1.346 -   encodeEntities(xmlString);
   1.347 -   try {
   1.348 -	 digester.clear();
   1.349 -	 //System.out.println("root === " + digester.getRoot());
   1.350 -	 o = digester.parse(new InputSource(new StringReader(xmlString)));
   1.351 -	 //System.out.println("--------------->" + xmlString);
   1.352 -   } catch (IOException e) {
   1.353 -	 e.printStackTrace();
   1.354 -   } catch (SAXException e) {
   1.355 -	 e.printStackTrace();
   1.356 -   }
   1.357 -   Formalization form = (Formalization)o;
   1.358 -   //System.out.println(wrapper.getCalcID().toSMLString());
   1.359 -   return form;
   1.360 - }
   1.361 - /**
   1.362 -  * Parse an XML string to Java Object(s)
   1.363 -  * @param xmlString the string containing the XML content
   1.364 -  * @return ResponseWrapper containing the CalcID and the parsed Object
   1.365 -  */
   1.366 - public ResponseWrapper parse(String xmlString) {
   1.367 -   Object o = null;
   1.368 -   xmlString =
   1.369 -	 "<?xml version=\"1.0\"?>"//<!DOCTYPE ISAC SYSTEM \""
   1.370 -	   //+ dtdPath
   1.371 -	   //+ "\">" 
   1.372 //	   +"<ISAC>"
   1.373 -	   + xmlString
   1.374 -//	   + "</ISAC>";        	
   1.375 -;
   1.376 -   encodeEntities(xmlString);
   1.377 -   try {
   1.378 -	 digester.clear();
   1.379 -	 //System.out.println("root === " + digester.getRoot());
   1.380 -	 o = digester.parse(new InputSource(new StringReader(xmlString)));
   1.381 -	 //System.out.println("--------------->" + xmlString);
   1.382 -   } catch (IOException e) {
   1.383 -	 e.printStackTrace();
   1.384 -   } catch (SAXException e) {
   1.385 -	 e.printStackTrace();
   1.386 -   }
   1.387 -   ResponseWrapper wrapper = (ResponseWrapper)o;
   1.388 -   //System.out.println(wrapper.getCalcID().toSMLString());
   1.389 -   return wrapper;
   1.390 - }
   1.391 -	
   1.392 - public static void encodeEntities(String xmlString) {
   1.393 -   xmlString = xmlString.replaceAll(" & ", "&amp;");
   1.394 -   xmlString = xmlString.replaceAll(" > ", "&gt;");
   1.395 -   xmlString = xmlString.replaceAll(" < ", "&lt;");
   1.396 - }
   1.397 +		digester.addSetNext("*/CALCHEAD", "setResponse");
   1.398  
   1.399 - public static void decodeEntities(String xmlString) {
   1.400 -   xmlString = xmlString.replaceAll("&amp;", " & ");
   1.401 -   xmlString = xmlString.replaceAll("&gt;", " > ");
   1.402 -   xmlString = xmlString.replaceAll("&lt;", " < ");
   1.403 - }
   1.404 +		//	Rules for parsing various Tactic Objects
   1.405 +		//	Rules for parsing SimpleTactic
   1.406 +		digester.addObjectCreate("*/SIMPLETACTIC", SimpleTactic.class);
   1.407 +		digester.addCallMethod("*/SIMPLETACTIC/MATHML/ISA", "setArgument", 0);
   1.408 +		digester.addSetProperties("*/SIMPLETACTIC", "name", "name");
   1.409 +		digester.addSetNext("*/SIMPLETACTIC", "setResponse");
   1.410  
   1.411 - public static void main(String[] args) {    
   1.412 -   FormalizationDigest d =
   1.413 -	 new FormalizationDigest();//"/netshares/studenthomes/rgradisc/workspace/isac/isac/util/isac.dtd");
   1.414 -   System.out.println(
   1.415 -	 d.parse(
   1.416 -	   "<ISAC><NEXTTAC><CALCID> 1 </CALCID><REWRITESETTACTIC name=\"Rewrite_Set\"><RULESET> Test_simplify</RULESET></REWRITESETTACTIC></NEXTTAC></ISAC>"));
   1.417 -   System.out.println(
   1.418 -	 d.parse(
   1.419 -	   "<ISAC><NEXTTAC><CALCID> 1 </CALCID><SIMPLETACTIC name=\"Add_Given\"><MATHML><ISA>equality (1 + -1 * 2 + x = 0)</ISA></MATHML></SIMPLETACTIC></NEXTTAC></ISAC>"));
   1.420 -   System.out.println(d.parse("<ISAC></ISAC>"));
   1.421 +		//	Rules for parsing KeyListTactic
   1.422 +		digester.addObjectCreate("*/STRINGLISTTACTIC", StringListTactic.class);
   1.423 +		digester.addCallMethod("*/STRINGLISTTACTIC/STRINGLIST/STRING",
   1.424 +				"addKey", 0);
   1.425 +		digester.addSetProperties("*/STRINGLISTTACTIC", "name", "name");
   1.426 +		digester.addSetNext("*/STRINGLISTTACTIC", "setResponse");
   1.427  
   1.428 -	System.out.println("parse example");
   1.429 -	System.out.println(d.parseFormalization("<EXAMPLE><FORMALIZATION>   </FORMALIZATION></EXAMPLE> "));
   1.430 -	System.out.println(d.parseFormalization("<EXAMPLE><FORMALIZATION>    <VARIANT>     <TERMLIST> 	<MATHML> 	  <ISA> \"equality (1+-1*2+x=0)\" </ISA> 	</MATHML> 	"
   1.431 -	    +"<MATHML>	  <ISA> \"solveFor x\" </ISA> 	</MATHML>  "
   1.432 -	    +"	<MATHML>  	  <ISA> \"solutions L\" </ISA>  	</MATHML>      </TERMLIST>   "
   1.433 -	    +"   <SPECIFICATION>  	<THEORY> \"Test.thy\" </THEORY>  "
   1.434 -		+"	<PROBLEM>  	  <KEY>  	    <ID> \"linear\" </ID>  	    <ID> \"univariate\" </ID>  	    <ID> \"equation\" </ID>  	    <ID> \"test\" </ID>  	  </KEY>  	</PROBLEM>  	"
   1.435 -		+"  <METHOD>  	  <KEY>  	    <ID> \"Test\" </ID>  	    <ID> \"solve_linear\" </ID>  	  </KEY>  	</METHOD>      "
   1.436 -		+"</SPECIFICATION>      <HIDE> </HIDE>      <DETAIL> </DETAIL>    </VARIANT>  </FORMALIZATION></EXAMPLE> "));
   1.437 -   System.out.println("done");
   1.438 -   String session = InformationProcessor.login("gismo", "gismo");
   1.439 -//   System.out.println(InformationProcessor.loadXML(session, "exp", "exp_IsacCore_Tests_1a.xml"));
   1.440 -   System.out.println(d.parseFormalization(InformationProcessor.loadXML(session, "exp", "exp_IsacCore_Tests_1a.xml")));
   1.441 -   
   1.442 - };
   1.443 -}
   1.444 +		//	Rules for parsing RewriteSetTactic
   1.445 +		digester.addObjectCreate("*/REWRITESETTACTIC", RewriteSet.class);
   1.446 +		digester.addCallMethod("*/REWRITESETTACTIC/RULESET", "setRuleSet", 0);
   1.447 +		digester.addSetProperties("*/REWRITESETTACTIC", "name", "name");
   1.448 +		digester.addSetNext("*/REWRITESETTACTIC", "setResponse");
   1.449 +
   1.450 +		//	Rules for parsing RewriteSetInstTactic
   1.451 +		digester
   1.452 +				.addObjectCreate("*/REWRITESETINSTTACTIC", RewriteSetInst.class);
   1.453 +		digester.addCallMethod("*/REWRITESETINSTTACTIC/RULESET", "setRuleSet",
   1.454 +				0);
   1.455 +		digester.addCallMethod(
   1.456 +				"*/REWRITESETINSTTACTIC/SUBSTITUTION/PAIR/VARIABLE/MATHML/ISA",
   1.457 +				"setVariable", 0);
   1.458 +		digester.addCallMethod(
   1.459 +				"*/REWRITESETINSTTACTIC/SUBSTITUTION/PAIR/VALUE/MATHML/ISA",
   1.460 +				"setValue", 0);
   1.461 +		digester.addSetProperties("*/REWRITESETINSTTACTIC", "name", "name");
   1.462 +		digester.addSetNext("*/REWRITESETINSTTACTIC", "setResponse");
   1.463 +
   1.464 +		// Rules for parsing SubProblemTactic
   1.465 +		digester.addObjectCreate("*/SUBPROBLEMTACTIC", SubProblemTactic.class);
   1.466 +		digester.addCallMethod("*/SUBPROBLEMTACTIC/THEORY", "setTheoryID", 0);
   1.467 +		digester.addCallMethod("*/SUBPROBLEMTACTIC/PROBLEM/STRINGLIST/STRING",
   1.468 +				"addProblemString", 0);
   1.469 +		digester.addSetProperties("*/SUBPROBLEMTACTIC", "name", "name");
   1.470 +		digester.addSetNext("*/SUBPROBLEMTACTIC", "setResponse");
   1.471 +
   1.472 +		//	Rules for parsing CalcIterator move message
   1.473 +		digester.addObjectCreate("*/CALCITERATOR", Message.class);
   1.474 +		digester.addCallMethod("*/CALCITERATOR/ERROR", "setError", 0);
   1.475 +		digester.addCallMethod("*/CALCITERATOR/OK", "setOK", 0);
   1.476 +		digester.addSetNext("*/CALCITERATOR", "setResponse");
   1.477 +
   1.478 +		//	Rules for parsing CalcIterator constructor message
   1.479 +		digester.addObjectCreate("*/ADDUSER", CalcHeadSimpleID.class);
   1.480 +		digester.addCallMethod("*/ADDUSER/USERID", "setID", 0);
   1.481 +		digester.addSetNext("*/ADDUSER", "setResponse");
   1.482 +	}
   1.483 +
   1.484 +	private void addItemList(Digester digester, String modPart) {
   1.485 +		String modPartUp = modPart.toUpperCase();
   1.486 +		// Rules for parsing ItemLists in the model part of a CalcHead: Given
   1.487 +		// Find Where Relate
   1.488 +		digester.addObjectCreate("*/CALCHEAD/MODEL/" + modPartUp,
   1.489 +				CalcHeadItemList.class);
   1.490 +		digester.addObjectCreate("*/CALCHEAD/MODEL/" + modPartUp + "/ITEM",
   1.491 +				CalcHeadItem.class);
   1.492 +		digester.addSetProperties("*/CALCHEAD/MODEL/" + modPartUp + "/ITEM",
   1.493 +				"status", "itemStatus");
   1.494 +		digester.addCallMethod("*/CALCHEAD/MODEL/" + modPartUp
   1.495 +				+ "/ITEM/MATHML/ISA", "setText", 0);
   1.496 +		digester.addSetNext("*/CALCHEAD/MODEL/" + modPartUp + "/ITEM",
   1.497 +				"addItem");
   1.498 +		digester.addSetNext("*/CALCHEAD/MODEL/" + modPartUp, "set" + modPart);
   1.499 +	}
   1.500 +
   1.501 +	/**
   1.502 +	 * Set whether or not using the DTD for validating
   1.503 +	 * 
   1.504 +	 * @param validating
   1.505 +	 *            <UL>
   1.506 +	 *            <LI>true: XML is tested for validity against DTD
   1.507 +	 *            <LI>
   1.508 +	 *            <LI>false: XML is only tested for well-formed-ness
   1.509 +	 *            <LI>
   1.510 +	 *            </UL>
   1.511 +	 */
   1.512 +	public void setValidating(boolean validating) {
   1.513 +		digester.setValidating(validating);
   1.514 +	}
   1.515 +
   1.516 +	/**
   1.517 +	 * Parse an XML string to Java Object(s)
   1.518 +	 * 
   1.519 +	 * @param xmlString
   1.520 +	 *            the string containing the XML content
   1.521 +	 * @return ResponseWrapper containing the CalcID and the parsed Object
   1.522 +	 */
   1.523 +	public Formalization parseFormalization(String xmlString) {
   1.524 +		Object o = null;
   1.525 +		//  xmlString =
   1.526 +		//	 "<?xml version=\"1.0\"?>"//<!DOCTYPE ISAC SYSTEM \""
   1.527 +		//+ dtdPath
   1.528 +		//+ "\">"
   1.529 +		//	   +"<ISAC>"
   1.530 +		//	   xmlString
   1.531 +		//	   + "</ISAC>";
   1.532 +		//;
   1.533 +		encodeEntities(xmlString);
   1.534 +		try {
   1.535 +			digester.clear();
   1.536 +			//System.out.println("root === " + digester.getRoot());
   1.537 +			o = digester.parse(new InputSource(new StringReader(xmlString)));
   1.538 +			//System.out.println("--------------->" + xmlString);
   1.539 +		} catch (IOException e) {
   1.540 +			e.printStackTrace();
   1.541 +		} catch (SAXException e) {
   1.542 +			e.printStackTrace();
   1.543 +		}
   1.544 +		Formalization form = (Formalization) o;
   1.545 +		//System.out.println(wrapper.getCalcID().toSMLString());
   1.546 +		return form;
   1.547 +	}
   1.548 +
   1.549 +	/**
   1.550 +	 * Parse an XML string to Java Object(s)
   1.551 +	 * 
   1.552 +	 * @param xmlString
   1.553 +	 *            the string containing the XML content
   1.554 +	 * @return ResponseWrapper containing the CalcID and the parsed Object
   1.555 +	 */
   1.556 +	public ResponseWrapper parse(String xmlString) {
   1.557 +		Object o = null;
   1.558 +		xmlString = "<?xml version=\"1.0\"?>"//<!DOCTYPE ISAC SYSTEM \""
   1.559 +				//+ dtdPath
   1.560 +				//+ "\">"
   1.561 +				//	   +"<ISAC>"
   1.562 +				+ xmlString
   1.563 +		//	   + "</ISAC>";
   1.564 +		;
   1.565 +		encodeEntities(xmlString);
   1.566 +		try {
   1.567 +			digester.clear();
   1.568 +			//System.out.println("root === " + digester.getRoot());
   1.569 +			o = digester.parse(new InputSource(new StringReader(xmlString)));
   1.570 +			//System.out.println("--------------->" + xmlString);
   1.571 +		} catch (IOException e) {
   1.572 +			e.printStackTrace();
   1.573 +		} catch (SAXException e) {
   1.574 +			e.printStackTrace();
   1.575 +		}
   1.576 +		ResponseWrapper wrapper = (ResponseWrapper) o;
   1.577 +		//System.out.println(wrapper.getCalcID().toSMLString());
   1.578 +		return wrapper;
   1.579 +	}
   1.580 +
   1.581 +	public static void encodeEntities(String xmlString) {
   1.582 +		xmlString = xmlString.replaceAll(" & ", "&amp;");
   1.583 +		xmlString = xmlString.replaceAll(" > ", "&gt;");
   1.584 +		xmlString = xmlString.replaceAll(" < ", "&lt;");
   1.585 +	}
   1.586 +
   1.587 +	public static void decodeEntities(String xmlString) {
   1.588 +		xmlString = xmlString.replaceAll("&amp;", " & ");
   1.589 +		xmlString = xmlString.replaceAll("&gt;", " > ");
   1.590 +		xmlString = xmlString.replaceAll("&lt;", " < ");
   1.591 +	}
   1.592 +}
   1.593 \ No newline at end of file
     2.1 --- a/src/java/isac/util/parser/XMLParserDigest.java	Mon Aug 30 18:57:59 2004 +0200
     2.2 +++ b/src/java/isac/util/parser/XMLParserDigest.java	Mon Aug 30 18:57:59 2004 +0200
     2.3 @@ -320,40 +320,4 @@
     2.4      xmlString = xmlString.replaceAll("&gt;", " > ");
     2.5      xmlString = xmlString.replaceAll("&lt;", " < ");
     2.6    }
     2.7 -
     2.8 -  public static void main(String[] args) {
     2.9 -    if (args.length != 1) {
    2.10 -      System.out.println("Specify Path to dtd as Parameter");
    2.11 -    }
    2.12 -    XMLParserDigest d =
    2.13 -      new XMLParserDigest(args[0]);
    2.14 -    System.out.println(
    2.15 -      d.parse(
    2.16 -        "<ISAC><NEXTTAC><CALCID> 1 </CALCID><REWRITESETTACTIC name=\"Rewrite_Set\"><RULESET> Test_simplify</RULESET></REWRITESETTACTIC></NEXTTAC></ISAC>"));
    2.17 -    System.out.println(
    2.18 -      d.parse(
    2.19 -        "<ISAC><NEXTTAC><CALCID> 1 </CALCID><SIMPLETACTIC name=\"Add_Given\"><MATHML><ISA>equality (1 + -1 * 2 + x = 0)</ISA></MATHML></SIMPLETACTIC></NEXTTAC></ISAC>"));
    2.20 -    
    2.21 -    //Testing Rewrite Tactic
    2.22 -	System.out.println("----Now testing Rewrite----");
    2.23 -    ResponseWrapper rw = d.parse("<ISAC><REWRITETACTIC name=\"Rewrite\"><THEOREM><ID> all_left </ID><FORMULA><MATHML><ISA> ~ ?b =!= 0 ==> (?a = ?b) = (?a - ?b = 0) </ISA></MATHML></FORMULA></THEOREM></REWRITETACTIC></ISAC>"); 
    2.24 -	Rewrite r = ((Rewrite)rw.getResponse());
    2.25 -	System.out.println(r.getName());
    2.26 -	System.out.println(r.getTheorem().getId());
    2.27 -	System.out.println(r.getTheorem().getFormula());
    2.28 -	System.out.println(r.toSMLString());
    2.29 -	
    2.30 -    //Testing RewriteInst Tactic
    2.31 -	System.out.println("----Now testing RewriteInst----");
    2.32 -	rw = d.parse("<ISAC><REWRITEINSTTACTIC name=\"Rewrite_Inst\"><SUBSTITUTION><PAIR><VARIABLE><MATHML><ISA> bdv </ISA></MATHML></VARIABLE>       <VALUE><MATHML><ISA> x </ISA></MATHML></VALUE></PAIR></SUBSTITUTION><THEOREM><ID> all_left </ID><FORMULA><MATHML>          <ISA> ~ ?b =!= 0 ==> (?a = ?b) = (?a - ?b = 0) </ISA></MATHML></FORMULA></THEOREM></REWRITEINSTTACTIC></ISAC>"); 
    2.33 -	RewriteInst ri = ((RewriteInst)rw.getResponse());
    2.34 -	System.out.println(ri.getName());
    2.35 -	System.out.println(ri.getVariable());
    2.36 -	System.out.println(ri.getValue());	
    2.37 -	System.out.println(ri.getTheorem().getId());
    2.38 -	System.out.println(ri.getTheorem().getFormula());
    2.39 -	System.out.println(ri.toSMLString());
    2.40 -		
    2.41 	System.out.println(d.parse("<ISAC></ISAC>"));
    2.42 -    System.out.println("done");
    2.43 -  };
    2.44  }
     3.1 --- a/src/java/isac/wsdialog/DialogGuide.java	Mon Aug 30 18:57:59 2004 +0200
     3.2 +++ b/src/java/isac/wsdialog/DialogGuide.java	Mon Aug 30 18:57:59 2004 +0200
     3.3 @@ -60,8 +60,8 @@
     3.4  
     3.5    /**
     3.6     * at the beginning of a calculation as well as of a subproblem
     3.7 -   * @param calc_head_
     3.8 -   * @return 
     3.9 +   * @param calc_head_ coming from formalization
    3.10 +   * @return calc_head_ with viestyle set
    3.11     */
    3.12    public CalcHead startSpecifying(CalcHead calc_head_) {
    3.13