package com.opendoorlogistics.api.scripts.parameters; import java.util.UUID; import com.opendoorlogistics.api.tables.ODLColumnType; import com.opendoorlogistics.api.tables.ODLDatastore; import com.opendoorlogistics.api.tables.ODLTable; import com.opendoorlogistics.api.tables.ODLTableDefinition; import com.opendoorlogistics.api.tables.ODLTableReadOnly; /** * Interface for managing script parameters * @author Phil * */ public interface Parameters { ODLTableDefinition tableDefinition(boolean includeKeyColumn); ODLTableDefinition valuesTableDefinition(boolean includeKeyColumn); ODLDatastore<? extends ODLTableDefinition> dsDefinition(boolean includeKeyColumn); ODLDatastore<? extends ODLTableReadOnly> exampleDs(); enum TableType{ PARAMETERS, PARAMETER_VALUES, } ODLTable findTable(ODLDatastore<? extends ODLTable> ds,TableType type ); //String getParameterControlComponentId(); /** * Get the ID of the internal datastore storing the parameters * @return */ String getDSId(); String getParametersTableName(); Object getValue(ODLTableReadOnly parametersTable, String key); ODLColumnType getColumnType(ODLTableReadOnly parametersTable, String key); PromptType getPromptType(ODLTableReadOnly parametersTable, String key); //String getKey(ODLTableReadOnly parametersTable, int row); String getByRow(ODLTableReadOnly parametersTable, int row,ParamDefinitionField type); String getByKey(ODLTableReadOnly parametersTable, String key,ParamDefinitionField type); void setByKey(ODLTable table, String key,ParamDefinitionField type, String newValue); boolean exists(ODLTableReadOnly parametersTable, String key); /** * Get the parameters control if available * @return */ ParametersControlFactory getControlFactory(); /** * Registers the app-global parameters control factory * @param factory */ void registerControlFactory(ParametersControlFactory factory); public static final String FIELDNAME_KEY ="Key"; public static final String FIELDNAME_VALUE_TYPE ="ValueType"; //public static final String FIELDNAME_DEFAULT_VALUE ="DefaultValue"; // public static final String FIELDNAME_EDITOR_TYPE ="EditorType"; public static final String FIELDNAME_PROMPT_TYPE ="PromptType"; public static final String FIELDNAME_VALUE ="Value"; enum ParamDefinitionField{ KEY, VALUE_TYPE, // DEFAULT_VALUE, // EDITOR_TYPE, PROMPT_TYPE, VALUE; } String getParamDefinitionFieldName(ParamDefinitionField type); enum PromptType{ ATTACH, POPUP, ATTACH_POPUP, HIDDEN, } /** * Get and save last value (in-memory only, lifetime of the spreadsheet). * Beware of parameter names clashing in different scripts!!!! * @param scriptUUID * @param parameterName * @return */ public String getLastValue( String parameterName); /** * Get and save last value (in-memory only, lifetime of the spreadsheet) * Beware of parameter names clashing in different scripts!!!! * @param parameterName * @return */ public void saveLastValue( String parameterName, String value); // static final int COL_KEY=0; // static final int COL_VALUE_TYPE=COL_KEY+1; // static final int COL_DEFAULT_VALUE=COL_VALUE_TYPE+1; // static final int COL_EDITOR_TYPE=COL_DEFAULT_VALUE+1; // static final int COL_PROMPT_TYPE=COL_EDITOR_TYPE+1; // static final int COL_VALUE=COL_PROMPT_TYPE+1; }