@Override public int addSupplier(Supplier<?> supplier) { if (parent == null) { int index = suppliers.size(); suppliers.add(index, supplier); return index; } else { return parent.addSupplier(supplier); } }
@Override public MappingContextFactory<? super S> contextFactory() { return mappingContextFactoryBuilder.build(); }
public boolean hasNoDependentKeys() { if (!hasNoKeys()) { return false; } for(MappingContextFactoryBuilder<S, K> builder : children) { if (!builder.hasNoDependentKeys()) { return false; } } return true; }
@SuppressWarnings("unchecked") private <P> ContextualGetter<S, P> newMapperGetterAdapter(SourceMapper<S, ?> mapper, MappingContextFactoryBuilder<S, K> builder) { return new MapperFieldMapperGetterAdapter<S, P>((SourceMapper<S, P>)mapper, builder.nullChecker(), builder.currentIndex()); }
private QueryPreparer<T> preparedStatementMapper(NamedSqlQuery query, String[] generatedKeys) { for(int i = 0; i < query.getParametersSize(); i++) { addColumn(query.getParameter(i).getName()); } boolean hasMultiIndex = propertyMappingsBuilder.forEachProperties(new ForEachCallBack<PropertyMapping<T, ?, JdbcColumnKey>>() { boolean hasMultiIndex; @Override public void handle(PropertyMapping<T, ?, JdbcColumnKey> pm) { hasMultiIndex |= isMultiIndex(pm.getPropertyMeta()); } }).hasMultiIndex; if (hasMultiIndex) { MappingContextFactoryBuilder<T, JdbcColumnKey> mappingContextFactoryBuilder = new MappingContextFactoryBuilder<T, JdbcColumnKey>(keySourceGetter(), !mapperConfig.unorderedJoin()); return new MultiIndexQueryPreparer<T>(query, buildIndexFieldMappers(mappingContextFactoryBuilder), generatedKeys, mappingContextFactoryBuilder.build()); } else { return new MapperQueryPreparer<T>(query, mapper(), generatedKeys); } }
@Test public void testKeysAndSuppliers() { int i = builder.addSupplier( new ConstantSupplier<String>("hh")); builder.addKey(new KeyAndPredicate<Object[], SampleFieldKey>(new SampleFieldKey("k1", 0), null)); assertFalse(builder.hasNoKeys()); MappingContextFactory<Object[]> mappingContextFactory = builder.build(); assertTrue(mappingContextFactory instanceof BreakDetectorMappingContextFactory); assertEquals("hh", mappingContextFactory.newContext().context(i)); }
@Test public void testKeys() throws Exception { builder.addKey(new KeyAndPredicate<Object[], SampleFieldKey>(new SampleFieldKey("k1", 0), null)); assertFalse(builder.hasNoKeys()); MappingContextFactory<Object[]> mappingContextFactory = builder.build(); assertTrue(mappingContextFactory instanceof BreakDetectorMappingContextFactory); assertNull(mappingContextFactory.newContext().context(0)); assertTrue(builder.nullChecker().test(new Object[] { null})); assertFalse(builder.nullChecker().test(new Object[] { 123 })); }
public MappingContextFactoryBuilder<S, K> newBuilder(List<KeyAndPredicate<S, K>> subKeys, PropertyMeta<?, ?> owner) { // look for duplicate for(MappingContextFactoryBuilder<S, K> child : children) { if ((child.owner.getPath().equals(owner.getPath()) && child.owner.getPropertyClassMeta().equals(owner.getPropertyClassMeta())) ) { return child; } } MappingContextFactoryBuilder<S, K> subBuilder = new MappingContextFactoryBuilder<S, K>(counter, subKeys, keySourceGetter, this, owner, ignoreRootKey); children.add(subBuilder); return subBuilder; }
@Test public void testSuppliers() { int i = builder.addSupplier(new ConstantSupplier<String>("hh")); assertTrue(builder.hasNoKeys()); MappingContextFactory<Object[]> mappingContextFactory = builder.build(); assertTrue(mappingContextFactory instanceof ValuedMappingContextFactory); assertEquals("hh", mappingContextFactory.newContext().context(i)); }
@Test public void testKeysWithSubBuilder() { builder.addKey(new KeyAndPredicate<Object[], SampleFieldKey>(new SampleFieldKey("k1", 0), null)); MappingContextFactoryBuilder<Object[], SampleFieldKey> subBuilder = builder.newBuilder(Arrays.asList(new KeyAndPredicate<Object[], SampleFieldKey>(new SampleFieldKey("k2", 3), null)), null); subBuilder.newBuilder(Arrays.asList(new KeyAndPredicate<Object[], SampleFieldKey>(new SampleFieldKey("k3", 6), null)), null); MappingContextFactory<Object[]> mappingContextFactory = builder.build(); MappingContext<Object[]> mappingContext = mappingContextFactory.newContext(); }
private static <S, K> boolean hasKeys(ArrayList<MappingContextFactoryBuilder<S, K>> builders) { for(int i = 0; i < builders.size(); i++) { if (!builders.get(i).hasNoKeys()) return true; } return false; }
private MappingContextFactoryBuilder getMapperContextFactoryBuilder(PropertyMeta<?, ?> owner, List<PropertyMapping<T, ?, K>> properties) { final List<KeyAndPredicate<S, K>> subKeys = getSubKeys(properties); return mappingContextFactoryBuilder.newBuilder(subKeys, owner); }
@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; }
private QueryPreparer<T> preparedStatementMapper(NamedSqlQuery query, String[] generatedKeys) { for(int i = 0; i < query.getParametersSize(); i++) { addColumn(query.getParameter(i).getName()); } boolean hasMultiIndex = propertyMappingsBuilder.forEachProperties(new ForEachCallBack<PropertyMapping<T, ?, JdbcColumnKey>>() { boolean hasMultiIndex; @Override public void handle(PropertyMapping<T, ?, JdbcColumnKey> pm) { hasMultiIndex |= isMultiIndex(pm.getPropertyMeta()); } }).hasMultiIndex; if (hasMultiIndex) { MappingContextFactoryBuilder<T, JdbcColumnKey> mappingContextFactoryBuilder = new MappingContextFactoryBuilder<T, JdbcColumnKey>(keySourceGetter(), !mapperConfig.unorderedJoin()); return new MultiIndexQueryPreparer<T>(query, buildIndexFieldMappers(mappingContextFactoryBuilder), generatedKeys, mappingContextFactoryBuilder.build()); } else { return new MapperQueryPreparer<T>(query, mapper(), generatedKeys); } }
public MappingContextFactoryBuilder<S, K> newBuilder(List<KeyAndPredicate<S, K>> subKeys, PropertyMeta<?, ?> owner) { // look for duplicate for(MappingContextFactoryBuilder<S, K> child : children) { if ((child.owner.getPath().equals(owner.getPath()) && child.owner.getPropertyClassMeta().equals(owner.getPropertyClassMeta())) ) { return child; } } MappingContextFactoryBuilder<S, K> subBuilder = new MappingContextFactoryBuilder<S, K>(counter, subKeys, keySourceGetter, this, owner, ignoreRootKey); children.add(subBuilder); return subBuilder; }
@SuppressWarnings("unchecked") private <P> ContextualGetter<S, P> newMapperGetterAdapter(SourceMapper<S, ?> mapper, MappingContextFactoryBuilder<S, K> builder) { return new MapperFieldMapperGetterAdapter<S, P>((SourceMapper<S, P>)mapper, builder.nullChecker(), builder.currentIndex()); }
private static <S, K> boolean hasKeys(ArrayList<MappingContextFactoryBuilder<S, K>> builders) { for(int i = 0; i < builders.size(); i++) { if (!builders.get(i).hasNoKeys()) return true; } return false; }
private MappingContextFactoryBuilder getMapperContextFactoryBuilder(PropertyMeta<?, ?> owner, List<PropertyMapping<T, ?, K>> properties) { final List<KeyAndPredicate<S, K>> subKeys = getSubKeys(properties); return mappingContextFactoryBuilder.newBuilder(subKeys, owner); }
@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; }