package org.jboss.windup.tooling.rules; import java.io.Serializable; import java.util.Calendar; import java.util.List; import java.util.Set; public interface RuleProvider extends Serializable { /** * Contains a version field used for conflict resolution. */ int getVersion(); /** * Contains a version field used for conflict resolution. */ void setVersion(int version); /** * Contains the ID from the Rule Provider. This should be unique across all rule providers. */ String getProviderID(); /** * Contains the ID from the Rule Provider. This should be unique across all rule providers. */ void setProviderID(String providerID); /** * Contains the origin of the Rule Provider. For an XML File, this will be a full path to the file. */ String getOrigin(); /** * Contains the origin of the Rule Provider. For an XML File, this will be a full path to the file. */ void setOrigin(String origin); /** * Contains a human readable description of this rule provider. */ String getDescription(); /** * Contains a human readable description of this rule provider. */ void setDescription(String description); /** * Contains the phase during which this rule will execute. */ String getPhase(); /** * Contains the phase during which this rule will execute. */ void setPhase(String phase); /** * Contains the time that this rule's metadata was loaded into the windup-web database. */ Calendar getDateLoaded(); /** * Contains the time that this rule's metadata was loaded into the windup-web database. */ void setDateLoaded(Calendar dateLoaded); /** * Contains the time that this rule's metadata was last modified on disk. This may be null if no modification date could be determined. */ Calendar getDateModified(); /** * Contains the time that this rule's metadata was last modified on disk. This may be null if no modification date could be determined. */ void setDateModified(Calendar dateModified); /** * Contains the source technologies for this provider. */ Set<Technology> getSources(); /** * Contains the source technologies for this provider. */ void setSources(Set<Technology> sources); /** * Contains the target technologies for this provider. */ Set<Technology> getTargets(); /** * Contains the source technologies for this provider. */ void setTargets(Set<Technology> targets); /** * Contains the list of rules that were loaded by this provider. */ List<Rule> getRules(); /** * Contains the list of rules that were loaded by this provider. */ void setRules(List<Rule> rules); /** * Contains the path in which this provider was found. */ RulesPath getRulesPath(); /** * Contains the path in which this provider was found. */ void setRulesPath(RulesPath rulesPath); /** * Contains the type of provider (for example, Java vs Groovy). */ RuleProviderType getRuleProviderType(); /** * Contains the type of provider (for example, Java vs Groovy). */ void setRuleProviderType(RuleProviderType ruleProviderType); enum RuleProviderType { JAVA, XML, GROOVY } }