/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.utils.scripting;
import de.rcenvironment.core.utils.common.StringUtils;
/**
* Container holding constants for scriptable components.
*
* @author Christian Weiss
*/
public final class ScriptableComponentConstants {
/**
* Times of script executions.
*
* @author Christian Weiss
*/
public enum ScriptTime {
/** Before execution of the functionality. */
PRE,
/** After execution of the functionality. */
POST;
private String prefix() {
return name().toLowerCase();
}
private String infix() {
return name().substring(0, 1).toUpperCase() + name().substring(1).toLowerCase();
}
}
/**
* Modes of component executions.
*
* @author Christian Weiss
*/
public enum ComponentRunMode {
/** Initial run. */
INIT,
/** Normal (non-initial) run. */
RUN;
private String infix() {
return name().substring(0, 1).toUpperCase() + name().substring(1).toLowerCase();
}
}
/** {@link ScriptTime} before functionality execution. */
public static final ScriptTime PRE = ScriptTime.PRE;
/** {@link ScriptTime} after functionality execution. */
public static final ScriptTime POST = ScriptTime.POST;
/** {@link ComponentRunMode initial run. */
public static final ComponentRunMode INIT = ComponentRunMode.INIT;
/** {@link ComponentRunMode normal (non-initial) run. */
public static final ComponentRunMode RUN = ComponentRunMode.RUN;
/** The property key for the pre init script. */
public static final String PRE_INIT_SCRIPT = "preInitScript";
/** The property key for the pre init script language. */
public static final String PRE_INIT_SCRIPT_LANGUAGE = "preInitScriptLanguage";
/** The property key for the pre init script. */
public static final String DO_PRE_INIT_SCRIPT = "doPreInitScript";
/** The property key for the run init script. */
public static final String PRE_RUN_SCRIPT = "preRunScript";
/** The property key for the run init script language. */
public static final String PRE_RUN_SCRIPT_LANGUAGE = "preRunScriptLanguage";
/** The property key for the pre init script. */
public static final String POST_INIT_SCRIPT = "postInitScript";
/** The property key for the pre init script language. */
public static final String POST_INIT_SCRIPT_LANGUAGE = "postInitScriptLanguage";
/** The property key for the pre init script. */
public static final String DO_POST_INIT_SCRIPT = "doPostInitScript";
/** The property key for the run init script. */
public static final String POST_RUN_SCRIPT = "postRunScript";
/** The property key for the run init script language. */
public static final String POST_RUN_SCRIPT_LANGUAGE = "postRunScriptLanguage";
/** Factory to create property keys generically. */
public static final PropertyFactory FACTORY = new PropertyFactory();
private ScriptableComponentConstants() {
// do nothing
}
/**
* Factory to create property keys generically.
*
* @author Christian Weiss
*/
public static final class PropertyFactory {
private PropertyFactory() {
// do nothing
}
/**
* Returns the do script property key.
*
* @param scriptTime the {@link ScriptTime}
* @param componentRunMode the {@link ComponentRunMode}
* @return the property key of the do script property of the specified context
*/
public String doScript(final ScriptTime scriptTime, final ComponentRunMode componentRunMode) {
return StringUtils.format("do%s%sScript", scriptTime.infix(), componentRunMode.infix());
}
/**
* Returns the script property key.
*
* @param scriptTime the {@link ScriptTime}
* @param componentRunMode the {@link ComponentRunMode}
* @return the property key of the script property of the specified context
*/
public String script(final ScriptTime scriptTime, final ComponentRunMode componentRunMode) {
return StringUtils.format("%s%sScript", scriptTime.prefix(), componentRunMode.infix());
}
/**
* Returns the script language property key.
*
* @param scriptTime the {@link ScriptTime}
* @param componentRunMode the {@link ComponentRunMode}
* @return the property key of the script language property of the specified context
*/
public String language(final ScriptTime scriptTime, final ComponentRunMode componentRunMode) {
return StringUtils.format("%s%sScriptLanguage", scriptTime.prefix(), componentRunMode.infix());
}
}
}