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 CommonFunctionMapRemoveValueTag extends
044: BaseCommonFunctionCompatibilityTag implements
045: SelfArgumentlessConstructor {
046:
047: //characteristics
048: private ConceptTagCharacteristic mapCtchar = null;
049: private ConceptTagCharacteristic keyCtchar = null;
050:
051: //map details
052: private final static String MAP_CTCON = "map";
053: private final static String MAP_TITLE = "Map";
054: private final static String MAP_SHORT_DESCRIPTION = "Map";
055:
056: //key details
057: private final static String KEY_CTCON = "key";
058: private final static String KEY_TITLE = "Key";
059: private final static String KEY_SHORT_DESCRIPTION = "Key";
060:
061: public void initialize(InitializeConceptTagContext inIctc) {
062:
063: //
064: ConceptTagConstraintHolder rootCtconh = ConceptTagConstraintHolder
065: .newInstance(inIctc);
066:
067: //constrain "map"
068: ConceptTagConstraint mapCtcon = ConceptTagConstraint
069: .newInstance(MAP_CTCON, rootCtconh);
070: //
071: mapCtcon.setTitle(MAP_TITLE);
072: mapCtcon.setShortDescription(MAP_SHORT_DESCRIPTION);
073: //
074: //
075: mapCtcon.setMinimumLength(1);
076: mapCtcon.setMaximumLength(1);
077: //
078: DynamicConceptTagConstraintContext mapDctcc = DynamicConceptTagConstraintContext
079: .newInstance(mapCtcon);
080: mapDctcc.getValidator().allowReturnOfOnlyMap();
081: mapDctcc.getValidator().filterDirectChildOfRootAndHtml();
082: //
083:
084: //constrain "key"
085: ConceptTagConstraint keyCtcon = ConceptTagConstraint
086: .newInstance(KEY_CTCON, rootCtconh);
087: //
088: keyCtcon.setTitle(KEY_TITLE);
089: keyCtcon.setShortDescription(KEY_SHORT_DESCRIPTION);
090: //
091: //
092: keyCtcon.setMinimumLength(1);
093: keyCtcon.setMaximumLength(1);
094: //
095: DynamicConceptTagConstraintContext keyDctcc = DynamicConceptTagConstraintContext
096: .newInstance(keyCtcon);
097: keyDctcc.getValidator().allowReturnOfAnythingExceptNothing();
098: keyDctcc.getValidator().filterDirectChildOfRootAndHtml();
099: //
100:
101: //
102: ConceptTagFlagsHelper
103: .pushNonIterativeCommonFunctionDepth(inIctc);
104: inIctc.initialize();
105: ConceptTagFlagsHelper
106: .popNonIterativeCommonFunctionDepth(inIctc);
107:
108: //initialize characteristics
109: this .mapCtchar = mapCtcon.getCharacteristic();
110: this .keyCtchar = keyCtcon.getCharacteristic();
111: }
112:
113: public void appraise(AppraiseConceptTagContext inActc) {
114:
115: if (inActc instanceof StudioConceptTagInstanceInfoContext) {
116:
117: StudioConceptTagInstanceInfoContext sctiic = (StudioConceptTagInstanceInfoContext) inActc;
118:
119: //
120: sctiic.setInstanceTitle("Remove Value From Map");
121: sctiic.setInstanceDescription("Remove Value From Map");
122: } else if (inActc instanceof StudioConceptTagTypeInfoContext) {
123:
124: StudioConceptTagTypeInfoContext scttic = (StudioConceptTagTypeInfoContext) inActc;
125:
126: scttic.setTypeTitle("Remove Value From Map");
127: scttic.setTypeDescription("Remove Value From Map");
128: } else if (inActc instanceof WebPageTagInstanceViewContext) {
129:
130: WebPageTagInstanceViewContext wptivc = (WebPageTagInstanceViewContext) inActc;
131:
132: WebPageTagInstanceViewContextInfo info = wptivc
133: .getInfoAsNonHtml();
134:
135: //
136: WebPageTagInstanceViewContextInfo removeInfo = info
137: .createNonHtmlInfo();
138: removeInfo.setNonHtmlContent("Remove Value With Key (");
139: WebPageTagInstanceViewContext.displayView(this .keyCtchar,
140: removeInfo, wptivc, "???");
141: //
142: //
143: WebPageTagInstanceViewContextInfo mapInfo = info
144: .createNonHtmlInfo();
145: mapInfo.setNonHtmlContent(") From Map (", ")");
146: WebPageTagInstanceViewContext.displayView(this .mapCtchar,
147: mapInfo, wptivc, "???");
148: //mapInfo.setEndContent(")");
149: } else if (inActc instanceof SelectionCriteriaForReturnableConceptTag) {
150:
151: SelectionCriteriaForReturnableConceptTag scfrct = (SelectionCriteriaForReturnableConceptTag) inActc;
152:
153: scfrct.canReturnNothing();
154: scfrct.declareFormatAsPlain();
155: } else if (inActc instanceof StudioConceptTagCreParInfoContext) {
156:
157: StudioConceptTagCreParInfoContext scpc = (StudioConceptTagCreParInfoContext) inActc;
158: }
159: }
160:
161: public void determineValueAndClass(
162: DetermineValueAndClassConceptTagContext inDvacctc) {
163:
164: try {
165: ValueAndClassForConceptTag mapVacfct = this .mapCtchar
166: .getDetermineValueAndClass(0, inDvacctc);
167:
168: ValueAndClassForConceptTag keyVacfct = this .keyCtchar
169: .getDetermineValueAndClass(0, inDvacctc);
170:
171: StandardDataTypes.removeValueFromMap(mapVacfct.getValue(),
172: keyVacfct);
173:
174: inDvacctc
175: .setDetermineValueAndClass(ValueAndClassForConceptTag
176: .newNothing());
177: } catch (DetermineValueAndClassConceptTagException dvaccte) {
178: inDvacctc.setDetermineException(dvaccte);
179: }
180: }
181:
182: public void determineClass(DetermineClassConceptTagContext inDcctc) {
183: inDcctc.setDetermineClass(StandardDataTypes.getNothingClass());
184: }
185:
186: public Object createUninitializedSelf() {
187: return new CommonFunctionMapRemoveValueTag();
188: }
189:
190: }
|