📄 mlocation.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.model;
import java.sql.*;
import java.util.*;
import java.util.logging.*;
import org.compiere.util.*;
/**
* Loaction (Address)
*
* @author Jorg Janke
* @version $Id: MLocation.java,v 1.37 2006/01/05 07:26:38 jjanke Exp $
*/
public class MLocation extends X_C_Location implements Comparator
{
/**
* Get Location from Cache
* @param ctx context
* @param C_Location_ID id
* @return MLocation
*/
public static MLocation get (Properties ctx, int C_Location_ID, String trxName)
{
// New
if (C_Location_ID == 0)
return new MLocation(ctx, C_Location_ID, trxName);
//
Integer key = new Integer (C_Location_ID);
MLocation retValue = (MLocation) s_cache.get (key);
if (retValue != null)
return retValue;
retValue = new MLocation (ctx, C_Location_ID, trxName);
if (retValue.get_ID () != 0) // found
{
s_cache.put (key, retValue);
return retValue;
}
return null; // not found
} // get
/**
* Load Location with ID if Business Partner Location
* @param C_BPartner_Location_ID Business Partner Location
* @return loaction or null
*/
public static MLocation getBPLocation (Properties ctx, int C_BPartner_Location_ID, String trxName)
{
if (C_BPartner_Location_ID == 0) // load default
return null;
MLocation loc = null;
String sql = "SELECT * FROM C_Location l "
+ "WHERE C_Location_ID=(SELECT C_Location_ID FROM C_BPartner_Location WHERE C_BPartner_Location_ID=?)";
try
{
PreparedStatement pstmt = DB.prepareStatement(sql, trxName);
pstmt.setInt(1, C_BPartner_Location_ID);
ResultSet rs = pstmt.executeQuery();
if (rs.next())
loc = new MLocation (ctx, rs, trxName);
rs.close();
pstmt.close();
}
catch (SQLException e)
{
s_log.log(Level.SEVERE, sql + " - " + C_BPartner_Location_ID, e);
loc = null;
}
return loc;
} // getBPLocation
/** Cache */
private static CCache<Integer,MLocation> s_cache = new CCache<Integer,MLocation>("C_Location", 100, 30);
/** Static Logger */
private static CLogger s_log = CLogger.getCLogger(MLocation.class);
/**************************************************************************
* Standard Constructor
* @param ctx context
* @param C_Location_ID id
*/
public MLocation (Properties ctx, int C_Location_ID, String trxName)
{
super (ctx, C_Location_ID, trxName);
if (C_Location_ID == 0)
{
MCountry defaultCountry = MCountry.getDefault(getCtx());
setCountry(defaultCountry);
MRegion defaultRegion = MRegion.getDefault(getCtx());
if (defaultRegion != null
&& defaultRegion.getC_Country_ID() == defaultCountry.getC_Country_ID())
setRegion(defaultRegion);
}
} // MLocation
/**
* Parent Constructor
* @param country mandatory country
* @param region optional region
*/
public MLocation (MCountry country, MRegion region)
{
super (country.getCtx(), 0, country.get_TrxName());
setCountry (country);
setRegion (region);
} // MLocation
/**
* Full Constructor
* @param ctx context
* @param C_Country_ID country
* @param C_Region_ID region
* @param city city
*/
public MLocation (Properties ctx, int C_Country_ID, int C_Region_ID, String city, String trxName)
{
super(ctx, 0, trxName);
setC_Country_ID(C_Country_ID);
setC_Region_ID(C_Region_ID);
setCity(city);
} // MLocation
/**
* Load Constructor
* @param ctx context
* @param rs result set
*/
public MLocation (Properties ctx, ResultSet rs, String trxName)
{
super(ctx, rs, trxName);
} // MLocation
private MCountry m_c = null;
private MRegion m_r = null;
/**
* Set Country
* @param country
*/
public void setCountry (MCountry country)
{
if (country != null)
m_c = country;
else
m_c = MCountry.getDefault(getCtx());
super.setC_Country_ID (m_c.getC_Country_ID());
} // setCountry
/**
* Set C_Country_ID
* @param C_Country_ID id
*/
public void setC_Country_ID (int C_Country_ID)
{
if (getC_Country_ID() != C_Country_ID)
setRegion(null);
setCountry (MCountry.get(getCtx(), C_Country_ID));
} // setCountry
/**
* Get Country
* @return country
*/
public MCountry getCountry()
{
if (m_c == null)
{
if (getC_Country_ID() != 0)
m_c = MCountry.get(getCtx(), getC_Country_ID());
else
m_c = MCountry.getDefault(getCtx());
}
return m_c;
} // getCountry
/**
* Get Country Name
* @return Country Name
*/
public String getCountryName()
{
return getCountry().getName();
} // getCountryName
/**
* Get Country Line
* @param local if true only foreign country is returned
* @return country or null
*/
public String getCountry (boolean local)
{
if (local
&& getC_Country_ID() == MCountry.getDefault(getCtx()).getC_Country_ID())
return null;
return getCountryName();
} // getCountry
/**
* Set Region
* @param region
*/
public void setRegion (MRegion region)
{
m_r = region;
if (region == null)
super.setC_Region_ID(0);
else
{
super.setC_Region_ID(m_r.getC_Region_ID());
if (m_r.getC_Country_ID() != getC_Country_ID())
{
log.info("Region(" + region + ") C_Country_ID=" + region.getC_Country_ID()
+ " - From C_Country_ID=" + getC_Country_ID());
setC_Country_ID(region.getC_Country_ID());
}
}
} // setRegion
/**
* Set C_Region_ID
* @param C_Region_ID region
*/
public void setC_Region_ID (int C_Region_ID)
{
if (C_Region_ID == 0)
setRegion(null);
// Country defined
else if (getC_Country_ID() != 0)
{
MCountry cc = getCountry();
if (cc.isValidRegion(C_Region_ID))
super.setC_Region_ID(C_Region_ID);
else
setRegion(null);
}
else
setRegion (MRegion.get(getCtx(), C_Region_ID));
} // setC_Region_ID
/**
* Get Region
* @return region
*/
public MRegion getRegion()
{
if (m_r == null && getC_Region_ID() != 0)
m_r = MRegion.get(getCtx(), getC_Region_ID());
return m_r;
} // getRegion
/**
* Get (local) Region Name
* @return region Name or ""
*/
public String getRegionName()
{
return getRegionName(false);
} // getRegionName
/**
* Get Region Name
* @param getFromRegion get from region (not locally)
* @return region Name or ""
*/
public String getRegionName (boolean getFromRegion)
{
if (getFromRegion && getCountry().isHasRegion()
&& getRegion() != null)
{
super.setRegionName(""); // avoid duplicates
return getRegion().getName();
}
//
String regionName = super.getRegionName();
if (regionName == null)
regionName = "";
return regionName;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -