KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > daffodilwoods > daffodildb > server > serversystem > deeprecordcopy > TableInformation


1 package com.daffodilwoods.daffodildb.server.serversystem.deeprecordcopy;
2
3 import java.util.*;
4
5 import com.daffodilwoods.daffodildb.server.datadictionarysystem.*;
6 import com.daffodilwoods.database.general.*;
7 import com.daffodilwoods.database.resource.*;
8 public class TableInformation {
9
10     QualifiedIdentifier tableName;
11     int[] uniqueColumns,referencedColumns,primaryColumns,referencingColumns;
12     ArrayList columnInformations = new ArrayList();
13     _ColumnCharacteristics columnCharacteristics;
14     Object JavaDoc[] parentRecord ;
15     int[] referencingColumnsForConstraint;
16     int[] referencedParentColumns;
17     _ReferentialConstraint[] referencingconstraints;
18     TableCopy tablecopy;
19     Vector referencingInfo = new Vector();
20
21
22
23     public TableInformation(TableCopy tableCopy,_ColumnCharacteristics columnCharacteristics0) throws DException {
24         tableName = tableCopy.tablename;
25         columnCharacteristics = columnCharacteristics0;
26         tablecopy = tableCopy;
27
28         for (int i = 0; i < columnCharacteristics.getColumnCount(); i++) {
29             columnInformations.add(i,new ColumnInfo());
30         }
31     }
32
33     public void setUniqueColumns(int[] col){
34         uniqueColumns = col;
35         if(uniqueColumns != null)
36             for (int i = 0; i < col.length; i++) {
37                ColumnInfo cf = (ColumnInfo)columnInformations.get(col[i]);
38                cf.isUnique = true;
39             }
40     }
41
42     public int[] getUniqueColumns(){
43            return uniqueColumns;
44        }
45
46     public void setReferencingColumns(int[] col){
47         referencingColumns = col;
48         if(referencingColumns != null)
49             for (int i = 0; i < col.length; i++) {
50                ColumnInfo cf = (ColumnInfo)columnInformations.get(col[i]);
51                cf.isReferencing = true;
52             }
53     }
54
55     public void setReferencedColumns(int[] col){
56         referencedColumns = col;
57         if(referencedColumns != null)
58             for (int i = 0; i < col.length; i++) {
59                ColumnInfo cf = (ColumnInfo)columnInformations.get(col[i]);
60                cf.isReferenced = true;
61             }
62     }
63
64
65     public void setPrimaryColumns(int[] col){
66         primaryColumns = col;
67         for (int i = 0; i < col.length; i++) {
68            ColumnInfo cf = (ColumnInfo)columnInformations.get(col[i]);
69            cf.isPrimary = true;
70         }
71
72     }
73
74     public void setColumnTypes() throws DException{
75         for (int i = 0; i < columnInformations.size(); i++) {
76             ((ColumnInfo)columnInformations.get(i)).dataType = columnCharacteristics.getColumnType(i);
77         }
78     }
79
80
81
82
83     public Object JavaDoc[] createCopyOfRecord(Object JavaDoc[] oldRecord,MappingHandler mappinghandler) throws DException{
84         Object JavaDoc[] newRecord = new Object JavaDoc[oldRecord.length];
85         for (int i = 5; i < oldRecord.length; i++) {
86             int columnCode = getColumnCode(i);
87
88             switch(columnCode){
89             case 1:
90                   if( isPrimaryOrUnique(i) && !((ColumnCharacteristics)columnCharacteristics).isAutoIncrement(i) )
91                     throw new DException("DSE1305",null);
92                   newRecord[i] = new Integer JavaDoc(((Integer JavaDoc)oldRecord[i]).intValue()+1);
93                 break;
94             case 2:
95                 newRecord[i] = null;
96                 break;
97             case 3:
98                 newRecord[i] = oldRecord[i];
99                 break;
100             case 4:
101                 newRecord[i] = ((String JavaDoc)oldRecord[i]).concat("copy") ;
102                 break;
103             case 5:
104                 newRecord[i] = getParentColumnValue(i,mappinghandler,oldRecord);
105                 break;
106             }
107
108         }
109 return newRecord;
110     }
111
112     public int getColumnCode(int columnIndex) throws DException{
113         return ((ColumnInfo)columnInformations.get(columnIndex)).getColumnCode();
114     }
115
116     public boolean isPrimaryOrUnique( int columnIndex ) throws DException {
117       boolean toRet = ( ((ColumnInfo)columnInformations.get(columnIndex)).isPrimary || ((ColumnInfo)columnInformations.get(columnIndex)).isUnique );
118       return toRet ;
119     }
120
121
122
123     public void setColumnCodeForReferencing() throws DException{
124         for (int i = 0; i < referencingColumns.length; i++) {
125             ColumnInfo ci = (ColumnInfo)columnInformations.get(referencingColumns[i]);
126             ci.setColumnCode(2);
127         }
128
129     }
130
131
132     public Object JavaDoc getParentColumnValue(int index,MappingHandler mappingHandler,Object JavaDoc[] oldRecord) throws DException{
133         Object JavaDoc value = null;
134
135         for (int i = 0; i < referencingInfo.size(); i++) {
136             ReferencedInfo referencedInfo = (ReferencedInfo)referencingInfo.get(i);
137             if(referencedInfo.referencingColumn == index){
138                 try{
139                     value = mappingHandler.getColumnValue(referencedInfo.referencedTable,referencedInfo.referencedColumn,oldRecord[index]);
140                 } catch( NullPointerException JavaDoc ne ){
141                     value = oldRecord[referencedInfo.referencingColumn];
142                 }
143              }
144         }
145         return value;
146
147     }
148
149
150     public boolean isReferencedPrimary(QualifiedIdentifier parentTable,int[] col) throws DException{
151         TableCopy parentCopy = tablecopy.getParent(parentTable);
152         ArrayList columnInformation = parentCopy.tableInf.columnInformations;
153         for (int i = 0; i < col.length; i++) {
154            ColumnInfo columnInfo = (ColumnInfo)columnInformation.get(col[i]);
155            if(!(columnInfo.isReferenced && columnInfo.isPrimary))
156             return false;
157         }
158          return true;
159     }
160
161
162
163
164     public boolean isReferencingPrimary() throws DException{
165         for (int i = 0; i < referencingColumnsForConstraint.length; i++) {
166              if(primaryColumns == null)
167                 return false;
168             if(referencingColumnsForConstraint[i] != primaryColumns[i]){
169                 return false;
170             }
171         }
172         return true;
173     }
174
175     public boolean isReferencingUnique() throws DException{
176         if(uniqueColumns == null)
177             return false;
178             if(referencingColumnsForConstraint.length!=uniqueColumns.length)
179                 return false;
180             for (int i = 0; i < referencingColumns.length; i++) {
181                 if(referencingColumnsForConstraint[i] != uniqueColumns[i]){
182                     return false;
183                 }
184             }
185             return true;
186         }
187
188
189     public String JavaDoc[] getPrimaryColumnNames() throws DException{
190         String JavaDoc[] primaryColumnNames = new String JavaDoc[primaryColumns.length];
191             for (int i = 0; i < primaryColumns.length; i++) {
192                 primaryColumnNames[i] = columnCharacteristics.getColumnName(primaryColumns[i]);
193             }
194             return primaryColumnNames;
195     }
196
197     public String JavaDoc[] getReferencingColumnNames(int[] columns) throws DException{
198             String JavaDoc[] columnNames = new String JavaDoc[columns.length];
199             for (int i = 0; i < columnNames.length; i++) {
200                 columnNames[i] = columnCharacteristics.getColumnName(columns[i]);
201             }
202             return columnNames;
203     }
204
205
206
207
208     public void setReferencingconstraints(_ReferentialConstraint[] referencingConstraints) throws DException{
209         referencingconstraints = referencingConstraints;
210         for (int i = 0; i < referencingconstraints.length; i++) {
211             QualifiedIdentifier referencedTable = referencingconstraints[i].getReferencedTable();
212             int[] referencedColumns = referencingconstraints[i].getReferencedColumns();
213             int[] referencingColumns = referencingconstraints[i].getReferencingColumns();
214             for (int j = 0; j < referencingColumns.length; j++) {
215                 ReferencedInfo referencedInfo = new ReferencedInfo(referencedTable,referencedColumns[j],referencingColumns[j]);
216                 referencingInfo.add(referencedInfo);
217             }
218         }
219
220     }
221 }
222
Popular Tags