Skip to content

Commit 1d9cefb

Browse files
committed
Improve protocol objects
1 parent f73e80e commit 1d9cefb

5 files changed

Lines changed: 129 additions & 1 deletion

File tree

src/main/java/com/yocto/yoclib/imap/protocol/ProtocolAtom.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ public ProtocolAtom(String value){
77
// TODO: Add checks
88
}
99

10+
public boolean isNIL(){
11+
return "NIL".equals(this.value);
12+
}
13+
1014
@Override
1115
public String toProtocolString(){
1216
return this.value;

src/main/java/com/yocto/yoclib/imap/protocol/ProtocolConstants.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,14 @@ public class ProtocolConstants {
66

77
public static final char DQUOTE = '"';
88

9+
public static final char SPACE = ' ';
10+
11+
public static final char PARENTHESIS_LEFT = '(';
12+
13+
public static final char PARENTHESIS_RIGHT = ')';
14+
15+
public static final char SQUARE_BRACKET_LEFT = '[';
16+
17+
public static final char SQUARE_BRACKET_RIGHT = ']';
18+
919
}

src/main/java/com/yocto/yoclib/imap/protocol/ProtocolList.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public ProtocolObject[] getValue() {
1717

1818
@Override
1919
public String toProtocolString(){
20-
return "("+Arrays.stream(this.value).map(ProtocolObject::toProtocolString).collect(Collectors.joining(" "))+")";
20+
return ProtocolConstants.PARENTHESIS_LEFT+Arrays.stream(this.value).map(ProtocolObject::toProtocolString).collect(Collectors.joining(Character.toString(ProtocolConstants.SPACE)))+ProtocolConstants.PARENTHESIS_RIGHT;
2121
}
2222

2323
@Override
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
package com.yocto.yoclib.imap.protocol;
2+
3+
public class ProtocolSectionPartial extends ProtocolObject{
4+
5+
private final ProtocolAtom atom;
6+
private final ProtocolSubordinate subordinate;
7+
private final Integer offset;
8+
private final Integer length;
9+
10+
public ProtocolSectionPartial(ProtocolAtom atom,ProtocolSubordinate subordinate,Integer offset,Integer length){
11+
if(atom==null){
12+
throw new RuntimeException("Atom cannot be null.");
13+
}
14+
if(offset!=null && length==null){
15+
throw new RuntimeException("Length cannot be null.");
16+
}
17+
this.atom = atom;
18+
this.subordinate = subordinate;
19+
this.offset = offset;
20+
this.length = length;
21+
}
22+
23+
public ProtocolSectionPartial(ProtocolAtom atom,ProtocolSubordinate subordinate,Integer length){
24+
this(atom,subordinate,null,length);
25+
}
26+
27+
public ProtocolSectionPartial(ProtocolAtom atom,ProtocolSubordinate subordinate){
28+
this(atom,subordinate,null,null);
29+
}
30+
31+
public ProtocolSectionPartial(ProtocolAtom atom,Integer offset,Integer length){
32+
this(atom,null,offset,length);
33+
}
34+
35+
public ProtocolSectionPartial(ProtocolAtom atom,Integer length){
36+
this(atom,null,null,length);
37+
}
38+
39+
public ProtocolSectionPartial(ProtocolAtom atom){
40+
this(atom,null,null,null);
41+
}
42+
43+
public ProtocolAtom getAtom() {
44+
return this.atom;
45+
}
46+
47+
public ProtocolSubordinate getSubordinate() {
48+
return this.subordinate;
49+
}
50+
51+
public Integer getOffset() {
52+
return this.offset;
53+
}
54+
55+
public Integer getLength() {
56+
return this.length;
57+
}
58+
59+
private String partialToProtocolString(){
60+
if(this.length!=null){
61+
if(this.offset!=null){
62+
return "<"+this.offset+"."+this.length+">";
63+
}
64+
return "<"+this.length+">";
65+
}
66+
return "";
67+
}
68+
69+
@Override
70+
public String toProtocolString(){
71+
return this.atom.toProtocolString()+this.subordinate.toProtocolString()+this.partialToProtocolString();
72+
}
73+
74+
@Override
75+
public String toString() {
76+
return "ProtocolSectionPartial{" +
77+
"atom=" + atom +
78+
", subordinate=" + subordinate +
79+
", offset=" + offset +
80+
", length=" + length +
81+
'}';
82+
}
83+
84+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.yocto.yoclib.imap.protocol;
2+
3+
import java.util.Arrays;
4+
import java.util.stream.Collectors;
5+
6+
public class ProtocolSubordinate extends ProtocolObject {
7+
8+
private final ProtocolObject[] value;
9+
10+
public ProtocolSubordinate(ProtocolObject[] value){
11+
this.value = value;
12+
}
13+
14+
public ProtocolObject[] getValue() {
15+
return this.value;
16+
}
17+
18+
@Override
19+
public String toProtocolString(){
20+
return ProtocolConstants.SQUARE_BRACKET_LEFT+Arrays.stream(this.value).map(ProtocolObject::toProtocolString).collect(Collectors.joining(Character.toString(ProtocolConstants.SPACE)))+ProtocolConstants.SQUARE_BRACKET_RIGHT;
21+
}
22+
23+
@Override
24+
public String toString() {
25+
return "ProtocolSubordinate{" +
26+
"value=" + Arrays.toString(value) +
27+
'}';
28+
}
29+
30+
}

0 commit comments

Comments
 (0)