/* * 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.support; import javax.validation.constraints.NotNull; import org.obiba.magma.AbstractDatasourceFactory; import org.obiba.magma.Datasource; import org.obiba.magma.DatasourceFactory; import org.obiba.magma.support.DatasourceCopier.VariableTransformer; import org.obiba.magma.support.MultiplexingDatasource.ValueTableMultiplexer; public class MultiplexingDatasourceFactory extends AbstractDatasourceFactory { private final ValueTableMultiplexer tableMultiplexer; private final VariableTransformer variableTransformer; private final DatasourceFactory wrappedFactory; public MultiplexingDatasourceFactory(DatasourceFactory wrappedFactory, ValueTableMultiplexer tableMultiplexer, VariableTransformer variableTransformer) { this.tableMultiplexer = tableMultiplexer; this.variableTransformer = variableTransformer; this.wrappedFactory = wrappedFactory; } @Override public void setName(@NotNull String name) { wrappedFactory.setName(name); } @Override public String getName() { return wrappedFactory.getName(); } @NotNull @Override protected Datasource internalCreate() { return new MultiplexingDatasource(wrappedFactory.create(), tableMultiplexer, variableTransformer); } }