Class Dialog

  • All Implemented Interfaces:
    java.io.Serializable, javax.swing.ListModel
    Direct Known Subclasses:
    PerspectiveDialog

    public class Dialog
    extends AbstractListBean
    A basic dialog implementation

    Uses the freemarker library to interpolate the dialog's query with supplied arguments.
    The provided query is processed such that all whitespace is replaced with a single space character.
    Provides a couple of freemarker directives to query writers:

    skip(value[, scope])
    will skip (i.e. not output) the first occurance of the given value within the given scope
    br
    inserts an explicit newline

    All arguments are wrapped in a freemarker object wrapper such that when referencing the argument's value the query writer uses argname.val and when referencing the argument's operator the query writer uses argname.op.

    Aside from being a bean model for a dialog this class provides a ListModel interface on the dialog's arguments.

    The interpolated query is defined as executable if all non-optional arguments have received valid values.

    See Also:
    Serialized Form
    • Field Detail

      • PROPERTY_TYPE

        public static final java.lang.String PROPERTY_TYPE
        The property name for the dialog's type.
        See Also:
        Constant Field Values
      • PROPERTY_BASE_QUERY

        public static final java.lang.String PROPERTY_BASE_QUERY
        The property name for the dialog's base query (not interpolated).
        See Also:
        Constant Field Values
      • PROPERTY_BASE_CHARTSCRIPT

        public static final java.lang.String PROPERTY_BASE_CHARTSCRIPT
        The property name for the dialog's base query (not interpolated).
        See Also:
        Constant Field Values
      • PROPERTY_BASE_CHARTEXEC

        public static final java.lang.String PROPERTY_BASE_CHARTEXEC
        The property name for the dialog's base query (not interpolated).
        See Also:
        Constant Field Values
      • PROPERTY_BASE_CHARTCOLUMNS

        public static final java.lang.String PROPERTY_BASE_CHARTCOLUMNS
        The property name for the dialog's base query (not interpolated).
        See Also:
        Constant Field Values
      • PROPERTY_BASE_CHARTDF

        public static final java.lang.String PROPERTY_BASE_CHARTDF
        The property name for dialog's interpolated query (read only).
        See Also:
        Constant Field Values
      • PROPERTY_QUERY

        public static final java.lang.String PROPERTY_QUERY
        The property name for dialog's interpolated query (read only).
        See Also:
        Constant Field Values
      • PROPERTY_CHART

        public static final java.lang.String PROPERTY_CHART
        The property name for dialog's interpolated query (read only).
        See Also:
        Constant Field Values
      • PROPERTY_EXECUTABLE

        public static final java.lang.String PROPERTY_EXECUTABLE
        The property name for the dialog's executable state.
        See Also:
        Constant Field Values
      • errorMsgTemplate

        protected final java.lang.String errorMsgTemplate
      • longRunningQueryTemplate

        protected final java.lang.String longRunningQueryTemplate
      • version

        protected final java.lang.String version
      • packageVersion

        protected final java.lang.String packageVersion
      • gitSHA

        protected final java.lang.String gitSHA
      • argumentMap

        protected final java.util.Map<java.lang.String,​Argument> argumentMap
      • attributes

        public java.util.Map<java.lang.String,​? extends java.lang.Object> attributes
      • executable

        protected boolean executable
    • Constructor Detail

      • Dialog

        public Dialog​(java.util.Map<java.lang.String,​? extends java.lang.Object> attributes,
                      org.gorpipe.gor.model.FileReader fileResolver,
                      org.gorpipe.gor.model.QueryEvaluator queryEval,
                      DialogDescription dialogDescription,
                      DialogType type,
                      java.lang.String query,
                      java.lang.String chartScript,
                      java.lang.String chartExec,
                      java.lang.String chartColumns,
                      ChartDataType chartDF,
                      java.util.List<Argument> arguments,
                      java.lang.String errorMsgTemplate,
                      java.lang.String longRunningQueryTemplate,
                      java.lang.String version,
                      java.lang.String packageVersion,
                      java.lang.String gitSHA)
               throws freemarker.template.TemplateException
        Throws:
        freemarker.template.TemplateException
    • Method Detail

      • getFileResolver

        public org.gorpipe.gor.model.FileReader getFileResolver()
      • getQueryEval

        public org.gorpipe.gor.model.QueryEvaluator getQueryEval()
      • getName

        public java.lang.String getName()
      • getShortName

        public java.lang.String getShortName()
        Returns:
        The dialog name shortened so that it contains at most 2 capital letters (from right) and breaks on the right most underscore
      • getDescription

        public java.lang.String getDescription()
      • getHelpLink

        public java.lang.String getHelpLink()
      • getListDescription

        public java.lang.String getListDescription()
      • setType

        public void setType​(DialogType type)
      • getBaseQuery

        public java.lang.String getBaseQuery()
      • setBaseQuery

        public void setBaseQuery​(java.lang.String query)
                          throws freemarker.template.TemplateException
        Throws:
        freemarker.template.TemplateException
      • getBaseChartExec

        public java.lang.String getBaseChartExec()
      • setBaseChartExec

        public void setBaseChartExec​(java.lang.String chartExec)
                              throws freemarker.template.TemplateException
        Throws:
        freemarker.template.TemplateException
      • getBaseChartScript

        public java.lang.String getBaseChartScript()
      • setBaseChartScript

        public void setBaseChartScript​(java.lang.String chartScript)
      • setBaseChartDF

        public void setBaseChartDF​(ChartDataType chartDF)
      • getBaseChartColumns

        public java.lang.String getBaseChartColumns()
      • setBaseChartColumns

        public void setBaseChartColumns​(java.lang.String chartColumns)
      • setDeferUpdates

        public void setDeferUpdates​(boolean deferUpdates)
        Defer updates to interpolated query. If set - query won't be evaluated on every change to input parameters but only when requested through getInterpolatedQuery()
      • advancedArgumentsVisible

        public boolean advancedArgumentsVisible()
        Returns:
        true if advanced arguments are visible, otherwise false
      • setAdvancedArgumentsVisible

        public void setAdvancedArgumentsVisible​(boolean visible)
        Parameters:
        visible - the visibility of advanced arguments to set
      • loadQuery

        protected void loadQuery​(java.lang.String queryName,
                                 java.lang.String query)
      • interpolateQuery

        protected java.lang.String interpolateQuery​(java.lang.String templateName)
                                             throws freemarker.template.TemplateException,
                                                    java.io.IOException
        Throws:
        freemarker.template.TemplateException
        java.io.IOException
      • interpolateChart

        protected java.lang.String interpolateChart​(java.lang.String templateName)
                                             throws freemarker.template.TemplateException,
                                                    java.io.IOException
        Throws:
        freemarker.template.TemplateException
        java.io.IOException
      • calcInterpolatedQuery

        public void calcInterpolatedQuery()
                                   throws freemarker.template.TemplateException
        Throws:
        freemarker.template.TemplateException
      • getInterpolatedQuery

        public java.lang.String getInterpolatedQuery()
      • getInterpolatedChart

        public java.lang.String getInterpolatedChart()
      • getQuery

        public java.lang.String getQuery()
      • getChart

        public java.lang.String getChart()
      • getVersion

        public java.lang.String getVersion()
      • getPackageVersion

        public java.lang.String getPackageVersion()
      • getGitSha

        public java.lang.String getGitSha()
      • getErrorMessage

        public java.lang.String getErrorMessage()
      • determineLongRunningQuery

        public java.lang.String determineLongRunningQuery()
      • copyArguments

        public java.util.List<Argument> copyArguments()
      • isExecutable

        public boolean isExecutable()
      • getArgument

        public Argument getArgument​(java.lang.String argumentName)
      • hasArgument

        public boolean hasArgument​(java.lang.String argumentName)
      • setArgument

        public void setArgument​(java.lang.String argumentName,
                                Argument arg)
      • getAttribute

        public java.lang.Object getAttribute​(java.lang.String attributeName)
      • getElementAt

        public java.lang.Object getElementAt​(int index)
      • getSize

        public int getSize()
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object