org.sandev.tools.HTTP
Class AbstractXHTMLFormAdaptor

java.lang.Object
  extended by org.sandev.tools.HTTP.AbstractXHTMLFormAdaptor
All Implemented Interfaces:
org.sandev.basics.util.UIFormAdaptor
Direct Known Subclasses:
THD_XHTMLFormAdaptor

public abstract class AbstractXHTMLFormAdaptor
extends java.lang.Object
implements org.sandev.basics.util.UIFormAdaptor

A base class for converting a UIFormContext into an XHTML form, and reconstructing it from the posted form data. This class holds general framework methods which don't need to be generated from the structs.

Metatypes are supported through the title field available with most XHTML tags. In the absence of a metatype declaration for a field, a default metatype is sometimes generated to allow for easier trapping of certain situations. These types are:

The following metatypes are also supported:

For an overview on XHTML/XSLT rendering process, refer to the webapp/templates/ReadMe.html file for your application deployment.


Field Summary
protected  boolean[] actionSupportMap
          A map of UIFormContext ACTION constants to boolean flags.
static java.lang.String CHECKBOXPRFX
          A prefix used for checkbox button selection within a form.
static int CSVARRAY_LENGTHMAX
          If we are displaying an array as a CSV string, then use this value as the LENGTHMAX.
static int CSVARRAY_LENGTHNORM
          If we are displaying an array as a CSV string, then use this value as the LENGTHNORM.
static java.lang.String CURRINSTPRFX
          A prefix used to distinguish data for the currInst data member of the UIFormContext.
static java.lang.String DEFAULTFORMNAME
          If no form name is specified, then presumably we are just dealing with a single form.
static java.lang.String DELIMITER
          A delimiter for field actions, which have multiple component values.
static int DUMPMODE_COLLAPSED
          Indicates that an array field has been collapsed by the user and should be dumped out without any contents.
static int DUMPMODE_EDIT
          Indicates that the message should be dumped out for context save purposes and the fields should be editable by the user.
static int DUMPMODE_FIND
          Indicates that the message should be dumped out for context save purposes, and the fields should support entry of matching values by the user.
static int DUMPMODE_FINDADV
          Indicates that the message should be dumped out for context save purposes, and the fields should support entry of match expressions by the user.
static int DUMPMODE_HIDDEN
          Indicates that the message or field should be dumped out for context save purposes only and should not be visible in the rendered form display.
static int DUMPMODE_NODUMP
          Indicates the field should not be dumped out since there is no access to it.
static int DUMPMODE_READONLY
          Indicates that the message should be dumped out for context save purposes and be visible to the user, but not be editable.
static java.lang.String FIELD_ACTION
          A prefix to identify buttons for specific fields in the form.
static java.lang.String FIELDLINEBREAK
          We need to have an XHTML line break after each field display so that a generated UI is at least vaguely readable without any XSL templates applied.
static java.lang.String FINDCOLLPRFX
          A prefix used to distinguish data for the findCollection data member of the UIFormContext.
static java.lang.String FINDQUERYPRFX
          A prefix used to distinguish data for the findQuery data member of the UIFormContext.
static java.lang.String FORM_ACTION
          A prefix to identify the main buttons for the form.
protected  java.lang.String hiddenFieldValue
          The value to use when the field value cannot be displayed for security or other filtering reasons.
static java.lang.String RADIOPRFX
          A prefix used for radio button selection within a form.
protected  boolean readOnlyOverride
          Whether read only data should displayed or not.
static java.lang.String ROOTMSGPRFX
          A prefix used to distinguish data for the rootMsg data member of the UIFormContext.
protected static int SUBINSTCREATE_ANY
           
protected static int SUBINSTCREATE_CONTAINED_ONLY
           
protected static int SUBINSTCREATE_UNDEFINED
           
static int TEXTBOX_THRESHOLD
          Any string whose normal length is longer than this value will be displayed as a textbox.
static java.lang.String TEXTENCODED
          Indicator text used when a parameter value has been encoded to preserve formatting.
static java.lang.String UIFORMCTRLPRFX
          A prefix to distinguish data for the formControl data member of the UIFormContext.
static java.lang.String UIQUERYPRFX
          A prefix to distinguish data for the userQuery data member of the UIFormContext
static java.lang.String UPDATESPRFX
          A prefix used to distinguish data for the updates data member of the UIFormContext.
static int XHTMLSTYLE_STANDARD
          Indicator to use the standard XHTML dump format of a message field.
static int XHTMLSTYLE_SUMMARY
          Indicator to use the summary XHTML dump format of a message field.
 
Fields inherited from interface org.sandev.basics.util.UIFormAdaptor
SANDUILINK_REGEXP
 
Constructor Summary
AbstractXHTMLFormAdaptor()
          Default ctor calls init
 
Method Summary
protected  int accessForClass(org.sandev.basics.util.AuthUser user, org.sandev.basics.util.AuthFilter filter, java.lang.String classname)
          Returns the access the user has for the specified class.
protected  int accessForInstance(org.sandev.basics.util.AuthUser user, org.sandev.basics.util.AuthFilter filter, org.sandev.basics.structs.SandMessage msg)
          Returns the access the user has for the specified instance.
 boolean actionSupportMapValid(boolean[] map)
          Do a quick check of the given map to make sure it seems reasonable.
 java.lang.String actionToText(int action, org.sandev.basics.util.UIFormAdaptorCallback callback, org.sandev.basics.util.UIFormContext uifc)
          Given a UIFormContext ACTION constant, return the associated text value for it.
 boolean allowEditReadOnly()
          accessor for readOnlyOverride
protected  boolean arrayActionAllowed(int action, int access)
          Return true if the given action is allowed, false otherwise.
protected  int computeFieldDumpMode(int dumpMode, org.sandev.basics.structs.SandMessage msg, java.lang.String fieldname, org.sandev.basics.util.AuthUser user, org.sandev.basics.util.AuthFilter filter, boolean isTransientField, boolean isReadOnlyField, boolean overrideReadOnly, int xhtmlstyle)
          Return the dump mode for this field based on the given mode and the authorization.
protected  java.lang.String convertMultiSelect(java.lang.String value, java.lang.String classname, java.lang.String fieldname, java.lang.String printname, java.lang.String[] declTextVals, java.lang.String[] constNames, java.lang.String[] actualVals)
          Undo the conversion of the dumpMultiSelect* methods, so that the result is the declared text value.
protected  java.lang.String convertSandUILinks(java.lang.String value)
          Convert links within a SandUI as specified in the UIFormAdaptor conventions.
protected  void debug(java.lang.String text)
          Dump out the debug text.
protected  void debug(org.sandev.basics.util.UIFormAdaptorCallback callback, java.lang.String text)
          Dump out the debug text via the log mechanism of the callback.
protected  void decodeFieldAction(java.lang.String context, org.sandev.basics.util.UIFormContext uifc, java.util.Map params, org.sandev.basics.util.UIFormAdaptorCallback callback)
          Decode the given context and update the uifc accordingly.
protected  java.lang.String decodeSelection(java.lang.String loc, java.lang.String formName, java.util.Map params)
          Find the corresponding radio button for this array field action, and return an updated field location if a radio button was selected.
 void disableUnauthorizedActions(org.sandev.basics.util.UIFormContext uifc, org.sandev.basics.util.AuthUser user, org.sandev.basics.util.AuthFilter filter)
          If the user is not authorized for an action that would otherwise be enabled, then disable it.
protected  void doExpandCollapse(java.lang.String classtype, java.lang.String subpos, org.sandev.basics.util.UIFormContext uifc)
          Set up for field EXPAND or COLLAPSE action.
protected  void doFieldAdd(java.lang.String classtype, java.lang.String subpos, org.sandev.basics.util.UIFormContext uifc)
          Set up for field add action.
protected  void doFieldDelete(java.lang.String classtype, java.lang.String subpos, org.sandev.basics.util.UIFormContext uifc)
          Set up for field delete action.
protected  void doFieldDeref(java.lang.String classtype, java.lang.String subpos, org.sandev.basics.util.UIFormContext uifc)
          Set up for the field deref action.
protected  void doFieldDrilldown(java.lang.String classtype, java.lang.String subpos, org.sandev.basics.util.UIFormContext uifc)
          Set up for the field drilldown action.
protected  void doFieldFind(java.lang.String classtype, java.lang.String subpos, org.sandev.basics.util.UIFormContext uifc)
          Set up for field find action.
protected  void doFieldMove(java.lang.String classtype, java.lang.String subpos, org.sandev.basics.util.UIFormContext uifc)
          Set up for field MOVEUP or MOVEDOWN action.
protected  void doFieldRemove(java.lang.String classtype, java.lang.String subpos, org.sandev.basics.util.UIFormContext uifc)
          Set up for field remove action.
protected  void doFieldSelect(java.lang.String classtype, java.lang.String subpos, org.sandev.basics.util.UIFormContext uifc)
          Set up for field select action.
protected  void dumpActionButtons(java.io.PrintWriter out, java.lang.String formName, org.sandev.basics.util.UIFormContext uifc, org.sandev.basics.util.UIFormAdaptorCallback callback, org.sandev.basics.util.AuthUser user, org.sandev.basics.util.AuthFilter filter)
          Dump out buttons for the top level actions.
protected  void dumpArrayAssociation(java.io.PrintWriter out, java.lang.String prefix, java.lang.String fieldname, org.sandev.basics.util.ArrayAssociation choices)
          dump out the ArrayAssociation so it can be reconstructed on read.
protected  void dumpBinaryInput(java.io.PrintWriter out, java.lang.String prefix, java.lang.String fieldname, java.lang.String printname, java.lang.String metatype, java.lang.String value, java.lang.String classname, java.lang.String tipText, int xhtmlstyle)
          Override for implementations that require support for specific data encodings.
protected  void dumpBinaryOutput(java.io.PrintWriter out, java.lang.String prefix, java.lang.String fieldname, java.lang.String printname, java.lang.String metatype, int dumpMode, java.lang.String value, java.lang.String classname, java.lang.String tipText, int xhtmlstyle)
          Override for implementations that require support for specific data encodings.
protected  void dumpCollapsibleFieldSpanOpen(java.io.PrintWriter out, java.lang.String prefix, java.lang.String msgclass, java.lang.String fieldname, java.lang.String printname, java.lang.String metatype, java.lang.String parentclass, java.lang.String tipText, int xhtmlstyle, int collapse, org.sandev.basics.util.UIFormAdaptorCallback callback)
          Dump out the opening span, an array expansion contraction control if applicable, and the field identifier.
protected  void dumpComment(java.io.PrintWriter out, java.lang.String text)
          Dumps out comment text.
protected  void dumpComputedStringOutput(java.io.PrintWriter out, java.lang.String prefix, java.lang.String name, java.lang.String value)
          A utility method for dumping out an attribute value which is used for display purposes.
protected  void dumpDateInput(java.io.PrintWriter out, java.lang.String prefix, java.lang.String fieldname, java.lang.String printname, java.lang.String metatype, java.util.Date value, java.lang.String range, java.lang.String classname, java.lang.String tipText, java.lang.String editFormat, java.lang.String tzid, int lengthnorm, int xhtmlstyle, org.sandev.basics.structs.SandAttrVal[] formatting, int tabindex)
          Dump out an editable representation of a Date value.
protected  void dumpDateOutput(java.io.PrintWriter out, java.lang.String prefix, java.lang.String fieldname, java.lang.String printname, java.lang.String metatype, int dumpMode, java.util.Date value, java.lang.String classname, java.lang.String tipText, java.lang.String displayFormat, java.lang.String tzid, int xhtmlstyle, org.sandev.basics.structs.SandAttrVal[] formatting)
          Dump out a read only representation of a Date value.
protected  void dumpDecimalInput(java.io.PrintWriter out, java.lang.String prefix, java.lang.String fieldname, java.lang.String printname, java.lang.String metatype, double value, int decimals, boolean sep, java.lang.String range, int lengthnorm, java.lang.String classname, java.lang.String tipText, int xhtmlstyle, org.sandev.basics.structs.SandAttrVal[] formatting, int tabindex)
          Creates an input field for a decimal value.
protected  void dumpDecimalOutput(java.io.PrintWriter out, java.lang.String prefix, java.lang.String fieldname, java.lang.String printname, java.lang.String metatype, int dumpMode, double value, int decimals, boolean sep, java.lang.String classname, java.lang.String tipText, int xhtmlstyle, org.sandev.basics.structs.SandAttrVal[] formatting)
          Creates a read only representation of a decimal value.
protected  void dumpFakeFields(java.io.PrintWriter out, org.sandev.basics.util.UIFormContext uifc, java.lang.String prefix)
          Some things are worth dumping out for informational purposes even though they aren't really form fields.
 void dumpFieldIdentifier(java.io.PrintWriter out, java.lang.String prefix, java.lang.String fieldname, java.lang.String printname, java.lang.String classname, java.lang.String tipText, int xhtmlstyle)
          Dump out the field identifier.
static void dumpFieldInputClose(java.io.PrintWriter out, int xhtmlstyle)
          Dump out the field input control closing tag.
static void dumpFieldInputOpen(java.io.PrintWriter out, java.lang.String prefix, java.lang.String fieldname, int xhtmlstyle)
          Dump out the field input control wrapping tag.
static void dumpFieldSpanClose(java.io.PrintWriter out, int xhtmlstyle)
          Dump out the close span tag as needed.
static void dumpFieldSpanOpen(java.io.PrintWriter out, java.lang.String prefix, java.lang.String fieldname, java.lang.String metatype, int xhtmlstyle)
          Dump the enclosing span tag for a field name and entry control.
protected  void dumpFindStyleToggle(java.io.PrintWriter out, int findQueryDisplay, org.sandev.basics.util.UIFormContext uifc)
          Write out a link to toggle from the simple find form to the advanced find form.
protected  java.lang.String dumpFormContext(java.io.PrintWriter out, java.lang.String formName, org.sandev.basics.util.UIFormContext uifc, org.sandev.basics.util.UIFormAdaptorCallback callback, org.sandev.basics.util.AuthUser user, org.sandev.basics.util.AuthFilter filter)
          Render the form in XHTML.
protected  java.lang.String dumpFormContext(java.io.PrintWriter out, java.lang.String formName, org.sandev.basics.util.UIFormContext uifc, org.sandev.basics.util.UIFormAdaptorCallback callback, org.sandev.basics.util.AuthUser user, org.sandev.basics.util.AuthFilter filter, boolean allowMultiLevelEdit)
          Workhorse method for the dumpFormContext method without the boolean override.
 void dumpFormOutput(org.sandev.basics.util.UIRenderOutput uiro, java.lang.String formName, org.sandev.basics.util.UIFormContext uifc, org.sandev.basics.util.UIFormAdaptorCallback callback, org.sandev.basics.util.AuthUser user, org.sandev.basics.util.AuthFilter filter)
          Given a form context, write it out as HTML with enough hidden parameters that we can reconstruct it on return.
protected  void dumpHiddenParam(java.io.PrintWriter out, java.lang.String param, java.lang.String val)
          Dumps out a hidden parameter value pair.
protected  void dumpHiddenParamWithID(java.io.PrintWriter out, java.lang.String param, java.lang.String val)
          Same as standard dumpHiddenParam but adds the name as the id.
protected  void dumpIntegerInput(java.io.PrintWriter out, java.lang.String prefix, java.lang.String fieldname, java.lang.String printname, java.lang.String metatype, long value, boolean sep, java.lang.String range, int lengthnorm, java.lang.String classname, java.lang.String tipText, int xhtmlstyle, org.sandev.basics.structs.SandAttrVal[] formatting, int tabindex)
          Creates an editable representation of an integer value.
protected  void dumpIntegerOutput(java.io.PrintWriter out, java.lang.String prefix, java.lang.String fieldname, java.lang.String printname, java.lang.String metatype, int dumpMode, long value, boolean sep, java.lang.String classname, java.lang.String tipText, int xhtmlstyle, org.sandev.basics.structs.SandAttrVal[] formatting)
          Creates a read only representation of an integer value.
protected  void dumpMatchInput(java.io.PrintWriter out, java.lang.String prefix, java.lang.String fieldname, java.lang.String printname, java.lang.String classname, java.lang.String tipText, java.lang.String metatype, java.lang.String val, int xhtmlstyle)
          Creates a free text input field with associated label.
protected abstract  java.lang.String dumpMessage(java.io.PrintWriter out, java.lang.String prefix, org.sandev.basics.structs.SandMessage msg, int dumpMode, org.sandev.basics.util.UIFormAdaptorCallback callback, java.util.Locale locale, org.sandev.basics.util.AuthUser user, org.sandev.basics.util.AuthFilter filter, boolean overrideReadOnly, org.sandev.basics.sandmessages.UIFormControl formControl, org.sandev.basics.structs.SandUpdateMessage[] outstandingUpdates, int subCreate, int xhtmlstyle)
          Given an output writer and a prefix used to uniquely identify the data members for this message, dump the message in the output form specified, in accordance with the authorization visibility.
protected  void dumpMessageArrayInput(java.io.PrintWriter out, java.lang.String prefix, java.lang.String fieldname, java.lang.String printname, java.lang.String metatype, org.sandev.basics.sandmessages.UIFormControl formControl, java.lang.String msgclass, org.sandev.basics.structs.SandMessage[] msgs, org.sandev.basics.util.AuthUser user, org.sandev.basics.util.AuthFilter filter, boolean isReference, int subCreate, int dumpMode, java.util.Locale locale, org.sandev.basics.util.UIFormAdaptorCallback callback, org.sandev.basics.structs.SandMessage parent, java.lang.String tipText, int xhtmlstyle, int collapse, int tabindex)
          Like dumpMessageInput but for an array.
protected  void dumpMessageArrayOutput(java.io.PrintWriter out, java.lang.String prefix, java.lang.String fieldname, java.lang.String printname, java.lang.String metatype, java.lang.String classname, int dumpMode, org.sandev.basics.structs.SandMessage[] msgs, org.sandev.basics.util.AuthUser user, org.sandev.basics.util.AuthFilter filter, int action, java.util.Locale locale, org.sandev.basics.util.UIFormAdaptorCallback callback, java.lang.String parentclass, java.lang.String tipText, int xhtmlstyle, int collapse)
          Like dumpMessageOutput, but for an array of elements.
protected  void dumpMessageArraySelect(java.io.PrintWriter out, java.lang.String prefix, java.lang.String fieldname, java.lang.String printname, java.lang.String metatype, org.sandev.basics.sandmessages.UIFormControl formControl, java.lang.String msgclass, org.sandev.basics.structs.SandMessage[] msgs, org.sandev.basics.util.AuthUser user, org.sandev.basics.util.AuthFilter filter, java.util.Locale locale, org.sandev.basics.util.UIFormAdaptorCallback callback, org.sandev.basics.structs.SandMessage parent, java.lang.String tipText, int xhtmlstyle)
          Given an array of
protected  void dumpMessageInput(java.io.PrintWriter out, java.lang.String prefix, java.lang.String fieldname, java.lang.String printname, java.lang.String metatype, java.lang.String msgclass, org.sandev.basics.structs.SandMessage msg, org.sandev.basics.util.AuthUser user, org.sandev.basics.util.AuthFilter filter, boolean isReference, int subCreate, java.util.Locale locale, org.sandev.basics.util.UIFormAdaptorCallback callback, java.lang.String parentclass, java.lang.String tipText, int xhtmlstyle, org.sandev.basics.structs.SandAttrVal[] formatting)
          Dumps out an editing representation of a contained or referenced message for display purposes.
protected  void dumpMessageInputHeader(java.io.PrintWriter out, java.lang.String prefix, java.lang.String fieldname, java.lang.String printname, java.lang.String metatype, java.lang.String relpos, java.lang.String msgclass, int[] actions, java.lang.String parentclass, java.lang.String tipText, int xhtmlstyle, int collapse, org.sandev.basics.util.UIFormAdaptorCallback callback)
          Dump the first part of a message input
protected  void dumpMessageItem(java.io.PrintWriter out, java.lang.String formName, int action, java.lang.String className, java.lang.String relpos, org.sandev.basics.structs.SandMessage msg, org.sandev.basics.util.AuthUser user, org.sandev.basics.util.AuthFilter filter, org.sandev.basics.util.UIFormAdaptorCallback callback, java.util.Locale locale, int tabindex)
          Worker method for dumpMessageOutput and dumpMessageArrayOutput
protected  void dumpMessageOutput(java.io.PrintWriter out, java.lang.String prefix, java.lang.String fieldname, java.lang.String printname, java.lang.String metatype, int dumpMode, java.lang.String fieldtype, org.sandev.basics.structs.SandMessage msg, org.sandev.basics.util.AuthUser user, org.sandev.basics.util.AuthFilter filter, int action, java.util.Locale locale, org.sandev.basics.util.UIFormAdaptorCallback callback, java.lang.String classname, java.lang.String tipText, int xhtmlstyle, org.sandev.basics.structs.SandAttrVal[] formatting)
          Dumps out a read only representation of a contained or referenced message for display purposes.
protected  void dumpMultiSelectInput(java.io.PrintWriter out, java.lang.String prefix, java.lang.String fieldname, java.lang.String printname, java.lang.String metatype, java.lang.String declaredTextValue, java.lang.String[] declTextVals, java.lang.String[] constNames, java.lang.String[] actualVals, java.lang.String classname, java.lang.String tipText, int xhtmlstyle, org.sandev.basics.structs.SandAttrVal[] formatting, int tabindex)
          Like dumpMultiSelectOutput, but with the arrays needed to generate dropdown selection lists.
protected  void dumpMultiSelectOutput(java.io.PrintWriter out, java.lang.String prefix, java.lang.String fieldname, java.lang.String printname, java.lang.String metatype, int dumpMode, java.lang.String declaredTextValue, java.lang.String constantName, java.lang.String classname, java.lang.String tipText, java.lang.String actualValue, int xhtmlstyle, org.sandev.basics.structs.SandAttrVal[] formatting)
          Creates a read only representation of an enumerated type value.
static void dumpOutputText(java.io.PrintWriter out, org.sandev.basics.sandmessages.ErrorInfo[] eis)
          The UIFormContext contains output text, which is typically an informational message to the user.
 void dumpPageFooter(org.sandev.basics.util.UIRenderOutput uiro, java.lang.String closure)
          dump the HTML footer
 void dumpPageHeader(org.sandev.basics.util.UIRenderOutput uiro, java.lang.String title, org.sandev.basics.util.UIFormOwner owner, java.lang.Object context)
          dump the HTML header
protected  void dumpPlaceHolder(java.io.PrintWriter out, java.lang.String prefix, org.sandev.basics.structs.SandAttrVal[] formatting)
          Dumps out a placeholder span that has layout formatting but no content.
protected  void dumpQuickFindHeader(java.io.PrintWriter out, java.lang.String formName, org.sandev.basics.structs.SandQueryMessage sqm, org.sandev.basics.util.UIFormAdaptorCallback callback, org.sandev.basics.util.UIFormContext uifc)
          Write out an explanatory header for our find form.
protected  void dumpScriptFunctions(java.io.PrintWriter out, org.sandev.basics.util.UIFormOwner owner, org.sandev.ui.sandmessages.Screen screen)
          Dump out any script functions we need for the form.
protected  void dumpSelectionItem(java.io.PrintWriter out, java.lang.String prefix, org.sandev.basics.structs.SandInstanceMessage msg, int index, org.sandev.basics.util.AuthUser user, org.sandev.basics.util.AuthFilter filter, org.sandev.basics.util.UIFormAdaptorCallback callback, java.util.Locale locale)
          Creates a selection item.
protected  void dumpStringInput(java.io.PrintWriter out, java.lang.String prefix, java.lang.String fieldname, java.lang.String printname, java.lang.String metatype, java.lang.String value, int lengthnorm, int lengthmax, boolean noecho, java.lang.String classname, java.lang.String tipText, int xhtmlstyle, org.sandev.basics.structs.SandAttrVal[] formatting, int tabindex)
          Dump out an editable representation of a String value.
protected  void dumpStringOutput(java.io.PrintWriter out, java.lang.String prefix, java.lang.String fieldname, java.lang.String printname, java.lang.String metatype, int dumpMode, java.lang.String value, int lengthnorm, int lengthmax, boolean noecho, boolean autoconvert, org.sandev.basics.util.UIFormAdaptorCallback callback, java.lang.String classname, java.lang.String tipText, int xhtmlstyle, org.sandev.basics.structs.SandAttrVal[] formatting)
          Dump out a read only representation of a String value.
protected  void dumpTextButton(java.io.PrintWriter out, java.lang.String classname, java.lang.String id, java.lang.String name, java.lang.String value, java.lang.String confirmText, boolean enabled, int tabindex)
          Creates a button with the given name and value.
protected  void dumpUserQuery(java.io.PrintWriter out, java.lang.String pre, org.sandev.basics.sandmessages.UIFormQuery uiq, org.sandev.basics.util.UIFormAdaptorCallback callback, org.sandev.basics.util.AuthUser user, org.sandev.basics.util.UIFormContext uifc)
          Dump the UIFormQuery if we have one.
protected  void errout(org.sandev.basics.util.FormOutput fo, java.lang.String field, java.lang.String text)
          Append the given output text to the FormOutput and write it out to the log also.
protected  int fieldAccess(org.sandev.basics.util.AuthUser user, org.sandev.basics.util.AuthFilter filter, org.sandev.basics.structs.SandMessage msg, java.lang.String fieldname)
          Return the field level access of this user for this field.
protected  java.lang.String genDescription(org.sandev.basics.structs.SandMessage msg, org.sandev.basics.util.AuthUser user, org.sandev.basics.util.AuthFilter filter, org.sandev.basics.util.UIFormAdaptorCallback callback, java.util.Locale locale)
          Given a SandMessage, generate a single line description for it.
 boolean[] getActionSupportMap()
          Accessor for actionSupportMap
 boolean[] getDefaultActionSupportMap()
          Return a default action mapping array
 org.sandev.basics.util.UIFormContext getFormContext(org.sandev.basics.util.UIRenderInput uiri, java.lang.String formName, org.sandev.basics.util.UIFormContext uifc, org.sandev.basics.util.UIFormAdaptorCallback callback)
          See UIFormAdaptor interface specification.
 java.lang.String getHiddenFieldValue()
          Accessor for hiddenFieldValue, defaulted appropriately if null
abstract  org.sandev.basics.util.InstanceClassEnumerator getInstanceClassEnumerator()
          Return an InstanceClassEnumerator for the UIFormManager or other caller to use.
protected static java.lang.String getParam(java.util.Map params, java.lang.String key)
          Utility for retrieving single-valued string parameters.
protected static java.lang.String[] getParams(java.util.Map params, java.lang.String key)
          Like the singular getParam method, but returns all the matching values.
 org.sandev.basics.util.UIRenderInput getUIRenderInput()
          Returns a new ServletInput object.
 org.sandev.basics.util.UIRenderOutputDirect getUIRenderOutputDirect()
          Returns null.
 org.sandev.basics.util.UIRenderOutputStream getUIRenderOutputStream()
          Returns a new ServletOutput object.
 org.sandev.basics.util.UIRenderOutputString getUIRenderOutputString()
          Returns a new ServletOutputString object.
protected  int getUpdateAuth(org.sandev.basics.util.UIFormContext uifc, org.sandev.basics.util.AuthUser user, org.sandev.basics.util.AuthFilter filter, int action)
          Figure out what the authorization is for this action type and return it.
protected  org.sandev.basics.structs.SandUpdateMessage getUpdateMessageInstance(java.lang.String classname)
          Given the name of a SandUpdateMessage, return an instance of it.
protected  java.lang.String getValForAttr(java.lang.String attr, org.sandev.basics.structs.SandAttrVal[] attrvals)
          Looks up the specified attr in the attrvals and returns the val.
protected  boolean hasEditAccess(org.sandev.basics.util.AuthFilter filter, org.sandev.basics.util.AuthUser user, java.lang.String msgclass)
          Return true if the user has edit access to the given message class, false otherwise.
protected  void init()
          Set our action map to the default map.
protected  org.sandev.basics.util.ArrayAssociation loadArrayAssociation(java.lang.String prefix, java.util.Map params, java.lang.String fieldname)
          reconstruct the ArrayAssociation.
protected  void loadFormContext(java.lang.String formName, org.sandev.basics.util.UIFormContext uifc, java.util.Map params, org.sandev.basics.util.UIFormAdaptorCallback callback)
          Load the given form context from the parameters given.
protected abstract  org.sandev.basics.structs.SandMessage loadMessage(java.lang.String prefix, java.util.Map params, org.sandev.basics.util.FormOutput fo, org.sandev.basics.util.UIFormAdaptorCallback callback, java.util.Locale locale)
          Given a prefix used to uniquely identify the data members for this message, and a parameter map, reconstruct the message and return it.
protected  org.sandev.basics.sandmessages.UIFormQuery loadUIFCQuery(java.lang.String pre, java.util.Map params, org.sandev.basics.util.FormOutput fo, org.sandev.basics.util.UIFormAdaptorCallback callback)
          Load the UIFormQuery if we had one.
protected  boolean msgArrayContains(org.sandev.basics.structs.SandMessage[] msgs, long id)
          Return true if the given array of messages contains a message matching the given id, false otherwise.
abstract  org.sandev.basics.structs.SandInstanceMessage newInstanceMessage(java.lang.String classtype)
          Given the short class name of a SandInstanceMessage, return a new object instance of that class.
protected  java.lang.String readEnterKeyAction(java.lang.String currAction, org.sandev.basics.util.UIFormContext uifc, java.lang.String formName, java.util.Map params, org.sandev.basics.util.UIFormAdaptorCallback callback)
          Read the enterKeyPressed parameter and set the action value if defined.
protected  org.sandev.basics.structs.SandMessage resolveUpdate(org.sandev.basics.structs.SandMessage msg, long refID, org.sandev.basics.structs.SandUpdateMessage[] updates)
          Return the pending update version of this message if there is one, otherwise return what was given.
protected  org.sandev.basics.structs.SandMessage[] resolveUpdates(org.sandev.basics.structs.SandMessage[] msgs, long[] refs, org.sandev.basics.structs.SandUpdateMessage[] updates)
          Overwrite the information in the msgs array with the more recent information from the outstanding updates.
protected  int safeGetInstanceAccess(org.sandev.basics.util.AuthFilter filter, org.sandev.basics.util.AuthUser user, org.sandev.basics.structs.SandUpdateMessage sum, int defret)
          Wrapper for getInstanceAccess that returns the given default if an exception is thrown.
 void setActionSupportMap(boolean[] actionFlags)
          Mutator for actionSupportMap
 void setAllowEditReadOnly(boolean val)
          mutator for readOnlyOverride
 void setHiddenFieldValue(java.lang.String val)
          Mutator for hiddenFieldValue
protected  void setupAction(java.lang.String formName, org.sandev.basics.util.UIFormContext uifc, java.util.Map params, org.sandev.basics.util.UIFormAdaptorCallback callback)
          Find what button the user pressed and update the uifc accordingly to setup for action processing.
protected  void setupFieldAction(int action, java.lang.String classtype, java.lang.String subpos, org.sandev.basics.util.UIFormContext uifc)
          Given an action to be applied to a field within the current form, update the UIFormContext appropriately.
protected  void setupFieldAction(java.lang.String formName, org.sandev.basics.util.UIFormContext uifc, java.util.Map params, org.sandev.basics.util.UIFormAdaptorCallback callback)
          Checks if a field action button by searching the parameter map for anything starting with FIELD_ACTION.
protected  int setupQuery(org.sandev.basics.util.UIFormContext uifc)
          Init a new query instance as needed, and return DUMPMODE_FIND or DUMPMODE_FINDADV based on the parameter map.
protected  int supportsSubInstanceCreation(org.sandev.basics.util.UIFormContext uifc)
          Return SUBINSTCREATE_UNDEFINED if we are editing a new instance that is contained within another instance that we are already editing.
 int textToAction(java.lang.String text, org.sandev.basics.util.UIFormAdaptorCallback callback)
          Given the text value of an action, return the associated UIFormContext ACTION constant for it.
protected static java.lang.String trapLinksFormat(java.lang.String input)
          This is text string output formatting.
protected  int valueAccess(org.sandev.basics.util.AuthUser user, org.sandev.basics.util.AuthFilter filter, org.sandev.basics.structs.SandMessage msg, java.lang.String fieldname)
          Return the value level access for this user for this field.
protected  void verifyClassAccess(org.sandev.basics.util.AuthUser user, org.sandev.basics.util.AuthFilter filter, java.lang.String classname)
          Throw an exception if this user is not allowed to see the given class type.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

CURRINSTPRFX

public static final java.lang.String CURRINSTPRFX
A prefix used to distinguish data for the currInst data member of the UIFormContext.

See Also:
Constant Field Values

FINDCOLLPRFX

public static final java.lang.String FINDCOLLPRFX
A prefix used to distinguish data for the findCollection data member of the UIFormContext.

See Also:
Constant Field Values

FINDQUERYPRFX

public static final java.lang.String FINDQUERYPRFX
A prefix used to distinguish data for the findQuery data member of the UIFormContext.

See Also:
Constant Field Values

ROOTMSGPRFX

public static final java.lang.String ROOTMSGPRFX
A prefix used to distinguish data for the rootMsg data member of the UIFormContext.

See Also:
Constant Field Values

UPDATESPRFX

public static final java.lang.String UPDATESPRFX
A prefix used to distinguish data for the updates data member of the UIFormContext.

See Also:
Constant Field Values

UIQUERYPRFX

public static final java.lang.String UIQUERYPRFX
A prefix to distinguish data for the userQuery data member of the UIFormContext

See Also:
Constant Field Values

UIFORMCTRLPRFX

public static final java.lang.String UIFORMCTRLPRFX
A prefix to distinguish data for the formControl data member of the UIFormContext.

See Also:
Constant Field Values

FORM_ACTION

public static final java.lang.String FORM_ACTION
A prefix to identify the main buttons for the form.

See Also:
Constant Field Values

FIELD_ACTION

public static final java.lang.String FIELD_ACTION
A prefix to identify buttons for specific fields in the form.

See Also:
Constant Field Values

DELIMITER

public static final java.lang.String DELIMITER
A delimiter for field actions, which have multiple component values.

See Also:
Constant Field Values

RADIOPRFX

public static final java.lang.String RADIOPRFX
A prefix used for radio button selection within a form.

See Also:
Constant Field Values

CHECKBOXPRFX

public static final java.lang.String CHECKBOXPRFX
A prefix used for checkbox button selection within a form.

See Also:
Constant Field Values

DUMPMODE_NODUMP

public static final int DUMPMODE_NODUMP
Indicates the field should not be dumped out since there is no access to it.

See Also:
Constant Field Values

DUMPMODE_HIDDEN

public static final int DUMPMODE_HIDDEN
Indicates that the message or field should be dumped out for context save purposes only and should not be visible in the rendered form display.

See Also:
Constant Field Values

DUMPMODE_READONLY

public static final int DUMPMODE_READONLY
Indicates that the message should be dumped out for context save purposes and be visible to the user, but not be editable.

See Also:
Constant Field Values

DUMPMODE_EDIT

public static final int DUMPMODE_EDIT
Indicates that the message should be dumped out for context save purposes and the fields should be editable by the user.

See Also:
Constant Field Values

DUMPMODE_FIND

public static final int DUMPMODE_FIND
Indicates that the message should be dumped out for context save purposes, and the fields should support entry of matching values by the user.

See Also:
Constant Field Values

DUMPMODE_FINDADV

public static final int DUMPMODE_FINDADV
Indicates that the message should be dumped out for context save purposes, and the fields should support entry of match expressions by the user.

See Also:
Constant Field Values

DUMPMODE_COLLAPSED

public static final int DUMPMODE_COLLAPSED
Indicates that an array field has been collapsed by the user and should be dumped out without any contents.

See Also:
Constant Field Values

TEXTBOX_THRESHOLD

public static final int TEXTBOX_THRESHOLD
Any string whose normal length is longer than this value will be displayed as a textbox.

See Also:
Constant Field Values

CSVARRAY_LENGTHNORM

public static final int CSVARRAY_LENGTHNORM
If we are displaying an array as a CSV string, then use this value as the LENGTHNORM.

See Also:
Constant Field Values

CSVARRAY_LENGTHMAX

public static final int CSVARRAY_LENGTHMAX
If we are displaying an array as a CSV string, then use this value as the LENGTHMAX.

See Also:
Constant Field Values

DEFAULTFORMNAME

public static final java.lang.String DEFAULTFORMNAME
If no form name is specified, then presumably we are just dealing with a single form. But we still want to have a name for the form to avoid special-case parsing of parameter values. This is the default name used in that case.

See Also:
Constant Field Values

TEXTENCODED

public static final java.lang.String TEXTENCODED
Indicator text used when a parameter value has been encoded to preserve formatting.

See Also:
Constant Field Values

FIELDLINEBREAK

public static final java.lang.String FIELDLINEBREAK
We need to have an XHTML line break after each field display so that a generated UI is at least vaguely readable without any XSL templates applied. But this also needs to be easily identified so formatting templates can pull it if they need to. So it has its own class.

See Also:
Constant Field Values

XHTMLSTYLE_STANDARD

public static final int XHTMLSTYLE_STANDARD
Indicator to use the standard XHTML dump format of a message field. This is a "b" taggeed fieldname and a "code" tagged value enclosed in a "span".

See Also:
Constant Field Values

XHTMLSTYLE_SUMMARY

public static final int XHTMLSTYLE_SUMMARY
Indicator to use the summary XHTML dump format of a message field. This is a freestanding "i" tagged fieldname and a "b" tagged value.

See Also:
Constant Field Values

hiddenFieldValue

protected java.lang.String hiddenFieldValue
The value to use when the field value cannot be displayed for security or other filtering reasons.


readOnlyOverride

protected boolean readOnlyOverride
Whether read only data should displayed or not.


actionSupportMap

protected boolean[] actionSupportMap
A map of UIFormContext ACTION constants to boolean flags.


SUBINSTCREATE_UNDEFINED

protected static final int SUBINSTCREATE_UNDEFINED
See Also:
Constant Field Values

SUBINSTCREATE_CONTAINED_ONLY

protected static final int SUBINSTCREATE_CONTAINED_ONLY
See Also:
Constant Field Values

SUBINSTCREATE_ANY

protected static final int SUBINSTCREATE_ANY
See Also:
Constant Field Values
Constructor Detail

AbstractXHTMLFormAdaptor

public AbstractXHTMLFormAdaptor()
Default ctor calls init

Method Detail

getHiddenFieldValue

public java.lang.String getHiddenFieldValue()
Accessor for hiddenFieldValue, defaulted appropriately if null

Specified by:
getHiddenFieldValue in interface org.sandev.basics.util.UIFormAdaptor

setHiddenFieldValue

public void setHiddenFieldValue(java.lang.String val)
Mutator for hiddenFieldValue

Specified by:
setHiddenFieldValue in interface org.sandev.basics.util.UIFormAdaptor

allowEditReadOnly

public boolean allowEditReadOnly()
accessor for readOnlyOverride

Specified by:
allowEditReadOnly in interface org.sandev.basics.util.UIFormAdaptor

setAllowEditReadOnly

public void setAllowEditReadOnly(boolean val)
mutator for readOnlyOverride

Specified by:
setAllowEditReadOnly in interface org.sandev.basics.util.UIFormAdaptor

actionToText

public java.lang.String actionToText(int action,
                                     org.sandev.basics.util.UIFormAdaptorCallback callback,
                                     org.sandev.basics.util.UIFormContext uifc)
Given a UIFormContext ACTION constant, return the associated text value for it.


textToAction

public int textToAction(java.lang.String text,
                        org.sandev.basics.util.UIFormAdaptorCallback callback)
Given the text value of an action, return the associated UIFormContext ACTION constant for it. If not implemented by the callback, then find the value in the default actions array.


getActionSupportMap

public boolean[] getActionSupportMap()
Accessor for actionSupportMap

Specified by:
getActionSupportMap in interface org.sandev.basics.util.UIFormAdaptor

setActionSupportMap

public void setActionSupportMap(boolean[] actionFlags)
                         throws org.sandev.basics.util.UIFormAdaptorException
Mutator for actionSupportMap

Specified by:
setActionSupportMap in interface org.sandev.basics.util.UIFormAdaptor
Throws:
org.sandev.basics.util.UIFormAdaptorException

getDefaultActionSupportMap

public boolean[] getDefaultActionSupportMap()
Return a default action mapping array

Specified by:
getDefaultActionSupportMap in interface org.sandev.basics.util.UIFormAdaptor

actionSupportMapValid

public boolean actionSupportMapValid(boolean[] map)
Do a quick check of the given map to make sure it seems reasonable.


init

protected void init()
Set our action map to the default map.


getUIRenderInput

public org.sandev.basics.util.UIRenderInput getUIRenderInput()
Returns a new ServletInput object.

Specified by:
getUIRenderInput in interface org.sandev.basics.util.UIFormAdaptor

getUIRenderOutputDirect

public org.sandev.basics.util.UIRenderOutputDirect getUIRenderOutputDirect()
Returns null.

Specified by:
getUIRenderOutputDirect in interface org.sandev.basics.util.UIFormAdaptor

getUIRenderOutputStream

public org.sandev.basics.util.UIRenderOutputStream getUIRenderOutputStream()
Returns a new ServletOutput object.

Specified by:
getUIRenderOutputStream in interface org.sandev.basics.util.UIFormAdaptor

getUIRenderOutputString<