/**
* Copyright 2011 Intuit Inc. All Rights Reserved
*/
package com.intuit.tank.service.impl.v1.user;
/*
* #%L
* User Rest Service
* %%
* Copyright (C) 2011 - 2015 Intuit Inc.
* %%
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
* #L%
*/
import java.util.ArrayList;
import java.util.List;
import javax.ws.rs.Path;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.ResponseBuilder;
import javax.ws.rs.core.Response.Status;
import com.intuit.tank.api.model.v1.user.User;
import com.intuit.tank.api.model.v1.user.UserContainer;
import com.intuit.tank.api.model.v1.user.UserCredentials;
import com.intuit.tank.api.service.v1.project.UserService;
import com.intuit.tank.dao.UserDao;
/**
* ProjectServiceV1
*
* @author dangleton
*
*/
@Path(UserService.SERVICE_RELATIVE_PATH)
public class UserServiceV1 implements UserService {
/**
* @{inheritDoc
*/
@Override
public String ping() {
return "PONG " + getClass().getSimpleName();
}
/**
* @{inheritDoc
*/
@Override
public Response getAllUsers() {
ResponseBuilder responseBuilder = Response.ok();
try {
List<User> users = new ArrayList<User>();
List<com.intuit.tank.project.User> findAll = new UserDao().findAll();
for (com.intuit.tank.project.User u : findAll) {
users.add(UserServiceUtil.userToTransferObject(u));
}
UserContainer container = new UserContainer(users);
responseBuilder.entity(container);
} catch (Exception e) {
responseBuilder.status(Status.INTERNAL_SERVER_ERROR);
responseBuilder.entity("Cannot look up users: " + e.toString());
throw new WebApplicationException(responseBuilder.build());
}
return responseBuilder.build();
}
/**
* @{inheritDoc
*/
@Override
public Response getUser(String name) {
ResponseBuilder responseBuilder = Response.ok();
try {
com.intuit.tank.project.User user = new UserDao().findByUserName(name);
if (user != null) {
responseBuilder.entity(UserServiceUtil.userToTransferObject(user));
} else {
responseBuilder.status(Status.NOT_FOUND);
}
} catch (Exception e) {
responseBuilder.status(Status.INTERNAL_SERVER_ERROR);
responseBuilder.entity("Cannot look up user: " + e.toString());
throw new WebApplicationException(responseBuilder.build());
}
return responseBuilder.build();
}
/**
* @{inheritDoc
*/
@Override
public Response authenticate(UserCredentials credentials) {
ResponseBuilder responseBuilder = Response.ok();
try {
com.intuit.tank.project.User user = new UserDao().authenticate(credentials.getName(),
credentials.getPass());
if (user != null) {
responseBuilder.entity(UserServiceUtil.userToTransferObject(user));
} else {
responseBuilder.status(Status.UNAUTHORIZED);
}
} catch (Exception e) {
responseBuilder.status(Status.INTERNAL_SERVER_ERROR);
responseBuilder.entity("Cannot authenticate user: " + e.toString());
throw new WebApplicationException(responseBuilder.build());
}
return responseBuilder.build();
}
}