New core for datas.
This commit is contained in:
parent
cc9cc6018d
commit
5609135257
17 changed files with 666 additions and 416 deletions
24
build.xml
24
build.xml
|
@ -11,7 +11,7 @@
|
||||||
<property name="resources" value="resources"/>
|
<property name="resources" value="resources"/>
|
||||||
<property name="debug" value="on"/>
|
<property name="debug" value="on"/>
|
||||||
|
|
||||||
<target name="all" depends="build,xid_dist,build_test,examples" />
|
<target name="all" depends="build_xid,dist_xid,build_test,dist_test,examples" />
|
||||||
|
|
||||||
<!-- ******* Init ******* -->
|
<!-- ******* Init ******* -->
|
||||||
<target name="init">
|
<target name="init">
|
||||||
|
@ -24,7 +24,7 @@
|
||||||
|
|
||||||
|
|
||||||
<!-- ******* build ******* -->
|
<!-- ******* build ******* -->
|
||||||
<target name="build" depends="init">
|
<target name="build_xid" depends="init">
|
||||||
<javac srcdir="${src}" destdir="${build}/classes" debug="${debug}" deprecation="on">
|
<javac srcdir="${src}" destdir="${build}/classes" debug="${debug}" deprecation="on">
|
||||||
<classpath>
|
<classpath>
|
||||||
<fileset dir="lib" includes="**/*.jar"/>
|
<fileset dir="lib" includes="**/*.jar"/>
|
||||||
|
@ -33,8 +33,8 @@
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
|
|
||||||
<!-- ****** xid_dist ****** -->
|
<!-- ****** dist_xid ****** -->
|
||||||
<target name="xid_dist" depends="build">
|
<target name="dist_xid" depends="build_xid">
|
||||||
<jar update="no" jarfile="dist/xid.jar">
|
<jar update="no" jarfile="dist/xid.jar">
|
||||||
<fileset dir="build/classes" includes="xid/**.class" />
|
<fileset dir="build/classes" includes="xid/**.class" />
|
||||||
<fileset dir="resources" includes="**" />
|
<fileset dir="resources" includes="**" />
|
||||||
|
@ -43,27 +43,31 @@
|
||||||
|
|
||||||
|
|
||||||
<!-- ******* build_test ******* -->
|
<!-- ******* build_test ******* -->
|
||||||
<target name="build_test" depends="xid_dist">
|
<target name="build_test" depends="dist_xid">
|
||||||
<javac srcdir="test" destdir="build_test/classes" debug="${debug}" deprecation="on">
|
<javac srcdir="test" destdir="build_test/classes" debug="${debug}" deprecation="on">
|
||||||
<classpath>
|
<classpath>
|
||||||
<fileset dir="lib" includes="**/*.jar"/>
|
<fileset dir="lib" includes="**/*.jar"/>
|
||||||
|
<pathelement path="dist/xid.jar"/>
|
||||||
</classpath>
|
</classpath>
|
||||||
</javac>
|
</javac>
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
<!-- ****** test_dist ****** -->
|
|
||||||
<target name="test_dist" depends="build_test">
|
<!-- ****** dist_test ****** -->
|
||||||
|
<target name="dist_test" depends="build_test">
|
||||||
<jar update="no" jarfile="dist/test.jar">
|
<jar update="no" jarfile="dist/test.jar">
|
||||||
<fileset dir="build_test/classes" includes="xid/test/**.class" />
|
<fileset dir="build_test/classes" includes="xid/test/**.class" />
|
||||||
<fileset dir="resources" includes="**" />
|
<fileset dir="resources" includes="**" />
|
||||||
</jar>
|
</jar>
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
|
|
||||||
<!-- *********** dotest ******** -->
|
<!-- *********** dotest ******** -->
|
||||||
<target name="dotest" depends="test_dist">
|
<target name="dotest" depends="dist_test">
|
||||||
<java classname="xid.test.Test" maxmemory="20m" fork="true">
|
<java classname="xid.test.Test" maxmemory="20m" fork="true">
|
||||||
<classpath>
|
<classpath>
|
||||||
<fileset dir="lib" includes="**/*.jar" />
|
<fileset dir="lib" includes="**/*.jar" />
|
||||||
|
<fileset dir="resources" includes="**" />
|
||||||
<pathelement path="dist/xid.jar"/>
|
<pathelement path="dist/xid.jar"/>
|
||||||
<pathelement path="dist/test.jar"/>
|
<pathelement path="dist/test.jar"/>
|
||||||
</classpath>
|
</classpath>
|
||||||
|
@ -72,7 +76,7 @@
|
||||||
|
|
||||||
|
|
||||||
<!-- ******* Examples (the webapp). ******* -->
|
<!-- ******* Examples (the webapp). ******* -->
|
||||||
<target name="examples" depends="xid_dist">
|
<target name="examples" depends="dist_xid">
|
||||||
|
|
||||||
<copy todir="webapp-examples/WEB-INF/lib">
|
<copy todir="webapp-examples/WEB-INF/lib">
|
||||||
<fileset dir="lib" includes="*.jar" excludes="servlet-api.jar"/>
|
<fileset dir="lib" includes="*.jar" excludes="servlet-api.jar"/>
|
||||||
|
@ -95,7 +99,7 @@
|
||||||
|
|
||||||
|
|
||||||
<!-- ****** JavaDoc ****** -->
|
<!-- ****** JavaDoc ****** -->
|
||||||
<target name="javadoc" depends="build">
|
<target name="javadoc" depends="build_xid">
|
||||||
<javadoc sourcepath="${src}" packageNames="xid.*" destdir="${doc}">
|
<javadoc sourcepath="${src}" packageNames="xid.*" destdir="${doc}">
|
||||||
<classpath>
|
<classpath>
|
||||||
<fileset dir="lib" includes="**/*.jar"/>
|
<fileset dir="lib" includes="**/*.jar"/>
|
||||||
|
|
53
build.xml~
53
build.xml~
|
@ -11,18 +11,20 @@
|
||||||
<property name="resources" value="resources"/>
|
<property name="resources" value="resources"/>
|
||||||
<property name="debug" value="on"/>
|
<property name="debug" value="on"/>
|
||||||
|
|
||||||
<target name="all" depends="compile,xid_dist,examples" />
|
<target name="all" depends="build_xid,dist_xid,build_test,dist_test,examples" />
|
||||||
|
|
||||||
<!-- ******* Init ******* -->
|
<!-- ******* Init ******* -->
|
||||||
<target name="init">
|
<target name="init">
|
||||||
<tstamp/>
|
<tstamp/>
|
||||||
<mkdir dir="${build}"/>
|
<mkdir dir="${build}"/>
|
||||||
|
<mkdir dir="build_test/classes"/>
|
||||||
<mkdir dir="${build}/classes"/>
|
<mkdir dir="${build}/classes"/>
|
||||||
<mkdir dir="${dist}"/>
|
<mkdir dir="${dist}"/>
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
<!-- ******* Compile ******* -->
|
|
||||||
<target name="compile" depends="init">
|
<!-- ******* build ******* -->
|
||||||
|
<target name="build_xid" depends="init">
|
||||||
<javac srcdir="${src}" destdir="${build}/classes" debug="${debug}" deprecation="on">
|
<javac srcdir="${src}" destdir="${build}/classes" debug="${debug}" deprecation="on">
|
||||||
<classpath>
|
<classpath>
|
||||||
<fileset dir="lib" includes="**/*.jar"/>
|
<fileset dir="lib" includes="**/*.jar"/>
|
||||||
|
@ -30,17 +32,51 @@
|
||||||
</javac>
|
</javac>
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
<!-- ****** xid.jar ****** -->
|
|
||||||
<target name="xid_dist" depends="compile">
|
<!-- ****** dist_xid ****** -->
|
||||||
|
<target name="dist_xid" depends="build_xid">
|
||||||
<jar update="no" jarfile="dist/xid.jar">
|
<jar update="no" jarfile="dist/xid.jar">
|
||||||
<fileset dir="build/classes" includes="xid/**/**.class" />
|
<fileset dir="build/classes" includes="xid/**.class" />
|
||||||
<fileset dir="resources" includes="**" />
|
<fileset dir="resources" includes="**" />
|
||||||
</jar>
|
</jar>
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ******* build_test ******* -->
|
||||||
|
<target name="build_test" depends="dist_xid">
|
||||||
|
<javac srcdir="test" destdir="build_test/classes" debug="${debug}" deprecation="on">
|
||||||
|
<classpath>
|
||||||
|
<fileset dir="lib" includes="**/*.jar"/>
|
||||||
|
<pathelement path="dist/xid.jar"/>
|
||||||
|
</classpath>
|
||||||
|
</javac>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ****** dist_test ****** -->
|
||||||
|
<target name="dist_test" depends="build_test">
|
||||||
|
<jar update="no" jarfile="dist/test.jar">
|
||||||
|
<fileset dir="build_test/classes" includes="xid/test/**.class" />
|
||||||
|
<fileset dir="resources" includes="**" />
|
||||||
|
</jar>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- *********** dotest ******** -->
|
||||||
|
<target name="dotest" depends="dist_test">
|
||||||
|
<java classname="xid.test.Test" maxmemory="20m" fork="true">
|
||||||
|
<classpath>
|
||||||
|
<fileset dir="lib" includes="**/*.jar" />
|
||||||
|
<pathelement path="dist/xid.jar"/>
|
||||||
|
<pathelement path="dist/test.jar"/>
|
||||||
|
<pathelement path="test/log4j.properties"/>
|
||||||
|
</classpath>
|
||||||
|
</java>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
|
||||||
<!-- ******* Examples (the webapp). ******* -->
|
<!-- ******* Examples (the webapp). ******* -->
|
||||||
<target name="examples" depends="xid_dist">
|
<target name="examples" depends="dist_xid">
|
||||||
|
|
||||||
<copy todir="webapp-examples/WEB-INF/lib">
|
<copy todir="webapp-examples/WEB-INF/lib">
|
||||||
<fileset dir="lib" includes="*.jar" excludes="servlet-api.jar"/>
|
<fileset dir="lib" includes="*.jar" excludes="servlet-api.jar"/>
|
||||||
|
@ -63,7 +99,7 @@
|
||||||
|
|
||||||
|
|
||||||
<!-- ****** JavaDoc ****** -->
|
<!-- ****** JavaDoc ****** -->
|
||||||
<target name="javadoc" depends="compile">
|
<target name="javadoc" depends="build_xid">
|
||||||
<javadoc sourcepath="${src}" packageNames="xid.*" destdir="${doc}">
|
<javadoc sourcepath="${src}" packageNames="xid.*" destdir="${doc}">
|
||||||
<classpath>
|
<classpath>
|
||||||
<fileset dir="lib" includes="**/*.jar"/>
|
<fileset dir="lib" includes="**/*.jar"/>
|
||||||
|
@ -75,6 +111,7 @@
|
||||||
<!-- *************** Clean ***********************-->
|
<!-- *************** Clean ***********************-->
|
||||||
<target name="clean">
|
<target name="clean">
|
||||||
<delete dir="${build}"/>
|
<delete dir="${build}"/>
|
||||||
|
<delete dir="build_test"/>
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
<!-- *********** Produce ZIP release file ******** -->
|
<!-- *********** Produce ZIP release file ******** -->
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
dist/test.jar
vendored
BIN
dist/test.jar
vendored
Binary file not shown.
BIN
dist/xid.jar
vendored
BIN
dist/xid.jar
vendored
Binary file not shown.
|
@ -1,10 +1,9 @@
|
||||||
/*
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
package xid;
|
package xid;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import javax.xml.parsers.*;
|
import javax.xml.parsers.*;
|
||||||
|
import javax.xml.transform.stream.StreamSource;
|
||||||
import javax.xml.validation.Schema;
|
import javax.xml.validation.Schema;
|
||||||
import org.xml.sax.*;
|
import org.xml.sax.*;
|
||||||
import org.w3c.dom.*;
|
import org.w3c.dom.*;
|
||||||
|
@ -91,7 +90,7 @@ public class Presenter
|
||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public StringBuffer doXid (TagsData datas, StringBuffer errorOutput)
|
public StringBuffer doXid (TagsDataById datas, StringBuffer errorOutput)
|
||||||
{
|
{
|
||||||
StringBuffer result;
|
StringBuffer result;
|
||||||
|
|
||||||
|
@ -135,7 +134,7 @@ public class Presenter
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*
|
* Xid a file without data.
|
||||||
*/
|
*/
|
||||||
static public StringBuffer doXid (String fileName, String webappPath, StringBuffer errorOutput)
|
static public StringBuffer doXid (String fileName, String webappPath, StringBuffer errorOutput)
|
||||||
{
|
{
|
||||||
|
@ -160,28 +159,71 @@ public class Presenter
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*
|
* Xid a string with html in.
|
||||||
*/
|
*/
|
||||||
static public StringBuffer doXid (Document doc, TagsData datas, String webappPath, StringBuffer errorOutput)
|
static public StringBuffer doXid (String html, TagsDataById datas, String webappPath, StringBuffer errorOutput)
|
||||||
{
|
{
|
||||||
StringBuffer result;
|
StringBuffer result;
|
||||||
|
|
||||||
result = Presenter.process (doc, datas, webappPath, errorOutput);
|
String htmlSource;
|
||||||
|
if ((html.startsWith ("<!DOCTYPE")) ||
|
||||||
|
(html.startsWith ("<!doctype")) ||
|
||||||
|
(html.startsWith ("<html>")) ||
|
||||||
|
(html.startsWith ("<HTML>")))
|
||||||
|
{
|
||||||
|
htmlSource = html;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
htmlSource = "<html><head></head><body>\n" + html + "</body></html>";
|
||||||
|
}
|
||||||
|
|
||||||
|
Document doc = null;
|
||||||
|
|
||||||
|
// StringBufferInputStream is deprecated so we use another solution.
|
||||||
|
// (see http://www.developpez.net/forums/archive/index.php/t-14101.html).
|
||||||
|
doc = buildTree (new ByteArrayInputStream (htmlSource.getBytes ()), errorOutput);
|
||||||
|
|
||||||
|
StringBuffer htmlTarget;
|
||||||
|
htmlTarget = Presenter.process (doc, datas, webappPath, errorOutput);
|
||||||
|
|
||||||
|
if (htmlTarget == null)
|
||||||
|
{
|
||||||
|
result = null;
|
||||||
|
}
|
||||||
|
else if ((html.startsWith ("<!DOCTYPE")) ||
|
||||||
|
(html.startsWith ("<!doctype")) ||
|
||||||
|
(html.startsWith ("<html>")) ||
|
||||||
|
(html.startsWith ("<HTML>")))
|
||||||
|
{
|
||||||
|
result = htmlTarget;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
String bodyContent = extractBodyContent (htmlTarget);
|
||||||
|
|
||||||
|
if (bodyContent == null)
|
||||||
|
{
|
||||||
|
result = null;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
result = new StringBuffer (bodyContent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
return (result);
|
return (result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*
|
* Xid a file with data.
|
||||||
*/
|
*/
|
||||||
static public StringBuffer doXid (String html, TagsData datas, String webappPath, StringBuffer errorOutput)
|
static public StringBuffer doXid (Document doc, TagsDataById datas, String webappPath, StringBuffer errorOutput)
|
||||||
{
|
{
|
||||||
StringBuffer result;
|
StringBuffer result;
|
||||||
|
|
||||||
Document doc = null;
|
|
||||||
|
|
||||||
|
|
||||||
result = Presenter.process (doc, datas, webappPath, errorOutput);
|
result = Presenter.process (doc, datas, webappPath, errorOutput);
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -223,7 +265,7 @@ public class Presenter
|
||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
static protected StringBuffer processChildren (Node node, TagsData datas, String webappPath, StringBuffer errorOutput)
|
static protected StringBuffer processChildren (Node node, TagsDataById datas, String webappPath, StringBuffer errorOutput)
|
||||||
{
|
{
|
||||||
StringBuffer result;
|
StringBuffer result;
|
||||||
|
|
||||||
|
@ -258,7 +300,7 @@ public class Presenter
|
||||||
* @param attrMap
|
* @param attrMap
|
||||||
* @param idAttr
|
* @param idAttr
|
||||||
*/
|
*/
|
||||||
static protected StringBuffer processObjectTag (Node node, NamedNodeMap attrMap, Node idAttr, TagsData datas, String webappPath, StringBuffer errorOutput)
|
static protected StringBuffer processObjectTag (Node node, NamedNodeMap attrMap, Node idAttr, TagsDataById datas, String webappPath, StringBuffer errorOutput)
|
||||||
{
|
{
|
||||||
StringBuffer result;
|
StringBuffer result;
|
||||||
|
|
||||||
|
@ -291,7 +333,7 @@ public class Presenter
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
log.info ("object action");
|
log.debug ("object action");
|
||||||
result.append ("<!-- STARTING INCLUDE XID FILE " + attrMap.getNamedItem ("data") + " -->");
|
result.append ("<!-- STARTING INCLUDE XID FILE " + attrMap.getNamedItem ("data") + " -->");
|
||||||
|
|
||||||
// Build the file name.
|
// Build the file name.
|
||||||
|
@ -307,7 +349,7 @@ public class Presenter
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
result.append ("unable to build the file tree");
|
result.append ("unable to build the file tree");
|
||||||
log.info ("unable to build the file tree");
|
log.debug ("unable to build the file tree");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Extract the 'body' section.
|
// Extract the 'body' section.
|
||||||
|
@ -319,7 +361,7 @@ public class Presenter
|
||||||
if (nodes.getLength () == 0)
|
if (nodes.getLength () == 0)
|
||||||
{
|
{
|
||||||
result.append ("no body tag in include html");
|
result.append ("no body tag in include html");
|
||||||
log.info ("no body tag in include html");
|
log.debug ("no body tag in include html");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -329,7 +371,7 @@ public class Presenter
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
result.append ("error getting child");
|
result.append ("error getting child");
|
||||||
log.info ("error getting child");
|
log.debug ("error getting child");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Process the body child as part of the primary tree.
|
// Process the body child as part of the primary tree.
|
||||||
|
@ -347,7 +389,7 @@ public class Presenter
|
||||||
//
|
//
|
||||||
result.append ("<!-- ENDING INCLUDE XID FILE " + attrMap.getNamedItem ("data") + " -->");
|
result.append ("<!-- ENDING INCLUDE XID FILE " + attrMap.getNamedItem ("data") + " -->");
|
||||||
}
|
}
|
||||||
log.info ("end of object action");
|
log.debug ("end of object action");
|
||||||
//
|
//
|
||||||
return (result);
|
return (result);
|
||||||
}
|
}
|
||||||
|
@ -368,7 +410,7 @@ public class Presenter
|
||||||
static protected StringBuffer processElementWithId (Node node,
|
static protected StringBuffer processElementWithId (Node node,
|
||||||
NamedNodeMap attrs,
|
NamedNodeMap attrs,
|
||||||
Node idAttr,
|
Node idAttr,
|
||||||
TagsData datas,
|
TagsDataById datas,
|
||||||
String webappPath,
|
String webappPath,
|
||||||
StringBuffer errorOutput)
|
StringBuffer errorOutput)
|
||||||
{
|
{
|
||||||
|
@ -378,104 +420,82 @@ public class Presenter
|
||||||
String tag = node.getNodeName();
|
String tag = node.getNodeName();
|
||||||
String idValue = idAttr.getNodeValue();
|
String idValue = idAttr.getNodeValue();
|
||||||
|
|
||||||
log.info ("tag=" + tag);
|
log.debug ("tag=" + tag);
|
||||||
|
|
||||||
// Get data of this id.
|
// Get data of this id.
|
||||||
TagData data = datas.get (idAttr.getNodeValue ());
|
TagDataCore dataCore = datas.get (idAttr.getNodeValue ());
|
||||||
String theClass;
|
|
||||||
if (data == null)
|
|
||||||
{
|
|
||||||
theClass = null;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
theClass = data.getAttributes ().getAttribute ("class");
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((theClass == null) ||
|
if (dataCore == null)
|
||||||
(!theClass.equals ("xid:nodisplay")))
|
|
||||||
{
|
{
|
||||||
if ((tag.equals ("a")) ||
|
result.append (Presenter.processElementBasically (node, datas, webappPath, errorOutput));
|
||||||
(tag.equals ("b")) ||
|
}
|
||||||
(tag.equals ("div")) ||
|
else if (dataCore instanceof TagData)
|
||||||
(tag.equals ("em")) ||
|
{
|
||||||
(tag.equals ("p")) ||
|
TagData data = (TagData) dataCore;
|
||||||
(tag.equals ("span")))
|
|
||||||
|
String theClass;
|
||||||
|
if (data == null)
|
||||||
{
|
{
|
||||||
// Open the tag.
|
theClass = null;
|
||||||
result.append ('<');
|
|
||||||
result.append (node.getNodeName());
|
|
||||||
|
|
||||||
// Build the tag attributes.
|
|
||||||
result.append (processAttributes (attrs, data));
|
|
||||||
//result.append (attributesFromNode (attrs));
|
|
||||||
//result.append (attributesFromTagData (data));
|
|
||||||
|
|
||||||
result.append ('>');
|
|
||||||
|
|
||||||
// Insert data.
|
|
||||||
if ((data == null) ||
|
|
||||||
(data.display ().equals ("")))
|
|
||||||
{
|
|
||||||
result.append (processChildren (node, datas, webappPath, errorOutput));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
result.append (data.display ());
|
|
||||||
}
|
|
||||||
|
|
||||||
// Close the tag.
|
|
||||||
result.append ("</");
|
|
||||||
result.append (node.getNodeName());
|
|
||||||
result.append ('>');
|
|
||||||
}
|
}
|
||||||
else if (tag.equals("img"))
|
else
|
||||||
{
|
{
|
||||||
// Possibility to merge with previous case if <div /> is a correct tag.
|
theClass = data.getAttributes ().getAttribute ("class");
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((theClass == null) ||
|
||||||
|
(!theClass.equals ("xid:nodisplay")))
|
||||||
|
{
|
||||||
// Open the tag.
|
// Open the tag.
|
||||||
result.append ("<");
|
result.append ("<");
|
||||||
result.append (node.getNodeName());
|
result.append (node.getNodeName());
|
||||||
|
|
||||||
// Build the tag attributes.
|
// Build attributes.
|
||||||
result.append (processAttributes (attrs, data));
|
result.append (processAttributes (attrs, data));
|
||||||
//result.append (attributesFromNode (attrs));
|
|
||||||
//result.append (attributesFromTagData (data));
|
|
||||||
|
|
||||||
result.append ("/>");
|
if ((node.getChildNodes () == null) &&
|
||||||
}
|
((data == null) || data.display ().equals ("")))
|
||||||
else if (tag.equals("textarea"))
|
{
|
||||||
{
|
// Close the tag.
|
||||||
result.append ("[textarea]");
|
result.append (" />");
|
||||||
}
|
}
|
||||||
else if (tag.equals("select"))
|
else
|
||||||
{
|
{
|
||||||
result.append ("[select]");
|
result.append ('>');
|
||||||
}
|
|
||||||
else if (tag.equals("input"))
|
// Insert data.
|
||||||
{
|
if ((data == null) ||
|
||||||
result.append ("[input]");
|
(data.display ().equals ("")))
|
||||||
}
|
{
|
||||||
else if (tag.equals("table"))
|
result.append (processChildren (node, datas, webappPath, errorOutput));
|
||||||
{
|
}
|
||||||
result.append ("[table]");
|
else
|
||||||
}
|
{
|
||||||
else if (tag.equals("tbody"))
|
result.append (data.display ());
|
||||||
{
|
}
|
||||||
result.append ("[tbody]");
|
|
||||||
}
|
// Close the tag.
|
||||||
else if (tag.equals("object"))
|
result.append ("</");
|
||||||
{
|
result.append (node.getNodeName());
|
||||||
result.append (processObjectTag (node, attrs, idAttr, datas, webappPath, errorOutput));
|
result.append ('>');
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
log.info ("Id on <" + tag + "> not supported.");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (dataCore instanceof TagsData)
|
||||||
|
{
|
||||||
|
TagsData data = (TagsData) dataCore;
|
||||||
|
}
|
||||||
|
else if (dataCore instanceof TagsDataById)
|
||||||
|
{
|
||||||
|
TagsDataById data = (TagsDataById) dataCore;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
log.warn ("Unknow type of TagDataId");
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
log.info ("Exit");
|
log.debug ("Exit");
|
||||||
return (result);
|
return (result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -485,9 +505,9 @@ public class Presenter
|
||||||
* Recursive method that processes a node and any child nodes.
|
* Recursive method that processes a node and any child nodes.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
static protected StringBuffer process (Node node, TagsData datas, String webappPath, StringBuffer errorOutput)
|
static protected StringBuffer process (Node node, TagsDataById datas, String webappPath, StringBuffer errorOutput)
|
||||||
{
|
{
|
||||||
log.info ("Enter");
|
log.debug ("Enter");
|
||||||
String TRANSITIONAL_DTD = "xhtml1-transitional.dtd";
|
String TRANSITIONAL_DTD = "xhtml1-transitional.dtd";
|
||||||
String TRANSITIONAL_DOCTYPE = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 "
|
String TRANSITIONAL_DOCTYPE = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 "
|
||||||
+ "Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n";
|
+ "Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n";
|
||||||
|
@ -498,7 +518,7 @@ public class Presenter
|
||||||
// Is there anything to do?
|
// Is there anything to do?
|
||||||
if (node != null)
|
if (node != null)
|
||||||
{
|
{
|
||||||
log.info ("nodeName=" + node.getNodeName ());
|
log.debug ("nodeName=" + node.getNodeName ());
|
||||||
|
|
||||||
// Find the name attribute value.
|
// Find the name attribute value.
|
||||||
String name;
|
String name;
|
||||||
|
@ -513,18 +533,22 @@ public class Presenter
|
||||||
{
|
{
|
||||||
case Node.DOCUMENT_NODE:
|
case Node.DOCUMENT_NODE:
|
||||||
{
|
{
|
||||||
log.info ("case Node.DOCUMENT_NODE");
|
log.debug ("case Node.DOCUMENT_NODE");
|
||||||
DocumentType dt = ((Document) node).getDoctype();
|
DocumentType dt = ((Document) node).getDoctype();
|
||||||
String publicId = dt.getPublicId();
|
|
||||||
String systemId = dt.getSystemId();
|
|
||||||
|
|
||||||
if (systemId.equals(TRANSITIONAL_DTD))
|
if (dt != null)
|
||||||
{
|
{
|
||||||
result.append(TRANSITIONAL_DOCTYPE);
|
String publicId = dt.getPublicId();
|
||||||
}
|
String systemId = dt.getSystemId();
|
||||||
|
|
||||||
// Log.write(Log.TRACE,"publicId = " + publicId);
|
if (systemId.equals(TRANSITIONAL_DTD))
|
||||||
// Log.write(Log.TRACE,"systemId = " + systemId);
|
{
|
||||||
|
result.append(TRANSITIONAL_DOCTYPE);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Log.write(Log.TRACE,"publicId = " + publicId);
|
||||||
|
// Log.write(Log.TRACE,"systemId = " + systemId);
|
||||||
|
}
|
||||||
|
|
||||||
result.append (Presenter.process (((Document) node).getDocumentElement(), datas, webappPath, errorOutput));
|
result.append (Presenter.process (((Document) node).getDocumentElement(), datas, webappPath, errorOutput));
|
||||||
|
|
||||||
|
@ -533,7 +557,7 @@ public class Presenter
|
||||||
|
|
||||||
case Node.ELEMENT_NODE:
|
case Node.ELEMENT_NODE:
|
||||||
{
|
{
|
||||||
log.info ("case Node.ELEMENT_NODE");
|
log.debug ("case Node.ELEMENT_NODE");
|
||||||
|
|
||||||
NamedNodeMap attrs = node.getAttributes ();
|
NamedNodeMap attrs = node.getAttributes ();
|
||||||
Node idAttr = attrs.getNamedItem ("id");
|
Node idAttr = attrs.getNamedItem ("id");
|
||||||
|
@ -553,7 +577,7 @@ public class Presenter
|
||||||
// handle entity reference nodes
|
// handle entity reference nodes
|
||||||
case Node.ENTITY_REFERENCE_NODE:
|
case Node.ENTITY_REFERENCE_NODE:
|
||||||
{
|
{
|
||||||
log.info ("case Node.ENTITY_REFERENCE_NODE");
|
log.debug ("case Node.ENTITY_REFERENCE_NODE");
|
||||||
|
|
||||||
result.append ('&');
|
result.append ('&');
|
||||||
result.append (node.getNodeName());
|
result.append (node.getNodeName());
|
||||||
|
@ -564,7 +588,7 @@ public class Presenter
|
||||||
// print cdata sections
|
// print cdata sections
|
||||||
case Node.CDATA_SECTION_NODE:
|
case Node.CDATA_SECTION_NODE:
|
||||||
{
|
{
|
||||||
log.info ("case Node.CDATA_SECTION_NODE");
|
log.debug ("case Node.CDATA_SECTION_NODE");
|
||||||
|
|
||||||
result.append ("<![CDATA[");
|
result.append ("<![CDATA[");
|
||||||
result.append (node.getNodeValue());
|
result.append (node.getNodeValue());
|
||||||
|
@ -576,7 +600,7 @@ public class Presenter
|
||||||
// print text
|
// print text
|
||||||
case Node.TEXT_NODE:
|
case Node.TEXT_NODE:
|
||||||
{
|
{
|
||||||
log.info ("case Node.TEXTE_NODE");
|
log.debug ("case Node.TEXTE_NODE");
|
||||||
result.append (restoreEntities (new StringBuffer(node.getNodeValue())));
|
result.append (restoreEntities (new StringBuffer(node.getNodeValue())));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -584,7 +608,7 @@ public class Presenter
|
||||||
// print processing instruction
|
// print processing instruction
|
||||||
case Node.PROCESSING_INSTRUCTION_NODE:
|
case Node.PROCESSING_INSTRUCTION_NODE:
|
||||||
{
|
{
|
||||||
log.info ("Node.PROCESSING_INSTRUCTION_NODE");
|
log.debug ("Node.PROCESSING_INSTRUCTION_NODE");
|
||||||
|
|
||||||
result.append ("<?");
|
result.append ("<?");
|
||||||
result.append (node.getNodeName());
|
result.append (node.getNodeName());
|
||||||
|
@ -603,14 +627,14 @@ public class Presenter
|
||||||
|
|
||||||
//
|
//
|
||||||
//log.info ("result=" + result);
|
//log.info ("result=" + result);
|
||||||
log.info ("Exit");
|
log.debug ("Exit");
|
||||||
return (result);
|
return (result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*/
|
*/
|
||||||
static StringBuffer processElementBasically (Node node, TagsData datas, String webappPath, StringBuffer errorOutput)
|
static StringBuffer processElementBasically (Node node, TagsDataById datas, String webappPath, StringBuffer errorOutput)
|
||||||
{
|
{
|
||||||
StringBuffer result;
|
StringBuffer result;
|
||||||
result = new StringBuffer ();
|
result = new StringBuffer ();
|
||||||
|
@ -671,6 +695,75 @@ public class Presenter
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
static protected Document buildTree (InputStream source, StringBuffer errorOutput)
|
||||||
|
{
|
||||||
|
Document result;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// Create a DocumentBuilderFactory and configure it.
|
||||||
|
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance ();
|
||||||
|
|
||||||
|
// Set various configuration options.
|
||||||
|
dbf.setValidating (true);
|
||||||
|
dbf.setIgnoringComments (true);
|
||||||
|
dbf.setIgnoringElementContentWhitespace (false);
|
||||||
|
dbf.setCoalescing (false);
|
||||||
|
|
||||||
|
// Keep entity references as they are.
|
||||||
|
dbf.setExpandEntityReferences(false);
|
||||||
|
|
||||||
|
// Create a DocumentBuilder that satisfies the constraints
|
||||||
|
// specified by the DocumentBuilderFactory.
|
||||||
|
DocumentBuilder db = dbf.newDocumentBuilder ();
|
||||||
|
|
||||||
|
ParserErrorHandler errorHandler;
|
||||||
|
errorHandler = new ParserErrorHandler();
|
||||||
|
|
||||||
|
// Set the error handler.
|
||||||
|
db.setErrorHandler (errorHandler);
|
||||||
|
|
||||||
|
Schema schema = db.getSchema ();
|
||||||
|
log.debug ("schema=" + schema);
|
||||||
|
|
||||||
|
// Parse the input file.
|
||||||
|
result = db.parse (source);
|
||||||
|
|
||||||
|
if (errorHandler.hasError ())
|
||||||
|
{
|
||||||
|
errorOutput.append (errorHandler.toString ());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (ParserConfigurationException exception)
|
||||||
|
{
|
||||||
|
String errorMessage = "Parser configuration exception: " + exception.getMessage ();
|
||||||
|
errorOutput.append (errorMessage);
|
||||||
|
log.error (errorMessage);
|
||||||
|
result = null;
|
||||||
|
}
|
||||||
|
catch (SAXException exception)
|
||||||
|
{
|
||||||
|
String errorMessage = "Error during SAX parsing: " + exception.getMessage ();
|
||||||
|
errorOutput.append (errorMessage);
|
||||||
|
log.error (errorMessage);
|
||||||
|
result = null;
|
||||||
|
}
|
||||||
|
catch (IOException exception)
|
||||||
|
{
|
||||||
|
String errorMessage = "IOError during parsing." + exception.getMessage ();
|
||||||
|
errorOutput.append (errorMessage);
|
||||||
|
log.error (errorMessage);
|
||||||
|
result = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
return (result);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
@ -678,81 +771,17 @@ public class Presenter
|
||||||
{
|
{
|
||||||
Document result;
|
Document result;
|
||||||
|
|
||||||
File source = new File (fileName);
|
try
|
||||||
|
|
||||||
if (source == null)
|
|
||||||
{
|
{
|
||||||
String errorMessage = "source file not defined (null)";
|
result = buildTree (new FileInputStream (new File (fileName)), errorOutput);
|
||||||
|
}
|
||||||
|
catch (IOException exception)
|
||||||
|
{
|
||||||
|
String errorMessage = "IOError during parsing." + exception.getMessage ();
|
||||||
errorOutput.append (errorMessage);
|
errorOutput.append (errorMessage);
|
||||||
log.error (errorMessage);
|
log.error (errorMessage);
|
||||||
result = null;
|
result = null;
|
||||||
}
|
}
|
||||||
else if (!source.exists ())
|
|
||||||
{
|
|
||||||
String errorMessage = "source file not found (" + fileName + ")";
|
|
||||||
errorOutput.append (errorMessage);
|
|
||||||
log.error (errorMessage);
|
|
||||||
result = null;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
// Create a DocumentBuilderFactory and configure it.
|
|
||||||
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance ();
|
|
||||||
|
|
||||||
// Set various configuration options.
|
|
||||||
dbf.setValidating (true);
|
|
||||||
dbf.setIgnoringComments (true);
|
|
||||||
dbf.setIgnoringElementContentWhitespace (false);
|
|
||||||
dbf.setCoalescing (false);
|
|
||||||
|
|
||||||
// Keep entity references as they are.
|
|
||||||
dbf.setExpandEntityReferences(false);
|
|
||||||
|
|
||||||
// Create a DocumentBuilder that satisfies the constraints
|
|
||||||
// specified by the DocumentBuilderFactory.
|
|
||||||
DocumentBuilder db = dbf.newDocumentBuilder ();
|
|
||||||
|
|
||||||
ParserErrorHandler errorHandler;
|
|
||||||
errorHandler = new ParserErrorHandler();
|
|
||||||
|
|
||||||
// Set the error handler.
|
|
||||||
db.setErrorHandler (errorHandler);
|
|
||||||
|
|
||||||
Schema schema = db.getSchema ();
|
|
||||||
log.info ("schema=" + schema);
|
|
||||||
|
|
||||||
// Parse the input file.
|
|
||||||
result = db.parse (fileName);
|
|
||||||
|
|
||||||
if (errorHandler.hasError ())
|
|
||||||
{
|
|
||||||
errorOutput.append (errorHandler.toString ());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (ParserConfigurationException exception)
|
|
||||||
{
|
|
||||||
String errorMessage = "Parser configuration exception: " + exception.getMessage ();
|
|
||||||
errorOutput.append (errorMessage);
|
|
||||||
log.error (errorMessage);
|
|
||||||
result = null;
|
|
||||||
}
|
|
||||||
catch (SAXException exception)
|
|
||||||
{
|
|
||||||
String errorMessage = "Error during SAX parsing: " + exception.getMessage ();
|
|
||||||
errorOutput.append (errorMessage);
|
|
||||||
log.error (errorMessage);
|
|
||||||
result = null;
|
|
||||||
}
|
|
||||||
catch (IOException exception)
|
|
||||||
{
|
|
||||||
String errorMessage = "IOError during parsing." + exception.getMessage ();
|
|
||||||
errorOutput.append (errorMessage);
|
|
||||||
log.error (errorMessage);
|
|
||||||
result = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
return (result);
|
return (result);
|
||||||
|
@ -1026,4 +1055,33 @@ public class Presenter
|
||||||
//
|
//
|
||||||
return (result);
|
return (result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
static public String extractBodyContent (StringBuffer data)
|
||||||
|
{
|
||||||
|
String result = null;
|
||||||
|
|
||||||
|
// Extract the body content.
|
||||||
|
String dataLowerCase = data.toString ().toLowerCase ();
|
||||||
|
|
||||||
|
int startBody = dataLowerCase.indexOf ("<body>");
|
||||||
|
int endBody = dataLowerCase.indexOf ("</body>");
|
||||||
|
|
||||||
|
// Note: as failed search is improbable, no care about complexity
|
||||||
|
// in failed search case.
|
||||||
|
if ((startBody == -1) || (endBody == -1))
|
||||||
|
{
|
||||||
|
result = null;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
result = data.substring (startBody + 6, endBody).trim ();
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
return (result);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ import java.io.*;
|
||||||
* application may also implement it's own TagData classes.
|
* application may also implement it's own TagData classes.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public abstract class TagData implements Serializable
|
public class TagData implements Serializable, TagDataCore
|
||||||
{
|
{
|
||||||
public enum MODE {REPLACE, APPEND, IGNORE};
|
public enum MODE {REPLACE, APPEND, IGNORE};
|
||||||
|
|
||||||
|
@ -23,22 +23,60 @@ public abstract class TagData implements Serializable
|
||||||
protected boolean excludeSection;
|
protected boolean excludeSection;
|
||||||
protected MODE displayMode = MODE.REPLACE;
|
protected MODE displayMode = MODE.REPLACE;
|
||||||
|
|
||||||
|
String content;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public TagData ()
|
public TagData ()
|
||||||
{
|
{
|
||||||
attributes = null;
|
this.attributes = null;
|
||||||
excludeSection = false;
|
this.excludeSection = false;
|
||||||
displayMode = MODE.REPLACE;
|
this.displayMode = MODE.REPLACE;
|
||||||
|
this.content = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public abstract String display();
|
public TagData (String text)
|
||||||
|
{
|
||||||
|
this.attributes = null;
|
||||||
|
this.excludeSection = false;
|
||||||
|
this.displayMode = MODE.REPLACE;
|
||||||
|
this.content = text;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public String display ()
|
||||||
|
{
|
||||||
|
String result;
|
||||||
|
|
||||||
|
if (this.content == null)
|
||||||
|
{
|
||||||
|
result = "";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
result = this.content;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
return (result);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public void setContent (String text)
|
||||||
|
{
|
||||||
|
this.content = text;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -62,14 +100,6 @@ public abstract class TagData implements Serializable
|
||||||
return (result);
|
return (result);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* ??
|
|
||||||
*/
|
|
||||||
public String getValue()
|
|
||||||
{
|
|
||||||
return display();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
|
|
|
@ -6,7 +6,7 @@ import java.io.*;
|
||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class TagsData extends HashMap<String, TagData>
|
public class TagsData extends Vector<TagDataCore> implements TagDataCore
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -15,33 +15,4 @@ public class TagsData extends HashMap<String, TagData>
|
||||||
{
|
{
|
||||||
super ();
|
super ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public void setId (String id, TagData data)
|
|
||||||
{
|
|
||||||
this.put (id, data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public TagData getId (String id)
|
|
||||||
{
|
|
||||||
TagData result;
|
|
||||||
|
|
||||||
if (this.containsKey (id))
|
|
||||||
{
|
|
||||||
result = this.get (id);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
result = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
return (result);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,91 +0,0 @@
|
||||||
package xid;
|
|
||||||
|
|
||||||
import java.io.*;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This class can be used to set up text for display.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class TextTagData extends TagData implements Serializable
|
|
||||||
{
|
|
||||||
private static final long serialVersionUID = -4117726979708043231L;
|
|
||||||
|
|
||||||
protected String text;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructs a TextTagData with the text supplied.
|
|
||||||
*
|
|
||||||
* @param text The text to be displayed.
|
|
||||||
*/
|
|
||||||
public TextTagData (String text)
|
|
||||||
{
|
|
||||||
super ();
|
|
||||||
this.text = text;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public TextTagData()
|
|
||||||
{
|
|
||||||
super();
|
|
||||||
this.text = "";
|
|
||||||
this.displayMode = MODE.IGNORE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method will be called by the View when it encounters
|
|
||||||
* an id for a TextTagData object.
|
|
||||||
*/
|
|
||||||
public String display ()
|
|
||||||
{
|
|
||||||
String result;
|
|
||||||
|
|
||||||
if (text == null)
|
|
||||||
{
|
|
||||||
result = "";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
result = this.text;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
return (result);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Allows the text content to be changed.
|
|
||||||
* @param text
|
|
||||||
*/
|
|
||||||
public void setText (String text)
|
|
||||||
{
|
|
||||||
this.text = text;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the value as an int.
|
|
||||||
*
|
|
||||||
* @return The users input as an int or -1 if not a valid number.
|
|
||||||
*/
|
|
||||||
public int getValueAsInt()
|
|
||||||
{
|
|
||||||
int result;
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
result = Integer.parseInt(text);
|
|
||||||
}
|
|
||||||
catch (NumberFormatException e)
|
|
||||||
{
|
|
||||||
result = -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
return (result);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,73 +1,227 @@
|
||||||
package xid;
|
package xid.test;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import xid.*;
|
import xid.*;
|
||||||
|
|
||||||
|
interface TTagDataCore
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
class TTagData implements TTagDataCore
|
||||||
|
{
|
||||||
|
public String a;
|
||||||
|
}
|
||||||
|
|
||||||
|
class TTagsDataById extends HashMap<String, Object> implements TTagDataCore
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
class TTagsData extends Vector<Object> implements TTagDataCore
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
class TTagsMatrix extends TTagsDataById
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
class Test
|
class Test
|
||||||
{
|
{
|
||||||
|
|
||||||
|
public static void test ()
|
||||||
|
{
|
||||||
|
System.out.println ("doing a test");
|
||||||
|
|
||||||
|
|
||||||
|
TTagsDataById tags = new TTagsDataById ();
|
||||||
|
|
||||||
|
TTagData tag = new TTagData ();
|
||||||
|
tag.a = "label a1";
|
||||||
|
tags.put ("id1", tag);
|
||||||
|
|
||||||
|
tag = new TTagData ();
|
||||||
|
tag.a = "label a2";
|
||||||
|
tags.put ("id2", tag);
|
||||||
|
|
||||||
|
TTagsData tag2 = new TTagsData ();
|
||||||
|
tags.put ("id3", tag2);
|
||||||
|
|
||||||
|
TTagsDataById tag3 = new TTagsDataById ();
|
||||||
|
tags.put ("id4", tag3);
|
||||||
|
|
||||||
|
TTagsMatrix tag4 = new TTagsMatrix ();
|
||||||
|
tags.put ("id5", tag4);
|
||||||
|
|
||||||
|
System.out.println ("tags=" + tags);
|
||||||
|
|
||||||
|
Set keys = tags.keySet ();
|
||||||
|
Iterator it = keys.iterator ();
|
||||||
|
while (it.hasNext ())
|
||||||
|
{
|
||||||
|
String key = (String) it.next ();
|
||||||
|
Object obj = tags.get (key);
|
||||||
|
|
||||||
|
StringBuffer comment = new StringBuffer ();
|
||||||
|
comment.append ("(" + key + "=> " + obj + "-> ");
|
||||||
|
|
||||||
|
if (obj instanceof TTagData)
|
||||||
|
{
|
||||||
|
comment.append ("class TTagData");
|
||||||
|
}
|
||||||
|
else if (obj instanceof TTagsData)
|
||||||
|
{
|
||||||
|
comment.append ("class TTagsData");
|
||||||
|
}
|
||||||
|
else if (obj instanceof TTagsDataById)
|
||||||
|
{
|
||||||
|
comment.append ("class TTagsDataById");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (obj instanceof TTagDataCore)
|
||||||
|
{
|
||||||
|
comment.append (" TTagDataCore");
|
||||||
|
}
|
||||||
|
|
||||||
|
comment.append (")");
|
||||||
|
System.out.println (comment);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static private org.apache.log4j.Logger log;
|
||||||
|
|
||||||
|
static
|
||||||
|
{
|
||||||
|
// Initialize log.
|
||||||
|
org.apache.log4j.Logger log = null;
|
||||||
|
|
||||||
|
org.apache.log4j.BasicConfigurator.configure ();
|
||||||
|
|
||||||
|
|
||||||
|
log = org.apache.log4j.Logger.getRootLogger ();
|
||||||
|
//log.setLevel (org.apache.log4j.Level.INFO);
|
||||||
|
log.setLevel (org.apache.log4j.Level.INFO);
|
||||||
|
|
||||||
|
log.info ("Enter");
|
||||||
|
|
||||||
|
//
|
||||||
|
log.info ("Set the log file format...");
|
||||||
|
|
||||||
|
|
||||||
|
// log = org.apache.log4j.Category.getInstance(Application.class.getName());
|
||||||
|
log.info ("... done.");
|
||||||
|
|
||||||
|
log.debug ("Exit");
|
||||||
|
log = org.apache.log4j.Logger.getLogger (Test.class.getName ());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
public static void main(String[] args)
|
public static void main(String[] args)
|
||||||
{
|
{
|
||||||
System.out.println("Hello World!");
|
System.out.println("Hello World!");
|
||||||
|
|
||||||
Presenter xid = new Presenter (getServletContext ().getRealPath ("/"), "testXid.html");
|
//test ();
|
||||||
|
|
||||||
//
|
//
|
||||||
TagsData datas = new TagsData ();
|
TagsDataById datas;
|
||||||
TextTagData text;
|
TagData tag;
|
||||||
|
|
||||||
|
|
||||||
// Populate attributes of Test 03.
|
|
||||||
text = new TextTagData ();
|
|
||||||
datas.put ("test03", text);
|
|
||||||
text.setText ("mummy");
|
|
||||||
text.getAttributes ().appendAttribute ("style", "background: blue;");
|
|
||||||
text.getAttributes ().appendAttribute ("style", "foreground: red;");
|
|
||||||
text.getAttributes ().setAttribute ("class", "totoClass");
|
|
||||||
|
|
||||||
|
|
||||||
StringBuffer html;
|
StringBuffer html;
|
||||||
StringBuffer errorMessage;
|
StringBuffer errorMessage;
|
||||||
|
|
||||||
|
// Populate attributes of Test 03.
|
||||||
|
datas = new TagsDataById ();
|
||||||
|
tag = new TagData ();
|
||||||
|
tag.setContent ("Superman");
|
||||||
|
datas.put ("name", tag);
|
||||||
|
|
||||||
errorMessage = new StringBuffer ();
|
errorMessage = new StringBuffer ();
|
||||||
html = xid.doXid (datas, errorMessage);
|
html = Presenter.doXid ("<div id='name'>a name</div >", datas, "", errorMessage);
|
||||||
|
|
||||||
|
System.out.println ("----------------------------");
|
||||||
|
System.out.println ("datas = new TagsDataId ();");
|
||||||
|
System.out.println ("tag = new TagData ();");
|
||||||
|
System.out.println ("tag.setContent (\"Superman\");");
|
||||||
|
System.out.println ("datas.put (\"name\", tag););");
|
||||||
|
System.out.println ("+");
|
||||||
|
System.out.println ("<div id='name'>a name</div >");
|
||||||
|
System.out.println ("=>");
|
||||||
|
System.out.println (html);
|
||||||
|
|
||||||
|
|
||||||
// Display page.
|
// Populate attributes of Test 03.
|
||||||
response.setContentType ("text/html");
|
datas = new TagsDataById ();
|
||||||
PrintWriter out = response.getWriter();
|
datas.setContent ("name", "Superman");
|
||||||
|
|
||||||
out.println ("<html>");
|
errorMessage = new StringBuffer ();
|
||||||
out.println ("<head>");
|
html = Presenter.doXid ("<div id='name'>a name</div >", datas, "", errorMessage);
|
||||||
out.println ("<title>XID TEST</title>");
|
|
||||||
out.println ("</head>");
|
|
||||||
out.println ("<body bgcolor=\"orange\">");
|
|
||||||
|
|
||||||
out.println ("<hr />");
|
System.out.println ("----------------------------");
|
||||||
out.println ("XID TEST<br/>");
|
System.out.println ("datas = new TagsDataId ();");
|
||||||
|
System.out.println ("datas.setContent (\"name\", \"Superman\");");
|
||||||
|
System.out.println ("+");
|
||||||
|
System.out.println ("<div id='name'>a name</div >");
|
||||||
|
System.out.println ("=>");
|
||||||
|
System.out.println (html);
|
||||||
|
|
||||||
if (errorMessage.length () != 0)
|
|
||||||
{
|
|
||||||
out.println ("An error occured in Xid treatment.<br/>");
|
|
||||||
out.println ("<pre>");
|
|
||||||
out.println (errorMessage);
|
|
||||||
out.println ("</pre>");
|
|
||||||
out.println ("<hr />");
|
|
||||||
out.println ("<pre>" + Presenter.restoreEntities (html) + "</pre>");
|
|
||||||
out.println ("<hr />");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
out.println ("<pre>" + Presenter.restoreEntities (html) + "</pre>");
|
|
||||||
}
|
|
||||||
|
|
||||||
out.println ("</body>");
|
// Populate attributes of Test 03.
|
||||||
out.println ("</html>");
|
datas = new TagsDataById ();
|
||||||
|
tag = new TagData ();
|
||||||
|
tag.setContent ("Spiderman");
|
||||||
|
tag.getAttributes ().appendAttribute ("style", "background: blue;");
|
||||||
|
tag.getAttributes ().appendAttribute ("style", "foreground: red;");
|
||||||
|
tag.getAttributes ().setAttribute ("class", "nameClass");
|
||||||
|
datas.put ("lastname", tag);
|
||||||
|
|
||||||
log.info ("Exit");
|
|
||||||
|
|
||||||
|
errorMessage = new StringBuffer ();
|
||||||
|
html = Presenter.doXid ("<div id='lastname'>a last name</div >", datas, "", errorMessage);
|
||||||
|
|
||||||
|
System.out.println ("----------------------------");
|
||||||
|
System.out.println ("datas = new TagsDataId ();");
|
||||||
|
System.out.println ("tag = new TagData ();");
|
||||||
|
System.out.println ("tag.getAttributes ().setAttribute (\"class\", \"lastnameClass\");");
|
||||||
|
System.out.println ("tag.getAttributes ().appendAttribute (\"style\", \"background: blue;\");");
|
||||||
|
System.out.println ("tag.getAttributes ().appendAttribute (\"style\", \"foreground: red;\");");
|
||||||
|
System.out.println ("tag.setContent (\"Spiderman\");");
|
||||||
|
System.out.println ("datas.put (\"lastname\", tag););");
|
||||||
|
System.out.println ("+");
|
||||||
|
System.out.println ("<div id='lastname'>a last name</div>");
|
||||||
|
System.out.println ("=>");
|
||||||
|
System.out.println (html);
|
||||||
|
|
||||||
|
|
||||||
|
// Populate attributes of Test 03.
|
||||||
|
datas = new TagsDataById ();
|
||||||
|
datas.setContent ("lastname", "Spiderman");
|
||||||
|
datas.appendAttribute ("lastname", "style", "background: blue;");
|
||||||
|
datas.appendAttribute ("lastname", "style", "foreground: red;");
|
||||||
|
datas.setAttribute ("lastname", "class", "nameClass");
|
||||||
|
|
||||||
|
|
||||||
|
errorMessage = new StringBuffer ();
|
||||||
|
html = Presenter.doXid ("<div id='lastname'>a last name</div >", datas, "", errorMessage);
|
||||||
|
|
||||||
|
System.out.println ("----------------------------");
|
||||||
|
System.out.println ("datas = new TagsDataId ();");
|
||||||
|
System.out.println ("datas.setContent (\"lastname\", \"Spiderman\");");
|
||||||
|
System.out.println ("datas.appendAttribute (\"lastname\", \"style\", \"foreground: red;\");");
|
||||||
|
System.out.println ("datas.appendAttribute (\"lastname\", \"style\", \"foreground: red;\"");
|
||||||
|
System.out.println ("datas.setAttribute (\"lastname\", \"class\", \"nameClass\");");
|
||||||
|
System.out.println ("+");
|
||||||
|
System.out.println ("<div id='lastname'>a last name</div>");
|
||||||
|
System.out.println ("=>");
|
||||||
|
System.out.println (html);
|
||||||
|
System.out.println ("----------------------------");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,16 +1,132 @@
|
||||||
package xid;
|
package xid.test;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
|
import xid.*;
|
||||||
|
|
||||||
|
interface TTagDataCore
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
class TTagData implements TTagDataCore
|
||||||
|
{
|
||||||
|
public String a;
|
||||||
|
}
|
||||||
|
|
||||||
|
class TTagsDataById extends HashMap<String, Object> implements TTagDataCore
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
class TTagsData extends Vector<Object> implements TTagDataCore
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
class TTagsMatrix extends TTagsDataById
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
class Test
|
class Test
|
||||||
{
|
{
|
||||||
|
|
||||||
|
public static void test ()
|
||||||
|
{
|
||||||
|
System.out.println ("doing a test");
|
||||||
|
|
||||||
|
|
||||||
|
TTagsDataById tags = new TTagsDataById ();
|
||||||
|
|
||||||
|
TTagData tag = new TTagData ();
|
||||||
|
tag.a = "label a1";
|
||||||
|
tags.put ("id1", tag);
|
||||||
|
|
||||||
|
tag = new TTagData ();
|
||||||
|
tag.a = "label a2";
|
||||||
|
tags.put ("id2", tag);
|
||||||
|
|
||||||
|
TTagsData tag2 = new TTagsData ();
|
||||||
|
tags.put ("id3", tag2);
|
||||||
|
|
||||||
|
TTagsDataById tag3 = new TTagsDataById ();
|
||||||
|
tags.put ("id4", tag3);
|
||||||
|
|
||||||
|
TTagsMatrix tag4 = new TTagsMatrix ();
|
||||||
|
tags.put ("id5", tag4);
|
||||||
|
|
||||||
|
System.out.println ("tags=" + tags);
|
||||||
|
|
||||||
|
Set keys = tags.keySet ();
|
||||||
|
Iterator it = keys.iterator ();
|
||||||
|
while (it.hasNext ())
|
||||||
|
{
|
||||||
|
String key = (String) it.next ();
|
||||||
|
Object obj = tags.get (key);
|
||||||
|
|
||||||
|
StringBuffer comment = new StringBuffer ();
|
||||||
|
comment.append ("(" + key + "=> " + obj + "-> ");
|
||||||
|
|
||||||
|
if (obj instanceof TTagData)
|
||||||
|
{
|
||||||
|
comment.append ("class TTagData");
|
||||||
|
}
|
||||||
|
else if (obj instanceof TTagsData)
|
||||||
|
{
|
||||||
|
comment.append ("class TTagsData");
|
||||||
|
}
|
||||||
|
else if (obj instanceof TTagsDataById)
|
||||||
|
{
|
||||||
|
comment.append ("class TTagsDataById");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (obj instanceof TTagDataCore)
|
||||||
|
{
|
||||||
|
comment.append (" TTagDataCore");
|
||||||
|
}
|
||||||
|
|
||||||
|
comment.append (")");
|
||||||
|
System.out.println (comment);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static private org.apache.log4j.Logger log;
|
||||||
|
|
||||||
|
static
|
||||||
|
{
|
||||||
|
log = org.apache.log4j.Logger.getLogger (Test.class.getName ());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
public static void main(String[] args)
|
public static void main(String[] args)
|
||||||
{
|
{
|
||||||
System.out.println("Hello World!");
|
System.out.println("Hello World!");
|
||||||
|
|
||||||
|
//test ();
|
||||||
|
|
||||||
|
//
|
||||||
|
TagsDataById datas = new TagsDataById ();
|
||||||
|
TagData tag;
|
||||||
|
|
||||||
|
// Populate attributes of Test 03.
|
||||||
|
tag = new TagData ();
|
||||||
|
tag.setContent ("hello");
|
||||||
|
tag.getAttributes ().appendAttribute ("style", "background: blue;");
|
||||||
|
tag.getAttributes ().appendAttribute ("style", "foreground: red;");
|
||||||
|
tag.getAttributes ().setAttribute ("class", "totoClass");
|
||||||
|
datas.put ("test03", tag);
|
||||||
|
|
||||||
|
StringBuffer html;
|
||||||
|
StringBuffer errorMessage;
|
||||||
|
|
||||||
|
errorMessage = new StringBuffer ();
|
||||||
|
html = Presenter.doXid ("<X id='test03'>bla</X>", datas, "", errorMessage);
|
||||||
|
|
||||||
|
System.out.println ("----------------------------");
|
||||||
|
System.out.println (html);
|
||||||
|
System.out.println ("----------------------------");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -131,35 +131,6 @@ public class Test extends HttpServlet
|
||||||
|
|
||||||
log.info ("Exit");
|
log.info ("Exit");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
static public String extractBody (StringBuffer data)
|
|
||||||
{
|
|
||||||
String result = null;
|
|
||||||
|
|
||||||
// Extraire le contenu du body.
|
|
||||||
String dataLowerCase = data.toString ().toLowerCase ();
|
|
||||||
|
|
||||||
int startBody = dataLowerCase.indexOf ("<body>") + 6;
|
|
||||||
int endBody = dataLowerCase.indexOf ("</body>");
|
|
||||||
|
|
||||||
// Note: as failed search is improbable, no care about complexity
|
|
||||||
// in failed search case.
|
|
||||||
if ((startBody == -1) || (endBody == -1))
|
|
||||||
{
|
|
||||||
result = null;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
result = data.substring (startBody, endBody).trim ();
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
return (result);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ////////////////////////////////////////////////////////////////////////
|
// ////////////////////////////////////////////////////////////////////////
|
Binary file not shown.
Loading…
Reference in a new issue