X-Git-Url: https://code.wpia.club/?p=gigi.git;a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2FdbObjects%2FOrganisation.java;h=6b5b28f44234dd006ab6f3f8d3bef29edcc542e8;hp=b51d2838e4e045eb40296ed5c2dd301266a41f2e;hb=a0232b6e40e7e09767f0444d24e18bf12dafc362;hpb=851b2db2211e0f7770065dc4558cc0de74a39df4 diff --git a/src/org/cacert/gigi/dbObjects/Organisation.java b/src/org/cacert/gigi/dbObjects/Organisation.java index b51d2838..6b5b28f4 100644 --- a/src/org/cacert/gigi/dbObjects/Organisation.java +++ b/src/org/cacert/gigi/dbObjects/Organisation.java @@ -4,7 +4,6 @@ import java.util.ArrayList; import java.util.List; import org.cacert.gigi.GigiApiException; -import org.cacert.gigi.database.DatabaseConnection; import org.cacert.gigi.database.GigiPreparedStatement; import org.cacert.gigi.database.GigiResultSet; import org.cacert.gigi.dbObjects.Certificate.CertificateStatus; @@ -62,18 +61,18 @@ public class Organisation extends CertificateOwner { this.city = city; this.email = email; int id = getId(); - GigiPreparedStatement ps = DatabaseConnection.getInstance().prepare("INSERT INTO organisations SET id=?, name=?, state=?, province=?, city=?, contactEmail=?, creator=?"); - ps.setInt(1, id); - ps.setString(2, name); - ps.setString(3, state); - ps.setString(4, province); - ps.setString(5, city); - ps.setString(6, email); - ps.setInt(7, creator.getId()); - synchronized (Organisation.class) { - ps.execute(); + try (GigiPreparedStatement ps = new GigiPreparedStatement("INSERT INTO organisations SET id=?, name=?, state=?, province=?, city=?, contactEmail=?, creator=?")) { + ps.setInt(1, id); + ps.setString(2, name); + ps.setString(3, state); + ps.setString(4, province); + ps.setString(5, city); + ps.setString(6, email); + ps.setInt(7, creator.getId()); + synchronized (Organisation.class) { + ps.execute(); + } } - } protected Organisation(GigiResultSet rs) { @@ -120,58 +119,63 @@ public class Organisation extends CertificateOwner { if ( !actor.isInGroup(Group.ORGASSURER) && !isMaster(actor)) { throw new GigiApiException("Only org assurer or master-admin may add admins to an organisation."); } - GigiPreparedStatement ps1 = DatabaseConnection.getInstance().prepare("SELECT 1 FROM `org_admin` WHERE `orgid`=? AND `memid`=? AND `deleted` IS NULL"); - ps1.setInt(1, getId()); - ps1.setInt(2, admin.getId()); - GigiResultSet result = ps1.executeQuery(); - if (result.next()) { - return; + try (GigiPreparedStatement ps1 = new GigiPreparedStatement("SELECT 1 FROM `org_admin` WHERE `orgid`=? AND `memid`=? AND `deleted` IS NULL")) { + ps1.setInt(1, getId()); + ps1.setInt(2, admin.getId()); + GigiResultSet result = ps1.executeQuery(); + if (result.next()) { + return; + } + } + try (GigiPreparedStatement ps2 = new GigiPreparedStatement("INSERT INTO `org_admin` SET `orgid`=?, `memid`=?, `creator`=?, `master`=?::`yesno`")) { + ps2.setInt(1, getId()); + ps2.setInt(2, admin.getId()); + ps2.setInt(3, actor.getId()); + ps2.setString(4, master ? "y" : "n"); + ps2.execute(); } - GigiPreparedStatement ps2 = DatabaseConnection.getInstance().prepare("INSERT INTO `org_admin` SET `orgid`=?, `memid`=?, `creator`=?, `master`=?::`yesno`"); - ps2.setInt(1, getId()); - ps2.setInt(2, admin.getId()); - ps2.setInt(3, actor.getId()); - ps2.setString(4, master ? "y" : "n"); - ps2.execute(); } public void removeAdmin(User admin, User actor) throws GigiApiException { if ( !actor.isInGroup(Group.ORGASSURER) && !isMaster(actor)) { throw new GigiApiException("Only org assurer or master-admin may delete admins from an organisation."); } - GigiPreparedStatement ps = DatabaseConnection.getInstance().prepare("UPDATE org_admin SET deleter=?, deleted=NOW() WHERE orgid=? AND memid=?"); - ps.setInt(1, actor.getId()); - ps.setInt(2, getId()); - ps.setInt(3, admin.getId()); - ps.execute(); + try (GigiPreparedStatement ps = new GigiPreparedStatement("UPDATE org_admin SET deleter=?, deleted=NOW() WHERE orgid=? AND memid=?")) { + ps.setInt(1, actor.getId()); + ps.setInt(2, getId()); + ps.setInt(3, admin.getId()); + ps.execute(); + } } public List getAllAdmins() { - GigiPreparedStatement ps = DatabaseConnection.getInstance().prepareScrollable("SELECT `memid`, `master` FROM `org_admin` WHERE `orgid`=? AND `deleted` IS NULL"); - ps.setInt(1, getId()); - GigiResultSet rs = ps.executeQuery(); - rs.last(); - ArrayList al = new ArrayList<>(rs.getRow()); - rs.beforeFirst(); - while (rs.next()) { - al.add(new Affiliation(User.getById(rs.getInt(1)), rs.getString(2).equals("y"), null)); + try (GigiPreparedStatement ps = new GigiPreparedStatement("SELECT `memid`, `master` FROM `org_admin` WHERE `orgid`=? AND `deleted` IS NULL", true)) { + ps.setInt(1, getId()); + GigiResultSet rs = ps.executeQuery(); + rs.last(); + ArrayList al = new ArrayList<>(rs.getRow()); + rs.beforeFirst(); + while (rs.next()) { + al.add(new Affiliation(User.getById(rs.getInt(1)), rs.getString(2).equals("y"), null)); + } + return al; } - return al; } public static Organisation[] getOrganisations(int offset, int count) { - GigiPreparedStatement ps = DatabaseConnection.getInstance().prepareScrollable("SELECT `certOwners`.`id` FROM `organisations` INNER JOIN `certOwners` ON `certOwners`.`id`=`organisations`.`id` WHERE `certOwners`.`deleted` IS NULL OFFSET ? LIMIT ?"); - ps.setInt(1, offset); - ps.setInt(2, count); - GigiResultSet res = ps.executeQuery(); - res.last(); - Organisation[] resu = new Organisation[res.getRow()]; - res.beforeFirst(); - int i = 0; - while (res.next()) { - resu[i++] = getById(res.getInt(1)); + try (GigiPreparedStatement ps = new GigiPreparedStatement("SELECT `certOwners`.`id` FROM `organisations` INNER JOIN `certOwners` ON `certOwners`.`id`=`organisations`.`id` WHERE `certOwners`.`deleted` IS NULL OFFSET ? LIMIT ?", true)) { + ps.setInt(1, offset); + ps.setInt(2, count); + GigiResultSet res = ps.executeQuery(); + res.last(); + Organisation[] resu = new Organisation[res.getRow()]; + res.beforeFirst(); + int i = 0; + while (res.next()) { + resu[i++] = getById(res.getInt(1)); + } + return resu; } - return resu; } public void update(String o, String c, String st, String l, String mail) { @@ -180,13 +184,14 @@ public class Organisation extends CertificateOwner { cert.revoke(); } } - GigiPreparedStatement ps = DatabaseConnection.getInstance().prepare("UPDATE `organisations` SET `name`=?, `state`=?, `province`=?, `city`=?, `contactEmail`=?"); - ps.setString(1, o); - ps.setString(2, c); - ps.setString(3, st); - ps.setString(4, l); - ps.setString(5, mail); - ps.execute(); + try (GigiPreparedStatement ps = new GigiPreparedStatement("UPDATE `organisations` SET `name`=?, `state`=?, `province`=?, `city`=?, `contactEmail`=?")) { + ps.setString(1, o); + ps.setString(2, c); + ps.setString(3, st); + ps.setString(4, l); + ps.setString(5, mail); + ps.execute(); + } email = mail; name = o; state = c;