IMAP: fix keywords implementation, make it case insensitive, implement KEYWORD search

git-svn-id: http://svn.code.sf.net/p/davmail/code/trunk@2024 3d1905a2-6b24-0410-a738-b14d5a86fcbd
This commit is contained in:
mguessan 2012-09-17 21:28:18 +00:00
parent 9475873dd9
commit e33fafb8b2
2 changed files with 11 additions and 3 deletions

View File

@ -537,7 +537,7 @@ public class Field {
} else if (field.isMultivalued) {
// multivalued field, split values separated by \n
List<XmlSerializable> valueList = new ArrayList<XmlSerializable>();
String[] values = value.split("\n");
String[] values = value.split(",");
for (final String singleValue : values) {
valueList.add(new XmlSerializable() {
public Element toXml(Document document) {

View File

@ -1271,6 +1271,8 @@ public class ImapConnection extends AbstractConnection {
session.contains("from", value),
session.contains("to", value),
session.contains("cc", value));
} else if ("KEYWORD".equals(token)) {
return session.contains("keywords", tokens.nextToken());
} else if ("FROM".equals(token)) {
return session.contains("from", tokens.nextToken());
} else if ("TO".equals(token)) {
@ -1412,7 +1414,7 @@ public class ImapConnection extends AbstractConnection {
String[] keywords = message.keywords.split(",");
HashSet<String> keywordSet = new HashSet<String>();
for (String value : keywords) {
if (!value.equals(flag)) {
if (!value.equalsIgnoreCase(flag)) {
keywordSet.add(value);
}
}
@ -1444,13 +1446,19 @@ public class ImapConnection extends AbstractConnection {
message.junk = true;
} else {
HashSet<String> keywordSet = new HashSet<String>();
boolean hasFlag = false;
if (message.keywords != null) {
String[] keywords = message.keywords.split(",");
for (String value : keywords) {
keywordSet.add(value);
if (value.equalsIgnoreCase(flag)) {
hasFlag = true;
}
}
}
keywordSet.add(flag);
if (!hasFlag) {
keywordSet.add(flag);
}
message.keywords = StringUtil.join(keywordSet, ",");
properties.put("keywords", message.keywords);
}