package org.jboss.windup.reporting.model.rule;
import com.tinkerpop.blueprints.Vertex;
import com.tinkerpop.frames.Property;
import com.tinkerpop.frames.modules.javahandler.JavaHandler;
import com.tinkerpop.frames.modules.javahandler.JavaHandlerContext;
import com.tinkerpop.frames.modules.typedgraph.TypeValue;
import org.jboss.windup.config.RuleUtils;
import org.jboss.windup.graph.model.WindupVertexFrame;
import org.jboss.windup.reporting.ruleexecution.RuleExecutionInformationForReading;
import org.ocpsoft.rewrite.config.Rule;
/**
* Represents rule execution with some additional statistics
* (count of added/removed edges/vertices, execution status, error message)
*
* @author <a href="mailto:dklingenberg@gmail.com">David Klingenberg</a>
*/
@TypeValue(RuleExecutionModel.TYPE)
public interface RuleExecutionModel extends WindupVertexFrame
{
String TYPE = "RuleExecution";
String RULE_ID = "ruleId";
String RULE_CONTENTS = "ruleContents";
String COUNT_ADDED_VERTICES = "countAddedVertices";
String COUNT_ADDED_EDGES = "countAddedEdges";
String COUNT_REMOVED_VERTICES = "countRemovedVertices";
String COUNT_REMOVED_EDGES = "countRemovedEdges";
String IS_EXECUTED = "isExecuted";
String IS_FAILED = "isFailed";
String FAILURE_MESSAGE = "failureMessage";
@Property(RULE_ID)
String getRuleId();
@Property(RULE_ID)
RuleExecutionModel setRuleId(String id);
@Property(RULE_CONTENTS)
String getRuleContents();
@Property(RULE_CONTENTS)
RuleExecutionModel setRuleContents(String ruleContents);
@Property(COUNT_ADDED_VERTICES)
Integer getCountAddedVertices();
@Property(COUNT_ADDED_VERTICES)
RuleExecutionModel setCountAddedVertices(Integer vertexIDsAdded);
@Property(COUNT_ADDED_EDGES)
Integer getCountAddedEdges();
@Property(COUNT_ADDED_EDGES)
RuleExecutionModel setCountAddedEdges(Integer edgeIDSAdded);
@Property(COUNT_REMOVED_VERTICES)
Integer getCountRemovedVertices();
@Property(COUNT_REMOVED_VERTICES)
RuleExecutionModel setCountRemovedVertices(Integer vertexIDsRemoved);
@Property(COUNT_REMOVED_EDGES)
Integer getCountRemovedEdges();
@Property(COUNT_REMOVED_EDGES)
RuleExecutionModel setCountRemovedEdges(Integer getEdgeIDSRemoved);
@Property(IS_EXECUTED)
Boolean getExecuted();
@Property(IS_EXECUTED)
RuleExecutionModel setExecuted(Boolean executed);
@Property(IS_FAILED)
Boolean getFailed();
@Property(IS_FAILED)
RuleExecutionModel setFailed(Boolean failed);
@Property(FAILURE_MESSAGE)
String getFailureMessage();
@Property(FAILURE_MESSAGE)
RuleExecutionModel setFailureMessage(String failureMessage);
@JavaHandler
void setDataFromRuleInfo(RuleExecutionInformationForReading ruleInformation);
abstract class Impl implements RuleExecutionModel, JavaHandlerContext<Vertex>
{
@Override
public void setDataFromRuleInfo(RuleExecutionInformationForReading ruleInformation)
{
Rule rule = ruleInformation.getRule();
this.setRuleId(rule.getId());
String ruleContents = RuleUtils.ruleToRuleContentsString(rule, 0);
this.setRuleContents(ruleContents);
this.setCountAddedVertices(ruleInformation.getVertexIDsAdded());
this.setCountAddedEdges(ruleInformation.getEdgeIDsAdded());
this.setCountRemovedVertices(ruleInformation.getVertexIDsRemoved());
this.setCountRemovedEdges(ruleInformation.getEdgeIDsRemoved());
this.setExecuted(ruleInformation.isExecuted());
this.setFailed(ruleInformation.isFailed());
Throwable failureCase = ruleInformation.getFailureCause();
if (failureCase != null)
{
String failureMessage = failureCase.getMessage();
this.setFailureMessage(failureMessage);
}
}
}
}