Package xyz.cofe.typeconv
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.ClassSetclassesМножество классов - узлов графа для преобрвзования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 Summary
Constructors Constructor Description TypeCastGraph()Конструктор по умолчаниюTypeCastGraph(TypeCastGraph src)Конструктор копирования -
Method Summary
Modifier and Type Method Description <TARGET> TARGETcast(java.lang.Object value, java.lang.Class<TARGET> targetType)Преборазования значенияjava.lang.Objectcast(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)Преборазования значенияTypeCastGraphclone()Клонирование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()Создание конвертора ребро графа -> весSequenceCastercreateSequenceCaster(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 voidonNodeAdded(java.lang.Class type)protected voidonNodeRemoved(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, setEdgesMethods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
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
Конструктор копирования- Parameters:
src- конструктор
-
-
Method Details
-
clone
Клонирование- Overrides:
clonein classjava.lang.Object- Returns:
- клон
-
onNodeAdded
protected void onNodeAdded(java.lang.Class type)- Overrides:
onNodeAddedin classxyz.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:
onNodeRemovedin classxyz.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- Созданные SequenceCastercastedConvertor- Function который удачно отработалfailedCastConvertor- Function который не удачно отработал- Returns:
- Преобразованное значение
- Throws:
java.lang.ClassCastException- если невозможно преобразование
-