From f27300c9ec125a641f0948149d903493a743ae76 Mon Sep 17 00:00:00 2001 From: dre0059 <eliska.dreveniakova@vsb.cz> Date: Wed, 30 Apr 2025 19:02:14 +0200 Subject: [PATCH] =?UTF-8?q?Dokument=C3=A1cia=20update?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/DocumentService.java | 43 ++++++++++++++++--- .../service/HeaderService.java | 38 ++++++++++++++-- 2 files changed, 72 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/dre0059/articleprocessor/service/DocumentService.java b/src/main/java/com/dre0059/articleprocessor/service/DocumentService.java index 8c17cce..7d0434c 100644 --- a/src/main/java/com/dre0059/articleprocessor/service/DocumentService.java +++ b/src/main/java/com/dre0059/articleprocessor/service/DocumentService.java @@ -25,6 +25,13 @@ import java.util.ArrayList; import java.util.List; import org.springframework.stereotype.Service; +/** + * Trieda na manipuláciu s dokumentmi. + * * + * * Poskytuje metĂłdy na zĂskavanie dokumentov, ako aj ich obsahov a referenciĂ. + * * Obsah dokumentu je vracanĂ˝ ako DTO objekt a operácie nad dokumentami sĂş zabezpeÄŤenĂ© pomocou repository. + * * + */ @Service public class DocumentService { @@ -43,9 +50,14 @@ public class DocumentService { this.referenceRepository = referenceRepository; } + /** + * ZĂska dokument na základe jeho ID. + * + * @param documentId ID dokumentu + * @return DTO objekt dokumentu + */ @Transactional public DocumentDto getDocumentById(Long documentId) { - //Dokument dokument = documentRepository.findById(documentId).orElse(null); Dokument dokument = documentRepository.findWithTagsById(documentId) .orElseThrow(() -> new IllegalArgumentException("Dokument not found with id: " + documentId)); @@ -54,19 +66,43 @@ public class DocumentService { return documentDto; } + + /** + * ZĂska obsah dokumentu na základe jeho ID. + * + * @param documentId ID dokumentu + * @return DTO objekt s obsahom dokumentu + */ @Transactional public DocumentContentDto getDocumentContentById(Long documentId) { return documentMapper.toDocumentContentDto(documentRepository.findById(documentId).orElse(null)); } + + /** + * ZĂska zoznam dokumentov, ktorĂ© sĂş citovanĂ© / referencovanĂ© z danĂ©ho dokumentu. + * + * @param documentId ID dokumentu + * @return Zoznam referencovanĂ˝ch dokumentov + */ @Transactional public List<SimpleDocumentDto> getReferencedDocumentsById(Long documentId) { return documentMapper.toSimpleDocumentList(documentRepository.getReferencedDocumentsById(documentId)); } + + @Transactional public List<SimpleDocumentDto> getAllDocuments() { return documentMapper.toSimpleDocumentList(documentRepository.findAll()); } + /** + * Predpripravená metĂłda : + * ODSTRĂNI DOKUEMENT Z DATABĂZY + * + * Dokument je odstránenĂ˝ spolu s referenciami a jeho autorom. + * + * @param id ID dokumentu + */ @Transactional public void deleteDocument(Long id) { Dokument dokument = documentRepository.findById(id).orElse(null); @@ -83,10 +119,6 @@ public class DocumentService { List<Reference> referencesFrom = referenceRepository.findByFromDocumentId(id); referenceRepository.deleteAll(referencesFrom); - // DOSTĂVAM vĂ˝nimku keÄŹ to je PDF a neexistuje ako toDocument - //List<Reference> referenceTo = referenceRepository.findByToDocumentId(id); - //referenceRepository.deleteAll(referenceTo); - // Odstránenie dokumentu zo zoznamov autorov List<Author> authors = new ArrayList<>(dokument.getAuthors()); // VytvorĂme novĂş kolekciu, aby sme sa vyhli problĂ©mom pri zmene kolekcie poÄŤas iterácie dokument.getAuthors().clear(); // Odstránime autora z dokumentu @@ -101,7 +133,6 @@ public class DocumentService { // Vymazanie dokumentu z databázy documentRepository.deleteById(id); - // všetko sa mi vykoná a na konci mi vyskoÄŤĂ error... neviem preÄŤo a ako to ošetriĹĄ } diff --git a/src/main/java/com/dre0059/articleprocessor/service/HeaderService.java b/src/main/java/com/dre0059/articleprocessor/service/HeaderService.java index e555a71..1f27bfc 100644 --- a/src/main/java/com/dre0059/articleprocessor/service/HeaderService.java +++ b/src/main/java/com/dre0059/articleprocessor/service/HeaderService.java @@ -29,6 +29,15 @@ import org.apache.commons.io.FileUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +/** + * * Trieds na spracovanie hlaviÄŤkovĂ˝ch Ăşdajov dokumentov, ktorĂ© boli nahratĂ© ako PDF formát + * * + * * Táto trieda : + * - extrahuje a spracováva hlaviÄŤkovĂ© informácie + * (ako titul, autori, rok, DOI, atÄŹ.) + * - ukladá tieto informácie do databázy + * + */ @Service public class HeaderService { @@ -61,6 +70,17 @@ public class HeaderService { this.tagRepository = tagRepository; } + + /** + * Spracuje text zĂskanĂ˝ z hlaviÄŤky dokumentu a uložà informácie o dokumente do databázy. + * MenĂ status z Referenced na PDF pokiaÄľ je to potrebnĂ© + * + * @param header HlaviÄŤka dokumentu + * @param categoryId ID kategĂłrie dokumentu + * @param tags Zoznam tagov priradenĂ˝ch dokumentu + * @param pdfFile SĂşbor PDF dokumentu + * @return UloĹľenĂ˝ dokument + */ public Dokument processHeader(String header, String categoryId, List<String> tags, File pdfFile) { this.title = this.parseHeaderFields(header, "title"); @@ -104,7 +124,6 @@ public class HeaderService { System.out.println("Category: " + category); dokument.setCategory(category); - List<Tag> tagEntities = new ArrayList<>(); for (String tagName : tags) { String lowerCase = tagName.trim().toLowerCase(); // konverzia na lowercase @@ -136,6 +155,13 @@ public class HeaderService { return saved; } + /** + * Pomocná matĂłda na parsovanie informáciĂ z hlaviÄŤky (pomocou regulárnych vĂ˝razov) + * + * @param header + * @param field - to ÄŤo chcem zĂskaĹĄ (DOI, publisher, year...) + * @return ĹľiadanĂ˝ Ăşdaj o dokumente (prĂp. Not found) + */ private String parseHeaderFields(String header, String field){ String regex = field + "\\s*=\\s*\\{([^}]*)\\}"; Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE); @@ -144,12 +170,18 @@ public class HeaderService { if(matcher.find()){ return matcher.group(1).trim(); } else - return "Not found"; // should replace for NULL ? + return "Not found"; } + /** + * MetĂłda na parsovanie autorov dokumentu do poÄľa a ich následnĂ© uloĹľenie do DBS + * + * @param author - jeden string so všetkĂ˝mi autormi dokumentu + * @return Zoznam uloĹľenĂ˝ch autorov + */ private List<Author> saveAuthorNameAndSurname(String author){ - // "and" divides our authors + // "and" divides our authors in the input String String[] authorNames = author.split(" and "); List<Author> authors = new ArrayList<>(); List<Author> databaseAuthors = authorRepository.findAll(); -- GitLab