All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.akquinet.jbosscc.guttenbase.defaults.impl.DefaultColumnDataMapperProvider Maven / Gradle / Ivy

The newest version!
package de.akquinet.jbosscc.guttenbase.defaults.impl;

import de.akquinet.jbosscc.guttenbase.hints.impl.DefaultColumnDataMapperProviderHint;
import de.akquinet.jbosscc.guttenbase.mapping.ColumnDataMapper;
import de.akquinet.jbosscc.guttenbase.mapping.ColumnDataMapperProvider;
import de.akquinet.jbosscc.guttenbase.meta.ColumnMetaData;
import de.akquinet.jbosscc.guttenbase.meta.ColumnType;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Default implementation. To add further mapping you should simply extend {@link DefaultColumnDataMapperProviderHint} and call
 * {@link #addMapping(ColumnType, ColumnType, ColumnDataMapper)} in the overridden
 * {@link DefaultColumnDataMapperProviderHint#addMappings(DefaultColumnDataMapperProvider)} method.
 * 

* © 2012-2034 akquinet tech@spree *

* * @author M. Dahm */ public class DefaultColumnDataMapperProvider implements ColumnDataMapperProvider { private final Map> _mappings = new HashMap<>(); /** * {@inheritDoc} */ @Override public ColumnDataMapper findMapping(final ColumnMetaData sourceColumnMetaData, final ColumnMetaData targetColumnMetaData, final ColumnType sourceColumnType, final ColumnType targetColumnType) { final List columnDataMappers = findMapping(sourceColumnType, targetColumnType); for (final ColumnDataMapper columnDataMapper : columnDataMappers) { if (columnDataMapper.isApplicable(sourceColumnMetaData, targetColumnMetaData)) { return columnDataMapper; } } return null; } /** * {@inheritDoc} */ @Override public void addMapping(final ColumnType sourceColumnType, final ColumnType targetColumnType, final ColumnDataMapper columnDataMapper) { assert columnDataMapper != null : "columnDataMapper != null"; findMapping(sourceColumnType, targetColumnType).add(columnDataMapper); } private String createKey(final ColumnType sourceColumnType, final ColumnType targetColumnType) { assert sourceColumnType != null : "sourceColumnType != null"; assert targetColumnType != null : "targetColumnType != null"; return sourceColumnType.name() + ":" + targetColumnType.name(); } private List findMapping(final ColumnType sourceColumnType, final ColumnType targetColumnType) { final String key = createKey(sourceColumnType, targetColumnType); return _mappings.computeIfAbsent(key, k -> new ArrayList<>()); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy