//package eu.eudat.model.builder.filetransformer; // //import eu.eudat.authorization.AuthorizationFlags; //import eu.eudat.commons.XmlHandlingService; //import eu.eudat.commons.types.reference.DefinitionEntity; //import eu.eudat.convention.ConventionService; //import eu.eudat.data.ReferenceEntity; //import eu.eudat.file.transformer.enums.ReferenceSourceType; //import eu.eudat.file.transformer.enums.ReferenceType; //import eu.eudat.file.transformer.models.description.DescriptionReferenceFileTransformerModel; //import eu.eudat.file.transformer.models.dmp.DmpReferenceFileTransformerModel; //import eu.eudat.file.transformer.models.reference.ReferenceFileTransformerModel; //import gr.cite.tools.data.builder.BuilderFactory; //import gr.cite.tools.exception.MyApplicationException; //import gr.cite.tools.logging.LoggerService; //import org.slf4j.LoggerFactory; //import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.beans.factory.config.ConfigurableBeanFactory; //import org.springframework.context.annotation.Scope; //import org.springframework.stereotype.Component; // //import java.util.ArrayList; //import java.util.EnumSet; //import java.util.List; //import java.util.Optional; // //@Component //@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE) //public class ReferenceFileTransformerBuilder extends BaseFileTransformerBuilder { // // private final BuilderFactory builderFactory; // private final XmlHandlingService xmlHandlingService; // private EnumSet authorize = EnumSet.of(AuthorizationFlags.None); // // @Autowired // public ReferenceFileTransformerBuilder( // ConventionService conventionService, // BuilderFactory builderFactory, XmlHandlingService xmlHandlingService) { // super(conventionService, new LoggerService(LoggerFactory.getLogger(ReferenceFileTransformerBuilder.class))); // this.builderFactory = builderFactory; // this.xmlHandlingService = xmlHandlingService; // } // // public ReferenceFileTransformerBuilder authorize(EnumSet values) { // this.authorize = values; // return this; // } // // @Override // protected List> buildInternal(List data) throws MyApplicationException { // this.logger.debug("building for {}", Optional.ofNullable(data).map(List::size).orElse(0)); // if (data == null || data.isEmpty()) return new ArrayList<>(); // // List> models = new ArrayList<>(); // for (ReferenceEntity d : data) { // ReferenceFileTransformerModel m = new ReferenceFileTransformerModel(); // m.setId(d.getId()); // m.setLabel(d.getLabel()); // if (d.getDefinition() != null){ // DefinitionEntity definition = this.xmlHandlingService.fromXmlSafe(DefinitionEntity.class, d.getDefinition()); // m.setDefinition(this.builderFactory.builder(ReferenceDefinitionFileTransformerBuilder.class).authorize(this.authorize).build(definition)); // } // m.setReference(d.getReference()); // m.setAbbreviation(d.getAbbreviation()); // m.setDescription(d.getDescription()); // m.setSource(d.getSource()); // switch (d.getSourceType()){ // case Internal -> m.setSourceType(ReferenceSourceType.Internal); // case External -> m.setSourceType(ReferenceSourceType.External); // default -> throw new MyApplicationException("unrecognized type " + d.getSourceType().getValue()); // } // // //m.setType(d.getTypeId()); //TODO new reference logic // // models.add(new FileTransformerBuilderItemResponse<>(m, d)); // } // this.logger.debug("build {} items", Optional.of(models).map(List::size).orElse(0)); // return models; // } //}