001/**
002 * Copyright 2004-2014 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 */
016package org.kuali.student.contract.model;
017
018import java.util.ArrayList;
019import java.util.List;
020
021/**
022 *
023 * @author nwright
024 */
025public class OrchestrationObjectField {
026
027    private OrchestrationObject parent;
028    private String name;
029    private String type;
030
031    public enum FieldTypeCategory {
032
033        PRIMITIVE,
034        MAPPED_STRING,
035        DYNAMIC_ATTRIBUTE,
036        COMPLEX,
037        COMPLEX_INLINE,
038        LIST_OF_PRIMITIVE,
039        LIST_OF_MAPPED_STRING,
040        LIST_OF_COMPLEX,
041        LIST_OF_COMPLEX_INLINE;
042    }
043
044    public OrchestrationObject getParent() {
045        return parent;
046    }
047
048    public void setParent(OrchestrationObject parent) {
049        this.parent = parent;
050    }
051
052    public void setName(String name) {
053        this.name = name;
054    }
055
056    public String getName() {
057        return name;
058    }
059
060    public String getPropertyName() {
061        return name.substring(0, 1).toLowerCase() + name.substring(1);
062    }
063
064    public String getProperName() {
065        return name.substring(0, 1).toUpperCase() + name.substring(1);
066    }
067
068    public void setType(String type) {
069        this.type = type;
070    }
071
072    public String getType() {
073        return type;
074    }
075    private FieldTypeCategory fieldTypeCategory;
076
077    public FieldTypeCategory getFieldTypeCategory() {
078        return fieldTypeCategory;
079    }
080
081    public void setFieldTypeCategory(
082            FieldTypeCategory fieldTypeCategory) {
083        this.fieldTypeCategory = fieldTypeCategory;
084    }
085    private OrchestrationObject inlineObject;
086
087    public OrchestrationObject getInlineObject() {
088        return inlineObject;
089    }
090
091    public void setInlineObject(OrchestrationObject inlineObject) {
092        this.inlineObject = inlineObject;
093    }
094    private List<TypeStateConstraint> constraints;
095
096    public List<TypeStateConstraint> getConstraints() {
097        if (constraints == null) {
098            constraints = new ArrayList();
099        }
100        return constraints;
101    }
102
103    public void setConstraints(List<TypeStateConstraint> constraints) {
104        this.constraints = constraints;
105    }
106    private String defaultValue;
107
108    public String getDefaultValue() {
109        return defaultValue;
110    }
111
112    public void setDefaultValue(String defaultValue) {
113        this.defaultValue = defaultValue;
114    }
115    private String defaultValuePath;
116
117    public String getDefaultValuePath() {
118        return defaultValuePath;
119    }
120
121    public void setDefaultValuePath(String defaultValuePath) {
122        this.defaultValuePath = defaultValuePath;
123    }
124
125    public String getFullyQualifiedName() {
126        //TODO: Get grand parent
127        StringBuffer buf = new StringBuffer();
128        buf.append(getParent().getName());
129        buf.append(".");
130        buf.append(getProperName());
131        return buf.toString();
132    }
133
134    public enum WriteAccess {
135
136        ALWAYS, NEVER, ON_CREATE;
137    }
138    private WriteAccess writeAccess;
139
140    public WriteAccess getWriteAccess() {
141        return writeAccess;
142    }
143
144    public void setWriteAccess(WriteAccess writeAccess) {
145        this.writeAccess = writeAccess;
146    }
147    private String lookup;
148
149    public String getLookup() {
150        return lookup;
151    }
152
153    public void setLookup(String lookup) {
154        this.lookup = lookup;
155    }
156    private List<String> additionalLookups;
157
158    public List<String> getAdditionalLookups() {
159        return additionalLookups;
160    }
161
162    public void setAdditionalLookups(List<String> additionalLookups) {
163        this.additionalLookups = additionalLookups;
164    }
165    private String lookupContextPath;
166
167    public String getLookupContextPath() {
168        return lookupContextPath;
169    }
170
171    public void setLookupContextPath(String lookupContextPath) {
172        this.lookupContextPath = lookupContextPath;
173    }
174    private Integer maxRecursions;
175
176    public Integer getMaxRecursions() {
177        return maxRecursions;
178    }
179
180    public void setMaxRecursions(Integer maxRecursions) {
181        this.maxRecursions = maxRecursions;
182    }
183}