Class ViewerRenderer

Direct Known Subclasses:
EditorViewerRenderer

public class ViewerRenderer extends RendererImpl
Renders JSP for viewing metadata records within the DCS (as opposed to within a metadata editor).

Shows only elements that are either required or that have values. Element labels have "editMe" links that open a metadata editor to the selected element for editing.

Author:
ostwald
  • Constructor Details

    • ViewerRenderer

      public ViewerRenderer()
  • Method Details

    • renderAttribute

      public void renderAttribute()
      Render an attribute
      Overrides:
      renderAttribute in class RendererImpl
    • renderSimpleTypeConcrete

      public void renderSimpleTypeConcrete()
      Concrete render method for SimpleType elements
      Overrides:
      renderSimpleTypeConcrete in class RendererImpl
    • renderChoice

      public void renderChoice(org.dom4j.Element choiceElement)
      Render a choice Compositor
      Overrides:
      renderChoice in class RendererImpl
      Parameters:
      choiceElement - NOT YET DOCUMENTED
    • renderComplexTypeConcrete

      public void renderComplexTypeConcrete()
      A complexType is displayed iff: it is required or it satisfies the viewNode predicate.

      approach:

    • a tester element (viewNode) implements the jsp to insure it should be shown
    • the tester node is attached to this nodes parent in the render tree.

    • Overrides:
      renderComplexTypeConcrete in class RendererImpl
    • renderSequence

      public void renderSequence(org.dom4j.Element sequence)
      Render a Sequence Compositor
      Overrides:
      renderSequence in class RendererImpl
      Parameters:
      sequence - The Sequence element
    • renderRepeatingElement

      public void renderRepeatingElement()
      Render a repeating element
      Overrides:
      renderRepeatingElement in class RendererImpl
    • renderSubElements

      public void renderSubElements(List subElements)
      Render the provided list of subelements
      Overrides:
      renderSubElements in class RendererImpl
      Parameters:
      subElements - list of subElements to render
    • renderSubElements

      public void renderSubElements()
      Render the subElements of the current typeDefinition
      Overrides:
      renderSubElements in class RendererImpl
    • getInputElement

      public org.dom4j.Element getInputElement(String xpath, SchemaNode schemaNode, GlobalDef typeDef)
      Gets the inputElement attribute of the ViewerRenderer object
      Overrides:
      getInputElement in class RendererImpl
      Parameters:
      xpath - xpath of inputElement
      schemaNode - schemaNode of element
      typeDef - typeDef of element
      Returns:
      The inputElement value
    • getStaticSimpleValue

      protected org.dom4j.Element getStaticSimpleValue(String xpath)
      Displays the value of the element at specified xpath
      Parameters:
      xpath - xpath of element for which we render the value
      Returns:
      The textInput value
    • getMultiSelectInput

      public org.dom4j.Element getMultiSelectInput(String xpath)
      Renders a multiSelect input (a set of of checkboxes) as an Element. The multiSelect is represented as a HTML table
      Overrides:
      getMultiSelectInput in class RendererImpl
      Parameters:
      xpath - xpath of element for which we render an input
      Returns:
      The multiSelectInput as an element
    • getOptionalItemControl

      public org.dom4j.Element getOptionalItemControl(String xpath)
      View pages do not have conrols!
      Overrides:
      getOptionalItemControl in class RendererImpl
      Parameters:
      xpath - NOT YET DOCUMENTED
      Returns:
      null
    • getDeleteController

      public org.dom4j.Element getDeleteController(String itemPath, String elementName)
      Gets the deleteController attribute of the ViewerRenderer object
      Overrides:
      getDeleteController in class RendererImpl
      Parameters:
      itemPath - NOT YET DOCUMENTED
      elementName - NOT YET DOCUMENTED
      Returns:
      The deleteController value
    • getSimpleTypeLabel

      public SimpleTypeLabel getSimpleTypeLabel(String xpath, String siblingPath, String indexId)
      Gets the simpleTypeLabel attribute of the ViewerRenderer object
      Overrides:
      getSimpleTypeLabel in class RendererImpl
      Parameters:
      xpath - NOT YET DOCUMENTED
      siblingPath - NOT YET DOCUMENTED
      indexId - NOT YET DOCUMENTED
      Returns:
      The simpleTypeLabel value
    • getComplexTypeLabel

      public ComplexTypeLabel getComplexTypeLabel(String xpath, String siblingPath, String indexId)
      Gets the complexTypeLabel attribute of the ViewerRenderer object
      Overrides:
      getComplexTypeLabel in class RendererImpl
      Parameters:
      xpath - normalized xpath to the field for this label
      siblingPath - xpath to reach all siblings
      indexId - jsp variable used to generate indicies for repeating fields
      Returns:
      The complexTypeLabel value
    • getEditMeTag

      protected org.dom4j.Element getEditMeTag(String xpath)
      Gets the editMeTag attribute of the ViewerRenderer object
      Parameters:
      xpath - NOT YET DOCUMENTED
      Returns:
      The editMeTag value
    • getEditMeTag

      protected org.dom4j.Element getEditMeTag(String xpath, String siblingPath, String indexId)
      creates a jsp tag (st:dcsViewEditMeLabel) that renders a label as a link that will open the metadata editor to this field.

      If provided, siblingPath parameter includes indexing (e.g., /record/general_${index+1}_) to make the proper link to an indexed field.

      Parameters:
      xpath - NOT YET DOCUMENTED
      siblingPath - NOT YET DOCUMENTED
      indexId - NOT YET DOCUMENTED
      Returns:
      The editMeTag value
    • getRenderedField

      public org.dom4j.Element getRenderedField(String xpath, Label label, org.dom4j.Element inputField)
      Gets the labelledInputField attribute of the ViewerRenderer object
      Overrides:
      getRenderedField in class RendererImpl
      Parameters:
      xpath - NOT YET DOCUMENTED
      label - NOT YET DOCUMENTED
      inputField - NOT YET DOCUMENTED
      Returns:
      The labelledInputField value
    • getRenderedField_2

      public org.dom4j.Element getRenderedField_2(String xpath, Label label, org.dom4j.Element inputField)
      Gets the labelledInputField_2 attribute of the ViewerRenderer object
      Parameters:
      xpath - NOT YET DOCUMENTED
      label - NOT YET DOCUMENTED
      inputField - NOT YET DOCUMENTED
      Returns:
      The labelledInputField_2 value
    • getRenderedField_1

      public org.dom4j.Element getRenderedField_1(String xpath, Label label, org.dom4j.Element inputField)
      Formats the label and value for the current node.

      NOTE: this probably shouldn't be here, since it is misnamed (it does not have anything to do with "input"). To fix this problem we have to change super classes to differentiate between renders that create edit inputs and those that simply display values.

      Parameters:
      xpath - NOT YET DOCUMENTED
      label - NOT YET DOCUMENTED
      inputField - NOT YET DOCUMENTED
      Returns:
      The labelledInputField_1 value
    • missingValueTest

      public org.dom4j.Element missingValueTest(String xpath)
      test for whether a node has a value
      Parameters:
      xpath - NOT YET DOCUMENTED
      Returns:
      NOT YET DOCUMENTED
    • hasValueTest

      public org.dom4j.Element hasValueTest(String xpath)
      test for whether a node has a value
      Parameters:
      xpath - NOT YET DOCUMENTED
      Returns:
      NOT YET DOCUMENTED
    • setDebug

      public static void setDebug(boolean verbose)
      Sets the debug attribute of the ViewerRenderer class
      Parameters:
      verbose - The new debug value