package railo.transformer.library.function; import java.io.IOException; import railo.commons.lang.CFTypes; import railo.commons.lang.Md5; import railo.transformer.library.tag.TagLib; /** * Eine FunctionLibFunctionArg repraesentiert ein einzelnes Argument einer Funktion. */ public final class FunctionLibFunctionArg { private static final short UNDEFINED = -12553; /** * @return the hidden */ public boolean isHidden() { return hidden; } private String strType; private boolean required; private FunctionLibFunction function; private String name; private String description=""; private String alias=null; private String defaultValue=null; private boolean hidden; private short status=TagLib.STATUS_IMPLEMENTED; private short type=UNDEFINED; /** * Geschuetzer Konstruktor ohne Argumente. */ public FunctionLibFunctionArg() {} public FunctionLibFunctionArg(FunctionLibFunction function) { this.function=function; } /** * Gibt den Typ des Argument als String zurueck (query, struct, string usw.) * @return Typ des Argument */ public String getTypeAsString() { return this.strType; } /** * Gibt den Typ des Argument zurueck (query, struct, string usw.) * @return Typ des Argument */ public short getType() { if(type==UNDEFINED) { type=CFTypes.toShort(strType,false,CFTypes.TYPE_UNKNOW); } return type; } /** * @return the status (TagLib.,TagLib.STATUS_IMPLEMENTED,TagLib.STATUS_DEPRECATED,TagLib.STATUS_UNIMPLEMENTED) */ public short getStatus() { return status; } /** * @param status the status to set (TagLib.,TagLib.STATUS_IMPLEMENTED,TagLib.STATUS_DEPRECATED,TagLib.STATUS_UNIMPLEMENTED) */ public void setStatus(short status) { this.status = status; } /** * Gibt zurueck, ob das Argument Pflicht ist oder nicht, alias fuer isRequired. * @return Ist das Argument Pflicht. */ public boolean isRequired() { return required; } /** * Gibt zurueck, ob das Argument Pflicht ist oder nicht. * @return Ist das Argument Pflicht. */ public boolean getRequired() { return required; } /** * Gibt die Funktion zurueck zu der das Argument gehoert. * @return Zugehoerige Funktion. */ public FunctionLibFunction getFunction() { return function; } /** * Setzt die Funktion zu der das Argument gehoert. * @param function Zugehoerige Funktion. */ protected void setFunction(FunctionLibFunction function) { this.function = function; } /** * Setzt, den Typ des Argument (query, struct, string usw.) * @param type Typ des Argument. */ public void setType(String type) { this.strType = type; } /** * Setzt, ob das Argument Pflicht ist oder nicht. * @param value Ist das Argument Pflicht. */ public void setRequired(String value) { value=value.toLowerCase().trim(); required=(value.equals("yes") || value.equals("true")); } public void setRequired(boolean value) { required=value; } /** * @return the name */ public String getName() { return name; } /** * @param name the name to set */ public void setName(String name) { this.name = name; } public Object getDescription() { return description; } /** * @param description the description to set */ public void setDescription(String description) { this.description = description; } /** * @return the defaultValue */ public String getDefaultValue() { return defaultValue; } /** * @param defaultValue the defaultValue to set */ public void setDefaultValue(String defaultValue) { this.defaultValue = defaultValue; } public String getHash() { StringBuffer sb=new StringBuffer(); sb.append(this.getDefaultValue()); sb.append(this.getName()); sb.append(this.getRequired()); sb.append(this.getTypeAsString()); sb.append(this.getTypeAsString()); sb.append(this.getAlias()); try { return Md5.getDigestAsString(sb.toString()); } catch (IOException e) { return ""; } } /** * @return the alias */ public String getAlias() { return alias; } /** * @param alias the alias to set */ public void setAlias(String alias) { this.alias = alias; } public void setHidden(boolean hidden) { this.hidden=hidden; } }