de.uni.freiburg.iig.telematik.sepia.petrinet.cpn.FiringRule Maven / Gradle / Ivy
package de.uni.freiburg.iig.telematik.sepia.petrinet.cpn;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import de.invation.code.toval.validate.Validate;
public class FiringRule implements Serializable{
private static final long serialVersionUID = -7137530591652113124L;
private Map> requiredTokens = new HashMap>();
private Map> producedTokens = new HashMap>();
public boolean containsRequirements(){
return !requiredTokens.isEmpty();
}
public void addRequirement(String placeName, Map requirement) {
Validate.notNull(placeName);
Validate.notNull(requirement);
Validate.noNullElements(requirement.keySet());
Validate.noNullElements(requirement.values());
for(Integer tokens : requirement.values()){
Validate.bigger(tokens, 0);
}
requiredTokens.put(placeName, requirement);
}
public void addRequirement(String placeName, String color, Integer tokens) {
Validate.notNull(placeName);
Validate.notNull(color);
Validate.notNull(tokens);
Validate.bigger(tokens, 0);
Map placeRequirements = requiredTokens.get(placeName);
if(placeRequirements == null){
placeRequirements = new HashMap();
requiredTokens.put(placeName, placeRequirements);
}
placeRequirements.put(color, tokens);
}
public boolean containsProductions(){
return !producedTokens.isEmpty();
}
public void addProduction(String placeName, Map production) {
Validate.notNull(placeName);
Validate.notNull(production);
Validate.noNullElements(production.keySet());
Validate.noNullElements(production.values());
for(Integer tokens : production.values()){
Validate.bigger(tokens, 0);
}
producedTokens.put(placeName, production);
}
public void addProduction(String placeName, String color, Integer tokens) {
Validate.notNull(placeName);
Validate.notNull(color);
Validate.notNull(tokens);
Validate.bigger(tokens, 0);
Map placeProductions = producedTokens.get(placeName);
if(placeProductions == null){
placeProductions = new HashMap();
producedTokens.put(placeName, placeProductions);
}
placeProductions.put(color, tokens);
}
public Map> getRequirements(){
return requiredTokens;
}
public Map> getProductions(){
return producedTokens;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy