package org.transgalactica.management.data.rest.mapper.impl;
import static org.dozer.loader.api.TypeMappingOptions.oneWay;
import org.dozer.loader.api.BeanMappingBuilder;
import org.dozer.loader.api.TypeDefinition;
import org.springframework.stereotype.Component;
import org.transgalactica.management.data.rest.bo.HangarSummaryTo;
import org.transgalactica.management.data.rest.bo.HangarTo;
import org.transgalactica.management.data.rest.bo.VaisseauSummaryTo;
import org.transgalactica.management.data.rest.bo.VaisseauTo;
import org.transgalactica.management.flux.rest.HangarCommand;
import org.transgalactica.management.flux.rest.HangarDetailDto;
import org.transgalactica.management.flux.rest.HangarDto;
import org.transgalactica.management.flux.rest.HangarVaisseau;
import org.transgalactica.management.flux.rest.VaisseauCommand;
import org.transgalactica.management.flux.rest.VaisseauDetailDto;
import org.transgalactica.management.flux.rest.VaisseauDto;
@Component
public class DozerLogisticsMappingBuilder extends BeanMappingBuilder {
protected DozerLogisticsMappingBuilder() {
}
@Override
protected void configure() {
// Hangars
mapping(HangarTo.class, HangarCommand.class, oneWay());
mapping(HangarDto.class, type(HangarSummaryTo.class).beanFactory("springContextDozerFactory"), oneWay()) //
.fields("numero", "numero") //
.fields("localisation", "localisation") //
.fields("nombreEmplacements", "nombreEmplacements");
mapping(HangarDetailDto.class, type(HangarTo.class).beanFactory("springContextDozerFactory"), oneWay()) //
.fields("vaisseaux.vaisseau", "vaisseaux");
mapping(HangarVaisseau.class, type(HangarTo.VaisseauTo.class).beanFactory("springContextDozerFactory"),
oneWay()) //
.fields("immatriculation", "immatriculation") //
.fields("modele", "modele") //
.fields("nombreDePassagers", "nombreDePassagers") //
.fields("capaciteDeFret", "capaciteDeFret") //
.fields("vitesse", "vitesse") //
.fields("autonomie", "autonomie");
// vaisseaux
mapping(VaisseauTo.class, VaisseauCommand.class, oneWay());
mapping(VaisseauDto.class, type(VaisseauSummaryTo.class).beanFactory("springContextDozerFactory"), oneWay()) //
.fields("immatriculation", "immatriculation") //
.fields("modele", "modele") //
.fields("localisationHangar", "localisationHangar");
mapping(VaisseauDetailDto.class, new TypeDefinition(VaisseauTo.class).beanFactory("springContextDozerFactory"),
oneWay()) //
.fields("vitesse", "vitesse") //
.fields("autonomie", "autonomie") //
.fields("nombreDePassagers", "nombreDePassagers") //
.fields("capaciteDeFret", "capaciteDeFret") //
.fields("multiplicateurHyperdrive", "multiplicateurHyperdrive") //
.fields("numeroHangar", "numeroHangar");
}
}