/*******************************************************************************
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright (c) 2013,2014 by Peter Pilgrim, Addiscombe, Surrey, XeNoNiQUe UK
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU GPL v3.0
* which accompanies this distribution, and is available at:
* http://www.gnu.org/licenses/gpl-3.0.txt
*
* Developers:
* Peter Pilgrim -- design, development and implementation
* -- Blog: http://www.xenonique.co.uk/blog/
* -- Twitter: @peter_pilgrim
*
* Contributors:
*
*******************************************************************************/
package je7hb.jaxrs.basic;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.ws.rs.*;
/**
* The type RegisteredUserResource
*
* @author Peter Pilgrim (peter)
*/
@Path("/users")
@Stateless
public class RegisteredUserResource {
@EJB
private UserRegistry userRegistry;
@GET
@Produces("text/csv")
public String listUsers() {
System.out.printf("***DEBUG*** listUsers()\n" );
System.out.printf(" userRegistry=%s\n", userRegistry);
StringBuilder buf = new StringBuilder();
for ( User user : userRegistry.getUsers()) {
buf.append( user.getLoginName() +","+user.getFirstName()+",");
buf.append( user.getLastName()+","+user.getSecretCode()+"\n");
}
return buf.toString();
}
@GET
@Path("{id}")
@Produces("text/csv")
public String getUser( @PathParam("id") String loginName ) {
System.out.printf("***DEBUG*** getUser( %s )\n", loginName );
System.out.printf(" userRegistry=%s\n", userRegistry);
User user = userRegistry.findUser(loginName);
if ( user == null ) {
return "";
}
else {
StringBuilder buf = new StringBuilder();
buf.append( user.getLoginName() +","+user.getFirstName()+",");
buf.append( user.getLastName()+","+user.getSecretCode()+"\n");
return buf.toString();
}
}
@POST
@Path("{id}")
public void addUser( @PathParam("id") String loginName,
@FormParam("firstName") String fname,
@FormParam("lastName") String lname,
@FormParam("secretCode") int code )
{
System.out.printf("***DEBUG*** addUser( %s, %s, %s, %d)\n", loginName, fname, lname, code );
System.out.printf(" userRegistry=%s\n", userRegistry);
User user = new User(loginName,fname,lname,code);
userRegistry.addUser(user);
}
@PUT
@Path("{id}")
public void amendUser( @PathParam("id") String loginName,
@FormParam("firstName") String fname,
@FormParam("lastName") String lname,
@FormParam("secretCode") int code )
{
System.out.printf("***DEBUG*** amendUser( %s, %s, %s, %d)\n", loginName, fname, lname, code );
System.out.printf(" userRegistry=%s\n", userRegistry);
User user = userRegistry.findUser(loginName);
if ( user == null ) {
throw new UnknownUserException("unknown login name: ["+loginName+"]");
}
else {
User user2 = new User( user.getLoginName(), fname, lname, code );
userRegistry.addUser(user2);
}
}
@DELETE
@Path("{id}")
public void deleteUser( @PathParam("id") String loginName) {
System.out.printf("***DEBUG*** deleteUser( %s )\n", loginName );
System.out.printf(" userRegistry=%s\n", userRegistry);
User user = userRegistry.findUser(loginName);
if ( user == null ) {
throw new UnknownUserException("unknown login name: ["+loginName+"]");
}
else {
userRegistry.removeUser(user);
}
}
}