Add new class to use Presenter.
This commit is contained in:
parent
df1c684e1d
commit
e77b5e70c4
3 changed files with 564 additions and 0 deletions
196
src/xid/DomPresenter.java
Normal file
196
src/xid/DomPresenter.java
Normal 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
170
src/xid/FilePresenter.java
Normal 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);
|
||||
}
|
||||
}
|
198
src/xid/StringPresenter.java
Normal file
198
src/xid/StringPresenter.java
Normal 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);
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue