4 package jp.sourceforge.ea2ddl.ddl.model;
\r
6 import java.io.Serializable;
\r
7 import java.util.regex.Matcher;
\r
8 import java.util.regex.Pattern;
\r
10 import jp.sourceforge.ea2ddl.common.config.Config;
\r
11 import jp.sourceforge.ea2ddl.dao.exentity.TAttribute;
\r
12 import jp.sourceforge.ea2ddl.dao.exentity.TAttributetag;
\r
18 public class ColumnModel implements Serializable {
\r
19 private static final long serialVersionUID = 1L;
\r
21 private String _name;
\r
22 private String _alias;
\r
23 private String _note;
\r
24 private String _type;
\r
25 private Integer _precision;
\r
26 private Integer _scale;
\r
27 private boolean nullable;
\r
28 private boolean autoIncrement;
\r
30 public static ColumnModel create(TAttribute columnDef, Config dictionary) {
\r
31 ColumnModel column = new ColumnModel();
\r
32 column.setName(columnDef.getName());
\r
33 column.setAlias(columnDef.getStyle());
\r
34 column.setType(columnDef, dictionary);
\r
35 column.setNullable(Integer.valueOf(0).equals(
\r
36 columnDef.getAllowduplicates()));
\r
37 column.setAutoIncrement(columnDef);
\r
38 column.setNote(columnDef.getNotes());
\r
42 private void setType(TAttribute columnDef, Config dictionary) {
\r
43 String domain = dictionary.getProperty(columnDef.getType());
\r
44 if (domain != null) {
\r
45 Pattern p = Pattern.compile(
\r
46 "^(\\w+)\\s*(\\((\\d+)(,\\s*(\\d+))?\\))?.*",
\r
47 Pattern.CASE_INSENSITIVE);
\r
48 Matcher m = p.matcher(domain);
\r
50 setType(m.group(1));
\r
51 if (m.group(3) != null) {
\r
52 Integer len = Integer.valueOf(m.group(3));
\r
55 if (m.group(5) != null) {
\r
56 setScale(Integer.valueOf(m.group(5)));
\r
61 setType(columnDef.getType());
\r
62 if (columnDef.getLength() != null) {
\r
63 setPrecision(columnDef.getLength());
\r
64 } else if (columnDef.getPrecision() != null) {
\r
65 setPrecision(columnDef.getScale());
\r
67 setScale(columnDef.getScale());
\r
70 public boolean isNullable() {
\r
74 public void setNullable(boolean nullable) {
\r
75 this.nullable = nullable;
\r
78 public boolean isAutoIncrement() {
\r
79 return autoIncrement;
\r
82 public void setAutoIncrement(boolean autoIncrement) {
\r
83 this.autoIncrement = autoIncrement;
\r
86 public void setAutoIncrement(TAttribute columnDef) {
\r
87 TAttributetag tag = columnDef.getTags().get("AutoNum");
\r
88 if (tag != null && "True".equals(tag.getValue())) {
\r
89 this.autoIncrement = true;
\r
91 this.autoIncrement = false;
\r
95 private String defaultValue;
\r
97 public String getName() {
\r
101 public void setName(String name) {
\r
105 public String getAlias() {
\r
109 public void setAlias(String alias) {
\r
113 public String getNote() {
\r
117 public void setNote(String note) {
\r
121 public String getType() {
\r
125 public void setType(String type) {
\r
129 public Integer getPrecision() {
\r
133 public void setPrecision(Integer precision) {
\r
134 _precision = precision;
\r
137 public Integer getScale() {
\r
141 public void setScale(Integer scale) {
\r
145 public String getDefaultValue() {
\r
146 return defaultValue;
\r
149 public void setDefaultValue(String defaultValue) {
\r
150 this.defaultValue = defaultValue;
\r
153 public String getDefinition() {
\r
154 StringBuilder b = new StringBuilder();
\r
156 if (_precision != null) {
\r
157 b.append("(").append(_precision);
\r
158 if (_scale != null) {
\r
159 b.append(",").append(_scale);
\r
163 if (!isNullable()) {
\r
164 b.append(" NOT NULL");
\r
166 if (isAutoIncrement()) {
\r
167 b.append(" AUTO_INCREMENT");
\r
169 return b.toString();
\r