001 package org.kuali.common.impex.model;
002
003 import javax.xml.bind.annotation.XmlAccessType;
004 import javax.xml.bind.annotation.XmlAccessorType;
005 import javax.xml.bind.annotation.XmlAttribute;
006
007 /**
008 * This interface provides an implementation-independent API to access database column model information
009 */
010 @XmlAccessorType(XmlAccessType.PROPERTY)
011 public class Column implements NamedElement {
012
013 public static final Boolean DEFAULT_NULLABLE_VALUE = true;
014 public static final Boolean DEFAULT_PRIMARY_KEY_VALUE = false;
015
016 String name;
017 DataType type;
018 DataTypeSize size;
019 String defaultValue;
020 String description;
021 Boolean primaryKey = DEFAULT_PRIMARY_KEY_VALUE;
022 Boolean nullable = DEFAULT_NULLABLE_VALUE;
023
024 /**
025 * This is a copy constructor. It must create a perfect, deep, copy of this object
026 */
027 public Column(Column column) {
028 this.name = column.getName();
029 this.type = column.getType();
030 this.size = new DataTypeSize(column.getSize());
031 this.defaultValue = column.getDefaultValue();
032 this.description = column.getDescription();
033 this.primaryKey = column.isPrimaryKey();
034 this.nullable = column.isNullable();
035 }
036
037 public Column() {
038 this(null, null);
039 }
040
041 /**
042 * Create a new instance of a Column
043 *
044 * All values are initialized, with a special note that nullable is initially set to true
045 */
046 public Column(String name, DataType dataType) {
047 this.name = name;
048 this.type = dataType;
049 }
050
051 @XmlAttribute
052 public DataType getType() {
053 return type;
054 }
055
056 @Override
057 @XmlAttribute
058 public String getName() {
059 return name;
060 }
061
062 @XmlAttribute
063 public Boolean isPrimaryKey() {
064 return primaryKey;
065 }
066
067 @XmlAttribute
068 public Boolean isNullable() {
069 return nullable;
070 }
071
072 @XmlAttribute
073 public String getDescription() {
074 return description;
075 }
076
077 public void setPrimaryKey(Boolean primaryKey) {
078 this.primaryKey = primaryKey;
079 }
080
081 public DataTypeSize getSize() {
082 return size;
083 }
084
085 public void setSize(DataTypeSize typeSize) {
086 this.size = typeSize;
087 }
088
089 public String getDefaultValue() {
090 return defaultValue;
091 }
092
093 public void setDefaultValue(String defaultValue) {
094 this.defaultValue = defaultValue;
095 }
096
097 public void setNullable(Boolean nullable) {
098 this.nullable = nullable;
099 }
100
101 public void setDescription(String description) {
102 this.description = description;
103 }
104
105 public void setType(DataType columnDataType) {
106 this.type = columnDataType;
107 }
108
109 public void setName(String name) {
110 this.name = name;
111 }
112 }