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

org.ssssssss.magicapi.adapter.ColumnMapperAdapter Maven / Gradle / Ivy

There is a newer version: 2.1.1
Show newest version
package org.ssssssss.magicapi.adapter;

import org.springframework.jdbc.core.RowMapper;
import org.ssssssss.magicapi.provider.ColumnMapperProvider;
import org.ssssssss.magicapi.provider.impl.*;

import java.util.HashMap;
import java.util.Map;
import java.util.function.Function;

public class ColumnMapperAdapter {

	private final Map>> columnMapRowMappers = new HashMap<>();

	private final Map> rowMapColumnMappers = new HashMap<>();

	private RowMapper> mapRowColumnMapper;

	private Function rowMapColumnMapper;

	public ColumnMapperAdapter() {
		setDefault(new DefaultColumnMapperProvider());
		add(new CamelColumnMapperProvider());
		add(new PascalColumnMapperProvider());
		add(new LowerColumnMapperProvider());
		add(new UpperColumnMapperProvider());
	}

	public void add(ColumnMapperProvider columnMapperProvider) {
		columnMapRowMappers.put(columnMapperProvider.name(), columnMapperProvider.getColumnMapRowMapper());
		rowMapColumnMappers.put(columnMapperProvider.name(), columnMapperProvider.getRowMapColumnMapper());
	}

	public void setDefault(ColumnMapperProvider columnMapperProvider) {
		this.mapRowColumnMapper = columnMapperProvider.getColumnMapRowMapper();
		this.rowMapColumnMapper = columnMapperProvider.getRowMapColumnMapper();
		add(columnMapperProvider);
	}

	public void setDefault(String name) {
		this.mapRowColumnMapper = getColumnMapRowMapper(name);
		this.rowMapColumnMapper = getRowMapColumnMapper(name);
	}

	public RowMapper> getDefaultColumnMapRowMapper() {
		return this.mapRowColumnMapper;
	}

	public Function getDefaultRowMapColumnMapper() {
		return this.rowMapColumnMapper;
	}

	public RowMapper> getColumnMapRowMapper(String name) {
		return columnMapRowMappers.getOrDefault(name, mapRowColumnMapper);
	}

	public Function getRowMapColumnMapper(String name) {
		return rowMapColumnMappers.getOrDefault(name, rowMapColumnMapper);
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy