in geronimo-mail_2.1_impl/geronimo-mail_2.1_provider/src/main/java/org/apache/geronimo/mail/store/imap/connection/IMAPCommand.java [851:922]
protected void appendFlag(FlagTerm term, String charset) {
// decide which one we need to test for
boolean set = term.getTestSet();
Flags flags = term.getFlags();
Flags.Flag[] systemFlags = flags.getSystemFlags();
String[] userFlags = flags.getUserFlags();
// empty search term? not sure if this is an error. The default search implementation would
// not consider this an error, so we'll just ignore this.
if (systemFlags.length == 0 && userFlags.length == 0) {
return;
}
if (set) {
for (int i = 0; i < systemFlags.length; i++) {
Flags.Flag flag = systemFlags[i];
if (flag == Flags.Flag.ANSWERED) {
appendAtom("ANSWERED");
}
else if (flag == Flags.Flag.DELETED) {
appendAtom("DELETED");
}
else if (flag == Flags.Flag.DRAFT) {
appendAtom("DRAFT");
}
else if (flag == Flags.Flag.FLAGGED) {
appendAtom("FLAGGED");
}
else if (flag == Flags.Flag.RECENT) {
appendAtom("RECENT");
}
else if (flag == Flags.Flag.SEEN) {
appendAtom("SEEN");
}
}
}
else {
for (int i = 0; i < systemFlags.length; i++) {
Flags.Flag flag = systemFlags[i];
if (flag == Flags.Flag.ANSWERED) {
appendAtom("UNANSWERED");
}
else if (flag == Flags.Flag.DELETED) {
appendAtom("UNDELETED");
}
else if (flag == Flags.Flag.DRAFT) {
appendAtom("UNDRAFT");
}
else if (flag == Flags.Flag.FLAGGED) {
appendAtom("UNFLAGGED");
}
else if (flag == Flags.Flag.RECENT) {
// not UNRECENT?
appendAtom("OLD");
}
else if (flag == Flags.Flag.SEEN) {
appendAtom("UNSEEN");
}
}
}
// User flags are done as either "KEYWORD name" or "UNKEYWORD name"
for (int i = 0; i < userFlags.length; i++) {
appendAtom(set ? "KEYWORD" : "UNKEYWORD");
appendAtom(userFlags[i]);
}
}