Search in sources :

Example 6 with Converters

use of org.jnosql.artemis.Converters in project jnosql-artemis by eclipse.

the class ConverterUtil method getValue.

public static Object getValue(Object value, ClassRepresentation representation, String name, Converters converters) {
    Optional<FieldRepresentation> fieldOptional = representation.getFieldRepresentation(name);
    if (fieldOptional.isPresent()) {
        FieldRepresentation field = fieldOptional.get();
        Field nativeField = field.getNativeField();
        if (!nativeField.getType().equals(value.getClass())) {
            return field.getConverter().map(converters::get).map(a -> a.convertToDatabaseColumn(value)).orElseGet(() -> Value.of(value).get(nativeField.getType()));
        }
        return field.getConverter().map(converters::get).map(a -> a.convertToDatabaseColumn(value)).orElse(value);
    }
    return value;
}
Also used : FieldRepresentation(org.jnosql.artemis.reflection.FieldRepresentation) Converters(org.jnosql.artemis.Converters) ClassRepresentation(org.jnosql.artemis.reflection.ClassRepresentation) FieldRepresentation(org.jnosql.artemis.reflection.FieldRepresentation) Value(org.jnosql.diana.api.Value) Optional(java.util.Optional) Field(java.lang.reflect.Field) Field(java.lang.reflect.Field)

Aggregations

Converters (org.jnosql.artemis.Converters)6 ClassRepresentations (org.jnosql.artemis.reflection.ClassRepresentations)4 Reflections (org.jnosql.artemis.reflection.Reflections)4 Field (java.lang.reflect.Field)2 Optional (java.util.Optional)2 Repository (org.jnosql.artemis.Repository)2 RepositoryAsync (org.jnosql.artemis.RepositoryAsync)2 ClassRepresentation (org.jnosql.artemis.reflection.ClassRepresentation)2 FieldRepresentation (org.jnosql.artemis.reflection.FieldRepresentation)2 Value (org.jnosql.diana.api.Value)2 ColumnTemplate (org.jnosql.artemis.column.ColumnTemplate)1 ColumnTemplateAsync (org.jnosql.artemis.column.ColumnTemplateAsync)1 DocumentTemplate (org.jnosql.artemis.document.DocumentTemplate)1 DocumentTemplateAsync (org.jnosql.artemis.document.DocumentTemplateAsync)1