From fbdb0e0efe74521a7e764640e3dcf2f0a73081f5 Mon Sep 17 00:00:00 2001 From: hieplq Date: Wed, 26 Feb 2014 10:07:07 -0500 Subject: [PATCH] IDEMPIERE-1606 initial client testing > email improvements --- .../oracle/201402111604-IDEMPIERE-1606.sql | 14 +++++ .../201402111604-IDEMPIERE-1606.sql | 11 ++++ .../adempiere/process/InitialClientSetup.java | 22 ++++++- .../src/org/compiere/model/MSetup.java | 61 ++++++++++++------- 4 files changed, 86 insertions(+), 22 deletions(-) create mode 100644 migration/i2.0/oracle/201402111604-IDEMPIERE-1606.sql create mode 100644 migration/i2.0/postgresql/201402111604-IDEMPIERE-1606.sql diff --git a/migration/i2.0/oracle/201402111604-IDEMPIERE-1606.sql b/migration/i2.0/oracle/201402111604-IDEMPIERE-1606.sql new file mode 100644 index 0000000000..93006eff3d --- /dev/null +++ b/migration/i2.0/oracle/201402111604-IDEMPIERE-1606.sql @@ -0,0 +1,14 @@ +SET SQLBLANKLINES ON +SET DEFINE OFF + +-- Feb 11, 2014 2:29:31 AM ICT +-- IDEMPIERE-1606:initial client testing > email improvements +INSERT INTO AD_Process_Para (IsRange,AD_Process_Para_ID,AD_Process_Para_UU,AD_Reference_ID,IsMandatory,EntityType,Name,ColumnName,FieldLength,IsCentrallyMaintained,SeqNo,DefaultValue,IsActive,UpdatedBy,Updated,CreatedBy,Created,AD_Org_ID,IsEncrypted,AD_Client_ID,AD_Process_ID) VALUES ('N',200074,'a9304d73-8f35-487a-a020-fd24c98bb9db',10,'N','D','Administrative User Email','AdminUserEmail',60,'N',45,NULL,'Y',100,TO_DATE('2014-02-11 02:29:30','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2014-02-11 02:29:30','YYYY-MM-DD HH24:MI:SS'),0,'N',0,53161) +; + +-- Feb 11, 2014 2:32:28 AM ICT +INSERT INTO AD_Process_Para (IsRange,AD_Process_Para_ID,AD_Process_Para_UU,AD_Reference_ID,IsMandatory,EntityType,Name,ColumnName,FieldLength,IsCentrallyMaintained,SeqNo,DefaultValue,IsActive,UpdatedBy,Updated,CreatedBy,Created,AD_Org_ID,IsEncrypted,AD_Client_ID,AD_Process_ID) VALUES ('N',200075,'422bd18a-9354-4bb6-9fcd-9c7be9985f9a',10,'N','D','Normal User Email','NormalUserEmail',60,'N',55,NULL,'Y',100,TO_DATE('2014-02-11 02:32:28','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2014-02-11 02:32:28','YYYY-MM-DD HH24:MI:SS'),0,'N',0,53161) +; + +SELECT register_migration_script('201402111604-IDEMPIERE-1606.sql') FROM dual +; diff --git a/migration/i2.0/postgresql/201402111604-IDEMPIERE-1606.sql b/migration/i2.0/postgresql/201402111604-IDEMPIERE-1606.sql new file mode 100644 index 0000000000..8cbdda94db --- /dev/null +++ b/migration/i2.0/postgresql/201402111604-IDEMPIERE-1606.sql @@ -0,0 +1,11 @@ +-- Feb 11, 2014 2:29:31 AM ICT +-- IDEMPIERE-1606:initial client testing > email improvements +INSERT INTO AD_Process_Para (IsRange,AD_Process_Para_ID,AD_Process_Para_UU,AD_Reference_ID,IsMandatory,EntityType,Name,ColumnName,FieldLength,IsCentrallyMaintained,SeqNo,DefaultValue,IsActive,UpdatedBy,Updated,CreatedBy,Created,AD_Org_ID,IsEncrypted,AD_Client_ID,AD_Process_ID) VALUES ('N',200074,'a9304d73-8f35-487a-a020-fd24c98bb9db',10,'N','D','Administrative User Email','AdminUserEmail',60,'N',45,NULL,'Y',100,TO_TIMESTAMP('2014-02-11 02:29:30','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2014-02-11 02:29:30','YYYY-MM-DD HH24:MI:SS'),0,'N',0,53161) +; + +-- Feb 11, 2014 2:32:28 AM ICT +INSERT INTO AD_Process_Para (IsRange,AD_Process_Para_ID,AD_Process_Para_UU,AD_Reference_ID,IsMandatory,EntityType,Name,ColumnName,FieldLength,IsCentrallyMaintained,SeqNo,DefaultValue,IsActive,UpdatedBy,Updated,CreatedBy,Created,AD_Org_ID,IsEncrypted,AD_Client_ID,AD_Process_ID) VALUES ('N',200075,'422bd18a-9354-4bb6-9fcd-9c7be9985f9a',10,'N','D','Normal User Email','NormalUserEmail',60,'N',55,NULL,'Y',100,TO_TIMESTAMP('2014-02-11 02:32:28','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2014-02-11 02:32:28','YYYY-MM-DD HH24:MI:SS'),0,'N',0,53161) +; + +SELECT register_migration_script('201402111604-IDEMPIERE-1606.sql') FROM dual +; diff --git a/org.adempiere.base.process/src/org/adempiere/process/InitialClientSetup.java b/org.adempiere.base.process/src/org/adempiere/process/InitialClientSetup.java index 5b7e1d280a..af96f3b813 100644 --- a/org.adempiere.base.process/src/org/adempiere/process/InitialClientSetup.java +++ b/org.adempiere.base.process/src/org/adempiere/process/InitialClientSetup.java @@ -36,12 +36,15 @@ import org.adempiere.exceptions.AdempiereException; import org.compiere.model.MCity; import org.compiere.model.MCurrency; import org.compiere.model.MSetup; +import org.compiere.model.MSysConfig; import org.compiere.print.PrintUtil; import org.compiere.process.ProcessInfoParameter; import org.compiere.process.SvrProcess; import org.compiere.util.DB; +import org.compiere.util.EMail; import org.compiere.util.Env; import org.compiere.util.KeyNamePair; +import org.compiere.util.Util; /** * Process to create a new client (tenant) @@ -76,6 +79,8 @@ public class InitialClientSetup extends SvrProcess private boolean p_IsUseCampaignDimension = false; private boolean p_IsUseSalesRegionDimension = false; private String p_CoAFile = null; + private String p_AdminUserEmail = null; + private String p_NormalUserEmail = null; /** WindowNo for this process */ public static final int WINDOW_THIS_PROCESS = 9999; @@ -137,6 +142,10 @@ public class InitialClientSetup extends SvrProcess p_EMail = (String) para[i].getParameter(); else if (name.equals("TaxID")) p_TaxID = (String) para[i].getParameter(); + else if (name.equals("AdminUserEmail")) + p_AdminUserEmail = (String) para[i].getParameter(); + else if (name.equals("NormalUserEmail")) + p_NormalUserEmail = (String) para[i].getParameter(); else log.log(Level.SEVERE, "Unknown Parameter: " + name); } @@ -205,6 +214,17 @@ public class InitialClientSetup extends SvrProcess } // Validate existence and read permissions on CoA file + boolean email_login = MSysConfig.getBooleanValue(MSysConfig.USE_EMAIL_FOR_LOGIN, false); + if (email_login) { + if (Util.isEmpty(p_AdminUserEmail)) + throw new AdempiereException("AdminUserEmail is required"); + if (! EMail.validate(p_AdminUserEmail)) + throw new AdempiereException("AdminUserEmail " + p_AdminUserEmail + " is incorrect"); + if (Util.isEmpty(p_NormalUserEmail)) + throw new AdempiereException("NormalUserEmail is required"); + if (! EMail.validate(p_NormalUserEmail)) + throw new AdempiereException("NormalUserEmail " + p_NormalUserEmail + " is incorrect"); + } File coaFile = new File(p_CoAFile); if (!coaFile.exists()) throw new AdempiereException("CoaFile " + p_CoAFile + " does not exist"); @@ -219,7 +239,7 @@ public class InitialClientSetup extends SvrProcess MSetup ms = new MSetup(Env.getCtx(), WINDOW_THIS_PROCESS); if (! ms.createClient(p_ClientName, p_OrgValue, p_OrgName, p_AdminUserName, p_NormalUserName - , p_Phone, p_Phone2, p_Fax, p_EMail, p_TaxID)) { + , p_Phone, p_Phone2, p_Fax, p_EMail, p_TaxID, p_AdminUserEmail, p_NormalUserEmail)) { ms.rollback(); throw new AdempiereException("Create client failed"); } diff --git a/org.adempiere.base/src/org/compiere/model/MSetup.java b/org.adempiere.base/src/org/compiere/model/MSetup.java index e3254d7c47..dafad001f6 100644 --- a/org.adempiere.base/src/org/compiere/model/MSetup.java +++ b/org.adempiere.base/src/org/compiere/model/MSetup.java @@ -27,6 +27,7 @@ import java.sql.SQLException; import java.util.Properties; import java.util.logging.Level; +import org.adempiere.exceptions.AdempiereException; import org.adempiere.util.ProcessUtil; import org.compiere.process.ProcessInfo; import org.compiere.process.ProcessInfoParameter; @@ -108,7 +109,8 @@ public final class MSetup * @return true if created */ public boolean createClient (String clientName, String orgValue, String orgName, - String userClient, String userOrg, String phone, String phone2, String fax, String eMail, String taxID) + String userClient, String userOrg, String phone, String phone2, String fax, String eMail, String taxID, + String adminEmail, String userEmail) { log.info(clientName); m_trx.start(); @@ -276,19 +278,22 @@ public final class MSetup * - Client * - Org */ + MUser clientAdminUser = new MUser(m_ctx, 0, m_trx.getTrxName()); + name = userClient; if (name == null || name.length() == 0) name = m_clientName + "Client"; - AD_User_ID = getNextID(AD_Client_ID, "AD_User"); - AD_User_Name = name; - name = DB.TO_STRING(name); - sql = "INSERT INTO AD_User(" + m_stdColumns + ",AD_User_ID," - + "Name,Description,Password)" - + " VALUES (" + m_stdValues + "," + AD_User_ID + "," - + name + "," + name + "," + name + ")"; - no = DB.executeUpdate(sql, m_trx.getTrxName()); - if (no != 1) - { + + clientAdminUser.setPassword(name); + clientAdminUser.setDescription(name); + clientAdminUser.setName(name); + clientAdminUser.setAD_Client_ID(AD_Client_ID); + clientAdminUser.setAD_Org_ID(0); + clientAdminUser.setEMail(adminEmail); + + try { + clientAdminUser.saveEx(); + } catch (AdempiereException ex) { String err = "Admin User NOT inserted - " + AD_User_Name; log.log(Level.SEVERE, err); m_info.append(err); @@ -296,22 +301,33 @@ public final class MSetup m_trx.close(); return false; } + + AD_User_ID = clientAdminUser.getAD_User_ID(); + AD_User_Name = name; + // Info m_info.append(Msg.translate(m_lang, "AD_User_ID")).append("=").append(AD_User_Name).append("/").append(AD_User_Name).append("\n"); + MUser clientUser = new MUser(m_ctx, 0, m_trx.getTrxName()); + + name = userClient; + if (name == null || name.length() == 0) + name = m_clientName + "Client"; + name = userOrg; if (name == null || name.length() == 0) name = m_clientName + "Org"; - AD_User_U_ID = getNextID(AD_Client_ID, "AD_User"); - AD_User_U_Name = name; - name = DB.TO_STRING(name); - sql = "INSERT INTO AD_User(" + m_stdColumns + ",AD_User_ID," - + "Name,Description,Password)" - + " VALUES (" + m_stdValues + "," + AD_User_U_ID + "," - + name + "," + name + "," + name + ")"; - no = DB.executeUpdate(sql, m_trx.getTrxName()); - if (no != 1) - { + + clientUser.setPassword(name); + clientUser.setDescription(name); + clientUser.setName(name); + clientUser.setAD_Client_ID(AD_Client_ID); + clientUser.setAD_Org_ID(0); + clientUser.setEMail(userEmail); + + try { + clientUser.saveEx(); + } catch (AdempiereException ex) { String err = "Org User NOT inserted - " + AD_User_U_Name; log.log(Level.SEVERE, err); m_info.append(err); @@ -319,6 +335,9 @@ public final class MSetup m_trx.close(); return false; } + + AD_User_U_ID = clientUser.getAD_User_ID(); + AD_User_U_Name = name; // Info m_info.append(Msg.translate(m_lang, "AD_User_ID")).append("=").append(AD_User_U_Name).append("/").append(AD_User_U_Name).append("\n");