New core for datas.

This commit is contained in:
administrateur 2007-01-23 18:43:32 +01:00
parent cc9cc6018d
commit 5609135257
17 changed files with 666 additions and 416 deletions

View file

@ -11,7 +11,7 @@
<property name="resources" value="resources"/>
<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 ******* -->
<target name="init">
@ -24,7 +24,7 @@
<!-- ******* build ******* -->
<target name="build" depends="init">
<target name="build_xid" depends="init">
<javac srcdir="${src}" destdir="${build}/classes" debug="${debug}" deprecation="on">
<classpath>
<fileset dir="lib" includes="**/*.jar"/>
@ -33,8 +33,8 @@
</target>
<!-- ****** xid_dist ****** -->
<target name="xid_dist" depends="build">
<!-- ****** dist_xid ****** -->
<target name="dist_xid" depends="build_xid">
<jar update="no" jarfile="dist/xid.jar">
<fileset dir="build/classes" includes="xid/**.class" />
<fileset dir="resources" includes="**" />
@ -43,27 +43,31 @@
<!-- ******* 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">
<classpath>
<fileset dir="lib" includes="**/*.jar"/>
<pathelement path="dist/xid.jar"/>
</classpath>
</javac>
</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">
<fileset dir="build_test/classes" includes="xid/test/**.class" />
<fileset dir="resources" includes="**" />
</jar>
</target>
<!-- *********** dotest ******** -->
<target name="dotest" depends="test_dist">
<target name="dotest" depends="dist_test">
<java classname="xid.test.Test" maxmemory="20m" fork="true">
<classpath>
<fileset dir="lib" includes="**/*.jar" />
<fileset dir="resources" includes="**" />
<pathelement path="dist/xid.jar"/>
<pathelement path="dist/test.jar"/>
</classpath>
@ -72,7 +76,7 @@
<!-- ******* Examples (the webapp). ******* -->
<target name="examples" depends="xid_dist">
<target name="examples" depends="dist_xid">
<copy todir="webapp-examples/WEB-INF/lib">
<fileset dir="lib" includes="*.jar" excludes="servlet-api.jar"/>
@ -95,7 +99,7 @@
<!-- ****** JavaDoc ****** -->
<target name="javadoc" depends="build">
<target name="javadoc" depends="build_xid">
<javadoc sourcepath="${src}" packageNames="xid.*" destdir="${doc}">
<classpath>
<fileset dir="lib" includes="**/*.jar"/>

View file

@ -11,18 +11,20 @@
<property name="resources" value="resources"/>
<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 ******* -->
<target name="init">
<tstamp/>
<mkdir dir="${build}"/>
<mkdir dir="build_test/classes"/>
<mkdir dir="${build}/classes"/>
<mkdir dir="${dist}"/>
</target>
<!-- ******* Compile ******* -->
<target name="compile" depends="init">
<!-- ******* build ******* -->
<target name="build_xid" depends="init">
<javac srcdir="${src}" destdir="${build}/classes" debug="${debug}" deprecation="on">
<classpath>
<fileset dir="lib" includes="**/*.jar"/>
@ -30,17 +32,51 @@
</javac>
</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">
<fileset dir="build/classes" includes="xid/**/**.class" />
<fileset dir="build/classes" includes="xid/**.class" />
<fileset dir="resources" includes="**" />
</jar>
</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). ******* -->
<target name="examples" depends="xid_dist">
<target name="examples" depends="dist_xid">
<copy todir="webapp-examples/WEB-INF/lib">
<fileset dir="lib" includes="*.jar" excludes="servlet-api.jar"/>
@ -63,7 +99,7 @@
<!-- ****** JavaDoc ****** -->
<target name="javadoc" depends="compile">
<target name="javadoc" depends="build_xid">
<javadoc sourcepath="${src}" packageNames="xid.*" destdir="${doc}">
<classpath>
<fileset dir="lib" includes="**/*.jar"/>
@ -75,6 +111,7 @@
<!-- *************** Clean ***********************-->
<target name="clean">
<delete dir="${build}"/>
<delete dir="build_test"/>
</target>
<!-- *********** Produce ZIP release file ******** -->

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
dist/test.jar vendored

Binary file not shown.

BIN
dist/xid.jar vendored

Binary file not shown.

View file

@ -1,10 +1,9 @@
/*
*
*/
package xid;
import java.util.*;
import java.io.*;
import javax.xml.parsers.*;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import org.xml.sax.*;
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;
@ -135,7 +134,7 @@ public class Presenter
/*
*
* Xid a file without data.
*/
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;
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);
}
/*
*
* 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;
Document doc = null;
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;
@ -258,7 +300,7 @@ public class Presenter
* @param attrMap
* @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;
@ -291,7 +333,7 @@ public class Presenter
}
else
{
log.info ("object action");
log.debug ("object action");
result.append ("<!-- STARTING INCLUDE XID FILE " + attrMap.getNamedItem ("data") + " -->");
// Build the file name.
@ -307,7 +349,7 @@ public class Presenter
catch (Exception ex)
{
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.
@ -319,7 +361,7 @@ public class Presenter
if (nodes.getLength () == 0)
{
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
{
@ -329,7 +371,7 @@ public class Presenter
catch (Exception e)
{
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.
@ -347,7 +389,7 @@ public class Presenter
//
result.append ("<!-- ENDING INCLUDE XID FILE " + attrMap.getNamedItem ("data") + " -->");
}
log.info ("end of object action");
log.debug ("end of object action");
//
return (result);
}
@ -368,7 +410,7 @@ public class Presenter
static protected StringBuffer processElementWithId (Node node,
NamedNodeMap attrs,
Node idAttr,
TagsData datas,
TagsDataById datas,
String webappPath,
StringBuffer errorOutput)
{
@ -378,104 +420,82 @@ public class Presenter
String tag = node.getNodeName();
String idValue = idAttr.getNodeValue();
log.info ("tag=" + tag);
log.debug ("tag=" + tag);
// Get data of this id.
TagData data = datas.get (idAttr.getNodeValue ());
String theClass;
if (data == null)
{
theClass = null;
}
else
{
theClass = data.getAttributes ().getAttribute ("class");
}
TagDataCore dataCore = datas.get (idAttr.getNodeValue ());
if ((theClass == null) ||
(!theClass.equals ("xid:nodisplay")))
if (dataCore == null)
{
if ((tag.equals ("a")) ||
(tag.equals ("b")) ||
(tag.equals ("div")) ||
(tag.equals ("em")) ||
(tag.equals ("p")) ||
(tag.equals ("span")))
result.append (Presenter.processElementBasically (node, datas, webappPath, errorOutput));
}
else if (dataCore instanceof TagData)
{
TagData data = (TagData) dataCore;
String theClass;
if (data == null)
{
// Open the tag.
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 ('>');
theClass = null;
}
else if (tag.equals("img"))
else
{
theClass = data.getAttributes ().getAttribute ("class");
}
if ((theClass == null) ||
(!theClass.equals ("xid:nodisplay")))
{
// Possibility to merge with previous case if <div /> is a correct tag.
// Open the tag.
result.append ("<");
result.append (node.getNodeName());
// Build the tag attributes.
// Build attributes.
result.append (processAttributes (attrs, data));
//result.append (attributesFromNode (attrs));
//result.append (attributesFromTagData (data));
result.append ("/>");
}
else if (tag.equals("textarea"))
{
result.append ("[textarea]");
}
else if (tag.equals("select"))
{
result.append ("[select]");
}
else if (tag.equals("input"))
{
result.append ("[input]");
}
else if (tag.equals("table"))
{
result.append ("[table]");
}
else if (tag.equals("tbody"))
{
result.append ("[tbody]");
}
else if (tag.equals("object"))
{
result.append (processObjectTag (node, attrs, idAttr, datas, webappPath, errorOutput));
}
else
{
log.info ("Id on <" + tag + "> not supported.");
if ((node.getChildNodes () == null) &&
((data == null) || data.display ().equals ("")))
{
// Close the tag.
result.append (" />");
}
else
{
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 (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);
}
@ -485,9 +505,9 @@ public class Presenter
* 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_DOCTYPE = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 "
+ "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?
if (node != null)
{
log.info ("nodeName=" + node.getNodeName ());
log.debug ("nodeName=" + node.getNodeName ());
// Find the name attribute value.
String name;
@ -513,27 +533,31 @@ public class Presenter
{
case Node.DOCUMENT_NODE:
{
log.info ("case Node.DOCUMENT_NODE");
log.debug ("case Node.DOCUMENT_NODE");
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();
if (systemId.equals(TRANSITIONAL_DTD))
{
result.append(TRANSITIONAL_DOCTYPE);
}
// Log.write(Log.TRACE,"publicId = " + publicId);
// Log.write(Log.TRACE,"systemId = " + systemId);
}
// Log.write(Log.TRACE,"publicId = " + publicId);
// Log.write(Log.TRACE,"systemId = " + systemId);
result.append (Presenter.process (((Document) node).getDocumentElement(), datas, webappPath, errorOutput));
break;
}
case Node.ELEMENT_NODE:
{
log.info ("case Node.ELEMENT_NODE");
log.debug ("case Node.ELEMENT_NODE");
NamedNodeMap attrs = node.getAttributes ();
Node idAttr = attrs.getNamedItem ("id");
@ -553,7 +577,7 @@ public class Presenter
// handle entity reference nodes
case Node.ENTITY_REFERENCE_NODE:
{
log.info ("case Node.ENTITY_REFERENCE_NODE");
log.debug ("case Node.ENTITY_REFERENCE_NODE");
result.append ('&');
result.append (node.getNodeName());
@ -564,7 +588,7 @@ public class Presenter
// print cdata sections
case Node.CDATA_SECTION_NODE:
{
log.info ("case Node.CDATA_SECTION_NODE");
log.debug ("case Node.CDATA_SECTION_NODE");
result.append ("<![CDATA[");
result.append (node.getNodeValue());
@ -576,7 +600,7 @@ public class Presenter
// print text
case Node.TEXT_NODE:
{
log.info ("case Node.TEXTE_NODE");
log.debug ("case Node.TEXTE_NODE");
result.append (restoreEntities (new StringBuffer(node.getNodeValue())));
break;
}
@ -584,7 +608,7 @@ public class Presenter
// print processing instruction
case Node.PROCESSING_INSTRUCTION_NODE:
{
log.info ("Node.PROCESSING_INSTRUCTION_NODE");
log.debug ("Node.PROCESSING_INSTRUCTION_NODE");
result.append ("<?");
result.append (node.getNodeName());
@ -603,14 +627,14 @@ public class Presenter
//
//log.info ("result=" + result);
log.info ("Exit");
log.debug ("Exit");
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;
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;
File source = new File (fileName);
if (source == null)
try
{
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);
log.error (errorMessage);
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);
@ -1026,4 +1055,33 @@ public class Presenter
//
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);
}
}

View file

@ -15,7 +15,7 @@ import java.io.*;
* 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};
@ -23,22 +23,60 @@ public abstract class TagData implements Serializable
protected boolean excludeSection;
protected MODE displayMode = MODE.REPLACE;
String content;
/*
*
*/
public TagData ()
{
attributes = null;
excludeSection = false;
displayMode = MODE.REPLACE;
this.attributes = null;
this.excludeSection = false;
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);
}
/*
* ??
*/
public String getValue()
{
return display();
}
/*
*

View file

@ -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 ();
}
/*
*
*/
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);
}
}

View file

@ -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);
}
}

View file

@ -1,73 +1,227 @@
package xid;
package xid.test;
import java.util.*;
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
{
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)
{
System.out.println("Hello World!");
Presenter xid = new Presenter (getServletContext ().getRealPath ("/"), "testXid.html");
//test ();
//
TagsData datas = new TagsData ();
TextTagData text;
TagsDataById datas;
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 errorMessage;
// Populate attributes of Test 03.
datas = new TagsDataById ();
tag = new TagData ();
tag.setContent ("Superman");
datas.put ("name", tag);
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.
response.setContentType ("text/html");
PrintWriter out = response.getWriter();
out.println ("<html>");
out.println ("<head>");
out.println ("<title>XID TEST</title>");
out.println ("</head>");
out.println ("<body bgcolor=\"orange\">");
// Populate attributes of Test 03.
datas = new TagsDataById ();
datas.setContent ("name", "Superman");
out.println ("<hr />");
out.println ("XID TEST<br/>");
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>");
}
errorMessage = new StringBuffer ();
html = Presenter.doXid ("<div id='name'>a name</div >", datas, "", errorMessage);
out.println ("</body>");
out.println ("</html>");
log.info ("Exit");
System.out.println ("----------------------------");
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);
// Populate attributes of Test 03.
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);
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 ("----------------------------");
}
}

View file

@ -1,16 +1,132 @@
package xid;
package xid.test;
import java.util.*;
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
{
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)
{
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 ("----------------------------");
}
}

View file

@ -131,35 +131,6 @@ public class Test extends HttpServlet
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.