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.MaintainableCollectionDefinition;
021: import org.kuali.core.datadictionary.MaintainableFieldDefinition;
022: import org.kuali.core.datadictionary.MaintainableItemDefinition;
023: import org.kuali.core.datadictionary.MaintainableSectionDefinition;
024: import org.kuali.core.datadictionary.MaintainableSubSectionHeaderDefinition;
025: import org.kuali.core.datadictionary.MaintenanceDocumentEntry;
026:
027: /**
028: * MaintenanceDocumentEntryMapper
029: *
030: *
031: */
032: public class MaintenanceDocumentEntryMapper extends DocumentEntryMapper {
033:
034: /**
035: * Default constructor
036: */
037: public MaintenanceDocumentEntryMapper() {
038: }
039:
040: /**
041: * @param entry
042: * @return Map containing a String- and Map-based representation of the given entry
043: */
044: public ExportMap mapEntry(MaintenanceDocumentEntry entry) {
045: ExportMap entryMap = super .mapEntry(entry);
046:
047: // simple properties
048: entryMap.set("maintenanceDocument", "true");
049: entryMap.set("businessObjectClass", entry
050: .getBusinessObjectClass().getName());
051: entryMap.set("maintainableClass", entry.getMaintainableClass()
052: .getName());
053:
054: // complex properties
055: entryMap.set(buildMaintainableSectionsMap(entry));
056:
057: return entryMap;
058: }
059:
060: private ExportMap buildMaintainableSectionsMap(
061: MaintenanceDocumentEntry entry) {
062: ExportMap maintainableSectionsMap = new ExportMap(
063: "maintainableSections");
064:
065: int index = 0;
066: for (Iterator i = entry.getMaintainableSections().iterator(); i
067: .hasNext();) {
068: MaintainableSectionDefinition section = (MaintainableSectionDefinition) i
069: .next();
070:
071: maintainableSectionsMap.set(buildMaintainableSectionMap(
072: section, index++));
073: }
074:
075: return maintainableSectionsMap;
076: }
077:
078: private ExportMap buildMaintainableSectionMap(
079: MaintainableSectionDefinition section, int index) {
080: ExportMap sectionMap = new ExportMap(Integer.toString(index));
081:
082: sectionMap.set("index", Integer.toString(index));
083: sectionMap.set("title", section.getTitle());
084:
085: sectionMap.set(buildMaintainableItemsMap(section));
086:
087: return sectionMap;
088: }
089:
090: private ExportMap buildMaintainableItemsMap(
091: MaintainableSectionDefinition section) {
092: ExportMap itemsMap = new ExportMap("maintainableItems");
093:
094: for (Iterator i = section.getMaintainableItems().iterator(); i
095: .hasNext();) {
096: MaintainableItemDefinition item = (MaintainableItemDefinition) i
097: .next();
098: itemsMap.set(buildMaintainableItemMap(item));
099: }
100:
101: return itemsMap;
102: }
103:
104: private ExportMap buildMaintainableItemMap(
105: MaintainableItemDefinition item) {
106: ExportMap itemMap = new ExportMap(item.getName());
107:
108: if (item instanceof MaintainableFieldDefinition) {
109: MaintainableFieldDefinition field = (MaintainableFieldDefinition) item;
110:
111: itemMap.set("field", "true");
112: itemMap.set("name", field.getName());
113: itemMap.set("required", Boolean
114: .toString(field.isRequired()));
115: } else if (item instanceof MaintainableCollectionDefinition) {
116: MaintainableCollectionDefinition collection = (MaintainableCollectionDefinition) item;
117:
118: itemMap.set("collection", "true");
119: itemMap.set("name", collection.getName());
120: itemMap.set("businessObjectClass", collection
121: .getBusinessObjectClass().getName());
122: } else if (item instanceof MaintainableSubSectionHeaderDefinition) {
123: MaintainableSubSectionHeaderDefinition subSectionHeader = (MaintainableSubSectionHeaderDefinition) item;
124: itemMap.set("name", subSectionHeader.getName());
125: } else {
126: throw new IllegalStateException(
127: "unable to create itemMap for unknown MaintainableItem subclass '"
128: + item.getClass().getName() + "'");
129: }
130:
131: return itemMap;
132: }
133: }
|