// uniCenta oPOS - Touch Friendly Point Of Sale
// Copyright (c) 2009-2014 uniCenta & previous Openbravo POS works
// http://www.unicenta.com
//
// This file is part of uniCenta oPOS
//
// uniCenta oPOS 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.
//
// uniCenta oPOS 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 uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>.
package com.openbravo.pos.admin;
import com.openbravo.basic.BasicException;
import com.openbravo.data.loader.*;
import com.openbravo.format.Formats;
import com.openbravo.pos.forms.AppLocal;
import com.openbravo.pos.forms.BeanFactoryDataSingle;
import java.util.List;
/**
*
* @author adrianromero
*/
public class DataLogicAdmin extends BeanFactoryDataSingle {
private Session s;
private TableDefinition m_tpeople;
private TableDefinition m_troles;
private TableDefinition m_tresources;
protected SentenceList m_sectionList;
protected SentenceList m_rolesList;
protected SentenceFind m_description;
protected SentenceList m_displayList;
protected SentenceFind m_roleID;
protected SentenceFind m_roleRightsLevel;
protected SentenceFind m_roleRightsLevelByID;
protected SentenceFind m_roleRightsLevelByUserName;
protected SentenceExec m_insertentry;
private SentenceFind m_rolepermissions;
protected SentenceExec m_rolepermissionsdelete;
protected SentenceList m_permissionClassList;
/** Creates a new instance of DataLogicAdmin */
public DataLogicAdmin() {
}
/**
*
* @param s
*/
@Override
public void init(Session s){
this.s = s;
m_tpeople = new TableDefinition(s,
"PEOPLE"
, new String[] {"ID", "NAME", "APPPASSWORD", "ROLE", "VISIBLE", "CARD", "IMAGE"}
, new String[] {"ID", AppLocal.getIntString("label.peoplename"), AppLocal.getIntString("Label.Password"), AppLocal.getIntString("label.role"), AppLocal.getIntString("label.peoplevisible"), AppLocal.getIntString("label.card"), AppLocal.getIntString("label.peopleimage")}
, new Datas[] {Datas.STRING, Datas.STRING, Datas.STRING, Datas.STRING, Datas.BOOLEAN, Datas.STRING, Datas.IMAGE}
, new Formats[] {Formats.STRING, Formats.STRING, Formats.STRING, Formats.STRING, Formats.BOOLEAN, Formats.STRING, Formats.NULL}
, new int[] {0}
);
m_troles = new TableDefinition(s,
"ROLES"
, new String[] {"ID", "NAME", "PERMISSIONS", "RIGHTSLEVEL"}
, new String[] {"ID", AppLocal.getIntString("Label.Name"), "PERMISSIONS"}
, new Datas[] {Datas.STRING, Datas.STRING, Datas.BYTES, Datas.INT}
, new Formats[] {Formats.STRING, Formats.STRING, Formats.NULL, Formats.INT }
, new int[] {0}
);
m_tresources = new TableDefinition(s,
"RESOURCES"
, new String[] {"ID", "NAME", "RESTYPE", "CONTENT"}
, new String[] {"ID", AppLocal.getIntString("Label.Name"), AppLocal.getIntString("label.type"), "CONTENT"}
, new Datas[] {Datas.STRING, Datas.STRING, Datas.INT, Datas.BYTES}
, new Formats[] {Formats.STRING, Formats.STRING, Formats.INT, Formats.NULL}
, new int[] {0}
);
m_sectionList = new StaticSentence(s,
"SELECT DISTINCT SECTION FROM DBPERMISSIONS ORDER BY SECTION"
, null
, SerializerReadString.INSTANCE);
m_description = new StaticSentence(s
, "SELECT DESCRIPTION FROM DBPERMISSIONS WHERE CLASSNAME = ? "
, SerializerWriteString.INSTANCE
, SerializerReadString.INSTANCE);
m_displayList = new StaticSentence(s
, "SELECT DISPLAYNAME FROM DBPERMISSIONS WHERE SECTION = ? ORDER BY DISPLAYNAME"
, SerializerWriteString.INSTANCE
, SerializerReadString.INSTANCE);
m_roleID = new StaticSentence(s
, "SELECT ID FROM ROLES WHERE NAME = ? "
, SerializerWriteString.INSTANCE
, SerializerReadString.INSTANCE);
m_roleRightsLevel = new StaticSentence(s
, "SELECT RIGHTSLEVEL FROM ROLES WHERE NAME = ? "
, SerializerWriteString.INSTANCE
, SerializerReadString.INSTANCE);
m_roleRightsLevelByID = new StaticSentence(s
, "SELECT RIGHTSLEVEL FROM ROLES WHERE ID = ? "
, SerializerWriteString.INSTANCE
, SerializerReadString.INSTANCE);
m_roleRightsLevelByUserName = new StaticSentence(s
, "SELECT ROLES.RIGHTSLEVEL FROM ROLES INNER JOIN PEOPLE ON PEOPLE.ROLE=ROLES.ID WHERE PEOPLE.NAME= ? "
, SerializerWriteString.INSTANCE
, SerializerReadString.INSTANCE);
m_rolesList = new StaticSentence(s
, "SELECT ID FROM ROLES "
, null
, SerializerReadString.INSTANCE);
m_permissionClassList = new StaticSentence(s
, "SELECT CLASSNAME FROM DBPERMISSIONS "
, null
, SerializerReadString.INSTANCE);
m_rolepermissions = new PreparedSentence(s, "SELECT PERMISSIONS FROM ROLES WHERE ID = ?"
, SerializerWriteString.INSTANCE
, SerializerReadBytes.INSTANCE);
m_insertentry = new StaticSentence(s
, "INSERT INTO DBPERMISSIONS (CLASSNAME, SECTION, DISPLAYNAME, DESCRIPTION) " +
"VALUES (?, ?, ?, ?)"
, new SerializerWriteBasic(new Datas[] {
Datas.STRING,
Datas.STRING,
Datas.STRING,
Datas.STRING,}));
m_rolepermissionsdelete = new StaticSentence(s, "DELETE * FROM DBPERMISSIONS WHERE CLASSNAME = ?"
, SerializerWriteString.INSTANCE
, null);
}
/*
*
* @return
*/
public final SentenceList getRolesList(String rightsLevel) {
String sql = "SELECT ID, NAME FROM ROLES WHERE RIGHTSLEVEL <= " + rightsLevel + " ORDER BY NAME ";
return new StaticSentence(s
, sql
, null
, new SerializerReadClass(RoleInfo.class));
}
/*
*
* @return
*/
public final List<DBPermissionsInfo> getAlldbPermissions() throws BasicException {
return new PreparedSentence(s
, "SELECT CLASSNAME, SECTION, DISPLAYNAME, DESCRIPTION FROM DBPERMISSIONS ORDER BY DISPLAYNAME"
, null
, DBPermissionsInfo.getSerializerRead()).list();
}
/*
*
* @return
*/
public final TableDefinition getTablePeople() {
return m_tpeople;
}
/**
*
* @return
*/
public final TableDefinition getTableRoles() {
return m_troles;
}
/*
*
* @return
*/
public final TableDefinition getTableResources() {
return m_tresources;
}
/**
*
* @param sRole
* @return
*/
public final String findRolePermissions(String sRole) {
try {
return Formats.BYTEA.formatValue(m_rolepermissions.find(sRole));
} catch (BasicException e) {
return null;
}
}
/**
*
* @return
*/
public final SentenceList getPeopleList() {
return new StaticSentence(s
, "SELECT ID, NAME FROM PEOPLE ORDER BY NAME"
, null
, new SerializerReadClass(PeopleInfo.class));
}
public final List<String> getSectionsList() throws BasicException {
return m_sectionList.list();
}
public final List<String> getDisplayList(String section) throws BasicException {
return m_displayList.list(section);
}
public final String getDescription(String className) throws BasicException {
return m_description.find(className).toString();
}
public final List<String> getRoles() throws BasicException {
return m_rolesList.list();
}
public final List<String> getClassNames() throws BasicException {
return m_permissionClassList.list();
}
public final String getRoleID(String roleName) throws BasicException {
return m_roleID.find(roleName).toString();
}
public final Integer getRightsLevel(String roleName) throws BasicException {
return Integer.parseInt(m_roleRightsLevel.find(roleName).toString());
}
public final String getRightsLevelByID(String roleName) throws BasicException {
return m_roleRightsLevelByID.find(roleName).toString();
}
public final String getRightsLevelByUserName(String userName) throws BasicException {
return m_roleRightsLevelByUserName.find(userName).toString();
}
public final void insertEntry(Object[] entry) throws BasicException {
m_insertentry.exec(entry);
}
public final void deleteEntry(String entry) throws BasicException {
m_rolepermissionsdelete.exec(entry);
}
}