1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package io.github.tonywasher.joceanus.moneywise.quicken.file;
18
19 import java.util.Iterator;
20 import java.util.List;
21
22 import io.github.tonywasher.joceanus.moneywise.data.basic.MoneyWiseTransTag;
23 import io.github.tonywasher.joceanus.moneywise.quicken.definitions.MoneyWiseQClassLineType;
24 import io.github.tonywasher.joceanus.moneywise.quicken.file.MoneyWiseQIFLine.MoneyWiseQIFStringLine;
25
26
27
28
29 public class MoneyWiseQIFClass
30 extends MoneyWiseQIFRecord<MoneyWiseQClassLineType>
31 implements Comparable<MoneyWiseQIFClass> {
32
33
34
35 protected static final String QIF_ITEM = "Class";
36
37
38
39
40 private final String theName;
41
42
43
44
45 private final String theDesc;
46
47
48
49
50
51
52
53 public MoneyWiseQIFClass(final MoneyWiseQIFFile pFile,
54 final MoneyWiseTransTag pTag) {
55
56 super(pFile, MoneyWiseQClassLineType.class);
57
58
59 theName = pTag.getName();
60 theDesc = pTag.getDesc();
61
62
63 addLine(new MoneyWiseQIFClassNameLine(theName));
64 if (theDesc != null) {
65 addLine(new MoneyWiseQIFClassDescLine(theDesc));
66 }
67 }
68
69
70
71
72
73
74
75 protected MoneyWiseQIFClass(final MoneyWiseQIFFile pFile,
76 final List<String> pLines) {
77
78 super(pFile, MoneyWiseQClassLineType.class);
79
80
81 String myName = null;
82 String myDesc = null;
83
84
85 final Iterator<String> myIterator = pLines.iterator();
86 while (myIterator.hasNext()) {
87 final String myLine = myIterator.next();
88
89
90 final MoneyWiseQClassLineType myType = MoneyWiseQClassLineType.parseLine(myLine);
91 if (myType != null) {
92
93 final String myData = myLine.substring(myType.getSymbol().length());
94
95
96 switch (myType) {
97 case NAME:
98 addLine(new MoneyWiseQIFClassNameLine(myData));
99 myName = myData;
100 break;
101 case DESCRIPTION:
102 addLine(new MoneyWiseQIFClassDescLine(myData));
103 myDesc = myData;
104 break;
105 default:
106 throw new IllegalArgumentException("Unexpected QClassLineType: " + myLine);
107 }
108 }
109 }
110
111
112 theName = myName;
113 theDesc = myDesc;
114 }
115
116 @Override
117 public String toString() {
118 return getName();
119 }
120
121
122
123
124
125
126 public String getName() {
127 return theName;
128 }
129
130
131
132
133
134
135 public String getDesc() {
136 return theDesc;
137 }
138
139 @Override
140 public int compareTo(final MoneyWiseQIFClass pThat) {
141 return theName.compareTo(pThat.getName());
142 }
143
144
145
146
147 public class MoneyWiseQIFClassNameLine
148 extends MoneyWiseQIFStringLine<MoneyWiseQClassLineType> {
149
150
151
152
153
154 protected MoneyWiseQIFClassNameLine(final String pName) {
155
156 super(pName);
157 }
158
159 @Override
160 public MoneyWiseQClassLineType getLineType() {
161 return MoneyWiseQClassLineType.NAME;
162 }
163
164
165
166
167
168
169 public String getName() {
170 return getValue();
171 }
172 }
173
174
175
176
177 public class MoneyWiseQIFClassDescLine
178 extends MoneyWiseQIFStringLine<MoneyWiseQClassLineType> {
179
180
181
182
183
184 protected MoneyWiseQIFClassDescLine(final String pDesc) {
185
186 super(pDesc);
187 }
188
189 @Override
190 public MoneyWiseQClassLineType getLineType() {
191 return MoneyWiseQClassLineType.DESCRIPTION;
192 }
193
194
195
196
197
198
199 public String getDescription() {
200 return getValue();
201 }
202 }
203 }