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.HangarEntity; import org.transgalactica.management.data.materiel.bo.HangarSearchCriteria; import org.transgalactica.management.data.materiel.bo.HangarSummary; import org.transgalactica.management.data.materiel.bo.VaisseauEntity; import org.transgalactica.management.rest.logistics.data.HangarCommand; import org.transgalactica.management.rest.logistics.data.HangarDetailDto; import org.transgalactica.management.rest.logistics.data.HangarDto; import org.transgalactica.management.rest.logistics.data.HangarDtos; @Component public class DozerHangarMappingBuilder extends BeanMappingBuilder { protected DozerHangarMappingBuilder() { } @Override protected void configure() { mapping(HangarCommand.class, type(HangarEntity.class).beanFactory("springContextDozerFactory"), oneWay()); mapping(List.class, type(HangarDtos.class).beanFactory("springContextDozerFactory"), oneWay()) // .fields("this", new FieldDefinition("hangars") // .iterate() // .setMethod("add(org.transgalactica.management.rest.logistics.data.HangarDto)") // , hintB(HangarDto.class)); mapping(HangarSummary.class, type(HangarDto.class).beanFactory("springContextDozerFactory"), oneWay()) // .fields("numeroHangar", "numero") // .fields("localisationHangar", "localisation") // .fields("nombreEmplacementsHangar", "nombreEmplacements"); // Déclaration des champs de meme nom obligatoire, car le setter n'est // pas dans l'interface mapping(HangarEntity.class, type(HangarDetailDto.class).beanFactory("springContextDozerFactory"), oneWay()) // .fields("numero", "numero") // .fields("localisation", "localisation") // .fields("nombreEmplacements", "nombreEmplacements") // .fields("vaisseaux", "vaisseaux"); mapping(VaisseauEntity.class, type(HangarDetailDto.VaisseauDto.class).beanFactory("springContextDozerFactory"), oneWay()) // .fields("immatriculation", "immatriculation") // .fields("modele", "modele") // .fields("nombreDePassagers", "nombreDePassagers") // .fields("capaciteDeFret", "capaciteDeFret") // .fields("vitesse", "vitesse") // .fields("autonomie", "autonomie"); mapping(String.class, type(HangarSearchCriteria.class).beanFactory("springContextDozerFactory"), oneWay()) // .fields("this", "localisationHangar"); } }