001: /*
002: * JFolder, Copyright 2001-2006 Gary Steinmetz
003: *
004: * Distributable under LGPL license.
005: * See terms of license at gnu.org.
006: */
007:
008: package org.jfolder.common.function.v1;
009:
010: //base classes
011:
012: //project specific classes
013: import org.jfolder.common.SelfArgumentlessConstructor;
014: import org.jfolder.common.StandardDataTypes;
015: import org.jfolder.common.UnexpectedSystemException;
016: import org.jfolder.common.function.BaseCommonFunctionCompatibilityTag;
017: import org.jfolder.common.function.WebPageTagInstanceViewContext;
018: import org.jfolder.common.function.WebPageTagInstanceViewContextInfo;
019: import org.jfolder.common.tagging.AppraiseConceptTagContext;
020: import org.jfolder.common.tagging.ConceptTagCharacteristic;
021: import org.jfolder.common.tagging.ConceptTagConstraint;
022: import org.jfolder.common.tagging.ConceptTagConstraintHolder;
023: import org.jfolder.common.tagging.ConceptTagFlagsHelper;
024: import org.jfolder.common.tagging.ConceptTagHelper;
025: import org.jfolder.common.tagging.DetermineClassConceptTagContext;
026: import org.jfolder.common.tagging.DetermineValueAndClassConceptTagContext;
027: import org.jfolder.common.tagging.DetermineValueAndClassConceptTagException;
028: import org.jfolder.common.tagging.DynamicConceptTagConstraintContext;
029: import org.jfolder.common.tagging.InitializeConceptTagContext;
030: import org.jfolder.common.tagging.ReturnableConceptTag;
031: import org.jfolder.common.tagging.SelectionCriteriaForReturnableConceptTag;
032: import org.jfolder.common.tagging.StaticConceptTagConstraintContext;
033: import org.jfolder.common.tagging.StudioConceptTagCreParInfoContext;
034: import org.jfolder.common.tagging.StudioConceptTagInstanceInfoContext;
035: import org.jfolder.common.tagging.StudioConceptTagTypeInfoContext;
036: import org.jfolder.common.tagging.ValueAndClassForConceptTag;
037:
038: //other classes
039:
040: public class CommonFunctionConvStrToBoolTag extends
041: BaseCommonFunctionCompatibilityTag implements
042: SelfArgumentlessConstructor {
043:
044: //characteristics
045: private ConceptTagCharacteristic operandCtchar = null;
046:
047: //method details
048: private final static String OPERAND_CTCON = "operand";
049: private final static String OPERAND_TITLE = "Operand";
050: private final static String OPERAND_SHORT_DESCRIPTION = "Value to be converted into a boolean";
051:
052: public void initialize(InitializeConceptTagContext inIctc) {
053:
054: //
055: ConceptTagConstraintHolder rootCtconh = ConceptTagConstraintHolder
056: .newInstance(inIctc);
057: //
058: //rootCtconh.getAttributes().setStudioVisibleOnlyOnError(true);
059: //rootCtconh.getStyles().setStudioVisibleOnlyOnError(true);
060:
061: //constrain "operand"
062: ConceptTagConstraint operandCtcon = ConceptTagConstraint
063: .newInstance(OPERAND_CTCON, rootCtconh);
064: operandCtcon.setTitle(OPERAND_TITLE);
065: operandCtcon.setShortDescription(OPERAND_SHORT_DESCRIPTION);
066: //
067: DynamicConceptTagConstraintContext operandDctcc = DynamicConceptTagConstraintContext
068: .newInstance(operandCtcon);
069: operandDctcc.getValidator().allowReturnOfOnlyString();
070: operandDctcc.getValidator().filterDirectChildOfRootAndHtml();
071: //
072: //operandDctcc.addDefaultValue(TaglibLiteralStringWebPageTag.class);
073: //TO DO: should there be a default?
074: //TO DO: possibly constrain return type here instead of below?
075:
076: //
077: ConceptTagConstraint unconstrainedCtcon = rootCtconh
078: .getUndefinedConstraint();
079: //unconstrainedCtcon.setStudioVisibleOnlyOnError(true);
080:
081: //
082: ConceptTagFlagsHelper
083: .pushNonIterativeCommonFunctionDepth(inIctc);
084: inIctc.initialize();
085: ConceptTagFlagsHelper
086: .popNonIterativeCommonFunctionDepth(inIctc);
087: //TO DO: check if casting is acceptable after initialization
088:
089: //initialize characteristics
090: this .operandCtchar = operandCtcon.getCharacteristic();
091:
092: }
093:
094: public void appraise(AppraiseConceptTagContext inActc) {
095:
096: if (inActc instanceof StudioConceptTagInstanceInfoContext) {
097:
098: StudioConceptTagInstanceInfoContext sctiic = (StudioConceptTagInstanceInfoContext) inActc;
099:
100: sctiic.setInstanceTitle("String To Boolean");
101: sctiic
102: .setInstanceDescription("Converts string to a boolean");
103: } else if (inActc instanceof StudioConceptTagTypeInfoContext) {
104:
105: StudioConceptTagTypeInfoContext scttic = (StudioConceptTagTypeInfoContext) inActc;
106:
107: scttic.setTypeTitle("String To Boolean");
108: scttic.setTypeDescription("Converts string to a boolean");
109: } else if (inActc instanceof WebPageTagInstanceViewContext) {
110:
111: WebPageTagInstanceViewContext wptivc = (WebPageTagInstanceViewContext) inActc;
112:
113: WebPageTagInstanceViewContextInfo info = wptivc
114: .getInfoAsNonHtml();
115: //wptivc.getInfo().setStartContent("");
116: //wptivc.getInfo().setEndContent("");
117: } else if (inActc instanceof SelectionCriteriaForReturnableConceptTag) {
118:
119: SelectionCriteriaForReturnableConceptTag scfrct = (SelectionCriteriaForReturnableConceptTag) inActc;
120:
121: scfrct.canReturnBoolean();
122: scfrct.declareFormatAsPlain();
123: } else if (inActc instanceof StudioConceptTagCreParInfoContext) {
124:
125: StudioConceptTagCreParInfoContext scpc = (StudioConceptTagCreParInfoContext) inActc;
126: }
127: }
128:
129: public void determineValueAndClass(
130: DetermineValueAndClassConceptTagContext inDvacctc) {
131:
132: try {
133: ValueAndClassForConceptTag vacfct = null;
134:
135: ValueAndClassForConceptTag operandVac = this .operandCtchar
136: .getDetermineValueAndClass(0, inDvacctc);
137: Boolean result = new Boolean((String) operandVac.getValue());
138: vacfct = ValueAndClassForConceptTag.newBoolean(result);
139:
140: inDvacctc.setDetermineValueAndClass(vacfct);
141: } catch (DetermineValueAndClassConceptTagException dvaccte) {
142: inDvacctc.setDetermineException(dvaccte);
143: }
144: }
145:
146: public void determineClass(DetermineClassConceptTagContext inDcctc) {
147: inDcctc.setDetermineClass(StandardDataTypes.getBooleanClass());
148: }
149:
150: public Object createUninitializedSelf() {
151: return new CommonFunctionConvStrToBoolTag();
152: }
153: }
|