/** * PUBLIC: * Use this method to generate stored procedures based on the dynamic SQL generated * for your mappings and descriptors. This should be used with caution as it maintenance * will be high. Stored procedures may be generated either directly on the database * or to a file. */ public void generateStoredProceduresAndAmendmentClass(Writer writer, String fullyQualifiedClassName) throws EclipseLinkException { String className = fullyQualifiedClassName.substring(fullyQualifiedClassName.lastIndexOf('.') + 1); String packageName = fullyQualifiedClassName.substring(0, fullyQualifiedClassName.lastIndexOf('.')); StoredProcedureGenerator storedProcedureGenerator = new StoredProcedureGenerator(this); storedProcedureGenerator.generateStoredProcedures(); storedProcedureGenerator.generateAmendmentClass(writer, packageName, className); }
public StoredProcedureGenerator(SchemaManager schemaMngr) { super(); this.schemaManager = schemaMngr; this.sequenceProcedures = new Hashtable(); this.storedProcedures = new Hashtable(); this.mappingStoredProcedures = new Hashtable(); this.buildIntToTypeConverterHash(); this.prefix = DEFAULT_PREFIX; this.verify(); }
/** * PUBLIC: * Use this method to generate stored procedures based on the dynamic SQL generated * for your mappings and descriptors. This should be used with caution as it maintenance * will be high. Stored procedures may be generated either directly on the database * or to a file. */ public void generateStoredProcedures() throws EclipseLinkException { new StoredProcedureGenerator(this).generateStoredProcedures(); }
boolean wasBinding = getSession().getLogin().shouldBindAllParameters(); getSession().getLogin().setShouldBindAllParameters(false); Map descriptors = getSession().getProject().getDescriptors(); Iterator iterator = descriptors.keySet().iterator(); ClassDescriptor desc; StoredProcedureDefinition definition; Vector definitionVector; this.generateSequenceStoredProcedures(getSession().getProject()); while (iterator.hasNext()) { desc = (ClassDescriptor)descriptors.get(iterator.next()); definition = this.generateInsertStoredProcedure(desc); definitionVector = new Vector(); definitionVector.addElement(definition); this.writeDefinition(definition); definition = this.generateUpdateStoredProcedure(desc); definitionVector.addElement(definition); this.writeDefinition(definition); definition = this.generateDeleteStoredProcedure(desc); definitionVector.addElement(definition); this.writeDefinition(definition); if (!getSession().getPlatform().isOracle()) { definition = this.generateReadStoredProcedure(desc); definitionVector.addElement(definition); this.writeDefinition(definition); definition = this.generateReadAllStoredProcedure(desc); definitionVector.addElement(definition); this.writeDefinition(definition);
/** * INTERNAL: Generates the mapping stored procedures for this descriptor. * currently only 1:1 and 1:M are supported */ protected Hashtable generateMappingStoredProcedures(ClassDescriptor descriptor) { Vector mappings = descriptor.getMappings(); Hashtable mappingSP = new Hashtable(); Hashtable mappingTable; for (Enumeration enumtr = mappings.elements(); enumtr.hasMoreElements();) { mappingTable = new Hashtable(); DatabaseMapping mapping = (DatabaseMapping)enumtr.nextElement(); if (mapping.isOneToManyMapping()) { if (!getSession().getPlatform().isOracle()) { //reads not supported in oracle mappingTable.put("1MREAD", generateOneToManyMappingReadProcedure((OneToManyMapping)mapping)); } if (mapping.isPrivateOwned()) { //generate delete all for 1:M query mappingTable.put("1MDALL", generateOneToManyMappingDeleteAllProcedure((OneToManyMapping)mapping)); } mappingSP.put(mapping.getAttributeName(), mappingTable); } } return mappingSP; }
Vector statementVector = new Vector(); query.checkPrepare(getSession(), rowForPrepare, true); callVector = ((CallQueryMechanism)query.getQueryMechanism()).getCalls(); if (callVector.isEmpty()) { while (enumtr.hasMoreElements()) { SQLCall call = (SQLCall)enumtr.nextElement(); statementVector.addElement(this.buildProcedureString(call)); Enumeration fieldsEnum = fieldNames.keys(); String prefixArgToken; if (getSession().getPlatform().isOracle()) { prefixArgToken = getSession().getPlatform().getStoredProcedureParameterPrefix(); } else { prefixArgToken = ""; dataRow = (AbstractRecord)fieldNames.get(fieldsEnum.nextElement()); dataType = (Number)dataRow.get("DATA_TYPE"); Class type = this.getFieldType(dataType); String typeName = (String)dataRow.get("TYPE_NAME"); if ((type != null) || (typeName == null) || (typeName.length() == 0)) {
/** * INTERNAL: Generates the insert stored procedure for this descriptor */ protected StoredProcedureDefinition generateInsertStoredProcedure(ClassDescriptor descriptor) { InsertObjectQuery insertQuery = new InsertObjectQuery(); insertQuery.setDescriptor(descriptor); insertQuery.setModifyRow(descriptor.getObjectBuilder().buildTemplateInsertRow(getSession())); return this.generateObjectStoredProcedure(insertQuery, descriptor.getFields(), "INS_"); }
/** * INTERNAL: Generates the read all stored procedure for this descriptor */ protected StoredProcedureDefinition generateReadAllStoredProcedure(ClassDescriptor descriptor) { ReadAllQuery readAllQuery = new ReadAllQuery(); readAllQuery.setDescriptor(descriptor); readAllQuery.setReferenceClass(descriptor.getJavaClass()); return generateObjectStoredProcedure(readAllQuery, descriptor.getPrimaryKeyFields(), "RALL_"); }
/** * INTERNAL: Generates the delete all stored procedure for this mapping */ protected StoredProcedureDefinition generateOneToManyMappingDeleteAllProcedure(OneToManyMapping mapping) { ClassDescriptor targetDescriptor = mapping.getReferenceDescriptor(); DeleteAllQuery deleteAllQuery = new DeleteAllQuery(); deleteAllQuery.setDescriptor(targetDescriptor); deleteAllQuery.setReferenceClass(targetDescriptor.getJavaClass()); deleteAllQuery.setSelectionCriteria(mapping.getSelectionCriteria()); return generateOneToManyMappingProcedures(mapping, deleteAllQuery, mapping.getTargetForeignKeyToSourceKeys(), "D_1M_"); }
boolean wasBinding = getSession().getLogin().shouldBindAllParameters(); getSession().getLogin().setShouldBindAllParameters(false); Map descriptors = getSession().getProject().getDescriptors(); Iterator iterator = descriptors.keySet().iterator(); ClassDescriptor desc; StoredProcedureDefinition definition; Vector definitionVector; this.generateSequenceStoredProcedures(getSession().getProject()); while (iterator.hasNext()) { desc = (ClassDescriptor)descriptors.get(iterator.next()); definition = this.generateInsertStoredProcedure(desc); definitionVector = new Vector(); definitionVector.addElement(definition); this.writeDefinition(definition); definition = this.generateUpdateStoredProcedure(desc); definitionVector.addElement(definition); this.writeDefinition(definition); definition = this.generateDeleteStoredProcedure(desc); definitionVector.addElement(definition); this.writeDefinition(definition); if (!getSession().getPlatform().isOracle()) { definition = this.generateReadStoredProcedure(desc); definitionVector.addElement(definition); this.writeDefinition(definition); definition = this.generateReadAllStoredProcedure(desc); definitionVector.addElement(definition); this.writeDefinition(definition);
/** * INTERNAL: Generates the mapping stored procedures for this descriptor. * currently only 1:1 and 1:M are supported */ protected Hashtable generateMappingStoredProcedures(ClassDescriptor descriptor) { Vector mappings = descriptor.getMappings(); Hashtable mappingSP = new Hashtable(); Hashtable mappingTable; for (Enumeration enumtr = mappings.elements(); enumtr.hasMoreElements();) { mappingTable = new Hashtable(); DatabaseMapping mapping = (DatabaseMapping)enumtr.nextElement(); if (mapping.isOneToManyMapping()) { if (!getSession().getPlatform().isOracle()) { //reads not supported in oracle mappingTable.put("1MREAD", generateOneToManyMappingReadProcedure((OneToManyMapping)mapping)); } if (mapping.isPrivateOwned()) { //generate delete all for 1:M query mappingTable.put("1MDALL", generateOneToManyMappingDeleteAllProcedure((OneToManyMapping)mapping)); } mappingSP.put(mapping.getAttributeName(), mappingTable); } } return mappingSP; }
Vector statementVector = new Vector(); query.checkPrepare(getSession(), rowForPrepare, true); callVector = ((CallQueryMechanism)query.getQueryMechanism()).getCalls(); if (callVector.isEmpty()) { while (enumtr.hasMoreElements()) { SQLCall call = (SQLCall)enumtr.nextElement(); statementVector.addElement(this.buildProcedureString(call)); Enumeration fieldsEnum = fieldNames.keys(); String prefixArgToken; if (getSession().getPlatform().isOracle()) { prefixArgToken = getSession().getPlatform().getStoredProcedureParameterPrefix(); } else { prefixArgToken = ""; dataRow = (AbstractRecord)fieldNames.get(fieldsEnum.nextElement()); dataType = (Number)dataRow.get("DATA_TYPE"); Class type = this.getFieldType(dataType); String typeName = (String)dataRow.get("TYPE_NAME"); if ((type != null) || (typeName == null) || (typeName.length() == 0)) {
/** * PUBLIC: * Use this method to generate stored procedures based on the dynamic SQL generated * for your mappings and descriptors. This should be used with caution as it maintenance * will be high. Stored procedures may be generated either directly on the database * or to a file. */ public void generateStoredProcedures(Writer writer) throws EclipseLinkException { new StoredProcedureGenerator(this).generateStoredProcedures(writer); }
/** * INTERNAL: Generates the insert stored procedure for this descriptor */ protected StoredProcedureDefinition generateInsertStoredProcedure(ClassDescriptor descriptor) { InsertObjectQuery insertQuery = new InsertObjectQuery(); insertQuery.setDescriptor(descriptor); insertQuery.setModifyRow(descriptor.getObjectBuilder().buildTemplateInsertRow(getSession())); return this.generateObjectStoredProcedure(insertQuery, descriptor.getFields(), "INS_"); }
/** * INTERNAL: Generates the read stored procedure for this descriptor */ protected StoredProcedureDefinition generateReadStoredProcedure(ClassDescriptor descriptor) { ReadObjectQuery readQuery = new ReadObjectQuery(); readQuery.setDescriptor(descriptor); readQuery.setReferenceClass(descriptor.getJavaClass()); return generateObjectStoredProcedure(readQuery, descriptor.getPrimaryKeyFields(), "READ_"); }
/** * INTERNAL: Generates the delete all stored procedure for this mapping */ protected StoredProcedureDefinition generateOneToManyMappingDeleteAllProcedure(OneToManyMapping mapping) { ClassDescriptor targetDescriptor = mapping.getReferenceDescriptor(); DeleteAllQuery deleteAllQuery = new DeleteAllQuery(); deleteAllQuery.setDescriptor(targetDescriptor); deleteAllQuery.setReferenceClass(targetDescriptor.getJavaClass()); deleteAllQuery.setSelectionCriteria(mapping.getSelectionCriteria()); return generateOneToManyMappingProcedures(mapping, deleteAllQuery, mapping.getTargetForeignKeyToSourceKeys(), "D_1M_"); }
boolean wasBinding = getSession().getLogin().shouldBindAllParameters(); getSession().getLogin().setShouldBindAllParameters(false); Map descriptors = getSession().getProject().getDescriptors(); Iterator iterator = descriptors.keySet().iterator(); ClassDescriptor desc; StoredProcedureDefinition definition; Vector definitionVector; this.generateSequenceStoredProcedures(getSession().getProject()); while (iterator.hasNext()) { desc = (ClassDescriptor)descriptors.get(iterator.next()); definition = this.generateInsertStoredProcedure(desc); definitionVector = new Vector(); definitionVector.addElement(definition); this.writeDefinition(definition); definition = this.generateUpdateStoredProcedure(desc); definitionVector.addElement(definition); this.writeDefinition(definition); definition = this.generateDeleteStoredProcedure(desc); definitionVector.addElement(definition); this.writeDefinition(definition); if (!getSession().getPlatform().isOracle()) { definition = this.generateReadStoredProcedure(desc); definitionVector.addElement(definition); this.writeDefinition(definition); definition = this.generateReadAllStoredProcedure(desc); definitionVector.addElement(definition); this.writeDefinition(definition);
/** * PUBLIC: * Use this method to generate stored procedures based on the dynamic SQL generated * for your mappings and descriptors. This should be used with caution as it maintenance * will be high. Stored procedures may be generated either directly on the database * or to a file. */ public void generateStoredProceduresAndAmendmentClass(Writer writer, String fullyQualifiedClassName) throws EclipseLinkException { String className = fullyQualifiedClassName.substring(fullyQualifiedClassName.lastIndexOf('.') + 1); String packageName = fullyQualifiedClassName.substring(0, fullyQualifiedClassName.lastIndexOf('.')); StoredProcedureGenerator storedProcedureGenerator = new StoredProcedureGenerator(this); storedProcedureGenerator.generateStoredProcedures(); storedProcedureGenerator.generateAmendmentClass(writer, packageName, className); }
/** * INTERNAL: Generates the mapping stored procedures for this descriptor. * currently only 1:1 and 1:M are supported */ protected Hashtable generateMappingStoredProcedures(ClassDescriptor descriptor) { Vector mappings = descriptor.getMappings(); Hashtable mappingSP = new Hashtable(); Hashtable mappingTable; for (Enumeration enumtr = mappings.elements(); enumtr.hasMoreElements();) { mappingTable = new Hashtable(); DatabaseMapping mapping = (DatabaseMapping)enumtr.nextElement(); if (mapping.isOneToManyMapping()) { if (!getSession().getPlatform().isOracle()) { //reads not supported in oracle mappingTable.put("1MREAD", generateOneToManyMappingReadProcedure((OneToManyMapping)mapping)); } if (mapping.isPrivateOwned()) { //generate delete all for 1:M query mappingTable.put("1MDALL", generateOneToManyMappingDeleteAllProcedure((OneToManyMapping)mapping)); } mappingSP.put(mapping.getAttributeName(), mappingTable); } } return mappingSP; }
Vector statementVector = new Vector(); query.checkPrepare(getSession(), rowForPrepare, true); callVector = ((CallQueryMechanism)query.getQueryMechanism()).getCalls(); if (callVector.isEmpty()) { while (enumtr.hasMoreElements()) { SQLCall call = (SQLCall)enumtr.nextElement(); statementVector.addElement(this.buildProcedureString(call)); Enumeration fieldsEnum = fieldNames.keys(); String prefixArgToken; if (getSession().getPlatform().isOracle()) { prefixArgToken = getSession().getPlatform().getStoredProcedureParameterPrefix(); } else { prefixArgToken = ""; dataRow = (AbstractRecord)fieldNames.get(fieldsEnum.nextElement()); dataType = (Number)dataRow.get("DATA_TYPE"); Class type = this.getFieldType(dataType); String typeName = (String)dataRow.get("TYPE_NAME"); if ((type != null) || (typeName == null) || (typeName.length() == 0)) {