/* * 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; import java.util.Collection; import java.util.List; import javax.validation.constraints.NotNull; import com.google.common.collect.ImmutableList; @SuppressWarnings("UnusedDeclaration") public class CompositeDatasourceTransformer implements DatasourceTransformer { @NotNull private final List<DatasourceTransformer> transformers; // Public default ctor for XStream de-ser public CompositeDatasourceTransformer() { transformers = ImmutableList.of(); } public CompositeDatasourceTransformer(@NotNull Collection<DatasourceTransformer> transformers) { if(transformers == null) throw new IllegalArgumentException("transformers cannot be null"); this.transformers = ImmutableList.copyOf(transformers); } @Override public Datasource transform(Datasource datasource) { Datasource transformed = datasource; for(DatasourceTransformer transformer : transformers) { transformed = transformer.transform(transformed); } return transformed; } }