1 package org.kuali.common.impex.model.util;
2
3 import org.kuali.common.impex.model.Column;
4 import org.kuali.common.impex.model.Index;
5 import org.kuali.common.impex.model.Schema;
6 import org.kuali.common.impex.model.Table;
7 import org.kuali.common.impex.model.DataTypeSize;
8 import org.kuali.common.util.CollectionUtils;
9 import org.kuali.common.util.nullify.Nullifier;
10 import org.springframework.util.Assert;
11
12
13
14
15 public class SchemaNullifier implements Nullifier {
16
17 Schema schema;
18
19 public SchemaNullifier() {
20 this(null);
21 }
22
23 public SchemaNullifier(Schema schema) {
24 super();
25 this.schema = schema;
26 }
27
28 @Override
29 public void nullify() {
30 Assert.notNull(schema, "schema is null");
31 for (Table table : CollectionUtils.toEmptyList(schema.getTables())) {
32 for (Column column : CollectionUtils.toEmptyList(table.getColumns())) {
33 nullify(column);
34 }
35 for (Index index : CollectionUtils.toEmptyList(table.getIndices())) {
36 nullify(index);
37 }
38 }
39 }
40
41 protected void nullify(Index index) {
42 if (Index.DEFAULT_UNIQUE_VALUE.equals(index.isUnique())) {
43 index.setUnique(null);
44 }
45 }
46
47 protected void nullify(Column column) {
48 if (Column.DEFAULT_NULLABLE_VALUE.equals(column.isNullable())) {
49 column.setNullable(null);
50 }
51
52 if (Column.DEFAULT_PRIMARY_KEY_VALUE.equals(column.isPrimaryKey())) {
53 column.setPrimaryKey(null);
54 }
55
56 DataTypeSize typeSize = column.getSize();
57 if (typeSize != null && DataTypeSize.DEFAULT_SCALE_SET.equals(typeSize.isScaleSet())) {
58 typeSize.setScaleSet(null);
59 }
60 }
61
62 public Schema getSchema() {
63 return schema;
64 }
65
66 public void setSchema(Schema schema) {
67 this.schema = schema;
68 }
69
70 }