View Javadoc

1   package com.leonarduk.clearcheckbook;
2   
3   import java.io.IOException;
4   
5   import org.apache.log4j.Logger;
6   
7   import com.leonarduk.clearcheckbook.calls.AbstractCall;
8   import com.leonarduk.clearcheckbook.calls.AccountCall;
9   import com.leonarduk.clearcheckbook.calls.CategoryCall;
10  import com.leonarduk.clearcheckbook.calls.LimitCall;
11  import com.leonarduk.clearcheckbook.calls.PremiumCall;
12  import com.leonarduk.clearcheckbook.calls.ReminderCall;
13  import com.leonarduk.clearcheckbook.calls.ReportCall;
14  import com.leonarduk.clearcheckbook.calls.TransactionCall;
15  import com.leonarduk.clearcheckbook.calls.UserCall;
16  import com.leonarduk.clearcheckbook.dto.ParsedNameValuePair;
17  import com.leonarduk.utils.HtmlUnitUtils;
18  
19  public class ClearCheckBookConnection {
20  
21  	final private String password;
22  	final private String userName;
23  	public final String baseurl = "https://www.clearcheckbook.com/api/";
24  
25  	private AccountCall accountCall;
26  
27  	private CategoryCall categoryCall;
28  	private LimitCall limitCall;
29  	private PremiumCall premiumCall;
30  	private ReminderCall reminderCall;
31  	private ReportCall reportCall;
32  	private TransactionCall transactionCall;
33  	private UserCall userCall;
34  
35  	private static final Logger _logger = Logger.getLogger(AbstractCall.class);
36  
37  	public ClearCheckBookConnection(String userName, String password) {
38  		this.userName = userName;
39  		this.password = password;
40  
41  		this.accountCall = new AccountCall(this);
42  		this.categoryCall = new CategoryCall(this);
43  		this.limitCall = new LimitCall(this);
44  		this.premiumCall = new PremiumCall(this);
45  		this.reminderCall = new ReminderCall(this);
46  		this.reportCall = new ReportCall(this);
47  		this.transactionCall = new TransactionCall(this);
48  		this.userCall = new UserCall(this);
49  
50  	}
51  
52  	public AccountCall account() {
53  		return accountCall;
54  	}
55  
56  	public CategoryCall category() {
57  		return categoryCall;
58  	}
59  
60  	public LimitCall limit() {
61  		return limitCall;
62  	}
63  
64  	public PremiumCall premium() {
65  		return premiumCall;
66  	}
67  
68  	public ReminderCall reminder() {
69  		return reminderCall;
70  	}
71  
72  	public ReportCall report() {
73  		return reportCall;
74  	}
75  
76  	public TransactionCall transaction() {
77  		return transactionCall;
78  	}
79  
80  	public UserCall user() {
81  		return userCall;
82  	}
83  
84  	public String getUserName() {
85  		return userName;
86  	}
87  
88  	public String getBaseurl() {
89  		return baseurl;
90  	}
91  
92  	/***
93  	 * 
94  	 * @param url
95  	 * @param parameters
96  	 * @return
97  	 * @throws IOException
98  	 */
99  	public String getPage(String url, ParsedNameValuePair... parameters)
100 			throws IOException {
101 		_logger.debug("URL:" + getFullUrl(url) + parameters);
102 		String page = HtmlUnitUtils.getPageText(getFullUrl(url), "GET",
103 				userName, password, parameters);
104 		return page;
105 	}
106 
107 	private String addGetParameters(String url,
108 			ParsedNameValuePair... parameters) {
109 		url += "?";
110 		if (null != parameters[0]) {
111 			for (int i = 0; i < parameters.length; i++) {
112 				url += parameters[i].getName() + "=" + parameters[i].getValue()
113 						+ "&";
114 			}
115 		}
116 		return url;
117 	}
118 
119 	/***
120 	 * 
121 	 * @param url
122 	 * @param parameters
123 	 * @return
124 	 * @throws IOException
125 	 */
126 	public String postPage(String url, ParsedNameValuePair... parameters)
127 			throws IOException {
128 		String fullPath = getFullUrl(url);
129 		_logger.debug("URL:" + fullPath + " " + parameters);
130 		String page = HtmlUnitUtils.getPageText(fullPath, "POST", userName,
131 				password, parameters);
132 		return page;
133 	}
134 
135 	/***
136 	 * 
137 	 * @param url
138 	 * @return
139 	 */
140 	private String getFullUrl(String url) {
141 		String fullPath = "https://" + userName + ":" + password
142 				+ "@www.clearcheckbook.com/api/" + url;
143 		return fullPath;
144 	}
145 
146 	/***
147 	 * 
148 	 * @param url
149 	 * @param parameters
150 	 * @return
151 	 * @throws IOException
152 	 */
153 	public String putPage(String url, ParsedNameValuePair... parameters)
154 			throws IOException {
155 		url = addGetParameters(url, parameters);
156 		String fullUrl = getFullUrl(url);
157 
158 		_logger.debug("URL:" + fullUrl);
159 		String page = HtmlUnitUtils.getPageText(fullUrl, "PUT", userName,
160 				password, parameters);
161 		return page;
162 	}
163 
164 	/***
165 	 * 
166 	 * @param url
167 	 * @param parameters
168 	 * @return
169 	 * @throws IOException
170 	 */
171 	public String deletePage(String url, ParsedNameValuePair... parameters)
172 			throws IOException {
173 		_logger.debug("URL:" + this.baseurl + url);
174 		String page = HtmlUnitUtils.getPageText(this.baseurl + url, "DELETE",
175 				userName, password, parameters);
176 		return page;
177 	}
178 
179 }