1 package org.cacert.gigi.dbObjects;
3 import java.sql.Timestamp;
5 import java.util.HashMap;
7 import org.cacert.gigi.database.GigiPreparedStatement;
8 import org.cacert.gigi.database.GigiResultSet;
12 public enum CATSType {
13 ASSURER_CHALLENGE("Agent Qualifying Challenge"),
15 ORG_AGENT_CHALLENGE("Organisation Agent Qualifying Challenge"),
17 TTP_AGENT_CHALLENGE("TTP Agent Qualifying Challenge"),
19 TTP_TOPUP_AGENT_CHALLENGE_NAME("TTP TOPUP Agent Qualifying Challenge"),
21 CODE_SIGNING_CHALLENGE_NAME("Code Signing Challenge"),
23 ORG_ADMIN_DP_CHALLENGE_NAME("Organisation Administrator Data Protection Challenge"),
25 SUPPORT_DP_CHALLENGE_NAME("Support Data Protection Challenge");
27 private final String displayName;
31 private CATSType(String displayName) {
32 this.displayName = displayName;
33 id = getID(displayName);
36 public String getDisplayName() {
45 private static HashMap<String, Integer> names = new HashMap<>();
52 try (GigiPreparedStatement st = new GigiPreparedStatement("SELECT `id`, `type_text` FROM `cats_type`")) {
53 GigiResultSet res = st.executeQuery();
55 names.put(res.getString(2), res.getInt(1));
60 public static synchronized int getID(String name) {
61 Integer i = names.get(name);
63 try (GigiPreparedStatement ps = new GigiPreparedStatement("INSERT INTO `cats_type` SET `type_text`=?")) {
64 ps.setString(1, name);
66 i = ps.lastInsertId();
73 public static void enterResult(User user, CATSType testType, Date passDate, String language, String version) {
74 enterResult(user, testType.id, passDate, language, version);
77 public static void enterResult(User user, String testType, Date passDate, String language, String version) {
78 enterResult(user, getID(testType), passDate, language, version);
81 private static void enterResult(User user, int testTypeId, Date passDate, String language, String version) {
83 try (GigiPreparedStatement ps = new GigiPreparedStatement("INSERT INTO `cats_passed` SET `user_id`=?, `variant_id`=?, `pass_date`=?, `language`=?, `version`=?")) {
84 ps.setInt(1, user.getId());
85 ps.setInt(2, testTypeId);
86 ps.setTimestamp(3, new Timestamp(passDate.getTime()));
87 ps.setString(4, language);
88 ps.setString(5, version);