Class ScriptRepository


  • public class ScriptRepository
    extends Object
    Class to manage indexing and lookup of rule scripts by rule name and by either class or interface name
    • Constructor Detail

      • ScriptRepository

        public ScriptRepository​(boolean skipOverrideRules)
    • Method Detail

      • processScripts

        public List<RuleScript> processScripts​(String scriptText,
                                               String scriptFile)
                                        throws Exception
        Split the text of a script file into a list of individual rule scripts
        Parameters:
        scriptText - the text obtained from a script file
        scriptFile - teh name of the file containing teh text
        Returns:
        a list of rule scripts
        Throws:
        Exception - if there is an error in the format of the script file tesxt
      • addScript

        public RuleScript addScript​(RuleScript script)
        add a rule script to the repository returning any existing script with the same name or null if no such script can be found. if a script is returned it will have been deactivated.
        Parameters:
        script - the script to be added to the repository
        Returns:
        any previous script with the same name or null
      • removeScript

        public RuleScript removeScript​(RuleScript script)
        remove a rule script from the repository returning the script if it is found or null if is not found. if a script is returned it will have been deactivated.
        Parameters:
        script - the script to be removed from the repository.
        Returns:
        the script if it was found in the repository and removed successfully or null if it had already been removed.
      • removeScript

        public RuleScript removeScript​(String name)
        remove a rule script from the repository by name returning the script if it is found or null if is not found. if a script is returned it will have been deactivated.
        Parameters:
        name - the name of the script to be removed from the repository
        Returns:
        the script if it was found in the repository or null if none was found
      • scriptForRuleName

        public RuleScript scriptForRuleName​(String name)
        locate a rule script with a given name
        Parameters:
        name - the name of the rule script
        Returns:
        the script with that name or null if no such script can be found
      • scriptsForClassName

        public List<RuleScript> scriptsForClassName​(String name)
        return a list of all class scripts indexed using the supplied name. note that if name is package qualified then only scripts with the full package qualificaton will be returned whereas if name is not package qualified then only scripts with the unqualified name will be returned. Note that the returned list can be iterated safely but will not reflect later additions to or deletions from the list.
        Parameters:
        name - the name of the class for which scripts should be listed
        Returns:
        the list of scripts for that name
      • scriptsForInterfaceName

        public List<RuleScript> scriptsForInterfaceName​(String name)
        return a list of all interface scripts indexed using the supplied name. note that if name is package qualified then only scripts with the full package qualificaton will be returned whereas if name is not package qualified then only scripts with the unqualified name will be returned. Note that the returned list can be iterated safely but will not reflect later additions to or deletions from the list.
        Parameters:
        name - the name of the interface for which scripts should be listed
        Returns:
        the list of scripts for that name
      • matchClass

        public boolean matchClass​(Class<?> clazz)
                           throws Exception
        return true if there is a rule which applies to the supplied class otherwise false
        Parameters:
        clazz - the name of the class for which rules are being sought
        Returns:
        true if there is a rule which applies
        Throws:
        Exception - if an error occurs during class lookup
      • currentRules

        public List<RuleScript> currentRules()
        return a list containing all the currently installed rule scripts.
        Returns:
        the list of all installed scripts
      • checkInterfaces

        public boolean checkInterfaces()
        see if we need to do any transformation of interfaces
        Returns:
        true if there are any interface rules false if there are none
      • skipOverrideRules

        public boolean skipOverrideRules()
        check whether any overriding rules are currently loaded
        Returns:
        true if there are no overriding rules false if there are any