package com.constellio.app.ui.pages.imports.authorization; import static com.constellio.app.ui.i18n.i18n.$; import java.io.File; import java.io.PrintWriter; import java.io.StringWriter; import org.apache.commons.io.FileUtils; import com.constellio.app.services.schemas.bulkImport.authorization.AuthorizationImportServices; import com.constellio.app.services.schemas.bulkImport.BulkImportResults; import com.constellio.app.services.schemas.bulkImport.ImportError; import com.constellio.app.ui.framework.components.fields.upload.TempFileUpload; import com.constellio.app.ui.pages.base.BasePresenter; import com.constellio.app.ui.pages.imports.ImportFilePresenterInterface; import com.constellio.app.ui.pages.imports.ImportFileView; import com.constellio.model.conf.FoldersLocator; import com.constellio.model.entities.CorePermissions; import com.constellio.model.entities.records.wrappers.User; public class ImportAuthorizationsFilePresenter extends BasePresenter<ImportFileView> implements ImportFilePresenterInterface { public ImportAuthorizationsFilePresenter(ImportFileView view) { super(view); FoldersLocator foldersLocator = new FoldersLocator(); File resourcesFolder = foldersLocator.getResourcesFolder(); File exampleExcelFile = new File(resourcesFolder, "AuthorizationsImport.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")) { AuthorizationImportServices importServices = new AuthorizationImportServices(); BulkImportResults errors = importServices .bulkImport(file, getCurrentUser().getCollection(), modelLayerFactory); for (ImportError error : errors.getImportErrors()) { view.showErrorMessage( $("ImportAuthorizationsFileViewImpl.errorWith") + " " + error.getInvalidElementId() + " : " + error .getErrorMessage()); } view.showImportCompleteMessage(); } else { view.showErrorMessage($("ImportAuthorizationsFileViewImpl.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(); } }