package org.jboss.windup.config.metadata; import java.util.Collections; import java.util.HashSet; import java.util.Set; import org.jboss.forge.furnace.addons.AddonId; import org.jboss.forge.furnace.util.Assert; import org.jboss.forge.furnace.util.Strings; /** * Base class for constructing {@link RulesetMetadata} instances. Provides sensible defaults. * * @author <a href="mailto:lincolnbaxter@gmail.com">Lincoln Baxter, III</a> */ public class AbstractRulesetMetadata implements RulesetMetadata { private final String id; /** * Construct a new {@link AbstractRulesetMetadata} instance using the given {@link String} ID. */ public AbstractRulesetMetadata(String id) { Assert.notNull(id, "Ruleset ID must not be null."); this.id = id; } @Override public String getID() { return id; } @Override public String getDescription() { return ""; } @Override public String getOrigin() { return getClass().getClassLoader().toString(); } @Override public Set<String> getTags() { return Collections.emptySet(); } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((id == null) ? 0 : id.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; AbstractRulesetMetadata other = (AbstractRulesetMetadata) obj; if (id == null) { if (other.id != null) return false; } else if (!id.equals(other.id)) return false; return true; } @Override public boolean hasTags(String tag, String... tags) { Set<String> expected = new HashSet<>(); if (!Strings.isNullOrEmpty(tag)) expected.add(tag); if (tags != null) { for (String t : tags) { if (!Strings.isNullOrEmpty(tag)) expected.add(t); } } return getTags().containsAll(expected); } @Override public Set<TechnologyReference> getSourceTechnologies() { return Collections.emptySet(); } @Override public Set<TechnologyReference> getTargetTechnologies() { return Collections.emptySet(); } @Override public Set<AddonId> getRequiredAddons() { return Collections.emptySet(); } @Override public String toString() { return "RulesetMetadata [" + "\tid=" + id + ", " + "\tdescription=" + getDescription() + ", " + "\torigin=" + getOrigin() + ", " + "\ttags=" + getTags() + ", " + "\tsourceTechnologies=" + getSourceTechnologies() + ", " + "\ttargetTechnologies=" + getTargetTechnologies() + "" + "]"; } }