/** * PUBLIC: * Performs a sufficiently deep clone. * Use to quickly setup standard policies on multiple descriptors. */ public Object clone() { HistoryPolicy clone = null; try { clone = (HistoryPolicy)super.clone(); } catch (CloneNotSupportedException ignore) { } if (startFields != null) { clone.setStartFields(new ArrayList(startFields.size())); for (DatabaseField field : startFields) { clone.getStartFields().add(field.clone()); } } if (endFields != null) { clone.setEndFields(new ArrayList(endFields.size())); for (DatabaseField field : endFields) { clone.getEndFields().add(field.clone()); } } if (historicalTables != null) { clone.setHistoricalTables(new ArrayList(historicalTables)); } return clone; }
/** * PUBLIC: * Performs a sufficiently deep clone. * Use to quickly setup standard policies on multiple descriptors. */ public Object clone() { HistoryPolicy clone = null; try { clone = (HistoryPolicy)super.clone(); } catch (CloneNotSupportedException ignore) { } if (startFields != null) { clone.setStartFields(org.eclipse.persistence.internal.helper.NonSynchronizedVector.newInstance(startFields.size())); for (Enumeration enumtr = startFields.elements(); enumtr.hasMoreElements();) { clone.getStartFields().addElement(((DatabaseField)enumtr.nextElement()).clone()); } } if (endFields != null) { clone.setEndFields(org.eclipse.persistence.internal.helper.NonSynchronizedVector.newInstance(endFields.size())); for (Enumeration enumtr = endFields.elements(); enumtr.hasMoreElements();) { clone.getEndFields().addElement(((DatabaseField)enumtr.nextElement()).clone()); } } if (historicalTables != null) { clone.setHistoricalTables((Vector)historicalTables.clone()); } return clone; }
/** * PUBLIC: * Performs a sufficiently deep clone. * Use to quickly setup standard policies on multiple descriptors. */ public Object clone() { HistoryPolicy clone = null; try { clone = (HistoryPolicy)super.clone(); } catch (CloneNotSupportedException ignore) { } if (startFields != null) { clone.setStartFields(new ArrayList(startFields.size())); for (DatabaseField field : startFields) { clone.getStartFields().add(field.clone()); } } if (endFields != null) { clone.setEndFields(new ArrayList(endFields.size())); for (DatabaseField field : endFields) { clone.getEndFields().add(field.clone()); } } if (historicalTables != null) { clone.setHistoricalTables(new ArrayList(historicalTables)); } return clone; }
method.addLine(policyName + ".addHistoryTableName(\"" + sourceName + "\", \"" + historyName + "\");"); for (Enumeration enumtr = policy.getStartFields().elements(); enumtr.hasMoreElements();) { DatabaseField field = (DatabaseField)enumtr.nextElement(); method.addLine(policyName + ".addStartFieldName(\"" + field.getQualifiedName() + "\");");
table.setTableQualifier(mirrored.getTableQualifier()); if (getStartFields().size() < (i + 1)) { DatabaseField startField = getStart(0).clone(); startField.setTable(table); getStartFields().add(startField); } else { DatabaseField startField = getStart(i); List<DatabaseField> sortedStartFields = new ArrayList(unsortedTables.size()); List<DatabaseField> sortedEndFields = new ArrayList(unsortedTables.size()); boolean universalStartField = ((getStartFields().size() == 1) && (!(getStartFields().get(0)).hasTableName())); boolean universalEndField = ((getEndFields().size() == 1) && (!(getEndFields().get(0)).hasTableName())); DatabaseTable descriptorTable = null; sortedStartFields.add(historyField); } else { for (DatabaseField field : getStartFields()) { if (field.getTable().equals(historicalTable)) { sortedStartFields.add(field); setStartFields(Helper.concatenateUniqueLists(parentDescriptor.getHistoryPolicy().getStartFields(), getStartFields())); setEndFields(Helper.concatenateUniqueLists(parentDescriptor.getHistoryPolicy().getEndFields(), getEndFields()));
table.setTableQualifier(mirrored.getTableQualifier()); if (getStartFields().size() < (i + 1)) { DatabaseField startField = (DatabaseField)getStart(0).clone(); startField.setTable(table); getStartFields().addElement(startField); } else { DatabaseField startField = getStart(i); Vector sortedStartFields = org.eclipse.persistence.internal.helper.NonSynchronizedVector.newInstance(unsortedTables.size()); Vector sortedEndFields = org.eclipse.persistence.internal.helper.NonSynchronizedVector.newInstance(unsortedTables.size()); boolean universalStartField = ((getStartFields().size() == 1) && (((DatabaseField)getStartFields().get(0)).getTableName().equals(""))); boolean universalEndField = ((getEndFields().size() == 1) && (((DatabaseField)getEndFields().get(0)).getTableName().equals(""))); DatabaseTable descriptorTable = null; sortedStartFields.add(historyField); } else { for (Enumeration enumtr = getStartFields().elements(); enumtr.hasMoreElements();) { historyField = (DatabaseField)enumtr.nextElement(); setStartFields(Helper.concatenateUniqueVectors(parentDescriptor.getHistoryPolicy().getStartFields(), getStartFields())); setEndFields(Helper.concatenateUniqueVectors(parentDescriptor.getHistoryPolicy().getEndFields(), getEndFields()));
table.setTableQualifier(mirrored.getTableQualifier()); if (getStartFields().size() < (i + 1)) { DatabaseField startField = getStart(0).clone(); startField.setTable(table); getStartFields().add(startField); } else { DatabaseField startField = getStart(i); List<DatabaseField> sortedStartFields = new ArrayList(unsortedTables.size()); List<DatabaseField> sortedEndFields = new ArrayList(unsortedTables.size()); boolean universalStartField = ((getStartFields().size() == 1) && (!(getStartFields().get(0)).hasTableName())); boolean universalEndField = ((getEndFields().size() == 1) && (!(getEndFields().get(0)).hasTableName())); DatabaseTable descriptorTable = null; sortedStartFields.add(historyField); } else { for (DatabaseField field : getStartFields()) { if (field.getTable().equals(historicalTable)) { sortedStartFields.add(field); setStartFields(Helper.concatenateUniqueLists(parentDescriptor.getHistoryPolicy().getStartFields(), getStartFields())); setEndFields(Helper.concatenateUniqueLists(parentDescriptor.getHistoryPolicy().getEndFields(), getEndFields()));
protected void addHistoryPolicyLines(NonreflectiveMethodDefinition method, HistoryPolicy policy, String policyName) { method.addLine(""); method.addLine("// History Policy"); method.addLine("HistoryPolicy " + policyName + " = new HistoryPolicy();"); for (DatabaseTable table : policy.getHistoricalTables()) { String sourceName = null; if (table.getTableQualifier().equals("")) { sourceName = table.getName(); } else { sourceName = table.getTableQualifier() + "." + table.getName(); } String historyName = table.getQualifiedName(); method.addLine(policyName + ".addHistoryTableName(\"" + sourceName + "\", \"" + historyName + "\");"); } for (DatabaseField field : policy.getStartFields()) { method.addLine(policyName + ".addStartFieldName(\"" + field.getQualifiedName() + "\");"); // Field classifications don't seem to be supported in workbench integration. //method.addLine(policyName + ".setStartFieldType(\"" + field.getQualifiedName() + "\", " + field.getType().getName() + ".class);"); } for (DatabaseField field : policy.getEndFields()) { method.addLine(policyName + ".addEndFieldName(\"" + field.getQualifiedName() + "\");"); //method.addLine(policyName + ".setEndFieldType(\"" + field.getQualifiedName() + "\", " + field.getType().getName() + ".class);"); } method.addLine(policyName + ".setShouldHandleWrites(" + (policy.shouldHandleWrites() ? "true" : "false") + ");"); if (policy.shouldUseLocalTime()) { method.addLine(policyName + ".useLocalTime();"); } else { method.addLine(policyName + ".useDatabaseTime();"); } }
protected void addHistoryPolicyLines(NonreflectiveMethodDefinition method, HistoryPolicy policy, String policyName) { method.addLine(""); method.addLine("// History Policy"); method.addLine("HistoryPolicy " + policyName + " = new HistoryPolicy();"); for (DatabaseTable table : policy.getHistoricalTables()) { String sourceName = null; if (table.getTableQualifier().equals("")) { sourceName = table.getName(); } else { sourceName = table.getTableQualifier() + "." + table.getName(); } String historyName = table.getQualifiedName(); method.addLine(policyName + ".addHistoryTableName(\"" + sourceName + "\", \"" + historyName + "\");"); } for (DatabaseField field : policy.getStartFields()) { method.addLine(policyName + ".addStartFieldName(\"" + field.getQualifiedName() + "\");"); // Field classifications don't seem to be supported in workbench integration. //method.addLine(policyName + ".setStartFieldType(\"" + field.getQualifiedName() + "\", " + field.getType().getName() + ".class);"); } for (DatabaseField field : policy.getEndFields()) { method.addLine(policyName + ".addEndFieldName(\"" + field.getQualifiedName() + "\");"); //method.addLine(policyName + ".setEndFieldType(\"" + field.getQualifiedName() + "\", " + field.getType().getName() + ".class);"); } method.addLine(policyName + ".setShouldHandleWrites(" + (policy.shouldHandleWrites() ? "true" : "false") + ");"); if (policy.shouldUseLocalTime()) { method.addLine(policyName + ".useLocalTime();"); } else { method.addLine(policyName + ".useDatabaseTime();"); } }