DomainTemplatePrintService.java
package fr.tiogars.inception.domains.domaintemplate.services;
import java.io.IOException;
import java.util.List;
import java.util.Optional;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import fr.tiogars.inception.domains.domaintemplate.models.DomainTemplate;
/** Generates a printable PDF for one active DomainTemplate. */
@Service
public class DomainTemplatePrintService {
private final DomainTemplateFindByIdService findByIdService;
private final DomainTemplatePdfRenderer renderer;
public DomainTemplatePrintService(DomainTemplateFindByIdService findByIdService, DomainTemplatePdfRenderer renderer) {
this.findByIdService = findByIdService;
this.renderer = renderer;
}
/**
* Prints an active record.
*
* @param id persistent identifier
* @return PDF bytes, or empty if the record was not found
* @throws IOException when the PDF cannot be generated
*/
@Transactional(readOnly = true)
public Optional<byte[]> print(Long id) throws IOException {
Optional<DomainTemplate> template = findByIdService.findById(id);
if (template.isEmpty()) {
return Optional.empty();
}
return Optional.of(renderer.render("DomainTemplate", List.of(template.get())));
}
}