View Javadoc

1   package com.leonarduk.clearcheckbook.calls;
2   
3   import java.io.IOException;
4   
5   import org.apache.log4j.Logger;
6   
7   import com.leonarduk.clearcheckbook.ClearCheckBookConnection;
8   import com.leonarduk.clearcheckbook.ClearcheckbookException;
9   import com.leonarduk.clearcheckbook.dto.UserDataType;
10  
11  public class UserCall extends AbstractCall<UserDataType> {
12  
13  	private static final Logger _logger = Logger.getLogger(UserCall.class);
14  
15  	public static final String TYPE = "user";
16  
17  	public UserCall(ClearCheckBookConnection connection) {
18  		super(connection, UserDataType.class);
19  	}
20  
21  	@Override
22  	protected String getUrlSuffix() {
23  		return TYPE;
24  	}
25  
26  	/***
27  	 * Gets the details for the current user. <br>
28  	 * Method: get <br>
29  	 * Call: user
30  	 * <p>
31  	 * Example: https://username:password@www.clearcheckbook.com/api/user/
32  	 * <p>
33  	 * Parameters: <br>
34  	 * Parameter Required Description <br>
35  	 * None
36  	 * <p>
37  	 * Returned Values: <br>
38  	 * Value Description <br>
39  	 * id The current users id in the ClearCheckbook system <br>
40  	 * username The current users username <br>
41  	 * password MD5 hash of current users password <br>
42  	 * email Email address of current user
43  	 * 
44  	 * @throws ClearcheckbookException
45  	 */
46  	public UserDataType get() throws ClearcheckbookException {
47  		return super.get();
48  	}
49  
50  	/***
51  	 * Creates a new ClearCheckbook.com user account <br>
52  	 * Method: post <br>
53  	 * Call: user
54  	 * <p>
55  	 * Example: <br>
56  	 * https://www.clearcheckbook.com/api/user/
57  	 * <p>
58  	 * Notes: <br>
59  	 * You do not pass any authentication information when creating a user. This
60  	 * is the only function that behaves this way. If the username or email
61  	 * address exists in the system, this function returns false. <br>
62  	 * Parameters: <br>
63  	 * Parameter Required Description <br>
64  	 * username Required The desired username for the new user <br>
65  	 * xpassword Required an unencoded password for the new user <br>
66  	 * email Required an email address for the new user <br>
67  	 * app Optional A name for your app (eg: "iPhone App" for an iPhone app).
68  	 * Lets us know where users are coming from.
69  	 * <p>
70  	 * Returned Values: <br>
71  	 * Value Description <br>
72  	 * Multiple Responses* The new users id in the ClearCheckbook system on
73  	 * successfull insert or false if the username or email already exists in
74  	 * system.
75  	 * 
76  	 * @param
77  	 * @return
78  	 * @throws ClearcheckbookException
79  	 */
80  	@Override
81  	public String insert(UserDataType dataType) throws ClearcheckbookException {
82  		_logger.debug("insert: " + dataType);
83  		String returnString;
84  		try {
85  			returnString = this.getConnection().postPage(getUrlSuffix(),
86  					dataType.getInsertParameters());
87  
88  			Long id = Long.valueOf(returnString);
89  			_logger.info("insert: created id " + id);
90  			return id.toString();
91  		} catch (NumberFormatException e) {
92  			throw new ClearcheckbookException(
93  					"Failed to create user - already exists", e);
94  		} catch (IOException e) {
95  			throw new ClearcheckbookException("Failed to create user ", e);
96  		}
97  	}
98  }