package com.plectix.simulator.parser.abstractmodel;
import java.util.Collections;
import java.util.List;
import com.plectix.simulator.parser.util.ParserUtil;
public final class ModelRule {
private final String name;
private final List<ModelAgent> leftHandSideAgents;
private final List<ModelAgent> rightHandSideAgents;
private double rate;
private final int id;
private final boolean isStorify;
// -1 is default value
private final double binaryRate;
public ModelRule(List<ModelAgent> left, List<ModelAgent> right,
String name, double ruleRate, double binaryRate, int ruleID,
boolean isStorify) {
this.rate = ruleRate;
this.leftHandSideAgents = left;
this.rightHandSideAgents = right;
this.name = name;
this.id = ruleID;
this.binaryRate = binaryRate;
this.isStorify = isStorify;
}
public final String getName() {
return name;
}
public final double getRate() {
return rate;
}
public final void setRate(double newRate) {
this.rate = newRate;
}
public final List<ModelAgent> getRHS() {
return rightHandSideAgents;
}
public final List<ModelAgent> getLHS() {
return leftHandSideAgents;
}
public final int getID() {
return id;
}
public final double getBinaryRate() {
return binaryRate;
}
public final boolean isStorify() {
return isStorify;
}
@Override
public final String toString() {
final StringBuffer sb = new StringBuffer();
if (leftHandSideAgents != null)
Collections.sort(leftHandSideAgents);
if (rightHandSideAgents != null)
Collections.sort(rightHandSideAgents);
sb.append("'" + name + "' ");
if (leftHandSideAgents != null)
sb.append(ParserUtil.listToString(leftHandSideAgents));
sb.append(" -> ");
if(rightHandSideAgents!=null)
sb.append(ParserUtil.listToString(rightHandSideAgents));
return sb.toString();
}
}