Class ClassNode

  • All Implemented Interfaces:
    Function, NodesExtracter, LongScn<ClassNode,​Object>, Scn<ClassNode,​Long,​Object>

    public class ClassNode
    extends Object
    implements NodesExtracter, LongScn<ClassNode,​Object>
    Функция "следования" (извлечения) дочерних/связынных объектов из объектов определенного типа.

    Использование:

     ClassNode cn = new ClassNode();
    
     // Определяем функцию извелечения дочерних файлов из каталога
     cn.add( File.class, new NodesExtracter(){ ... } );
    
     // Определяем функцию 1 извелечения элементов из списка
     cn.add( List.class, new NodesExtracter(){ ... } );
    
     // Определяем функцию 2 извелечения элементов из списка в обратном порядке
     cn.add( List.class, new NodesExtracter(){ ... } );
    
     // вернет итератор по элементам,
     // при чем элементы будут возвращены по два раза
     // в прямом и в обратном порядке т.к. определены две функции
     for( Object it : cn.fetch( list ) )
     
    Author:
    Kamnev Georgiy (nt.gocha@gmail.com)
    • Constructor Detail

      • ClassNode

        public ClassNode()
        Конструктор по умочанию
      • ClassNode

        public ClassNode​(ClassNode src)
        Конструктор копирования с блокиовкой
        Parameters:
        src - образец для копирования
    • Method Detail

      • clone

        public ClassNode clone()
        Клонирование
        Overrides:
        clone in class Object
        Returns:
        клон
      • adds

        public <T> ClassNode adds​(Class<T> cls,
                                  NodesExtracter<T,​?>... ne)
        Добавляет функции следования для указанного типа
        Type Parameters:
        T - тип
        Parameters:
        cls - тип
        ne - функции
        Returns:
        self ссылка
      • add

        public Closeable add​(Class cls,
                             NodesExtracter ne)
        Добавляет функцию следования
        Parameters:
        cls - тип
        ne - функция следования
        Returns:
        интерфейс для удаления ассоциации
      • remove

        public void remove​(Class<?> cls,
                           NodesExtracter ne)
        Удаляет функцию следования
        Parameters:
        cls - тип
        ne - функция
      • clear

        public void clear​(Class<?> cls)
        Очищает все функции следования для указанного типа
        Parameters:
        cls - тип
      • clear

        public void clear()
        Очищает все функции следования для указанного типа
      • hasClass

        public boolean hasClass​(Class<?> cls)
        Проверяет наличие функций у указанного типа
        Parameters:
        cls - тип
        Returns:
        true - есть функции
      • getClasses

        public Class[] getClasses()
        Возвращает зарегистрированные типы
        Returns:
        типы
      • getNodeExtracters

        public NodesExtracter[] getNodeExtracters​(Class cls)
        Возвращает функции следования для указанного типа
        Parameters:
        cls - тип
        Returns:
        функции
        See Also:
        Map.get(java.lang.Object)
      • extractersOf

        public NodesExtracter[] extractersOf​(Class<?> cls)
        Возвращает набор функций подходящих для извлечения данных
        Parameters:
        cls - тип данных
        Returns:
        набор подходящих функций
      • fetch

        public Eterable<?> fetch​(Object node)
        Возвращает набор функций подходящих для извлечения данных
        Parameters:
        node - объект из которого происходит извлечение данных
        Returns:
        Объекты которые следуют согласно указанным функциям
      • extract

        public Eterable<?> extract​(Object from)
        Возвращает набор функций подходящих для извлечения данных (синоним fetch).
        Specified by:
        extract in interface NodesExtracter
        Parameters:
        from - объект из которого происходит извлечение данных
        Returns:
        Объекты которые следуют согласно указанным функциям
        See Also:
        fetch(java.lang.Object)