- Timestamp:
- 2005-05-16T11:02:50+12:00 (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/gsdl3/src/java/org/greenstone/gsdl3/gs3build/metadata/METSDivision.java
r8742 r9874 10 10 11 11 import java.sql.SQLException; 12 import java.sql.Statement; 12 13 import java.sql.ResultSet; 13 14 … … 475 476 select.setWhere(where); 476 477 477 connection.execute(select.toString()); 478 Statement statement = null; 479 ResultSet resultSet = null; 478 480 479 481 // Do the actual writing 480 482 GS3SQLAction action; 481 483 482 ResultSet resultSet = connection.getResultSet();483 484 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()) { 487 488 488 489 GS3SQLInsert insert = new GS3SQLInsert("divisions"); … … 499 500 GS3SQLUpdate update = new GS3SQLUpdate("divisions"); 500 501 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)); 503 503 update.setWhere(updateWhere); 504 504 action = update; … … 515 515 action.addValue("UserLabel", this.userLabel); 516 516 517 if (!connection.execute(action.toString())){ 517 try { 518 statement.execute(action.toString()); 519 } catch (SQLException e) { 520 System.err.println("METSDivision.writeSQL(): "+e); 518 521 return false; 519 522 } 520 523 521 524 // if doing a fresh item, get the new structure reference... 522 if ( resultSet == null){525 if (sqlRef == -1){ 523 526 // get the new structure reference 524 connection.execute(select.toString());525 526 // get the sql reference for the division527 527 try { 528 528 // 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"); 532 532 } 533 resultSet.first();534 sqlRef = resultSet.getInt("DivisionRef");535 resultSet.close();536 resultSet = null;537 533 } 538 534 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); 540 536 return false; 541 537 } 542 538 } 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 }552 539 553 540 // 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 } 594 587 // write out any children in turn 595 588 Iterator groups = this.children.values().iterator(); … … 633 626 select.setWhere(where); 634 627 635 connection.execute(select.toString()); 628 Statement statement = connection.createStatement(); 629 ResultSet childSet = statement.executeQuery(select.toString()); 636 630 637 631 // circulate through to obtain further children 638 ResultSet childSet = connection.getResultSet();639 632 if (childSet.first()) 640 633 { … … 645 638 while (childSet.next()); 646 639 } 647 648 640 select = new GS3SQLSelect("divisionfilerefs"); 649 641 select.addField("*"); … … 652 644 select.setWhere(where); 653 645 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()){ 658 649 do { 659 650 String reference = fileSet.getString("FileID"); … … 662 653 while (fileSet.next()); 663 654 } 664 655 665 656 select = new GS3SQLSelect("divisionmetarefs"); 666 657 select.addField("*"); … … 669 660 select.setWhere(where); 670 661 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()){ 675 665 do { 676 666 String reference = metaSet.getString("MetaID"); … … 680 670 } 681 671 672 statement.close(); 682 673 return division; 683 674 }
Note:
See TracChangeset
for help on using the changeset viewer.