]> WPIA git - gigi.git/blobdiff - src/org/cacert/gigi/ping/DomainPinger.java
upd: cleanup SQL statements to make them statically verifiable.
[gigi.git] / src / org / cacert / gigi / ping / DomainPinger.java
index 68ef91eb6e0092d9ff8c2f8433dfbb9753b46dcc..c5eb3926bea8d8a2fed6b0b766b11171d9a13ae0 100644 (file)
@@ -1,35 +1,46 @@
 package org.cacert.gigi.ping;
 
-import org.cacert.gigi.database.DatabaseConnection;
+import org.cacert.gigi.database.DBEnum;
 import org.cacert.gigi.database.GigiPreparedStatement;
+import org.cacert.gigi.dbObjects.CertificateOwner;
 import org.cacert.gigi.dbObjects.Domain;
-import org.cacert.gigi.dbObjects.User;
 
 public abstract class DomainPinger {
 
+    public static enum PingState implements DBEnum {
+        OPEN, SUCCESS, FAILED;
+
+        @Override
+        public String getDBName() {
+            return toString().toLowerCase();
+        }
+    }
+
     public static final String PING_STILL_PENDING = null;
 
     public static final String PING_SUCCEDED = "";
 
-    public abstract void ping(Domain domain, String configuration, User user, int confId);
+    public abstract void ping(Domain domain, String configuration, CertificateOwner target, int confId);
 
     protected static void enterPingResult(int configId, String state, String result, String token) {
-        GigiPreparedStatement enterPingResult = DatabaseConnection.getInstance().prepare("INSERT INTO `domainPinglog` SET `configId`=?, `state`=?::`pingState`, `result`=?, `challenge`=?");
-        enterPingResult.setInt(1, configId);
-        enterPingResult.setString(2, DomainPinger.PING_STILL_PENDING == state ? "open" : DomainPinger.PING_SUCCEDED.equals(state) ? "success" : "failed");
-        enterPingResult.setString(3, result);
-        enterPingResult.setString(4, token);
-        enterPingResult.execute();
-
+        PingState estate = DomainPinger.PING_STILL_PENDING == state ? PingState.OPEN : DomainPinger.PING_SUCCEDED.equals(state) ? PingState.SUCCESS : PingState.FAILED;
+        try (GigiPreparedStatement enterPingResult = new GigiPreparedStatement("INSERT INTO `domainPinglog` SET `configId`=?, `state`=?::`pingState`, `result`=?, `challenge`=?")) {
+            enterPingResult.setInt(1, configId);
+            enterPingResult.setEnum(2, estate);
+            enterPingResult.setString(3, result);
+            enterPingResult.setString(4, token);
+            enterPingResult.execute();
+        }
     }
 
-    protected static void updatePingResult(int configId, String token, String state, String result) {
-        GigiPreparedStatement updatePingResult = DatabaseConnection.getInstance().prepare("UPDATE `domainPinglog` SET `state`=?::`pingState`, `result`=? WHERE `configId`=? AND `challenge`=?");
-        updatePingResult.setString(1, DomainPinger.PING_STILL_PENDING == state ? "open" : DomainPinger.PING_SUCCEDED.equals(state) ? "success" : "failed");
-        updatePingResult.setString(2, result);
-        updatePingResult.setInt(3, configId);
-        updatePingResult.setString(4, token);
-        updatePingResult.execute();
-
+    protected static void updatePingResult(int configId, String state, String result, String token) {
+        try (GigiPreparedStatement updatePingResult = new GigiPreparedStatement("UPDATE `domainPinglog` SET `state`=?::`pingState`, `result`=? WHERE `configId`=? AND `challenge`=?")) {
+            updatePingResult.setString(1, DomainPinger.PING_STILL_PENDING == state ? "open" : DomainPinger.PING_SUCCEDED.equals(state) ? "success" : "failed");
+            updatePingResult.setString(2, result);
+            updatePingResult.setInt(3, configId);
+            updatePingResult.setString(4, token);
+            updatePingResult.execute();
+        }
     }
+
 }