package org.jboss.tools.hibernate.runtime.common;
import java.io.File;
import org.jboss.tools.hibernate.runtime.spi.IOverrideRepository;
import org.jboss.tools.hibernate.runtime.spi.IReverseEngineeringStrategy;
import org.jboss.tools.hibernate.runtime.spi.ITableFilter;
public abstract class AbstractOverrideRepositoryFacade
extends AbstractFacade
implements IOverrideRepository {
public AbstractOverrideRepositoryFacade(
IFacadeFactory facadeFactory,
Object target) {
super(facadeFactory, target);
}
@Override
public void addFile(File file) {
Util.invokeMethod(
getTarget(),
"addFile",
new Class[] { File.class },
new Object[] { file });
}
@Override
public void addTableFilter(ITableFilter tf) {
assert tf instanceof IFacade;
Util.invokeMethod(
getTarget(),
"addTableFilter",
new Class[] { getTableFilterClass() },
new Object[] { ((IFacade)tf).getTarget() });
}
@Override
public IReverseEngineeringStrategy getReverseEngineeringStrategy(
IReverseEngineeringStrategy res) {
assert res instanceof IFacade;
Object targetRes = getReverseEngineeringStrategy(((IFacade)res).getTarget());
return getFacadeFactory().createReverseEngineeringStrategy(targetRes);
}
private Object getReverseEngineeringStrategy(Object object) {
return Util.invokeMethod(
getTarget(),
"getReverseEngineeringStrategy",
new Class[] { getReverseEngineeringStrategyClass() },
new Object[] { object });
}
protected Class<?> getTableFilterClass() {
return Util.getClass(
getTableFilterClassName(),
getFacadeFactoryClassLoader());
}
protected Class<?> getReverseEngineeringStrategyClass() {
return Util.getClass(
getReverseEngineeringStrategyClassName(),
getFacadeFactoryClassLoader());
}
protected String getTableFilterClassName() {
return "org.hibernate.cfg.reveng.TableFilter";
}
protected String getReverseEngineeringStrategyClassName() {
return "org.hibernate.cfg.reveng.ReverseEngineeringStrategy";
}
}