001 /**
002 * Copyright 2005-2011 The Kuali Foundation
003 *
004 * Licensed under the Educational Community License, Version 2.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/ecl2.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.rice.kns.datadictionary.exporter;
017
018 import org.apache.commons.lang.StringUtils;
019 import org.kuali.rice.kns.datadictionary.control.ButtonControlDefinition;
020 import org.kuali.rice.kns.datadictionary.control.CurrencyControlDefinition;
021 import org.kuali.rice.kns.datadictionary.control.LinkControlDefinition;
022 import org.kuali.rice.krad.datadictionary.AttributeDefinition;
023 import org.kuali.rice.krad.datadictionary.DataDictionaryEntryBase;
024 import org.kuali.rice.krad.datadictionary.control.ControlDefinition;
025 import org.kuali.rice.krad.datadictionary.exporter.ExportMap;
026
027 import java.util.Map;
028
029 /**
030 * AttributesMapBuilder
031 *
032 *
033 */
034 @Deprecated
035 public class AttributesMapBuilder {
036
037 /**
038 * Default constructor
039 */
040 public AttributesMapBuilder() {
041 }
042
043
044 /**
045 * @param entry
046 * @return ExportMap containing the standard entries for the entry's AttributesDefinition
047 */
048 public ExportMap buildAttributesMap(DataDictionaryEntryBase entry) {
049 ExportMap attributesMap = new ExportMap("attributes");
050
051 for ( AttributeDefinition attribute : entry.getAttributes() ) {
052 attributesMap.set(buildAttributeMap(attribute, entry.getFullClassName()));
053 }
054
055 return attributesMap;
056 }
057
058 public ExportMap buildAttributeMap(AttributeDefinition attribute, String fullClassName) {
059 ExportMap attributeMap = new ExportMap(attribute.getName());
060
061 // simple properties
062 attributeMap.set("name", attribute.getName());
063 attributeMap.set("forceUppercase", attribute.getForceUppercase().toString());
064 attributeMap.set("label", attribute.getLabel());
065 attributeMap.set("shortLabel", attribute.getShortLabel());
066
067 attributeMap.set("maxLength", attribute.getMaxLength().toString());
068 String exclusiveMin = attribute.getExclusiveMin();
069 if (exclusiveMin != null) {
070 attributeMap.set("exclusiveMin", exclusiveMin/*.toString()*/);
071 }
072 String exclusiveMax = attribute.getInclusiveMax();
073 if (exclusiveMax != null) {
074 attributeMap.set("exclusiveMax", exclusiveMax/*.toString()*/);
075 }
076
077 attributeMap.set("required", attribute.isRequired().toString());
078 if (attribute.getSummary() != null) {
079 attributeMap.set("summary", attribute.getSummary());
080 }
081 if (attribute.getDescription() != null) {
082 attributeMap.set("description", attribute.getDescription());
083 }
084 if (attribute.hasFormatterClass()) {
085 attributeMap.set("formatterClass", attribute.getFormatterClass());
086 }
087
088 // complex properties
089 if (attribute.hasValidationPattern()) {
090 attributeMap.set(attribute.getValidationPattern().buildExportMap("validationPattern"));
091 }
092
093 if(attribute.hasAttributeSecurity()){
094 attributeMap.set("attributeSecurityMask", String.valueOf(attribute.getAttributeSecurity().isMask()));
095 attributeMap.set("attributeSecurityPartialMask", String.valueOf(attribute.getAttributeSecurity().isPartialMask()));
096 attributeMap.set("attributeSecurityHide", String.valueOf(attribute.getAttributeSecurity().isHide()));
097 attributeMap.set("attributeSecurityReadOnly", String.valueOf(attribute.getAttributeSecurity().isReadOnly()));
098
099 // TODO: consider whether to export class names from the attribute security
100 }
101
102 attributeMap.set(buildControlMap(attribute));
103 if (attribute.getOptionsFinder() != null) {
104 attributeMap.set(buildKeyLabelMap(attribute));
105 }
106 if (StringUtils.isNotBlank(fullClassName)) {
107 attributeMap.set("fullClassName", fullClassName);
108 }
109
110 return attributeMap;
111 }
112
113 private ExportMap buildKeyLabelMap(AttributeDefinition attribute) {
114
115 ExportMap keyLabelMap = new ExportMap("keyLabelMap");
116
117 for (Map.Entry<String, String> entry : attribute.getOptionsFinder().getKeyLabelMap().entrySet()) {
118 if (StringUtils.isNotBlank(entry.getKey())) {
119 keyLabelMap.set(entry.getKey(), entry.getValue());
120 }
121 }
122 return keyLabelMap;
123 }
124
125 private ExportMap buildControlMap(AttributeDefinition attribute) {
126 ControlDefinition control = attribute.getControl();
127 ExportMap controlMap = new ExportMap("control");
128
129 if (control.isCheckbox()) {
130 controlMap.set("checkbox", "true");
131 }
132 else if (control.isHidden()) {
133 controlMap.set("hidden", "true");
134 }
135 else if (control.isKualiUser()) {
136 controlMap.set("kualiUser", "true");
137 }
138 else if (control.isRadio()) {
139 controlMap.set("radio", "true");
140 controlMap.set("valuesFinder", control.getValuesFinderClass());
141 if (control.getBusinessObjectClass() != null) {
142 controlMap.set("businessObject", control.getBusinessObjectClass());
143 }
144 if (StringUtils.isNotEmpty(control.getKeyAttribute())) {
145 controlMap.set("keyAttribute", control.getKeyAttribute());
146 }
147 if (StringUtils.isNotEmpty(control.getLabelAttribute())) {
148 controlMap.set("labelAttribute", control.getLabelAttribute());
149 }
150 if (control.getIncludeKeyInLabel() != null) {
151 controlMap.set("includeKeyInLabel", control.getIncludeKeyInLabel().toString());
152 }
153 }
154 else if (control.isSelect()) {
155 controlMap.set("select", "true");
156 controlMap.set("valuesFinder", control.getValuesFinderClass());
157 if (control.getBusinessObjectClass() != null) {
158 controlMap.set("businessObject", control.getBusinessObjectClass());
159 }
160 if (StringUtils.isNotEmpty(control.getKeyAttribute())) {
161 controlMap.set("keyAttribute", control.getKeyAttribute());
162 }
163 if (StringUtils.isNotEmpty(control.getLabelAttribute())) {
164 controlMap.set("labelAttribute", control.getLabelAttribute());
165 }
166 if (control.getIncludeBlankRow() != null) {
167 controlMap.set("includeBlankRow", control.getIncludeBlankRow().toString());
168 }
169 if (control.getIncludeKeyInLabel() != null) {
170 controlMap.set("includeKeyInLabel", control.getIncludeKeyInLabel().toString());
171 }
172 }
173 else if (control.isMultiselect()) {
174 controlMap.set("multiselect", "true");
175 controlMap.set("valuesFinder", control.getValuesFinderClass());
176 if (control.getBusinessObjectClass() != null) {
177 controlMap.set("businessObject", control.getBusinessObjectClass());
178 }
179 if (StringUtils.isNotEmpty(control.getKeyAttribute())) {
180 controlMap.set("keyAttribute", control.getKeyAttribute());
181 }
182 if (StringUtils.isNotEmpty(control.getLabelAttribute())) {
183 controlMap.set("labelAttribute", control.getLabelAttribute());
184 }
185 if (control.getIncludeKeyInLabel() != null) {
186 controlMap.set("includeKeyInLabel", control.getIncludeKeyInLabel().toString());
187 }
188 if (control.getSize() != null) {
189 controlMap.set("size", control.getSize().toString());
190 }
191 }
192 else if (control.isText()) {
193 controlMap.set("text", "true");
194 controlMap.set("size", control.getSize().toString());
195 controlMap.set("datePicker", Boolean.valueOf(control.isDatePicker()).toString());
196 controlMap.set("ranged", Boolean.valueOf(control.isRanged()).toString());
197 }
198 else if (control.isTextarea()) {
199 controlMap.set("textarea", "true");
200 controlMap.set("rows", control.getRows().toString());
201 controlMap.set("cols", control.getCols().toString());
202 controlMap.set("expandedTextArea", Boolean.valueOf(control.isExpandedTextArea()).toString());
203 }
204 else if (control.isCurrency()) {
205 controlMap.set("currency", "true");
206 controlMap.set("size", control.getSize().toString());
207 controlMap.set("formattedMaxLength", ((CurrencyControlDefinition) control).getFormattedMaxLength().toString());
208 }
209 else if (control.isLookupHidden()) {
210 controlMap.set("lookupHidden", "true");
211 }
212 else if (control.isLookupReadonly()) {
213 controlMap.set("lookupReadonly", "true");
214 }else if (control.isButton()) {
215 controlMap.set("button", "true");
216 if (StringUtils.isNotEmpty(((ButtonControlDefinition) control).getImageSrc())) {
217 controlMap.set("imageSrc", ((ButtonControlDefinition) control).getImageSrc());
218 }
219 if (StringUtils.isNotEmpty(((ButtonControlDefinition) control).getStyleClass())) {
220 controlMap.set("styleClass", ((ButtonControlDefinition) control).getStyleClass() );
221 }
222 }else if (control.isLink()) {
223 controlMap.set("link", "true");
224 if (StringUtils.isNotEmpty(((LinkControlDefinition) control).getTarget())) {
225 controlMap.set("target", ((LinkControlDefinition) control).getTarget());
226 }
227 if (StringUtils.isNotEmpty(((LinkControlDefinition) control).getStyleClass())) {
228 controlMap.set("styleClass", ((LinkControlDefinition) control).getStyleClass() );
229 }
230 if (StringUtils.isNotEmpty(((LinkControlDefinition) control).getHrefText())) {
231 controlMap.set("hrefText", ((LinkControlDefinition) control).getHrefText());
232 }
233 }
234
235 return controlMap;
236 }
237 }