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

org.sfm.map.impl.PropertyMappingsBuilder Maven / Gradle / Ivy

package org.sfm.map.impl;

import java.util.ArrayList;
import java.util.List;

import org.sfm.map.MapperBuildingException;
import org.sfm.reflect.meta.ClassMeta;
import org.sfm.reflect.meta.PropertyFinder;
import org.sfm.reflect.meta.PropertyMeta;
import org.sfm.utils.ForEachCallBack;

public final class PropertyMappingsBuilder> {

	protected final PropertyFinder propertyFinder;
	
	protected final List> properties = new ArrayList>();
	
	protected boolean modifiable = true;

	public PropertyMappingsBuilder(final ClassMeta classMeta) throws MapperBuildingException {
		this.propertyFinder = classMeta.newPropertyFinder();
	}

	
	public 

boolean addProperty(final K key) { if (!modifiable) throw new IllegalStateException("Builder not modifiable"); @SuppressWarnings("unchecked") final PropertyMeta prop = (PropertyMeta) propertyFinder.findProperty(key.getName()); addProperty(key, prop); return prop != null; } public

void addProperty(final K key, final PropertyMeta prop) { while(properties.size() <= key.getIndex()) { properties.add(null); } properties.set(key.getIndex(), new PropertyMapping(prop, key)); } public List getKeys() { modifiable = false; List keys = new ArrayList(properties.size()); for(int i = 0; i < properties.size(); i++) { PropertyMapping propMapping = properties.get(i); if (propMapping != null) { keys.add(propMapping.getColumnKey()); } else { keys.add(null); } } return keys; } public void forEachConstructorProperties(ForEachCallBack> handler) { modifiable = false; for(int i = 0; i < properties.size(); i++) { PropertyMapping property = properties.get(i); if (property != null) { PropertyMeta propertyMeta = property.getPropertyMeta(); if (propertyMeta != null && propertyMeta.isConstructorProperty()) { handler.handle(property, i); } } } } public void forEachSubProperties(ForEachCallBack> handler) { modifiable = false; for(int i = 0; i < properties.size(); i++) { PropertyMapping property = properties.get(i); if (property != null) { PropertyMeta propertyMeta = property.getPropertyMeta(); if (propertyMeta != null && propertyMeta.isSubProperty()) { handler.handle(property, i); } } } } public >> H forEachProperties(H handler) { forEachProperties(handler, 0); return handler; } public void forEachProperties(ForEachCallBack> handler, int start) { forEachProperties(handler, start, properties.size()); } public void forEachProperties(ForEachCallBack> handler, int start, int end) { modifiable = false; for(int i = start; i < end; i++) { PropertyMapping prop = properties.get(i); handler.handle(prop, i); } } public PropertyFinder getPropertyFinder() { modifiable = false; return propertyFinder; } public int size() { return properties.size(); } public PropertyMapping get(int i) { modifiable = false; return properties.get(i); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy