/*
* $Id$
*
* Authors:
* Jeff Buchbinder <jeff@freemedsoftware.org>
*
* REMITT Electronic Medical Information Translation and Transmission
* Copyright (C) 1999-2014 FreeMED Software Foundation
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
package org.remitt.server;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.charset.Charset;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.sojo.interchange.Serializer;
import net.sf.sojo.interchange.json.JsonSerializer;
import org.apache.log4j.Logger;
/**
* Servlet implementation class TestHarnessServlet
*/
public class UserConfigurationServlet extends HttpServlet {
protected class UserConfig {
public String namespace;
public String option;
public String value;
public void setNamespace(String v) {
namespace = v;
}
public void setOption(String v) {
option = v;
}
public void setValue(String v) {
option = v;
}
}
private static final long serialVersionUID = 5083654958306724495L;
static final Logger log = Logger.getLogger(UserConfigurationServlet.class);
public UserConfigurationServlet() {
}
public void init() throws ServletException {
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String action = request.getParameter("action");
if (action.compareTo("set") == 0) {
log.info("set action");
String user = request.getRemoteUser();
String namespace = request.getParameter("namespace");
String option = request.getParameter("option");
String value = request.getParameter("value");
Configuration.setConfigValue(user, namespace, option, value);
} else if (action.compareTo("getAll") == 0) {
log.info("getAll action");
String user = request.getRemoteUser();
String namespace = request.getParameter("namespace");
UserConfig[] c = getConfigValues(user, namespace);
// Serialize and return values
Serializer serializer = new JsonSerializer();
OutputStream outputStream = response.getOutputStream();
outputStream.write(serializer.serialize(c).toString().getBytes(
Charset.defaultCharset()));
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
}
protected UserConfig[] getConfigValues(String user, String namespace) {
log.info("getConfigValues: " + user + ", " + namespace);
List<UserConfig> results = new ArrayList<UserConfig>();
Connection c = Configuration.getConnection();
PreparedStatement cStmt = null;
try {
if (namespace != null) {
cStmt = c
.prepareStatement("{ SELECT * FROM tUserConfig WHERE user = ? AND cNamespace = ? }");
cStmt.setString(1, user);
cStmt.setString(2, namespace);
} else {
cStmt = c
.prepareStatement("{ SELECT * FROM tUserConfig WHERE user = ? AND cNamespace = ? }");
cStmt.setString(1, user);
}
cStmt.execute();
ResultSet rs = cStmt.getResultSet();
while (rs.next()) {
UserConfig item = new UserConfig();
item.setNamespace(rs.getString("cNamespace"));
item.setOption(rs.getString("cOption"));
item.setValue(rs.getString("cValue"));
results.add(item);
}
rs.close();
} catch (NullPointerException npe) {
log.error("Caught NullPointerException", npe);
} catch (SQLException e) {
log.error("Caught SQLException", e);
} finally {
DbUtil.closeSafely(cStmt);
DbUtil.closeSafely(c);
}
return results.toArray(new UserConfig[0]);
}
}