]> jfr.im git - irc/borknet/trunk.git/blobdiff - core/CoreDBControl.java
14/03/2011 REV 89
[irc/borknet/trunk.git] / core / CoreDBControl.java
index 01ca1d833b0de3e99dc739486a0bf70b037c0164..b636fb5348e5227de9db9e49059c41542e769132 100644 (file)
@@ -58,6 +58,8 @@ public class CoreDBControl
        private HashMap<String,Server> serversByNumeric = new HashMap<String,Server>();\r
        private HashMap<String,ArrayList<Server>> serversByHub = new HashMap<String,ArrayList<Server>>();\r
        private HashMap<String,Server> serversByHost = new HashMap<String,Server>();\r
\r
+       private HashMap<String,Channel> channels = new HashMap<String,Channel>();\r
 \r
        /**\r
         * Constructs a Database connection.\r
@@ -1346,13 +1348,20 @@ public class CoreDBControl
                        C.debug(e);\r
                        C.die("SQL error, trying to die gracefully.");\r
                }\r
+  \r
+  \r
+  Channel c = channels.get(chan.toLowerCase());\r
+  if(c instanceof Channel)\r
+  {\r
+   c.setUserChanMode(user,mode);\r
+  }\r
        }\r
 \r
        /**\r
         * Remove all ops from a channel\r
         * @param chan          channel to change\r
         */\r
-       public void setClearOps(String chan)\r
+       public void setClearMode(String chan, String modes)\r
        {\r
                try\r
                {\r
@@ -1367,6 +1376,14 @@ public class CoreDBControl
                        C.debug(e);\r
                        C.die("SQL error, trying to die gracefully.");\r
                }\r
+  \r
+  \r
+  \r
+  Channel c = channels.get(chan.toLowerCase());\r
+  if(c instanceof Channel)\r
+  {\r
+   c.setClearMode(modes);\r
+  }\r
        }\r
 \r
        /**\r
@@ -1440,6 +1457,12 @@ public class CoreDBControl
                        pstmt = con.prepareStatement("DELETE FROM userchans WHERE BINARY user = ?");\r
                        pstmt.setString(1,numer);\r
                        pstmt.executeUpdate();\r
+   \r
+   ArrayList<String> userchannels = u.getChannels();\r
+   for(String channel: userchannels)\r
+   {\r
+    delUser(numer);\r
+   }\r
                }\r
                catch ( Exception e )\r
                {\r
@@ -1537,6 +1560,17 @@ public class CoreDBControl
                        C.debug(e);\r
                        C.die("SQL error, trying to die gracefully.");\r
                }\r
+  \r
+  Channel c = channels.get(chan.toLowerCase());\r
+  if(c instanceof Channel)\r
+  {\r
+   c.delUser(user);\r
+  }\r
+  User u = usersByNumeric.get(user);\r
+  if(u instanceof User)\r
+  {\r
+   u.partChannel(chan);\r
+  }\r
        }\r
 \r
        public void addUser(String nume,String nick, String host, String mode, String auth, boolean isop, String server, String ip, String fake)\r
@@ -1676,7 +1710,7 @@ public class CoreDBControl
                }\r
        }\r
 \r
-       public void addUserChan(String channel,String user,String modes)\r
+       public void addUserChan(String channel,String user,String modes, String timestamp)\r
        {\r
                try\r
                {\r
@@ -1693,6 +1727,30 @@ public class CoreDBControl
                        C.debug(e);\r
                        C.die("SQL error, trying to die gracefully.");\r
                }\r
+  \r
+  \r
+  Channel c = channels.get(channel.toLowerCase());\r
+  if(c instanceof Channel)\r
+  {\r
+   c.addUser(user);\r
+  }\r
+  else\r
+  {\r
+   if(modes.equals("o"))\r
+   {\r
+    c = new Channel(channel,timestamp,user,true);\r
+   }\r
+   else\r
+   {\r
+    c = new Channel(channel,timestamp,user,false);\r
+   }\r
+   channels.put(channel.toLowerCase(),c);\r
+  }\r
+  User u = usersByNumeric.get(user);\r
+  if(u instanceof User)\r
+  {\r
+   u.joinChannel(channel);\r
+  }\r
        }\r
 \r
        public void save()\r
@@ -1975,4 +2033,34 @@ public class CoreDBControl
                        C.die("SQL error, trying to die gracefully.");\r
                }\r
        }\r
\r
+ public ArrayList<String> checkUserChans()\r
+ {\r
+  ArrayList<String> info = new ArrayList<String>();\r
+  /*\r
+  chanExists\r
+  -isOpChan\r
+  -isOnChan\r
+  -chanHasOps\r
+  getChanUsers\r
+  -getUserChans\r
+  getChannelUsers\r
+  -getUserChanTable\r
+  */\r
+  info.add("MYSQL vs Memory");\r
+  Channel c = channels.get("#azefezfzefzefzfzefzefzf");\r
+  info.add(chanExists("#azefezfzefzefzfzefzefzf")+" "+(c instanceof Channel));\r
+  c = channels.get("#borknet");\r
+  if(c instanceof Channel)\r
+  {\r
+   info.add(chanExists("#BorkNet")+" true");\r
+   info.add(getChanUsers("#BorkNet")+" "+c.getUsercount());\r
+   info.add(Arrays.toString(getChannelUsers("#BorkNet"))+" "+Arrays.toString(c.getUserlist()));\r
+  }\r
+  else\r
+  {\r
+   info.add("#BorkNet not in memory");\r
+  }\r
+  return info;\r
+ }\r
 }
\ No newline at end of file