package server;

import java.io.IOException;
import java.net.HttpURLConnection;
import server.database.DatabaseAccess;
import shared.communication.ValidateUserRequest;
import shared.communication.ValidateUserResponse;
import shared.model.User;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;

public class ValidateUserHandler implements HttpHandler
{
	public ValidateUserHandler()
	{
		
	}

	@Override
	public void handle(HttpExchange exchange) throws IOException
	{
		XStream xStr = new XStream(new DomDriver());
		
		// Read input.
		ValidateUserRequest req = (ValidateUserRequest)xStr.fromXML(exchange.getRequestBody());
		exchange.getRequestBody().close();
		
		// Perform operation.
		User result = new DatabaseAccess().validateUser(req.getUserName(), req.getPassword());
		
		// Send output.
		if(result == null) // Server error.
		{
			exchange.sendResponseHeaders(HttpURLConnection.HTTP_INTERNAL_ERROR, 0);
			exchange.getResponseBody().close();
		}
		else
		{
			exchange.sendResponseHeaders(HttpURLConnection.HTTP_OK, 0);
			
			ValidateUserResponse output = new ValidateUserResponse((result.equals(User.INVALID_USER) ? false : true), 
																	result.getFirstName(), result.getLastName(), 
																	result.getRecordsIndexed());
			xStr.toXML(output, exchange.getResponseBody());
			
			exchange.getResponseBody().flush();
			exchange.getResponseBody().close();
		}
	}
}
