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();
}
}