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 CommonFunctionMapGetKeysTag extends
044: BaseCommonFunctionCompatibilityTag implements
045: SelfArgumentlessConstructor {
046:
047: //characteristics
048: private ConceptTagCharacteristic mapCtchar = null;
049:
050: //map details
051: private final static String MAP_CTCON = "map";
052: private final static String MAP_TITLE = "Map";
053: private final static String MAP_SHORT_DESCRIPTION = "Map";
054:
055: public void initialize(InitializeConceptTagContext inIctc) {
056:
057: //
058: ConceptTagConstraintHolder rootCtconh = ConceptTagConstraintHolder
059: .newInstance(inIctc);
060:
061: //constrain "map"
062: ConceptTagConstraint mapCtcon = ConceptTagConstraint
063: .newInstance(MAP_CTCON, rootCtconh);
064: //
065: mapCtcon.setTitle(MAP_TITLE);
066: mapCtcon.setShortDescription(MAP_SHORT_DESCRIPTION);
067: //
068: //
069: mapCtcon.setMinimumLength(1);
070: mapCtcon.setMaximumLength(1);
071: //
072: DynamicConceptTagConstraintContext mapDctcc = DynamicConceptTagConstraintContext
073: .newInstance(mapCtcon);
074: mapDctcc.getValidator().allowReturnOfOnlyMap();
075: mapDctcc.getValidator().filterDirectChildOfRootAndHtml();
076: //
077:
078: //
079: ConceptTagFlagsHelper
080: .pushNonIterativeCommonFunctionDepth(inIctc);
081: inIctc.initialize();
082: ConceptTagFlagsHelper
083: .popNonIterativeCommonFunctionDepth(inIctc);
084:
085: //initialize characteristics
086: this .mapCtchar = mapCtcon.getCharacteristic();
087: }
088:
089: public void appraise(AppraiseConceptTagContext inActc) {
090:
091: if (inActc instanceof StudioConceptTagInstanceInfoContext) {
092:
093: StudioConceptTagInstanceInfoContext sctiic = (StudioConceptTagInstanceInfoContext) inActc;
094:
095: //
096: sctiic.setInstanceTitle("Get Map Keys");
097: sctiic.setInstanceDescription("Get Map Keys");
098: } else if (inActc instanceof StudioConceptTagTypeInfoContext) {
099:
100: StudioConceptTagTypeInfoContext scttic = (StudioConceptTagTypeInfoContext) inActc;
101:
102: scttic.setTypeTitle("Get Map Keys");
103: scttic.setTypeDescription("Get Map Keys");
104: } else if (inActc instanceof WebPageTagInstanceViewContext) {
105:
106: WebPageTagInstanceViewContext wptivc = (WebPageTagInstanceViewContext) inActc;
107:
108: WebPageTagInstanceViewContextInfo info = wptivc
109: .getInfoAsNonHtml();
110:
111: info.setNonHtmlContent("Get Keys As List From(", ")");
112: WebPageTagInstanceViewContext.displayView(this .mapCtchar,
113: info, wptivc, "???");
114: //info.setEndContent(")");
115: } else if (inActc instanceof SelectionCriteriaForReturnableConceptTag) {
116:
117: SelectionCriteriaForReturnableConceptTag scfrct = (SelectionCriteriaForReturnableConceptTag) inActc;
118:
119: scfrct.canReturnList();
120: scfrct.declareFormatAsPlain();
121: } else if (inActc instanceof StudioConceptTagCreParInfoContext) {
122:
123: StudioConceptTagCreParInfoContext scpc = (StudioConceptTagCreParInfoContext) inActc;
124: }
125: }
126:
127: public void determineValueAndClass(
128: DetermineValueAndClassConceptTagContext inDvacctc) {
129:
130: try {
131: ValueAndClassForConceptTag vacfct = null;
132:
133: ValueAndClassForConceptTag mapVacfct = this .mapCtchar
134: .getDetermineValueAndClass(0, inDvacctc);
135:
136: Object keys = StandardDataTypes.getKeysFromMap(mapVacfct
137: .getValue());
138:
139: vacfct = ValueAndClassForConceptTag.newInstance(keys,
140: StandardDataTypes.getListClass());
141:
142: inDvacctc.setDetermineValueAndClass(vacfct);
143: } catch (DetermineValueAndClassConceptTagException dvaccte) {
144: inDvacctc.setDetermineException(dvaccte);
145: }
146: }
147:
148: public void determineClass(DetermineClassConceptTagContext inDcctc) {
149: inDcctc.setDetermineClass(StandardDataTypes.getListClass());
150: }
151:
152: public Object createUninitializedSelf() {
153: return new CommonFunctionMapGetKeysTag();
154: }
155:
156: }
|