[ 2507390 ] FR - Save language and other login data in cookie
This commit is contained in:
parent
b5ecd19629
commit
4706ca2473
|
@ -24,6 +24,7 @@ import javax.servlet.http.HttpSession;
|
||||||
import org.adempiere.webui.desktop.DefaultDesktop;
|
import org.adempiere.webui.desktop.DefaultDesktop;
|
||||||
import org.adempiere.webui.desktop.IDesktop;
|
import org.adempiere.webui.desktop.IDesktop;
|
||||||
import org.adempiere.webui.session.SessionManager;
|
import org.adempiere.webui.session.SessionManager;
|
||||||
|
import org.adempiere.webui.util.UserPreference;
|
||||||
import org.compiere.model.MSession;
|
import org.compiere.model.MSession;
|
||||||
import org.compiere.model.MSysConfig;
|
import org.compiere.model.MSysConfig;
|
||||||
import org.compiere.util.CLogger;
|
import org.compiere.util.CLogger;
|
||||||
|
@ -66,12 +67,16 @@ public class AdempiereWebUI extends Window implements EventListener, IWebClient
|
||||||
|
|
||||||
private String langSession;
|
private String langSession;
|
||||||
|
|
||||||
|
private UserPreference userPreference;
|
||||||
|
|
||||||
private static final CLogger logger = CLogger.getCLogger(AdempiereWebUI.class);
|
private static final CLogger logger = CLogger.getCLogger(AdempiereWebUI.class);
|
||||||
|
|
||||||
public AdempiereWebUI()
|
public AdempiereWebUI()
|
||||||
{
|
{
|
||||||
this.addEventListener(Events.ON_CLIENT_INFO, this);
|
this.addEventListener(Events.ON_CLIENT_INFO, this);
|
||||||
this.setVisible(false);
|
this.setVisible(false);
|
||||||
|
|
||||||
|
userPreference = new UserPreference();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onCreate()
|
public void onCreate()
|
||||||
|
@ -219,6 +224,9 @@ public class AdempiereWebUI extends Window implements EventListener, IWebClient
|
||||||
Executions.sendRedirect("index.zul");
|
Executions.sendRedirect("index.zul");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return IDesktop
|
||||||
|
*/
|
||||||
public IDesktop getAppDeskop()
|
public IDesktop getAppDeskop()
|
||||||
{
|
{
|
||||||
return appDesktop;
|
return appDesktop;
|
||||||
|
@ -239,4 +247,20 @@ public class AdempiereWebUI extends Window implements EventListener, IWebClient
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param userId
|
||||||
|
* @return UserPreference
|
||||||
|
*/
|
||||||
|
public UserPreference loadUserPreference(int userId) {
|
||||||
|
userPreference.loadPreference(userId);
|
||||||
|
return userPreference;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return UserPrerence
|
||||||
|
*/
|
||||||
|
public UserPreference getUserPreference() {
|
||||||
|
return userPreference;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,54 @@
|
||||||
|
/******************************************************************************
|
||||||
|
* Copyright (C) 2008 Low Heng Sin *
|
||||||
|
* This program is free software; you can redistribute it and/or modify it *
|
||||||
|
* under the terms version 2 of the GNU General Public License as published *
|
||||||
|
* by the Free Software Foundation. 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., *
|
||||||
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
|
||||||
|
*****************************************************************************/
|
||||||
package org.adempiere.webui;
|
package org.adempiere.webui;
|
||||||
|
|
||||||
import org.adempiere.webui.desktop.IDesktop;
|
import org.adempiere.webui.desktop.IDesktop;
|
||||||
|
import org.adempiere.webui.util.UserPreference;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author hengsin
|
||||||
|
*
|
||||||
|
*/
|
||||||
public interface IWebClient {
|
public interface IWebClient {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* login completed
|
||||||
|
*/
|
||||||
public void loginCompleted();
|
public void loginCompleted();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* logout
|
||||||
|
*/
|
||||||
public void logout();
|
public void logout();
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @return IDesktop
|
||||||
|
*/
|
||||||
public IDesktop getAppDeskop();
|
public IDesktop getAppDeskop();
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param userId
|
||||||
|
* @return UserPreference
|
||||||
|
*/
|
||||||
|
public UserPreference loadUserPreference(int userId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @return UserPreference
|
||||||
|
*/
|
||||||
|
public UserPreference getUserPreference();
|
||||||
|
|
||||||
}
|
}
|
|
@ -27,7 +27,10 @@ import org.adempiere.webui.component.Row;
|
||||||
import org.adempiere.webui.component.Rows;
|
import org.adempiere.webui.component.Rows;
|
||||||
import org.adempiere.webui.component.Textbox;
|
import org.adempiere.webui.component.Textbox;
|
||||||
import org.adempiere.webui.component.Window;
|
import org.adempiere.webui.component.Window;
|
||||||
|
import org.adempiere.webui.session.SessionManager;
|
||||||
|
import org.adempiere.webui.util.UserPreference;
|
||||||
import org.adempiere.webui.window.LoginWindow;
|
import org.adempiere.webui.window.LoginWindow;
|
||||||
|
import org.compiere.util.DB;
|
||||||
import org.compiere.util.Env;
|
import org.compiere.util.Env;
|
||||||
import org.compiere.util.KeyNamePair;
|
import org.compiere.util.KeyNamePair;
|
||||||
import org.compiere.util.Language;
|
import org.compiere.util.Language;
|
||||||
|
@ -41,6 +44,7 @@ import org.zkoss.zk.ui.event.Events;
|
||||||
import org.zkoss.zk.ui.util.Clients;
|
import org.zkoss.zk.ui.util.Clients;
|
||||||
import org.zkoss.zul.Image;
|
import org.zkoss.zul.Image;
|
||||||
import org.zkoss.zul.Listbox;
|
import org.zkoss.zul.Listbox;
|
||||||
|
import org.zkoss.zul.Listitem;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -141,6 +145,7 @@ public class LoginPanel extends Window implements EventListener
|
||||||
txtUserId.setCols(25);
|
txtUserId.setCols(25);
|
||||||
txtUserId.setMaxlength(40);
|
txtUserId.setMaxlength(40);
|
||||||
txtUserId.setWidth("220px");
|
txtUserId.setWidth("220px");
|
||||||
|
txtUserId.addEventListener(Events.ON_CHANGE, this); // Elaine 2009/02/06
|
||||||
|
|
||||||
txtPassword = new Textbox();
|
txtPassword = new Textbox();
|
||||||
txtPassword.setId("txtPassword");
|
txtPassword.setId("txtPassword");
|
||||||
|
@ -187,6 +192,31 @@ public class LoginPanel extends Window implements EventListener
|
||||||
lblLanguage.setValue(res.getString("Language"));
|
lblLanguage.setValue(res.getString("Language"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Elaine 2009/02/06 - initial language
|
||||||
|
if (event.getName().equals(Events.ON_CHANGE))
|
||||||
|
{
|
||||||
|
if(eventComp.getId().equals(txtUserId.getId()))
|
||||||
|
{
|
||||||
|
String userId = txtUserId.getValue();
|
||||||
|
if(userId != null && userId.length() > 0)
|
||||||
|
{
|
||||||
|
int AD_User_ID = DB.getSQLValue(null, "SELECT AD_User_ID FROM AD_User WHERE Name = ?", userId);
|
||||||
|
if(AD_User_ID > 0)
|
||||||
|
{
|
||||||
|
// Elaine 2009/02/06 Load preference from AD_Preference
|
||||||
|
UserPreference userPreference = SessionManager.getSessionApplication().loadUserPreference(AD_User_ID);
|
||||||
|
String initDefault = userPreference.getProperty(UserPreference.P_LANGUAGE);
|
||||||
|
for(int i = 0; i < lstLanguage.getItemCount(); i++)
|
||||||
|
{
|
||||||
|
Listitem li = lstLanguage.getItemAtIndex(i);
|
||||||
|
if(li.getLabel().equals(initDefault))
|
||||||
|
lstLanguage.setSelectedItem(li);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* validates user name and password when logging in
|
* validates user name and password when logging in
|
||||||
|
@ -211,7 +241,9 @@ public class LoginPanel extends Window implements EventListener
|
||||||
Env.setContext(ctx, Env.LANGUAGE, langName);
|
Env.setContext(ctx, Env.LANGUAGE, langName);
|
||||||
Language language = Language.getLanguage(langName);
|
Language language = Language.getLanguage(langName);
|
||||||
Env.verifyLanguage(ctx, language);
|
Env.verifyLanguage(ctx, language);
|
||||||
wndLogin.loginOk(userId, userPassword);
|
wndLogin.loginOk(userId, userPassword);
|
||||||
|
|
||||||
|
Env.setContext(ctx, "Language", lstLanguage.getSelectedItem().getLabel()); // Elaine 2009/02/06
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,6 +24,8 @@ import org.adempiere.webui.component.ConfirmPanel;
|
||||||
import org.adempiere.webui.component.Label;
|
import org.adempiere.webui.component.Label;
|
||||||
import org.adempiere.webui.component.Window;
|
import org.adempiere.webui.component.Window;
|
||||||
import org.adempiere.webui.exception.ApplicationException;
|
import org.adempiere.webui.exception.ApplicationException;
|
||||||
|
import org.adempiere.webui.session.SessionManager;
|
||||||
|
import org.adempiere.webui.util.UserPreference;
|
||||||
import org.adempiere.webui.window.LoginWindow;
|
import org.adempiere.webui.window.LoginWindow;
|
||||||
import org.compiere.db.CConnection;
|
import org.compiere.db.CConnection;
|
||||||
import org.compiere.model.MRole;
|
import org.compiere.model.MRole;
|
||||||
|
@ -202,9 +204,18 @@ public class RolePanel extends Window implements EventListener
|
||||||
btnCancel.setLabel("Cancel");
|
btnCancel.setLabel("Cancel");
|
||||||
btnCancel.addEventListener("onClick", this);
|
btnCancel.addEventListener("onClick", this);
|
||||||
|
|
||||||
|
// initial role - Elaine 2009/02/06
|
||||||
|
UserPreference userPreference = SessionManager.getSessionApplication().getUserPreference();
|
||||||
|
String initDefault = userPreference.getProperty(UserPreference.P_ROLE);
|
||||||
for(int i = 0; i < rolesKNPairs.length; i++)
|
for(int i = 0; i < rolesKNPairs.length; i++)
|
||||||
lstRole.appendItem(rolesKNPairs[i].getName(), rolesKNPairs[i].getID());
|
{
|
||||||
lstRole.setSelectedIndex(0);
|
Listitem li = lstRole.appendItem(rolesKNPairs[i].getName(), rolesKNPairs[i].getID());
|
||||||
|
if(rolesKNPairs[i].getID().equals(initDefault))
|
||||||
|
lstRole.setSelectedItem(li);
|
||||||
|
}
|
||||||
|
if (lstRole.getSelectedIndex() == -1)
|
||||||
|
lstRole.setSelectedIndex(0);
|
||||||
|
//
|
||||||
updateClientList();
|
updateClientList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -214,14 +225,23 @@ public class RolePanel extends Window implements EventListener
|
||||||
Listitem lstItemRole = lstRole.getSelectedItem();
|
Listitem lstItemRole = lstRole.getSelectedItem();
|
||||||
if(lstItemRole != null)
|
if(lstItemRole != null)
|
||||||
{
|
{
|
||||||
|
// initial client - Elaine 2009/02/06
|
||||||
|
UserPreference userPreference = SessionManager.getSessionApplication().getUserPreference();
|
||||||
|
String initDefault = userPreference.getProperty(UserPreference.P_CLIENT);
|
||||||
KeyNamePair roleKNPair = new KeyNamePair(new Integer((String)lstItemRole.getValue()), lstItemRole.getLabel());
|
KeyNamePair roleKNPair = new KeyNamePair(new Integer((String)lstItemRole.getValue()), lstItemRole.getLabel());
|
||||||
KeyNamePair clientKNPairs[] = login.getClients(roleKNPair);
|
KeyNamePair clientKNPairs[] = login.getClients(roleKNPair);
|
||||||
if(clientKNPairs != null && clientKNPairs.length > 0)
|
if(clientKNPairs != null && clientKNPairs.length > 0)
|
||||||
{
|
{
|
||||||
for(int i = 0; i < clientKNPairs.length; i++)
|
for(int i = 0; i < clientKNPairs.length; i++)
|
||||||
lstClient.appendItem(clientKNPairs[i].getName(), clientKNPairs[i].getID());
|
{
|
||||||
lstClient.setSelectedIndex(0);
|
Listitem li = lstClient.appendItem(clientKNPairs[i].getName(), clientKNPairs[i].getID());
|
||||||
|
if(clientKNPairs[i].getID().equals(initDefault))
|
||||||
|
lstClient.setSelectedItem(li);
|
||||||
|
}
|
||||||
|
if (lstClient.getSelectedIndex() == -1)
|
||||||
|
lstClient.setSelectedIndex(0);
|
||||||
}
|
}
|
||||||
|
//
|
||||||
|
|
||||||
//force reload of default role
|
//force reload of default role
|
||||||
MRole.getDefault(Env.getCtx(), true);
|
MRole.getDefault(Env.getCtx(), true);
|
||||||
|
@ -235,14 +255,23 @@ public class RolePanel extends Window implements EventListener
|
||||||
Listitem lstItemClient = lstClient.getSelectedItem();
|
Listitem lstItemClient = lstClient.getSelectedItem();
|
||||||
if(lstItemClient != null)
|
if(lstItemClient != null)
|
||||||
{
|
{
|
||||||
|
// initial organisation - Elaine 2009/02/06
|
||||||
|
UserPreference userPreference = SessionManager.getSessionApplication().getUserPreference();
|
||||||
|
String initDefault = userPreference.getProperty(UserPreference.P_ORG);
|
||||||
KeyNamePair clientKNPair = new KeyNamePair(new Integer((String)lstItemClient.getValue()), lstItemClient.getLabel());
|
KeyNamePair clientKNPair = new KeyNamePair(new Integer((String)lstItemClient.getValue()), lstItemClient.getLabel());
|
||||||
KeyNamePair orgKNPairs[] = login.getOrgs(clientKNPair);
|
KeyNamePair orgKNPairs[] = login.getOrgs(clientKNPair);
|
||||||
if(orgKNPairs != null && orgKNPairs.length > 0)
|
if(orgKNPairs != null && orgKNPairs.length > 0)
|
||||||
{
|
{
|
||||||
for(int i = 0; i < orgKNPairs.length; i++)
|
for(int i = 0; i < orgKNPairs.length; i++)
|
||||||
lstOrganisation.appendItem(orgKNPairs[i].getName(), orgKNPairs[i].getID());
|
{
|
||||||
lstOrganisation.setSelectedIndex(0);
|
Listitem li = lstOrganisation.appendItem(orgKNPairs[i].getName(), orgKNPairs[i].getID());
|
||||||
|
if(orgKNPairs[i].getID().equals(initDefault))
|
||||||
|
lstOrganisation.setSelectedItem(li);
|
||||||
|
}
|
||||||
|
if (lstOrganisation.getSelectedIndex() == -1)
|
||||||
|
lstOrganisation.setSelectedIndex(0);
|
||||||
}
|
}
|
||||||
|
//
|
||||||
}
|
}
|
||||||
updateWarehouseList();
|
updateWarehouseList();
|
||||||
}
|
}
|
||||||
|
@ -253,14 +282,23 @@ public class RolePanel extends Window implements EventListener
|
||||||
Listitem lstItemOrganisation = lstOrganisation.getSelectedItem();
|
Listitem lstItemOrganisation = lstOrganisation.getSelectedItem();
|
||||||
if(lstItemOrganisation != null)
|
if(lstItemOrganisation != null)
|
||||||
{
|
{
|
||||||
|
// initial warehouse - Elaine 2009/02/06
|
||||||
|
UserPreference userPreference = SessionManager.getSessionApplication().getUserPreference();
|
||||||
|
String initDefault = userPreference.getProperty(UserPreference.P_WAREHOUSE);
|
||||||
KeyNamePair organisationKNPair = new KeyNamePair(new Integer((String)lstItemOrganisation.getValue()), lstItemOrganisation.getLabel());
|
KeyNamePair organisationKNPair = new KeyNamePair(new Integer((String)lstItemOrganisation.getValue()), lstItemOrganisation.getLabel());
|
||||||
KeyNamePair warehouseKNPairs[] = login.getWarehouses(organisationKNPair);
|
KeyNamePair warehouseKNPairs[] = login.getWarehouses(organisationKNPair);
|
||||||
if(warehouseKNPairs != null && warehouseKNPairs.length > 0)
|
if(warehouseKNPairs != null && warehouseKNPairs.length > 0)
|
||||||
{
|
{
|
||||||
for(int i = 0; i < warehouseKNPairs.length; i++)
|
for(int i = 0; i < warehouseKNPairs.length; i++)
|
||||||
lstWarehouse.appendItem(warehouseKNPairs[i].getName(), warehouseKNPairs[i].getID());
|
{
|
||||||
lstWarehouse.setSelectedIndex(0);
|
Listitem li = lstWarehouse.appendItem(warehouseKNPairs[i].getName(), warehouseKNPairs[i].getID());
|
||||||
|
if(warehouseKNPairs[i].getID().equals(initDefault))
|
||||||
|
lstWarehouse.setSelectedItem(li);
|
||||||
|
}
|
||||||
|
if (lstWarehouse.getSelectedIndex() == -1)
|
||||||
|
lstWarehouse.setSelectedIndex(0);
|
||||||
}
|
}
|
||||||
|
//
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -337,5 +375,15 @@ public class RolePanel extends Window implements EventListener
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
wndLogin.loginCompleted();
|
wndLogin.loginCompleted();
|
||||||
|
|
||||||
|
// Elaine 2009/02/06 save preference to AD_Preference
|
||||||
|
UserPreference userPreference = SessionManager.getSessionApplication().getUserPreference();
|
||||||
|
userPreference.setProperty(UserPreference.P_LANGUAGE, Env.getContext(Env.getCtx(), "Language"));
|
||||||
|
userPreference.setProperty(UserPreference.P_ROLE, Integer.parseInt((String) lstItemRole.getValue()));
|
||||||
|
userPreference.setProperty(UserPreference.P_CLIENT, Integer.parseInt((String) lstItemClient.getValue()));
|
||||||
|
userPreference.setProperty(UserPreference.P_ORG, Integer.parseInt((String) lstItemOrg.getValue()));
|
||||||
|
userPreference.setProperty(UserPreference.P_WAREHOUSE, Integer.parseInt((String) lstItemWarehouse.getValue()));
|
||||||
|
userPreference.savePreference();
|
||||||
|
//
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,209 @@
|
||||||
|
/******************************************************************************
|
||||||
|
* Copyright (C) 2008 Low Heng Sin *
|
||||||
|
* This program is free software; you can redistribute it and/or modify it *
|
||||||
|
* under the terms version 2 of the GNU General Public License as published *
|
||||||
|
* by the Free Software Foundation. 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., *
|
||||||
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
|
||||||
|
*****************************************************************************/
|
||||||
|
package org.adempiere.webui.util;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Properties;
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
|
import org.compiere.model.I_AD_Preference;
|
||||||
|
import org.compiere.model.MPreference;
|
||||||
|
import org.compiere.model.Query;
|
||||||
|
import org.compiere.util.Env;
|
||||||
|
import org.compiere.util.Language;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author hengsin
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public final class UserPreference implements Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/** Language */
|
||||||
|
public static final String P_LANGUAGE = "Language";
|
||||||
|
private static final String DEFAULT_LANGUAGE = Language.getName
|
||||||
|
(System.getProperty("user.language") + "_" + System.getProperty("user.country"));
|
||||||
|
/** Role */
|
||||||
|
public static final String P_ROLE = "Role";
|
||||||
|
private static final String DEFAULT_ROLE = "";
|
||||||
|
/** Client Name */
|
||||||
|
public static final String P_CLIENT = "Client";
|
||||||
|
private static final String DEFAULT_CLIENT = "";
|
||||||
|
/** Org Name */
|
||||||
|
public static final String P_ORG = "Organization";
|
||||||
|
private static final String DEFAULT_ORG = "";
|
||||||
|
/** Warehouse Name */
|
||||||
|
public static final String P_WAREHOUSE = "Warehouse";
|
||||||
|
private static final String DEFAULT_WAREHOUSE = "";
|
||||||
|
|
||||||
|
/** Ini Properties */
|
||||||
|
private static final String[] PROPERTIES = new String[] {
|
||||||
|
P_LANGUAGE,
|
||||||
|
P_ROLE,
|
||||||
|
P_CLIENT,
|
||||||
|
P_ORG,
|
||||||
|
P_WAREHOUSE };
|
||||||
|
/** Ini Property Values */
|
||||||
|
private static final String[] VALUES = new String[] {
|
||||||
|
DEFAULT_LANGUAGE,
|
||||||
|
DEFAULT_ROLE,
|
||||||
|
DEFAULT_CLIENT,
|
||||||
|
DEFAULT_ORG,
|
||||||
|
DEFAULT_WAREHOUSE };
|
||||||
|
|
||||||
|
/** Container for Properties */
|
||||||
|
private Properties props = new Properties();
|
||||||
|
|
||||||
|
private int m_AD_User_ID;
|
||||||
|
|
||||||
|
/** Logger */
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
private static Logger log = Logger.getLogger(UserPreference.class.getName());
|
||||||
|
|
||||||
|
/**
|
||||||
|
* save user preference
|
||||||
|
*/
|
||||||
|
public void savePreference() {
|
||||||
|
if (m_AD_User_ID > 0) {
|
||||||
|
Query query = new Query(Env.getCtx(), I_AD_Preference.Table_Name, "AD_User_ID = ? AND Attribute = ? AND AD_Window_ID Is NULL", null);
|
||||||
|
for (int i = 0; i < PROPERTIES.length; i++) {
|
||||||
|
String attribute = PROPERTIES[i];
|
||||||
|
String value = props.getProperty(attribute);
|
||||||
|
|
||||||
|
MPreference preference = query.setParameters(new Object[]{m_AD_User_ID, attribute}).first();
|
||||||
|
if (preference == null) {
|
||||||
|
preference = new MPreference(Env.getCtx(), 0, null);
|
||||||
|
preference.setAD_User_ID(m_AD_User_ID);
|
||||||
|
preference.setAttribute(attribute);
|
||||||
|
}
|
||||||
|
preference.setValue(value);
|
||||||
|
preference.saveEx();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* load user preference
|
||||||
|
* @param AD_User_ID
|
||||||
|
*/
|
||||||
|
public void loadPreference(int AD_User_ID) {
|
||||||
|
if (AD_User_ID > 0) {
|
||||||
|
m_AD_User_ID = AD_User_ID;
|
||||||
|
props = new Properties();
|
||||||
|
|
||||||
|
Query query = new Query(Env.getCtx(), I_AD_Preference.Table_Name, "AD_User_ID = ? AND Attribute = ? AND AD_Window_ID Is NULL", null);
|
||||||
|
|
||||||
|
for (int i = 0; i < PROPERTIES.length; i++) {
|
||||||
|
String attribute = PROPERTIES[i];
|
||||||
|
String value = VALUES[i];
|
||||||
|
|
||||||
|
MPreference preference = query.setParameters(new Object[]{m_AD_User_ID, attribute}).first();
|
||||||
|
if (preference != null) {
|
||||||
|
value = preference.getValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
props.setProperty(attribute, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* delete all user preference
|
||||||
|
*/
|
||||||
|
public void deletePreference() {
|
||||||
|
if (m_AD_User_ID > 0) {
|
||||||
|
props = new Properties();
|
||||||
|
|
||||||
|
Query query = new Query(Env.getCtx(), I_AD_Preference.Table_Name, "AD_User_ID = ? AND Attribute = ? AND AD_Window_ID Is NULL", null);
|
||||||
|
for (int i = 0; i < PROPERTIES.length; i++) {
|
||||||
|
String attribute = PROPERTIES[i];
|
||||||
|
|
||||||
|
MPreference preference = query.setParameters(new Object[]{m_AD_User_ID, attribute}).first();
|
||||||
|
if (preference != null) {
|
||||||
|
preference.deleteEx(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
* Set Property
|
||||||
|
*
|
||||||
|
* @param key
|
||||||
|
* Key
|
||||||
|
* @param value
|
||||||
|
* Value
|
||||||
|
*/
|
||||||
|
public void setProperty(String key, String value) {
|
||||||
|
if (props == null)
|
||||||
|
props = new Properties();
|
||||||
|
if (value == null)
|
||||||
|
props.setProperty(key, "");
|
||||||
|
else
|
||||||
|
props.setProperty(key, value);
|
||||||
|
} // setProperty
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set Property
|
||||||
|
*
|
||||||
|
* @param key
|
||||||
|
* Key
|
||||||
|
* @param value
|
||||||
|
* Value
|
||||||
|
*/
|
||||||
|
public void setProperty(String key, boolean value) {
|
||||||
|
setProperty(key, value ? "Y" : "N");
|
||||||
|
} // setProperty
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set Property
|
||||||
|
*
|
||||||
|
* @param key
|
||||||
|
* Key
|
||||||
|
* @param value
|
||||||
|
* Value
|
||||||
|
*/
|
||||||
|
public void setProperty(String key, int value) {
|
||||||
|
setProperty(key, String.valueOf(value));
|
||||||
|
} // setProperty
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get Propery
|
||||||
|
*
|
||||||
|
* @param key
|
||||||
|
* Key
|
||||||
|
* @return Value
|
||||||
|
*/
|
||||||
|
public String getProperty(String key) {
|
||||||
|
if (key == null)
|
||||||
|
return "";
|
||||||
|
|
||||||
|
String value = props.getProperty(key, "");
|
||||||
|
if (value == null || value.length() == 0)
|
||||||
|
return "";
|
||||||
|
return value;
|
||||||
|
} // getProperty
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get Propery as Boolean
|
||||||
|
*
|
||||||
|
* @param key
|
||||||
|
* Key
|
||||||
|
* @return Value
|
||||||
|
*/
|
||||||
|
public boolean isPropertyBool(String key) {
|
||||||
|
return getProperty(key).equals("Y");
|
||||||
|
} // getProperty
|
||||||
|
}
|
Loading…
Reference in New Issue