package org.jboss.tools.hibernate.runtime.common; import java.io.File; import java.io.StringWriter; import java.io.Writer; import java.util.Properties; import org.jboss.tools.hibernate.runtime.spi.IArtifactCollector; import org.jboss.tools.hibernate.runtime.spi.IConfiguration; import org.jboss.tools.hibernate.runtime.spi.IExporter; import org.jboss.tools.hibernate.runtime.spi.IGenericExporter; import org.jboss.tools.hibernate.runtime.spi.IHbm2DDLExporter; import org.jboss.tools.hibernate.runtime.spi.IQueryExporter; public abstract class AbstractExporterFacade extends AbstractFacade implements IExporter { public AbstractExporterFacade( IFacadeFactory facadeFactory, Object target) { super(facadeFactory, target); } @Override public void setConfiguration(IConfiguration configuration) { if (configuration instanceof IFacade) { Util.invokeMethod( getTarget(), "setConfiguration", new Class[] { getConfigurationClass() }, new Object[] { ((IFacade)configuration).getTarget() }); } } @Override public void setProperties(Properties properties) { Util.invokeMethod( getTarget(), "setProperties", new Class[] { Properties.class }, new Object[] { properties }); } @Override public void setArtifactCollector(IArtifactCollector collector) { if (collector instanceof IFacade) { Util.invokeMethod( getTarget(), "setArtifactCollector", new Class[] { getArtifactCollectorClass() }, new Object[] { ((IFacade)collector).getTarget() }); } } @Override public void setOutputDirectory(File file) { Util.invokeMethod( getTarget(), "setOutputDirectory", new Class[] { File.class }, new Object[] { file }); } @Override public void setTemplatePath(String[] strings) { Util.invokeMethod( getTarget(), "setTemplatePath", new Class[] { String[].class }, new Object[] { strings }); } @Override public void start() { Util.invokeMethod( getTarget(), "start", new Class[] {}, new Object[] {}); } @Override public Properties getProperties() { return (Properties)Util.invokeMethod( getTarget(), "getProperties", new Class[] {}, new Object[] {}); } @Override public IGenericExporter getGenericExporter() { IGenericExporter result = null; if (getGenericExporterClass().isAssignableFrom(getTarget().getClass())) { result = getFacadeFactory().createGenericExporter(getTarget()); } return result; } @Override public IHbm2DDLExporter getHbm2DDLExporter() { IHbm2DDLExporter result = null; if (getHbm2DDLExporterClass().isAssignableFrom(getTarget().getClass())) { result = getFacadeFactory().createHbm2DDLExporter(getTarget()); } return result; } @Override public IQueryExporter getQueryExporter() { IQueryExporter result = null; if (getQueryExporterClass().isAssignableFrom(getTarget().getClass())) { result = getFacadeFactory().createQueryExporter(getTarget()); } return result; } @Override public void setCustomProperties(Properties props) { if (getHibernateConfigurationExporterClass().isAssignableFrom( getTarget().getClass())) { Util.invokeMethod( getTarget(), "setCustomProperties", new Class[] { Properties.class }, new Object[] { props }); } } @Override public void setOutput(StringWriter stringWriter) { if (getHibernateConfigurationExporterClass().isAssignableFrom( getTarget().getClass())) { Util.invokeMethod( getTarget(), "setOutput", new Class[] { Writer.class }, new Object[] { stringWriter }); } } protected Class<?> getConfigurationClass() { return Util.getClass( getConfigurationClassName(), getFacadeFactoryClassLoader()); } protected String getConfigurationClassName() { return "org.hibernate.cfg.Configuration"; } protected Class<?> getHibernateConfigurationExporterClass() { return Util.getClass( getHibernateConfigurationExporterClassName(), getFacadeFactoryClassLoader()); } protected String getHibernateConfigurationExporterClassName() { return "org.hibernate.tool.hbm2x.HibernateConfigurationExporter"; } protected Class<?> getArtifactCollectorClass() { return Util.getClass( getArtifactCollectorClassName(), getFacadeFactoryClassLoader()); } protected String getArtifactCollectorClassName() { return "org.hibernate.tool.hbm2x.ArtifactCollector"; } protected Class<?> getGenericExporterClass() { return Util.getClass( getGenericExporterClassName(), getFacadeFactoryClassLoader()); } protected String getGenericExporterClassName() { return "org.hibernate.tool.hbm2x.GenericExporter"; } protected Class<?> getHbm2DDLExporterClass() { return Util.getClass( getHbm2DDLExporterClassName(), getFacadeFactoryClassLoader()); } protected String getHbm2DDLExporterClassName() { return "org.hibernate.tool.hbm2x.Hbm2DDLExporter"; } protected Class<?> getQueryExporterClass() { return Util.getClass( getQueryExporterClassName(), getFacadeFactoryClassLoader()); } protected String getQueryExporterClassName() { return "org.hibernate.tool.hbm2x.QueryExporter"; } }