[Idrs-commit] CVS: Idrs/dev/src/net/sourceforge/idrs/deploy/macro MacroToXML.class,1.1,1.2 MacroToXM
Brought to you by:
bigman921
|
From: Marc B. <big...@us...> - 2002-01-19 07:00:39
|
Update of /cvsroot/idrs/Idrs/dev/src/net/sourceforge/idrs/deploy/macro
In directory usw-pr-cvs1:/tmp/cvs-serv17234/dev/src/net/sourceforge/idrs/deploy/macro
Modified Files:
MacroToXML.class MacroToXML.java MacroToXMLHandler.class
MacroToXMLHandler.java
Log Message:
Initial macro system built, not yet tested
Index: MacroToXML.class
===================================================================
RCS file: /cvsroot/idrs/Idrs/dev/src/net/sourceforge/idrs/deploy/macro/MacroToXML.class,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
Binary files /tmp/cvsfVMUlV and /tmp/cvsiDSotG differ
Index: MacroToXML.java
===================================================================
RCS file: /cvsroot/idrs/Idrs/dev/src/net/sourceforge/idrs/deploy/macro/MacroToXML.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** MacroToXML.java 2002/01/18 21:34:39 1.4
--- MacroToXML.java 2002/01/19 07:00:36 1.5
***************
*** 1,5 ****
package net.sourceforge.idrs.deploy.macro;
-
import org.xml.sax.*;
import org.xml.sax.helpers.*;
--- 1,4 ----
***************
*** 10,18 ****
public class MacroToXML {
String rmlSrc;
public MacroToXML(String parser, String xmlSrc, boolean isFile) throws Exception {
XMLReader xmlParser = XMLReaderFactory.createXMLReader(parser);
InputSource in;
! MacroToXMLHandler info = new MacroToXMLHandler();
if (isFile) {
in = new InputSource(new InputStreamReader(new FileInputStream(new File(xmlSrc))));
--- 9,19 ----
public class MacroToXML {
String rmlSrc;
+ Writer out;
+ MacroToXMLHandler info;
public MacroToXML(String parser, String xmlSrc, boolean isFile) throws Exception {
XMLReader xmlParser = XMLReaderFactory.createXMLReader(parser);
InputSource in;
! info = new MacroToXMLHandler();
if (isFile) {
in = new InputSource(new InputStreamReader(new FileInputStream(new File(xmlSrc))));
***************
*** 29,33 ****
--- 30,171 ----
}
+ public void setWriter(Writer out) throws IOException {
+ this.out = out;
+ }
+
+ public void transformToXML() throws IOException{
+ int begin=0,end=0,tagEnd;
+ boolean isScript;
+
+ String curr = "", tag="";
+
+ do {
+ end = rmlSrc.indexOf("<");
+ isScript = isScriptTag(end);
+ curr = rmlSrc.substring(begin,end);
+ outText(curr);
+ if (isScript) {
+ tagEnd = outScript(end);
+ }
+ else {
+ tagEnd = readTag(end);
+ outText(curr);
+ tag = rmlSrc.substring(end + 1, tagEnd);
+
+ if (isRMLTag(tag))
+ outTag(tag);
+ else
+ outText(tag);
+ }
+
+ begin = tagEnd + 1;
+ }
+ while (end != -1);
+ }
+
+ protected boolean isScriptTag(int begin) {
+ return rmlSrc.charAt(begin + 1) == info.getScriptChar();
+ }
+
+ protected int outScript(int begin) throws IOException {
+ int end = rmlSrc.indexOf(info.getScriptChar() + ">",begin);
+ boolean isEcho = rmlSrc.charAt(begin + 2) == '=';
+
+ out.write("<" + info.getNameSpace() + ":");
+ out.write( isEcho ? info.getEchoScriptTag() : info.getScriptTag());
+ out.write(">");
+
+ out.write(xmlEncode(rmlSrc.substring((isEcho ? begin + 3 : begin + 2),end)));
+
+ out.write("</" + info.getNameSpace() + ":");
+ out.write( isEcho ? info.getEchoScriptTag() : info.getScriptTag());
+ out.write(">");
+
+ return end + 2;
+ }
+
+ protected void outText(String txt) throws IOException {
+ out.write("<" + info.getNameSpace() + ":" + info.getTextTag() + ">");
+ out.write(xmlEncode(txt));
+ out.write("</" + info.getNameSpace() + ":" + info.getTextTag() + ">");
+ }
+
+ protected int readTag(int begin) {
+ return rmlSrc.indexOf(">", begin);
+ }
+
+ protected boolean isRMLTag(String tag) {
+ int begin=0, end=0;
+ char c;
+ c = tag.charAt(1);
+ String tagName;
+
+ if (c == '/') {
+ begin = 2;
+ }
+ else {
+ begin = 1;
+ }
+
+ tagName = tag.substring(begin,tag.indexOf(" ",begin));
+
+ return info.isRMLTag(tag.toLowerCase().trim());
+ }
+
+ protected void outTag(String tag) throws IOException {
+ int begin=0, end=0;
+ char c;
+ c = tag.charAt(1);
+ String tagName;
+ String atts;
+ StringTokenizer tok;
+ String token;
+
+ if (c == '/') {
+ begin = 2;
+ }
+ else {
+ begin = 1;
+ }
+
+ end = tag.indexOf(" ",begin);
+ tagName = tag.substring(begin,end);
+
+ out.write("<" + ((c=='/') ? "/" : "") + info.getNameSpace() + ":" + info.getCorrectRMLTagName(tagName) + " ");
+
+ begin = end;
+ end = tag.indexOf(">");
+
+ atts = tag.substring(begin + 1,end);
+ tok = new StringTokenizer(atts,"\"",false);
+
+ while (tok.hasMoreTokens()) {
+ token = tok.nextToken();
+ out.write(token);
+ out.write("\"");
+ out.write(xmlEncode(tok.nextToken()));
+ out.write("\"");
+ }
+
+ out.write(">");
+
+ }
+ protected String xmlEncode(String txt) {
+ StringBuffer buffer = new StringBuffer();
+
+ for (int i = 0;i<txt.length();i++) {
+ switch (txt.charAt(i)) {
+ case '&' : buffer.append("&"); break;
+ case '<' : buffer.append("<"); break;
+ case '>' : buffer.append(">"); break;
+ case '\'' : buffer.append("'"); break;
+ case '\"' : buffer.append("""); break;
+ default : buffer.append(txt.charAt(i));
+ }
+ }
+
+ return buffer.toString();
+ }
Index: MacroToXMLHandler.class
===================================================================
RCS file: /cvsroot/idrs/Idrs/dev/src/net/sourceforge/idrs/deploy/macro/MacroToXMLHandler.class,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
Binary files /tmp/cvsssZwbY and /tmp/cvsiiNe6L differ
Index: MacroToXMLHandler.java
===================================================================
RCS file: /cvsroot/idrs/Idrs/dev/src/net/sourceforge/idrs/deploy/macro/MacroToXMLHandler.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** MacroToXMLHandler.java 2002/01/18 15:21:46 1.1
--- MacroToXMLHandler.java 2002/01/19 07:00:36 1.2
***************
*** 12,20 ****
SCHEMA_LOCATION = "schemalocation",
SCHEMA_NAMESPACE = "schemanamespace",
! SCRIPT_CHAR = "scriptchar";
! String nameSpace,rmlSchema,textTag;
char scriptChar;
! LinkedList rmlTags;
StringBuffer currBuff;
--- 12,22 ----
SCHEMA_LOCATION = "schemalocation",
SCHEMA_NAMESPACE = "schemanamespace",
! SCRIPT_CHAR = "scriptchar",
! SCRIPT_TAG = "scipttag",
! ECHO_SCRIPT_TAG = "echoscripttag";
! String nameSpace,rmlSchema,textTag,scriptTag,echoScriptTag;
char scriptChar;
! HashMap rmlTags;
StringBuffer currBuff;
***************
*** 25,29 ****
public MacroToXMLHandler() {
super();
! rmlTags = new LinkedList();
}
--- 27,31 ----
public MacroToXMLHandler() {
super();
! rmlTags = new HashMap();
}
***************
*** 44,48 ****
if (name.equals(RML)) {
! rmlTags.add(currBuff.toString().trim());
}
else if (name.equals(TEXT_TAG)) {
--- 46,50 ----
if (name.equals(RML)) {
! rmlTags.put(currBuff.toString().trim().toLowerCase(),currBuff.toString().trim());
}
else if (name.equals(TEXT_TAG)) {
***************
*** 58,61 ****
--- 60,69 ----
scriptChar = currBuff.toString().trim().charAt(0);
}
+ else if (name.equals(SCRIPT_TAG)) {
+ scriptTag = currBuff.toString();
+ }
+ else if (name.equals(ECHO_SCRIPT_TAG)) {
+ echoScriptTag = currBuff.toString();
+ }
else {
throw new SAXException("Tag : " + rawName + " is not a valid tag");
***************
*** 65,68 ****
--- 73,104 ----
public void characters(char[] ch, int start, int end) {
currBuff.append(ch);
+ }
+
+ public char getScriptChar() {
+ return this.scriptChar;
+ }
+
+ public String getScriptTag() {
+ return this.scriptTag;
+ }
+
+ public String getEchoScriptTag() {
+ return this.echoScriptTag;
+ }
+
+ public String getNameSpace() {
+ return nameSpace;
+ }
+
+ public String getTextTag() {
+ return textTag;
+ }
+
+ public boolean isRMLTag(String tag) {
+ return rmlTags.get(tag) != null;
+ }
+
+ public String getCorrectRMLTagName(String tag) {
+ return (String) rmlTags.get(tag);
}
|