package com.alibaba.tamper.core.builder; import com.alibaba.tamper.core.builder.impl.BeanMappingBehaviorBuilder; import com.alibaba.tamper.core.builder.impl.BeanMappingFieldAttributesBuilder; import com.alibaba.tamper.core.builder.impl.BeanMappingFieldBuilder; import com.alibaba.tamper.core.builder.impl.BeanMappingObjectBuilder; import com.alibaba.tamper.core.config.BeanMappingBehavior; import com.alibaba.tamper.core.config.BeanMappingConfigHelper; import com.alibaba.tamper.core.config.BeanMappingConfigRespository; import com.alibaba.tamper.core.config.BeanMappingObject; /** * mapping对象的构造器, 可直接注册到{@linkplain BeanMappingConfigRespository} * * <pre> * BeanMappingConfigRespository.register(BeanMappingBuilder); * </pre> * * @author jianghang 2011-6-22 上午10:31:35 */ public class BeanMappingBuilder implements Builder<BeanMappingObject> { private BeanMappingObject object; private BeanMappingBehavior global = BeanMappingConfigHelper.getInstance().getGlobalBehavior(); public BeanMappingBuilder(){ configure(); } protected void configure() { // 需要客户端实现 } public BeanMappingObjectBuilder mapping(String name, Class srcClass, Class targetClass) { BeanMappingObjectBuilder builder = new BeanMappingObjectBuilder(name, srcClass, targetClass, global); object = builder.get(); return builder; } public BeanMappingObjectBuilder mapping(Class srcClass, Class targetClass) { BeanMappingObjectBuilder builder = new BeanMappingObjectBuilder(srcClass, targetClass, global); object = builder.get(); return builder; } public BeanMappingFieldBuilder fields(BeanMappingFieldAttributesBuilder srcFieldBuilder, BeanMappingFieldAttributesBuilder targetFieldBuilder) { BeanMappingFieldBuilder fieldCriterion = new BeanMappingFieldBuilder(srcFieldBuilder, targetFieldBuilder, this.object.getBehavior()); this.object.addBeanField(fieldCriterion.get()); return fieldCriterion; } public BeanMappingBehaviorBuilder behavior() { BeanMappingBehaviorBuilder builder = new BeanMappingBehaviorBuilder(); global = builder.get(); return builder; } public BeanMappingBehaviorBuilder behavior(boolean debug, boolean mappingNullValue, boolean mappingEmptyStrings, boolean trimStrings) { BeanMappingBehaviorBuilder builder = new BeanMappingBehaviorBuilder(debug, mappingNullValue, mappingEmptyStrings, trimStrings); global = builder.get(); return builder; } public BeanMappingFieldAttributesBuilder srcField(String name) { return new BeanMappingFieldAttributesBuilder(name); } public BeanMappingFieldAttributesBuilder srcField(String name, Class clazz) { return new BeanMappingFieldAttributesBuilder(name, clazz); } public BeanMappingFieldAttributesBuilder targetField(String name) { return new BeanMappingFieldAttributesBuilder(name); } public BeanMappingFieldAttributesBuilder targetField(String name, Class clazz) { return new BeanMappingFieldAttributesBuilder(name, clazz); } @Override public BeanMappingObject get() { return object; } }