Adempiere 3.1.2
This commit is contained in:
parent
6c5fa90281
commit
ee46d9e792
|
@ -42,7 +42,7 @@ public final class Adempiere
|
||||||
/** Timestamp */
|
/** Timestamp */
|
||||||
static public final String ID = "$Id: Adempiere.java,v 1.8 2006/08/11 02:58:14 jjanke Exp $";
|
static public final String ID = "$Id: Adempiere.java,v 1.8 2006/08/11 02:58:14 jjanke Exp $";
|
||||||
/** Main Version String */
|
/** Main Version String */
|
||||||
static public final String MAIN_VERSION = "Release 3.1.1";
|
static public final String MAIN_VERSION = "Release 3.1.2";
|
||||||
/** Detail Version as date Used for Client/Server */
|
/** Detail Version as date Used for Client/Server */
|
||||||
static public final String DATE_VERSION = "2006-11-02";
|
static public final String DATE_VERSION = "2006-11-02";
|
||||||
/** Database Version as date Compared with AD_System */
|
/** Database Version as date Compared with AD_System */
|
||||||
|
@ -72,7 +72,7 @@ public final class Adempiere
|
||||||
static private String s_supportEmail = "";
|
static private String s_supportEmail = "";
|
||||||
|
|
||||||
/** Subtitle */
|
/** Subtitle */
|
||||||
static public final String SUB_TITLE = "The Open Source Profesional ERP,CRM and SCM ";
|
static public final String SUB_TITLE = "Smart Suite ERP,CRM and SCM ";
|
||||||
/** Adempiere is a wordwide registered Trademark
|
/** Adempiere is a wordwide registered Trademark
|
||||||
* - Don't modify this - Program will someday fail unexpectedly */
|
* - Don't modify this - Program will someday fail unexpectedly */
|
||||||
static public final String ADEMPIERE_R = "Adempiere\u00AE";
|
static public final String ADEMPIERE_R = "Adempiere\u00AE";
|
||||||
|
|
|
@ -27,7 +27,7 @@ import org.compiere.interfaces.*;
|
||||||
import org.compiere.util.*;
|
import org.compiere.util.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adempiere Connection Descriptor
|
* Compiere Connection Descriptor
|
||||||
*
|
*
|
||||||
* @author Jorg Janke
|
* @author Jorg Janke
|
||||||
* @author Marek Mosiewicz<marek.mosiewicz@jotel.com.pl> - support for RMI over HTTP
|
* @author Marek Mosiewicz<marek.mosiewicz@jotel.com.pl> - support for RMI over HTTP
|
||||||
|
@ -138,7 +138,7 @@ public class CConnection implements Serializable
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
* Adempiere Connection
|
* Compiere Connection
|
||||||
* @param host optional application/db host
|
* @param host optional application/db host
|
||||||
*/
|
*/
|
||||||
private CConnection (String host)
|
private CConnection (String host)
|
||||||
|
@ -182,9 +182,9 @@ public class CConnection implements Serializable
|
||||||
private int m_fw_port = 0;
|
private int m_fw_port = 0;
|
||||||
|
|
||||||
/** DB User name */
|
/** DB User name */
|
||||||
private String m_db_uid = "adempiere";
|
private String m_db_uid = "compiere";
|
||||||
/** DB User password */
|
/** DB User password */
|
||||||
private String m_db_pwd = "adempiere";
|
private String m_db_pwd = "compiere";
|
||||||
|
|
||||||
/** Database */
|
/** Database */
|
||||||
private AdempiereDatabase m_db = null;
|
private AdempiereDatabase m_db = null;
|
||||||
|
@ -210,9 +210,6 @@ public class CConnection implements Serializable
|
||||||
/** DB Info */
|
/** DB Info */
|
||||||
private String m_dbInfo = null;
|
private String m_dbInfo = null;
|
||||||
|
|
||||||
/** Had application server been query **/
|
|
||||||
private boolean m_queryAppsServer = false;
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* Get Name
|
* Get Name
|
||||||
|
@ -259,7 +256,6 @@ public class CConnection implements Serializable
|
||||||
m_apps_host = apps_host;
|
m_apps_host = apps_host;
|
||||||
m_name = toString ();
|
m_name = toString ();
|
||||||
m_okApps = false;
|
m_okApps = false;
|
||||||
m_queryAppsServer = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -279,7 +275,6 @@ public class CConnection implements Serializable
|
||||||
{
|
{
|
||||||
m_apps_port = apps_port;
|
m_apps_port = apps_port;
|
||||||
m_okApps = false;
|
m_okApps = false;
|
||||||
m_queryAppsServer = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -308,11 +303,9 @@ public class CConnection implements Serializable
|
||||||
*/
|
*/
|
||||||
public boolean isAppsServerOK (boolean tryContactAgain)
|
public boolean isAppsServerOK (boolean tryContactAgain)
|
||||||
{
|
{
|
||||||
if (!tryContactAgain && m_queryAppsServer)
|
if (!tryContactAgain)
|
||||||
return m_okApps;
|
return m_okApps;
|
||||||
|
|
||||||
m_queryAppsServer = true;
|
|
||||||
|
|
||||||
// Get Context
|
// Get Context
|
||||||
if (m_iContext == null)
|
if (m_iContext == null)
|
||||||
{
|
{
|
||||||
|
@ -347,9 +340,8 @@ public class CConnection implements Serializable
|
||||||
*/
|
*/
|
||||||
public Exception testAppsServer ()
|
public Exception testAppsServer ()
|
||||||
{
|
{
|
||||||
//if (queryAppsServerInfo ())
|
if (queryAppsServerInfo ())
|
||||||
// testDatabase (false);
|
testDatabase (false);
|
||||||
queryAppsServerInfo ();
|
|
||||||
return getAppsServerException ();
|
return getAppsServerException ();
|
||||||
} // testAppsServer
|
} // testAppsServer
|
||||||
|
|
||||||
|
@ -809,24 +801,11 @@ public class CConnection implements Serializable
|
||||||
if (getDbPort () != DB_DB2.DEFAULT_PORT)
|
if (getDbPort () != DB_DB2.DEFAULT_PORT)
|
||||||
setDbPort (DB_DB2.DEFAULT_PORT);
|
setDbPort (DB_DB2.DEFAULT_PORT);
|
||||||
}
|
}
|
||||||
else if (isDerby())
|
/*else if (isDerby())
|
||||||
{
|
{
|
||||||
// if (getDbPort () != DB_Derby.DEFAULT_PORT)
|
if (getDbPort () != DB_Derby.DEFAULT_PORT)
|
||||||
// setDbPort (DB_Derby.DEFAULT_PORT);
|
setDbPort (DB_Derby.DEFAULT_PORT);
|
||||||
}
|
}*/
|
||||||
// begin vpj-cd e-evolution 09 ene 2006
|
|
||||||
// PostgreSQL
|
|
||||||
if (isPostgreSQL ())
|
|
||||||
{
|
|
||||||
if (getDbPort () != DB_PostgreSQL.DEFAULT_PORT)
|
|
||||||
setDbPort (DB_PostgreSQL.DEFAULT_PORT);
|
|
||||||
}
|
|
||||||
//end vpj-cd e-evolution 09 ene 2006
|
|
||||||
if (isFyracle())
|
|
||||||
{
|
|
||||||
if (getDbPort () != DB_Fyracle.DEFAULT_PORT)
|
|
||||||
setDbPort (DB_Fyracle.DEFAULT_PORT);
|
|
||||||
}
|
|
||||||
} // setType
|
} // setType
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -875,16 +854,7 @@ public class CConnection implements Serializable
|
||||||
return Database.DB_MSSQLServer.equals (m_type);
|
return Database.DB_MSSQLServer.equals (m_type);
|
||||||
} // isMSSQLServer
|
} // isMSSQLServer
|
||||||
|
|
||||||
//begin e-evolution vpj-cd 30 nov 2005
|
/**
|
||||||
/**
|
|
||||||
* Is PostgreSQL DB
|
|
||||||
* @return true if PostgreSQL
|
|
||||||
*/
|
|
||||||
// public boolean isEDB ()
|
|
||||||
// {
|
|
||||||
// return Database.DB_EDB.equals (m_type);
|
|
||||||
// } // isPostgreSQL
|
|
||||||
/**
|
|
||||||
* Is PostgreSQL DB
|
* Is PostgreSQL DB
|
||||||
* @return true if PostgreSQL
|
* @return true if PostgreSQL
|
||||||
*/
|
*/
|
||||||
|
@ -902,6 +872,7 @@ public class CConnection implements Serializable
|
||||||
return Database.DB_FYRACLE.equals (m_type);
|
return Database.DB_FYRACLE.equals (m_type);
|
||||||
} // isPostgreSQL
|
} // isPostgreSQL
|
||||||
//end
|
//end
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Is Database Connection OK
|
* Is Database Connection OK
|
||||||
* @return true if database connection is OK
|
* @return true if database connection is OK
|
||||||
|
@ -989,7 +960,16 @@ public class CConnection implements Serializable
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
readInfo(conn);
|
DatabaseMetaData dbmd = conn.getMetaData ();
|
||||||
|
m_info[0] = "Database=" + dbmd.getDatabaseProductName ()
|
||||||
|
+ " - " + dbmd.getDatabaseProductVersion ();
|
||||||
|
m_info[0] = m_info[0].replace ('\n', ' ');
|
||||||
|
m_info[1] = "Driver =" + dbmd.getDriverName ()
|
||||||
|
+ " - " + dbmd.getDriverVersion ();
|
||||||
|
if (isDataSource())
|
||||||
|
m_info[1] += " - via DataSource";
|
||||||
|
m_info[1] = m_info[1].replace ('\n', ' ');
|
||||||
|
log.config(m_info[0] + " - " + m_info[1]);
|
||||||
conn.close ();
|
conn.close ();
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
|
@ -1001,18 +981,19 @@ public class CConnection implements Serializable
|
||||||
return m_dbException; // from opening
|
return m_dbException; // from opening
|
||||||
} // testDatabase
|
} // testDatabase
|
||||||
|
|
||||||
public void readInfo(Connection conn) throws SQLException {
|
public void readInfo(Connection conn) throws SQLException {
|
||||||
DatabaseMetaData dbmd = conn.getMetaData ();
|
DatabaseMetaData dbmd = conn.getMetaData ();
|
||||||
m_info[0] = "Database=" + dbmd.getDatabaseProductName ()
|
m_info[0] = "Database=" + dbmd.getDatabaseProductName ()
|
||||||
+ " - " + dbmd.getDatabaseProductVersion ();
|
+ " - " + dbmd.getDatabaseProductVersion ();
|
||||||
m_info[0] = m_info[0].replace ('\n', ' ');
|
m_info[0] = m_info[0].replace ('\n', ' ');
|
||||||
m_info[1] = "Driver =" + dbmd.getDriverName ()
|
m_info[1] = "Driver =" + dbmd.getDriverName ()
|
||||||
+ " - " + dbmd.getDriverVersion ();
|
+ " - " + dbmd.getDriverVersion ();
|
||||||
if (isDataSource())
|
if (isDataSource())
|
||||||
m_info[1] += " - via DataSource";
|
m_info[1] += " - via DataSource";
|
||||||
m_info[1] = m_info[1].replace ('\n', ' ');
|
m_info[1] = m_info[1].replace ('\n', ' ');
|
||||||
log.config(m_info[0] + " - " + m_info[1]);
|
log.config(m_info[0] + " - " + m_info[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* Short String representation
|
* Short String representation
|
||||||
|
@ -1224,7 +1205,15 @@ public class CConnection implements Serializable
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
m_db = Database.getDatabase(m_type);
|
for (int i = 0; i < Database.DB_NAMES.length; i++)
|
||||||
|
{
|
||||||
|
if (Database.DB_NAMES[i].equals (m_type))
|
||||||
|
{
|
||||||
|
m_db = (AdempiereDatabase)Database.DB_CLASSES[i].
|
||||||
|
newInstance ();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
|
@ -1507,19 +1496,12 @@ public class CConnection implements Serializable
|
||||||
log.finer(getAppsHost());
|
log.finer(getAppsHost());
|
||||||
long start = System.currentTimeMillis();
|
long start = System.currentTimeMillis();
|
||||||
m_okApps = false;
|
m_okApps = false;
|
||||||
m_queryAppsServer = true;
|
|
||||||
m_appsException = null;
|
m_appsException = null;
|
||||||
//
|
//
|
||||||
getInitialContext (false);
|
getInitialContext (false);
|
||||||
if (m_iContext == null)
|
if (m_iContext == null)
|
||||||
return m_okApps; // false
|
return m_okApps; // false
|
||||||
|
|
||||||
// Carlos Ruiz - globalqss - speed up when jnp://MyAppsServer:1099 is set
|
|
||||||
if (getAppsHost().equalsIgnoreCase("MyAppsServer")) {
|
|
||||||
log.warning (getAppsHost() + " ignored");
|
|
||||||
return m_okApps; // false
|
|
||||||
}
|
|
||||||
|
|
||||||
// Prevent error trace
|
// Prevent error trace
|
||||||
// CLogMgtLog4J.enable(false);
|
// CLogMgtLog4J.enable(false);
|
||||||
try
|
try
|
||||||
|
@ -1643,6 +1625,7 @@ public class CConnection implements Serializable
|
||||||
} // getTransactionIsolationInfo
|
} // getTransactionIsolationInfo
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
* Testing
|
* Testing
|
||||||
* @param args ignored
|
* @param args ignored
|
||||||
|
@ -1664,7 +1647,7 @@ public class CConnection implements Serializable
|
||||||
Adempiere.startup(true);
|
Adempiere.startup(true);
|
||||||
//
|
//
|
||||||
System.out.println ("Connection = ");
|
System.out.println ("Connection = ");
|
||||||
// CConnection[name=localhost{dev-dev1-adempiere},AppsHost=localhost,AppsPort=1099,type=Oracle,DBhost=dev,DBport=1521,DBname=dev1,BQ=false,FW=false,FWhost=,FWport=1630,UID=adempiere,PWD=adempiere]
|
// CConnection[name=localhost{dev-dev1-compiere},AppsHost=localhost,AppsPort=1099,type=Oracle,DBhost=dev,DBport=1521,DBname=dev1,BQ=false,FW=false,FWhost=,FWport=1630,UID=compiere,PWD=compiere]
|
||||||
System.out.println (Ini.getProperty (Ini.P_CONNECTION));
|
System.out.println (Ini.getProperty (Ini.P_CONNECTION));
|
||||||
|
|
||||||
CConnection cc = CConnection.get ();
|
CConnection cc = CConnection.get ();
|
||||||
|
|
|
@ -220,7 +220,7 @@ public class CConnectionDialog extends CDialog implements ActionListener
|
||||||
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(0, 12, 5, 5), 0, 0));
|
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(0, 12, 5, 5), 0, 0));
|
||||||
centerPanel.add(dbUidField, new GridBagConstraints(1, 9, 1, 1, 0.0, 0.0
|
centerPanel.add(dbUidField, new GridBagConstraints(1, 9, 1, 1, 0.0, 0.0
|
||||||
,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 5, 0), 0, 0));
|
,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 5, 0), 0, 0));
|
||||||
centerPanel.add(dbPwdField, new GridBagConstraints(2, 9, 1, 1, 1.0, 0.0
|
centerPanel.add(dbPwdField, new GridBagConstraints(2, 9, 1, 1, 0.0, 0.0
|
||||||
,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0, 5, 5, 12), 0, 0));
|
,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0, 5, 5, 12), 0, 0));
|
||||||
centerPanel.add(cbFirewall, new GridBagConstraints(1, 10, 2, 1, 0.0, 0.0
|
centerPanel.add(cbFirewall, new GridBagConstraints(1, 10, 2, 1, 0.0, 0.0
|
||||||
,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 12), 0, 0));
|
,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 12), 0, 0));
|
||||||
|
|
|
@ -624,4 +624,10 @@ class DataSourceImpl implements DataSource {
|
||||||
return impl.toString();
|
return impl.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isWrapperFor(java.lang.Class<?> iface) throws java.sql.SQLException
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public <T> T unwrap(java.lang.Class<T> iface) throws java.sql.SQLException{return null;}
|
||||||
}
|
}
|
|
@ -1,16 +1,17 @@
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* The contents of this file are subject to the Compiere License Version 1.1
|
* Product: Adempiere ERP & CRM Smart Business Solution
|
||||||
* ("License"); You may not use this file except in compliance with the License
|
* Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved.
|
||||||
* You may obtain a copy of the License at http://www.compiere.org/license.html
|
* This program is free software; you can redistribute it and/or modify it
|
||||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
* under the terms version 2 of the GNU General Public License as published
|
||||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
|
* by the Free Software Foundation. This program is distributed in the hope
|
||||||
* the specific language governing rights and limitations under the License.
|
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||||
* The Original Code is Compiere ERP & CRM Smart Business Solution. The Initial
|
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
* Developer of the Original Code is Jorg Janke. Portions created by Jorg Janke
|
* See the GNU General Public License for more details.
|
||||||
* are Copyright (C) 1999-2005 Jorg Janke.
|
* You should have received a copy of the GNU General Public License along
|
||||||
* All parts are Copyright (C) 1999-2005 ComPiere, Inc. All Rights Reserved.
|
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
* Portions created by Victor Perez are Copyright (C) 1999-2005 e-Evolution,S.C
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||||
* Contributor(s): Victor Perez
|
* You may reach us at: ComPiere, Inc. - http://www.compiere.org/license.html
|
||||||
|
* 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA or info@compiere.org
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
package org.compiere.db;
|
package org.compiere.db;
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,426 @@
|
||||||
|
/******************************************************************************
|
||||||
|
* Product: Adempiere ERP & CRM Smart Business Solution
|
||||||
|
* Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved.
|
||||||
|
* This program is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms version 2 of the GNU General Public License as published
|
||||||
|
* by the Free Software Foundation. This program is distributed in the hope
|
||||||
|
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||||
|
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
* See the GNU General Public License for more details.
|
||||||
|
* You should have received a copy of the GNU General Public License along
|
||||||
|
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||||
|
* You may reach us at: ComPiere, Inc. - http://www.compiere.org/license.html
|
||||||
|
* 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA or info@compiere.org
|
||||||
|
*****************************************************************************/
|
||||||
|
package org.compiere.db;
|
||||||
|
|
||||||
|
import java.io.*;
|
||||||
|
import java.net.*;
|
||||||
|
import java.sql.*;
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.logging.*;
|
||||||
|
|
||||||
|
import org.apache.derby.drda.*;
|
||||||
|
import org.apache.derby.impl.drda.*;
|
||||||
|
import org.apache.derby.jdbc.*;
|
||||||
|
import org.compiere.util.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Derby DB Server
|
||||||
|
*
|
||||||
|
* @author Jorg Janke
|
||||||
|
* @version $Id: DerbyServer.java,v 1.5 2006/07/30 00:55:13 jjanke Exp $
|
||||||
|
*/
|
||||||
|
public class DerbyServer extends Thread
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Get/Create Derby Server
|
||||||
|
* @return server
|
||||||
|
*/
|
||||||
|
public static synchronized DerbyServer get()
|
||||||
|
{
|
||||||
|
if (s_server == null)
|
||||||
|
{
|
||||||
|
InetAddress address = null;
|
||||||
|
int port = PORT;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
address = InetAddress.getByAddress(new byte[] {0,0,0,0}); // all ports
|
||||||
|
s_server = new DerbyServer(address, port);
|
||||||
|
s_server.start();
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
String msg = null;
|
||||||
|
if (address == null)
|
||||||
|
msg = "";
|
||||||
|
else
|
||||||
|
msg = address.toString();
|
||||||
|
msg += ":" + port;
|
||||||
|
log.log(Level.SEVERE, msg, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return s_server;
|
||||||
|
} // get
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Start Server
|
||||||
|
* @return true if started
|
||||||
|
*/
|
||||||
|
public static boolean startServer()
|
||||||
|
{
|
||||||
|
if (get() == null)
|
||||||
|
return false;
|
||||||
|
return s_server.isServerStarted();
|
||||||
|
} // startServer
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Stop Server
|
||||||
|
* @return true if stopped / not running
|
||||||
|
*/
|
||||||
|
public static boolean stopServer()
|
||||||
|
{
|
||||||
|
if (s_server == null)
|
||||||
|
return true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
s_server.shutdown();
|
||||||
|
s_server = null;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
log.log(Level.SEVERE, e.getMessage(), e);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
} // stopServer
|
||||||
|
|
||||||
|
/** Singleton */
|
||||||
|
private static DerbyServer s_server = null;
|
||||||
|
/** Default Port 1527 */
|
||||||
|
public static final int PORT = NetworkServerControl.DEFAULT_PORTNUMBER;
|
||||||
|
|
||||||
|
|
||||||
|
/** Logger */
|
||||||
|
private static CLogger log = CLogger.getCLogger (DerbyServer.class);
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* Derby Server
|
||||||
|
* @param address server address
|
||||||
|
* @param port port
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
private DerbyServer (InetAddress address, int port) throws Exception
|
||||||
|
{
|
||||||
|
super("CompiereDerby");
|
||||||
|
if (s_impl != null)
|
||||||
|
throw new IllegalStateException("Derby Server already started");
|
||||||
|
//
|
||||||
|
String compiereHome = Ini.getAdempiereHome();
|
||||||
|
s_derbyHome = compiereHome + File.separator + "derby";
|
||||||
|
File dir = new File(s_derbyHome);
|
||||||
|
if (!dir.exists())
|
||||||
|
dir.mkdir();
|
||||||
|
//
|
||||||
|
System.setProperty("derby.system.home", s_derbyHome);
|
||||||
|
System.setProperty("derby.drda.traceDirectory", s_derbyHome);
|
||||||
|
//
|
||||||
|
String logIt = "false";
|
||||||
|
if (CLogMgt.isLevelFiner())
|
||||||
|
logIt = "true";
|
||||||
|
System.setProperty("derby.drda.logConnections", logIt);
|
||||||
|
System.setProperty("derby.drda.traceAll", logIt);
|
||||||
|
//
|
||||||
|
System.setProperty("derby.connection.requireAuthentication", "true");
|
||||||
|
System.setProperty("derby.authentication.provider", "BUILTIN");
|
||||||
|
addUser("compiere", "compiere");
|
||||||
|
//
|
||||||
|
s_address = address;
|
||||||
|
s_port = port;
|
||||||
|
s_impl = new NetworkServerControlImpl (s_address, s_port);
|
||||||
|
} // DerbyServer
|
||||||
|
|
||||||
|
/** Singleton */
|
||||||
|
private static NetworkServerControlImpl s_impl = null;
|
||||||
|
/** Derby Home */
|
||||||
|
private static String s_derbyHome = "";
|
||||||
|
/** Address */
|
||||||
|
private static InetAddress s_address = null;
|
||||||
|
/** Port */
|
||||||
|
private static int s_port = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Run
|
||||||
|
*/
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
log.info("starting ...");
|
||||||
|
PrintWriter consoleWriter = new PrintWriter(System.out, true); // flush
|
||||||
|
try
|
||||||
|
{
|
||||||
|
s_impl.blockingStart(consoleWriter);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
log.log(Level.SEVERE, e.getMessage(), e);
|
||||||
|
s_impl = null;
|
||||||
|
}
|
||||||
|
log.info("done");
|
||||||
|
} // run
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Interrupt - shutdown
|
||||||
|
*/
|
||||||
|
public void interrupt ()
|
||||||
|
{
|
||||||
|
super.interrupt ();
|
||||||
|
shutdown();
|
||||||
|
} // interrupt
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Is Server Started
|
||||||
|
* @return server started
|
||||||
|
*/
|
||||||
|
public boolean isServerStarted()
|
||||||
|
{
|
||||||
|
if (s_impl == null)
|
||||||
|
return false;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
s_impl.ping();
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
} // isServerStarted
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shutdown
|
||||||
|
* @return true if shut down
|
||||||
|
*/
|
||||||
|
public boolean shutdown()
|
||||||
|
{
|
||||||
|
if (s_impl != null)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
log.info("shutting down ...");
|
||||||
|
s_impl.shutdown();
|
||||||
|
log.info("shutdown");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
} // shutdown
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* String Representation
|
||||||
|
* @return info
|
||||||
|
*/
|
||||||
|
public String toString ()
|
||||||
|
{
|
||||||
|
StringBuffer sb = new StringBuffer ("DerbyServer[");
|
||||||
|
sb.append (s_derbyHome)
|
||||||
|
.append(";").append(s_address)
|
||||||
|
.append(":").append(s_port)
|
||||||
|
.append(";Alive=").append(isAlive())
|
||||||
|
.append(";Started=").append(isServerStarted());
|
||||||
|
sb.append ("]");
|
||||||
|
return sb.toString ();
|
||||||
|
} // toString
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get Derby Home
|
||||||
|
* @return home
|
||||||
|
*/
|
||||||
|
public String getDerbyHome()
|
||||||
|
{
|
||||||
|
return s_derbyHome;
|
||||||
|
} // getDerbyHome
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get Runtime Info
|
||||||
|
* @return info
|
||||||
|
*/
|
||||||
|
public String getRuntimeInfo()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (s_impl != null)
|
||||||
|
return s_impl.runtimeInfo();
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
return e.getMessage();
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
} // getRuntimeInfo
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get System Info
|
||||||
|
* @return info
|
||||||
|
*/
|
||||||
|
public String getSysInfo()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (s_impl != null)
|
||||||
|
return s_impl.sysinfo();
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
return e.getMessage();
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
} // getSysInfo
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get current Network server properties.
|
||||||
|
* @return Properties object containing Network server properties
|
||||||
|
* @exception Exception throws an exception if an error occurs
|
||||||
|
*/
|
||||||
|
public Properties getCurrentProperties() throws Exception
|
||||||
|
{
|
||||||
|
return s_impl.getCurrentProperties();
|
||||||
|
} // getCurrentProperties
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add User
|
||||||
|
* @param dbUid user id
|
||||||
|
* @param dbPwd user password
|
||||||
|
*/
|
||||||
|
public void addUser (String dbUid, String dbPwd)
|
||||||
|
{
|
||||||
|
System.setProperty("derby.user." + dbUid, dbPwd);
|
||||||
|
Properties dp = new Properties();
|
||||||
|
|
||||||
|
} // addUser
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create Database
|
||||||
|
* @param dbName database name
|
||||||
|
* @param dbUid user id
|
||||||
|
* @param dbPwd user password
|
||||||
|
* @return true if exists or created
|
||||||
|
*/
|
||||||
|
public boolean createDatabase (String dbName,
|
||||||
|
String dbUid, String dbPwd)
|
||||||
|
{
|
||||||
|
addUser (dbUid, dbPwd);
|
||||||
|
// Embedded Driver
|
||||||
|
try
|
||||||
|
{
|
||||||
|
EmbeddedDriver driver = new EmbeddedDriver();
|
||||||
|
DriverManager.registerDriver (driver);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
log.log(Level.SEVERE, "DriverIssue", e);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// Connection
|
||||||
|
String dbUrl = "jdbc:derby:" + dbName;
|
||||||
|
Connection conn = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
String urlAttributes = ";create=true"
|
||||||
|
// + "dataEncryption=true;bootPassword=cLo4u922sc23aPe"
|
||||||
|
// + ";territory=en_US"
|
||||||
|
+ ";user=" + dbUid
|
||||||
|
+ ";password=" + dbPwd;
|
||||||
|
conn = DriverManager.getConnection(dbUrl + urlAttributes);
|
||||||
|
log.info("Created DB: " + dbName);
|
||||||
|
// new JDBCInfo(conn);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
log.severe(e.getMessage());
|
||||||
|
}
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (conn != null)
|
||||||
|
conn.close();
|
||||||
|
conn = null;
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
// Connection test
|
||||||
|
try
|
||||||
|
{
|
||||||
|
conn = DriverManager.getConnection(dbUrl, dbUid, dbPwd);
|
||||||
|
log.info("Connected to DB: " + dbName);
|
||||||
|
// new JDBCInfo(conn);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
log.severe(e.getMessage());
|
||||||
|
conn = null;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// Connection test
|
||||||
|
Statement stmt = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
stmt = conn.createStatement();
|
||||||
|
stmt.executeUpdate("CREATE TABLE XX (XX VARCHAR(5))");
|
||||||
|
stmt.executeUpdate("INSERT INTO XX (XX) VALUES ('A')");
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
log.info(e.getMessage());
|
||||||
|
}
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (stmt != null)
|
||||||
|
stmt.close();
|
||||||
|
if (conn != null)
|
||||||
|
conn.close();
|
||||||
|
conn = null;
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
} // createDatabase
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* Start Derby Server
|
||||||
|
* @param args
|
||||||
|
*/
|
||||||
|
public static void main (String[] args)
|
||||||
|
{
|
||||||
|
CLogMgt.setLevel(Level.FINE);
|
||||||
|
DerbyServer server = DerbyServer.get();
|
||||||
|
startServer();
|
||||||
|
server.createDatabase("compiere", "compiere", "compiere");
|
||||||
|
// log.info(server.getRuntimeInfo());
|
||||||
|
// log.info(server.getSysInfo());
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// log.info(server.getCurrentProperties().toString());
|
||||||
|
//
|
||||||
|
log.info("Sleeping " + get());
|
||||||
|
Thread.sleep(5000);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
// stopServer();
|
||||||
|
} // main
|
||||||
|
|
||||||
|
} // DerbyServer
|
|
@ -1,18 +1,17 @@
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* Product: Adempiere ERP & CRM Smart Business Solution *
|
* Product: Adempiere ERP & CRM Smart Business Solution
|
||||||
* Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. *
|
* Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved.
|
||||||
* This program is free software; you can redistribute it and/or modify it *
|
* This program is free software; you can redistribute it and/or modify it
|
||||||
* under the terms version 2 of the GNU General Public License as published *
|
* under the terms version 2 of the GNU General Public License as published
|
||||||
* by the Free Software Foundation. This program is distributed in the hope *
|
* by the Free Software Foundation. This program is distributed in the hope
|
||||||
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
|
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
|
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
* See the GNU General Public License for more details. *
|
* See the GNU General Public License for more details.
|
||||||
* You should have received a copy of the GNU General Public License along *
|
* You should have received a copy of the GNU General Public License along
|
||||||
* with this program; if not, write to the Free Software Foundation, Inc., *
|
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||||
* For the text or an alternative of this public license, you may reach us *
|
* You may reach us at: ComPiere, Inc. - http://www.compiere.org/license.html
|
||||||
* ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA *
|
* 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA or info@compiere.org
|
||||||
* or via info@compiere.org or http://www.compiere.org/license.html *
|
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
package org.compiere.db;
|
package org.compiere.db;
|
||||||
|
|
||||||
|
@ -36,8 +35,8 @@ public class LDAP
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Validate User
|
* Validate User
|
||||||
* @param ldapURL provider url - e.g. ldap://dc.adempiere.org
|
* @param ldapURL provider url - e.g. ldap://dc.compiere.org
|
||||||
* @param domain domain name = e.g. adempiere.org
|
* @param domain domain name = e.g. compiere.org
|
||||||
* @param userName user name - e.g. jjanke
|
* @param userName user name - e.g. jjanke
|
||||||
* @param password password
|
* @param password password
|
||||||
* @return true if validated with ldap
|
* @return true if validated with ldap
|
||||||
|
@ -46,10 +45,10 @@ public class LDAP
|
||||||
{
|
{
|
||||||
Hashtable<String,String> env = new Hashtable<String,String>();
|
Hashtable<String,String> env = new Hashtable<String,String>();
|
||||||
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
|
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
|
||||||
// ldap://dc.adempiere.org
|
// ldap://dc.compiere.org
|
||||||
env.put(Context.PROVIDER_URL, ldapURL);
|
env.put(Context.PROVIDER_URL, ldapURL);
|
||||||
env.put(Context.SECURITY_AUTHENTICATION, "simple");
|
env.put(Context.SECURITY_AUTHENTICATION, "simple");
|
||||||
// jjanke@adempiere.org
|
// jjanke@compiere.org
|
||||||
StringBuffer principal = new StringBuffer (userName)
|
StringBuffer principal = new StringBuffer (userName)
|
||||||
.append("@").append(domain);
|
.append("@").append(domain);
|
||||||
env.put(Context.SECURITY_PRINCIPAL, principal.toString());
|
env.put(Context.SECURITY_PRINCIPAL, principal.toString());
|
||||||
|
@ -62,10 +61,11 @@ public class LDAP
|
||||||
// DirContext ctx = new InitialDirContext(env);
|
// DirContext ctx = new InitialDirContext(env);
|
||||||
|
|
||||||
// Test - Get the attributes
|
// Test - Get the attributes
|
||||||
Attributes answer = ctx.getAttributes("");
|
Attributes answer = ctx.getAttributes("");
|
||||||
|
|
||||||
// Print the answer
|
// Print the answer
|
||||||
// dump (answer);
|
if (false)
|
||||||
|
dump (answer);
|
||||||
}
|
}
|
||||||
catch (AuthenticationException e)
|
catch (AuthenticationException e)
|
||||||
{
|
{
|
||||||
|
@ -128,7 +128,7 @@ public class LDAP
|
||||||
// map.put("debugNative", "true");
|
// map.put("debugNative", "true");
|
||||||
Krb5LoginModule klogin = new Krb5LoginModule ();
|
Krb5LoginModule klogin = new Krb5LoginModule ();
|
||||||
System.out.println (klogin);
|
System.out.println (klogin);
|
||||||
map.put ("principal", "username@adempiere.org");
|
map.put ("principal", "username@compiere.org");
|
||||||
map.put ("credential", "pass");
|
map.put ("credential", "pass");
|
||||||
klogin.initialize (null, null, null, map);
|
klogin.initialize (null, null, null, map);
|
||||||
System.out.println (klogin.login ());
|
System.out.println (klogin.login ());
|
||||||
|
@ -188,7 +188,7 @@ public class LDAP
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
validate("ldap://dc.adempiere.org", "adempiere.org", "red1", "ikeepforgetting");
|
validate("ldap://dc.compiere.org", "compiere.org", "jjanke", "ikeepforgetting");
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,15 +1,17 @@
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* The contents of this file are subject to the Compiere License Version 1.1
|
* Product: Adempiere ERP & CRM Smart Business Solution
|
||||||
* ("License"); You may not use this file except in compliance with the License
|
* Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved.
|
||||||
* You may obtain a copy of the License at http://www.compiere.org/license.html
|
* This program is free software; you can redistribute it and/or modify it
|
||||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
* under the terms version 2 of the GNU General Public License as published
|
||||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
|
* by the Free Software Foundation. This program is distributed in the hope
|
||||||
* the specific language governing rights and limitations under the License.
|
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||||
* The Original Code is Compiere ERP & CRM Smart Business Solution. The Initial
|
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
* Developer of the Original Code is Jorg Janke. Portions created by Jorg Janke
|
* See the GNU General Public License for more details.
|
||||||
* are Copyright (C) 1999-2005 Jorg Janke.
|
* You should have received a copy of the GNU General Public License along
|
||||||
* All parts are Copyright (C) 1999-2005 ComPiere, Inc. All Rights Reserved.
|
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
* Contributor(s): ______________________________________.
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||||
|
* You may reach us at: ComPiere, Inc. - http://www.compiere.org/license.html
|
||||||
|
* 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA or info@compiere.org
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
package org.compiere.dbPort;
|
package org.compiere.dbPort;
|
||||||
|
|
||||||
|
|
|
@ -1,15 +1,17 @@
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* The contents of this file are subject to the Compiere License Version 1.1
|
* Product: Adempiere ERP & CRM Smart Business Solution
|
||||||
* ("License"); You may not use this file except in compliance with the License
|
* Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved.
|
||||||
* You may obtain a copy of the License at http://www.compiere.org/license.html
|
* This program is free software; you can redistribute it and/or modify it
|
||||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
* under the terms version 2 of the GNU General Public License as published
|
||||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
|
* by the Free Software Foundation. This program is distributed in the hope
|
||||||
* the specific language governing rights and limitations under the License.
|
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||||
* The Original Code is Compiere ERP & CRM Smart Business Solution. The Initial
|
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
* Developer of the Original Code is Jorg Janke. Portions created by Jorg Janke
|
* See the GNU General Public License for more details.
|
||||||
* are Copyright (C) 1999-2005 Jorg Janke.
|
* You should have received a copy of the GNU General Public License along
|
||||||
* All parts are Copyright (C) 1999-2005 ComPiere, Inc. All Rights Reserved.
|
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
* Contributor(s): ______________________________________.
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||||
|
* You may reach us at: ComPiere, Inc. - http://www.compiere.org/license.html
|
||||||
|
* 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA or info@compiere.org
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
package org.compiere.dbPort;
|
package org.compiere.dbPort;
|
||||||
|
|
||||||
|
|
|
@ -188,7 +188,7 @@ public class AccessSqlParserTest extends TestCase
|
||||||
*/
|
*/
|
||||||
public void testProductInstanceAttributeQuery()
|
public void testProductInstanceAttributeQuery()
|
||||||
{
|
{
|
||||||
String sql = "SELECT p.M_Product_ID, p.Discontinued, p.Value, p.Name, BOM_Qty_Available(p.M_Product_ID,?) AS QtyAvailable, bomQtyList(p.M_Product_ID, pr.M_PriceList_Version_ID) AS PriceList, bomQtyStd(p.M_Product_ID, pr.M_PriceList_Version_ID) AS PriceStd, BOM_Qty_OnHand(p.M_Product_ID,?) AS QtyOnHand, BOM_Qty_Reserved(p.M_Product_ID,?) AS QtyReserved, BOM_Qty_Ordered(p.M_Product_ID,?) AS QtyOrdered, bomQtyStd(p.M_Product_ID, pr.M_PriceList_Version_ID)-bomQtyLimit(p.M_Product_ID, pr.M_PriceList_Version_ID) AS Margin, bomQtyLimit(p.M_Product_ID, pr.M_PriceList_Version_ID) AS PriceLimit, pa.IsInstanceAttribute FROM M_Product p INNER JOIN M_ProductPrice pr ON (p.M_Product_ID=pr.M_Product_ID) LEFT OUTER JOIN M_AttributeSet pa ON (p.M_AttributeSet_ID=pa.M_AttributeSet_ID) WHERE p.IsSummary='N' AND p.IsActive='Y' AND pr.IsActive='Y' AND pr.M_PriceList_Version_ID=? AND EXISTS (SELECT * FROM M_Storage s INNER JOIN M_AttributeSetInstance asi ON (s.M_AttributeSetInstance_ID=asi.M_AttributeSetInstance_ID) WHERE s.M_Product_ID=p.M_Product_ID AND asi.SerNo LIKE '33' AND asi.Lot LIKE '33' AND asi.M_Lot_ID=101 AND TRUNC(asi.GuaranteeDate,'DD')<TO_DATE('2003-10-16','YYYY-MM-DD') AND asi.M_AttributeSetInstance_ID IN (SELECT M_AttributeSetInstance_ID FROM M_AttributeInstance WHERE (M_Attribute_ID=103 AND Value LIKE '33') AND (M_Attribute_ID=102 AND M_AttributeValue_ID=106))) AND p.M_AttributeSetInstance_ID IN (SELECT M_AttributeSetInstance_ID FROM M_AttributeInstance WHERE (M_Attribute_ID=101 AND M_AttributeValue_ID=105) AND (M_Attribute_ID=100 AND M_AttributeValue_ID=102)) AND p.AD_Client_ID IN(0,11) AND p.AD_Org_ID IN(0,11,12) ORDER BY QtyAvailable DESC, Margin DESC";
|
String sql = "SELECT p.M_Product_ID, p.Discontinued, p.Value, p.Name, BOM_Qty_Available(p.M_Product_ID,?) AS QtyAvailable, bomQtyList(p.M_Product_ID, pr.M_PriceList_Version_ID) AS PriceList, bomQtyStd(p.M_Product_ID, pr.M_PriceList_Version_ID) AS PriceStd, BOM_Qty_OnHand(p.M_Product_ID,?) AS QtyOnHand, BOM_Qty_Reserved(p.M_Product_ID,?) AS QtyReserved, BOM_Qty_Ordered(p.M_Product_ID,?) AS QtyOrdered, bomQtyStd(p.M_Product_ID, pr.M_PriceList_Version_ID)-bomQtyLimit(p.M_Product_ID, pr.M_PriceList_Version_ID) AS Margin, bomQtyLimit(p.M_Product_ID, pr.M_PriceList_Version_ID) AS PriceLimit, pa.IsInstanceAttribute FROM M_Product p INNER JOIN M_ProductPrice pr ON (p.M_Product_ID=pr.M_Product_ID) LEFT OUTER JOIN M_AttributeSet pa ON (p.M_AttributeSet_ID=pa.M_AttributeSet_ID) WHERE p.IsSummary='N' AND p.IsActive='Y' AND pr.IsActive='Y' AND pr.M_PriceList_Version_ID=? AND EXISTS (SELECT * FROM M_Storage s INNER JOIN M_AttributeSetInstance asi ON (s.M_AttributeSetInstance_ID=asi.M_AttributeSetInstance_ID) WHERE s.M_Product_ID=p.M_Product_ID AND asi.SerNo LIKE '33' AND asi.Lot LIKE '33' AND asi.M_Lot_ID=101 AND TRUNC(asi.GuaranteeDate)<TO_DATE('2003-10-16','YYYY-MM-DD') AND asi.M_AttributeSetInstance_ID IN (SELECT M_AttributeSetInstance_ID FROM M_AttributeInstance WHERE (M_Attribute_ID=103 AND Value LIKE '33') AND (M_Attribute_ID=102 AND M_AttributeValue_ID=106))) AND p.M_AttributeSetInstance_ID IN (SELECT M_AttributeSetInstance_ID FROM M_AttributeInstance WHERE (M_Attribute_ID=101 AND M_AttributeValue_ID=105) AND (M_Attribute_ID=100 AND M_AttributeValue_ID=102)) AND p.AD_Client_ID IN(0,11) AND p.AD_Org_ID IN(0,11,12) ORDER BY QtyAvailable DESC, Margin DESC";
|
||||||
AccessSqlParser fixture = new AccessSqlParser(sql);
|
AccessSqlParser fixture = new AccessSqlParser(sql);
|
||||||
assertEquals("AccessSqlParser[M_AttributeInstance|M_Storage=s,M_AttributeSetInstance=asi|M_AttributeInstance|M_Product=p,M_ProductPrice=pr,M_AttributeSet=pa|3]", fixture.toString());
|
assertEquals("AccessSqlParser[M_AttributeInstance|M_Storage=s,M_AttributeSetInstance=asi|M_AttributeInstance|M_Product=p,M_ProductPrice=pr,M_AttributeSet=pa|3]", fixture.toString());
|
||||||
}
|
}
|
||||||
|
|
|
@ -234,7 +234,7 @@ public class MClientShare extends X_AD_ClientShare
|
||||||
StringBuffer info = new StringBuffer();
|
StringBuffer info = new StringBuffer();
|
||||||
String sql = "SELECT AD_Table_ID, TableName "
|
String sql = "SELECT AD_Table_ID, TableName "
|
||||||
+ "FROM AD_Table t "
|
+ "FROM AD_Table t "
|
||||||
+ "WHERE AccessLevel='3' AND IsView='N'" //jz put quote for typing
|
+ "WHERE AccessLevel=3 AND IsView='N'"
|
||||||
+ " AND EXISTS (SELECT * FROM AD_Column c "
|
+ " AND EXISTS (SELECT * FROM AD_Column c "
|
||||||
+ "WHERE t.AD_Table_ID=c.AD_Table_ID"
|
+ "WHERE t.AD_Table_ID=c.AD_Table_ID"
|
||||||
+ " AND c.IsParent='Y'"
|
+ " AND c.IsParent='Y'"
|
||||||
|
|
|
@ -243,7 +243,7 @@ public class MCostElement extends X_M_CostElement
|
||||||
if (COSTELEMENTTYPE_Material.equals(getCostElementType())
|
if (COSTELEMENTTYPE_Material.equals(getCostElementType())
|
||||||
&& (newRecord || is_ValueChanged("CostingMethod")))
|
&& (newRecord || is_ValueChanged("CostingMethod")))
|
||||||
{
|
{
|
||||||
String sql = "SELECT MAX(COALESCE(M_CostElement_ID,0)) FROM M_CostElement "
|
String sql = "SELECT COALESCE(MAX(M_CostElement_ID),0) FROM M_CostElement "
|
||||||
+ "WHERE AD_Client_ID=? AND CostingMethod=?";
|
+ "WHERE AD_Client_ID=? AND CostingMethod=?";
|
||||||
int id = DB.getSQLValue(get_TrxName(), sql, getAD_Client_ID(), getCostingMethod());
|
int id = DB.getSQLValue(get_TrxName(), sql, getAD_Client_ID(), getCostingMethod());
|
||||||
if (id > 0 && id != get_ID())
|
if (id > 0 && id != get_ID())
|
||||||
|
|
|
@ -667,13 +667,7 @@ public class MLookupFactory
|
||||||
}
|
}
|
||||||
|
|
||||||
// Order by Display
|
// Order by Display
|
||||||
if (DB.isDerby()) //jz derby restriction
|
realSQL.append(" ORDER BY 3");
|
||||||
{
|
|
||||||
if (size > 3)
|
|
||||||
realSQL.append(" ORDER BY " + ((LookupDisplayColumn)list.get(2)).ColumnName);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
realSQL.append(" ORDER BY 3");
|
|
||||||
MQuery zoomQuery = null; // corrected in VLookup
|
MQuery zoomQuery = null; // corrected in VLookup
|
||||||
|
|
||||||
if (CLogMgt.isLevelFinest())
|
if (CLogMgt.isLevelFinest())
|
||||||
|
|
|
@ -203,17 +203,10 @@ public class MOrg extends X_AD_Org
|
||||||
* @return C_BPartner_ID
|
* @return C_BPartner_ID
|
||||||
*/
|
*/
|
||||||
public int getLinkedC_BPartner_ID()
|
public int getLinkedC_BPartner_ID()
|
||||||
{
|
|
||||||
return getLinkedC_BPartner_ID(null);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public int getLinkedC_BPartner_ID(String trxName)
|
|
||||||
{
|
{
|
||||||
if (m_linkedBPartner == null)
|
if (m_linkedBPartner == null)
|
||||||
{
|
{
|
||||||
//jz int C_BPartner_ID = DB.getSQLValue(null,
|
int C_BPartner_ID = DB.getSQLValue(null,
|
||||||
int C_BPartner_ID = DB.getSQLValue(trxName,
|
|
||||||
"SELECT C_BPartner_ID FROM C_BPartner WHERE AD_OrgBP_ID=?",
|
"SELECT C_BPartner_ID FROM C_BPartner WHERE AD_OrgBP_ID=?",
|
||||||
getAD_Org_ID());
|
getAD_Org_ID());
|
||||||
if (C_BPartner_ID < 0) // not found = -1
|
if (C_BPartner_ID < 0) // not found = -1
|
||||||
|
|
|
@ -1,18 +1,17 @@
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* Product: Compiere ERP & CRM Smart Business Solution *
|
* Product: Adempiere ERP & CRM Smart Business Solution
|
||||||
* Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. *
|
* Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved.
|
||||||
* This program is free software; you can redistribute it and/or modify it *
|
* This program is free software; you can redistribute it and/or modify it
|
||||||
* under the terms version 2 of the GNU General Public License as published *
|
* under the terms version 2 of the GNU General Public License as published
|
||||||
* by the Free Software Foundation. This program is distributed in the hope *
|
* by the Free Software Foundation. This program is distributed in the hope
|
||||||
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
|
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
|
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
* See the GNU General Public License for more details. *
|
* See the GNU General Public License for more details.
|
||||||
* You should have received a copy of the GNU General Public License along *
|
* You should have received a copy of the GNU General Public License along
|
||||||
* with this program; if not, write to the Free Software Foundation, Inc., *
|
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||||
* For the text or an alternative of this public license, you may reach us *
|
* You may reach us at: ComPiere, Inc. - http://www.compiere.org/license.html
|
||||||
* ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA *
|
* 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA or info@compiere.org
|
||||||
* or via info@compiere.org or http://www.compiere.org/license.html *
|
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
package org.compiere.model;
|
package org.compiere.model;
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
* ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA *
|
* ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA *
|
||||||
* or via info@compiere.org or http://www.compiere.org/license.html *
|
* or via info@compiere.org or http://www.compiere.org/license.html *
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
package org.compiere.util;
|
package org.compiere.util;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -46,12 +47,16 @@ public class AmtInWords_IN implements AmtInWords
|
||||||
"Sepuluh",
|
"Sepuluh",
|
||||||
"Sebelas",
|
"Sebelas",
|
||||||
};
|
};
|
||||||
|
|
||||||
private static final long POWER_THREE = 1000L;
|
private static final long POWER_THREE = 1000L;
|
||||||
private static final long POWER_SIX = 1000000L;
|
private static final long POWER_SIX = 1000000L;
|
||||||
private static final long POWER_NINE = 1000000000L;
|
private static final long POWER_NINE = 1000000000L;
|
||||||
private static final long POWER_TWELVE = 1000000000000L;
|
private static final long POWER_TWELVE = 1000000000000L;
|
||||||
private static final long POWER_FIFTEEN = 1000000000000000L;
|
private static final long POWER_FIFTEEN = 1000000000000000L;
|
||||||
|
|
||||||
|
/** Static Logger */
|
||||||
|
private static CLogger s_log = CLogger.getCLogger (AmtInWords_IN.class);
|
||||||
|
|
||||||
//-------------------------- STATIC METHODS --------------------------
|
//-------------------------- STATIC METHODS --------------------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -60,9 +65,10 @@ public class AmtInWords_IN implements AmtInWords
|
||||||
* @param number number to say
|
* @param number number to say
|
||||||
* @return said number
|
* @return said number
|
||||||
*/
|
*/
|
||||||
public static String sayNumber(long number) {
|
public static String sayNumber(double number) {
|
||||||
StringBuffer result = new StringBuffer();
|
StringBuffer result = new StringBuffer();
|
||||||
sayNumber(result, number);
|
sayNumber(result, number);
|
||||||
|
result.append(" Rupiah");
|
||||||
return result.toString();
|
return result.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -74,22 +80,27 @@ public class AmtInWords_IN implements AmtInWords
|
||||||
* @return said number
|
* @return said number
|
||||||
* @throws IllegalArgumentException if the number equals to {@link Long#MIN_VALUE}
|
* @throws IllegalArgumentException if the number equals to {@link Long#MIN_VALUE}
|
||||||
*/
|
*/
|
||||||
public static String sayNumber(StringBuffer appendTo, long number)
|
public static String sayNumber(StringBuffer appendTo, double number)
|
||||||
throws IllegalArgumentException {
|
throws IllegalArgumentException {
|
||||||
if (number == Long.MIN_VALUE) {
|
if (number == Double.MIN_VALUE) {
|
||||||
throw new IllegalArgumentException("Out of range");
|
throw new IllegalArgumentException("Out of range");
|
||||||
}
|
}
|
||||||
if (number < 0) {
|
if (number < 0) {
|
||||||
appendTo.append("Minus ");
|
appendTo.append("Minus ");
|
||||||
}
|
}
|
||||||
long abs = Math.abs(number);
|
double abs = Math.abs(number);
|
||||||
|
// s_log.warning("Debug=" + abs);
|
||||||
if (abs < POWER_THREE) {
|
if (abs < POWER_THREE) {
|
||||||
saySimpleNumber(appendTo, (int) abs);
|
saySimpleNumber(appendTo, (int) abs);
|
||||||
|
} else if (abs < 2000) {
|
||||||
|
int thousand = (int) (abs % POWER_THREE);
|
||||||
|
appendTo.append("Seribu ");
|
||||||
|
saySimpleNumber(appendTo, thousand);
|
||||||
} else if (abs < POWER_SIX) {
|
} else if (abs < POWER_SIX) {
|
||||||
int thousand = (int) (abs % POWER_SIX / POWER_THREE);
|
int thousand = (int) (abs % POWER_SIX / POWER_THREE);
|
||||||
saySimpleNumber(appendTo, thousand);
|
saySimpleNumber(appendTo, thousand);
|
||||||
appendTo.append(" Ribu");
|
appendTo.append(" Ribu");
|
||||||
long remainder = abs - thousand * POWER_THREE;
|
double remainder = abs - thousand * POWER_THREE;
|
||||||
if (remainder > 0) {
|
if (remainder > 0) {
|
||||||
appendTo.append(' ');
|
appendTo.append(' ');
|
||||||
sayNumber(appendTo, remainder);
|
sayNumber(appendTo, remainder);
|
||||||
|
@ -98,7 +109,7 @@ public class AmtInWords_IN implements AmtInWords
|
||||||
int million = (int) (abs % POWER_NINE / POWER_SIX);
|
int million = (int) (abs % POWER_NINE / POWER_SIX);
|
||||||
saySimpleNumber(appendTo, million);
|
saySimpleNumber(appendTo, million);
|
||||||
appendTo.append(" Juta");
|
appendTo.append(" Juta");
|
||||||
long remainder = abs - million * POWER_SIX;
|
double remainder = abs - million * POWER_SIX;
|
||||||
if (remainder > 0) {
|
if (remainder > 0) {
|
||||||
appendTo.append(' ');
|
appendTo.append(' ');
|
||||||
sayNumber(appendTo, remainder);
|
sayNumber(appendTo, remainder);
|
||||||
|
@ -107,7 +118,7 @@ public class AmtInWords_IN implements AmtInWords
|
||||||
int billion = (int) (abs % POWER_TWELVE / POWER_NINE);
|
int billion = (int) (abs % POWER_TWELVE / POWER_NINE);
|
||||||
saySimpleNumber(appendTo, billion);
|
saySimpleNumber(appendTo, billion);
|
||||||
appendTo.append(" Milyar");
|
appendTo.append(" Milyar");
|
||||||
long remainder = abs - billion * POWER_NINE;
|
double remainder = abs - billion * POWER_NINE;
|
||||||
if (remainder > 0) {
|
if (remainder > 0) {
|
||||||
appendTo.append(' ');
|
appendTo.append(' ');
|
||||||
sayNumber(appendTo, remainder);
|
sayNumber(appendTo, remainder);
|
||||||
|
@ -116,28 +127,13 @@ public class AmtInWords_IN implements AmtInWords
|
||||||
int trillion = (int) (abs % POWER_FIFTEEN / POWER_TWELVE);
|
int trillion = (int) (abs % POWER_FIFTEEN / POWER_TWELVE);
|
||||||
saySimpleNumber(appendTo, trillion);
|
saySimpleNumber(appendTo, trillion);
|
||||||
appendTo.append(" Trilyun");
|
appendTo.append(" Trilyun");
|
||||||
long remainder = abs - trillion * POWER_TWELVE;
|
double remainder = abs - trillion * POWER_TWELVE;
|
||||||
if (remainder > 0) {
|
if (remainder > 0) {
|
||||||
appendTo.append(' ');
|
appendTo.append(' ');
|
||||||
sayNumber(appendTo, remainder);
|
sayNumber(appendTo, remainder);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
int log = (int) Math.floor(Math.log(abs) / Math.log(10));
|
appendTo.append("Lebih Dari Seribu Triliun");
|
||||||
|
|
||||||
// we want to break the number to several billions.
|
|
||||||
int logWhole = log - log % 12;
|
|
||||||
|
|
||||||
long powerWhole = (long) Math.pow(10, logWhole);
|
|
||||||
|
|
||||||
long part = abs / powerWhole;
|
|
||||||
sayNumber(appendTo, part);
|
|
||||||
appendTo.append(" Trilyun");
|
|
||||||
|
|
||||||
long remainder = abs - part * powerWhole;
|
|
||||||
if (remainder > 0) {
|
|
||||||
appendTo.append(' ');
|
|
||||||
sayNumber(appendTo, remainder);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return appendTo.toString();
|
return appendTo.toString();
|
||||||
}
|
}
|
||||||
|
@ -196,18 +192,28 @@ public class AmtInWords_IN implements AmtInWords
|
||||||
* Get Amount in Words
|
* Get Amount in Words
|
||||||
* @param amount numeric amount (352.80)
|
* @param amount numeric amount (352.80)
|
||||||
* @return amount in words (three*five*two 80/100)
|
* @return amount in words (three*five*two 80/100)
|
||||||
* @throws Exception
|
|
||||||
*/
|
*/
|
||||||
public String getAmtInWords (String amount) throws Exception
|
public String getAmtInWords (String amount) throws Exception
|
||||||
{
|
{
|
||||||
if (amount == null)
|
if (amount == null)
|
||||||
return amount;
|
return amount;
|
||||||
//
|
//
|
||||||
|
StringBuffer result = new StringBuffer();
|
||||||
|
|
||||||
|
int pos = amount.lastIndexOf ('.');
|
||||||
|
String oldamt = amount;
|
||||||
amount = amount.replaceAll (",", "");
|
amount = amount.replaceAll (",", "");
|
||||||
float numFloat = Float.parseFloat(amount);
|
String cents = pos > 0 ? oldamt.substring (pos + 1):null;
|
||||||
long number = 0L;
|
double numDouble = Double.parseDouble(amount);
|
||||||
number = (long)numFloat;
|
sayNumber(result, numDouble);
|
||||||
return AmtInWords_IN.sayNumber(number);
|
if (cents != null)
|
||||||
|
{
|
||||||
|
result.append(" Koma ");
|
||||||
|
numDouble = Double.parseDouble(cents);
|
||||||
|
sayNumber(result, numDouble);
|
||||||
|
}
|
||||||
|
result.append(" Rupiah");
|
||||||
|
return result.toString();
|
||||||
} // getAmtInWords
|
} // getAmtInWords
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -233,16 +239,26 @@ public class AmtInWords_IN implements AmtInWords
|
||||||
public static void main (String[] args)
|
public static void main (String[] args)
|
||||||
{
|
{
|
||||||
AmtInWords_IN aiw = new AmtInWords_IN();
|
AmtInWords_IN aiw = new AmtInWords_IN();
|
||||||
// I doubt decimal support for rupiah is still needed ;)
|
aiw.print ("0.00");
|
||||||
aiw.print (".23");
|
aiw.print ("0.23");
|
||||||
aiw.print ("948,776,477,778,778,778");
|
aiw.print ("1.23876787");
|
||||||
aiw.print ("1.79");
|
aiw.print ("11.45");
|
||||||
// aiw.print ("12.345");
|
aiw.print ("121.45");
|
||||||
// aiw.print ("123.45");
|
aiw.print ("1231.56");
|
||||||
// aiw.print ("1234.56");
|
aiw.print ("10341.78");
|
||||||
// aiw.print ("12345.78");
|
aiw.print ("12341.78");
|
||||||
// aiw.print ("123457.89");
|
aiw.print ("123451.89");
|
||||||
aiw.print ("1,234,578.90");
|
aiw.print ("12234571.90");
|
||||||
|
aiw.print ("123234571.90");
|
||||||
|
aiw.print ("1987234571.90");
|
||||||
|
aiw.print ("11123234571.90");
|
||||||
|
aiw.print ("123123234571.90");
|
||||||
|
aiw.print ("2123123234571.90");
|
||||||
|
aiw.print ("23,123,123,234,571.90");
|
||||||
|
aiw.print ("100,000,000,000,000.90");
|
||||||
|
aiw.print ("111,111,111");
|
||||||
|
aiw.print ("222,222,222,222,222");
|
||||||
|
aiw.print ("222,222,222,222,222,222,222");
|
||||||
} // main
|
} // main
|
||||||
|
|
||||||
} // AmtInWords_IN
|
} // AmtInWords_IN
|
||||||
|
|
|
@ -170,6 +170,9 @@ public class CLogger extends Logger implements Serializable
|
||||||
public boolean saveWarning (String AD_Message, String message)
|
public boolean saveWarning (String AD_Message, String message)
|
||||||
{
|
{
|
||||||
s_lastWarning = new ValueNamePair (AD_Message, message);
|
s_lastWarning = new ValueNamePair (AD_Message, message);
|
||||||
|
// print it
|
||||||
|
if (true) // issueError
|
||||||
|
warning(AD_Message + " - " + message);
|
||||||
return true;
|
return true;
|
||||||
} // saveWarning
|
} // saveWarning
|
||||||
|
|
||||||
|
|
|
@ -1067,6 +1067,113 @@ public class CPreparedStatement extends CStatement implements PreparedStatement
|
||||||
}
|
}
|
||||||
} // remote_executeUpdate
|
} // remote_executeUpdate
|
||||||
|
|
||||||
|
public void setAsciiStream(int parameterIndex, java.io.InputStream x, long length)
|
||||||
|
throws SQLException
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//vpj-cd add support java 6
|
||||||
|
public void setBinaryStream(int parameterIndex, java.io.InputStream x,
|
||||||
|
long length) throws SQLException
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCharacterStream(int parameterIndex,
|
||||||
|
java.io.Reader reader,
|
||||||
|
long length) throws SQLException
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAsciiStream(int parameterIndex, java.io.InputStream x)
|
||||||
|
throws SQLException
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void setBinaryStream(int parameterIndex, java.io.InputStream x)
|
||||||
|
throws SQLException
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCharacterStream(int parameterIndex,
|
||||||
|
java.io.Reader reader) throws SQLException
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNCharacterStream(int parameterIndex, Reader value) throws SQLException
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNCharacterStream(int parameterIndex, Reader value, long length) throws SQLException
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setClob(int parameterIndex, Reader reader)
|
||||||
|
throws SQLException
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setClob(int parameterIndex, Reader reader, long length)
|
||||||
|
throws SQLException
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNClob(int parameterIndex, NClob value) throws SQLException
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void setNClob(int parameterIndex, Reader reader, long length)
|
||||||
|
throws SQLException
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNClob(int parameterIndex, Reader reader)
|
||||||
|
throws SQLException
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBlob(int parameterIndex, InputStream inputStream, long length)
|
||||||
|
throws SQLException
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void setBlob(int parameterIndex, InputStream inputStream)
|
||||||
|
throws SQLException
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public void setSQLXML(int parameterIndex, SQLXML xmlObject) throws SQLException
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNString(int parameterIndex, String value) throws SQLException
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRowId(int parameterIndex, RowId x) throws SQLException{}
|
||||||
|
|
||||||
|
|
||||||
} // CPreparedStatement
|
} // CPreparedStatement
|
||||||
|
|
||||||
|
|
|
@ -906,4 +906,14 @@ public class CStatement implements Statement
|
||||||
return rowSet;
|
return rowSet;
|
||||||
} // remote_getRowSet
|
} // remote_getRowSet
|
||||||
|
|
||||||
|
public boolean isPoolable() throws SQLException{ return false;}
|
||||||
|
|
||||||
|
public void setPoolable(boolean a) throws SQLException{};
|
||||||
|
|
||||||
|
public boolean isClosed() throws SQLException{ return false;}
|
||||||
|
|
||||||
|
public boolean isWrapperFor(java.lang.Class c) throws SQLException{ return false;}
|
||||||
|
|
||||||
|
public <T> T unwrap(java.lang.Class<T> iface) throws java.sql.SQLException{return null;}
|
||||||
|
|
||||||
} // CStatement
|
} // CStatement
|
||||||
|
|
|
@ -47,7 +47,7 @@ public final class DB
|
||||||
/** Connection Cache r/o */
|
/** Connection Cache r/o */
|
||||||
private static Connection[] s_connections = null;
|
private static Connection[] s_connections = null;
|
||||||
/** Connection Cache Size */
|
/** Connection Cache Size */
|
||||||
private static int s_conCacheSize = Ini.isClient() ? 1 : 3;
|
private static int s_conCacheSize = Ini.isClient() ? 3 : 3;
|
||||||
/** Connection counter */
|
/** Connection counter */
|
||||||
private static int s_conCount = 0;
|
private static int s_conCount = 0;
|
||||||
/** Connection r/w */
|
/** Connection r/w */
|
||||||
|
@ -510,7 +510,19 @@ public final class DB
|
||||||
*/
|
*/
|
||||||
public static AdempiereDatabase getDatabase(String URL)
|
public static AdempiereDatabase getDatabase(String URL)
|
||||||
{
|
{
|
||||||
return Database.getDatabaseFromURL(URL);
|
if (URL == null)
|
||||||
|
{
|
||||||
|
log.severe("No Database URL");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if (URL.indexOf("oracle") != -1)
|
||||||
|
return new DB_Oracle();
|
||||||
|
/*if (URL.indexOf("derby") != -1)
|
||||||
|
return new DB_Derby();*/
|
||||||
|
if (URL.indexOf("db2") != -1)
|
||||||
|
return new DB_DB2();
|
||||||
|
log.severe("No Database for " + URL);
|
||||||
|
return null;
|
||||||
} // getDatabase
|
} // getDatabase
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -61,20 +61,6 @@ public final class Env
|
||||||
System.exit (status);
|
System.exit (status);
|
||||||
} // close
|
} // close
|
||||||
|
|
||||||
/**
|
|
||||||
* Logout from the system
|
|
||||||
*/
|
|
||||||
public static void logout()
|
|
||||||
{
|
|
||||||
// End Session
|
|
||||||
MSession session = MSession.get(Env.getCtx(), false); // finish
|
|
||||||
if (session != null)
|
|
||||||
session.logout();
|
|
||||||
//
|
|
||||||
reset(true); // final cache reset
|
|
||||||
//
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reset Cache
|
* Reset Cache
|
||||||
* @param finalCall everything otherwise login data remains
|
* @param finalCall everything otherwise login data remains
|
||||||
|
@ -1279,34 +1265,12 @@ public final class Env
|
||||||
URL url = Adempiere.class.getResource("images/" + fileNameInImageDir);
|
URL url = Adempiere.class.getResource("images/" + fileNameInImageDir);
|
||||||
if (url == null)
|
if (url == null)
|
||||||
{
|
{
|
||||||
s_log.log(Level.WARNING, "Not found: " + fileNameInImageDir);
|
s_log.log(Level.SEVERE, "Not found: " + fileNameInImageDir);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return new ImageIcon(url);
|
return new ImageIcon(url);
|
||||||
} // getImageIcon
|
} // getImageIcon
|
||||||
|
|
||||||
/**
|
|
||||||
* Get ImageIcon. This method different from getImageIcon
|
|
||||||
* where the fileName parameter is without extension. The
|
|
||||||
* method will first try .gif and then .png if .gif does not
|
|
||||||
* exists.
|
|
||||||
*
|
|
||||||
* @param fileName file name in imgaes folder without the extension(e.g. Bean16)
|
|
||||||
* @return image
|
|
||||||
*/
|
|
||||||
public static ImageIcon getImageIcon2 (String fileName)
|
|
||||||
{
|
|
||||||
URL url = Adempiere.class.getResource("images/" + fileName+".gif");
|
|
||||||
if (url == null)
|
|
||||||
url = Adempiere.class.getResource("images/" + fileName+".png");
|
|
||||||
if (url == null)
|
|
||||||
{
|
|
||||||
s_log.log(Level.WARNING, "GIF/PNG Not found: " + fileName);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return new ImageIcon(url);
|
|
||||||
} // getImageIcon2
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
* Start Browser
|
* Start Browser
|
||||||
|
@ -1382,15 +1346,8 @@ public final class Env
|
||||||
window.setVisible(false);
|
window.setVisible(false);
|
||||||
s_log.info(window.toString());
|
s_log.info(window.toString());
|
||||||
// window.dispatchEvent(new WindowEvent(window, WindowEvent.WINDOW_ICONIFIED));
|
// window.dispatchEvent(new WindowEvent(window, WindowEvent.WINDOW_ICONIFIED));
|
||||||
if (s_hiddenWindows.size() > 10) {
|
if (s_hiddenWindows.size() > 10)
|
||||||
CFrame toClose = s_hiddenWindows.remove(0); // sort of lru
|
s_hiddenWindows.remove(0); // sort of lru
|
||||||
try {
|
|
||||||
s_closingWindows = true;
|
|
||||||
toClose.dispose();
|
|
||||||
} finally {
|
|
||||||
s_closingWindows = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1402,7 +1359,7 @@ public final class Env
|
||||||
* @param AD_Window_ID window
|
* @param AD_Window_ID window
|
||||||
* @return true if window re-displayed
|
* @return true if window re-displayed
|
||||||
*/
|
*/
|
||||||
static public CFrame showWindow (int AD_Window_ID)
|
static public boolean showWindow (int AD_Window_ID)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < s_hiddenWindows.size(); i++)
|
for (int i = 0; i < s_hiddenWindows.size(); i++)
|
||||||
{
|
{
|
||||||
|
@ -1413,10 +1370,10 @@ public final class Env
|
||||||
s_log.info(hidden.toString());
|
s_log.info(hidden.toString());
|
||||||
hidden.setVisible(true);
|
hidden.setVisible(true);
|
||||||
hidden.toFront();
|
hidden.toFront();
|
||||||
return hidden;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return false;
|
||||||
} // showWindow
|
} // showWindow
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1452,46 +1409,6 @@ public final class Env
|
||||||
s_log.info("End");
|
s_log.info("End");
|
||||||
} // sleep
|
} // sleep
|
||||||
|
|
||||||
/**
|
|
||||||
* Update all windows after look and feel changes.
|
|
||||||
* @since 2006-11-27
|
|
||||||
*/
|
|
||||||
public static Set<Window>updateUI()
|
|
||||||
{
|
|
||||||
Set<Window> updated = new HashSet<Window>();
|
|
||||||
for (Container c : s_windows)
|
|
||||||
{
|
|
||||||
Window w = getFrame(c);
|
|
||||||
if (w == null) continue;
|
|
||||||
if (updated.contains(w)) continue;
|
|
||||||
SwingUtilities.updateComponentTreeUI(w);
|
|
||||||
w.validate();
|
|
||||||
RepaintManager mgr = RepaintManager.currentManager(w);
|
|
||||||
Component childs[] = w.getComponents();
|
|
||||||
for (Component child : childs) {
|
|
||||||
if (child instanceof JComponent)
|
|
||||||
mgr.markCompletelyDirty((JComponent)child);
|
|
||||||
}
|
|
||||||
w.repaint();
|
|
||||||
updated.add(w);
|
|
||||||
}
|
|
||||||
for (Window w : s_hiddenWindows)
|
|
||||||
{
|
|
||||||
if (updated.contains(w)) continue;
|
|
||||||
SwingUtilities.updateComponentTreeUI(w);
|
|
||||||
w.validate();
|
|
||||||
RepaintManager mgr = RepaintManager.currentManager(w);
|
|
||||||
Component childs[] = w.getComponents();
|
|
||||||
for (Component child : childs) {
|
|
||||||
if (child instanceof JComponent)
|
|
||||||
mgr.markCompletelyDirty((JComponent)child);
|
|
||||||
}
|
|
||||||
w.repaint();
|
|
||||||
updated.add(w);
|
|
||||||
}
|
|
||||||
return updated;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
* Static Variables
|
* Static Variables
|
||||||
|
|
|
@ -143,7 +143,9 @@ public class GenerateModel
|
||||||
// Class
|
// Class
|
||||||
+ "/** Generated Model for ").append(tableName).append("\n"
|
+ "/** Generated Model for ").append(tableName).append("\n"
|
||||||
+ " * @author Jorg Janke (generated) \n"
|
+ " * @author Jorg Janke (generated) \n"
|
||||||
+ " * @version ").append(Adempiere.MAIN_VERSION).append(" - ").append(s_run).append(" */\n"
|
+ " * @version ").append(Adempiere.MAIN_VERSION).append(" - $Id$")
|
||||||
|
// .append(s_run) // Timestamp
|
||||||
|
.append(" */\n"
|
||||||
+ "public class ").append(className).append(" extends PO"
|
+ "public class ").append(className).append(" extends PO"
|
||||||
+ "{"
|
+ "{"
|
||||||
// Standard Constructor
|
// Standard Constructor
|
||||||
|
@ -387,6 +389,7 @@ public class GenerateModel
|
||||||
{
|
{
|
||||||
sb.append ("throw new IllegalArgumentException (\"").append(columnName).append(" is virtual column\");");
|
sb.append ("throw new IllegalArgumentException (\"").append(columnName).append(" is virtual column\");");
|
||||||
}
|
}
|
||||||
|
// Integer
|
||||||
else if (clazz.equals(Integer.class))
|
else if (clazz.equals(Integer.class))
|
||||||
{
|
{
|
||||||
if (columnName.endsWith("_ID"))
|
if (columnName.endsWith("_ID"))
|
||||||
|
@ -409,6 +412,7 @@ public class GenerateModel
|
||||||
}
|
}
|
||||||
sb.append(setValue).append(" (\"").append(columnName).append("\", new Integer(").append(columnName).append("));");
|
sb.append(setValue).append(" (\"").append(columnName).append("\", new Integer(").append(columnName).append("));");
|
||||||
}
|
}
|
||||||
|
// Boolean
|
||||||
else if (clazz.equals(Boolean.class))
|
else if (clazz.equals(Boolean.class))
|
||||||
sb.append(setValue).append(" (\"").append(columnName).append("\", new Boolean(").append(columnName).append("));");
|
sb.append(setValue).append(" (\"").append(columnName).append("\", new Boolean(").append(columnName).append("));");
|
||||||
else
|
else
|
||||||
|
@ -562,14 +566,18 @@ public class GenerateModel
|
||||||
else
|
else
|
||||||
statement.append(" || ").append(columnName)
|
statement.append(" || ").append(columnName)
|
||||||
.append(".equals(\"").append(value).append("\")");
|
.append(".equals(\"").append(value).append("\")");
|
||||||
|
//
|
||||||
if (!found)
|
if (!found)
|
||||||
{
|
{
|
||||||
found = true;
|
found = true;
|
||||||
sb.append("if (")
|
if (!nullable)
|
||||||
.append (columnName).append (" == null)"
|
sb.append("if (")
|
||||||
|
.append (columnName).append (" == null)"
|
||||||
+ " throw new IllegalArgumentException (\"")
|
+ " throw new IllegalArgumentException (\"")
|
||||||
.append(columnName).append(" is mandatory\");");
|
.append(columnName).append(" is mandatory\");");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Name (SmallTalkNotation)
|
// Name (SmallTalkNotation)
|
||||||
String name = rs.getString(2);
|
String name = rs.getString(2);
|
||||||
char[] nameArray = name.toCharArray();
|
char[] nameArray = name.toCharArray();
|
||||||
|
|
|
@ -335,6 +335,7 @@ public class Login
|
||||||
{
|
{
|
||||||
pstmt = null;
|
pstmt = null;
|
||||||
}
|
}
|
||||||
|
long ms = System.currentTimeMillis () - start;
|
||||||
return retValue;
|
return retValue;
|
||||||
} // getRoles
|
} // getRoles
|
||||||
|
|
||||||
|
|
|
@ -306,7 +306,7 @@ public final class Msg
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
int start = pos + SEPARATOR.length();
|
int start = pos + SEPARATOR.length();
|
||||||
int end = retStr.length();
|
// int end = retStr.length();
|
||||||
retStr = retStr.substring (start);
|
retStr = retStr.substring (start);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue