public abstract class ReportExtension extends SelectBuilder implements uk.ac.ed.epcc.webapp.Contexed, TemplateValidator
TemplateValidator and should perform
additional checks for the Elements that they support.| Modifier and Type | Field and Description |
|---|---|
protected static java.lang.String |
DAY |
protected java.text.DateFormat |
df |
protected static java.lang.String |
END_TIME |
protected static java.lang.String |
EXPRESSION_PREFIX |
protected static java.lang.String |
FILTER_ELEMENT |
static java.lang.String |
FILTER_LOC |
static java.lang.String |
FORMATTER_PREFIX |
protected static java.lang.String |
HOUR |
protected static java.lang.String |
MINUTE |
protected static java.lang.String |
MONTH |
protected java.text.NumberFormat |
nf |
protected static java.lang.String |
NUMBER_OF_SPLIT_UNITS |
protected static java.lang.String |
NUMBER_OF_SPLITS |
protected java.util.Map<java.lang.String,java.lang.Object> |
params |
protected static java.lang.String |
PERIOD_ELEMENT |
static java.lang.String |
PERIOD_NS |
protected static java.lang.String |
PRODUCER_ELEMENT |
protected static java.lang.String |
SECOND |
protected static java.lang.String |
SPLIT_UNIT |
protected static java.lang.String |
START_TIME |
protected static java.text.SimpleDateFormat |
timestampFormat |
protected static java.lang.String |
WEEK |
protected static java.lang.String |
YEAR |
conn, DESCENDING_ATTR, FILTER_AND_ELEMENT, FILTER_CONTAINER_ELEMENT, FILTER_EQ_ELEMENT, FILTER_NOT_NULL_ELEMENT, FILTER_NULL_ELEMENT, FILTER_OR_ELEMENT, FILTER_ORDER_BY_ELEMENT, FILTER_PRODUCER_ELEMENT, FORMAT_ATTR, parse_vis, PROPERTY_ELEMENT, TIME_BOUNDS_ELEMENT, VALUE_ELEMENT| Constructor and Description |
|---|
ReportExtension(uk.ac.ed.epcc.webapp.AppContext conn,
java.text.NumberFormat nf) |
| Modifier and Type | Method and Description |
|---|---|
void |
addDeveloperError(java.lang.String type,
java.lang.String details)
Add an error only if the current user is a report developer
|
void |
addError(java.lang.String type,
java.lang.String details) |
void |
addError(java.lang.String type,
java.lang.String details,
org.w3c.dom.Node e) |
void |
addError(java.lang.String type,
java.lang.String details,
java.lang.Throwable t) |
protected RecordSet |
addFilterElement(RecordSet rs,
org.w3c.dom.Element filter)
Add a "Filter" container to the
RecordSet. |
org.w3c.dom.DocumentFragment |
addReference(uk.ac.ed.epcc.webapp.content.XMLGenerator gen) |
boolean |
checkNode(org.w3c.dom.Element e)
Consider this element for validity.
|
<T> T |
convert(uk.ac.ed.epcc.webapp.model.data.reference.IndexedProducer fac,
java.lang.Class<T> target,
java.lang.Object dat)
Perform known conversions to a desired target type.
|
java.lang.String |
debug(java.lang.String text) |
<T> java.lang.String |
display(PropExpression<T> tag,
T value)
Format a property for final display to the user.
|
<T> java.lang.String |
displayByClass(java.lang.Class<? extends T> target,
T value)
get a human readable string for an object that will not need to be re-parsed
|
boolean |
empty(java.lang.String value) |
<T> java.lang.String |
format(PropExpression<T> tag,
T value)
Format a property value in a way that may be re-parsed in a later processing
stage ie compatible with the parse method
|
protected org.w3c.dom.DocumentFragment |
format(uk.ac.ed.epcc.webapp.content.Table table,
java.lang.String type) |
<T> java.lang.String |
formatByClass(java.lang.Class<? extends T> target,
T value) |
protected org.w3c.dom.DocumentFragment |
formatObject(java.lang.Object param,
java.lang.String parameterFormat) |
protected boolean |
getBooleanParam(java.lang.String name,
boolean def,
org.w3c.dom.Element elem) |
protected java.lang.Class<? extends uk.ac.ed.epcc.webapp.content.TableFormatPolicy> |
getDefaultTableFormatPolicy() |
protected org.w3c.dom.Document |
getDocument()
Get a Document object needed to create result Nodes
|
ErrorSet |
getErrors() |
protected PropExpression |
getExpression(PropertyTargetFactory up,
java.lang.String expr) |
protected DomFormatter |
getFormatter(java.lang.Class clazz,
java.lang.String name)
Generate a
DomFormatter for the specified class based on a format string. |
java.lang.Object |
getFormParameter(java.lang.String name)
Get a form parameter by name
|
protected int |
getIntParam(java.lang.String name,
int def,
org.w3c.dom.Element elem) |
protected int |
getIntParamNS(java.lang.String namespace,
java.lang.String name,
int def,
org.w3c.dom.Element elem) |
protected java.lang.Number |
getNumberParam(java.lang.String name,
java.lang.Number def,
org.w3c.dom.Element elem)
Get a numeric value from document.
|
protected java.lang.Object |
getParameterRef(org.w3c.dom.Element e)
Get the parameter referenced by a nested ParameterRef element
|
protected <T> T |
getParamExpressionValue(PropExpression<T> expr,
java.lang.String name,
org.w3c.dom.Element elem)
Parse a
PropExpression in a nested element
the value can also be provided as a ParameterRef element |
PropertyTag |
getProperty(org.w3c.dom.Node node,
PropertyTargetFactory producer,
java.lang.String name)
Gets the PropertyTag in the sub-tag 'name'.
|
PropExpression |
getPropertyExpression(org.w3c.dom.Node node,
PropertyTargetFactory producer,
java.lang.String name) |
protected <T> SelectClause<T> |
getSelectClause(PropExpression<T> expr,
uk.ac.ed.epcc.webapp.jdbc.filter.MatchCondition cond,
org.w3c.dom.Element e) |
<T> PropertyTag<? extends T> |
getTag(PropertyFinder finder,
java.lang.Class<? extends T> target,
java.lang.String name) |
<T> PropertyTag<? extends T> |
getTag(PropertyTargetFactory up,
java.lang.Class<? extends T> target,
java.lang.String name) |
PropertyTag |
getTag(PropertyTargetFactory up,
org.w3c.dom.Element element) |
PropertyTag |
getTag(PropertyTargetFactory up,
java.lang.String name) |
<T> T |
getValue(PropExpression<T> tag,
org.w3c.dom.Element element) |
protected boolean |
hasParam(java.lang.String name,
org.w3c.dom.Element elem) |
protected boolean |
hasParameterRef(org.w3c.dom.Element e)
Test for existance of a ParameterRef
|
uk.ac.ed.epcc.webapp.time.Period |
makePeriod(org.w3c.dom.Node region) |
java.lang.String |
makeString(org.w3c.dom.Node e) |
static java.lang.Number |
parseNumber(java.text.NumberFormat nf,
java.lang.Class target,
java.lang.String value) |
protected static java.lang.Number |
parseNumberWithDef(java.lang.Number def,
java.lang.String s) |
void |
setParams(java.util.Map<java.lang.String,java.lang.Object> p) |
protected void |
setTime(java.util.Calendar time,
java.lang.String timeString) |
void |
setUseReference(boolean val)
Store the table in the parameters list and just reference it
via a processing instruction.
|
getAttribute, getContext, getDateProperties, getExpression, getParam, getParamElement, getParamElementNS, getParamNS, getParamNSWithDefault, getParamWithDefault, getRecordSelectElement, getText, getValueParser, getValueParser, hasChild, parse, setPolicypublic static final java.lang.String FORMATTER_PREFIX
protected static final java.lang.String EXPRESSION_PREFIX
protected static final java.lang.String PRODUCER_ELEMENT
protected static final java.lang.String FILTER_ELEMENT
public static final java.lang.String FILTER_LOC
protected static final java.lang.String PERIOD_ELEMENT
protected static final java.lang.String NUMBER_OF_SPLIT_UNITS
protected static final java.lang.String SPLIT_UNIT
protected static final java.lang.String YEAR
protected static final java.lang.String MONTH
protected static final java.lang.String WEEK
protected static final java.lang.String HOUR
protected static final java.lang.String MINUTE
protected static final java.lang.String SECOND
protected static final java.lang.String DAY
protected static final java.lang.String NUMBER_OF_SPLITS
protected static final java.lang.String START_TIME
protected static final java.lang.String END_TIME
public static final java.lang.String PERIOD_NS
protected static java.text.SimpleDateFormat timestampFormat
protected final java.text.NumberFormat nf
protected java.text.DateFormat df
protected java.util.Map<java.lang.String,java.lang.Object> params
public ReportExtension(uk.ac.ed.epcc.webapp.AppContext conn,
java.text.NumberFormat nf)
throws javax.xml.parsers.ParserConfigurationException
javax.xml.parsers.ParserConfigurationExceptionpublic void setParams(java.util.Map<java.lang.String,java.lang.Object> p)
public final void addError(java.lang.String type,
java.lang.String details)
public final void addDeveloperError(java.lang.String type,
java.lang.String details)
type - details - public final void addError(java.lang.String type,
java.lang.String details,
org.w3c.dom.Node e)
addError in class SelectBuilderpublic java.lang.String makeString(org.w3c.dom.Node e)
public final void addError(java.lang.String type,
java.lang.String details,
java.lang.Throwable t)
addError in class SelectBuilderpublic ErrorSet getErrors()
public java.lang.String debug(java.lang.String text)
debug in class SelectBuilderpublic java.lang.Object getFormParameter(java.lang.String name)
name - protected final org.w3c.dom.Document getDocument()
protected <T> T getParamExpressionValue(PropExpression<T> expr, java.lang.String name, org.w3c.dom.Element elem) throws java.lang.Exception
PropExpression in a nested element
the value can also be provided as a ParameterRef elementgetParamExpressionValue in class SelectBuilderjava.lang.Exceptionexpr - name - elem - protected <T> SelectClause<T> getSelectClause(PropExpression<T> expr, uk.ac.ed.epcc.webapp.jdbc.filter.MatchCondition cond, org.w3c.dom.Element e) throws java.lang.Exception
getSelectClause in class SelectBuilderjava.lang.Exceptionprotected final boolean hasParam(java.lang.String name,
org.w3c.dom.Element elem)
throws ReportException
ReportExceptionprotected java.lang.Object getParameterRef(org.w3c.dom.Element e)
e - protected boolean hasParameterRef(org.w3c.dom.Element e)
e - protected final int getIntParam(java.lang.String name,
int def,
org.w3c.dom.Element elem)
throws java.lang.Exception
java.lang.Exceptionprotected final boolean getBooleanParam(java.lang.String name,
boolean def,
org.w3c.dom.Element elem)
throws java.lang.Exception
java.lang.Exceptionprotected final java.lang.Number getNumberParam(java.lang.String name,
java.lang.Number def,
org.w3c.dom.Element elem)
throws java.lang.Exception
java.lang.Exceptionname - Name of sub-element to query (null to query elem)def - default value to returnelem - protected static java.lang.Number parseNumberWithDef(java.lang.Number def,
java.lang.String s)
throws java.text.ParseException
java.text.ParseExceptionprotected final int getIntParamNS(java.lang.String namespace,
java.lang.String name,
int def,
org.w3c.dom.Element elem)
throws java.lang.Exception
java.lang.Exceptionpublic PropertyTag getTag(PropertyTargetFactory up, org.w3c.dom.Element element) throws java.lang.Exception
java.lang.Exceptionpublic PropertyTag getTag(PropertyTargetFactory up, java.lang.String name)
protected PropExpression getExpression(PropertyTargetFactory up, java.lang.String expr)
public <T> T getValue(PropExpression<T> tag, org.w3c.dom.Element element) throws java.lang.Exception
java.lang.Exceptionpublic <T> PropertyTag<? extends T> getTag(PropertyTargetFactory up, java.lang.Class<? extends T> target, java.lang.String name)
public <T> PropertyTag<? extends T> getTag(PropertyFinder finder, java.lang.Class<? extends T> target, java.lang.String name)
public <T> T convert(uk.ac.ed.epcc.webapp.model.data.reference.IndexedProducer fac,
java.lang.Class<T> target,
java.lang.Object dat)
fac - IndexedProducer (only needed if converting to an IndexedReference)target - dat - public static java.lang.Number parseNumber(java.text.NumberFormat nf,
java.lang.Class target,
java.lang.String value)
throws java.text.ParseException
java.text.ParseExceptionpublic <T> java.lang.String format(PropExpression<T> tag, T value) throws java.lang.Exception
java.lang.ExceptionT - tag - value - public <T> java.lang.String formatByClass(java.lang.Class<? extends T> target,
T value)
throws java.lang.Exception
java.lang.Exceptionpublic <T> java.lang.String displayByClass(java.lang.Class<? extends T> target,
T value)
throws java.lang.Exception
java.lang.Exceptiontarget - value - public <T> java.lang.String display(PropExpression<T> tag, T value) throws java.lang.Exception
java.lang.ExceptionT - tag - PropExpression being formatted (can be null).value - public boolean checkNode(org.w3c.dom.Element e)
throws TemplateValidateException
TemplateValidatorcheckNode in interface TemplateValidatorTemplateValidateExceptione - Element to be consideredpublic boolean empty(java.lang.String value)
public PropExpression getPropertyExpression(org.w3c.dom.Node node, PropertyTargetFactory producer, java.lang.String name)
public PropertyTag getProperty(org.w3c.dom.Node node, PropertyTargetFactory producer, java.lang.String name)
node - the XML nodeproducer - the producer, required to create the PropertyTags.name - the name of the sub-tag.public org.w3c.dom.DocumentFragment addReference(uk.ac.ed.epcc.webapp.content.XMLGenerator gen)
protected DomFormatter getFormatter(java.lang.Class clazz, java.lang.String name)
DomFormatter for the specified class based on a format string.
Default behaviour is to look for a DomFormatter class definition using the qualifier Formatter (see AppContext.makeObjectWithDefault(Class,Class,String,String)
Failing that a ValueParser is retrieved and converted into a DomFormatter.
If the format starts with expression: This is taken to be a PropExpression to be evaluated on the target object.
clazz - target class of formattername - format stringprotected org.w3c.dom.DocumentFragment formatObject(java.lang.Object param,
java.lang.String parameterFormat)
throws ReportException
ReportExceptionprotected RecordSet addFilterElement(RecordSet rs, org.w3c.dom.Element filter)
RecordSet.rs - filter - public uk.ac.ed.epcc.webapp.time.Period makePeriod(org.w3c.dom.Node region)
throws java.lang.Exception
java.lang.Exceptionprotected void setTime(java.util.Calendar time,
java.lang.String timeString)
throws java.lang.Exception
java.lang.Exceptionpublic void setUseReference(boolean val)
val - protected org.w3c.dom.DocumentFragment format(uk.ac.ed.epcc.webapp.content.Table table,
java.lang.String type)
protected java.lang.Class<? extends uk.ac.ed.epcc.webapp.content.TableFormatPolicy> getDefaultTableFormatPolicy()