1 package com.leonarduk.clearcheckbook.calls;
2
3 import java.io.IOException;
4 import java.util.List;
5
6 import org.apache.log4j.Logger;
7
8 import com.leonarduk.clearcheckbook.ClearCheckBookConnection;
9 import com.leonarduk.clearcheckbook.ClearcheckbookException;
10 import com.leonarduk.clearcheckbook.dto.ParsedNameValuePair;
11 import com.leonarduk.clearcheckbook.dto.ReminderDataType;
12
13 public class ReminderCall extends AbstractCall<ReminderDataType> {
14
15 private static final Logger _logger = Logger.getLogger(ReminderCall.class);
16
17 public static final String TYPE = "reminder";
18
19 public ReminderCall(ClearCheckBookConnection connection) {
20 super(connection, ReminderDataType.class);
21 }
22
23 @Override
24 protected String getUrlSuffix() {
25 return TYPE;
26 }
27
28 /***
29 * Returns an array of reminders for the current user <br>
30 * Method: get <br>
31 * Call: reminders
32 * <p>
33 * Example: <br>
34 * https://username:password@www.clearcheckbook.com/api/reminders/
35 * <p>
36 * Parameters: <br>
37 * Parameter Required Description <br>
38 * upcoming_days Optional The number of days worth of reminders you would
39 * like to receive. Default = 30
40 * <p>
41 * Returned Values: <br>
42 * Value Description <br>
43 * reminder_id the id of the reminder in the ClearCheckbook system <br>
44 * date the next date this reminder is set to occur on <br>
45 * reminder_date_id the id of the date in the ClearCheckbook system <br>
46 * title the title of the reminder <br>
47 * start_date the date the reminder is set to start <br>
48 * end_date the date the reminder is set to end <br>
49 * notify 0 or 1. 1 if the user selected to be emailed before the reminder
50 * occurs. <br>
51 * notify_time 0-7. The number of days ahead of the reminder the user would
52 * like to be emailed <br>
53 * repeat 0 or 1. 1 if this reminder is set to repeat <br>
54 * repeat_every_num Integer for how often this should repeat. If set to 2
55 * and repeat_every = 3, this reminder will repeat every 2 months. <br>
56 * repeat_every 1-4. 1=Day, 2=Week, 3=Month, 4=Year <br>
57 * floats 0 or 1. 1 if this reminder is set to float <br>
58 * floats_every_num When this reminder floats. 1= First, 2= Second, 3=
59 * Third, 4= Fourth, -1= Last <br>
60 * floats_every When this reminder floats. 0= Sunday, 1= Monday, 2= Tuesday,
61 * 3= Wednesday, 4= Thursday, 5= Friday, 6= Saturday, -1= Day <br>
62 * trans_amount If there is a recurring transaction associated with this
63 * reminder, this is the amount <br>
64 * trans_description If there is a recurring transaction associated with
65 * this reminder, this is the description <br>
66 * trans_transaction_type If there is a recurring transaction associated
67 * with this reminder, this is the transaction type (0=withdrawal,
68 * 1=deposit, 3= transfer) <br>
69 * trans_account_id If there is a recurring transaction associated with this
70 * reminder, this is the account_id <br>
71 * trans_category_id If there is a recurring transaction associated with
72 * this reminder, this is the category_id <br>
73 * trans_transfertoaccount If there is a recurring transaction associated
74 * with this reminder, this is the account_id of the account being
75 * transferred to <br>
76 * trans_check_num If there is a recurring transaction associated with this
77 * reminder, this is the check_num <br>
78 * trans_memo If there is a recurring transaction associated with this
79 * reminder, this is the memo <br>
80 * trans_payee If there is a recurring transaction associated with this
81 * reminder, this is the payee
82 */
83 @Override
84 public List<ReminderDataType> getAll() throws ClearcheckbookException {
85 return super.getAll();
86 }
87
88 /***
89 * Returns information about a specific reminder. <br>
90 * Method: get <br>
91 * Call: reminder
92 * <p>
93 * Example: <br>
94 * https://username:password@www.clearcheckbook.com/api/reminder/
95 * <p>
96 * Parameters: <br>
97 * Parameter Required Description <br>
98 * id Required The id of the reminder you want
99 * <p>
100 * Returned Values: <br>
101 * Value Description <br>
102 * id the id of the reminder in the ClearCheckbook system <br>
103 * title the title of the reminder <br>
104 * start_date the date the reminder is set to start <br>
105 * end_date the date the reminder is set to end <br>
106 * notify 0 or 1. 1 if the user selected to be emailed before the reminder
107 * occurs. <br>
108 * notify_time 0-7. The number of days ahead of the reminder the user would
109 * like to be emailed <br>
110 * repeat 0 or 1. 1 if this reminder is set to repeat <br>
111 * repeat_every_num Integer for how often this should repeat. If set to 2
112 * and repeat_every = 3, this reminder will repeat every 2 months. <br>
113 * repeat_every 1-4. 1=Day, 2=Week, 3=Month, 4=Year <br>
114 * floats 0 or 1. 1 if this reminder is set to float <br>
115 * floats_every_num When this reminder floats. 1= First, 2= Second, 3=
116 * Third, 4= Fourth, -1= Last <br>
117 * floats_every When this reminder floats. 0= Sunday, 1= Monday, 2= Tuesday,
118 * 3= Wednesday, 4= Thursday, 5= Friday, 6= Saturday, -1= Day <br>
119 * trans_amount If there is a recurring transaction associated with this
120 * reminder, this is the amount <br>
121 * trans_description If there is a recurring transaction associated with
122 * this reminder, this is the description <br>
123 * trans_transaction_type If there is a recurring transaction associated
124 * with this reminder, this is the transaction type (0=withdrawal,
125 * 1=deposit, 3= transfer) <br>
126 * trans_account_id If there is a recurring transaction associated with this
127 * reminder, this is the account_id <br>
128 * trans_category_id If there is a recurring transaction associated with
129 * this reminder, this is the category_id <br>
130 * trans_transfertoaccount If there is a recurring transaction associated
131 * with this reminder, this is the account_id of the account being
132 * transferred to <br>
133 * trans_check_num If there is a recurring transaction associated with this
134 * reminder, this is the check_num <br>
135 * trans_memo If there is a recurring transaction associated with this
136 * reminder, this is the memo <br>
137 * trans_payee If there is a recurring transaction associated with this
138 * reminder, this is the payee
139 */
140 @Override
141 public ReminderDataType get(ParsedNameValuePair id)
142 throws ClearcheckbookException {
143 ReminderDataType reminderDataType = super.get(id);
144 _logger.debug("get: " + reminderDataType);
145 return reminderDataType;
146 }
147
148 /***
149 * Inserts a reminder for the current user <br>
150 * Method: post <br>
151 * Call: reminder
152 * <p>
153 * Example: <br>
154 * https://username:password@www.clearcheckbook.com/api/reminder/
155 * <p>
156 * Parameters: <br>
157 * Parameter Required Description <br>
158 * title Required The title of the reminder <br>
159 * email Required "true" or "false". "true" if you want to this email to
160 * remind the user <br>
161 * emailDays Optional If email is set to "true", this is the number of days
162 * ahead of time the user will be emailed (1-7) <br>
163 * start_year Required the year of the start date (YYYY) <br>
164 * start_month Required the month of the start date (MM) <br>
165 * start_day Required the day of the start date (DD) <br>
166 * end_year Optional the year of the end date (YYYY) <br>
167 * end_month Optional the month of the end date (MM) <br>
168 * end_day Optional the day of the end date (DD) <br>
169 * occur_once Optional "true" if this reminder is only occuring once. <br>
170 * occur_repeating Optional "true" if this reminder is repeating <br>
171 * occur_floating Optional "true" if this reminder is floating <br>
172 * repeat_every Optional 1-4. 1=Day, 2=Week, 3=Month, 4=Year <br>
173 * repeat_every_num Optional Integer for how often this should repeat. If
174 * set to 2 and repeat_every = 3, this reminder will repeat every 2 months.
175 * <br>
176 * float_every Optional When this reminder floats. 0= Sunday, 1= Monday, 2=
177 * Tuesday, 3= Wednesday, 4= Thursday, 5= Friday, 6= Saturday, -1= Day <br>
178 * float_every_num Optional When this reminder floats. 1= First, 2= Second,
179 * 3= Third, 4= Fourth, -1= Last <br>
180 * transaction Required "true" or "false". "true" if there is a transaction
181 * associated with this reminder. <br>
182 * trans_amount Optional The amount associated with the transaction <br>
183 * trans_description Optional the description associated with the
184 * transaction <br>
185 * trans_payee Optional the payee associated with this transaction <br>
186 * trans_memo Optional the memo associated with this transaction <br>
187 * trans_check_num Optional the check number associated with this
188 * transaction <br>
189 * trans_account_id Optional the account_id associated with this transaction
190 * <br>
191 * trans_category_id Optional the category_id associated with this
192 * transaction <br>
193 * trans_transaction_type Optional The transaction type associated with this
194 * transaction. (0=withdrawal, 1=deposit, 3= transfer) <br>
195 * trans_accountFrom Optional If trans_transaction_type = 3, this is the
196 * account_id you're transferring from <br>
197 * trans_accountTo Optional If trans_transaction_type = 3, this is the
198 * account_id you're transferring to
199 * <p>
200 * Returned Values: <br>
201 * Value Description <br>
202 * id / false Returns the id of the newly created reminder or false/null on
203 * fail
204 */
205 @Override
206 public String insert(ReminderDataType input) throws ClearcheckbookException {
207 return super.insert(input);
208 }
209
210 /***
211 *
212 Edit a specific reminder for the current user. <br>
213 * Method: put <br>
214 * Call: reminder
215 * <p>
216 * Example: <br>
217 * https://username:password@www.clearcheckbook.com/api/reminder/
218 * <p>
219 * Parameters: <br>
220 * Parameter Required Description <br>
221 * reminder_id Required The id of the reminder being edited. <br>
222 * title Required The title of the reminder <br>
223 * email Required "true" or "false". "true" if you want to this email to
224 * remind the user <br>
225 * emailDays Optional If email is set to "true", this is the number of days
226 * ahead of time the user will be emailed (1-7) <br>
227 * start_year Required the year of the start date (YYYY) <br>
228 * start_month Required the month of the start date (MM) <br>
229 * start_day Required the day of the start date (DD) <br>
230 * end_year Optional the year of the end date (YYYY) <br>
231 * end_month Optional the month of the end date (MM) <br>
232 * end_day Optional the day of the end date (DD) <br>
233 * occur_once Optional "true" if this reminder is only occuring once. <br>
234 * occur_repeating Optional "true" if this reminder is repeating <br>
235 * occur_floating Optional "true" if this reminder is floating <br>
236 * repeat_every Optional 1-4. 1=Day, 2=Week, 3=Month, 4=Year <br>
237 * repeat_every_num Optional Integer for how often this should repeat. If
238 * set to 2 and repeat_every = 3, this reminder will repeat every 2 months.
239 * <br>
240 * float_every Optional When this reminder floats. 0= Sunday, 1= Monday, 2=
241 * Tuesday, 3= Wednesday, 4= Thursday, 5= Friday, 6= Saturday, -1= Day <br>
242 * float_every_num Optional When this reminder floats. 1= First, 2= Second,
243 * 3= Third, 4= Fourth, -1= Last <br>
244 * transaction Required "true" or "false". "true" if there is a transaction
245 * associated with this reminder. <br>
246 * trans_amount Optional The amount associated with the transaction <br>
247 * trans_description Optional the description associated with the
248 * transaction <br>
249 * trans_payee Optional the payee associated with this transaction <br>
250 * trans_memo Optional the memo associated with this transaction <br>
251 * trans_check_num Optional the check number associated with this
252 * transaction <br>
253 * trans_account_id Optional the account_id associated with this transaction
254 * <br>
255 * trans_category_id Optional the category_id associated with this
256 * transaction <br>
257 * trans_transaction_type Optional The transaction type associated with this
258 * transaction. (0=withdrawal, 1=deposit, 3= transfer) <br>
259 * trans_accountFrom Optional If trans_transaction_type = 3, this is the
260 * account_id you're transferring from <br>
261 * trans_accountTo Optional If trans_transaction_type = 3, this is the
262 * account_id you're transferring to
263 * <p>
264 * Returned Values: <br>
265 * Value Description <br>
266 * true / false Returns true on a successful edit or false/null on fail.
267 * NB - this appears to change the id so you cannot do edit (id) then get(id) as the id will change
268 */
269 @Override
270 public boolean edit(ReminderDataType dataType)
271 throws ClearcheckbookException {
272 return super.edit(dataType);
273 }
274
275 /***
276 * Delete a single occurrence of a reminder for the current user. <br>
277 * Method: delete <br>
278 * Call: reminder
279 * <p>
280 * Example: <br>
281 * https://username:password@www.clearcheckbook.com/api/reminder/
282 * <p>
283 * Parameters: <br>
284 * Parameter Required Description <br>
285 * id Required The id of the reminder to delete
286 * <p>
287 * Returned Values: <br>
288 * Value Description <br>
289 * true / false Returns true on a successful delete or false/null on fail
290 */
291 @Override
292 public boolean delete(ParsedNameValuePair input)
293 throws ClearcheckbookException {
294 return super.delete(input);
295 }
296
297 /***
298 * Delete all occurrences of a reminder for the current user. <br>
299 * Method: delete <br>
300 * Call: reminders
301 * <p>
302 * Example: <br>
303 * https://username:password@www.clearcheckbook.com/api/reminders/
304 * <p>
305 * Parameters: <br>
306 * Parameter Required Description <br>
307 * id Required The id of the reminder to delete
308 * <p>
309 * Returned Values: <br>
310 * Value Description <br>
311 * true / false Returns true on a successful delete or false/null on fail
312 *
313 * @return
314 * @throws ClearcheckbookException
315 */
316 public boolean deleteAll(ParsedNameValuePair id)
317 throws ClearcheckbookException {
318 _logger.debug("delete: " + id.getValue());
319 String returnString;
320 try {
321 returnString = this.getConnection().deletePage(getPluralUrl(), id);
322 boolean ok = Boolean.valueOf(returnString);
323 _logger.info("insert : deleted " + ok);
324 return ok;
325 } catch (IOException e) {
326 throw new ClearcheckbookException("Failed to delete "
327 + getUrlSuffix() + " id: " + id.getValue(), e);
328 }
329 }
330
331 }