/* * 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.spring; import org.obiba.magma.Datasource; import org.obiba.magma.ValueTable; import org.obiba.magma.VariableValueSourceFactory; import org.obiba.magma.beans.BeanValueTable; import org.obiba.magma.beans.ValueSetBeanResolver; import org.obiba.magma.support.VariableEntityProvider; public class BeanValueTableFactoryBean implements ValueTableFactoryBean { private String valueTableName; private VariableEntityProvider variableEntityProvider; private ValueSetBeanResolver resolver; private VariableValueSourceFactory factory; public void setValueTableName(String name) { valueTableName = name; } @Override public String getValueTableName() { return valueTableName; } public void setVariableEntityProvider(VariableEntityProvider variableEntityProvider) { this.variableEntityProvider = variableEntityProvider; } public void setVariableValueSourceFactory(VariableValueSourceFactory factory) { this.factory = factory; } public void setValueSetBeanResolver(ValueSetBeanResolver resolver) { this.resolver = resolver; } @Override public ValueTable buildValueTable(Datasource datasource) { if(resolver == null) { throw new IllegalStateException("valueSetBeanResolver property cannot be null"); } if(factory == null) { throw new IllegalStateException("variableValueSourceFactory property cannot be null"); } BeanValueTable bvt = new BeanValueTable(datasource, getValueTableName(), variableEntityProvider); bvt.addResolver(resolver); bvt.addVariableValueSources(factory); return bvt; } }