/* * #%L * gitools-ui-app * %% * Copyright (C) 2013 Universitat Pompeu Fabra - Biomedical Genomics group * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public * License along with this program. If not, see * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ package org.gitools.ui.app.datasources.biomart.wizard; import org.gitools.api.persistence.FileFormat; import org.gitools.datasources.biomart.BiomartService; import org.gitools.datasources.biomart.restful.model.*; import org.gitools.ui.core.pages.common.BasicSaveFilePage; import org.gitools.ui.platform.IconUtils; import org.gitools.ui.platform.icons.IconNames; import org.gitools.ui.platform.settings.Settings; import org.gitools.ui.platform.wizard.AbstractWizard; import org.gitools.ui.platform.wizard.IWizardPage; import java.io.File; import java.util.List; /** * @noinspection ALL */ public class BiomartTableWizard extends AbstractWizard { private BasicSaveFilePage saveFilePage; private BiomartService biomartService; private DatasetConfig biomartConfig; private BiomartAttributeListPage attrListPage; private BiomartTableFilteringPage filteringPage; private BiomartFilterConfigurationPage filterListPage; private BiomartSourcePage sourcePage; private MartLocation Database; private DatasetInfo Dataset; public static final String FORMAT_PLAIN = "TSV"; public static final String FORMAT_COMPRESSED_GZ = "GZ"; private final FileFormat[] supportedFormats = new FileFormat[]{new FileFormat("Tab Separated Fields", "tsv", true, false), new FileFormat("Tab Separated Fields compressed", "tsv.gz", true, false)}; public BiomartTableWizard() { /*BiomartRestfulService biomartService /*IBiomartService biomartService*/ setTitle("Import table ..."); setLogo(IconUtils.getImageIconResourceScaledByHeight(IconNames.LOGO_BIOMART_IMPORT, 96)); setHelpContext("import_biomart"); } @Override public void addPages() { // Source sourcePage = new BiomartSourcePage(); addPage(sourcePage); // Attribute list attrListPage = new BiomartAttributeListPage(); attrListPage.setTitle("Select attributes"); addPage(attrListPage); // Advance filtering filterListPage = new BiomartFilterConfigurationPage(); filterListPage.setTitle("Select filters"); addPage(filterListPage); // Filtering filteringPage = new BiomartTableFilteringPage(); addPage(filteringPage); // Destination saveFilePage = new BasicSaveFilePage(); saveFilePage.setTitle("Select destination file"); saveFilePage.setFolder(Settings.get().getLastDataPath()); saveFilePage.setFormats(supportedFormats); addPage(saveFilePage); } @Override public IWizardPage getNextPage(IWizardPage page) { IWizardPage nextPage = super.getNextPage(page); if (nextPage == attrListPage) { biomartService = sourcePage.getBiomartService(); Database = sourcePage.getDataBase(); Dataset = sourcePage.getDataset(); attrListPage.setSource(biomartService, Database, Dataset); } else if (nextPage == filterListPage) { biomartConfig = attrListPage.getBiomartConfig(); filterListPage.setSource(biomartService, biomartConfig); } return nextPage; } @Override public boolean canFinish() { boolean canFinish = super.canFinish(); IWizardPage page = getCurrentPage(); canFinish |= page == attrListPage && page.isComplete(); return canFinish; } @Override public void performFinish() { super.performFinish(); Settings.get().setLastDataPath(saveFilePage.getFolder()); Settings.get().save(); } public File getSelectedFile() { return saveFilePage.getPathAsFile(); } public List<AttributeDescription> getAttributeList() { return attrListPage.getAttributeList(); } public Query getQuery() { MartLocation mart = getDatabase(); Dataset ds = new Dataset(); ds.setName(getDataset().getName()); List<Attribute> dsattrs = ds.getAttribute(); for (AttributeDescription attrInfo : attrListPage.getAttributeList()) { Attribute attr = new Attribute(); attr.setName(attrInfo.getInternalName()); dsattrs.add(attr); } //Add filters into dataset List<Filter> dsFilters = ds.getFilter(); dsFilters.addAll(filterListPage.getFilters()); Query query = new Query(); query.setVirtualSchemaName(mart.getServerVirtualSchema()); query.setHeader(1); query.setCount(0); query.setUniqueRows(1); query.getDatasets().add(ds); return query; } public FileFormat getFormat() { return saveFilePage.getFormat(); } public boolean isSkipRowsWithEmptyValuesEnabled() { return filteringPage.isSkipRowsWithEmptyValuesEnabled(); } public String emptyValuesReplacement() { return filteringPage.emptyValuesReplacement(); } MartLocation getDatabase() { return Database; } DatasetInfo getDataset() { return Dataset; } public BiomartService getService() { return biomartService; } }