package com.constellio.app.modules.robots.model; import java.util.HashMap; import java.util.Map; import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; import org.apache.commons.lang3.builder.ToStringBuilder; import com.constellio.app.modules.robots.model.wrappers.Robot; import com.constellio.app.modules.robots.services.RobotSchemaRecordServices; import com.constellio.model.entities.records.Record; import com.constellio.model.entities.schemas.Metadata; import com.constellio.model.entities.schemas.MetadataSchema; import com.constellio.model.entities.schemas.MetadataSchemaTypes; import com.constellio.model.entities.schemas.Schemas; public class DryRunRobotAction { String recordId; String recordUrl; String recordTitle; String robotId; String robotCode; String robotTitle; String actionTitle; String robotHierarchy; Map<Metadata, Object> actionParameters; public String getRecordId() { return recordId; } public void setRecordId(String recordId) { this.recordId = recordId; } public String getRecordUrl() { return recordUrl; } public void setRecordUrl(String recordUrl) { this.recordUrl = recordUrl; } public String getRecordTitle() { return recordTitle; } public void setRecordTitle(String recordTitle) { this.recordTitle = recordTitle; } public String getRobotId() { return robotId; } public void setRobotId(String robotId) { this.robotId = robotId; } public String getRobotCode() { return robotCode; } public void setRobotCode(String robotCode) { this.robotCode = robotCode; } public String getRobotTitle() { return robotTitle; } public void setRobotTitle(String robotTitle) { this.robotTitle = robotTitle; } public String getActionTitle() { return actionTitle; } public void setActionTitle(String actionTitle) { this.actionTitle = actionTitle; } public String getRobotHierarchy() { return robotHierarchy; } public void setRobotHierarchy(String robotHierarchy) { this.robotHierarchy = robotHierarchy; } public Map<Metadata, Object> getActionParameters() { return actionParameters; } public void setActionParameters(Map<Metadata, Object> actionParameters) { this.actionParameters = actionParameters; } @Override public int hashCode() { return HashCodeBuilder.reflectionHashCode(this); } @Override public boolean equals(Object obj) { return EqualsBuilder.reflectionEquals(this, obj); } @Override public String toString() { return ToStringBuilder.reflectionToString(this); } public static DryRunRobotAction dryRunRobotAction(Record record, Robot robot, RobotSchemaRecordServices robotSchemaRecordServices) { MetadataSchemaTypes types = robotSchemaRecordServices.getTypes(); String title = record.get(Schemas.TITLE); String url = record.get(Schemas.URL); String actionTitle = robot.getAction(); Map<Metadata, Object> actionParameters = new HashMap<>(); if (robot.getActionParameters() != null) { Record actionParametersRecord = robotSchemaRecordServices.get(robot.getActionParameters()); MetadataSchema schema = types.getSchema(actionParametersRecord.getSchemaCode()); for (Metadata metadata : schema.getMetadatas()) { if (!metadata.inheritDefaultSchema()) { Object value = actionParametersRecord.get(metadata); actionParameters.put(metadata, value); } } } String robotCodeHierarchy = robotSchemaRecordServices.getRobotCodesPath(robot, " > "); DryRunRobotAction action = new DryRunRobotAction(); action.setRecordId(record.getId()); action.setRecordTitle(title); action.setRecordUrl(url); action.setRobotId(robot.getId()); action.setRobotCode(robot.getCode()); action.setRobotTitle(robot.getTitle()); action.setRobotHierarchy(robotCodeHierarchy); action.setActionTitle(actionTitle); action.setActionParameters(actionParameters); return action; } }