Class TypeCastGraph

java.lang.Object
xyz.cofe.collection.graph.SimpleSDGraph<java.lang.Class,​java.util.function.Function<java.lang.Object,​java.lang.Object>>
xyz.cofe.typeconv.TypeCastGraph
All Implemented Interfaces:
xyz.cofe.collection.graph.DirectedGraph, xyz.cofe.collection.graph.Graph<java.lang.Class,​java.util.function.Function<java.lang.Object,​java.lang.Object>>, xyz.cofe.collection.graph.SingleDirectedGraph<java.lang.Class,​java.util.function.Function<java.lang.Object,​java.lang.Object>>, xyz.cofe.collection.graph.SingleGraph<java.lang.Class,​java.util.function.Function<java.lang.Object,​java.lang.Object>>, xyz.cofe.ecolls.GetReadLock, xyz.cofe.ecolls.GetWriteLock, xyz.cofe.ecolls.ReadWriteLockSupport, xyz.cofe.scn.LongScn<xyz.cofe.collection.graph.SimpleSDGraph<java.lang.Class,​java.util.function.Function<java.lang.Object,​java.lang.Object>>,​java.lang.Void>, xyz.cofe.scn.Scn<xyz.cofe.collection.graph.SimpleSDGraph<java.lang.Class,​java.util.function.Function<java.lang.Object,​java.lang.Object>>,​java.lang.Long,​java.lang.Void>
Direct Known Subclasses:
BaseCastGraph

public class TypeCastGraph
extends xyz.cofe.collection.graph.SimpleSDGraph<java.lang.Class,​java.util.function.Function<java.lang.Object,​java.lang.Object>>
Граф преобразования данных из одног типа в другой
  • Field Summary

    Fields 
    Modifier and Type Field Description
    protected xyz.cofe.collection.ClassSet classes
    Множество классов - узлов графа для преобрвзования
    protected java.util.function.Function<xyz.cofe.collection.graph.Edge<java.lang.Class,​java.util.function.Function<java.lang.Object,​java.lang.Object>>,​java.lang.Double> edgeWeightConvertor  

    Fields inherited from class xyz.cofe.collection.graph.SimpleSDGraph

    edges, factory, nodes
  • Constructor Summary

    Constructors 
    Constructor Description
    TypeCastGraph()
    Конструктор по умолчанию
    TypeCastGraph​(TypeCastGraph src)
    Конструктор копирования
  • Method Summary

    Modifier and Type Method Description
    <TARGET> TARGET cast​(java.lang.Object value, java.lang.Class<TARGET> targetType)
    Преборазования значения
    java.lang.Object cast​(java.lang.Object value, java.lang.Class targetType, java.util.function.Consumer<SequenceCaster> newSeqCasters, java.util.function.Consumer<java.util.function.Function<java.lang.Object,​java.lang.Object>> castedConvertor, java.util.function.Consumer<xyz.cofe.fn.Pair<java.util.function.Function<java.lang.Object,​java.lang.Object>,​java.lang.Throwable>> failedCastConvertor)
    Преборазования значения
    TypeCastGraph clone()
    Клонирование
    java.util.function.Function<xyz.cofe.collection.graph.Edge<java.lang.Class,​java.util.function.Function<java.lang.Object,​java.lang.Object>>,​java.lang.Double> createEdgeWeight()
    Создание конвертора ребро графа -> вес
    SequenceCaster createSequenceCaster​(xyz.cofe.collection.graph.Path<java.lang.Class,​java.util.function.Function<java.lang.Object,​java.lang.Object>> path)
    Создание Caster для цепочки преобразований
    xyz.cofe.collection.graph.Path<java.lang.Class,​java.util.function.Function<java.lang.Object,​java.lang.Object>> findPath​(java.lang.Class from, java.lang.Class to)
    Поиск пути цепочки преобразований.
    xyz.cofe.collection.graph.Path<java.lang.Class,​java.util.function.Function<java.lang.Object,​java.lang.Object>> findPath​(java.lang.Class from, java.lang.Class to, java.util.function.Predicate<xyz.cofe.collection.graph.Path<java.lang.Class,​java.util.function.Function<java.lang.Object,​java.lang.Object>>> filter)
    Поиск пути цепочки преобразований.
    java.util.List<java.lang.Class> findStartNode​(java.lang.Class type, boolean strongCompare, boolean childToParent, boolean incParent, boolean incChildren)
    Получение начального узла преобразований
    java.util.List<xyz.cofe.collection.graph.Path<java.lang.Class,​java.util.function.Function<java.lang.Object,​java.lang.Object>>> getCastPaths​(java.lang.Class fromType, java.lang.Class targetType)
    Получение возможных путей преобразования
    java.util.function.Function<xyz.cofe.collection.graph.Edge<java.lang.Class,​java.util.function.Function<java.lang.Object,​java.lang.Object>>,​java.lang.Double> getEdgeWeight()
    Получение конвертора ребра графа в его вес
    protected void onNodeAdded​(java.lang.Class type)  
    protected void onNodeRemoved​(java.lang.Class type)  

    Methods inherited from class xyz.cofe.collection.graph.SimpleSDGraph

    add, add, clearAll, clearEdges, contains, edgesOf, edgesOfNodeA, edgesOfNodeB, get, getEdge, getEdges, getEdges, getNodes, hasEdge, indexOf, onEdgeAdded, onEdgeRemoved, remove, remove, removeEdge, scnListenerHelper, set, setEdge, setEdges

    Methods inherited from class java.lang.Object

    equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface xyz.cofe.scn.LongScn

    nextscn, nextscn, scn

    Methods inherited from interface xyz.cofe.ecolls.ReadWriteLockSupport

    getReadLock, getWriteLock, readLock, readLock, writeLock, writeLock

    Methods inherited from interface xyz.cofe.scn.Scn

    addScnChangedListener, addScnChangedListener, fireScnChanged, fireScnChanged, getScnChangedListeners, hasScnChangedListener, onScn, removeAllScnChangedListeners, removeScnChangedListener, scn, scn
  • Field Details

    • classes

      protected xyz.cofe.collection.ClassSet classes
      Множество классов - узлов графа для преобрвзования
    • edgeWeightConvertor

      protected java.util.function.Function<xyz.cofe.collection.graph.Edge<java.lang.Class,​java.util.function.Function<java.lang.Object,​java.lang.Object>>,​java.lang.Double> edgeWeightConvertor
  • Constructor Details

    • TypeCastGraph

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

      public TypeCastGraph​(TypeCastGraph src)
      Конструктор копирования
      Parameters:
      src - конструктор
  • Method Details

    • clone

      public TypeCastGraph clone()
      Клонирование
      Overrides:
      clone in class java.lang.Object
      Returns:
      клон
    • onNodeAdded

      protected void onNodeAdded​(java.lang.Class type)
      Overrides:
      onNodeAdded in class xyz.cofe.collection.graph.SimpleSDGraph<java.lang.Class,​java.util.function.Function<java.lang.Object,​java.lang.Object>>
    • onNodeRemoved

      protected void onNodeRemoved​(java.lang.Class type)
      Overrides:
      onNodeRemoved in class xyz.cofe.collection.graph.SimpleSDGraph<java.lang.Class,​java.util.function.Function<java.lang.Object,​java.lang.Object>>
    • findStartNode

      public java.util.List<java.lang.Class> findStartNode​(java.lang.Class type, boolean strongCompare, boolean childToParent, boolean incParent, boolean incChildren)
      Получение начального узла преобразований
      Parameters:
      type - Искомый тип
      strongCompare - true - жесткое сравнение типов; false - использование конструкции instanceof в сравнении
      childToParent - true - последовательность в порядке от дочерних классов, к родительскому классу
      false - обратная последовательность: в порядке от родительского класса к дочерним
      incParent - true - включать в поиск родитеслькие классы
      incChildren - true - включать в поиск дочерние классы
      Returns:
      Перечень классов удовлетворяющих критерию поиска
    • createEdgeWeight

      public java.util.function.Function<xyz.cofe.collection.graph.Edge<java.lang.Class,​java.util.function.Function<java.lang.Object,​java.lang.Object>>,​java.lang.Double> createEdgeWeight()
      Создание конвертора ребро графа -> вес
      Returns:
      конвертор ребр графа в их веса
    • getEdgeWeight

      public java.util.function.Function<xyz.cofe.collection.graph.Edge<java.lang.Class,​java.util.function.Function<java.lang.Object,​java.lang.Object>>,​java.lang.Double> getEdgeWeight()
      Получение конвертора ребра графа в его вес
      Returns:
      конвертор ребр графа в веса
    • findPath

      public xyz.cofe.collection.graph.Path<java.lang.Class,​java.util.function.Function<java.lang.Object,​java.lang.Object>> findPath​(java.lang.Class from, java.lang.Class to)
      Поиск пути цепочки преобразований. Возвращает наименьший по длине путь преобразования типа
      Parameters:
      from - класс начала пути преобразования
      to - конечный класс пути преобразования
      Returns:
      путь или null
    • findPath

      public xyz.cofe.collection.graph.Path<java.lang.Class,​java.util.function.Function<java.lang.Object,​java.lang.Object>> findPath​(java.lang.Class from, java.lang.Class to, java.util.function.Predicate<xyz.cofe.collection.graph.Path<java.lang.Class,​java.util.function.Function<java.lang.Object,​java.lang.Object>>> filter)
      Поиск пути цепочки преобразований. Возвращает наименьший по длине путь преобразования типа
      Parameters:
      from - класс начала пути преобразования
      to - конечный класс пути преобразования
      filter - Фильтр или null
      Returns:
      путь или null
    • createSequenceCaster

      public SequenceCaster createSequenceCaster​(xyz.cofe.collection.graph.Path<java.lang.Class,​java.util.function.Function<java.lang.Object,​java.lang.Object>> path)
      Создание Caster для цепочки преобразований
      Parameters:
      path - цепочка преобразований
      Returns:
      caster
    • getCastPaths

      public java.util.List<xyz.cofe.collection.graph.Path<java.lang.Class,​java.util.function.Function<java.lang.Object,​java.lang.Object>>> getCastPaths​(java.lang.Class fromType, java.lang.Class targetType)
      Получение возможных путей преобразования
      Parameters:
      fromType - Исходный тип данных
      targetType - Конечный тип данных
      Returns:
      Цепочки преобразований
    • cast

      public <TARGET> TARGET cast​(java.lang.Object value, java.lang.Class<TARGET> targetType)
      Преборазования значения
      Type Parameters:
      TARGET - Тип данных который хотим получить
      Parameters:
      value - Исходное значение
      targetType - Целевой тип
      Returns:
      Преобразованное значение
      Throws:
      java.lang.ClassCastException - если невозможно преобразование
    • cast

      public java.lang.Object cast​(java.lang.Object value, java.lang.Class targetType, java.util.function.Consumer<SequenceCaster> newSeqCasters, java.util.function.Consumer<java.util.function.Function<java.lang.Object,​java.lang.Object>> castedConvertor, java.util.function.Consumer<xyz.cofe.fn.Pair<java.util.function.Function<java.lang.Object,​java.lang.Object>,​java.lang.Throwable>> failedCastConvertor)
      Преборазования значения
      Parameters:
      value - Исходное значение
      targetType - Целевой тип
      newSeqCasters - Созданные SequenceCaster
      castedConvertor - Function который удачно отработал
      failedCastConvertor - Function который не удачно отработал
      Returns:
      Преобразованное значение
      Throws:
      java.lang.ClassCastException - если невозможно преобразование