Search in sources :

Example 1 with Pojo

use of org.sql2o.reflection.Pojo in project sql2o by aaberg.

the class DefaultResultSetHandlerFactory method getGetter.

@SuppressWarnings("unchecked")
private static Getter getGetter(final Quirks quirks, final String propertyPath, final PojoMetadata metadata) {
    int index = propertyPath.indexOf('.');
    if (index <= 0) {
        // Simple path - fast way
        final Getter getter = metadata.getPropertyGetterIfExists(propertyPath);
        // behavior change: do not throw if POJO contains less properties
        if (getter == null)
            return null;
        final Converter converter = quirks.converterOf(getter.getType());
        // getter without converter
        if (converter == null)
            return getter;
        return new Getter() {

            public Object getProperty(Object obj) {
                try {
                    return converter.convert(getter.getProperty(obj));
                } catch (ConverterException e) {
                    throw new Sql2oException("Error trying to convert column " + propertyPath + " to type " + getter.getType(), e);
                }
            }

            public Class getType() {
                return getter.getType();
            }
        };
    }
    // TODO: rewrite, get rid of POJO class
    return new Getter() {

        public Object getProperty(Object obj) {
            Pojo pojo = new Pojo(metadata, metadata.isCaseSensitive(), obj);
            return pojo.getProperty(propertyPath, quirks);
        }

        public Class getType() {
            // doesn't used anyway
            return Object.class;
        }
    };
}
Also used : ConverterException(org.sql2o.converters.ConverterException) Pojo(org.sql2o.reflection.Pojo) Getter(org.sql2o.reflection.Getter) Converter(org.sql2o.converters.Converter)

Example 2 with Pojo

use of org.sql2o.reflection.Pojo in project sql2o by aaberg.

the class DefaultResultSetHandlerFactory method getSetter.

@SuppressWarnings("unchecked")
private static Setter getSetter(final Quirks quirks, final String propertyPath, final PojoMetadata metadata) {
    int index = propertyPath.indexOf('.');
    if (index <= 0) {
        // Simple path - fast way
        final Setter setter = metadata.getPropertySetterIfExists(propertyPath);
        // behavior change: do not throw if POJO contains less properties
        if (setter == null)
            return null;
        final Converter converter = quirks.converterOf(setter.getType());
        // setter without converter
        if (converter == null)
            return setter;
        return new Setter() {

            public void setProperty(Object obj, Object value) {
                try {
                    setter.setProperty(obj, converter.convert(value));
                } catch (ConverterException e) {
                    throw new Sql2oException("Error trying to convert column " + propertyPath + " to type " + setter.getType(), e);
                }
            }

            public Class getType() {
                return setter.getType();
            }
        };
    }
    // TODO: rewrite, get rid of POJO class
    return new Setter() {

        public void setProperty(Object obj, Object value) {
            Pojo pojo = new Pojo(metadata, metadata.isCaseSensitive(), obj);
            pojo.setProperty(propertyPath, value, quirks);
        }

        public Class getType() {
            // doesn't used anyway
            return Object.class;
        }
    };
}
Also used : ConverterException(org.sql2o.converters.ConverterException) Pojo(org.sql2o.reflection.Pojo) Setter(org.sql2o.reflection.Setter) Converter(org.sql2o.converters.Converter)

Aggregations

Converter (org.sql2o.converters.Converter)2 ConverterException (org.sql2o.converters.ConverterException)2 Pojo (org.sql2o.reflection.Pojo)2 Getter (org.sql2o.reflection.Getter)1 Setter (org.sql2o.reflection.Setter)1