Class AlgorithmRegistryImpl

    • Constructor Detail

      • AlgorithmRegistryImpl

        public AlgorithmRegistryImpl()
        Default constructor.
      • AlgorithmRegistryImpl

        public AlgorithmRegistryImpl​(List<Algorithm> registry)
        Constructor setting up the registry according to the supplied list.

        Note: a copy of the supplied registry is made.

        Parameters:
        registry - initial contents of the registry
    • Method Detail

      • register

        public void register​(Algorithm algorithm)
        Registers the given algorithm in the registry.
        Parameters:
        algorithm - the algorithm to register
      • unregister

        public void unregister​(String algorithmUri)
        Removes the given algorithm from the registry.
        Parameters:
        algorithmUri - the algorithm URI
      • getAlgorithm

        public Algorithm getAlgorithm​(String algorithmUri)
        Gets the algorithm based on its URI.
        Specified by:
        getAlgorithm in interface AlgorithmRegistry
        Parameters:
        algorithmUri - the algorithm URI
        Returns:
        the algorithm, or null if none is found
      • getAlgorithm

        public <T extends Algorithm> T getAlgorithm​(String algorithmUri,
                                                    Class<T> clazz)
        Gets an algorithm based on its URI and type.
        Specified by:
        getAlgorithm in interface AlgorithmRegistry
        Type Parameters:
        T - the algorithm type
        Parameters:
        algorithmUri - the algorithm URI
        clazz - the type representing the algorithm
        Returns:
        the algorithm, or null if none is found
      • getAlgorithm

        public <T extends Algorithm> T getAlgorithm​(Predicate<Algorithm> predicate,
                                                    Class<T> clazz)
        Gets the first algorithm that matches the given type and supplied predicate.

        If more than one algorithm matches the supplied predicate, the one with the lowest order is returned.

        Specified by:
        getAlgorithm in interface AlgorithmRegistry
        Parameters:
        predicate - the predicate to apply
        clazz - the type representing the algorithm
        Returns:
        an Algorithm or null if no algorithms in the registry matches
        See Also:
        AlgorithmPredicates
      • getAlgorithm

        public Algorithm getAlgorithm​(Predicate<Algorithm> predicate)
        Gets the first algorithm that matches the supplied predicate.

        If more than one algorithm matches the supplied predicate, the one with the lowest order is returned.

        Specified by:
        getAlgorithm in interface AlgorithmRegistry
        Parameters:
        predicate - the predicate to apply
        Returns:
        an Algorithm or null if no algorithms in the registry matches
        See Also:
        AlgorithmPredicates
      • getAlgorithms

        public List<Algorithm> getAlgorithms​(Predicate<Algorithm> predicate)
        Gets all algorithms that matches the supplied predicate.

        The list is sorted with the lowest algorithms with the lowest order index first.

        Specified by:
        getAlgorithms in interface AlgorithmRegistry
        Parameters:
        predicate - the predicate to apply
        Returns:
        a (possibly empty) list of Algorithm objects
      • getAlgorithms

        public <T extends AlgorithmList<T> getAlgorithms​(Predicate<Algorithm> predicate,
                                                           Class<T> clazz)
        Gets all algorithms that matches the given type and the supplied predicate.

        The list is sorted with the lowest algorithms with the lowest order index first.

        Specified by:
        getAlgorithms in interface AlgorithmRegistry
        Parameters:
        predicate - the predicate to apply
        clazz - the type representing the algorithm
        Returns:
        a (possibly empty) list of Algorithm objects