package org.molgenis.data.importer.wizard; import org.molgenis.data.FileRepositoryCollectionFactory; import org.molgenis.data.RepositoryCollection; import org.molgenis.data.importer.ImportService; import org.molgenis.data.importer.ImportServiceFactory; import org.molgenis.ui.wizard.AbstractWizardPage; import org.molgenis.ui.wizard.Wizard; import org.molgenis.util.FileUploadUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.validation.BindingResult; import org.springframework.validation.ObjectError; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.Part; import java.io.File; @Component public class UploadWizardPage extends AbstractWizardPage { private static final long serialVersionUID = 1L; private static final Logger LOG = LoggerFactory.getLogger(UploadWizardPage.class); private final ImportServiceFactory importServiceFactory; private final FileRepositoryCollectionFactory fileRepositoryCollectionFactory; @Autowired public UploadWizardPage(ImportServiceFactory importServiceFactory, FileRepositoryCollectionFactory fileRepositoryCollectionFactory) { super(); this.importServiceFactory = importServiceFactory; this.fileRepositoryCollectionFactory = fileRepositoryCollectionFactory; } @Override public String getTitle() { return "Upload file"; } @Override public String handleRequest(HttpServletRequest request, BindingResult result, Wizard wizard) { ImportWizardUtil.validateImportWizard(wizard); ImportWizard importWizard = (ImportWizard) wizard; String entityImportOption = request.getParameter("entity_option"); try { File file = null; Part part = request.getPart("upload"); if (part != null) { file = FileUploadUtils.saveToTempFolder(part); } if (file == null) { result.addError(new ObjectError("wizard", "No file selected")); } else { importWizard.setFile(file); RepositoryCollection repositoryCollection = fileRepositoryCollectionFactory .createFileRepositoryCollection(file); ImportService importService = importServiceFactory.getImportService(file, repositoryCollection); importWizard.setSupportedDatabaseActions(importService.getSupportedDatabaseActions()); importWizard.setMustChangeEntityName(importService.getMustChangeEntityName()); } } catch (Exception e) { ImportWizardUtil.handleException(e, importWizard, result, LOG, entityImportOption); } return null; } }