From a61a2d320cc2bb730528832133a8220cb5b80d68 Mon Sep 17 00:00:00 2001 From: Lucas Werkmeister Date: Tue, 27 Sep 2016 12:09:28 +0200 Subject: [PATCH] =?utf8?q?fix:=20#112=20use=20term=20=E2=80=9Ccountry?= =?utf8?q?=E2=80=9D,=20not=20=E2=80=9Cstate=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Continuation of a1618d1. CertificateOwner.getById() has to be updated because users.country and organisations.country now clash. The User constructor is updated for consistency with the Organisation constructor. Change-Id: I0aeaf47fa8627ba5c4a5b35f15804e283e4a55b3 --- .../gigi/database/DatabaseConnection.java | 2 +- .../cacert/gigi/database/tableStructure.sql | 4 +- .../cacert/gigi/database/upgrade/from_24.sql | 1 + .../gigi/dbObjects/CertificateOwner.java | 44 +++++++++++-------- .../cacert/gigi/dbObjects/Organisation.java | 8 ++-- src/org/cacert/gigi/dbObjects/User.java | 13 ++---- .../account/certs/CertificateRequest.java | 2 +- .../cacert/gigi/pages/orga/CreateOrgForm.java | 2 +- .../cacert/gigi/pages/orga/ViewOrgPage.java | 2 +- .../gigi/pages/orga/TestOrgManagement.java | 4 +- 10 files changed, 41 insertions(+), 41 deletions(-) create mode 100644 src/org/cacert/gigi/database/upgrade/from_24.sql diff --git a/src/org/cacert/gigi/database/DatabaseConnection.java b/src/org/cacert/gigi/database/DatabaseConnection.java index 672dbe30..1535ac31 100644 --- a/src/org/cacert/gigi/database/DatabaseConnection.java +++ b/src/org/cacert/gigi/database/DatabaseConnection.java @@ -122,7 +122,7 @@ public class DatabaseConnection { } - public static final int CURRENT_SCHEMA_VERSION = 24; + public static final int CURRENT_SCHEMA_VERSION = 25; public static final int CONNECTION_TIMEOUT = 24 * 60 * 60; diff --git a/src/org/cacert/gigi/database/tableStructure.sql b/src/org/cacert/gigi/database/tableStructure.sql index 7fbded1b..8b1a77d6 100644 --- a/src/org/cacert/gigi/database/tableStructure.sql +++ b/src/org/cacert/gigi/database/tableStructure.sql @@ -27,7 +27,7 @@ DROP TABLE IF EXISTS "organisations"; CREATE TABLE IF NOT EXISTS "organisations" ( "id" int NOT NULL, "name" varchar(64) NOT NULL, - "state" varchar(2) NOT NULL, + "country" varchar(2) NOT NULL, "province" varchar(128) NOT NULL, "city" varchar(128) NOT NULL, "contactEmail" varchar(100) NOT NULL, @@ -374,7 +374,7 @@ CREATE TABLE "schemeVersion" ( "version" smallint NOT NULL, PRIMARY KEY ("version") ); -INSERT INTO "schemeVersion" (version) VALUES(24); +INSERT INTO "schemeVersion" (version) VALUES(25); DROP TABLE IF EXISTS `passwordResetTickets`; CREATE TABLE `passwordResetTickets` ( diff --git a/src/org/cacert/gigi/database/upgrade/from_24.sql b/src/org/cacert/gigi/database/upgrade/from_24.sql new file mode 100644 index 00000000..f690cb29 --- /dev/null +++ b/src/org/cacert/gigi/database/upgrade/from_24.sql @@ -0,0 +1 @@ +ALTER TABLE "organisations" RENAME COLUMN "state" TO "country"; diff --git a/src/org/cacert/gigi/dbObjects/CertificateOwner.java b/src/org/cacert/gigi/dbObjects/CertificateOwner.java index 0b072d1d..a66229fe 100644 --- a/src/org/cacert/gigi/dbObjects/CertificateOwner.java +++ b/src/org/cacert/gigi/dbObjects/CertificateOwner.java @@ -37,27 +37,33 @@ public abstract class CertificateOwner implements IdCachable, Serializable { } public static synchronized CertificateOwner getById(int id) { - CertificateOwner u = myCache.get(id); - if (u == null) { - try (GigiPreparedStatement ps = new GigiPreparedStatement("SELECT *, `users`.`id` AS uid, `organisations`.`id` AS oid FROM `certOwners` LEFT JOIN `users` ON `users`.`id`=`certOwners`.`id` LEFT JOIN `organisations` ON `organisations`.`id` = `certOwners`.`id` WHERE `certOwners`.`id`=? AND `deleted` is null")) { - ps.setInt(1, id); - try (GigiResultSet rs = ps.executeQuery()) { - if ( !rs.next()) { - return null; - } - if (rs.getString("uid") != null) { - myCache.put(u = new User(rs)); - } else if (rs.getString("oid") != null) { - myCache.put(u = new Organisation(rs)); - } else { - System.err.println("Malformed cert owner: " + id); - } - } catch (GigiApiException e) { - throw new Error(e); - } + CertificateOwner cached = myCache.get(id); + if (cached != null) { + return cached; + } + + try (GigiPreparedStatement psU = new GigiPreparedStatement("SELECT *, `users`.`id` AS uid FROM `certOwners` INNER JOIN `users` ON `users`.`id`=`certOwners`.`id` WHERE `certOwners`.`id`=? AND `deleted` is null")) { + psU.setInt(1, id); + GigiResultSet rsU = psU.executeQuery(); + if (rsU.next()) { + return myCache.put(new User(rsU)); } + } catch (GigiApiException e) { + throw new Error(e); } - return u; + + try (GigiPreparedStatement psO = new GigiPreparedStatement("SELECT *, `organisations`.`id` AS oid FROM `certOwners` INNER JOIN `organisations` ON `organisations`.`id`=`certOwners`.`id` WHERE `certOwners`.`id`=? AND `deleted` is null")) { + psO.setInt(1, id); + GigiResultSet rsO = psO.executeQuery(); + if (rsO.next()) { + return myCache.put(new Organisation(rsO)); + } + } catch (GigiApiException e) { + throw new Error(e); + } + + System.err.println("Malformed cert owner: " + id); + return null; } public Domain[] getDomains() { diff --git a/src/org/cacert/gigi/dbObjects/Organisation.java b/src/org/cacert/gigi/dbObjects/Organisation.java index 9c57049a..cb6601e6 100644 --- a/src/org/cacert/gigi/dbObjects/Organisation.java +++ b/src/org/cacert/gigi/dbObjects/Organisation.java @@ -81,7 +81,7 @@ public class Organisation extends CertificateOwner { this.optionalName = optionalName; this.postalAddress = postalAddress; int id = getId(); - try (GigiPreparedStatement ps = new GigiPreparedStatement("INSERT INTO organisations SET id=?, name=?, state=?, province=?, city=?, contactEmail=?, optional_name=?, postal_address=?, creator=?")) { + try (GigiPreparedStatement ps = new GigiPreparedStatement("INSERT INTO organisations SET id=?, name=?, country=?, province=?, city=?, contactEmail=?, optional_name=?, postal_address=?, creator=?")) { ps.setInt(1, id); ps.setString(2, name); ps.setString(3, country.getCode()); @@ -100,7 +100,7 @@ public class Organisation extends CertificateOwner { protected Organisation(GigiResultSet rs) throws GigiApiException { super(rs.getInt("id")); name = rs.getString("name"); - country = Country.getCountryByCode(rs.getString("state"), CountryCodeType.CODE_2_CHARS); + country = Country.getCountryByCode(rs.getString("country"), CountryCodeType.CODE_2_CHARS); province = rs.getString("province"); city = rs.getString("city"); email = rs.getString("contactEmail"); @@ -112,7 +112,7 @@ public class Organisation extends CertificateOwner { return name; } - public Country getState() { + public Country getCountry() { return country; } @@ -219,7 +219,7 @@ public class Organisation extends CertificateOwner { cert.revoke(); } } - try (GigiPreparedStatement ps = new GigiPreparedStatement("UPDATE `organisations` SET `name`=?, `state`=?, `province`=?, `city`=? WHERE `id`=?")) { + try (GigiPreparedStatement ps = new GigiPreparedStatement("UPDATE `organisations` SET `name`=?, `country`=?, `province`=?, `city`=? WHERE `id`=?")) { ps.setString(1, o); ps.setString(2, c.getCode()); ps.setString(3, st); diff --git a/src/org/cacert/gigi/dbObjects/User.java b/src/org/cacert/gigi/dbObjects/User.java index e72908be..b4bfcc1c 100644 --- a/src/org/cacert/gigi/dbObjects/User.java +++ b/src/org/cacert/gigi/dbObjects/User.java @@ -68,22 +68,15 @@ public class User extends CertificateOwner { private Country residenceCountry; - protected User(GigiResultSet rs) { + protected User(GigiResultSet rs) throws GigiApiException { super(rs.getInt("id")); - updateName(rs); - } - private void updateName(GigiResultSet rs) { dob = new DayDate(rs.getDate("dob")); email = rs.getString("email"); preferredName = Name.getById(rs.getInt("preferredName")); - try { - if (rs.getString("Country") != null) { - residenceCountry = Country.getCountryByCode(rs.getString("Country"), Country.CountryCodeType.CODE_2_CHARS); - } - } catch (GigiApiException e) { - throw new Error(e); + if (rs.getString("country") != null) { + residenceCountry = Country.getCountryByCode(rs.getString("Country"), Country.CountryCodeType.CODE_2_CHARS); } String localeStr = rs.getString("language"); diff --git a/src/org/cacert/gigi/pages/account/certs/CertificateRequest.java b/src/org/cacert/gigi/pages/account/certs/CertificateRequest.java index 91c53bc2..1067681c 100644 --- a/src/org/cacert/gigi/pages/account/certs/CertificateRequest.java +++ b/src/org/cacert/gigi/pages/account/certs/CertificateRequest.java @@ -424,7 +424,7 @@ public class CertificateRequest { if (ctx.getTarget() instanceof Organisation) { Organisation org = (Organisation) ctx.getTarget(); subject.put("O", org.getName()); - subject.put("C", org.getState().getCode()); + subject.put("C", org.getCountry().getCode()); subject.put("ST", org.getProvince()); subject.put("L", org.getCity()); if (ou != null) { diff --git a/src/org/cacert/gigi/pages/orga/CreateOrgForm.java b/src/org/cacert/gigi/pages/orga/CreateOrgForm.java index 4abcafa3..7b698225 100644 --- a/src/org/cacert/gigi/pages/orga/CreateOrgForm.java +++ b/src/org/cacert/gigi/pages/orga/CreateOrgForm.java @@ -48,7 +48,7 @@ public class CreateOrgForm extends Form { result = t; o = t.getName(); - cs = new CountrySelector("C", false, t.getState()); + cs = new CountrySelector("C", false, t.getCountry()); st = t.getProvince(); l = t.getCity(); diff --git a/src/org/cacert/gigi/pages/orga/ViewOrgPage.java b/src/org/cacert/gigi/pages/orga/ViewOrgPage.java index 88776107..0924a898 100644 --- a/src/org/cacert/gigi/pages/orga/ViewOrgPage.java +++ b/src/org/cacert/gigi/pages/orga/ViewOrgPage.java @@ -117,7 +117,7 @@ public class ViewOrgPage extends ManagedMultiFormPage { Organisation org = orgas[count++]; vars.put("id", Integer.toString(org.getId())); vars.put("name", org.getName()); - vars.put("country", org.getState().getCode()); + vars.put("country", org.getCountry().getCode()); return true; } }; diff --git a/tests/org/cacert/gigi/pages/orga/TestOrgManagement.java b/tests/org/cacert/gigi/pages/orga/TestOrgManagement.java index 65951dc8..523ce88b 100644 --- a/tests/org/cacert/gigi/pages/orga/TestOrgManagement.java +++ b/tests/org/cacert/gigi/pages/orga/TestOrgManagement.java @@ -149,7 +149,7 @@ public class TestOrgManagement extends OrgTest { Organisation o1 = createUniqueOrg(); o1.updateCertData("name", Country.getCountryByCode("DE", CountryCodeType.CODE_2_CHARS), DIFFICULT_CHARS, "Köln"); assertEquals("name", o1.getName()); - assertEquals("DE", o1.getState().getCode()); + assertEquals("DE", o1.getCountry().getCode()); assertEquals(DIFFICULT_CHARS, o1.getProvince()); assertEquals("Köln", o1.getCity()); o1.delete(); @@ -246,7 +246,7 @@ public class TestOrgManagement extends OrgTest { */ private String upCertData(Organisation o1, String o, String c, String province, String ct) throws IOException, MalformedURLException, UnsupportedEncodingException { if (c == null) { - c = o1.getState().getCode(); + c = o1.getCountry().getCode(); } return executeBasicWebInteraction(cookie, ViewOrgPage.DEFAULT_PATH + "/" + o1.getId(), "action=updateCertificateData&O=" + o + "&C=" + c + "&ST=" + province + "&L=" + ct, 0); } -- 2.39.2