package com.constellio.app.ui.pages.imports; import static com.constellio.app.ui.i18n.i18n.$; import java.io.File; import java.io.PrintWriter; import java.io.StringWriter; import java.util.List; import org.apache.commons.io.FileUtils; import com.constellio.app.services.schemas.bulkImport.BulkImportResults; import com.constellio.app.services.schemas.bulkImport.ImportError; import com.constellio.app.services.schemas.bulkImport.groups.GroupsImportServices; import com.constellio.app.ui.framework.components.fields.upload.TempFileUpload; import com.constellio.app.ui.pages.base.BasePresenter; import com.constellio.model.conf.FoldersLocator; import com.constellio.model.entities.CorePermissions; import com.constellio.model.entities.records.wrappers.User; public class ImportGroupsFilePresenter extends BasePresenter<ImportFileView> implements ImportFilePresenterInterface { public ImportGroupsFilePresenter(ImportFileView view) { super(view); FoldersLocator foldersLocator = new FoldersLocator(); // File resourcesFolder = foldersLocator.getResourcesFolder(); // File exampleExcelFile = new File(resourcesFolder, "GroupsImport.xml"); // view.setExampleFile(exampleExcelFile); } @Override protected boolean hasPageAccess(String params, User user) { return user.has(CorePermissions.MANAGE_SYSTEM_DATA_IMPORTS).globally(); } @Override public void uploadButtonClicked(TempFileUpload upload) { if (upload != null && upload.getTempFile() != null) { File file = upload.getTempFile(); try { if (upload.getFileName().endsWith(".xml")) { GroupsImportServices importServices = new GroupsImportServices(); BulkImportResults errors = importServices .bulkImport(file, view.getSelectedCollections(), modelLayerFactory); for (ImportError error : errors.getImportErrors()) { view.showErrorMessage( $("ImportGroupsFileViewImpl.errorWith") + " " + error.getInvalidElementId() + " : " + error .getErrorMessage()); } view.showImportCompleteMessage(); } else { view.showErrorMessage($("ImportGroupsFileViewImpl.OnlyXmlAccepted")); } } catch (Exception e) { StringWriter writer = new StringWriter(); PrintWriter pWriter = new PrintWriter(writer); e.printStackTrace(pWriter); view.showErrorMessage(writer.toString()); } finally { FileUtils.deleteQuietly(file); } } } @Override public void backButtonClicked() { view.navigate().to().adminModule(); } public List<String> getAllCollections() { return appLayerFactory.getCollectionsManager().getCollectionCodesExcludingSystem(); } }