Refactored [2949927] - The current Persistence Engine Allow not get I_Table - peer reviewed and tested with dictionary tables, libero tables and the new libero import table
Link to SF Tracker: http://sourceforge.net/support/tracker.php?aid=2949927
This commit is contained in:
parent
04210dc6aa
commit
c8b861968c
|
@ -174,11 +174,8 @@ public class MTable extends X_AD_Table
|
||||||
// AD_Attribute_Value, AD_TreeNode
|
// AD_Attribute_Value, AD_TreeNode
|
||||||
};
|
};
|
||||||
|
|
||||||
/** EntityType */
|
|
||||||
private static final MEntityType[] entityTypes = MEntityType.getEntityTypes(Env.getCtx());
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get Persistency Class for Table
|
* Get Persistence Class for Table
|
||||||
* @param tableName table name
|
* @param tableName table name
|
||||||
* @return class or null
|
* @return class or null
|
||||||
*/
|
*/
|
||||||
|
@ -188,21 +185,6 @@ public class MTable extends X_AD_Table
|
||||||
if (tableName == null || tableName.endsWith("_Trl"))
|
if (tableName == null || tableName.endsWith("_Trl"))
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
MTable table = MTable.get(Env.getCtx(), tableName);
|
|
||||||
String entityType = table.getEntityType();
|
|
||||||
|
|
||||||
// Import Tables (Name conflict)
|
|
||||||
if (tableName.startsWith("I_") && MEntityType.ENTITYTYPE_Dictionary.equals(entityType))
|
|
||||||
{
|
|
||||||
Class<?> clazz = getPOclass("org.compiere.model.X_" + tableName);
|
|
||||||
if (clazz != null)
|
|
||||||
return clazz;
|
|
||||||
s_log.warning("No class for table: " + tableName);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//check cache
|
//check cache
|
||||||
Class<?> cache = s_classCache.get(tableName);
|
Class<?> cache = s_classCache.get(tableName);
|
||||||
if (cache != null)
|
if (cache != null)
|
||||||
|
@ -214,6 +196,27 @@ public class MTable extends X_AD_Table
|
||||||
return cache;
|
return cache;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MTable table = MTable.get(Env.getCtx(), tableName);
|
||||||
|
String entityType = table.getEntityType();
|
||||||
|
|
||||||
|
// Import Tables (Name conflict)
|
||||||
|
// Import Tables doesn't manage model M classes, just X_
|
||||||
|
if (tableName.startsWith("I_"))
|
||||||
|
{
|
||||||
|
MEntityType et = MEntityType.get(Env.getCtx(), entityType);
|
||||||
|
String etmodelpackage = et.getModelPackage();
|
||||||
|
if (etmodelpackage == null || MEntityType.ENTITYTYPE_Dictionary.equals(entityType))
|
||||||
|
etmodelpackage = "org.compiere.model"; // fallback for dictionary or empty model package on entity type
|
||||||
|
Class<?> clazz = getPOclass(etmodelpackage + ".X_" + tableName);
|
||||||
|
if (clazz != null)
|
||||||
|
{
|
||||||
|
s_classCache.put(tableName, clazz);
|
||||||
|
return clazz;
|
||||||
|
}
|
||||||
|
s_log.warning("No class for table: " + tableName);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
// Special Naming
|
// Special Naming
|
||||||
for (int i = 0; i < s_special.length; i++)
|
for (int i = 0; i < s_special.length; i++)
|
||||||
{
|
{
|
||||||
|
@ -232,23 +235,17 @@ public class MTable extends X_AD_Table
|
||||||
//begin [ 1784588 ] Use ModelPackage of EntityType to Find Model Class - vpj-cd
|
//begin [ 1784588 ] Use ModelPackage of EntityType to Find Model Class - vpj-cd
|
||||||
if (!MEntityType.ENTITYTYPE_Dictionary.equals(entityType))
|
if (!MEntityType.ENTITYTYPE_Dictionary.equals(entityType))
|
||||||
{
|
{
|
||||||
for (int i = 0; i < entityTypes.length; i++)
|
MEntityType et = MEntityType.get(Env.getCtx(), entityType);
|
||||||
{
|
String etmodelpackage = et.getModelPackage();
|
||||||
if (entityTypes[i].getEntityType().equals(entityType))
|
if (etmodelpackage != null)
|
||||||
{
|
|
||||||
String modelpackage = entityTypes[i].getModelPackage();
|
|
||||||
if (modelpackage != null)
|
|
||||||
{
|
{
|
||||||
Class<?> clazz = null;
|
Class<?> clazz = null;
|
||||||
if (! tableName.startsWith("I_"))
|
clazz = getPOclass(etmodelpackage + ".M" + Util.replace(tableName, "_", ""));
|
||||||
{
|
|
||||||
clazz = getPOclass(entityTypes[i].getModelPackage() + ".M" + Util.replace(tableName, "_", ""));
|
|
||||||
if (clazz != null) {
|
if (clazz != null) {
|
||||||
s_classCache.put(tableName, clazz);
|
s_classCache.put(tableName, clazz);
|
||||||
return clazz;
|
return clazz;
|
||||||
}
|
}
|
||||||
}
|
clazz = getPOclass(etmodelpackage + ".X_" + tableName);
|
||||||
clazz = getPOclass(entityTypes[i].getModelPackage() + ".X_" + tableName);
|
|
||||||
if (clazz != null) {
|
if (clazz != null) {
|
||||||
s_classCache.put(tableName, clazz);
|
s_classCache.put(tableName, clazz);
|
||||||
return clazz;
|
return clazz;
|
||||||
|
@ -256,8 +253,6 @@ public class MTable extends X_AD_Table
|
||||||
s_log.warning("No class for table with it entity: " + tableName);
|
s_log.warning("No class for table with it entity: " + tableName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
//end [ 1784588 ]
|
//end [ 1784588 ]
|
||||||
|
|
||||||
// Strip table name prefix (e.g. AD_) Customizations are 3/4
|
// Strip table name prefix (e.g. AD_) Customizations are 3/4
|
||||||
|
|
Loading…
Reference in New Issue