diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml
new file mode 100644
index 0000000..0c0c338
--- /dev/null
+++ b/.idea/deploymentTargetDropDown.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 8a1c41f..d66840c 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -4,11 +4,9 @@
+
\ No newline at end of file
diff --git a/.idea/migrations.xml b/.idea/migrations.xml
new file mode 100644
index 0000000..f8051a6
--- /dev/null
+++ b/.idea/migrations.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/wkim/src/main/java/com/xinbida/wukongim/db/ChannelDBManager.java b/wkim/src/main/java/com/xinbida/wukongim/db/ChannelDBManager.java
index 999decd..9042211 100644
--- a/wkim/src/main/java/com/xinbida/wukongim/db/ChannelDBManager.java
+++ b/wkim/src/main/java/com/xinbida/wukongim/db/ChannelDBManager.java
@@ -37,29 +37,18 @@ public class ChannelDBManager {
}
public List queryWithChannelIdsAndChannelType(List channelIDs, byte channelType) {
- StringBuffer stringBuffer = new StringBuffer();
- for (int i = 0, size = channelIDs.size(); i < size; i++) {
- if (stringBuffer.toString().contains(channelIDs.get(i)))
- continue;
- if (!TextUtils.isEmpty(stringBuffer)) {
- stringBuffer.append(",");
- }
- stringBuffer.append("'").append(channelIDs.get(i)).append("'");
- }
- Object[] args = new Object[2];
- args[0] = stringBuffer.toString();
- args[1] = channelType;
- String sql = "select * from " + channel + " where " + WKDBColumns.WKChannelColumns.channel_id + " in (?) and " + WKDBColumns.WKChannelColumns.channel_type + "=?";
List list = new ArrayList<>();
if (WKIMApplication
.getInstance()
.getDbHelper() == null) {
return list;
}
+ List args = new ArrayList<>(channelIDs);
+ args.add(String.valueOf(channelType));
try (Cursor cursor = WKIMApplication
.getInstance()
.getDbHelper()
- .rawQuery(sql, args)) {
+ .select(channel, "channel_id in (" + WKCursor.getPlaceholders(channelIDs.size()) + ") and channel_type=?", args.toArray(new String[0]), null)) {
if (cursor == null) {
return list;
}
diff --git a/wkim/src/main/java/com/xinbida/wukongim/db/ChannelMembersDbManager.java b/wkim/src/main/java/com/xinbida/wukongim/db/ChannelMembersDbManager.java
index 5d735e9..6d63bf3 100644
--- a/wkim/src/main/java/com/xinbida/wukongim/db/ChannelMembersDbManager.java
+++ b/wkim/src/main/java/com/xinbida/wukongim/db/ChannelMembersDbManager.java
@@ -144,21 +144,14 @@ public class ChannelMembersDbManager {
}
public List queryWithUIDs(String channelID, byte channelType, List uidList) {
- StringBuilder sb = new StringBuilder();
- Object[] args = new Object[3];
- args[0] = channelID;
- args[1] = channelType;
- String sql = "select * from " + channelMembers + " where channel_id =? and channel_type=? and member_uid in (?)";
- for (int i = 0, size = uidList.size(); i < size; i++) {
- if (i != 0) {
- sb.append(",");
- }
- sb.append("'").append(uidList.get(i)).append("'");
- }
- args[2] = sb.toString();
+ List args = new ArrayList<>();
+ args.add(channelID);
+ args.add(String.valueOf(channelType));
+ args.addAll(uidList);
+ uidList.add(String.valueOf(channelType));
Cursor cursor = WKIMApplication
.getInstance()
- .getDbHelper().rawQuery(sql, args);
+ .getDbHelper().select(channelMembers, "channel_id =? and channel_type=? and member_uid in (" + WKCursor.getPlaceholders(uidList.size()) + ")", args.toArray(new String[0]), null);
List list = new ArrayList<>();
if (cursor == null) {
return list;
diff --git a/wkim/src/main/java/com/xinbida/wukongim/db/ConversationDbManager.java b/wkim/src/main/java/com/xinbida/wukongim/db/ConversationDbManager.java
index c67b9d0..92c3335 100644
--- a/wkim/src/main/java/com/xinbida/wukongim/db/ConversationDbManager.java
+++ b/wkim/src/main/java/com/xinbida/wukongim/db/ConversationDbManager.java
@@ -95,17 +95,12 @@ public class ConversationDbManager {
}
public List queryWithChannelIds(List channelIds) {
- StringBuilder sb = new StringBuilder();
- for (int i = 0, size = channelIds.size(); i < size; i++) {
- if (i != 0) sb.append(",");
- sb.append("'").append(channelIds.get(i)).append("'");
- }
- String sql = "select " + conversation + ".*," + channelCols + "," + extraCols + " from " + conversation + " left join " + channel + " on " + conversation + ".channel_id=" + channel + ".channel_id and " + conversation + ".channel_type=" + channel + ".channel_type left join " + conversationExtra + " on " + conversation + ".channel_id=" + conversationExtra + ".channel_id and " + conversation + ".channel_type=" + conversationExtra + ".channel_type where " + conversation + ".is_deleted=0 and " + conversation + ".channel_id in (?)";
+ String sql = "select " + conversation + ".*," + channelCols + "," + extraCols + " from " + conversation + " left join " + channel + " on " + conversation + ".channel_id=" + channel + ".channel_id and " + conversation + ".channel_type=" + channel + ".channel_type left join " + conversationExtra + " on " + conversation + ".channel_id=" + conversationExtra + ".channel_id and " + conversation + ".channel_type=" + conversationExtra + ".channel_type where " + conversation + ".is_deleted=0 and " + conversation + ".channel_id in (" + WKCursor.getPlaceholders(channelIds.size()) + ")";
List list = new ArrayList<>();
try (Cursor cursor = WKIMApplication
.getInstance()
.getDbHelper()
- .rawQuery(sql, new Object[]{sb.toString()})) {
+ .rawQuery(sql, channelIds.toArray(new String[0]))) {
if (cursor == null) {
return list;
}
@@ -368,16 +363,8 @@ public class ConversationDbManager {
}
private List queryWithExtraChannelIds(List channelIds) {
- StringBuilder sb = new StringBuilder();
- String sql = "select * from " + conversationExtra + " where channel_id in (?)";
- for (int i = 0, size = channelIds.size(); i < size; i++) {
- if (i != 0) {
- sb.append(",");
- }
- sb.append("'").append(channelIds.get(i)).append("'");
- }
List list = new ArrayList<>();
- try (Cursor cursor = WKIMApplication.getInstance().getDbHelper().rawQuery(sql, new Object[]{sb.toString()})) {
+ try (Cursor cursor = WKIMApplication.getInstance().getDbHelper().select(conversationExtra, "channel_id in (" + WKCursor.getPlaceholders(channelIds.size()) + ")", channelIds.toArray(new String[0]), null)) {
if (cursor == null) {
return list;
}
diff --git a/wkim/src/main/java/com/xinbida/wukongim/db/MsgDbManager.java b/wkim/src/main/java/com/xinbida/wukongim/db/MsgDbManager.java
index a4cd9f9..3e737ac 100644
--- a/wkim/src/main/java/com/xinbida/wukongim/db/MsgDbManager.java
+++ b/wkim/src/main/java/com/xinbida/wukongim/db/MsgDbManager.java
@@ -633,13 +633,7 @@ public class MsgDbManager {
public List queryWithClientMsgNos(List clientMsgNos) {
List msgs = new ArrayList<>();
- StringBuilder sb = new StringBuilder();
- String sql = "select * from " + message + " where " + WKDBColumns.WKMessageColumns.client_msg_no + " in (?)";
- for (int i = 0, size = clientMsgNos.size(); i < size; i++) {
- if (i != 0) sb.append(",");
- sb.append("'").append(clientMsgNos.get(i)).append("'");
- }
- try (Cursor cursor = WKIMApplication.getInstance().getDbHelper().rawQuery(sql, new Object[]{sb.toString()})) {
+ try (Cursor cursor = WKIMApplication.getInstance().getDbHelper().select(message, "client_msg_no in (" + WKCursor.getPlaceholders(clientMsgNos.size()) + ")", clientMsgNos.toArray(new String[0]), null)) {
if (cursor == null) {
return msgs;
}
@@ -856,14 +850,8 @@ public class MsgDbManager {
}
private List queryMsgExtrasWithMsgIds(List msgIds) {
- StringBuilder sb = new StringBuilder();
- String sql = "select * from " + messageExtra + " where message_id in (?)";
- for (int i = 0, size = msgIds.size(); i < size; i++) {
- if (i != 0) sb.append(",");
- sb.append("'").append(msgIds.get(i)).append("'");
- }
List list = new ArrayList<>();
- try (Cursor cursor = WKIMApplication.getInstance().getDbHelper().rawQuery(sql, new Object[]{sb.toString()})) {
+ try (Cursor cursor = WKIMApplication.getInstance().getDbHelper().select(messageExtra, "message_id in (" + WKCursor.getPlaceholders(msgIds.size()) + ")", msgIds.toArray(new String[0]), null)) {
if (cursor == null) {
return list;
}
@@ -1320,14 +1308,8 @@ public class MsgDbManager {
}
public List queryWithMsgIds(List messageIds) {
- StringBuffer sb = new StringBuffer();
- for (int i = 0, size = messageIds.size(); i < size; i++) {
- if (!TextUtils.isEmpty(sb)) {
- sb.append(",");
- }
- sb.append("'").append(messageIds.get(i)).append("'");
- }
- String sql = "select " + messageCols + "," + extraCols + " from " + message + " left join " + messageExtra + " on " + message + ".message_id=" + messageExtra + ".message_id where " + message + ".message_id in (?)";
+
+ String sql = "select " + messageCols + "," + extraCols + " from " + message + " left join " + messageExtra + " on " + message + ".message_id=" + messageExtra + ".message_id where " + message + ".message_id in (" + WKCursor.getPlaceholders(messageIds.size()) + ")";
List list = new ArrayList<>();
List gChannelIds = new ArrayList<>();
List pChannelIds = new ArrayList<>();
@@ -1335,7 +1317,7 @@ public class MsgDbManager {
try (Cursor cursor = WKIMApplication
.getInstance()
.getDbHelper()
- .rawQuery(sql, new Object[]{sb.toString()})) {
+ .rawQuery(sql, messageIds.toArray())) {
if (cursor == null) {
return list;
}
@@ -1545,7 +1527,7 @@ public class MsgDbManager {
Cursor cursor = WKIMApplication
.getInstance()
.getDbHelper()
- .rawQuery(sql,new Object[]{msgID});
+ .rawQuery(sql, new Object[]{msgID});
if (cursor != null) {
if (cursor.moveToFirst()) {
extra = serializeMsgExtra(cursor);
diff --git a/wkim/src/main/java/com/xinbida/wukongim/db/MsgReactionDBManager.java b/wkim/src/main/java/com/xinbida/wukongim/db/MsgReactionDBManager.java
index 965f51c..f8ec2e5 100644
--- a/wkim/src/main/java/com/xinbida/wukongim/db/MsgReactionDBManager.java
+++ b/wkim/src/main/java/com/xinbida/wukongim/db/MsgReactionDBManager.java
@@ -101,20 +101,11 @@ class MsgReactionDBManager {
}
public List queryWithMessageIds(List messageIds) {
- StringBuffer stringBuffer = new StringBuffer();
- for (int i = 0, size = messageIds.size(); i < size; i++) {
- if (!TextUtils.isEmpty(stringBuffer)) {
- stringBuffer.append(",");
- }
- stringBuffer.append(messageIds.get(i));
- }
- String sql = "select * from " + messageReaction + " where message_id in (?) and is_deleted=0 ORDER BY created_at desc";
List list = new ArrayList<>();
List channelIds = new ArrayList<>();
try (Cursor cursor = WKIMApplication
.getInstance()
- .getDbHelper()
- .rawQuery(sql, new Object[]{stringBuffer.toString()})) {
+ .getDbHelper().select(messageReaction, "message_id in (" + WKCursor.getPlaceholders(messageIds.size()) + ")", messageIds.toArray(new String[0]), "created_at desc")) {
if (cursor == null) {
return list;
}
diff --git a/wkim/src/main/java/com/xinbida/wukongim/db/ReminderDBManager.java b/wkim/src/main/java/com/xinbida/wukongim/db/ReminderDBManager.java
index ebd0487..76e9bd9 100644
--- a/wkim/src/main/java/com/xinbida/wukongim/db/ReminderDBManager.java
+++ b/wkim/src/main/java/com/xinbida/wukongim/db/ReminderDBManager.java
@@ -85,12 +85,12 @@ public class ReminderDBManager {
}
stringBuffer.append(ids.get(i));
}
- String sql = "select * from " + reminders + " where reminder_id in (?)";
+ String sql = "select * from " + reminders + " where reminder_id in (" + stringBuffer + ")";
List list = new ArrayList<>();
try (Cursor cursor = WKIMApplication
.getInstance()
.getDbHelper()
- .rawQuery(sql, new Object[]{stringBuffer.toString()})) {
+ .rawQuery(sql)) {
if (cursor == null) {
return list;
}
@@ -104,19 +104,11 @@ public class ReminderDBManager {
}
private List queryWithChannelIds(List channelIds) {
- StringBuilder stringBuffer = new StringBuilder();
- for (int i = 0, size = channelIds.size(); i < size; i++) {
- if (i != 0) {
- stringBuffer.append(",");
- }
- stringBuffer.append("'").append(channelIds.get(i)).append("'");
- }
- String sql = "select * from " + reminders + " where channel_id in (?)";
List list = new ArrayList<>();
try (Cursor cursor = WKIMApplication
.getInstance()
.getDbHelper()
- .rawQuery(sql, new Object[]{stringBuffer.toString()})) {
+ .select(reminders, "channel_id in (" + WKCursor.getPlaceholders(channelIds.size()) + ")", channelIds.toArray(new String[0]), null)) {
if (cursor == null) {
return list;
}
diff --git a/wkim/src/main/java/com/xinbida/wukongim/db/RobotDBManager.java b/wkim/src/main/java/com/xinbida/wukongim/db/RobotDBManager.java
index 60ad5f7..9ae0963 100644
--- a/wkim/src/main/java/com/xinbida/wukongim/db/RobotDBManager.java
+++ b/wkim/src/main/java/com/xinbida/wukongim/db/RobotDBManager.java
@@ -38,10 +38,9 @@ public class RobotDBManager {
public boolean isExitMenu(String robotID, String cmd) {
boolean isExist = false;
- String sql = "select * from " + robotMenu + " where robot_id =? and cmd=?";
try (Cursor cursor = WKIMApplication
.getInstance()
- .getDbHelper().rawQuery(sql, new Object[]{robotID, cmd})) {
+ .getDbHelper().select(robotMenu, "robot_id =? and cmd=?", new String[]{robotID, cmd}, null)) {
if (cursor != null && cursor.moveToLast()) {
isExist = true;
}
@@ -78,10 +77,9 @@ public class RobotDBManager {
public boolean isExist(String robotID) {
boolean isExist = false;
- String sql = "select * from " + robot + " where robot_id =?";
try (Cursor cursor = WKIMApplication
.getInstance()
- .getDbHelper().rawQuery(sql, new Object[]{robotID})) {
+ .getDbHelper().select(robot, "robot_id=?", new String[]{robotID}, null)) {
if (cursor != null && cursor.moveToLast()) {
isExist = true;
}
@@ -138,10 +136,9 @@ public class RobotDBManager {
public WKRobot query(String robotID) {
WKRobot wkRobot = null;
- String sql = "select * from " + robot + " where robot_id =?";
try (Cursor cursor = WKIMApplication
.getInstance()
- .getDbHelper().rawQuery(sql, new Object[]{robotID})) {
+ .getDbHelper().select(robot, "robot_id =?", new String[]{robotID}, null)) {
if (cursor == null) {
return null;
}
@@ -154,10 +151,9 @@ public class RobotDBManager {
public WKRobot queryWithUsername(String username) {
WKRobot wkRobot = null;
- String sql = "select * from " + robot + " where username =?";
try (Cursor cursor = WKIMApplication
.getInstance()
- .getDbHelper().rawQuery(sql, new Object[]{username})) {
+ .getDbHelper().select(robot, "username=?", new String[]{username}, null)) {
if (cursor == null) {
return null;
}
@@ -169,17 +165,8 @@ public class RobotDBManager {
}
public List queryRobots(List robotIds) {
- String sql = "select * from " + robot + " where robot_id in (?)";
- StringBuilder sb = new StringBuilder();
- for (int i = 0; i < robotIds.size(); i++) {
- if (i != 0) {
- sb.append(",");
- }
- sb.append("'").append(robotIds.get(i)).append("'");
- }
List list = new ArrayList<>();
-
- try (Cursor cursor = WKIMApplication.getInstance().getDbHelper().rawQuery(sql, new Object[]{sb.toString()})) {
+ try (Cursor cursor = WKIMApplication.getInstance().getDbHelper().select(robot, "robot_id in (" + WKCursor.getPlaceholders(robotIds.size()) + ")", robotIds.toArray(new String[0]), null)) {
if (cursor == null) {
return list;
}
@@ -192,17 +179,8 @@ public class RobotDBManager {
}
public List queryRobotMenus(List robotIds) {
- String sql = "select * from " + robotMenu + " where robot_id in (?)";
- StringBuilder sb = new StringBuilder();
- for (int i = 0; i < robotIds.size(); i++) {
- if (i != 0) {
- sb.append(",");
- }
- sb.append("'").append(robotIds.get(i)).append("'");
- }
List list = new ArrayList<>();
-
- try (Cursor cursor = WKIMApplication.getInstance().getDbHelper().rawQuery(sql, new Object[]{sb.toString()})) {
+ try (Cursor cursor = WKIMApplication.getInstance().getDbHelper().select(robotMenu, "robot_id in (" + WKCursor.getPlaceholders(robotIds.size()) + ")", robotIds.toArray(new String[0]), null)) {
if (cursor == null) {
return list;
}
@@ -218,7 +196,7 @@ public class RobotDBManager {
List list = new ArrayList<>();
String sql = "select * from " + robotMenu + " where robot_id =?";
- try (Cursor cursor = WKIMApplication.getInstance().getDbHelper().rawQuery(sql,new Object[]{robotID})) {
+ try (Cursor cursor = WKIMApplication.getInstance().getDbHelper().rawQuery(sql, new Object[]{robotID})) {
if (cursor == null) {
return list;
}
diff --git a/wkim/src/main/java/com/xinbida/wukongim/db/WKCursor.java b/wkim/src/main/java/com/xinbida/wukongim/db/WKCursor.java
index bf3b50c..fe271a3 100644
--- a/wkim/src/main/java/com/xinbida/wukongim/db/WKCursor.java
+++ b/wkim/src/main/java/com/xinbida/wukongim/db/WKCursor.java
@@ -45,4 +45,19 @@ public class WKCursor {
return null;
}
}
+
+ public static String getPlaceholders(int count) {
+ StringBuilder placeholders = new StringBuilder();
+ for (int i = 0; i < count; i++) {
+ if (i != 0) {
+ placeholders.append(", ");
+ }
+ placeholders.append("?");
+ }
+ return placeholders.toString();
+ }
+
+ public static void copyArray(String[] src, String[] dest) {
+ System.arraycopy(src, 0, dest, 0, src.length);
+ }
}