IDEMPIERE-4467 Window Customisation has not implemented caching (#268)
* IDEMPIERE-4467 Add caching to UserDefTab and UserDefField * IDEMPIERE-4467 Change CCache to ImutablePOCache * IDEMPIERE-4467 Window Customisation - Change cache Get and Put Methods Change cache Get and Put methods to have consistency with ctx parameter.
This commit is contained in:
parent
02a450a660
commit
9cca6c08be
|
@ -22,7 +22,10 @@ import java.util.logging.Level;
|
||||||
|
|
||||||
import org.compiere.util.CLogger;
|
import org.compiere.util.CLogger;
|
||||||
import org.compiere.util.DB;
|
import org.compiere.util.DB;
|
||||||
|
import org.compiere.util.Env;
|
||||||
import org.compiere.util.Msg;
|
import org.compiere.util.Msg;
|
||||||
|
import org.idempiere.cache.ImmutablePOCache;
|
||||||
|
import org.idempiere.cache.ImmutablePOSupport;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -30,13 +33,16 @@ import org.compiere.util.Msg;
|
||||||
* @author Dirk Niemeyer, action42 GmbH
|
* @author Dirk Niemeyer, action42 GmbH
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
public class MUserDefField extends X_AD_UserDef_Field
|
public class MUserDefField extends X_AD_UserDef_Field implements ImmutablePOSupport
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
private static final long serialVersionUID = 2522038599257589829L;
|
private static final long serialVersionUID = 2522038599257589829L;
|
||||||
|
|
||||||
|
/** Cache of selected MUserDefField entries **/
|
||||||
|
private static ImmutablePOCache<String,MUserDefField> s_cache = new ImmutablePOCache<String,MUserDefField>(Table_Name, 10);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Standard constructor.
|
* Standard constructor.
|
||||||
* You must implement this constructor for Adempiere Persistency
|
* You must implement this constructor for Adempiere Persistency
|
||||||
|
@ -64,6 +70,37 @@ public class MUserDefField extends X_AD_UserDef_Field
|
||||||
super (ctx, rs, trxName);
|
super (ctx, rs, trxName);
|
||||||
} // MyModelExample
|
} // MyModelExample
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param copy
|
||||||
|
*/
|
||||||
|
public MUserDefField(MUserDefField copy)
|
||||||
|
{
|
||||||
|
this(Env.getCtx(), copy);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param ctx
|
||||||
|
* @param copy
|
||||||
|
*/
|
||||||
|
public MUserDefField(Properties ctx, MUserDefField copy)
|
||||||
|
{
|
||||||
|
this(ctx, copy, (String) null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param ctx
|
||||||
|
* @param copy
|
||||||
|
* @param trxName
|
||||||
|
*/
|
||||||
|
public MUserDefField(Properties ctx, MUserDefField copy, String trxName)
|
||||||
|
{
|
||||||
|
this(ctx, 0, trxName);
|
||||||
|
copyPO(copy);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get matching MUserDefField related to current field and user definition for window and tab
|
* Get matching MUserDefField related to current field and user definition for window and tab
|
||||||
* @param ctx
|
* @param ctx
|
||||||
|
@ -82,6 +119,13 @@ public class MUserDefField extends X_AD_UserDef_Field
|
||||||
if (userdefTab == null)
|
if (userdefTab == null)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
|
// Check Cache
|
||||||
|
String key = new StringBuilder().append(AD_Field_ID).append("_")
|
||||||
|
.append(userdefTab.getAD_UserDef_Tab_ID())
|
||||||
|
.toString();
|
||||||
|
if (s_cache.containsKey(key))
|
||||||
|
return s_cache.get(ctx, key, e -> new MUserDefField(ctx, e));
|
||||||
|
|
||||||
MUserDefField retValue = null;
|
MUserDefField retValue = null;
|
||||||
|
|
||||||
StringBuilder sql = new StringBuilder("SELECT * "
|
StringBuilder sql = new StringBuilder("SELECT * "
|
||||||
|
@ -103,6 +147,7 @@ public class MUserDefField extends X_AD_UserDef_Field
|
||||||
{
|
{
|
||||||
retValue = new MUserDefField(ctx,rs,null);
|
retValue = new MUserDefField(ctx,rs,null);
|
||||||
}
|
}
|
||||||
|
s_cache.put(key, retValue, e -> new MUserDefField(Env.getCtx(), e));
|
||||||
}
|
}
|
||||||
catch (SQLException ex)
|
catch (SQLException ex)
|
||||||
{
|
{
|
||||||
|
@ -141,5 +186,14 @@ public class MUserDefField extends X_AD_UserDef_Field
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PO markImmutable() {
|
||||||
|
if (is_Immutable())
|
||||||
|
return this;
|
||||||
|
|
||||||
|
makeImmutable();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
} // MUserDefField
|
} // MUserDefField
|
||||||
|
|
|
@ -14,12 +14,17 @@
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
package org.compiere.model;
|
package org.compiere.model;
|
||||||
|
|
||||||
import java.sql.*;
|
import java.sql.PreparedStatement;
|
||||||
import java.util.*;
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.util.Properties;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.compiere.util.CLogger;
|
import org.compiere.util.CLogger;
|
||||||
import org.compiere.util.DB;
|
import org.compiere.util.DB;
|
||||||
|
import org.compiere.util.Env;
|
||||||
|
import org.idempiere.cache.ImmutablePOCache;
|
||||||
|
import org.idempiere.cache.ImmutablePOSupport;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -28,13 +33,16 @@ import org.compiere.util.DB;
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class MUserDefTab extends X_AD_UserDef_Tab
|
public class MUserDefTab extends X_AD_UserDef_Tab implements ImmutablePOSupport
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
private static final long serialVersionUID = 20120403111900L;
|
private static final long serialVersionUID = 20120403111900L;
|
||||||
|
|
||||||
|
/** Cache of selected MUserDefTab entries **/
|
||||||
|
private static ImmutablePOCache<String,MUserDefTab> s_cache = new ImmutablePOCache<String,MUserDefTab>(Table_Name, 10);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Standard constructor.
|
* Standard constructor.
|
||||||
* You must implement this constructor for Adempiere Persistency
|
* You must implement this constructor for Adempiere Persistency
|
||||||
|
@ -62,6 +70,37 @@ public class MUserDefTab extends X_AD_UserDef_Tab
|
||||||
super (ctx, rs, trxName);
|
super (ctx, rs, trxName);
|
||||||
} // MUserDefTab
|
} // MUserDefTab
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param copy
|
||||||
|
*/
|
||||||
|
public MUserDefTab(MUserDefTab copy)
|
||||||
|
{
|
||||||
|
this(Env.getCtx(), copy);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param ctx
|
||||||
|
* @param copy
|
||||||
|
*/
|
||||||
|
public MUserDefTab(Properties ctx, MUserDefTab copy)
|
||||||
|
{
|
||||||
|
this(ctx, copy, (String) null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param ctx
|
||||||
|
* @param copy
|
||||||
|
* @param trxName
|
||||||
|
*/
|
||||||
|
public MUserDefTab(Properties ctx, MUserDefTab copy, String trxName)
|
||||||
|
{
|
||||||
|
this(ctx, 0, trxName);
|
||||||
|
copyPO(copy);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get matching MUserDefTab related to current tab and user definition for window
|
* Get matching MUserDefTab related to current tab and user definition for window
|
||||||
* @param ctx
|
* @param ctx
|
||||||
|
@ -73,6 +112,14 @@ public class MUserDefTab extends X_AD_UserDef_Tab
|
||||||
{
|
{
|
||||||
|
|
||||||
MUserDefTab retValue = null;
|
MUserDefTab retValue = null;
|
||||||
|
|
||||||
|
// Check Cache
|
||||||
|
String key = new StringBuilder().append(AD_Tab_ID).append("_")
|
||||||
|
.append(AD_UserDefWin_ID)
|
||||||
|
.toString();
|
||||||
|
if (s_cache.containsKey(key))
|
||||||
|
return s_cache.get(ctx, key, e -> new MUserDefTab(ctx, e));
|
||||||
|
|
||||||
|
|
||||||
StringBuilder sql = new StringBuilder("SELECT * "
|
StringBuilder sql = new StringBuilder("SELECT * "
|
||||||
+ " FROM AD_UserDef_Tab "
|
+ " FROM AD_UserDef_Tab "
|
||||||
|
@ -93,6 +140,7 @@ public class MUserDefTab extends X_AD_UserDef_Tab
|
||||||
{
|
{
|
||||||
retValue = new MUserDefTab(ctx,rs,null);
|
retValue = new MUserDefTab(ctx,rs,null);
|
||||||
}
|
}
|
||||||
|
s_cache.put(key, retValue, e -> new MUserDefTab(Env.getCtx(), e));
|
||||||
}
|
}
|
||||||
catch (SQLException ex)
|
catch (SQLException ex)
|
||||||
{
|
{
|
||||||
|
@ -125,5 +173,14 @@ public class MUserDefTab extends X_AD_UserDef_Tab
|
||||||
return getMatch(ctx, AD_Tab_ID, userdefWin.getAD_UserDef_Win_ID());
|
return getMatch(ctx, AD_Tab_ID, userdefWin.getAD_UserDef_Win_ID());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PO markImmutable() {
|
||||||
|
if (is_Immutable())
|
||||||
|
return this;
|
||||||
|
|
||||||
|
makeImmutable();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
} // MUserDefTab
|
} // MUserDefTab
|
||||||
|
|
Loading…
Reference in New Issue