001: /*
002: * Copyright 2005-2006 The Kuali Foundation.
003: *
004: * Licensed under the Educational Community License, Version 1.0 (the "License");
005: * you may not use this file except in compliance with the License.
006: * You may obtain a copy of the License at
007: *
008: * http://www.opensource.org/licenses/ecl1.php
009: *
010: * Unless required by applicable law or agreed to in writing, software
011: * distributed under the License is distributed on an "AS IS" BASIS,
012: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013: * See the License for the specific language governing permissions and
014: * limitations under the License.
015: */
016: package org.kuali.core.datadictionary.exporter;
017:
018: import java.util.Iterator;
019:
020: import org.kuali.core.datadictionary.BusinessObjectEntry;
021: import org.kuali.core.datadictionary.FieldDefinition;
022: import org.kuali.core.datadictionary.LookupDefinition;
023: import org.kuali.core.datadictionary.SortDefinition;
024:
025: /**
026: * LookupMapBuilder
027: *
028: *
029: */
030: public class LookupMapBuilder {
031:
032: /**
033: * Default constructor
034: */
035: public LookupMapBuilder() {
036: }
037:
038: /**
039: * @param entry
040: * @return ExportMap containing the standard entries for the given entry's LookupDefinition, or null if the given entry has no
041: * lookupDefinition
042: */
043: public ExportMap buildLookupMap(BusinessObjectEntry entry) {
044: ExportMap lookupMap = null;
045:
046: if (entry.hasLookupDefinition()) {
047: LookupDefinition lookupDefinition = entry
048: .getLookupDefinition();
049: lookupMap = new ExportMap("lookup");
050:
051: // simple properties
052: if (lookupDefinition.getLookupableID() != null) {
053: lookupMap.set("lookupableID", lookupDefinition
054: .getLookupableID());
055: }
056:
057: lookupMap.set("title", lookupDefinition.getTitle());
058:
059: if (lookupDefinition.hasMenubar()) {
060: lookupMap.set("menubar", lookupDefinition.getMenubar());
061: }
062: if (lookupDefinition.hasInstructions()) {
063: lookupMap.set("instructions", lookupDefinition
064: .getInstructions());
065: }
066:
067: // complex properties
068: lookupMap
069: .setOptional(buildDefaultSortMap(lookupDefinition));
070: lookupMap.set(buildLookupFieldsMap(lookupDefinition));
071: lookupMap.set(buildResultFieldsMap(lookupDefinition));
072: }
073:
074: return lookupMap;
075: }
076:
077: private ExportMap buildDefaultSortMap(
078: LookupDefinition lookupDefinition) {
079: ExportMap defaultSortMap = null;
080:
081: if (lookupDefinition.hasDefaultSort()) {
082: SortDefinition defaultSortDefinition = lookupDefinition
083: .getDefaultSort();
084: defaultSortMap = new ExportMap("defaultSort");
085:
086: defaultSortMap
087: .set("sortAscending", Boolean
088: .toString(defaultSortDefinition
089: .getSortAscending()));
090: defaultSortMap
091: .set(buildSortAttributesMap(defaultSortDefinition));
092: }
093:
094: return defaultSortMap;
095: }
096:
097: private ExportMap buildSortAttributesMap(
098: SortDefinition sortDefinition) {
099: ExportMap sortAttributesMap = new ExportMap("sortAttributes");
100:
101: for (Iterator i = sortDefinition.getAttributeNames().iterator(); i
102: .hasNext();) {
103: String attributeName = (String) i.next();
104:
105: ExportMap attributeMap = new ExportMap(attributeName);
106: attributeMap.set("attributeName", attributeName);
107:
108: sortAttributesMap.set(attributeMap);
109: }
110:
111: return sortAttributesMap;
112: }
113:
114: private ExportMap buildLookupFieldsMap(
115: LookupDefinition lookupDefinition) {
116: ExportMap lookupFieldsMap = new ExportMap("lookupFields");
117:
118: for (Iterator i = lookupDefinition.getLookupFields().iterator(); i
119: .hasNext();) {
120: FieldDefinition lookupField = (FieldDefinition) i.next();
121: lookupFieldsMap.set(buildLookupFieldMap(lookupField));
122: }
123:
124: return lookupFieldsMap;
125: }
126:
127: private ExportMap buildLookupFieldMap(FieldDefinition lookupField) {
128: ExportMap lookupFieldMap = new ExportMap(lookupField
129: .getAttributeName());
130:
131: lookupFieldMap.set("attributeName", lookupField
132: .getAttributeName());
133: lookupFieldMap.set("required", Boolean.toString(lookupField
134: .isRequired()));
135:
136: return lookupFieldMap;
137: }
138:
139: private ExportMap buildResultFieldsMap(
140: LookupDefinition lookupDefinition) {
141: ExportMap resultFieldsMap = new ExportMap("resultFields");
142:
143: for (Iterator i = lookupDefinition.getResultFields().iterator(); i
144: .hasNext();) {
145: FieldDefinition resultField = (FieldDefinition) i.next();
146: resultFieldsMap.set(MapperUtils.buildFieldMap(resultField));
147: }
148:
149: return resultFieldsMap;
150: }
151:
152: }
|