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: import javax.servlet.jsp.PageContext;
012:
013: //project specific classes
014: import org.jfolder.common.SelfArgumentlessConstructor;
015: import org.jfolder.common.StandardDataTypes;
016: import org.jfolder.common.UnexpectedSystemException;
017: import org.jfolder.common.function.BaseCommonFunctionCompatibilityTag;
018: import org.jfolder.common.function.ComponentsForReturnableWebPageTag;
019: import org.jfolder.common.function.WebPageTagHelper;
020: import org.jfolder.common.function.WebPageTagInstanceViewContext;
021: import org.jfolder.common.function.WebPageTagInstanceViewContextInfo;
022: import org.jfolder.common.tagging.AppraiseConceptTagContext;
023: import org.jfolder.common.tagging.ConceptTagCharacteristic;
024: import org.jfolder.common.tagging.ConceptTagConstraint;
025: import org.jfolder.common.tagging.ConceptTagConstraintHolder;
026: import org.jfolder.common.tagging.ConceptTagFlagsHelper;
027: import org.jfolder.common.tagging.DetermineClassConceptTagContext;
028: import org.jfolder.common.tagging.DetermineValueAndClassConceptTagContext;
029: import org.jfolder.common.tagging.DetermineValueAndClassConceptTagException;
030: import org.jfolder.common.tagging.DynamicConceptTagConstraintContext;
031: import org.jfolder.common.tagging.InitializeConceptTagContext;
032: import org.jfolder.common.tagging.SelectionCriteriaForReturnableConceptTag;
033: import org.jfolder.common.tagging.StaticConceptTagConstraintContext;
034: import org.jfolder.common.tagging.StudioConceptTagCreParInfoContext;
035: import org.jfolder.common.tagging.StudioConceptTagInstanceInfoContext;
036: import org.jfolder.common.tagging.StudioConceptTagTypeInfoContext;
037: import org.jfolder.common.tagging.ValueAndClassForConceptTag;
038: import org.jfolder.common.utils.misc.MiscHelper;
039:
040: //import org.jfolder.workflow.model.attributes.AttributeSet;
041: //import org.jfolder.workflow.model.instance.WorkflowInstance;
042:
043: //other classes
044:
045: public class CommonFunctionCompIsNullTag extends
046: BaseCommonFunctionCompatibilityTag implements
047: SelfArgumentlessConstructor {
048:
049: //
050: private ConceptTagCharacteristic valueCtchar = null;
051:
052: //value details
053: private final static String VALUE_CTCON = "value";
054: private final static String VALUE_TITLE = "Value";
055: private final static String VALUE_SHORT_DESCRIPTION = "Value of this string";
056:
057: public void initialize(InitializeConceptTagContext inIctc) {
058:
059: //
060: ConceptTagConstraintHolder rootCtconh = ConceptTagConstraintHolder
061: .newInstance(inIctc);
062: //
063: //rootCtconh.getAttributes().setStudioVisibleOnlyOnError(true);
064: //rootCtconh.getStyles().setStudioVisibleOnlyOnError(true);
065:
066: //constrain "value"
067: ConceptTagConstraint valueCtcon = ConceptTagConstraint
068: .newInstance(VALUE_CTCON, rootCtconh);
069: valueCtcon.setTitle(VALUE_TITLE);
070: valueCtcon.setShortDescription(VALUE_SHORT_DESCRIPTION);
071: //
072: DynamicConceptTagConstraintContext valueDctcc = DynamicConceptTagConstraintContext
073: .newInstance(valueCtcon);
074: valueDctcc.getValidator().filterDirectChildOfRootAndHtml();
075: //
076: //valueDctcc.addDefaultValue(
077: // TaglibLiteralBooleanWebPageTag.class);
078:
079: //constrain undefined
080: ConceptTagConstraint unconstrainedCtcon = rootCtconh
081: .getUndefinedConstraint();
082: //unconstrainedCtcon.setStudioVisibleOnlyOnError(true);
083:
084: //
085: ConceptTagFlagsHelper
086: .pushNonIterativeCommonFunctionDepth(inIctc);
087: inIctc.initialize();
088: ConceptTagFlagsHelper
089: .popNonIterativeCommonFunctionDepth(inIctc);
090:
091: //
092: //post initialization validation
093: //TO DO: compare class against value
094:
095: //
096: this .valueCtchar = valueCtcon.getCharacteristic();
097: }
098:
099: public void appraise(AppraiseConceptTagContext inActc) {
100:
101: if (inActc instanceof StudioConceptTagInstanceInfoContext) {
102:
103: StudioConceptTagInstanceInfoContext sctiic = (StudioConceptTagInstanceInfoContext) inActc;
104:
105: sctiic.setInstanceTitle("Is Null");
106: sctiic.setInstanceDescription("Is Null");
107: } else if (inActc instanceof StudioConceptTagTypeInfoContext) {
108:
109: StudioConceptTagTypeInfoContext scttic = (StudioConceptTagTypeInfoContext) inActc;
110:
111: scttic.setTypeTitle("Is Null");
112: scttic.setTypeDescription("Is Null");
113: } else if (inActc instanceof WebPageTagInstanceViewContext) {
114:
115: WebPageTagInstanceViewContext wptivc = (WebPageTagInstanceViewContext) inActc;
116:
117: WebPageTagInstanceViewContextInfo info = wptivc
118: .getInfoAsNonHtml();
119:
120: //if (this.valueCtchar.getValueLength() == 1) {
121: WebPageTagInstanceViewContext.displayView(this .valueCtchar,
122: info, wptivc, "???");
123: info.setNonHtmlContent("", " IS NULL");
124: //}
125: //else {
126: // info.setNonHtmlContent("??? IS NOT NULL");
127: //}
128: } else if (inActc instanceof SelectionCriteriaForReturnableConceptTag) {
129:
130: SelectionCriteriaForReturnableConceptTag scfrct = (SelectionCriteriaForReturnableConceptTag) inActc;
131:
132: scfrct.canReturnBoolean();
133: scfrct.declareFormatAsPlain();
134: } else if (inActc instanceof StudioConceptTagCreParInfoContext) {
135:
136: StudioConceptTagCreParInfoContext scpc = (StudioConceptTagCreParInfoContext) inActc;
137: }
138: }
139:
140: public void determineValueAndClass(
141: DetermineValueAndClassConceptTagContext inDvacctc) {
142:
143: try {
144: ValueAndClassForConceptTag vacfct = null;
145:
146: ValueAndClassForConceptTag valueVac = this .valueCtchar
147: .getDetermineValueAndClass(0, inDvacctc);
148:
149: vacfct = ValueAndClassForConceptTag.newBoolean(new Boolean(
150: valueVac.getValue() == null));
151:
152: inDvacctc.setDetermineValueAndClass(vacfct);
153: } catch (DetermineValueAndClassConceptTagException dvaccte) {
154: inDvacctc.setDetermineException(dvaccte);
155: }
156: }
157:
158: public void determineClass(DetermineClassConceptTagContext inDcctc) {
159:
160: inDcctc.setDetermineClass(StandardDataTypes.getBooleanClass());
161: }
162:
163: public Object createUninitializedSelf() {
164: return new CommonFunctionCompIsNullTag();
165: }
166: }
|