@SuppressWarnings("unchecked") private List<KeyAndPredicate<S, K>> getSubKeys(List<PropertyMapping<T, ?, K>> properties) { List<KeyAndPredicate<S, K>> keys = new ArrayList<KeyAndPredicate<S, K>>(); // look for keys property of the object for (PropertyMapping<T, ?, K> pm : properties) { Predicate<PropertyMeta<?, ?>> propertyMetaKeyPredicate = pm.getColumnDefinition().keyAppliesTo(); if (pm.getPropertyMeta().isSubProperty()) { SubPropertyMeta<T, ?, ?> subPropertyMeta = (SubPropertyMeta<T, ?, ?>) pm.getPropertyMeta(); if (!(JoinUtils.isArrayElement(subPropertyMeta.getSubProperty()))) { // ignore ArrayElementPropertyMeta as it's a direct getter and will be managed in the setter if (pm.getColumnDefinition().isKey()) { if (propertyMetaKeyPredicate.test(subPropertyMeta.getSubProperty())) { Predicate<? super S> predicate = buildKeyPredicate(subPropertyMeta.getSubProperty(), propertyMetaKeyPredicate);; keys.add(new KeyAndPredicate<S, K>(pm.getColumnKey(), predicate)); } } } } else { if (pm.getColumnDefinition().isKey()) { if (propertyMetaKeyPredicate.test(pm.getPropertyMeta())) { keys.add(new KeyAndPredicate<S, K>(pm.getColumnKey(), null)); } } } } return keys; }
@SuppressWarnings("unchecked") private List<KeyAndPredicate<S, K>> getSubKeys(List<PropertyMapping<T, ?, K>> properties) { List<KeyAndPredicate<S, K>> keys = new ArrayList<KeyAndPredicate<S, K>>(); // look for keys property of the object for (PropertyMapping<T, ?, K> pm : properties) { Predicate<PropertyMeta<?, ?>> propertyMetaKeyPredicate = pm.getColumnDefinition().keyAppliesTo(); if (pm.getPropertyMeta().isSubProperty()) { SubPropertyMeta<T, ?, ?> subPropertyMeta = (SubPropertyMeta<T, ?, ?>) pm.getPropertyMeta(); if (!(JoinUtils.isArrayElement(subPropertyMeta.getSubProperty()))) { // ignore ArrayElementPropertyMeta as it's a direct getter and will be managed in the setter if (pm.getColumnDefinition().isKey()) { if (propertyMetaKeyPredicate.test(subPropertyMeta.getSubProperty())) { Predicate<? super S> predicate = buildKeyPredicate(subPropertyMeta.getSubProperty(), propertyMetaKeyPredicate);; keys.add(new KeyAndPredicate<S, K>(pm.getColumnKey(), predicate)); } } } } else { if (pm.getColumnDefinition().isKey()) { if (propertyMetaKeyPredicate.test(pm.getPropertyMeta())) { keys.add(new KeyAndPredicate<S, K>(pm.getColumnKey(), null)); } } } } return keys; }
@Override @SuppressWarnings("unchecked") public final ConstantSourceMapperBuilder<S, T, K> addMapping(K key, final ColumnDefinition<K, ?> columnDefinition) { final ColumnDefinition<K, ?> composedDefinition = columnDefinition.compose(mapperConfig.columnDefinitions().getColumnDefinition(key)); final K mappedColumnKey = composedDefinition.rename(key); FieldMapperProperty prop = columnDefinition.lookFor(FieldMapperProperty.class); if (prop != null) { addMapper((FieldMapper<S, T>) prop.getFieldMapper()); } else { PropertyMapping<T, ?, K> propertyMapping = propertyMappingsBuilder.addProperty(mappedColumnKey, composedDefinition); if (propertyMapping != null) { ColumnDefinition<K, ?> effectiveColumnDefinition = propertyMapping.getColumnDefinition(); Predicate<PropertyMeta<?, ?>> keyAppliesTo = effectiveColumnDefinition.keyAppliesTo(); if (effectiveColumnDefinition.isKey() && keyAppliesTo.test(propertyMapping.getPropertyMeta())) { Predicate<S> predicate = buildKeyPredicate(propertyMapping.getPropertyMeta(), keyAppliesTo); mappingContextFactoryBuilder.addKey(new KeyAndPredicate<S, K>(mappedColumnKey, predicate)); } } } return this; }
@Override @SuppressWarnings("unchecked") public final ConstantSourceMapperBuilder<S, T, K> addMapping(K key, final ColumnDefinition<K, ?> columnDefinition) { final ColumnDefinition<K, ?> composedDefinition = columnDefinition.compose(mapperConfig.columnDefinitions().getColumnDefinition(key)); final K mappedColumnKey = composedDefinition.rename(key); FieldMapperProperty prop = columnDefinition.lookFor(FieldMapperProperty.class); if (prop != null) { addMapper((FieldMapper<S, T>) prop.getFieldMapper()); } else { PropertyMapping<T, ?, K> propertyMapping = propertyMappingsBuilder.addProperty(mappedColumnKey, composedDefinition); if (propertyMapping != null) { ColumnDefinition<K, ?> effectiveColumnDefinition = propertyMapping.getColumnDefinition(); Predicate<PropertyMeta<?, ?>> keyAppliesTo = effectiveColumnDefinition.keyAppliesTo(); if (effectiveColumnDefinition.isKey() && keyAppliesTo.test(propertyMapping.getPropertyMeta())) { Predicate<S> predicate = buildKeyPredicate(propertyMapping.getPropertyMeta(), keyAppliesTo); mappingContextFactoryBuilder.addKey(new KeyAndPredicate<S, K>(mappedColumnKey, predicate)); } } } return this; }