@Override public void handle(PropertyMapping<T, ?, K> propertyMapping) { getter = getterFactory.newGetter(propertyMapping.getPropertyMeta().getPropertyType(), propertyMapping.getColumnKey(), mappingContextFactoryBuilder, propertyMapping.getColumnDefinition().properties()); } }).getter;
public <TT, PP> PropertyMapping<TT, PP, K> propertyMeta(PropertyMeta<TT, PP> propertyMeta) { Object[] definedProperties = propertyMeta.getDefinedProperties(); ColumnDefinition<K, ?> mergeColumnDefintion = definedProperties != null ? this.columnDefinition.newColumnDefinition(definedProperties) : this.columnDefinition; return new PropertyMapping<TT, PP, K>(propertyMeta, columnKey, mergeColumnDefintion); }
@Override public void handle(PropertyMapping<T, ?, K> tkPropertyMapping) { if (tkPropertyMapping.getColumnDefinition().has(IgnoreRowIfNullProperty.class)) { mandatoryKeys.add(tkPropertyMapping.getColumnKey()); } } }).mandatoryKeys;
public static String getterNotFoundErrorMessage(PropertyMapping propertyMapping) { String currentPath = propertyMapping.getPropertyMeta().getPath(); return "Could not find getter for " + propertyMapping.getColumnKey() + " type " + propertyMapping.getPropertyMeta().getPropertyType() + " path " + currentPath + ". See " + CSFM_GETTER_NOT_FOUND.toUrl(); }
@SuppressWarnings("unchecked") private <S, P> ContextualSetter<T, P> getSetterForTarget(PropertyMapping<S, ?, K> pm, ContextFactoryBuilder contextFactoryBuilder) { ContextualSetter<T, P> setter = ContextualSetterAdapter.of((Setter<T, P>) pm.getColumnDefinition().getCustomSetterTo(targetType)); final SetterFactory<T, PropertyMapping<?, ?, K>> customSetterFactory = (SetterFactory<T, PropertyMapping<?, ?, K>>) pm.getColumnDefinition().getCustomSetterFactoryTo(targetType); if (customSetterFactory != null) { setter = ContextualSetterAdapter.<T, P>of(customSetterFactory.<P>getSetter(pm)); } if (setter == null){ setter = setterFactory.getSetter(pm, contextFactoryBuilder); } if (setter == null) { if (!pm.getPropertyMeta().isSelf()) { final ClassMeta<?> propertyClassMeta = pm.getPropertyMeta().getPropertyClassMeta(); if (propertyClassMeta instanceof ObjectClassMeta) { ObjectClassMeta<P> ocm = (ObjectClassMeta<P>) propertyClassMeta; if (ocm.getNumberOfProperties() == 1) { PropertyMeta<P, ?> subProp = ocm.getFirstProperty(); ContextualSetter<T, Object> subSetter = getSetterForTarget(pm.propertyMeta(subProp), contextFactoryBuilder); if (subSetter != null) { return new ContextualSetterOnGetter<T, Object, P>(subSetter, (Getter<P, Object>) subProp.getGetter()); } } } } } return setter; }
public List<K> getKeys() { modifiable = false; List<K> keys = new ArrayList<K>(properties.size()); for (PropertyMapping<T, ?, K> propMapping : properties) { if (propMapping != null) { keys.add(propMapping.getColumnKey()); } else { keys.add(null); } } return keys; }
private <P, C> MultiIndexFieldMapper<T> newCollectionFieldMapper(PropertyMapping<T, P, JdbcColumnKey> pm) { PropertyMeta<T, ?> propertyMeta = pm.getPropertyMeta(); IndexedGetter<C, P> indexedGetter; IntGetter<? super C> sizeGetter; Getter<T, C> collectionGetter = (Getter<T, C>) propertyMeta.getGetter(); if (TypeHelper.isAssignable(List.class, propertyMeta.getPropertyType())) { indexedGetter = (IndexedGetter<C, P>) new ListIndexedGetter<P>(); sizeGetter = (IntGetter<C>) new ListSizeGetter(); } else if (TypeHelper.isArray(propertyMeta.getPropertyType())) { indexedGetter = (IndexedGetter<C, P>) new ArrayIndexedGetter<P>(); sizeGetter = new ArraySizeGetter(); } else { throw new IllegalArgumentException("Unexpected elementMeta" + propertyMeta); } PropertyMeta<C, P> childProperty = (PropertyMeta<C, P>) pm.getPropertyMeta().getPropertyClassMeta().newPropertyFinder().findProperty(DefaultPropertyNameMatcher.of("0"), pm.getColumnDefinition().properties(), pm.getColumnKey(), ConstantPredicate.<PropertyMeta<?, ?>>truePredicate()); final PropertyMapping<C, P, JdbcColumnKey> pmchildProperttMeta = pm.propertyMeta(childProperty); ContextualIndexedSetter<PreparedStatement, P> setter = getSetter(pmchildProperttMeta); return new CollectionIndexFieldMapper<T, C, P>(setter, collectionGetter, sizeGetter, indexedGetter); }
@Override public void handle(PropertyMapping<T, ?, JdbcColumnKey> pm) { hasMultiIndex |= isMultiIndex(pm.getPropertyMeta()); }
private boolean isTargetForMapperFieldMapper(PropertyMapping pm) { return pm.getPropertyMeta().isSubProperty() || (JoinUtils.isArrayElement(pm.getPropertyMeta()) && pm.getColumnDefinition().isKey()); }
@SuppressWarnings("unchecked") private <P, I> ContextualIndexedSetter<PreparedStatement, P> getSetterWithConvertion(Class<P> pclazz, Class<I> iclass, ContextFactoryBuilder contextFactoryBuilder, PropertyMapping<?, ?, JdbcColumnKey> pm) { ContextualConverter<? super P, ? extends I> converter = ConverterService.getInstance().findConverter(pclazz, iclass, contextFactoryBuilder, pm.getColumnDefinition().properties()); if (converter != null) { ContextualIndexedSetter<PreparedStatement, I> indexedSetter = getIndexedSetter(iclass, pm, contextFactoryBuilder); if (indexedSetter != null) { return new ConvertDelegateIndexSetter<P, I>(indexedSetter, converter); } } return null; }
@SuppressWarnings("unchecked") private <S, P> ContextualSetter<T, P> getSetterForTarget(PropertyMapping<S, ?, K> pm, ContextFactoryBuilder contextFactoryBuilder) { ContextualSetter<T, P> setter = ContextualSetterAdapter.of((Setter<T, P>) pm.getColumnDefinition().getCustomSetterTo(targetType)); final SetterFactory<T, PropertyMapping<?, ?, K>> customSetterFactory = (SetterFactory<T, PropertyMapping<?, ?, K>>) pm.getColumnDefinition().getCustomSetterFactoryTo(targetType); if (customSetterFactory != null) { setter = ContextualSetterAdapter.<T, P>of(customSetterFactory.<P>getSetter(pm)); } if (setter == null){ setter = setterFactory.getSetter(pm, contextFactoryBuilder); } if (setter == null) { if (!pm.getPropertyMeta().isSelf()) { final ClassMeta<?> propertyClassMeta = pm.getPropertyMeta().getPropertyClassMeta(); if (propertyClassMeta instanceof ObjectClassMeta) { ObjectClassMeta<P> ocm = (ObjectClassMeta<P>) propertyClassMeta; if (ocm.getNumberOfProperties() == 1) { PropertyMeta<P, ?> subProp = ocm.getFirstProperty(); ContextualSetter<T, Object> subSetter = getSetterForTarget(pm.propertyMeta(subProp), contextFactoryBuilder); if (subSetter != null) { return new ContextualSetterOnGetter<T, Object, P>(subSetter, (Getter<P, Object>) subProp.getGetter()); } } } } } return setter; }
public List<K> getKeys() { modifiable = false; List<K> keys = new ArrayList<K>(properties.size()); for (PropertyMapping<T, ?, K> propMapping : properties) { if (propMapping != null) { keys.add(propMapping.getColumnKey()); } else { keys.add(null); } } return keys; }
private <P, C> MultiIndexFieldMapper<T> newCollectionFieldMapper(PropertyMapping<T, P, JdbcColumnKey> pm) { PropertyMeta<T, ?> propertyMeta = pm.getPropertyMeta(); IndexedGetter<C, P> indexedGetter; IntGetter<? super C> sizeGetter; Getter<T, C> collectionGetter = (Getter<T, C>) propertyMeta.getGetter(); if (TypeHelper.isAssignable(List.class, propertyMeta.getPropertyType())) { indexedGetter = (IndexedGetter<C, P>) new ListIndexedGetter<P>(); sizeGetter = (IntGetter<C>) new ListSizeGetter(); } else if (TypeHelper.isArray(propertyMeta.getPropertyType())) { indexedGetter = (IndexedGetter<C, P>) new ArrayIndexedGetter<P>(); sizeGetter = new ArraySizeGetter(); } else { throw new IllegalArgumentException("Unexpected elementMeta" + propertyMeta); } PropertyMeta<C, P> childProperty = (PropertyMeta<C, P>) pm.getPropertyMeta().getPropertyClassMeta().newPropertyFinder().findProperty(DefaultPropertyNameMatcher.of("0"), pm.getColumnDefinition().properties(), pm.getColumnKey(), ConstantPredicate.<PropertyMeta<?, ?>>truePredicate()); final PropertyMapping<C, P, JdbcColumnKey> pmchildProperttMeta = pm.propertyMeta(childProperty); ContextualIndexedSetter<PreparedStatement, P> setter = getSetter(pmchildProperttMeta); return new CollectionIndexFieldMapper<T, C, P>(setter, collectionGetter, sizeGetter, indexedGetter); }
@Override public void handle(PropertyMapping<T, ?, K> tkPropertyMapping) { if (tkPropertyMapping.getColumnDefinition().has(IgnoreRowIfNullProperty.class)) { mandatoryKeys.add(tkPropertyMapping.getColumnKey()); } } }).mandatoryKeys;
@Override public void handle(PropertyMapping<T, ?, JdbcColumnKey> pm) { hasMultiIndex |= isMultiIndex(pm.getPropertyMeta()); }
private boolean isTargetForMapperFieldMapper(PropertyMapping pm) { return pm.getPropertyMeta().isSubProperty() || (JoinUtils.isArrayElement(pm.getPropertyMeta()) && pm.getColumnDefinition().isKey()); }
public static String getterNotFoundErrorMessage(PropertyMapping propertyMapping) { String currentPath = propertyMapping.getPropertyMeta().getPath(); return "Could not find getter for " + propertyMapping.getColumnKey() + " type " + propertyMapping.getPropertyMeta().getPropertyType() + " path " + currentPath + ". See " + CSFM_GETTER_NOT_FOUND.toUrl(); }
@SuppressWarnings("unchecked") private <P, I> ContextualIndexedSetter<PreparedStatement, P> getSetterWithConvertion(Class<P> pclazz, Class<I> iclass, ContextFactoryBuilder contextFactoryBuilder, PropertyMapping<?, ?, JdbcColumnKey> pm) { ContextualConverter<? super P, ? extends I> converter = ConverterService.getInstance().findConverter(pclazz, iclass, contextFactoryBuilder, pm.getColumnDefinition().properties()); if (converter != null) { ContextualIndexedSetter<PreparedStatement, I> indexedSetter = getIndexedSetter(iclass, pm, contextFactoryBuilder); if (indexedSetter != null) { return new ConvertDelegateIndexSetter<P, I>(indexedSetter, converter); } } return null; }
@Override public void handle(PropertyMapping<T, ?, K> propertyMapping) { getter = getterFactory.newGetter(propertyMapping.getPropertyMeta().getPropertyType(), propertyMapping.getColumnKey(), mappingContextFactoryBuilder, propertyMapping.getColumnDefinition().properties()); } }).getter;
@SuppressWarnings("unchecked") private <S, P> ContextualSetter<Appendable, ? super P> setterFromFactory(PropertyMapping<S, P, CsvColumnKey> pm) { ContextualSetter<Appendable, ? super P> setter = null; final SetterFactoryProperty setterFactoryProperty = pm.getColumnDefinition().lookFor(SetterFactoryProperty.class); if (setterFactoryProperty != null) { final SetterFactory<Appendable, PropertyMapping<S, P, CsvColumnKey>> setterFactory = (SetterFactory<Appendable, PropertyMapping<S, P, CsvColumnKey>>) setterFactoryProperty.getSetterFactory(); setter = ContextualSetterAdapter.of(setterFactory.getSetter(pm)); } if (setter == null) { if (!pm.getPropertyMeta().isSelf()) { final ClassMeta<P> classMeta = pm.getPropertyMeta().getPropertyClassMeta(); if (classMeta instanceof ObjectClassMeta) { ObjectClassMeta<P> ocm = (ObjectClassMeta<P>) classMeta; if (ocm.getNumberOfProperties() == 1) { PropertyMeta<P, ?> subProp = ocm.getFirstProperty(); ContextualSetter<Appendable, Object> subSetter = (ContextualSetter<Appendable, Object>) setterFromFactory(pm.propertyMeta(subProp)); if (subSetter != null) { setter = new ContextualSetterOnGetter<Appendable, Object, P>(subSetter, (Getter<P, Object>) subProp.getGetter()); } else { return new ObjectToStringSetter<P>(subProp.getGetter()); } } } } } return setter; }