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.ConceptTag;
021: import org.jfolder.common.tagging.ConceptTagCharacteristic;
022: import org.jfolder.common.tagging.ConceptTagConstraint;
023: import org.jfolder.common.tagging.ConceptTagConstraintHolder;
024: import org.jfolder.common.tagging.ConceptTagFlagsHelper;
025: import org.jfolder.common.tagging.ConceptTagHelper;
026: import org.jfolder.common.tagging.DetermineClassConceptTagContext;
027: import org.jfolder.common.tagging.DetermineValueAndClassConceptTagContext;
028: import org.jfolder.common.tagging.DetermineValueAndClassConceptTagException;
029: import org.jfolder.common.tagging.DynamicConceptTagConstraintContext;
030: import org.jfolder.common.tagging.InitializeConceptTagContext;
031: import org.jfolder.common.tagging.ReturnableConceptTag;
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.CommonExpressions;
039: import org.jfolder.common.utils.misc.MiscHelper;
040:
041: //other classes
042:
043: public class CommonFunctionStrEquTag extends
044: BaseCommonFunctionCompatibilityTag implements
045: SelfArgumentlessConstructor {
046:
047: //characteristics
048: private ConceptTagCharacteristic stringCtchar = null;
049: private ConceptTagCharacteristic operandCtchar = null;
050:
051: //string details
052: private final static String STRING_CTCON = "string";
053: private final static String STRING_TITLE = "String";
054: private final static String STRING_SHORT_DESCRIPTION = "String";
055: //
056: private final static String OPERAND_CTCON = "operand";
057: private final static String OPERAND_TITLE = "Operand";
058: private final static String OPERAND_SHORT_DESCRIPTION = "Operand";
059:
060: public void initialize(InitializeConceptTagContext inIctc) {
061:
062: //
063: ConceptTagConstraintHolder rootCtconh = ConceptTagConstraintHolder
064: .newInstance(inIctc);
065:
066: //constrain "string"
067: ConceptTagConstraint stringCtcon = ConceptTagConstraint
068: .newInstance(STRING_CTCON, rootCtconh);
069: //
070: stringCtcon.setTitle(STRING_TITLE);
071: stringCtcon.setShortDescription(STRING_SHORT_DESCRIPTION);
072: //
073: //
074: stringCtcon.setMinimumLength(1);
075: stringCtcon.setMaximumLength(1);
076: //
077: DynamicConceptTagConstraintContext stringDctcc = DynamicConceptTagConstraintContext
078: .newInstance(stringCtcon);
079: stringDctcc.getValidator().allowReturnOfOnlyString();
080: stringDctcc.getValidator().filterDirectChildOfRootAndHtml();
081: //
082:
083: //constrain "operand"
084: ConceptTagConstraint operandCtcon = ConceptTagConstraint
085: .newInstance(OPERAND_CTCON, rootCtconh);
086: //
087: operandCtcon.setTitle(OPERAND_TITLE);
088: operandCtcon.setShortDescription(OPERAND_SHORT_DESCRIPTION);
089: //
090: //
091: operandCtcon.setMinimumLength(1);
092: operandCtcon.setMaximumLength(1);
093: //
094: DynamicConceptTagConstraintContext operandDctcc = DynamicConceptTagConstraintContext
095: .newInstance(operandCtcon);
096: operandDctcc.getValidator().allowReturnOfOnlyString();
097: operandDctcc.getValidator().filterDirectChildOfRootAndHtml();
098:
099: //
100: ConceptTagFlagsHelper
101: .pushNonIterativeCommonFunctionDepth(inIctc);
102: inIctc.initialize();
103: ConceptTagFlagsHelper
104: .popNonIterativeCommonFunctionDepth(inIctc);
105:
106: //initialize characteristics
107: this .stringCtchar = stringCtcon.getCharacteristic();
108: this .operandCtchar = operandCtcon.getCharacteristic();
109: }
110:
111: public void appraise(AppraiseConceptTagContext inActc) {
112:
113: if (inActc instanceof StudioConceptTagInstanceInfoContext) {
114:
115: StudioConceptTagInstanceInfoContext sctiic = (StudioConceptTagInstanceInfoContext) inActc;
116:
117: //
118: sctiic.setInstanceTitle("String Equals");
119: sctiic.setInstanceDescription("String Equals");
120: } else if (inActc instanceof StudioConceptTagTypeInfoContext) {
121:
122: StudioConceptTagTypeInfoContext scttic = (StudioConceptTagTypeInfoContext) inActc;
123:
124: scttic.setTypeTitle("String Equals");
125: scttic.setTypeDescription("String Equals");
126: } else if (inActc instanceof WebPageTagInstanceViewContext) {
127:
128: WebPageTagInstanceViewContext wptivc = (WebPageTagInstanceViewContext) inActc;
129:
130: WebPageTagInstanceViewContextInfo info = wptivc
131: .getInfoAsNonHtml();
132:
133: //
134: //
135: //
136: //WebPageTagInstanceViewContextInfo extractInfo =
137: // info.createNonHtmlInfo();
138: //
139: WebPageTagInstanceViewContextInfo firstInfo = info
140: .createNonHtmlInfo();
141: //
142: WebPageTagInstanceViewContextInfo secondInfo = info
143: .createNonHtmlInfo();
144: //
145: //
146: firstInfo.setNonHtmlContent("Does (", ") ");
147: WebPageTagInstanceViewContext.displayView(
148: this .stringCtchar, firstInfo, wptivc, "???");
149: //
150: //
151: secondInfo.setNonHtmlContent("Equal (", ")?");
152: WebPageTagInstanceViewContext.displayView(
153: this .operandCtchar, secondInfo, wptivc, "???");
154: //
155: //
156: } else if (inActc instanceof SelectionCriteriaForReturnableConceptTag) {
157:
158: SelectionCriteriaForReturnableConceptTag scfrct = (SelectionCriteriaForReturnableConceptTag) inActc;
159:
160: scfrct.canReturnBoolean();
161: scfrct.declareFormatAsPlain();
162: } else if (inActc instanceof StudioConceptTagCreParInfoContext) {
163:
164: StudioConceptTagCreParInfoContext scpc = (StudioConceptTagCreParInfoContext) inActc;
165: }
166: }
167:
168: public void determineValueAndClass(
169: DetermineValueAndClassConceptTagContext inDvacctc) {
170:
171: try {
172: ValueAndClassForConceptTag vacfct = null;
173:
174: //
175: ValueAndClassForConceptTag stringVacfct = this .stringCtchar
176: .getDetermineValueAndClass(0, inDvacctc);
177: //
178: ValueAndClassForConceptTag operandVacfct = this .operandCtchar
179: .getDetermineValueAndClass(0, inDvacctc);
180: //
181: String string = stringVacfct.getValue().toString();
182: String operand = operandVacfct.getValue().toString();
183: //
184: vacfct = ValueAndClassForConceptTag.newBoolean(new Boolean(
185: string.equals(operand)));
186:
187: inDvacctc.setDetermineValueAndClass(vacfct);
188: } catch (DetermineValueAndClassConceptTagException dvaccte) {
189: inDvacctc.setDetermineException(dvaccte);
190: }
191: }
192:
193: public void determineClass(DetermineClassConceptTagContext inDcctc) {
194: inDcctc.setDetermineClass(StandardDataTypes.getBooleanClass());
195: }
196:
197: public Object createUninitializedSelf() {
198: return new CommonFunctionStrEquTag();
199: }
200:
201: }
|