package org.transgalactica.management.rest.logistics.mapper.impl;
import static org.dozer.loader.api.FieldsMappingOptions.hintB;
import static org.dozer.loader.api.TypeMappingOptions.oneWay;
import java.util.List;
import org.dozer.loader.api.BeanMappingBuilder;
import org.dozer.loader.api.FieldDefinition;
import org.springframework.stereotype.Component;
import org.transgalactica.management.data.materiel.bo.VaisseauEntity;
import org.transgalactica.management.data.materiel.bo.VaisseauIntergalactiqueEntity;
import org.transgalactica.management.data.materiel.bo.VaisseauSummary;
import org.transgalactica.management.rest.logistics.data.VaisseauCommand;
import org.transgalactica.management.rest.logistics.data.VaisseauDetailDto;
import org.transgalactica.management.rest.logistics.data.VaisseauDto;
import org.transgalactica.management.rest.logistics.data.VaisseauDtos;
@Component
public class DozerVaisseauMappingBuilder extends BeanMappingBuilder {
protected DozerVaisseauMappingBuilder() {
}
@Override
protected void configure() {
mapping(VaisseauCommand.class, type(VaisseauEntity.class).beanFactory("springContextDozerFactory"), oneWay());
mapping(VaisseauCommand.class,
type(VaisseauIntergalactiqueEntity.class).beanFactory("springContextDozerFactory"), oneWay());
mapping(List.class, type(VaisseauDtos.class).beanFactory("springContextDozerFactory"), oneWay()) //
.fields("this", new FieldDefinition("vaisseaux") //
.iterate() //
.setMethod("add(org.transgalactica.management.rest.logistics.data.VaisseauDto)") //
, hintB(VaisseauDto.class));
// Déclaration des champs de meme nom obligatoire, car le setter n'est
// pas dans l'interface
mapping(VaisseauSummary.class, type(VaisseauDto.class).beanFactory("springContextDozerFactory"), oneWay()) //
.fields("immatriculationVaisseau", "immatriculation")//
.fields("modeleVaisseau", "modele").fields("localisationHangar", "localisationHangar");
mapping(VaisseauEntity.class, type(VaisseauDetailDto.class).beanFactory("springContextDozerFactory"), oneWay()) //
.fields("immatriculation", "immatriculation") //
.fields("modele", "modele") //
.fields("nombreDePassagers", "nombreDePassagers") //
.fields("capaciteDeFret", "capaciteDeFret") //
.fields("vitesse", "vitesse") //
.fields("autonomie", "autonomie") //
.fields("hangar.numero", "numeroHangar") //
.fields("hangar.localisation", "localisationHangar");
mapping(VaisseauIntergalactiqueEntity.class,
type(VaisseauDetailDto.class).beanFactory("springContextDozerFactory"), oneWay()) //
.fields("multiplicateurHyperdrive", "multiplicateurHyperdrive");
}
}