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.LimitDataType; 11 import com.leonarduk.clearcheckbook.dto.ParsedNameValuePair; 12 13 /*** 14 * 15 * 16 * 17 * @author Stephen Leonard 18 * @since 30 Jan 2014 19 * 20 * @version $Author:: $: Author of last commit 21 * @version $Rev:: $: Revision of last commit 22 * @version $Date:: $: Date of last commit 23 * 24 */ 25 public class LimitCall extends AbstractCall<LimitDataType> { 26 27 private static final Logger _logger = Logger.getLogger(LimitCall.class); 28 29 public static final String TYPE = "limit"; 30 31 @Override 32 protected String getUrlSuffix() { 33 return TYPE; 34 } 35 36 public LimitCall(ClearCheckBookConnection connection) { 37 super(connection, LimitDataType.class); 38 } 39 40 /*** 41 * Returns an array of limits for the current user<br> 42 * Method: get<br> 43 * Call: limits 44 * <p> 45 * Example: <br> 46 * https://username:password@www.clearcheckbook.com/api/limits/ 47 * <p> 48 * Parameters: <br> 49 * Parameter Required Description <br> 50 * None 51 * <p> 52 * Returned Values: <br> 53 * Value Description <br> 54 * id The id of the limit <br> 55 * name The Account or Category name this limit is assigned to. <br> 56 * limit_amount The amount this limit is set to. <br> 57 * account_id If this is a limit for an account, this will be the id of that 58 * account (0 if it's not set for an account) <br> 59 * category_id If this is a limit for a category, this is the id of that 60 * category (0 if it's not set for a category) <br> 61 * spent The amount spent so far for this transaction. <br> 62 * rollover Whether or not this limit rolls over on its reset day <br> 63 * reset_day The day of the month this limit is set to reset. <br> 64 * transfer Whether or not this limit includes transfers in the amount 65 * spent. <br> 66 * deposit Whether or not this limit uses deposits to reduce the amount 67 * spent. <br> 68 * duration The duration of this budget based on when it resets. (0=Weekly; 69 * 1=Bi-Weekly; 2=Monthly; 3=Quarterly; 4=Semi-Annually; 5=Annually) <br> 70 * start_date If the duration is not 2, this will be when the budget 71 * originally started. <br> 72 * this_start_date This is when the budget for the current time period 73 * started. <br> 74 * this_end_date This is when the budget for the current time period ends. <br> 75 * original_limit The original amount of the limit (in case rollover is set 76 * to true). 77 */ 78 @Override 79 public List<LimitDataType> getAll() throws ClearcheckbookException { 80 return super.getAll(); 81 } 82 83 /*** 84 * Returns information about a specific limit. <br> 85 * Method: get <br> 86 * Call: limit 87 * <p> 88 * <br> 89 * Example: <br> 90 * https://username:password@www.clearcheckbook.com/api/limit/ 91 * <p> 92 * Parameters: <br> 93 * Parameter Required Description <br> 94 * id Required The id of the limit you want 95 * <p> 96 * Returned Values: <br> 97 * Value Description <br> 98 * id The id of the limit <br> 99 * amount The amount this limit is set for <br> 100 * reset_day The day of the month this limit is going to reset. <br> 101 * rollover TRUE or FALSE for whether or not this limit rollsover <br> 102 * transfer TRUE or FALSE for whether or not this limit includes transfers 103 * in the amount spent. <br> 104 * deposit TRUE or FALSE for whether or not this limit uses deposits to 105 * reduce the amount spent. <br> 106 * duration The duration of this budget based on when it resets. (0=Weekly; 107 * 1=Bi-Weekly; 2=Monthly; 3=Quarterly; 4=Semi-Annually; 5=Annually) <br> 108 * start_date If the duration is not 2, this will be when the budget 109 * originally started. <br> 110 * this_start_date This is when the budget for the current time period 111 * started. <br> 112 * this_end_date This is when the budget for the current time period ends. <br> 113 * original_limit The original amount of the limit (in case rollover is set 114 * to true). 115 */ 116 @Override 117 public LimitDataType get(ParsedNameValuePair id) 118 throws ClearcheckbookException { 119 LimitDataType limitDataType = super.get(id); 120 _logger.debug(limitDataType); 121 return limitDataType; 122 } 123 124 /*** 125 * Inserts a limit for the current user <br> 126 * Method: post <br> 127 * Call: limit 128 * <p> 129 * Example: <br> 130 * https://username:password@www.clearcheckbook.com/api/limit/ 131 * <p> 132 * Parameters: <br> 133 * Parameter Required Description <br> 134 * account_id Required If the limit is for an account, the id of the 135 * account. Default is 0. <br> 136 * category_id Required If the limit is for a category, the id of the 137 * category. Default is 0. <br> 138 * amount Required The amount this limit should be for (eg: 300) <br> 139 * duration Required The duration of this budget based on when it resets. 140 * (0=Weekly; 1=Bi-Weekly; 2=Monthly; 3=Quarterly; 4=Semi-Annually; 141 * 5=Annually) <br> 142 * reset_day Required Integer 1-31 for the day this limit should reset on. 143 * If this number is higher than the last day of the month, the limit will 144 * reset on the last day of the month. <br> 145 * start_date Required If the duration is not 2, this will be when the 146 * budget originally starts (formatted as yyyy-mm-dd). <br> 147 * rollover Required Whether or not this limit rolls over any unused money 148 * to the next month. 0=false, 1=true <br> 149 * transfer Required Whether or not this limit includes transfers in the 150 * amount spent. 0=false, 1=true <br> 151 * deposit Required Whether or not this limit uses deposits to reduce the 152 * amount spent. 0=false, 1=true 153 * <p> 154 * Returned Values: <br> 155 * Value Description <br> 156 * id / false Returns the id of the newly created limit on success or 157 * false/null on fail 158 */ 159 @Override 160 public String insert(LimitDataType input) throws ClearcheckbookException { 161 String insert = super.insert(input); 162 _logger.debug(insert); 163 return insert; 164 } 165 166 /*** 167 * Edit a specific limit for the current user. <br> 168 * Method: put <br> 169 * Call: limit 170 * <p> 171 * <br> 172 * Example: <br> 173 * https://username:password@www.clearcheckbook.com/api/limit/ 174 * <p> 175 * Parameters: <br> 176 * Parameter Required Description <br> 177 * id Required The id of the limit being edited. <br> 178 * amount Required The amount this limit should be for (eg: 300) <br> 179 * duration Required The duration of this budget based on when it resets. 180 * (0=Weekly; 1=Bi-Weekly; 2=Monthly; 3=Quarterly; 4=Semi-Annually; 181 * 5=Annually) <br> 182 * reset_day Required Integer 1-31 for the day this limit should reset on. 183 * If this number is higher than the last day of the month, the limit will 184 * reset on the last day of the month. <br> 185 * start_date Required If the duration is not 2, this will be when the 186 * budget originally starts (formatted as yyyy-mm-dd). <br> 187 * rollover Required Whether or not this limit rolls over any unused money 188 * to the next month. 0=false, 1=true <br> 189 * transfer Required Whether or not this limit includes transfers in the 190 * amount spent. 0=false, 1=true <br> 191 * deposit Required Whether or not this limit uses deposits to reduce the 192 * amount spent. 0=false, 1=true 193 * <p> 194 * Returned Values: <br> 195 * Value Description <br> 196 * true / false Returns true on a successful edit or false/null on fail. 197 * ACTUALLY - it returns "null" on success and "" on fail 198 */ 199 @Override 200 public boolean edit(LimitDataType dataType) throws ClearcheckbookException { 201 String returnString; 202 try { 203 returnString = this.getConnection().putPage(getUrlSuffix(), 204 dataType.getEditParameters()); 205 _logger.debug("returned: [" + returnString + "]"); 206 boolean ok = (returnString.equals("null")); 207 _logger.info("edit : edited " + ok); 208 return ok; 209 } catch (IOException e) { 210 throw new ClearcheckbookException("Failed to edit " 211 + getUrlSuffix(), e); 212 } 213 } 214 215 /*** 216 * Delete a specific limit for the current user. <br> 217 * Method: delete <br> 218 * Call: limit 219 * <p> 220 * Example: <br> 221 * https://username:password@www.clearcheckbook.com/api/limit/ 222 * <p> 223 * Parameters: <br> 224 * Parameter Required Description <br> 225 * id Required The id of the limit to delete 226 * <p> 227 * Returned Values: <br> 228 * Value Description <br> 229 * true / false Returns true on a successful delete or false/null on fail 230 */ 231 @Override 232 public boolean delete(ParsedNameValuePair input) 233 throws ClearcheckbookException { 234 boolean delete = super.delete(input); 235 _logger.debug(delete); 236 return delete; 237 } 238 239 }