📄 env.java
字号:
/******************************************************************************
* The contents of this file are subject to the Compiere License Version 1.1
* ("License"); You may not use this file except in compliance with the License
* You may obtain a copy of the License at http://www.compiere.org/license.html
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
* the specific language governing rights and limitations under the License.
* The Original Code is Compiere ERP & CRM Business Solution
* The Initial Developer of the Original Code is Jorg Janke and ComPiere, Inc.
* Portions created by Jorg Janke are Copyright (C) 1999-2001 Jorg Janke, parts
* created by ComPiere are Copyright (C) ComPiere, Inc.; All Rights Reserved.
* Contributor(s): ______________________________________.
*****************************************************************************/
package org.compiere.util;
import java.awt.*;
import java.text.*;
import javax.swing.*;
import javax.swing.border.*;
import java.security.*;
import java.rmi.*;
import java.net.*;
import java.util.*;
import java.sql.*;
import org.apache.log4j.Logger;
import org.apache.log4j.LogManager;
import org.compiere.Compiere;
import org.compiere.model.*;
import org.compiere.db.CConnection;
/**
* System Environment and static variables
*
* @author Jorg Janke
* @version $Id: Env.java,v 1.6 2003/03/31 05:26:08 jjanke Exp $
*/
public final class Env
{
/** Logging */
private static Logger s_log = Logger.getLogger(Env.class);
/**
* Test Init - Set Environment for tests
*
* @param traceLevel trace level
* @param isClient client session
* @return Context
*/
public static Properties initTest (int traceLevel, boolean isClient)
{
// logger.entering("Env", "initTest");
org.compiere.Compiere.startupClient();
Log.setTraceLevel(traceLevel);
// Test Context
Properties ctx = Env.getCtx();
KeyNamePair[] roles = DB.login(ctx, CConnection.get(),
"System", "System", true);
// load role
if (roles != null && roles.length > 0)
{
KeyNamePair[] clients = DB.loadClients (ctx, roles[0]);
// load client
if (clients != null && clients.length > 0)
{
KeyNamePair[] whs = DB.loadWarehouses(ctx, clients[0]);
//
KeyNamePair[] orgs = DB.loadOrgs(ctx, clients[0]);
// load org
if (orgs != null && orgs.length > 0)
{
DB.loadPreferences(ctx, orgs[0], null, null, null);
}
}
}
//
Env.setContext(ctx, "#Date", "2000-05-01");
// logger.exiting("Env", "initTest");
return ctx;
} // testInit
/**
* Java Version Test
* @return true if Java Version is OK
*/
public static boolean isJavaOK()
{
// Java System version check
String jVersion = System.getProperty("java.version");
String targetVersion = "1.4.";
if (jVersion.startsWith(targetVersion)) // same version
return true;
// Warning
boolean ok = false;
if (jVersion.startsWith("1.4.2")) // later release
ok = true;
// Error Message
StringBuffer msg = new StringBuffer();
msg.append(System.getProperty("java.vm.name")).append(" - ").append(jVersion);
if (ok)
msg.append("(untested)");
msg.append(" <> ").append(targetVersion);
//
JOptionPane.showMessageDialog(null, msg.toString(),
org.compiere.Compiere.getName() + " - Java Version Check",
ok ? JOptionPane.WARNING_MESSAGE : JOptionPane.ERROR_MESSAGE);
return ok;
} // isJavaOK
/**
* Exit System
* @param status System exit status (usually 0 for no error)
*/
public static void exitEnv (int status)
{
s_log.info("exit");
DB.closeTarget();
s_windows.clear();
s_ctx.clear();
Msg.reset();
LogManager.shutdown();
if (Ini.isClient())
System.exit (status);
} // close
/*************************************************************************/
/**
* Application Context
*/
private static Properties s_ctx = new Properties();
/** WindowNo for Find */
public static final int WINDOW_FIND = 1110;
/** WinowNo for MLookup */
public static final int WINDOW_MLOOKUP = 1111;
/** WindowNo for PrintCustomize */
public static final int WINDOW_CUSTOMIZE = 1112;
/** Tab for Info */
public static final int TAB_INFO = 77;
/**
* Get Context
* @return Properties
*/
public static final Properties getCtx()
{
return s_ctx;
} // getCtx
/**
* Set Context
* @param ctx context
*/
public static void setCtx (Properties ctx)
{
if (ctx == null)
throw new IllegalArgumentException ("Env.setCtx - require Context");
s_ctx.clear();
s_ctx = ctx;
} // setCtx
/**
* Set Global Context to Value
* @param ctx context
* @param context context key
* @param value context value
*/
public static void setContext (Properties ctx, String context, String value)
{
if (ctx == null || context == null)
return;
Log.trace(7, "Context " + context + "==" + value);
//
if (value == null || value.length() == 0)
ctx.remove(context);
else
ctx.setProperty(context, value);
} // setContext
/**
* Set Global Context to (int) Value
* @param ctx context
* @param context context key
* @param value context value
*/
public static void setContext (Properties ctx, String context, int value)
{
if (ctx == null || context == null)
return;
Log.trace(7, "Context " + context + "==" + value);
//
ctx.setProperty(context, String.valueOf(value));
} // setContext
/**
* Set Global Context to Y/N Value
* @param ctx context
* @param context context key
* @param value context value
*/
public static void setContext (Properties ctx, String context, boolean value)
{
setContext (ctx, context, value ? "Y" : "N");
} // setContext
/**
* Set Context for Window to Value
* @param ctx context
* @param WindowNo window no
* @param context context key
* @param value context value
*/
public static void setContext (Properties ctx, int WindowNo, String context, String value)
{
if (ctx == null || context == null)
return;
if (WindowNo != WINDOW_FIND && WindowNo != WINDOW_MLOOKUP)
Log.trace(8, "Context("+WindowNo+") " + context + "==" + value);
//
if (value == null || value.equals(""))
ctx.remove(WindowNo+"|"+context);
else
ctx.setProperty(WindowNo+"|"+context, value);
} // setContext
/**
* Set Context for Window to int Value
* @param ctx context
* @param WindowNo window no
* @param context context key
* @param value context value
*/
public static void setContext (Properties ctx, int WindowNo, String context, int value)
{
if (ctx == null || context == null)
return;
if (WindowNo != WINDOW_FIND && WindowNo != WINDOW_MLOOKUP)
Log.trace(8, "Context("+WindowNo+") " + context + "==" + value);
//
ctx.setProperty(WindowNo+"|"+context, String.valueOf(value));
} // setContext
/**
* Set Context for Window to Y/N Value
* @param ctx context
* @param WindowNo window no
* @param context context key
* @param value context value
*/
public static void setContext (Properties ctx, int WindowNo, String context, boolean value)
{
setContext (ctx, WindowNo, context, value ? "Y" : "N");
} // setContext
/**
* Set Context for Window & Tab to Value
* @param ctx context
* @param WindowNo window no
* @param context context key
* @param value context value
* @param TabNo tab no
*/
public static void setContext (Properties ctx, int WindowNo, int TabNo, String context, String value)
{
if (ctx == null || context == null)
return;
if (WindowNo != WINDOW_FIND && WindowNo != WINDOW_MLOOKUP)
Log.trace(9, "Context("+WindowNo+","+TabNo+") " + context + "==" + value);
//
if (value == null || value.equals(""))
ctx.remove(WindowNo+"|"+TabNo+"|"+context);
else
ctx.setProperty(WindowNo+"|"+TabNo+"|"+context, value);
} // setContext
/**
* Set AutoCommit
* @param ctx context
* @param autoCommit auto commit (save)
*/
public static void setAutoCommit (Properties ctx, boolean autoCommit)
{
if (ctx == null)
return;
ctx.setProperty("AutoCommit", autoCommit ? "Y" : "N");
} // setAutoCommit
/**
* Set AutoCommit for Window
* @param ctx context
* @param WindowNo window no
* @param autoCommit auto commit (save)
*/
public static void setAutoCommit (Properties ctx, int WindowNo, boolean autoCommit)
{
if (ctx == null)
return;
ctx.setProperty(WindowNo+"|AutoCommit", autoCommit ? "Y" : "N");
} // setAutoCommit
/**
* Get global Value of Context
* @param ctx context
* @param context context key
* @return value or ""
*/
public static String getContext (Properties ctx, String context)
{
if (ctx == null || context == null)
throw new IllegalArgumentException ("Env.getContext - require Context");
return ctx.getProperty(context, "");
} // getContext
/**
* Get Value of Context for Window.
* if not found global context if available and enabled
* @param ctx context
* @param WindowNo window
* @param context context key
* @param onlyWindow if true, no defaults are used
* @return value or ""
*/
public static String getContext (Properties ctx, int WindowNo, String context, boolean onlyWindow)
{
if (ctx == null || context == null)
throw new IllegalArgumentException ("Env.getContext - require Context");
String s = ctx.getProperty(WindowNo+"|"+context);
if (s == null)
{
if (onlyWindow)
return "";
if (context.startsWith("#") || context.startsWith("$"))
return getContext(ctx, context);
return getContext(ctx, "#" + context);
}
return s;
} // getContext
/**
* Get Value of Context for Window.
* if not found global context if available
* @param ctx context
* @param WindowNo window
* @param context context key
* @return value or ""
*/
public static String getContext (Properties ctx, int WindowNo, String context)
{
return getContext(ctx, WindowNo, context, false);
} // getContext
/**
* Get Value of Context for Window & Tab,
* if not found global context if available
* @param ctx context
* @param WindowNo window no
* @param TabNo tab no
* @param context context key
* @return value or ""
*/
public static String getContext (Properties ctx, int WindowNo, int TabNo, String context)
{
if (ctx == null || context == null)
throw new IllegalArgumentException ("Env.getContext - require Context");
String s = ctx.getProperty(WindowNo+"|"+TabNo+"|"+context);
if (s == null)
return getContext(ctx, WindowNo, context, false);
return s;
} // getContext
/**
* Get Context and convert it to an integer (0 if error)
* @param ctx context
* @param context context key
* @return value
*/
public static int getContextAsInt(Properties ctx, String context)
{
if (ctx == null || context == null)
throw new IllegalArgumentException ("Env.getContext - require Context");
String s = getContext(ctx, context);
if (s.length() == 0)
s = getContext(ctx, 0, context, false); // search 0 and defaults
if (s.length() == 0)
return 0;
//
try
{
return Integer.parseInt(s);
}
catch (NumberFormatException e)
{
Log.error("Env.getContextAsInt (" + context + ") = " + s, e);
}
return 0;
} // getContextAsInt
/**
* Get Context and convert it to an integer (0 if error)
* @param ctx context
* @param WindowNo window no
* @param context context key
* @return value or 0
*/
public static int getContextAsInt(Properties ctx, int WindowNo, String context)
{
if (ctx == null || context == null)
throw new IllegalArgumentException ("Env.getContext - require Context");
String s = getContext(ctx, WindowNo, context, false);
if (s.length() == 0)
return 0;
//
try
{
return Integer.parseInt(s);
}
catch (NumberFormatException e)
{
Log.error("Env.getContextAsInt (" + context + ") = " + s, e);
}
return 0;
} // getContextAsInt
/**
* Is AutoCommit
* @param ctx context
* @return true if auto commit
*/
public static boolean isAutoCommit (Properties ctx)
{
if (ctx == null)
throw new IllegalArgumentException ("Env.getContext - require Context");
String s = getContext(ctx, "AutoCommit");
if (s != null && s.equals("Y"))
return true;
return false;
} // isAutoCommit
/**
* Is Window AutoCommit (if not set use default)
* @param ctx context
* @param WindowNo window no
* @return true if auto commit
*/
public static boolean isAutoCommit (Properties ctx, int WindowNo)
{
if (ctx == null)
throw new IllegalArgumentException ("Env.getContext - require Context");
String s = getContext(ctx, WindowNo, "AutoCommit", false);
if (s != null)
{
if (s.equals("Y"))
return true;
else
return false;
}
return isAutoCommit(ctx);
} // isAutoCommit
/**
* Get Context and convert it to a Timestamp
* if error return today's date
* @param ctx context
* @param context context key
* @return Timestamp
*/
public static Timestamp getContextAsDate(Properties ctx, String context)
{
return getContextAsDate(ctx, 0, context);
} // getContextAsDate
/**
* Get Context and convert it to a Timestamp
* if error return today's date
* @param ctx context
* @param WindowNo window no
* @param context context key
* @return Timestamp
*/
public static Timestamp getContextAsDate(Properties ctx, int WindowNo, String context)
{
if (ctx == null || context == null)
throw new IllegalArgumentException ("Env.getContext - require Context");
String s = getContext(ctx, WindowNo, context, false);
// JDBC Format YYYY-MM-DD example 2000-09-11 00:00:00.0
if (s == null || s.equals(""))
{
Log.error("Env.getContextAsDate - No value for: " + context);
return new Timestamp(System.currentTimeMillis());
}
// timestamp requires time
if (s.trim().length() == 10)
s = s.trim() + " 00:00:00.0";
return Timestamp.valueOf(s);
} // getContextAsDate
/*************************************************************************/
/**
* Get Preference.
* <pre>
* 0) Current Setting
* 1) Window Preference
* 2) Global Preference
* 3) Login settings
* 4) Accounting settings
* </pre>
* @param ctx context
* @param AD_Window_ID window no
* @param context Entity to search
* @param system System level preferences (vs. user defined)
* @return preference value
*/
public static String getPreference (Properties ctx, int AD_Window_ID, String context, boolean system)
{
if (ctx == null || context == null)
throw new IllegalArgumentException ("Env.getPreference - require Context");
String retValue = null;
//
if (!system) // User Preferences
{
retValue = ctx.getProperty("P"+AD_Window_ID+"|"+context);// Window Pref
if (retValue == null)
retValue = ctx.getProperty("P|"+context); // Global Pref
}
else // System Preferences
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -