package klik.server.data; import java.sql.SQLException; import java.util.List; import klik.server.PropertiesManager; import klik.shared.constants.X10.State; import klik.shared.constants.X10.Type; import com.j256.ormlite.dao.Dao; import com.j256.ormlite.dao.DaoManager; import com.j256.ormlite.jdbc.JdbcPooledConnectionSource; import com.j256.ormlite.table.TableUtils; public class DataManager { private static JdbcPooledConnectionSource connectionSource; private static Dao<X10Unit, Integer> x10UnitDao; static { try { connectionSource = new JdbcPooledConnectionSource(PropertiesManager.getProperty("sqlite.connectionSource")); connectionSource.setMaxConnectionAgeMillis(Long.MAX_VALUE); connectionSource.setCheckConnectionsEveryMillis(60 * 1000); connectionSource.setTestBeforeGet(true); TableUtils.createTableIfNotExists(connectionSource, X10Unit.class); x10UnitDao = DaoManager.createDao(connectionSource, X10Unit.class); //addTestUnits(); } catch (SQLException e) { e.printStackTrace(); } } public static void addTestUnits() { X10Unit unit = new X10Unit(); unit.setAddress("A1"); unit.setName("Wall lamp"); unit.setState(State.OFF); unit.setType(Type.DIMMABLE_LIGHT); unit.setValue(0); try { x10UnitDao.create(unit); } catch (SQLException e) { e.printStackTrace(); } } public static List<X10Unit> getUnits() throws SQLException { return x10UnitDao.queryForAll(); } public static List<X10Unit> getUnitsWithAddress(String address) { try { return x10UnitDao.queryForEq("address", address); } catch (SQLException e) { e.printStackTrace(); } return null; } public static List<X10Unit> getUnitsWithHouseCode(char houseCode) { try { return x10UnitDao.queryForEq("housecode", houseCode); } catch (SQLException e) { e.printStackTrace(); } return null; } public static X10Unit getUnit(Integer id) { try { return x10UnitDao.queryForId(id); } catch (SQLException e) { e.printStackTrace(); } return null; } public static void updateUnit(X10Unit unit) { try { x10UnitDao.update(unit); } catch (SQLException e) { e.printStackTrace(); } } }