/* * 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.spss; import java.io.File; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Set; import org.obiba.magma.ValueTable; import org.obiba.magma.datasource.spss.support.SpssValueTableFactory; import org.obiba.magma.support.AbstractDatasource; public class SpssDatasource extends AbstractDatasource { private final List<File> spssFiles; private final String characterSet; private final String entityType; private final String locale; private final String idVariable; private final boolean multilines; private final Map<String, SpssValueTable> valueTablesMapOnInit = new LinkedHashMap<>(); public SpssDatasource(String name, List<File> spssFiles, String characterSet, String entityType, String locale) { this(name, spssFiles, characterSet, entityType, locale, null); } public SpssDatasource(String name, List<File> spssFiles, String characterSet, String entityType, String locale, String idVariable) { this(name, spssFiles, characterSet, entityType, locale, idVariable, false); } public SpssDatasource(String name, List<File> spssFiles, String characterSet, String entityType, String locale, String idVariable, boolean multilines) { super(name, "spss"); this.spssFiles = spssFiles; this.characterSet = characterSet; this.entityType = entityType; this.locale = locale; this.idVariable = idVariable; this.multilines = multilines; } @Override protected void onInitialise() { for(File spssFile : spssFiles) { SpssValueTableFactory factory = new SpssValueTableFactory(this, entityType, spssFile, characterSet, locale, idVariable); String tableName = factory.getName(); if(!valueTablesMapOnInit.containsKey(tableName)) { valueTablesMapOnInit.put(tableName, factory.create()); } } } public boolean isMultilines() { return multilines; } @Override protected Set<String> getValueTableNames() { return valueTablesMapOnInit.keySet(); } @Override protected ValueTable initialiseValueTable(String tableName) { return valueTablesMapOnInit.get(tableName); } }