From 482903959cddb0123bc22fc1dc95c44ea88929a9 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Tue, 4 Sep 2012 11:50:52 -0500 Subject: [PATCH 1/5] IDEMPIERE-373 Implement User Locking / Set fields according to IDEMPIERE-368 --- .../oracle/900_IDEMPIERE-373_User_Locking.sql | 46 +++++++++++++++++++ .../900_IDEMPIERE-373_User_Locking.sql | 46 +++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 migration/360lts-release/oracle/900_IDEMPIERE-373_User_Locking.sql create mode 100644 migration/360lts-release/postgresql/900_IDEMPIERE-373_User_Locking.sql diff --git a/migration/360lts-release/oracle/900_IDEMPIERE-373_User_Locking.sql b/migration/360lts-release/oracle/900_IDEMPIERE-373_User_Locking.sql new file mode 100644 index 0000000000..f5b321340c --- /dev/null +++ b/migration/360lts-release/oracle/900_IDEMPIERE-373_User_Locking.sql @@ -0,0 +1,46 @@ +-- Sep 4, 2012 11:47:10 AM COT +-- IDEMPIERE-373 Implement User Locking +UPDATE AD_Field SET XPosition=2,Updated=TO_DATE('2012-09-04 11:47:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200405 +; + +-- Sep 4, 2012 11:47:26 AM COT +-- IDEMPIERE-373 Implement User Locking +UPDATE AD_Field SET XPosition=3, ColumnSpan=2,Updated=TO_DATE('2012-09-04 11:47:26','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200400 +; + +-- Sep 4, 2012 11:47:36 AM COT +-- IDEMPIERE-373 Implement User Locking +UPDATE AD_Field SET ColumnSpan=2,Updated=TO_DATE('2012-09-04 11:47:36','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200403 +; + +-- Sep 4, 2012 11:47:51 AM COT +-- IDEMPIERE-373 Implement User Locking +UPDATE AD_Field SET XPosition=4, ColumnSpan=2,Updated=TO_DATE('2012-09-04 11:47:51','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200401 +; + +-- Sep 4, 2012 11:47:58 AM COT +-- IDEMPIERE-373 Implement User Locking +UPDATE AD_Field SET XPosition=4,Updated=TO_DATE('2012-09-04 11:47:58','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200400 +; + +-- Sep 4, 2012 11:48:09 AM COT +-- IDEMPIERE-373 Implement User Locking +UPDATE AD_Field SET XPosition=2, ColumnSpan=2,Updated=TO_DATE('2012-09-04 11:48:09','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200406 +; + +-- Sep 4, 2012 11:48:19 AM COT +-- IDEMPIERE-373 Implement User Locking +UPDATE AD_Field SET ColumnSpan=2,Updated=TO_DATE('2012-09-04 11:48:19','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200405 +; + +-- Sep 4, 2012 11:48:30 AM COT +-- IDEMPIERE-373 Implement User Locking +UPDATE AD_Field SET XPosition=4, ColumnSpan=2,Updated=TO_DATE('2012-09-04 11:48:30','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200402 +; + +UPDATE AD_System + SET LastMigrationScriptApplied='900_IDEMPIERE-373_User_Locking.sql' +WHERE LastMigrationScriptApplied<'900_IDEMPIERE-373_User_Locking.sql' + OR LastMigrationScriptApplied IS NULL +; + diff --git a/migration/360lts-release/postgresql/900_IDEMPIERE-373_User_Locking.sql b/migration/360lts-release/postgresql/900_IDEMPIERE-373_User_Locking.sql new file mode 100644 index 0000000000..af9c79bdd3 --- /dev/null +++ b/migration/360lts-release/postgresql/900_IDEMPIERE-373_User_Locking.sql @@ -0,0 +1,46 @@ +-- Sep 4, 2012 11:47:10 AM COT +-- IDEMPIERE-373 Implement User Locking +UPDATE AD_Field SET XPosition=2,Updated=TO_TIMESTAMP('2012-09-04 11:47:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200405 +; + +-- Sep 4, 2012 11:47:26 AM COT +-- IDEMPIERE-373 Implement User Locking +UPDATE AD_Field SET XPosition=3, ColumnSpan=2,Updated=TO_TIMESTAMP('2012-09-04 11:47:26','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200400 +; + +-- Sep 4, 2012 11:47:36 AM COT +-- IDEMPIERE-373 Implement User Locking +UPDATE AD_Field SET ColumnSpan=2,Updated=TO_TIMESTAMP('2012-09-04 11:47:36','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200403 +; + +-- Sep 4, 2012 11:47:51 AM COT +-- IDEMPIERE-373 Implement User Locking +UPDATE AD_Field SET XPosition=4, ColumnSpan=2,Updated=TO_TIMESTAMP('2012-09-04 11:47:51','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200401 +; + +-- Sep 4, 2012 11:47:58 AM COT +-- IDEMPIERE-373 Implement User Locking +UPDATE AD_Field SET XPosition=4,Updated=TO_TIMESTAMP('2012-09-04 11:47:58','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200400 +; + +-- Sep 4, 2012 11:48:09 AM COT +-- IDEMPIERE-373 Implement User Locking +UPDATE AD_Field SET XPosition=2, ColumnSpan=2,Updated=TO_TIMESTAMP('2012-09-04 11:48:09','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200406 +; + +-- Sep 4, 2012 11:48:19 AM COT +-- IDEMPIERE-373 Implement User Locking +UPDATE AD_Field SET ColumnSpan=2,Updated=TO_TIMESTAMP('2012-09-04 11:48:19','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200405 +; + +-- Sep 4, 2012 11:48:30 AM COT +-- IDEMPIERE-373 Implement User Locking +UPDATE AD_Field SET XPosition=4, ColumnSpan=2,Updated=TO_TIMESTAMP('2012-09-04 11:48:30','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200402 +; + +UPDATE AD_System + SET LastMigrationScriptApplied='900_IDEMPIERE-373_User_Locking.sql' +WHERE LastMigrationScriptApplied<'900_IDEMPIERE-373_User_Locking.sql' + OR LastMigrationScriptApplied IS NULL +; + From 8bda458b0cdf78353bffbf32fa2fe93a226e73fc Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Tue, 4 Sep 2012 12:10:28 -0500 Subject: [PATCH 2/5] IDEMPIERE-368 / Fix problem in process parameter panel --- .../WEB-INF/src/org/adempiere/webui/editor/WStringEditor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WStringEditor.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WStringEditor.java index 4f052c3e0d..018f14cff8 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WStringEditor.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WStringEditor.java @@ -129,7 +129,7 @@ public class WStringEditor extends WEditor implements ContextMenuListener } else getComponent().setMultiline(false); - getComponent().setRows(gridField.getNumLines()); + getComponent().setRows(gridField.getNumLines() <= 0 ? 1 : gridField.getNumLines()); if (getComponent() instanceof Textbox) ((Textbox)getComponent()).setObscureType(obscureType); From 14085d6218b2936cd776a3f6c3e8e5f05fc51e54 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Tue, 4 Sep 2012 15:19:45 -0500 Subject: [PATCH 3/5] IDEMPIERE-420 Improve the way to register migration scripts applied --- .../functions/register_migration_script.sql | 47 ++++++++++++++++ .../functions/register_migration_script.sql | 53 ++++++++++++++++++ .../oracle/901_IDEMPIERE-420.sql | 50 +++++++++++++++++ .../postgresql/901_IDEMPIERE-420.sql | 56 +++++++++++++++++++ 4 files changed, 206 insertions(+) create mode 100644 db/ddlutils/oracle/functions/register_migration_script.sql create mode 100644 db/ddlutils/postgresql/functions/register_migration_script.sql create mode 100644 migration/360lts-release/oracle/901_IDEMPIERE-420.sql create mode 100644 migration/360lts-release/postgresql/901_IDEMPIERE-420.sql diff --git a/db/ddlutils/oracle/functions/register_migration_script.sql b/db/ddlutils/oracle/functions/register_migration_script.sql new file mode 100644 index 0000000000..027a10095a --- /dev/null +++ b/db/ddlutils/oracle/functions/register_migration_script.sql @@ -0,0 +1,47 @@ +CREATE OR REPLACE FUNCTION register_migration_script +( + p_script IN VARCHAR2 +) +RETURN VARCHAR2 +IS + PRAGMA AUTONOMOUS_TRANSACTION; + v_return VARCHAR2(255); + v_scriptid INTEGER; +BEGIN + v_return := p_script || ' successfully registered'; + UPDATE AD_System + SET LastMigrationScriptApplied=p_script + WHERE LastMigrationScriptApplied Date: Tue, 4 Sep 2012 18:14:17 -0500 Subject: [PATCH 4/5] IDEMPIERE-260 Configuration using Eclipse install.app does not work when db is Oracle / previous approach broke install.app --- org.adempiere.install/install.app.launch | 2 +- .../db/oracle/config/ConfigOracle.java | 34 +++++++++++++------ 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/org.adempiere.install/install.app.launch b/org.adempiere.install/install.app.launch index 2825f83ab9..13ba2d1018 100644 --- a/org.adempiere.install/install.app.launch +++ b/org.adempiere.install/install.app.launch @@ -16,7 +16,7 @@ - + diff --git a/org.compiere.db.oracle.provider/src/org/adempiere/db/oracle/config/ConfigOracle.java b/org.compiere.db.oracle.provider/src/org/adempiere/db/oracle/config/ConfigOracle.java index 418290d2a1..0bac97f447 100644 --- a/org.compiere.db.oracle.provider/src/org/adempiere/db/oracle/config/ConfigOracle.java +++ b/org.compiere.db.oracle.provider/src/org/adempiere/db/oracle/config/ConfigOracle.java @@ -31,6 +31,7 @@ import org.adempiere.install.IDBConfigMonitor; import org.adempiere.install.IDatabaseConfig; import org.compiere.db.Database; import org.compiere.install.ConfigurationData; +import org.compiere.tools.FileUtil; import org.compiere.util.CLogger; /** @@ -387,15 +388,28 @@ public class ConfigOracle implements IDatabaseConfig ospath = "windows"; else ospath = "unix"; - // TNS Name Info via sqlplus - String sqlplus = "sqlplus system/" + systemPassword + "@" - + "//" + databaseServer.getHostName() - + ":" + databasePort - + "/" + databaseName - + " @utils." + ospath + "/oracle/Test.sql"; - log.config(sqlplus); - pass = testSQL(sqlplus); - error = "Error connecting via: " + sqlplus; + String testFile = "utils." + ospath + "/oracle/Test.sql"; + if (! new File(testFile).isFile()) { + testFile = "org.adempiere.server-feature/" + testFile; + if (! new File(testFile).isFile()) { + testFile = null; + } + } + if (testFile != null) { + // TNS Name Info via sqlplus + String sqlplus = "sqlplus system/" + systemPassword + "@" + + "//" + databaseServer.getHostName() + + ":" + databasePort + + "/" + databaseName + + " @" + testFile; + log.config(sqlplus); + pass = testSQL(sqlplus); + error = "Error connecting via: " + sqlplus; + } else { + pass = false; + error = "Test file does not exist"; + log.warning(error); + } if (monitor != null) monitor.update(new DBConfigStatus(DBConfigStatus.DATABASE_SQL_TEST, "ErrorTNS", pass, true, error)); @@ -411,7 +425,7 @@ public class ConfigOracle implements IDatabaseConfig log.info("OK: Connection = " + url); else log.warning("Cannot connect via Net8: " + url); - } + } else log.info("OCI Test Skipped"); // From d29d3c17e3f9c243fee9b110714fa0f3f36562b7 Mon Sep 17 00:00:00 2001 From: Juliana Corredor Date: Tue, 4 Sep 2012 22:51:50 -0500 Subject: [PATCH 5/5] IDEMPIERE-358 Login- how to make unique and safe - chose Option 1 (sysconfig parameter to use email as login) / Fix problem with remember me disabled, fix problem with multi-tenant and check context --- .../org/adempiere/webui/AdempiereWebUI.java | 4 ++- .../org/adempiere/webui/panel/RolePanel.java | 25 +++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/AdempiereWebUI.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/AdempiereWebUI.java index 441806452e..5811450ae1 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/AdempiereWebUI.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/AdempiereWebUI.java @@ -204,7 +204,9 @@ public class AdempiereWebUI extends Window implements EventListener, IWeb HttpSession httpSess = (HttpSession) currSess.getNativeSession(); MSession mSession = MSession.get (ctx, currSess.getRemoteAddr(), - currSess.getRemoteHost(), httpSess.getId() ); + currSess.getRemoteHost(), httpSess.getId() ); + + currSess.setAttribute("Check_AD_User_ID", Env.getAD_User_ID(ctx)); //enable full interface, relook into this when doing preference Env.setContext(ctx, "#ShowTrl", true); diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/RolePanel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/RolePanel.java index 74616f35cb..9e3922d5ac 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/RolePanel.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/RolePanel.java @@ -94,6 +94,8 @@ public class RolePanel extends Window implements EventListener, Deferrable private String m_userName; /** Password */ private KeyNamePair[] m_clientKNPairs; + + private UserPreference m_userpreference=null; private boolean m_show = true; @@ -104,6 +106,13 @@ public class RolePanel extends Window implements EventListener, Deferrable login = new Login(ctx); m_show = show; m_clientKNPairs = clientsKNPairs; + + if( m_clientKNPairs.length == 1 && !m_show ){ + Env.setContext(m_ctx, "#AD_Client_ID", (String) m_clientKNPairs[0].getID()); + MUser user = MUser.get (m_ctx, m_userName); + m_userpreference=new UserPreference(); + m_userpreference.loadPreference(user.get_ID()); + } initComponents(); @@ -304,6 +313,10 @@ public class RolePanel extends Window implements EventListener, Deferrable // initial client - Elaine 2009/02/06 UserPreference userPreference = SessionManager.getSessionApplication().getUserPreference(); String initDefault = userPreference.getProperty(UserPreference.P_CLIENT); + if( initDefault.length() == 0 && !m_show && m_userpreference != null ) + { + initDefault=m_userpreference.getProperty( UserPreference.P_CLIENT ); + } if (m_clientKNPairs != null && m_clientKNPairs.length > 0) { for(int i = 0; i < m_clientKNPairs.length; i++) @@ -342,6 +355,10 @@ public class RolePanel extends Window implements EventListener, Deferrable // initial role UserPreference userPreference = SessionManager.getSessionApplication().getUserPreference(); String initDefault = userPreference.getProperty(UserPreference.P_ROLE); + if( initDefault.length() == 0 && !m_show && m_userpreference != null ) + { + initDefault=m_userpreference.getProperty( UserPreference.P_ROLE ); + } KeyNamePair clientKNPair = new KeyNamePair(new Integer((String)lstItemClient.getValue()), lstItemClient.getLabel()); KeyNamePair roleKNPairs[] = login.getRoles(m_userName, clientKNPair); if (roleKNPairs != null && roleKNPairs.length > 0) @@ -391,6 +408,10 @@ public class RolePanel extends Window implements EventListener, Deferrable // initial organisation - Elaine 2009/02/06 UserPreference userPreference = SessionManager.getSessionApplication().getUserPreference(); String initDefault = userPreference.getProperty(UserPreference.P_ORG); + if( initDefault.length() == 0 && !m_show && m_userpreference != null ) + { + initDefault=m_userpreference.getProperty( UserPreference.P_ORG ); + } KeyNamePair RoleKNPair = new KeyNamePair(new Integer((String)lstItemRole.getValue()), lstItemRole.getLabel()); KeyNamePair orgKNPairs[] = login.getOrgs(RoleKNPair); if(orgKNPairs != null && orgKNPairs.length > 0) @@ -423,6 +444,10 @@ public class RolePanel extends Window implements EventListener, Deferrable // initial warehouse - Elaine 2009/02/06 UserPreference userPreference = SessionManager.getSessionApplication().getUserPreference(); String initDefault = userPreference.getProperty(UserPreference.P_WAREHOUSE); + if( initDefault.length() == 0 && !m_show && m_userpreference != null ) + { + initDefault=m_userpreference.getProperty( UserPreference.P_WAREHOUSE ); + } KeyNamePair organisationKNPair = new KeyNamePair(new Integer((String)lstItemOrganisation.getValue()), lstItemOrganisation.getLabel()); KeyNamePair warehouseKNPairs[] = login.getWarehouses(organisationKNPair); if(warehouseKNPairs != null && warehouseKNPairs.length > 0)