📄 login.java
字号:
Ini.setProperty(Ini.P_WAREHOUSE, warehouse.getName());
}
// Date (default today)
long today = System.currentTimeMillis();
if (timestamp != null)
today = timestamp.getTime();
Env.setContext(m_ctx, "#Date", new java.sql.Timestamp(today));
// Optional Printer
if (printerName == null)
printerName = "";
Env.setContext(m_ctx, "#Printer", printerName);
Ini.setProperty(Ini.P_PRINTER, printerName);
// Load Role Info
MRole.getDefault(m_ctx, true);
// Other
Env.setAutoCommit(m_ctx, Ini.isPropertyBool(Ini.P_A_COMMIT));
Env.setAutoNew(m_ctx, Ini.isPropertyBool(Ini.P_A_NEW));
if (MRole.getDefault(m_ctx, false).isShowAcct())
Env.setContext(m_ctx, "#ShowAcct", Ini.getProperty(Ini.P_SHOW_ACCT));
else
Env.setContext(m_ctx, "#ShowAcct", "N");
Env.setContext(m_ctx, "#ShowTrl", Ini.getProperty(Ini.P_SHOW_TRL));
Env.setContext(m_ctx, "#ShowAdvanced", Ini.getProperty(Ini.P_SHOW_ADVANCED));
String retValue = "";
int AD_Client_ID = Env.getContextAsInt(m_ctx, "#AD_Client_ID");
int AD_Org_ID = org.getKey();
int AD_User_ID = Env.getContextAsInt(m_ctx, "#AD_User_ID");
int AD_Role_ID = Env.getContextAsInt(m_ctx, "#AD_Role_ID");
// Other Settings
Env.setContext(m_ctx, "#YYYY", "Y");
Env.setContext(m_ctx, "#StdPrecision", 2);
// AccountSchema Info (first)
String sql = "SELECT * "
+ "FROM C_AcctSchema a, AD_ClientInfo c "
+ "WHERE a.C_AcctSchema_ID=c.C_AcctSchema1_ID "
+ "AND c.AD_Client_ID=?";
PreparedStatement pstmt = null;
try
{
int C_AcctSchema_ID = 0;
pstmt = DB.prepareStatement(sql, null);
pstmt.setInt(1, AD_Client_ID);
ResultSet rs = pstmt.executeQuery();
if (!rs.next())
{
// No Warning for System
if (AD_Role_ID != 0)
retValue = "NoValidAcctInfo";
}
else
{
// Accounting Info
C_AcctSchema_ID = rs.getInt("C_AcctSchema_ID");
Env.setContext(m_ctx, "$C_AcctSchema_ID", C_AcctSchema_ID);
Env.setContext(m_ctx, "$C_Currency_ID", rs.getInt("C_Currency_ID"));
Env.setContext(m_ctx, "$HasAlias", rs.getString("HasAlias"));
}
rs.close();
pstmt.close();
// Accounting Elements
sql = "SELECT ElementType "
+ "FROM C_AcctSchema_Element "
+ "WHERE C_AcctSchema_ID=?"
+ " AND IsActive='Y'";
pstmt = DB.prepareStatement(sql, null);
pstmt.setInt(1, C_AcctSchema_ID);
rs = pstmt.executeQuery();
while (rs.next())
Env.setContext(m_ctx, "$Element_" + rs.getString("ElementType"), "Y");
rs.close();
pstmt.close();
// This reads all relevant window neutral defaults
// overwriting superseeded ones. Window specific is read in Mainain
sql = "SELECT Attribute, Value, AD_Window_ID "
+ "FROM AD_Preference "
+ "WHERE AD_Client_ID IN (0, @#AD_Client_ID@)"
+ " AND AD_Org_ID IN (0, @#AD_Org_ID@)"
+ " AND (AD_User_ID IS NULL OR AD_User_ID=0 OR AD_User_ID=@#AD_User_ID@)"
+ " AND IsActive='Y' "
+ "ORDER BY Attribute, AD_Client_ID, AD_User_ID DESC, AD_Org_ID";
// the last one overwrites - System - Client - User - Org - Window
sql = Env.parseContext(m_ctx, 0, sql, false);
if (sql.length() == 0)
log.log(Level.SEVERE, "loadPreferences - Missing Environment");
else
{
pstmt = DB.prepareStatement(sql, null);
rs = pstmt.executeQuery();
while (rs.next())
{
int AD_Window_ID = rs.getInt(3);
String at = "";
if (rs.wasNull())
at = "P|" + rs.getString(1);
else
at = "P" + AD_Window_ID + "|" + rs.getString(1);
String va = rs.getString(2);
Env.setContext(m_ctx, at, va);
}
rs.close();
pstmt.close();
}
// Default Values
log.info("Default Values ...");
sql = "SELECT t.TableName, c.ColumnName "
+ "FROM AD_Column c "
+ " INNER JOIN AD_Table t ON (c.AD_Table_ID=t.AD_Table_ID) "
+ "WHERE c.IsKey='Y' AND t.IsActive='Y'"
+ " AND EXISTS (SELECT * FROM AD_Column cc "
+ " WHERE ColumnName = 'IsDefault' AND t.AD_Table_ID=cc.AD_Table_ID AND cc.IsActive='Y')";
pstmt = DB.prepareStatement(sql, null);
rs = pstmt.executeQuery();
while (rs.next())
loadDefault (rs.getString(1), rs.getString(2));
rs.close();
pstmt.close();
pstmt = null;
}
catch (SQLException e)
{
log.log(Level.SEVERE, "loadPreferences", e);
}
try
{
if (pstmt != null)
pstmt.close();
pstmt = null;
}
catch (Exception e)
{
pstmt = null;
}
//
Ini.saveProperties(Ini.isClient());
// Country
Env.setContext(m_ctx, "#C_Country_ID", MCountry.getDefault(m_ctx).getC_Country_ID());
return retValue;
} // loadPreferences
/**
* Load Default Value for Table into Context.
* @param TableName table name
* @param ColumnName column name
*/
private void loadDefault (String TableName, String ColumnName)
{
if (TableName.startsWith("AD_Window")
|| TableName.startsWith("AD_PrintFormat")
|| TableName.startsWith("AD_Workflow") )
return;
String value = null;
//
String sql = "SELECT " + ColumnName + " FROM " + TableName // most specific first
+ " WHERE IsDefault='Y' AND IsActive='Y' ORDER BY AD_Client_ID DESC, AD_Org_ID DESC";
sql = MRole.getDefault(m_ctx, false).addAccessSQL(sql,
TableName, MRole.SQL_NOTQUALIFIED, MRole.SQL_RO);
PreparedStatement pstmt = null;
try
{
pstmt = DB.prepareStatement(sql, null);
ResultSet rs = pstmt.executeQuery();
if (rs.next())
value = rs.getString(1);
rs.close();
pstmt.close();
pstmt = null;
}
catch (SQLException e)
{
log.log(Level.SEVERE, TableName + " (" + sql + ")", e);
return;
}
try
{
if (pstmt != null)
pstmt.close();
pstmt = null;
}
catch (Exception e)
{
pstmt = null;
}
// Set Context Value
if (value != null && value.length() != 0)
{
if (TableName.equals("C_DocType"))
Env.setContext(m_ctx, "#C_DocTypeTarget_ID", value);
else
Env.setContext(m_ctx, "#" + ColumnName, value);
}
} // loadDefault
/**
* Batch Login using Ini values
* <code>
Compiere.startup(true);
Ini.setProperty(Ini.P_UID,"SuperUser");
Ini.setProperty(Ini.P_PWD,"System");
Ini.setProperty(Ini.P_ROLE,"GardenAdmin");
Ini.setProperty(Ini.P_CLIENT, "Garden World");
Ini.setProperty(Ini.P_ORG,"HQ");
Ini.setProperty(Ini.P_WAREHOUSE,"HQ");
Ini.setProperty(Ini.P_LANGUAGE,"English");
Ini.setProperty(Ini.P_PRINTER,"MyPrinter");
Login login = new Login(Env.getCtx());
login.batchLogin();
* </code>
* @param loginDate optional login date
* @return true if logged in using Ini values
*/
public boolean batchLogin(java.sql.Timestamp loginDate)
{
// User Login
String uid = Ini.getProperty(Ini.P_UID);
String pwd = Ini.getProperty(Ini.P_PWD);
KeyNamePair[] roles = getRoles (uid, pwd);
if (roles == null || roles.length == 0)
{
log.severe("User/Password invalid: " + uid);
return false;
}
log.info("User: " + uid);
// Role
String role = Ini.getProperty(Ini.P_ROLE);
KeyNamePair rolePP = null;
for (int i = 0; i < roles.length; i++)
{
KeyNamePair pair = roles[i];
if (pair.getName().equalsIgnoreCase(role))
{
rolePP = pair;
break;
}
}
if (rolePP == null)
{
log.severe("Role invalid: " + role);
for (int i = 0; i < roles.length; i++)
log.info("Option: " + roles[i]);
return false;
}
log.info("Role: " + role);
// Clients
String client = Ini.getProperty(Ini.P_CLIENT);
KeyNamePair[] clients = getClients(rolePP);
if (clients == null || clients.length == 0)
{
log.severe("No Clients for Role: " + role);
return false;
}
KeyNamePair clientPP = null;
for (int i = 0; i < clients.length; i++)
{
KeyNamePair pair = clients[i];
if (pair.getName().equalsIgnoreCase(client))
{
clientPP = pair;
break;
}
}
if (clientPP == null)
{
log.severe("Client invalid: " + client);
for (int i = 0; i < clients.length; i++)
log.info("Option: " + clients[i]);
return false;
}
// Organization
String org = Ini.getProperty(Ini.P_ORG);
KeyNamePair[] orgs = getOrgs(clientPP);
if (orgs == null || orgs.length == 0)
{
log.severe("No Orgs for Client: " + client);
return false;
}
KeyNamePair orgPP = null;
for (int i = 0; i < orgs.length; i++)
{
KeyNamePair pair = orgs[i];
if (pair.getName().equalsIgnoreCase(org))
{
orgPP = pair;
break;
}
}
if (orgPP == null)
{
log.severe("Org invalid: " + org);
for (int i = 0; i < orgs.length; i++)
log.info("Option: " + orgs[i]);
return false;
}
String error = validateLogin(orgPP);
if (error != null && error.length() > 0)
return false;
// Warehouse
String wh = Ini.getProperty(Ini.P_WAREHOUSE);
KeyNamePair[] whs = getWarehouses(orgPP);
if (whs == null || whs.length == 0)
{
log.severe("No Warehouses for Org: " + org);
return false;
}
KeyNamePair whPP = null;
for (int i = 0; i < whs.length; i++)
{
KeyNamePair pair = whs[i];
if (pair.getName().equalsIgnoreCase(wh))
{
whPP = pair;
break;
}
}
if (whPP == null)
{
log.severe("Warehouse invalid: " + wh);
for (int i = 0; i < whs.length; i++)
log.info("Option: " + whs[i]);
return false;
}
// Language
String langName = Ini.getProperty(Ini.P_LANGUAGE);
Language language = Language.getLanguage(langName);
Language.setLoginLanguage(language);
Env.verifyLanguage (m_ctx, language);
Env.setContext(m_ctx, Env.LANGUAGE, language.getAD_Language());
Locale loc = language.getLocale();
Locale.setDefault(loc);
Msg.getMsg(m_ctx, "0");
// Preferences
String printerName = Ini.getProperty(Ini.P_PRINTER);
if (loginDate == null)
loginDate = new java.sql.Timestamp(System.currentTimeMillis());
loadPreferences(orgPP, whPP, loginDate, printerName);
//
log.info("complete");
return true;
} // batchLogin
/**
* Batch Login with system date
* @return true if logged in
*/
public boolean batchLogin()
{
return batchLogin(new java.sql.Timestamp (System.currentTimeMillis()));
} // batchLogin
} // Login
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -