package com.constellio.app.modules.robots.ui.pages;
import static com.constellio.model.services.search.query.logical.LogicalSearchQueryOperators.from;
import com.constellio.app.modules.robots.model.wrappers.Robot;
import com.constellio.app.modules.robots.ui.navigation.RobotViews;
import com.constellio.app.ui.entities.MetadataSchemaVO;
import com.constellio.app.ui.entities.RecordVO;
import com.constellio.app.ui.entities.RecordVO.VIEW_MODE;
import com.constellio.app.ui.framework.builders.MetadataSchemaToVOBuilder;
import com.constellio.app.ui.framework.builders.RecordToVOBuilder;
import com.constellio.app.ui.framework.data.RecordVODataProvider;
import com.constellio.model.entities.schemas.Schemas;
import com.constellio.model.services.search.StatusFilter;
import com.constellio.model.services.search.query.logical.LogicalSearchQuery;
public class ListRootRobotsPresenter extends BaseRobotPresenter<ListRootRobotsView> {
private RecordToVOBuilder recordToVOBuilder = new RecordToVOBuilder();
private final MetadataSchemaVO schemaVO;
public ListRootRobotsPresenter(ListRootRobotsView view) {
super(view, Robot.DEFAULT_SCHEMA);
schemaVO = new MetadataSchemaToVOBuilder().build(defaultSchema(), VIEW_MODE.TABLE, view.getSessionContext());
}
public RecordVODataProvider getRootRobotsDataProvider() {
return new RecordVODataProvider(schemaVO, recordToVOBuilder, modelLayerFactory, view.getSessionContext()) {
@Override
protected LogicalSearchQuery getQuery() {
return new LogicalSearchQuery(from(defaultSchema()).where(getMetadata(Robot.PARENT)).isNull())
.filteredByStatus(StatusFilter.ACTIVES).sortAsc(Schemas.TITLE);
}
};
}
public void displayButtonClicked(RecordVO recordVO) {
view.navigate().to(RobotViews.class).robotConfiguration(recordVO.getId());
}
public void deleteButtonClicked(RecordVO recordVO) {
robotsService().deleteRobotHierarchy(recordVO.getId());
view.navigate().to(RobotViews.class).listRootRobots();
}
public void addButtonClicked() {
view.navigate().to(RobotViews.class).addRobot(null);
}
public void backButtonClicked() {
view.navigate().to().adminModule();
}
}