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.List;
019
020/**
021 *
022 * @author nwright
023 */
024public class OrchestrationObject {
025
026    public enum Source {
027
028        MESSAGE_STRUCTURE, ORCH_OBJS;
029    }
030    private List<OrchestrationObjectField> fields;
031    private String name;
032
033    public void setName(String name) {
034        this.name = name;
035    }
036
037    public String getName() {
038        return name;
039    }
040
041    public void setFields(List<OrchestrationObjectField> fields) {
042        this.fields = fields;
043    }
044
045    public List<OrchestrationObjectField> getFields() {
046        return fields;
047    }
048    private boolean hasOwnCreateUpdate;
049
050    public boolean hasOwnCreateUpdate() {
051        return hasOwnCreateUpdate;
052    }
053
054    public void setHasOwnCreateUpdate(boolean hasOwnCreateUpdate) {
055        this.hasOwnCreateUpdate = hasOwnCreateUpdate;
056    }
057    private OrchestrationObjectField inlineField;
058
059    public OrchestrationObjectField getInlineField() {
060        return inlineField;
061    }
062
063    public void setInlineField(OrchestrationObjectField inlineField) {
064        this.inlineField = inlineField;
065    }
066    private String orchestrationPackagePath;
067
068    public String getOrchestrationPackagePath() {
069        return orchestrationPackagePath;
070    }
071
072    public void setOrchestrationPackagePath(String packagePath) {
073        this.orchestrationPackagePath = packagePath;
074    }
075    private String infoPackagePath;
076
077    public String getInfoPackagePath() {
078        return infoPackagePath;
079    }
080
081    public void setInfoPackagePath(String infoPackagePath) {
082        this.infoPackagePath = infoPackagePath;
083    }
084
085    public String getJavaClassInfoName() {
086        return name.substring(0, 1).toUpperCase() + name.substring(1);
087    }
088
089    public String getFullyQualifiedJavaClassInfoName() {
090        return this.infoPackagePath + "." + this.getJavaClassInfoName();
091    }
092
093    public String getJavaClassHelperName() {
094        if (inlineField == null) {
095            return getJavaClassInfoName() + "Helper";
096        }
097        return inlineField.getParent().getJavaClassInfoName()
098                + getJavaClassInfoName() + "Helper";
099    }
100
101    public String getFullyQualifiedJavaClassHelperName() {
102        return orchestrationPackagePath + "." + getJavaClassHelperName();
103    }
104
105    public String getJavaClassConstantsName() {
106        if (inlineField == null) {
107            return getJavaClassInfoName() + "Constants";
108        }
109        return inlineField.getParent().getJavaClassInfoName()
110                + getJavaClassInfoName() + "Constants";
111    }
112
113    public String getFullyQualifiedJavaClassConstantsName() {
114        return orchestrationPackagePath + "." + getJavaClassConstantsName();
115    }
116
117    public String getJavaClassMetadataName() {
118        if (inlineField == null) {
119            return getJavaClassInfoName() + "Metadata";
120        }
121        return inlineField.getParent().getJavaClassInfoName()
122                + getJavaClassInfoName() + "Metadata";
123    }
124
125    public String getFullyQualifiedJavaClassMetadataName() {
126        return orchestrationPackagePath + "." + getJavaClassMetadataName();
127    }
128
129    public String getJavaClassAssemblerName() {
130        if (inlineField == null) {
131            return getJavaClassInfoName() + "Assembler";
132        }
133        return inlineField.getParent().getJavaClassInfoName()
134                + getJavaClassInfoName() + "Assembler";
135    }
136
137    public String getFullyQualifiedJavaClassAssemblerName() {
138        return orchestrationPackagePath + ".assembler." + getJavaClassAssemblerName();
139    }
140    private Source source;
141
142    public Source getSource() {
143        return source;
144    }
145
146    public void setSource(Source source) {
147        this.source = source;
148    }
149}