package com.constellio.app.ui.framework.data.event.category; import static com.constellio.app.ui.i18n.i18n.$; import static java.util.Arrays.asList; import java.util.ArrayList; import java.util.List; import org.joda.time.LocalDateTime; import com.constellio.app.modules.rm.services.events.RMEventsSearchServices; import com.constellio.app.services.factories.ConstellioFactories; import com.constellio.app.ui.framework.data.DataProvider; import com.constellio.app.ui.framework.data.AbstractDataProvider; import com.constellio.app.ui.framework.data.event.EventStatistics; import com.constellio.app.ui.pages.events.EventsCategoryDataProvider; import com.constellio.model.entities.records.wrappers.EventType; import com.constellio.model.entities.records.wrappers.User; import com.constellio.model.services.factories.ModelLayerFactory; import com.constellio.model.services.search.SearchServices; import com.constellio.model.services.search.query.logical.LogicalSearchQuery; /** * Created by Marco on 2017-03-20. */ public class ReindexAndRestartEventDataProvider extends AbstractDataProvider implements EventsCategoryDataProvider { private List<EventStatistics> events; private String currentUserName; private LocalDateTime startDate; private LocalDateTime endDate; private String collection; public ReindexAndRestartEventDataProvider(ModelLayerFactory modelLayerFactory, String collection, String currentUserName, LocalDateTime startDate, LocalDateTime endDate) { this.currentUserName = currentUserName; this.startDate = startDate; this.endDate = endDate; this.collection = collection; init(modelLayerFactory); } @Override public String getDataTitle() { return $("ListEventsView.reIndexAndRestart"); } @Override public String getDataReportTitle() { return null; } @Override public String getEventType(Integer index) { switch (index) { case 0: return EventType.REINDEXING; case 1: return EventType.RESTARTING; default: throw new RuntimeException("Unsupported"); } } public void init(ModelLayerFactory modelLayerFactory) { SearchServices searchServices = modelLayerFactory.newSearchServices(); RMEventsSearchServices rmSchemasRecordsServices = new RMEventsSearchServices(modelLayerFactory, collection); User currentUser = modelLayerFactory.newUserServices().getUserInCollection(this.currentUserName, this.collection); events = new ArrayList<>(); EventStatistics restart = new EventStatistics(); restart.setLabel($("ListEventsView.restarting")); LogicalSearchQuery query = rmSchemasRecordsServices.newFindEventByDateRangeQuery(currentUser, EventType.RESTARTING, this.startDate, this.endDate); restart.setValue((float) searchServices.getResultsCount(query)); EventStatistics reindex = new EventStatistics(); reindex.setLabel($("ListEventsView.reindexing")); query = rmSchemasRecordsServices.newFindEventByDateRangeQuery(currentUser, EventType.REINDEXING, this.startDate, this.endDate); reindex.setValue((float) searchServices.getResultsCount(query)); events.addAll(asList(restart, reindex)); } @Override public List<EventStatistics> getEvents() { if (events == null) { ConstellioFactories constellioFactories = ConstellioFactories.getInstance(); init(constellioFactories.getModelLayerFactory()); } return events; } @Override public EventStatistics getEventStatistics(Integer index) { return getEvents().get(index); } @Override public int size() { return 2; } @Override public void addDataRefreshListener(DataRefreshListener dataRefreshListener) { } @Override public List<DataRefreshListener> getDataRefreshListeners() { return null; } @Override public void removeDataRefreshListener(DataRefreshListener dataRefreshListener) { } @Override public void fireDataRefreshEvent() { } }