package com.constellio.app.modules.rm.ui.pages.systemCheck; import com.constellio.app.services.factories.ConstellioFactories; import com.constellio.app.services.records.SystemCheckManager; import com.constellio.app.services.records.SystemCheckReportBuilder; import com.constellio.app.ui.pages.base.BasePresenter; import com.constellio.app.ui.pages.base.SessionContext; import com.constellio.model.conf.FoldersLocator; import com.constellio.model.entities.CorePermissions; import com.constellio.model.entities.records.Record; import com.constellio.model.entities.records.wrappers.User; import com.constellio.model.entities.schemas.Schemas; import com.constellio.model.services.search.query.logical.LogicalSearchQuery; import com.constellio.model.services.search.query.logical.LogicalSearchQueryOperators; import com.constellio.model.services.search.query.logical.LogicalSearchQueryOperators.*; import com.constellio.model.services.search.query.logical.condition.LogicalSearchCondition; import com.constellio.model.services.users.UserServices; import com.vaadin.server.StreamResource; import org.apache.commons.io.FileUtils; import java.io.*; import java.util.List; public class SystemCheckPresenter extends BasePresenter<SystemCheckView> { private boolean buttonsDisabled = false; public SystemCheckPresenter(SystemCheckView view) { super(view); } public SystemCheckPresenter(SystemCheckView view, ConstellioFactories constellioFactories, SessionContext sessionContext) { super(view, constellioFactories, sessionContext); } @Override protected boolean hasPageAccess(String params, User user) { UserServices userServices = userServices(); return userServices.getUser(user.getUsername()).isSystemAdmin() || userServices.has(user).allGlobalPermissionsInAnyCollection( CorePermissions.MANAGE_SYSTEM_COLLECTIONS, CorePermissions.MANAGE_SECURITY, CorePermissions.MANAGE_SYSTEM_SERVERS); } SystemCheckManager getSystemCheckManager() { return appLayerFactory.getSystemCheckManager(); } void viewAssembled() { SystemCheckManager systemCheckManager = getSystemCheckManager(); buttonsDisabled = systemCheckManager.isSystemCheckResultsRunning(); view.setSystemCheckRunning(buttonsDisabled); if (systemCheckManager.getLastSystemCheckResults() != null) { String reportContent = new SystemCheckReportBuilder(systemCheckManager).build(); view.setReportContent(reportContent); } } void startSystemCheckButtonClicked() { SystemCheckManager systemCheckManager = getSystemCheckManager(); systemCheckManager.startSystemCheck(false); view.setSystemCheckRunning(true); buttonsDisabled = true; } void startSystemCheckAndRepairButtonClicked() { SystemCheckManager systemCheckManager = getSystemCheckManager(); systemCheckManager.startSystemCheck(true); view.setSystemCheckRunning(true); buttonsDisabled = true; } void viewRefreshed() { SystemCheckManager systemCheckManager = getSystemCheckManager(); boolean systemCheckRunning = systemCheckManager.isSystemCheckResultsRunning(); if (buttonsDisabled != systemCheckRunning) { String reportContent = new SystemCheckReportBuilder(systemCheckManager).build(); view.setReportContent(reportContent); view.setSystemCheckRunning(false); buttonsDisabled = false; } } File getReferencesFor(String id) { File file = new File("referenceReport.txt"); try { PrintWriter writer = new PrintWriter(file); writer.print(""); writer.close(); LogicalSearchCondition condition = LogicalSearchQueryOperators.fromAllSchemasIn(view.getCollection()).where(Schemas.ALL_REFERENCES).isEqualTo(id); List<Record> recordLists = modelLayerFactory.newSearchServices().search(new LogicalSearchQuery(condition)); for (Record record : recordLists) { FileUtils.write(file, record.getId() + " " + record.getSchemaCode() + " " + record.getTitle() + "\n", true); } } catch (Exception e) { e.printStackTrace(); } return file; } void backButtonClicked() { view.navigate().to().adminModule(); } }