Add new class to use Presenter.

This commit is contained in:
administrateur 2007-03-12 00:12:58 +01:00
parent df1c684e1d
commit e77b5e70c4
3 changed files with 564 additions and 0 deletions

196
src/xid/DomPresenter.java Normal file
View file

@ -0,0 +1,196 @@
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.*;
/**
*
*/
public class DomPresenter extends Presenter
{
static final public char INDEX_SEPARATOR = '_';
static protected org.apache.log4j.Logger log;
static
{
log = org.apache.log4j.Logger.getLogger (DomPresenter.class);
}
static protected String staticRootPath;
static
{
staticRootPath = null;
}
protected String webappPath;
protected Document doc;
/*
*
*/
public DomPresenter ()
{
this.webappPath = Presenter.staticRootPath;
this.doc = null;
}
/*
*
*/
public DomPresenter (Document doc)
{
this.webappPath = Presenter.staticRootPath;
this.doc = doc;
DomPresenter.addMetaTag (this.doc, "generator", "XID 0.0");
}
/*
*
*/
public DomPresenter (String webappPath, Document doc)
{
if ((webappPath == null) || (webappPath.equals ("")))
{
this.webappPath = Presenter.staticRootPath;
}
else
{
this.webappPath = webappPath;
}
this.doc = doc;
DomPresenter.addMetaTag (this.doc, "generator", "XID 0.0");
}
/*
*
*/
public String getWebappPath ()
{
String result;
result = this.webappPath;
//
return (result);
}
/*
*
*/
public void setWebappPath (String path)
{
this.webappPath = path;
}
/**
*
*/
public Document getDom ()
{
Document result;
result = this.doc;
//
return (result);
}
/**
*
*/
public void setDom (Document doc)
{
this.doc = doc;
}
/*
*
*/
public void setSource (Document doc)
{
this.doc = doc;
Presenter.addMetaTag (this.doc, "generator", "XID 0.0");
}
/*
*
*/
public Object getSource ()
{
Object result;
result = this.doc;
//
return (result);
}
/*
*
*/
public StringBuffer doXid (Data datas, StringBuffer errorOutput)
{
return (doXid (datas.getIdsDataById (), datas.getTagsDataById (), errorOutput));
}
/*
*
*/
public StringBuffer doXid (IdsDataById datas, TagsDataById tagsData, StringBuffer errorOutput)
{
StringBuffer result;
if (this.doc == null)
{
String errorMessage = "source not defined";
errorOutput.append (errorMessage);
log.error (errorMessage);
result = null;
}
else
{
// Build the web page.
result = Presenter.doXid (this.doc, datas, tagsData, this.webappPath, errorOutput);
}
//
return (result);
}
/*
* Xid a file with data.
*/
static public StringBuffer doXid (Document doc, IdsDataById datas, String webappPath, StringBuffer errorOutput)
{
return (doXid (doc, datas, null, webappPath, errorOutput));
}
/*
* Xid a file with data.
*/
static public StringBuffer doXid (Document doc, IdsDataById datas, TagsDataById tagsData, String webappPath, StringBuffer errorOutput)
{
StringBuffer result;
result = Presenter.process (doc, datas, tagsData, webappPath, errorOutput);
//
return (result);
}
}

170
src/xid/FilePresenter.java Normal file
View file

@ -0,0 +1,170 @@
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.*;
/**
*
*/
public class FilePresenter extends DomPresenter
{
static protected org.apache.log4j.Logger log;
static
{
log = org.apache.log4j.Logger.getLogger (FilePresenter.class);
}
protected String sourceFileName;
protected long sourceFileTime;
/*
*
*/
public FilePresenter ()
{
this.webappPath = Presenter.staticRootPath;
this.sourceFileName = null;
this.sourceFileTime = 0;
this.doc = null;
}
/*
*
*/
public FilePresenter (String fileName)
{
this.webappPath = Presenter.staticRootPath;
this.sourceFileName = fileName;
this.sourceFileTime = 0;
this.doc = null;
}
/*
*
*/
public FilePresenter (String webappPath, String fileName)
{
if ((webappPath == null) || (webappPath.equals ("")))
{
this.webappPath = Presenter.staticRootPath;
}
else
{
this.webappPath = webappPath;
}
this.sourceFileName = fileName;
this.sourceFileTime = 0;
this.doc = null;
}
/*
*
*/
public void setSource (String fileName)
{
this.sourceFileName = fileName;
this.sourceFileTime = 0;
this.doc = null;
}
/*
*
*/
public String getSource ()
{
String result;
result = this.sourceFileName;
//
return (result);
}
/*
*
*/
public StringBuffer doXid (Data datas, StringBuffer errorOutput)
{
return (doXid (datas.getIdsDataById (), datas.getTagsDataById (), errorOutput));
}
/*
*
*/
public StringBuffer doXid (IdsDataById datas, TagsDataById tagsData, StringBuffer errorOutput)
{
StringBuffer result;
String sourceFilePath = this.webappPath + File.separator + this.sourceFileName;
// Get the good tree.
File source = new File (sourceFilePath);
if (source == null)
{
String errorMessage = "source file not defined";
errorOutput.append (errorMessage);
log.error (errorMessage);
result = null;
}
else if (!source.exists ())
{
String errorMessage = "source file defined but not found (" + sourceFilePath + ")";
errorOutput.append (errorMessage);
log.error (errorMessage);
result = null;
}
else if ((this.doc == null) ||
(this.sourceFileTime != source.lastModified ()))
{
this.sourceFileTime = source.lastModified ();
this.doc = Presenter.fileToTree (sourceFilePath, errorOutput);
if (this.doc != null)
{
Presenter.addMetaTag (doc, "generator", "XID 0.0");
}
}
// Build the web page.
result = Presenter.doXid (doc, datas, tagsData, this.webappPath, errorOutput);
//
return (result);
}
/*
* Xid a file without data.
*/
static public StringBuffer doXid (String fileName, String webappPath, StringBuffer errorOutput)
{
StringBuffer result;
Document doc = Presenter.fileToTree (fileName, errorOutput);
if (doc == null)
{
result = null;
}
else
{
Presenter.addMetaTag (doc, "generator", "XID 0.0");
result = Presenter.doXid (doc, null, null, webappPath, errorOutput);
}
//
return (result);
}
}

View file

@ -0,0 +1,198 @@
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.*;
/**
*
*/
public class StringPresenter extends DomPresenter
{
static protected org.apache.log4j.Logger log;
static
{
log = org.apache.log4j.Logger.getLogger (StringPresenter.class);
}
protected String html;
/*
*
*/
public StringPresenter ()
{
super ();
this.webappPath = Presenter.staticRootPath;
this.doc = null;
this.html = null;
}
/*
*
*/
public StringPresenter (String html)
{
this.webappPath = Presenter.staticRootPath;
this.doc = null;
this.html = html;
}
/*
*
*/
public StringPresenter (String webappPath, String html)
{
if ((webappPath == null) || (webappPath.equals ("")))
{
this.webappPath = Presenter.staticRootPath;
}
else
{
this.webappPath = webappPath;
}
this.doc = null;
this.html = html;
}
/*
*
*/
public void setSource (String html)
{
this.html = html;
this.doc = null;
}
/*
*
*/
public String getSource ()
{
String result;
result = this.html;
//
return (result);
}
/*
*
*/
public StringBuffer doXid (Data datas, StringBuffer errorOutput)
{
return (doXid (datas.getIdsDataById (), datas.getTagsDataById (), errorOutput));
}
/*
*
*/
public StringBuffer doXid (IdsDataById datas, TagsDataById tagsData, StringBuffer errorOutput)
{
StringBuffer result;
if (this.doc == null)
{
// Build doc from this.html.
String htmlSource;
if ((this.html.startsWith ("<!DOCTYPE")) ||
(this.html.startsWith ("<!doctype")) ||
(this.html.startsWith ("<html>")) ||
(this.html.startsWith ("<HTML>")))
{
htmlSource = html;
}
else
{
htmlSource = "<html><head></head><body>\n" + html + "</body></html>";
}
// 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.doXid (doc, datas, tagsData, this.webappPath, errorOutput);
if (htmlTarget == null)
{
result = null;
}
else if ((this.html.startsWith ("<!DOCTYPE")) ||
(this.html.startsWith ("<!doctype")) ||
(this.html.startsWith ("<html>")) ||
(this.html.startsWith ("<HTML>")))
{
result = htmlTarget;
}
else
{
String bodyContent = extractBodyContent (htmlTarget);
if (bodyContent == null)
{
result = null;
}
else
{
result = new StringBuffer (bodyContent);
}
}
//
return (result);
}
/*
*
*/
static public StringBuffer doXid (String html, Data datas, StringBuffer errorOutput)
{
return (doXid (html, datas.getIdsDataById (), datas.getTagsDataById (), "", errorOutput));
}
/*
*
*/
static public StringBuffer doXid (String html, Data datas, String webappPath, StringBuffer errorOutput)
{
return (doXid (html, datas.getIdsDataById (), datas.getTagsDataById (), webappPath, errorOutput));
}
/*
* Xid a string with html in.
*/
static public StringBuffer doXid (String html, IdsDataById datas, String webappPath, StringBuffer errorOutput)
{
return (doXid (html, datas, null, webappPath, errorOutput));
}
/*
* Xid a string with html in.
*/
static public StringBuffer doXid (String html, IdsDataById datas, TagsDataById tagsData, String webappPath, StringBuffer errorOutput)
{
StringBuffer result;
StringPresenter presenter = new StringPresenter (webappPath, html);
result = presenter.doXid (datas, tagsData, errorOutput);
//
return (result);
}
}