package org.jboss.tools.hibernate.runtime.common;
import org.jboss.tools.hibernate.runtime.spi.ICriteria;
import org.jboss.tools.hibernate.runtime.spi.IQuery;
import org.jboss.tools.hibernate.runtime.spi.ISession;
import org.jboss.tools.hibernate.runtime.spi.ISessionFactory;
public abstract class AbstractSessionFacade
extends AbstractFacade
implements ISession {
protected ISessionFactory targetFactory;
public AbstractSessionFacade(
IFacadeFactory facadeFactory,
Object target) {
super(facadeFactory, target);
}
@Override
public String getEntityName(Object o) {
return (String)Util.invokeMethod(
getTarget(),
"getEntityName",
new Class[] { Object.class },
new Object[] { o });
}
@Override
public ISessionFactory getSessionFactory() {
if (targetFactory == null) {
Object targetSessionFactory = Util.invokeMethod(
getTarget(),
"getSessionFactory",
new Class[] {},
new Object[] {});
if (targetSessionFactory != null) {
targetFactory = getFacadeFactory().createSessionFactory(
targetSessionFactory);
}
}
return targetFactory;
}
@Override
public IQuery createQuery(String queryString) {
Object targetQuery = Util.invokeMethod(
getTarget(),
"createQuery",
new Class[] { String.class },
new Object[] { queryString });
return getFacadeFactory().createQuery(targetQuery);
}
@Override
public boolean isOpen() {
return (boolean)Util.invokeMethod(
getTarget(),
"isOpen",
new Class[] {},
new Object[] {});
}
@Override
public void close() {
Util.invokeMethod(
getTarget(),
"close",
new Class[] {},
new Object[] {});
}
@Override
public boolean contains(Object object) {
return (boolean)Util.invokeMethod(
getTarget(),
"contains",
new Class[] { Object.class },
new Object[] { object });
}
public ICriteria createCriteria(Class<?> persistentClass) {
Object criteriaTarget = Util.invokeMethod(
getTarget(),
"createCriteria",
new Class[] { Class.class },
new Object[] { persistentClass });
return getFacadeFactory().createCriteria(criteriaTarget);
}
}