/* * #%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.matrix.FileFormats; 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; public class BiomartModulesWizard extends AbstractWizard { private BiomartAttributePage modulesAttributePage; private BiomartAttributePage dataAttributePage; private BasicSaveFilePage saveFilePage; private BiomartService biomartService; private DatasetConfig biomartConfig; 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(FileFormats.MODULES_2C_MAP.getTitle(), FileFormats.MODULES_2C_MAP.getExtension(), true, false), new FileFormat(FileFormats.MODULES_2C_MAP.getTitle() + " compressed", FileFormats.MODULES_2C_MAP.getExtension() + ".gz", true, false)}; public BiomartModulesWizard() {/*BiomartRestfulService biomartService/*IBiomartService biomartService*/ setTitle("Import modules..."); setLogo(IconUtils.getImageIconResourceScaledByHeight(IconNames.LOGO_BIOMART_IMPORT, 96)); setHelpContext("import_biomart"); } @Override public void addPages() { // Source sourcePage = new BiomartSourcePage(); addPage(sourcePage); // FIXME Modules attribute modulesAttributePage = new BiomartAttributePage(); modulesAttributePage.setId(BiomartAttributePage.class.getCanonicalName() + "1"); modulesAttributePage.setTitle("Select attribute for items"); addPage(modulesAttributePage); // FIXME Data attribute dataAttributePage = new BiomartAttributePage(); dataAttributePage.setId(BiomartAttributePage.class.getCanonicalName() + "2"); dataAttributePage.setTitle("Select attribute for modules"); addPage(dataAttributePage); // Advanced filtering filterListPage = new BiomartFilterConfigurationPage(); filterListPage.setTitle("Select filters"); addPage(filterListPage); // Destination saveFilePage = new BasicSaveFilePage(); saveFilePage.setTitle("Select destination file"); saveFilePage.setFolder(Settings.get().getLastMapPath()); saveFilePage.setFormats(supportedFormats); addPage(saveFilePage); } @Override public void performFinish() { Settings.get().setLastMapPath(saveFilePage.getFolder()); Settings.get().save(); } @Override public IWizardPage getNextPage(IWizardPage page) { if (page == sourcePage) { biomartService = sourcePage.getBiomartService(); Database = sourcePage.getDataBase(); Dataset = sourcePage.getDataset(); modulesAttributePage.setSource(biomartService, Database, Dataset); } else if (page == modulesAttributePage) { dataAttributePage.setAttributePages(modulesAttributePage.getAttributePages()); } else if (page == dataAttributePage) { //filterListPage.setSource(biomartService, Dataset); biomartConfig = modulesAttributePage.getBiomartConfig(); filterListPage.setSource(biomartService, biomartConfig); } return super.getNextPage(page); } public File getSelectedFile() { return saveFilePage.getPathAsFile(); } public Query getQuery() { MartLocation mart = getDatabase(); int header = 0; int count = 0; int uniqueRows = 1; Dataset ds = new Dataset(); ds.setName(getDataset().getName()); Attribute moduleAttr = new Attribute(); moduleAttr.setName(modulesAttributePage.getAttribute().getInternalName()); Attribute dataAttr = new Attribute(); dataAttr.setName(dataAttributePage.getAttribute().getInternalName()); ds.getAttribute().add(moduleAttr); ds.getAttribute().add(dataAttr); //Add filters into dataset List<Filter> dsFilters = ds.getFilter(); dsFilters.addAll(filterListPage.getFilters()); Query query = new Query(); query.setVirtualSchemaName(mart.getServerVirtualSchema()); query.setHeader(header); query.setCount(count); query.setUniqueRows(uniqueRows); query.getDatasets().add(ds); /*try { List<ResultsRow> resultRows = port.query( mart.getServerVirtualSchema(), header, count, uniqueRows, Arrays.asList(ds)); ListIterator<ResultsRow> it = resultRows.listIterator(); while (it.hasNext()) { ResultsRow row = it.next(); System.out.println(row.getItem()); } } catch (BioMartException_Exception ex) { Logger.getLogger(BiomartModulesWizard.class.getName()).log(Level.SEVERE, null, ex); }*/ return query; } public FileFormat getFormat() { return saveFilePage.getFormat(); } MartLocation getDatabase() { return Database; } DatasetInfo getDataset() { return Dataset; } public BiomartService getService() { return biomartService; } }