001 /*
002 * Copyright 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.kfs.sys.businessobject;
017
018 import java.util.LinkedHashMap;
019
020 import org.kuali.kfs.sys.dataaccess.FieldMetaData;
021 import org.kuali.rice.kns.bo.TransientBusinessObjectBase;
022 import org.kuali.rice.kns.datadictionary.AttributeDefinition;
023 import org.kuali.rice.kns.datadictionary.BusinessObjectEntry;
024
025 public class DataMappingFieldDefinition extends TransientBusinessObjectBase {
026 private String namespaceCode;
027 private String componentClass;
028 private String propertyName;
029 private String tableName;
030 private String fieldName;
031 private FunctionalFieldDescription functionalFieldDescription;
032
033 private BusinessObjectEntry businessObjectEntry;
034 private AttributeDefinition attributeDefinition;
035 private FieldMetaData fieldMetaData;
036 private String propertyType;
037 private String referenceComponentLabel;
038
039 public DataMappingFieldDefinition() {
040 }
041
042 public DataMappingFieldDefinition(FunctionalFieldDescription functionalFieldDescription, BusinessObjectEntry businessObjectEntry, AttributeDefinition attributeDefinition, FieldMetaData fieldMetaData, String propertyType, String referenceComponentLabel) {
043 setNamespaceCode(functionalFieldDescription.getNamespaceCode());
044 setComponentClass(functionalFieldDescription.getComponentClass());
045 setPropertyName(functionalFieldDescription.getPropertyName());
046 setTableName(fieldMetaData.getTableName());
047 setFieldName(fieldMetaData.getColumnName());
048 setFunctionalFieldDescription(functionalFieldDescription);
049 this.businessObjectEntry = businessObjectEntry;
050 this.attributeDefinition = attributeDefinition;
051 this.fieldMetaData = fieldMetaData;
052 this.propertyType = propertyType;
053 this.referenceComponentLabel = referenceComponentLabel;
054 }
055
056 public String getDatabaseDataType() {
057 return fieldMetaData.getDataType();
058 }
059
060 public String getApplicationDataType() {
061 return propertyType;
062 }
063
064 public int getDatabaseDefinedLength() {
065 return fieldMetaData.getLength();
066 }
067
068 public int getApplicationDefinedLength() {
069 return attributeDefinition.getMaxLength();
070 }
071
072 public int getDecimalPlaces() {
073 return fieldMetaData.getDecimalPlaces();
074 }
075
076 public String getReferenceComponent() {
077 return referenceComponentLabel;
078 }
079
080 public boolean isRequired() {
081 return attributeDefinition.isRequired();
082 }
083
084 public String getValidationPattern() {
085 return new StringBuffer(attributeDefinition.getValidationPattern().getClass().getSimpleName()).append(" (").append(attributeDefinition.getValidationPattern().getRegexPattern().toString()).append(")").toString();
086 }
087
088 public boolean isEncrypted() {
089 return fieldMetaData.isEncrypted();
090 }
091
092 public String getMaskPattern() {
093 // TODO: see how to handle the multiple mask formatters that may appear on an AttributeSecurity object
094 /*if (attributeDefinition.getDisplayMask().getMaskFormatter() instanceof MaskFormatterLiteral) {
095 return ((MaskFormatterLiteral)attributeDefinition.getDisplayMask().getMaskFormatter()).getLiteral();
096 }
097 else if (attributeDefinition.getDisplayMask().getMaskFormatter() instanceof MaskFormatterSubString) {
098 return new StringBuffer(((MaskFormatterSubString)attributeDefinition.getDisplayMask().getMaskFormatter()).getMaskLength()).append(" ").append(((MaskFormatterSubString)attributeDefinition.getDisplayMask().getMaskFormatter()).getMaskCharacter()).append(" characters").toString();
099 }
100 else {*/
101 return "Unknown MaskFormatter";
102 //}
103 }
104
105 public String getNamespaceCode() {
106 return namespaceCode;
107 }
108
109 public void setNamespaceCode(String namespaceCode) {
110 this.namespaceCode = namespaceCode;
111 }
112
113 public String getComponentClass() {
114 return componentClass;
115 }
116
117 public void setComponentClass(String componentClass) {
118 this.componentClass = componentClass;
119 }
120
121 public String getPropertyName() {
122 return propertyName;
123 }
124
125 public void setPropertyName(String propertyName) {
126 this.propertyName = propertyName;
127 }
128
129 public String getTableName() {
130 return tableName;
131 }
132
133 public void setTableName(String tableName) {
134 this.tableName = tableName;
135 }
136
137 public String getFieldName() {
138 return fieldName;
139 }
140
141 public void setFieldName(String fieldName) {
142 this.fieldName = fieldName;
143 }
144
145 public FunctionalFieldDescription getFunctionalFieldDescription() {
146 return functionalFieldDescription;
147 }
148
149 public void setFunctionalFieldDescription(FunctionalFieldDescription functionalFieldDescription) {
150 this.functionalFieldDescription = functionalFieldDescription;
151 }
152
153 @Override
154 protected LinkedHashMap toStringMapper() {
155 return new LinkedHashMap();
156 }
157 }