// Chromis POS - The New Face of Open Source POS
// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
//
// Chromis POS 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 3 of the License, or
// (at your option) any later version.
//
// Chromis POS 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 Chromis POS. If not, see <http://www.gnu.org/licenses/>.
//
package uk.chromis.pos.util;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import uk.chromis.data.loader.Session;
import uk.chromis.pos.forms.AppConfig;
public class SessionFactory {
private static SessionFactory INSTANCE = new SessionFactory();
private Session session;
private final String db_user;
private final String db_url;
private String db_password;
// Used so that we are not creating multiple sessions for the user
private SessionFactory() {
db_user = (AppConfig.getInstance().getProperty("db.user"));
db_url = (AppConfig.getInstance().getProperty("db.URL"));
db_password = (AppConfig.getInstance().getProperty("db.password"));
if (db_user != null && db_password != null && db_password.startsWith("crypt:")) {
// the password is encrypted
AltEncrypter cypher = new AltEncrypter("cypherkey" + db_user);
db_password = cypher.decrypt(db_password.substring(6));
}
}
public static SessionFactory getInstance() {
if (INSTANCE == null) {
synchronized (SessionFactory.class) {
if (INSTANCE == null) {
INSTANCE = new SessionFactory();
}
}
}
return INSTANCE;
}
public Session getSession() {
if (session != null) {
return session;
}
try {
session = new Session(db_url, db_user, db_password);
return session;
} catch (SQLException ex) {
Logger.getLogger(SessionFactory.class.getName()).log(Level.SEVERE, null, ex);
}
return null;
}
}