]> WPIA git - gigi.git/blob - 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
1 package org.cacert.gigi.ping;
2
3 import org.cacert.gigi.database.DBEnum;
4 import org.cacert.gigi.database.GigiPreparedStatement;
5 import org.cacert.gigi.dbObjects.CertificateOwner;
6 import org.cacert.gigi.dbObjects.Domain;
7
8 public abstract class DomainPinger {
9
10     public static enum PingState implements DBEnum {
11         OPEN, SUCCESS, FAILED;
12
13         @Override
14         public String getDBName() {
15             return toString().toLowerCase();
16         }
17     }
18
19     public static final String PING_STILL_PENDING = null;
20
21     public static final String PING_SUCCEDED = "";
22
23     public abstract void ping(Domain domain, String configuration, CertificateOwner target, int confId);
24
25     protected static void enterPingResult(int configId, String state, String result, String token) {
26         PingState estate = DomainPinger.PING_STILL_PENDING == state ? PingState.OPEN : DomainPinger.PING_SUCCEDED.equals(state) ? PingState.SUCCESS : PingState.FAILED;
27         try (GigiPreparedStatement enterPingResult = new GigiPreparedStatement("INSERT INTO `domainPinglog` SET `configId`=?, `state`=?::`pingState`, `result`=?, `challenge`=?")) {
28             enterPingResult.setInt(1, configId);
29             enterPingResult.setEnum(2, estate);
30             enterPingResult.setString(3, result);
31             enterPingResult.setString(4, token);
32             enterPingResult.execute();
33         }
34     }
35
36     protected static void updatePingResult(int configId, String state, String result, String token) {
37         try (GigiPreparedStatement updatePingResult = new GigiPreparedStatement("UPDATE `domainPinglog` SET `state`=?::`pingState`, `result`=? WHERE `configId`=? AND `challenge`=?")) {
38             updatePingResult.setString(1, DomainPinger.PING_STILL_PENDING == state ? "open" : DomainPinger.PING_SUCCEDED.equals(state) ? "success" : "failed");
39             updatePingResult.setString(2, result);
40             updatePingResult.setInt(3, configId);
41             updatePingResult.setString(4, token);
42             updatePingResult.execute();
43         }
44     }
45
46 }