Beispiel für pureQuery-Refactoring: integrierte Methode, die eine Ergebnismenge zurückgibt

Der Code in diesem Beispiel zeigt, wie ein Refactoring für eine integrierte Methode ausgeführt wird, die eine Ergebnismenge in einer pureQuery-Anwendung zurückgibt.

Die Klasse DepartmentInlineSample zeigt, wie auf die Tabelle DEPARTMENT über die integrierte Methode zugegriffen wird. Diese von pureQuery generierte Klasse veranschaulicht den Programmierstil der integrierten Methode und enthält Vorschläge und Beispiele für die Anweisungen CREATE, INSERT, UPDATE und DELETE.

Sie können über die Methode newInline, für die ein Refactoring ausgeführt wurde, eine gespeicherte Java-Prozedur erstellen.

package INLINE;

// Imports
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Iterator;
import com.ibm.pdq.runtime.Data;
import pureQuery.example.SampleUtil;
import com.ibm.pdq.runtime.ResultIterator;
import com.ibm.pdq.runtime.factory.DataFactory;

import java.sql.*;

public class DepartmentInlineSample {

  public static void newInline(ResultSet[] rs) throws SQLException,Exception{
    Connection con = DriverManager.getConnection("jdbc:default:connection");
    Data d = DataFactory.getData(con);
	
    rs[0] = d.queryResults(
       "SELECT DEPTNO, DEPTNAME, MGRNO, ADMRDEPT, LOCATION"
             + "  FROM DEPARTMENT");
}

  public static Data db = null;
  /**
   * @param args
   */

  public static void main(String[] args) {
    try {
      if (args.length < 1) {
        SampleUtil.println("All required arguments were not provided.");
        return;
      }
      db = SampleUtil.getData(
               "jdbc:db2://iicriollo3.svl.ibm.com:50000/SAMPLE:retrieveMessagesFromServerOnGetMessage=true;",
               "db2admin", args[0]);
      db.setAutoCommit(false);
      Iterator<Department> getDepartments = db.queryIterator(
              "SELECT DEPTNO, DEPTNAME, MGRNO, ADMRDEPT, LOCATION"
                     + "  FROM DEPARTMENT",
               Department.class);

      Department bean = null;
      if (getDepartments.hasNext()) {
        bean = getDepartments.next();
        ((ResultIterator<Department>) getDepartments).close();
      } else {
        SampleUtil.println("Result set is empty.");
        db.rollback();
        return;
      }
      Department getDepartment = db.queryFirst(
              "SELECT DEPTNO, DEPTNAME, MGRNO, ADMRDEPT, LOCATION"
                     + "  FROM DEPARTMENT"
                     + "  WHERE DEPTNO = :deptno",
               Department.class, bean);
      SampleUtil.printClass(getDepartment);

      db.update(
              "UPDATE DEPARTMENT"
                     + "  SET DEPTNO = :deptno, DEPTNAME = :deptname, MGRNO = :mgrno,"
                     + "      ADMRDEPT = :admrdept, LOCATION = :location"
                     + "  WHERE DEPTNO = :deptno",
              bean);
      getDepartments = db.queryIterator(
              "SELECT DEPTNO, DEPTNAME, MGRNO, ADMRDEPT, LOCATION"
                     + "  FROM DEPARTMENT",
              Department.class);
      SampleUtil.println("Results for update (bean)");
      SampleUtil.printAll(getDepartments);

      db.update("DELETE FROM DEPARTMENT"
                     + " WHERE DEPTNO = :deptno", bean);
      getDepartments = db.queryIterator(
              "SELECT DEPTNO, DEPTNAME, MGRNO, ADMRDEPT, LOCATION"
                     + "  FROM DEPARTMENT",
              Department.class);
      SampleUtil.println("Results for - delete (?)");
      SampleUtil.printAll(getDepartments);

      db.update(
              "INSERT INTO DEPARTMENT (DEPTNO, DEPTNAME, MGRNO, ADMRDEPT, LOCATION)"
                     + "  VALUES (:deptno, :deptname, :mgrno, :admrdept, :location)",
              bean);
      getDepartments = db.queryIterator(
              "SELECT DEPTNO, DEPTNAME, MGRNO, ADMRDEPT, LOCATION"
                     + "  FROM DEPARTMENT",
              Department.class);
      SampleUtil.println("Results for - insert (bean)");
      SampleUtil.printAll(getDepartments);

      db.commit();
    } catch (Exception exp) {
      SampleUtil.println(exp.getMessage());
      SampleUtil.println(exp.toString());
      if (db != null)
        db.rollback();
    } finally {
      if (db != null)
        db.close();
    }
  }

}

Feedback