Ignore:
Timestamp:
2005-05-16T11:02:50+12:00 (19 years ago)
Author:
kjdon
Message:

merged from branch ant-install-branch: merge 1

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/gsdl3/src/java/org/greenstone/gsdl3/gs3build/metadata/METSDivision.java

    r8742 r9874  
    1010
    1111import java.sql.SQLException;
     12import java.sql.Statement;
    1213import java.sql.ResultSet;
    1314
     
    475476    select.setWhere(where);
    476477   
    477     connection.execute(select.toString());
     478    Statement statement = null;
     479    ResultSet resultSet = null;
    478480   
    479481    // Do the actual writing
    480482    GS3SQLAction action;
    481483   
    482     ResultSet resultSet = connection.getResultSet();
    483484    try {
    484         if (resultSet == null ||
    485         !resultSet.first()) {
    486         resultSet = null;
     485        statement = connection.createStatement();
     486        resultSet = statement.executeQuery(select.toString());
     487        if (!resultSet.first()) {
    487488       
    488489        GS3SQLInsert insert = new GS3SQLInsert("divisions");
     
    499500        GS3SQLUpdate update = new GS3SQLUpdate("divisions");
    500501        GS3SQLWhere  updateWhere =
    501             new GS3SQLWhere(new GS3SQLWhereItem("DivisionRef", "=", Integer.toString(sqlRef),
    502                             GS3SQLField.INTEGER_TYPE));
     502            new GS3SQLWhere(new GS3SQLWhereItem("DivisionRef", "=", Integer.toString(sqlRef), GS3SQLField.INTEGER_TYPE));
    503503        update.setWhere(updateWhere);
    504504        action = update;
     
    515515    action.addValue("UserLabel", this.userLabel);
    516516   
    517     if (!connection.execute(action.toString())){
     517    try {
     518        statement.execute(action.toString());
     519    } catch (SQLException e) {
     520        System.err.println("METSDivision.writeSQL(): "+e);
    518521        return false;
    519522    }
    520523   
    521524    // if doing a fresh item, get the new structure reference...
    522     if (resultSet == null){
     525    if (sqlRef == -1){
    523526        // get the new structure reference
    524         connection.execute(select.toString());
    525        
    526         // get the sql reference for the division
    527527        try {
    528528        // read in the structure reference
    529         resultSet = connection.getResultSet();
    530         if (resultSet == null) {
    531             return false;
     529        resultSet = statement.executeQuery(select.toString());
     530        if (resultSet.first()) {
     531            sqlRef = resultSet.getInt("DivisionRef");
    532532        }
    533         resultSet.first();
    534         sqlRef = resultSet.getInt("DivisionRef");
    535         resultSet.close();
    536         resultSet = null;
    537533        }
    538534        catch (SQLException sqlex) {
    539         System.err.println("Unable to retrieve reference for Division " + sqlex);
     535        System.err.println("METSDIVISION.writeSQL(): Unable to retrieve reference for Division " + sqlex);
    540536        return false;
    541537        }
    542538    }
    543     // close the open resultSet, as we don't need it any longer...
    544     else {
    545         try {
    546         resultSet.close();
    547         }
    548         catch (SQLException sql) {
    549         System.err.println(sql + " " + select.toString());
    550         }
    551     }
    552539   
    553540    // delete the old file/metadata references
    554     GS3SQLWhere referenceWhere =
    555         new GS3SQLWhere(new GS3SQLWhereItem("DivisionRef", "=", Integer.toString(sqlRef),
    556                         GS3SQLField.INTEGER_TYPE));
    557    
    558     GS3SQLDelete delete = new GS3SQLDelete("divisionfilerefs");
    559     delete.setWhere(referenceWhere);
    560     connection.execute(delete.toString());
    561    
    562     delete = new GS3SQLDelete("divisionmetarefs");
    563     delete.setWhere(referenceWhere);
    564     connection.execute(delete.toString());
    565    
    566     // write the new file references
    567     if (this.fileRefs.size() > 0){
    568         Iterator iterator = this.fileRefs.iterator();
    569        
    570         while (iterator.hasNext()) {
    571         GS3SQLInsert fileinsert = new GS3SQLInsert("divisionfilerefs");
    572         fileinsert.addValue("DocID", docId.toString());
    573         fileinsert.addValue("DivisionRef", Integer.toString(sqlRef), GS3SQLField.INTEGER_TYPE);
    574         fileinsert.addValue("DivisionType", "Group");
    575         fileinsert.addValue("FileID", iterator.next().toString());
    576         connection.execute(fileinsert.toString());
    577         }
    578     }
    579    
    580     // write the metadata references
    581     if (this.metadataRefs.size() > 0){
    582         Iterator iterator = this.metadataRefs.iterator();
    583        
    584         while (iterator.hasNext()) {
    585         GS3SQLInsert metainsert = new GS3SQLInsert("divisionmetarefs");
    586         metainsert.addValue("DocID", docId.toString());
    587         metainsert.addValue("DivisionRef", Integer.toString(sqlRef), GS3SQLField.INTEGER_TYPE);
    588         metainsert.addValue("DivisionType", "Group");
    589         metainsert.addValue("MetaID", iterator.next().toString());
    590         connection.execute(metainsert.toString());
    591         }
    592     }
    593    
     541    try {
     542        GS3SQLWhere referenceWhere =
     543        new GS3SQLWhere(new GS3SQLWhereItem("DivisionRef", "=", Integer.toString(sqlRef),
     544                            GS3SQLField.INTEGER_TYPE));
     545       
     546        GS3SQLDelete delete = new GS3SQLDelete("divisionfilerefs");
     547        delete.setWhere(referenceWhere);
     548       
     549        statement.execute(delete.toString());
     550       
     551        delete = new GS3SQLDelete("divisionmetarefs");
     552        delete.setWhere(referenceWhere);
     553        statement.execute(delete.toString());
     554   
     555        // write the new file references
     556        if (this.fileRefs.size() > 0){
     557        Iterator iterator = this.fileRefs.iterator();
     558       
     559        while (iterator.hasNext()) {
     560            GS3SQLInsert fileinsert = new GS3SQLInsert("divisionfilerefs");
     561            fileinsert.addValue("DocID", docId.toString());
     562            fileinsert.addValue("DivisionRef", Integer.toString(sqlRef), GS3SQLField.INTEGER_TYPE);
     563            fileinsert.addValue("DivisionType", "Group");
     564            fileinsert.addValue("FileID", iterator.next().toString());
     565            statement.execute(fileinsert.toString());
     566        }
     567        }
     568       
     569        // write the metadata references
     570        if (this.metadataRefs.size() > 0){
     571        Iterator iterator = this.metadataRefs.iterator();
     572       
     573        while (iterator.hasNext()) {
     574            GS3SQLInsert metainsert = new GS3SQLInsert("divisionmetarefs");
     575            metainsert.addValue("DocID", docId.toString());
     576            metainsert.addValue("DivisionRef", Integer.toString(sqlRef), GS3SQLField.INTEGER_TYPE);
     577            metainsert.addValue("DivisionType", "Group");
     578            metainsert.addValue("MetaID", iterator.next().toString());
     579            statement.execute(metainsert.toString());
     580        }
     581        }
     582        statement.close();
     583    } catch (SQLException e) {
     584        System.err.println("METSDIVISION.writeSQL(): "+e);
     585        return false;
     586    }
    594587    // write out any children in turn
    595588    Iterator groups = this.children.values().iterator();
     
    633626        select.setWhere(where);
    634627
    635         connection.execute(select.toString());
     628        Statement statement = connection.createStatement();
     629        ResultSet childSet = statement.executeQuery(select.toString());
    636630     
    637631        // circulate through to obtain further children
    638         ResultSet childSet = connection.getResultSet();
    639632        if (childSet.first())
    640633        {
     
    645638            while (childSet.next());
    646639        }
    647 
    648640        select = new GS3SQLSelect("divisionfilerefs");
    649641        select.addField("*");
     
    652644        select.setWhere(where);
    653645
    654         connection.execute(select.toString());
    655 
    656         ResultSet fileSet = connection.getResultSet();
    657         if (fileSet != null && fileSet.first()){
     646        ResultSet fileSet = statement.executeQuery(select.toString());
     647
     648        if (fileSet.first()){
    658649        do {
    659650            String reference = fileSet.getString("FileID");
     
    662653        while (fileSet.next()); 
    663654        }
    664 
     655       
    665656        select = new GS3SQLSelect("divisionmetarefs");
    666657        select.addField("*");
     
    669660        select.setWhere(where);
    670661
    671         connection.execute(select.toString());
    672 
    673         ResultSet metaSet = connection.getResultSet();
    674         if (metaSet != null && metaSet.first()){
     662        ResultSet metaSet = statement.executeQuery(select.toString());
     663
     664        if (metaSet.first()){
    675665        do {
    676666            String reference = metaSet.getString("MetaID");
     
    680670        }
    681671       
     672        statement.close();
    682673        return division;
    683674    }
Note: See TracChangeset for help on using the changeset viewer.