/*
* Copyright (c) 2017 OBiBa. All rights reserved.
*
* This program and the accompanying materials
* are made available under the terms of the GNU Public License v3.0.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.obiba.magma.datasource.hibernate.converter;
import javax.annotation.Nullable;
import org.hibernate.SessionFactory;
import org.obiba.magma.AttributeAwareBuilder;
import org.obiba.magma.datasource.hibernate.domain.AbstractAttributeAwareEntity;
import org.obiba.magma.datasource.hibernate.domain.DatasourceState;
import org.obiba.magma.datasource.hibernate.domain.ValueSetState;
import org.obiba.magma.datasource.hibernate.domain.ValueTableState;
import org.obiba.magma.datasource.hibernate.domain.VariableState;
public class HibernateMarshallingContext {
private DatasourceState datasourceState;
private ValueTableState valueTable;
private ValueSetState valueSet;
private VariableState variable;
private AttributeAwareBuilder<?> attributeAwareBuilder;
private AbstractAttributeAwareEntity attributeAwareEntity;
private SessionFactory sessionFactory;
public static HibernateMarshallingContext create(SessionFactory sessionFactory, DatasourceState datasourceState) {
return create(sessionFactory, datasourceState, null);
}
public static HibernateMarshallingContext create(SessionFactory sessionFactory, DatasourceState datasourceState,
@Nullable ValueTableState valueTable) {
if(sessionFactory == null) throw new IllegalArgumentException("sessionFactory cannot be null");
if(datasourceState == null) throw new IllegalArgumentException("datasourceState cannot be null");
HibernateMarshallingContext context = new HibernateMarshallingContext();
context.sessionFactory = sessionFactory;
context.datasourceState = datasourceState;
context.valueTable = valueTable;
return context;
}
public DatasourceState getDatasourceState() {
return datasourceState;
}
public ValueTableState getValueTable() {
return valueTable;
}
public SessionFactory getSessionFactory() {
return sessionFactory;
}
public ValueSetState getValueSet() {
return valueSet;
}
public void setValueSet(ValueSetState valueSet) {
this.valueSet = valueSet;
}
public VariableState getVariable() {
return variable;
}
public void setVariable(VariableState variable) {
this.variable = variable;
attributeAwareEntity = variable;
}
public void setAttributeAwareEntity(AbstractAttributeAwareEntity adaptable) {
attributeAwareEntity = adaptable;
}
public AbstractAttributeAwareEntity getAttributeAwareEntity() {
return attributeAwareEntity;
}
public AttributeAwareBuilder<?> getAttributeAwareBuilder() {
return attributeAwareBuilder;
}
public void setAttributeAwareBuilder(AttributeAwareBuilder<?> attributeAwareBuilder) {
this.attributeAwareBuilder = attributeAwareBuilder;
}
}