// This product is provided under the terms of EPL (Eclipse Public License)
// version 1.0.
//
// The full license text can be read from: http://www.eclipse.org/org/documents/epl-v10.php
package org.dtangler.core.ruleanalysis;
import org.dtangler.core.configuration.Group;
import org.dtangler.core.dependencies.Dependable;
import org.dtangler.core.util.WildcardMatch;
public class GroupRuleMember implements RuleMember {
Group group;
public GroupRuleMember(Group group) {
super();
this.group = group;
}
public boolean appliesTo(Dependable dependable) {
if (group.getGroupItems().contains(dependable.getFullyQualifiedName()))
return true;
for (String groupItem : group.getGroupItems()) {
if (!isExcluded(dependable.getFullyQualifiedName())) {
if (new WildcardMatch(groupItem).isMatch(dependable
.getFullyQualifiedName()))
return true;
}
}
return false;
}
private boolean isExcluded(String dependable) {
for (String excludedItem : group.getExcludedItems()) {
if (new WildcardMatch(excludedItem).isMatch(dependable))
return true;
if (excludedItem.equals(dependable))
return true;
}
return false;
}
public String getName() {
return group.getName();
}
@Override
public String toString() {
return group.toString();
}
@Override
public int hashCode() {
return 31 + group.hashCode();
}
@Override
public boolean equals(Object obj) {
if (!(obj instanceof GroupRuleMember))
return false;
final GroupRuleMember other = (GroupRuleMember) obj;
return (group.equals(other.group));
}
}