/** * Copyright 2015 Sean Kavanagh - sean.p.kavanagh6@gmail.com * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.keybox.manage.db; import com.keybox.manage.model.UserSettings; import com.keybox.manage.util.DBUtils; import org.apache.commons.lang3.StringUtils; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * DAO to manage user themes */ public class UserThemeDB { private static Logger log = LoggerFactory.getLogger(UserThemeDB.class); private UserThemeDB() { } /** * get user theme * * @param userId object * @return user theme object */ public static UserSettings getTheme(Long userId) { UserSettings theme=null; Connection con = null; try { con = DBUtils.getConn(); PreparedStatement stmt = con.prepareStatement("select * from user_theme where user_id=?"); stmt.setLong(1, userId); ResultSet rs = stmt.executeQuery(); if(rs.next()) { theme= new UserSettings(); theme.setBg(rs.getString("bg")); theme.setFg(rs.getString("fg")); if(StringUtils.isNotEmpty(rs.getString("d1"))) { String[] colors= new String[16]; colors[0] = rs.getString("d1"); colors[1] = rs.getString("d2"); colors[2] = rs.getString("d3"); colors[3] = rs.getString("d4"); colors[4] = rs.getString("d5"); colors[5] = rs.getString("d6"); colors[6] = rs.getString("d7"); colors[7] = rs.getString("d8"); colors[8] = rs.getString("b1"); colors[9] = rs.getString("b2"); colors[10] = rs.getString("b3"); colors[11] = rs.getString("b4"); colors[12] = rs.getString("b5"); colors[13] = rs.getString("b6"); colors[14] = rs.getString("b7"); colors[15] = rs.getString("b8"); theme.setColors(colors); } } DBUtils.closeRs(rs); DBUtils.closeStmt(stmt); } catch (Exception e) { log.error(e.toString(), e); } finally { DBUtils.closeConn(con); } return theme; } /** * saves user theme * * @param userId object */ public static void saveTheme(Long userId, UserSettings theme) { Connection con = null; try { con = DBUtils.getConn(); PreparedStatement stmt = con.prepareStatement("delete from user_theme where user_id=?"); stmt.setLong(1, userId); stmt.execute(); DBUtils.closeStmt(stmt); if(org.apache.commons.lang.StringUtils.isNotEmpty(theme.getPlane())|| org.apache.commons.lang.StringUtils.isNotEmpty(theme.getTheme())) { stmt = con.prepareStatement("insert into user_theme(user_id, bg, fg, d1, d2, d3, d4, d5, d6, d7, d8, b1, b2, b3, b4, b5, b6, b7, b8) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); stmt.setLong(1, userId); stmt.setString(2, theme.getBg()); stmt.setString(3, theme.getFg()); //if contains all 16 theme colors insert if (theme.getColors() != null && theme.getColors().length == 16) { for (int i = 0; i < 16; i++) { stmt.setString(i + 4, theme.getColors()[i]); } //else set to null } else { for (int i = 0; i < 16; i++) { stmt.setString(i + 4, null); } } stmt.execute(); DBUtils.closeStmt(stmt); } } catch (Exception e) { log.error(e.toString(), e); } finally { DBUtils.closeConn(con); } } }