📄 ini.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.io.*;
import java.sql.*;
import java.util.*;
import java.util.logging.*;
import org.compiere.plaf.*;
/**
* Load & Save INI Settings fopm property file
* Initiated in Compiere.startup
* Settings activated in ALogin.getIni
*
* @author Jorg Janke
* @version $Id: Ini.java,v 1.47 2005/12/17 19:56:58 jjanke Exp $
*/
public final class Ini implements Serializable
{
/** Property file name */
public static final String COMPIERE_PROPERTY_FILE = "Compiere.properties";
// Property Constants and Default Values
public static final String P_UID = "ApplicationUserID";
private static final String DEFAULT_UID = "System";
//
public static final String P_PWD = "ApplicationPassword";
private static final String DEFAULT_PWD = "System";
//
public static final String P_STORE_PWD = "StorePassword";
private static final boolean DEFAULT_STORE_PWD = true;
//
public static final String P_TRACELEVEL = "TraceLevel";
private static final String DEFAULT_TRACELEVEL = "WARNING";
public static final String P_TRACEFILE = "TraceFile";
private static final boolean DEFAULT_TRACEFILE = false;
//
public static final String P_LANGUAGE = "Language";
private static final String DEFAULT_LANGUAGE = Language.getName
(System.getProperty("user.language") + "_" + System.getProperty("user.country"));
//
public static final String P_INI = "FileNameINI";
private static final String DEFAULT_INI = "";
//
public static final String P_CONNECTION = "Connection";
private static final String DEFAULT_CONNECTION = "";
//
public static final String P_CONTEXT = "DataSource";
private static final String DEFAULT_CONTEXT = "java:compiereDB";
//
public static final String P_UI_LOOK = "UILookFeel";
private static final String DEFAULT_UI_LOOK = CompiereLookAndFeel.NAME;
//
public static final String P_UI_THEME = "UITheme";
private static final String DEFAULT_UI_THEME = CompiereThemeBlueMetal.NAME;
public static final String P_UI_FLAT = "UIFlat";
private static final boolean DEFAULT_UI_FLAT = false;
//
public static final String P_A_COMMIT = "AutoCommit";
private static final boolean DEFAULT_A_COMMIT = true;
//
public static final String P_A_LOGIN = "AutoLogin";
private static final boolean DEFAULT_A_LOGIN = false;
//
public static final String P_A_NEW = "AutoNew";
private static final boolean DEFAULT_A_NEW = false;
//
public static final String P_COMPIERESYS = "CompiereSys"; // Save system records
private static final boolean DEFAULT_COMPIERESYS = false;
//
public static final String P_SHOW_ACCT = "ShowAcct";
private static final boolean DEFAULT_SHOW_ACCT = true;
//
public static final String P_SHOW_ADVANCED = "ShowAdvanced";
private static final boolean DEFAULT_SHOW_ADVANCED = true;
//
public static final String P_SHOW_TRL = "ShowTrl";
private static final boolean DEFAULT_SHOW_TRL = false;
//
public static final String P_CACHE_WINDOW = "CacheWindow";
private static final boolean DEFAULT_CACHE_WINDOW = true;
//
public static final String P_TEMP_DIR = "TempDir";
private static final String DEFAULT_TEMP_DIR = "";
//
public static final String P_ROLE = "Role";
private static final String DEFAULT_ROLE = "";
//
public static final String P_CLIENT = "Client";
private static final String DEFAULT_CLIENT = "";
//
public static final String P_ORG = "Organization";
private static final String DEFAULT_ORG = "";
//
public static final String P_PRINTER = "Printer";
private static final String DEFAULT_PRINTER = "";
//
public static final String P_WAREHOUSE = "Warehouse";
private static final String DEFAULT_WAREHOUSE = "";
//
public static final String P_TODAY = "Today";
private static final Timestamp DEFAULT_TODAY = new Timestamp(System.currentTimeMillis());
//
public static final String P_PRINTPREVIEW = "PrintPreview";
private static final boolean DEFAULT_PRINTPREVIEW = false;
//
public static final String P_DASHBOARDFIRST = "DashboardFirst";
private static final boolean DEFAULT_DASHBOARDFIRST = false;
//
private static final String P_WARNING = "Warning";
private static final String DEFAULT_WARNING = "Do_not_change_any_of_the_data_as_they_will_have_undocumented_side_effects.";
private static final String P_WARNING_de = "WarningD";
private static final String DEFAULT_WARNING_de ="Einstellungen_nicht_aendern,_da_diese_undokumentierte_Nebenwirkungen_haben.";
/** Ini Properties */
private static final String[] PROPERTIES = new String[] {
P_UID, P_PWD, P_TRACELEVEL, P_TRACEFILE,
P_LANGUAGE, P_INI,
P_CONNECTION, P_STORE_PWD,
P_UI_LOOK, P_UI_THEME, P_UI_FLAT,
P_A_COMMIT, P_A_LOGIN, P_A_NEW,
P_COMPIERESYS, P_SHOW_ACCT, P_SHOW_TRL,
P_SHOW_ADVANCED, P_CACHE_WINDOW,
P_CONTEXT, P_TEMP_DIR,
P_ROLE, P_CLIENT, P_ORG, P_PRINTER, P_WAREHOUSE, P_TODAY,
P_PRINTPREVIEW, P_DASHBOARDFIRST,
P_WARNING, P_WARNING_de
};
/** Ini Property Values */
private static final String[] VALUES = new String[] {
DEFAULT_UID, DEFAULT_PWD, DEFAULT_TRACELEVEL, DEFAULT_TRACEFILE?"Y":"N",
DEFAULT_LANGUAGE, DEFAULT_INI,
DEFAULT_CONNECTION, DEFAULT_STORE_PWD?"Y":"N",
DEFAULT_UI_LOOK, DEFAULT_UI_THEME, DEFAULT_UI_FLAT?"Y":"N",
DEFAULT_A_COMMIT?"Y":"N", DEFAULT_A_LOGIN?"Y":"N", DEFAULT_A_NEW?"Y":"N",
DEFAULT_COMPIERESYS?"Y":"N", DEFAULT_SHOW_ACCT?"Y":"N", DEFAULT_SHOW_TRL?"Y":"N",
DEFAULT_SHOW_ADVANCED?"Y":"N", DEFAULT_CACHE_WINDOW?"Y":"N",
DEFAULT_CONTEXT, DEFAULT_TEMP_DIR,
DEFAULT_ROLE, DEFAULT_CLIENT, DEFAULT_ORG, DEFAULT_PRINTER, DEFAULT_WAREHOUSE, DEFAULT_TODAY.toString(),
DEFAULT_PRINTPREVIEW?"Y":"N",
DEFAULT_DASHBOARDFIRST?"Y":"N",
DEFAULT_WARNING, DEFAULT_WARNING_de
};
/** Container for Properties */
private static Properties s_prop = new Properties();
/** Logger */
private static Logger log = Logger.getLogger(Ini.class.getName());
/**
* Save INI parameters to disk
* @param tryUserHome get user home first
*/
public static void saveProperties (boolean tryUserHome)
{
String fileName = getFileName (tryUserHome);
FileOutputStream fos = null;
try
{
File f = new File(fileName);
fos = new FileOutputStream(f);
s_prop.store(fos, "Compiere");
fos.flush();
fos.close();
}
catch (Exception e)
{
log.log(Level.SEVERE, "Cannot save Properties to " + fileName + " - " + e.toString());
return;
}
catch (Throwable t)
{
log.log(Level.SEVERE, "Cannot save Properties to " + fileName + " - " + t.toString());
return;
}
log.finer(fileName);
} // save
/**
* Load INI parameters from disk
* @param reload reload
*/
public static void loadProperties (boolean reload)
{
if (reload || s_prop.size() == 0)
loadProperties(getFileName(s_client));
} // loadProperties
/**
* Load INI parameters from filename.
* Logger is on default level (INFO)
* @param filename to load
* @return true if first time
*/
public static boolean loadProperties (String filename)
{
boolean loadOK = true;
boolean firstTime = false;
s_prop = new Properties();
FileInputStream fis = null;
try
{
fis = new FileInputStream(filename);
s_prop.load(fis);
fis.close();
}
catch (FileNotFoundException e)
{
log.warning(filename + " not found");
loadOK = false;
}
catch (Exception e)
{
log.log(Level.SEVERE, filename + " - " + e.toString());
loadOK = false;
}
catch (Throwable t)
{
log.log(Level.SEVERE, filename + " - " + t.toString());
loadOK = false;
}
if (!loadOK)
{
log.config(filename);
firstTime = true;
if (!IniDialog.accept())
System.exit(-1);
}
// Check/set properties defaults
for (int i = 0; i < PROPERTIES.length; i++)
{
if (VALUES[i].length() > 0)
checkProperty(PROPERTIES[i], VALUES[i]);
}
//
String tempDir = System.getProperty("java.io.tmpdir");
if (tempDir == null || tempDir.length() == 1)
tempDir = getCompiereHome();
if (tempDir == null)
tempDir = "";
checkProperty(P_TEMP_DIR, tempDir);
// Save if not exist or could not be read
if (!loadOK)
saveProperties(true);
s_loaded = true;
log.info(filename + " #" + s_prop.size());
return firstTime;
} // loadProperties
/**
* Load property and set to default, if not existing
*
* @param key Key
* @param defaultValue Default Value
* @return Property
*/
private static String checkProperty (String key, String defaultValue)
{
String result = null;
if (key.equals(P_WARNING) || key.equals(P_WARNING_de))
result = defaultValue;
else if (!isClient())
result = s_prop.getProperty (key, SecureInterface.CLEARVALUE_START + defaultValue + SecureInterface.CLEARVALUE_END);
else
result = s_prop.getProperty (key, SecureEngine.encrypt(defaultValue));
s_prop.setProperty (key, result);
return result;
} // checkProperty
/**
* Return File Name of INI file
* <pre>
* Examples:
* C:\WinNT\Profiles\jjanke\Compiere.properties
* D:\Compiere2\Compiere.properties
* Compiere.properties
* </pre>
* Can be overwritten by -DPropertyFile=myFile allowing multiple
* configurations / property files.
* @param tryUserHome get user home first
* @return file name
*/
private static String getFileName (boolean tryUserHome)
{
if (System.getProperty("PropertyFile") != null)
return System.getProperty("PropertyFile");
//
String base = null;
if (tryUserHome && s_client)
base = System.getProperty("user.home");
// Server
if (!s_client || base == null || base.length() == 0)
{
String home = getCompiereHome();
if (home != null)
base = home;
}
if (base != null && !base.endsWith(File.separator))
base += File.separator;
if (base == null)
base = "";
//
return base + COMPIERE_PROPERTY_FILE;
} // getFileName
/**************************************************************************
* Set Property
* @param key Key
* @param value Value
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -