/******************************************************************************
* Copyright (C) 2009 Low Heng Sin *
* Copyright (C) 2009 Idalica Corporation *
* 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. *
*****************************************************************************/
package org.adempiere.webui.process;
import org.adempiere.webui.util.ADClassNameMap;
import org.compiere.process.ProcessInfo;
/**
* @author hengsin
*
*/
public class WProcessInfo extends ProcessInfo {
/**
*
*/
private static final long serialVersionUID = 2034681838152013686L;
/**
* @param Title
* @param AD_Process_ID
* @param Table_ID
* @param Record_ID
*/
public WProcessInfo(String Title, int AD_Process_ID, int Table_ID,
int Record_ID) {
super(Title, AD_Process_ID, Table_ID, Record_ID);
}
/**
* @param Title
* @param AD_Process_ID
*/
public WProcessInfo(String Title, int AD_Process_ID) {
super(Title, AD_Process_ID);
}
@Override
public void setClassName(String className) {
String zkName = null;
if (className != null && className.trim().length() > 0) {
zkName = ADClassNameMap.get(className);
if (zkName == null)
{
zkName = dynamicTranslate(className);
}
}
if (zkName == null)
zkName = className;
super.setClassName(zkName);
}
private String dynamicTranslate(String className) {
String zkName = null;
String tail = null;
//null check
if (className == null || className.trim().length() == 0)
return null;
String zkPackage = "org.adempiere.webui.";
String zkPrefix = "W";
//first, try replace package
if (className.startsWith("org.compiere."))
{
tail = className.substring("org.compiere.".length());
}
else if(className.startsWith("org.adempiere."))
{
tail = className.substring("org.adempiere.".length());
}
if (tail != null)
{
zkName = zkPackage + tail;
try {
this.getClass().getClassLoader().loadClass(zkName);
} catch (ClassNotFoundException e) {
zkName = null;
}
//try replace package and add W prefix to class name
if (zkName == null)
{
zkName = zkPackage;
int lastdot = tail.lastIndexOf(".");
if (lastdot >= 0)
{
if (lastdot > 0)
zkName = zkName + tail.substring(0, lastdot+1);
zkName = zkName + zkPrefix + tail.substring(lastdot+1);
}
else
{
zkName = zkName + zkPrefix + tail;
}
try {
this.getClass().getClassLoader().loadClass(zkName);
} catch (ClassNotFoundException e) {
zkName = null;
}
}
}
//try append W prefix to class name
if (zkName == null)
{
int lastdot = className.lastIndexOf(".");
zkName = className.substring(0, lastdot) + ".W" + className.substring(lastdot+1);
try {
this.getClass().getClassLoader().loadClass(zkName);
} catch (ClassNotFoundException e) {
zkName = null;
}
}
return zkName;
}
}