]> andersk Git - moira.git/blobdiff - webmoira/mit/moira/MoiraConnect.java
Added WebMoira sources
[moira.git] / webmoira / mit / moira / MoiraConnect.java
diff --git a/webmoira/mit/moira/MoiraConnect.java b/webmoira/mit/moira/MoiraConnect.java
new file mode 100644 (file)
index 0000000..d34d185
--- /dev/null
@@ -0,0 +1,119 @@
+package mit.moira;
+
+public class MoiraConnect {
+    boolean connected = false;
+    boolean isauth = false;
+    Object LOCK;
+
+    String server = "";
+    MoiraConnect() {
+    }
+
+    public MoiraConnect(String server, Object lock) {
+       this.server = server;
+       this.LOCK = lock;
+    }
+
+    public void connect() throws MoiraException {
+       if (!connected) {
+           MoiraConnectInternal.connect(server);
+           connected = true;
+       }
+    }
+           
+    public void auth() throws MoiraException {
+       if (!isauth) {
+           synchronized(LOCK) {
+               MoiraConnectInternal.auth();
+           }
+           isauth = true;
+       }
+    }
+
+    public void proxy(String user) throws MoiraException {
+       MoiraConnectInternal.proxy(user);
+    }
+           
+    public void disconnect() {
+       if (connected) {
+           MoiraConnectInternal.disconnect();
+           connected = false;
+           isauth = false;
+       }
+    }
+
+    public ListInfo get_list_info(String list) throws MoiraException {
+       if (!connected) throw new MoiraException("Not Connected");
+       String [] args = new String[1];
+       args[0] = list;
+       Object [] retinternal = MoiraConnectInternal.mr_query("get_list_info", args);
+       if (retinternal == null) return (null);
+       if (retinternal.length == 0) return (null);
+       if (retinternal.length != 1) throw new MoiraException("get_list_info returned more then one list!");
+       String [] entry = (String []) retinternal[0];
+       return (new ListInfo(entry[0], entry[1], entry[2], entry[3], entry[4], entry[5], entry[6], entry[7], entry[8], entry[9], entry[10], entry[11], entry[12]));
+    }
+
+    void update_list_info(String list, ListInfo info) throws MoiraException {
+       if (!connected) throw new MoiraException("Not Connected");
+       String [] args = new String[11];
+       args[0] = list;
+       args[1] = info.name;
+       args[2] = info.active ? "1" : "0";
+       args[3] = info.bpublic ? "1" : "0";
+       args[4] = info.hidden ? "1" : "0";
+       args[5] = info.maillist ? "1" : "0";
+       args[6] = info.grouplist ? "1" : "0";
+       args[7] = info.gid_original;
+       args[8] = info.ace_type;
+       args[9] = info.ace_name;
+       args[10] = info.description;
+       Object [] retinternal = MoiraConnectInternal.mr_query("update_list", args);
+       return;
+    }
+
+    void delete_member_from_list(String list, String type, String member) throws MoiraException {
+       if (!connected) throw new MoiraException("Not Connected");
+       String [] args = new String[3];
+       args[0] = list;
+       args[1] = type;
+       args[2] = member;
+       Object [] retinternal = MoiraConnectInternal.mr_query("delete_member_from_list", args);
+       return;
+    }
+
+    void add_member_to_list(String list, String type, String member) throws MoiraException {
+       if (!connected) throw new MoiraException("Not Connected");
+       String [] args = new String[3];
+       args[0] = list;
+       args[1] = type;
+       args[2] = member;
+       Object [] retinternal = MoiraConnectInternal.mr_query("add_member_to_list", args);
+       return;
+    }
+
+    public Member [] get_members_of_list(String list) throws MoiraException {
+       if (!connected) throw new MoiraException("Not Connected");
+       String [] args = new String[1];
+       args[0] = list;
+       Object [] retinternal = MoiraConnectInternal.mr_query("get_members_of_list", args);
+       if (retinternal == null) return (null);
+       Member [] retval = new Member[retinternal.length];
+       for (int i = 0; i < retinternal.length; i++) {
+           String [] entry = (String []) retinternal[i];
+           retval[i] = new Member(entry[0], entry[1]);
+       }
+       return (retval);
+    }
+}
+
+class MoiraConnectInternal {
+    static native void connect(String server) throws MoiraException;
+    static native void auth() throws MoiraException;
+    static native void proxy(String user) throws MoiraException;
+    static native void disconnect();
+    static native Object [] mr_query(String command, String [] args) throws MoiraException;
+    static {
+       System.loadLibrary("moirajava");
+    }
+}
This page took 0.375104 seconds and 4 git commands to generate.