]> WPIA git - gigi.git/blob - src/org/cacert/gigi/dbObjects/Group.java
additional lang-cleanup
[gigi.git] / src / org / cacert / gigi / dbObjects / Group.java
1 package org.cacert.gigi.dbObjects;
2
3 import org.cacert.gigi.database.GigiPreparedStatement;
4 import org.cacert.gigi.database.GigiResultSet;
5 import org.cacert.gigi.output.template.Outputable;
6 import org.cacert.gigi.output.template.TranslateCommand;
7
8 public enum Group {
9     SUPPORTER("supporter"), ARBITRATOR("arbitrator"), BLOCKEDASSURER("blockedassurer"), BLOCKEDASSUREE("blockedassuree"), BLOCKEDLOGIN("blockedlogin"), BLOCKEDCERT("blockedcert"), TTP_ASSURER("ttp-assurer"), TTP_APPLICANT("ttp-applicant"), CODESIGNING("codesigning"), ORGASSURER("orgassurer"), NUCLEUS_ASSURER("nucleus-assurer");
10
11     private final String dbName;
12
13     private final TranslateCommand tc;
14
15     private Group(String name) {
16         dbName = name;
17         tc = new TranslateCommand(name);
18     }
19
20     public static Group getByString(String name) {
21         return valueOf(name.toUpperCase().replace('-', '_'));
22     }
23
24     public String getDatabaseName() {
25         return dbName;
26     }
27
28     public User[] getMembers(int offset, int count) {
29         try (GigiPreparedStatement gps = new GigiPreparedStatement("SELECT `user` FROM `user_groups` WHERE `permission`=?::`userGroup` AND `deleted` IS NULL OFFSET ? LIMIT ?", true)) {
30             gps.setString(1, dbName);
31             gps.setInt(2, offset);
32             gps.setInt(3, count);
33             GigiResultSet grs = gps.executeQuery();
34             grs.last();
35             User[] users = new User[grs.getRow()];
36             int i = 0;
37             grs.beforeFirst();
38             while (grs.next()) {
39                 users[i++] = User.getById(grs.getInt(1));
40             }
41             return users;
42         }
43     }
44
45     public Outputable getName() {
46         return tc;
47     }
48 }