1 21 package oracle.toplink.essentials.tools.schemaframework; 23 24 import java.util.Vector ; 25 import java.io.*; 26 import java.math.BigDecimal ; 27 import oracle.toplink.essentials.internal.sessions.AbstractSession; 28 import oracle.toplink.essentials.exceptions.*; 29 import oracle.toplink.essentials.sequencing.TableSequence; 30 31 37 public class TableSequenceDefinition extends SequenceDefinition { 38 39 40 public String sequenceTableName; 41 42 43 public String sequenceNameFieldName; 44 45 46 public String sequenceCounterFieldName; 47 48 public TableSequenceDefinition(String name, String sequenceTableName, String sequenceNameFieldName, String sequenceCounterFieldName) { 49 super(name); 50 setSequenceTableName(sequenceTableName); 51 setSequenceCounterFieldName(sequenceCounterFieldName); 52 setSequenceNameFieldName(sequenceNameFieldName); 53 } 54 55 public TableSequenceDefinition(TableSequence sequence) { 56 this(sequence.getName(), sequence.getTableName(), sequence.getNameFieldName(), sequence.getCounterFieldName()); 57 } 58 59 public TableSequenceDefinition(String name, TableSequence sequence) { 60 this(name, sequence.getTableName(), sequence.getNameFieldName(), sequence.getCounterFieldName()); 61 } 62 63 68 public Writer buildCreationWriter(AbstractSession session, Writer writer) throws ValidationException { 69 try { 70 writer.write("INSERT INTO "); 71 writer.write(getSequenceTableName()); 72 writer.write("(" + getSequenceNameFieldName()); 73 writer.write(", " + getSequenceCounterFieldName()); 74 writer.write(") values ("); 75 writer.write("'" + getName() + "', 0)"); 76 } catch (IOException ioException) { 77 throw ValidationException.fileError(ioException); 78 } 79 return writer; 80 } 81 82 86 public Writer buildDeletionWriter(AbstractSession session, Writer writer) throws ValidationException { 87 try { 88 writer.write("DELETE FROM "); 89 writer.write(getSequenceTableName()); 90 writer.write(" WHERE " + getSequenceNameFieldName()); 91 writer.write(" = '" + getName() + "'"); 92 } catch (IOException ioException) { 93 throw ValidationException.fileError(ioException); 94 } 95 return writer; 96 } 97 98 103 public boolean checkIfExist(AbstractSession session) throws DatabaseException { 104 Vector results = session.executeSelectingCall(new oracle.toplink.essentials.queryframework.SQLCall("SELECT * FROM " + getSequenceTableName() + " WHERE " + getSequenceNameFieldName() + " = '" + getName() + "'")); 105 return !results.isEmpty(); 106 } 107 108 111 public void setSequenceTableName(String sequenceTableName) { 112 this.sequenceTableName = sequenceTableName; 113 } 114 115 118 public String getSequenceTableName() { 119 return sequenceTableName; 120 } 121 122 125 public void setSequenceCounterFieldName(String sequenceCounterFieldName) { 126 this.sequenceCounterFieldName = sequenceCounterFieldName; 127 } 128 129 132 public String getSequenceCounterFieldName() { 133 return sequenceCounterFieldName; 134 } 135 136 139 public void setSequenceNameFieldName(String sequenceNameFieldName) { 140 this.sequenceNameFieldName = sequenceNameFieldName; 141 } 142 143 146 public String getSequenceNameFieldName() { 147 return sequenceNameFieldName; 148 } 149 150 154 public TableDefinition buildTableDefinition() { 155 TableDefinition definition = new TableDefinition(); 156 definition.setName(getSequenceTableName()); 157 definition.addPrimaryKeyField(getSequenceNameFieldName(), String .class, 50); 158 definition.addField(getSequenceCounterFieldName(), BigDecimal .class); 159 return definition; 160 } 161 } 162 | Popular Tags |