/*
* Copyright 2010 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.drools.verifier.components;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.drools.compiler.lang.descr.BaseDescr;
import org.drools.verifier.components.Consequence.ConsequenceType;
import org.drools.verifier.report.components.Cause;
public class VerifierRule extends PackageComponent
implements
Cause {
private Map<String, String> attributes = new HashMap<String, String>();
private String consequencePath;
private ConsequenceType consequenceType;
private int lineNumber;
private int packageId;
private String name;
private Collection<String> header = new ArrayList<String>();
private Collection<String> lhsRows = new ArrayList<String>();
private Collection<String> rhsRows = new ArrayList<String>();
private String description;
private Map<String, Map<String,String>> metadata = new HashMap<String, Map<String,String>>();
private Collection<String> commentMetadata = new ArrayList<String>();
private Map<String, List<String>> otherInfo = new HashMap<String, List<String>>();
private int offset = 0;
private final Map<String, Object> namedConsequences;
public VerifierRule(BaseDescr descr, RulePackage rulePackage, Map<String, Object> namedConsequences) {
super(descr, rulePackage );
this.namedConsequences = namedConsequences;
}
@Override
public String getPath() {
return String.format( "%s/rule[@name='%s']",
getPackagePath(),
getName() );
}
public int getOffset() {
offset++;
return offset % 2;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setAttributes(Map<String, String> attributes) {
this.attributes = attributes;
}
public Map<String, String> getAttributes() {
return attributes;
}
public String getConsequencePath() {
return consequencePath;
}
public void setConsequencePath(String consequencePath) {
this.consequencePath = consequencePath;
}
public ConsequenceType getConsequenceType() {
return consequenceType;
}
public void setConsequenceType(ConsequenceType consequenceType) {
this.consequenceType = consequenceType;
}
public int getLineNumber() {
return lineNumber;
}
public void setLineNumber(int lineNumber) {
this.lineNumber = lineNumber;
}
@Override
public String toString() {
return "Rule '" + getName() + "'";
}
public int getPackageId() {
return packageId;
}
public void setPackageId(int packageId) {
this.packageId = packageId;
}
public VerifierComponentType getVerifierComponentType() {
return VerifierComponentType.RULE;
}
public Collection<String> getHeader() {
return header;
}
public Collection<String> getLhsRows() {
return lhsRows;
}
public Collection<String> getRhsRows() {
return rhsRows;
}
public Map<String, Map<String,String>> getMetadata() {
return metadata;
}
public String getMetaAttribute(String key) {
Map<String,String> elementValues = metadata.get(key);
return elementValues != null ? elementValues.keySet().iterator().next() : null;
}
public Collection<String> getCommentMetadata() {
return commentMetadata;
}
public void setDescription(String description) {
this.description = description;
}
public String getDescription() {
return description;
}
public Map<String, List<String>> getOtherInfo() {
return otherInfo;
}
public Map<String, Object> getNamedConsequences() {
return namedConsequences;
}
}