📄 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 Smart Business Solution. The Initial
* Developer of the Original Code is Jorg Janke. Portions created by Jorg Janke
* are Copyright (C) 1999-2005 Jorg Janke.
* All parts are Copyright (C) 1999-2005 ComPiere, Inc. All Rights Reserved.
* Contributor(s): ______________________________________.
*****************************************************************************/
package org.compiere.util;
import java.awt.*;
import java.math.*;
import java.net.*;
import java.sql.*;
import java.util.*;
import java.util.logging.*;
import javax.swing.*;
import org.compiere.*;
import org.compiere.db.*;
import org.compiere.model.*;
import org.compiere.swing.*;
/**
* System Environment and static variables
*
* @author Jorg Janke
* @version $Id: Env.java,v 1.60 2006/02/12 02:19:04 jjanke Exp $
*/
public final class Env
{
/** Logging */
private static CLogger s_log = CLogger.getCLogger(Env.class);
/**
* Exit System
* @param status System exit status (usually 0 for no error)
*/
public static void exitEnv (int status)
{
// End Session
MSession session = MSession.get(Env.getCtx(), false); // finish
if (session != null)
session.logout();
//
reset(true); // final cache reset
s_log.info("");
//
CLogMgt.shutdown();
//
if (Ini.isClient())
System.exit (status);
} // close
/**
* Reset Cache
* @param finalCall everything otherwise login data remains
*/
public static void reset (boolean finalCall)
{
s_log.info("finalCall=" + finalCall);
closeWindows();
// Dismantle windows
/**
for (int i = 0; i < s_windows.size(); i++)
{
Container win = (Container)s_windows.get(i);
if (win.getClass().getName().endsWith("AMenu")) // Null pointer
;
else if (win instanceof Window)
((Window)win).dispose();
else
win.removeAll();
}
**/
s_windows.clear();
// Clear all Context
if (finalCall)
s_ctx.clear();
else // clear window context only
{
Object[] keys = s_ctx.keySet().toArray();
for (int i = 0; i < keys.length; i++)
{
String tag = keys[i].toString();
if (Character.isDigit(tag.charAt(0)))
s_ctx.remove(keys[i]);
}
}
// Cache
CacheMgt.get().reset();
DB.closeTarget();
// Reset Role Access
if (!finalCall)
{
DB.setDBTarget(CConnection.get());
MRole defaultRole = MRole.getDefault(s_ctx, false);
if (defaultRole != null)
defaultRole.loadAccess(true); // Reload
}
} // resetAll
/**************************************************************************
* 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;
/** WindowNo for PrintCustomize */
public static final int WINDOW_INFO = 1113;
/** Tab for Info */
public static final int TAB_INFO = 1113;
/**
* 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 ("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;
s_log.finer("Context " + context + "==" + value);
//
if (value == null || value.length() == 0)
ctx.remove(context);
else
ctx.setProperty(context, value);
} // setContext
/**
* Set Global Context to Value
* @param ctx context
* @param context context key
* @param value context value
*/
public static void setContext (Properties ctx, String context, Timestamp value)
{
if (ctx == null || context == null)
return;
if (value == null)
{
ctx.remove(context);
s_log.finer("Context " + context + "==" + value);
}
else
{ // JDBC Format 2005-05-09 00:00:00.0
String stringValue = value.toString();
// Chop off .0
stringValue = stringValue.substring(0, stringValue.length()-2);
ctx.setProperty(context, stringValue);
s_log.finer("Context " + context + "==" + stringValue);
}
} // 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;
s_log.finer("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)
s_log.finer("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 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, Timestamp value)
{
if (ctx == null || context == null)
return;
boolean logit = WindowNo != WINDOW_FIND && WindowNo != WINDOW_MLOOKUP;
if (value == null)
{
ctx.remove(WindowNo+"|"+context);
s_log.finer("Context("+WindowNo+") " + context + "==" + value);
}
else
{ // JDBC Format 2005-05-09 00:00:00.0
String stringValue = value.toString();
// Chop off .0
stringValue = stringValue.substring(0, stringValue.length()-2);
ctx.setProperty(WindowNo+"|"+context, stringValue);
s_log.finer("Context("+WindowNo+") " + context + "==" + stringValue);
}
} // 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)
s_log.finer("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 TabNo tab no
* @param context context key
* @param value context value
* */
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)
s_log.finest("Context("+WindowNo+","+TabNo+") " + context + "==" + value);
//
if (value == null || value.equals(""))
ctx.remove(WindowNo+"|"+TabNo+"|"+context);
else
ctx.setProperty(WindowNo+"|"+TabNo+"|"+context, value);
} // setContext
/**
* Set Auto Commit
* @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 Auto Commit 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
/**
* Set Auto New Record
* @param ctx context
* @param autoNew auto new record
*/
public static void setAutoNew (Properties ctx, boolean autoNew)
{
if (ctx == null)
return;
ctx.setProperty("AutoNew", autoNew ? "Y" : "N");
} // setAutoNew
/**
* Set Auto New Record for Window
* @param ctx context
* @param WindowNo window no
* @param autoNew auto new record
*/
public static void setAutoNew (Properties ctx, int WindowNo, boolean autoNew)
{
if (ctx == null)
return;
ctx.setProperty(WindowNo+"|AutoNew", autoNew ? "Y" : "N");
} // setAutoNew
/**
* Set SO Trx
* @param ctx context
* @param isSOTrx SO Context
*/
public static void setSOTrx (Properties ctx, boolean isSOTrx)
{
if (ctx == null)
return;
ctx.setProperty("IsSOTrx", isSOTrx ? "Y" : "N");
} // setSOTrx
/**
* 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 ("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 unless explicitly asked for
* @return value or ""
*/
public static String getContext (Properties ctx, int WindowNo, String context, boolean onlyWindow)
{
if (ctx == null)
throw new IllegalArgumentException ("No Ctx");
if (context == null)
throw new IllegalArgumentException ("Require Context");
String s = ctx.getProperty(WindowNo+"|"+context);
if (s == null)
{
// Explicit Base Values
if (context.startsWith("#") || context.startsWith("$"))
return getContext(ctx, context);
if (onlyWindow) // no Default values
return "";
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 ("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 ("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)
{
s_log.log(Level.SEVERE, "(" + context + ") = " + s, e);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -