1 21 package oracle.toplink.essentials.tools.schemaframework; 23 24 import java.util.*; 25 26 34 public class TableCreator { 35 protected Vector tableDefinitions; 36 protected String name; 37 38 public TableCreator() { 39 this(new Vector()); 40 } 41 42 public TableCreator(Vector tableDefinitions) { 43 super(); 44 this.tableDefinitions = tableDefinitions; 45 } 46 47 50 public void addTableDefinition(TableDefinition tableDefinition) { 51 tableDefinitions.addElement(tableDefinition); 52 } 53 54 57 public void addTableDefinitions(Collection tableDefs) { 58 tableDefinitions.addAll(tableDefs); 59 } 60 61 62 65 public void createConstraints(oracle.toplink.essentials.sessions.DatabaseSession session) { 66 createConstraints(session, new SchemaManager(session)); 68 } 69 70 73 public void createConstraints(oracle.toplink.essentials.sessions.DatabaseSession session, SchemaManager schemaManager) { 74 for (Enumeration enumtr = getTableDefinitions().elements(); enumtr.hasMoreElements();) { 75 schemaManager.buildFieldTypes((TableDefinition)enumtr.nextElement()); 76 } 77 78 for (Enumeration enumtr = getTableDefinitions().elements(); enumtr.hasMoreElements();) { 79 schemaManager.createConstraints((TableDefinition)enumtr.nextElement()); 80 } 81 } 82 83 87 public void createTables(oracle.toplink.essentials.sessions.DatabaseSession session) { 88 createTables(session, new SchemaManager(session)); 90 } 91 92 96 public void createTables(oracle.toplink.essentials.sessions.DatabaseSession session, SchemaManager schemaManager) { 97 for (Enumeration enumtr = getTableDefinitions().elements(); enumtr.hasMoreElements();) { 98 schemaManager.buildFieldTypes((TableDefinition)enumtr.nextElement()); 99 } 100 101 String sequenceTableName = getSequenceTableName(session); 102 for (Enumeration enumtr = getTableDefinitions().elements(); enumtr.hasMoreElements();) { 103 TableDefinition table = (TableDefinition)enumtr.nextElement(); 105 if (!table.getName().equals(sequenceTableName)) { 106 schemaManager.createObject(table); 107 } 108 } 109 110 for (Enumeration enumtr = getTableDefinitions().elements(); enumtr.hasMoreElements();) { 111 schemaManager.createConstraints((TableDefinition)enumtr.nextElement()); 112 } 113 114 schemaManager.createSequences(); 115 } 116 117 120 public void dropConstraints(oracle.toplink.essentials.sessions.DatabaseSession session) { 121 dropConstraints(session, new SchemaManager(session)); 123 } 124 125 128 public void dropConstraints(oracle.toplink.essentials.sessions.DatabaseSession session, SchemaManager schemaManager) { 129 for (Enumeration enumtr = getTableDefinitions().elements(); enumtr.hasMoreElements();) { 130 schemaManager.buildFieldTypes((TableDefinition)enumtr.nextElement()); 131 } 132 133 for (Enumeration enumtr = getTableDefinitions().elements(); enumtr.hasMoreElements();) { 134 try { 135 schemaManager.dropConstraints((TableDefinition)enumtr.nextElement()); 136 } catch (oracle.toplink.essentials.exceptions.DatabaseException dbE) { 137 } 139 } 140 } 141 142 145 public void dropTables(oracle.toplink.essentials.sessions.DatabaseSession session) { 146 dropTables(session, new SchemaManager(session)); 148 } 149 150 153 public void dropTables(oracle.toplink.essentials.sessions.DatabaseSession session, SchemaManager schemaManager) { 154 for (Enumeration enumtr = getTableDefinitions().elements(); enumtr.hasMoreElements();) { 155 schemaManager.buildFieldTypes((TableDefinition)enumtr.nextElement()); 156 } 157 158 for (Enumeration enumtr = getTableDefinitions().elements(); enumtr.hasMoreElements();) { 159 try { 160 schemaManager.dropConstraints((TableDefinition)enumtr.nextElement()); 161 } catch (oracle.toplink.essentials.exceptions.DatabaseException dbE) { 162 } 164 } 165 166 String sequenceTableName = getSequenceTableName(session); 167 for (Enumeration enumtr = getTableDefinitions().elements(); enumtr.hasMoreElements();) { 168 TableDefinition table = (TableDefinition)enumtr.nextElement(); 170 if (!table.getName().equals(sequenceTableName)) { 171 schemaManager.dropObject(table); 172 } 173 } 174 } 175 176 179 public String getName() { 180 return name; 181 } 182 183 186 public Vector getTableDefinitions() { 187 return tableDefinitions; 188 } 189 190 194 public void replaceTables(oracle.toplink.essentials.sessions.DatabaseSession session) { 195 replaceTables(session, new SchemaManager(session)); 196 } 197 198 202 public void replaceTables(oracle.toplink.essentials.sessions.DatabaseSession session, SchemaManager schemaManager) { 203 replaceTablesAndConstraints(schemaManager, session); 204 205 schemaManager.createSequences(); 206 207 } 208 209 213 public void replaceTables(oracle.toplink.essentials.sessions.DatabaseSession session, 214 SchemaManager schemaManager, boolean keepSequenceTable) { 215 replaceTablesAndConstraints(schemaManager, session); 216 217 schemaManager.createOrReplaceSequences(keepSequenceTable, false); 218 } 219 220 221 private void replaceTablesAndConstraints(final SchemaManager schemaManager, 222 final oracle.toplink.essentials.sessions.DatabaseSession session) { 223 for (Enumeration enumtr = getTableDefinitions().elements(); enumtr.hasMoreElements();) { 224 schemaManager.buildFieldTypes((TableDefinition)enumtr.nextElement()); 225 } 226 227 boolean shouldLogExceptionStackTrace = session.getSessionLog().shouldLogExceptionStackTrace(); 229 if (shouldLogExceptionStackTrace) { 230 session.getSessionLog().setShouldLogExceptionStackTrace(false); 231 } 232 try { 233 for (Enumeration enumtr = getTableDefinitions().elements(); enumtr.hasMoreElements();) { 234 try { 235 schemaManager.dropConstraints((TableDefinition)enumtr.nextElement()); 236 } catch (oracle.toplink.essentials.exceptions.DatabaseException dbE) { 237 } 239 } 240 } finally { 241 if (shouldLogExceptionStackTrace) { 242 session.getSessionLog().setShouldLogExceptionStackTrace(true); 243 } 244 } 245 246 String sequenceTableName = getSequenceTableName(session); 247 for (Enumeration enumtr = getTableDefinitions().elements(); enumtr.hasMoreElements();) { 248 TableDefinition table = (TableDefinition)enumtr.nextElement(); 250 if (!table.getName().equals(sequenceTableName)) { 251 schemaManager.replaceObject(table); 252 } 253 } 254 255 for (Enumeration enumtr = getTableDefinitions().elements(); enumtr.hasMoreElements();) { 256 schemaManager.createConstraints((TableDefinition)enumtr.nextElement()); 257 } 258 } 259 260 263 public void setName(String name) { 264 this.name = name; 265 } 266 267 270 public void setTableDefinitions(Vector tableDefinitions) { 271 this.tableDefinitions = tableDefinitions; 272 } 273 274 protected String getSequenceTableName(oracle.toplink.essentials.sessions.Session session) { 275 String sequenceTableName = null; 276 if (session.getProject().usesSequencing()) { 277 oracle.toplink.essentials.sequencing.Sequence sequence = session.getLogin().getDefaultSequence(); 278 if (sequence instanceof oracle.toplink.essentials.sequencing.TableSequence) { 279 sequenceTableName = ((oracle.toplink.essentials.sequencing.TableSequence)sequence).getTableName(); 280 } 281 } 282 return sequenceTableName; 283 } 284 } 285 | Popular Tags |