diff --git a/src/main/java/com/dre0059/articleprocessor/controller/FileUploadController.java b/src/main/java/com/dre0059/articleprocessor/controller/FileUploadController.java index dc7f29ad973ecb2747faeaf25c80eb41562389b0..2b3dad959cd065826aad64bae262839f7a86ae1e 100644 --- a/src/main/java/com/dre0059/articleprocessor/controller/FileUploadController.java +++ b/src/main/java/com/dre0059/articleprocessor/controller/FileUploadController.java @@ -58,8 +58,8 @@ public class FileUploadController { headerService.processHeader(header); referenceService.extractReferences(references); - System.out.println(header); - //System.out.println(references); + //System.out.println(header); + System.out.println(references); tmpFile.delete(); diff --git a/src/main/java/com/dre0059/articleprocessor/model/Dokument.java b/src/main/java/com/dre0059/articleprocessor/model/Dokument.java index 086720db019cfb118ba122e86a72c947f4d413e9..1032698a0ad0dc9d8e7300f90c8c6ca446afe6ed 100644 --- a/src/main/java/com/dre0059/articleprocessor/model/Dokument.java +++ b/src/main/java/com/dre0059/articleprocessor/model/Dokument.java @@ -28,8 +28,9 @@ public class Dokument { //@Column(name = "abstractText", columnDefinition = "TEXT") //private String abstractText; - private Integer pages; + private String status; // if the value is PDF - the whole document was uploaded, otherwise the document was just mentioned in references private String publisher; + private String target; // http link @OneToMany(mappedBy = "fromDocument", cascade = CascadeType.ALL) private List<Reference> references = new ArrayList<>(); @@ -46,13 +47,12 @@ public class Dokument { public Dokument() {} - public Dokument(String title, Integer year, String doi, /*String abstractText,*/ Integer pages, String publisher) { + public Dokument(String title, Integer year, String doi,String publisher, String status) { this.title = title; this.publicationYear = year; this.doi = doi; - //this.abstractText = abstractText; - this.pages = pages; this.publisher = publisher; + this.status = status; } public Long getId() { return id; } @@ -60,7 +60,7 @@ public class Dokument { public Integer getYear() { return publicationYear; } public String getDoi() { return doi; } //public String getAbstractText() { return abstractText; } - public Integer getPages() { return pages; } + public String getStatus() { return status; } public String getPublisher() { return publisher; } public List<Reference> getReferences() { return references; } public List<Author> getAuthors() { return authors; } @@ -68,6 +68,7 @@ public class Dokument { public void setAuthors(List<Author> authors) { this.authors = authors; } public void setTitle(String title) { this.title = title; } + public void setTarget(String target) { this.target = target; } public void setPublicationYear(Integer publicationYear) { this.publicationYear = publicationYear; @@ -77,8 +78,8 @@ public class Dokument { this.doi = doi; } - public void setPages(Integer pages) { - this.pages = pages; + public void setStatus(String status) { + this.status = status; } public void setPublisher(String publisher) { diff --git a/src/main/java/com/dre0059/articleprocessor/model/Reference.java b/src/main/java/com/dre0059/articleprocessor/model/Reference.java index 6bb6af9288fdd0460b06f8adbe39b2db079e061c..e03045c4ef12ae83abab9daba170dce77c0facb8 100644 --- a/src/main/java/com/dre0059/articleprocessor/model/Reference.java +++ b/src/main/java/com/dre0059/articleprocessor/model/Reference.java @@ -21,8 +21,8 @@ public class Reference { private Dokument toDocument; public Reference() {} - public Reference(String orderNumber, Dokument fromDocument, Dokument toDocument) { - this.orderNumber = orderNumber; + public Reference(/*String orderNumber,*/ Dokument fromDocument, Dokument toDocument) { + //this.orderNumber = orderNumber; this.fromDocument = fromDocument; this.toDocument = toDocument; } diff --git a/src/main/java/com/dre0059/articleprocessor/service/HeaderService.java b/src/main/java/com/dre0059/articleprocessor/service/HeaderService.java index ff5a66a1101eff376ac77370002edd28bb350608..c4f8e5eaeec5654421ae19895e37b10f71b02d3e 100644 --- a/src/main/java/com/dre0059/articleprocessor/service/HeaderService.java +++ b/src/main/java/com/dre0059/articleprocessor/service/HeaderService.java @@ -84,7 +84,7 @@ public class HeaderService { } List<Author> savedAuthors = authorRepository.saveAll(authorList); - Dokument dokument = new Dokument(title, year, doi, pages, publisher); + Dokument dokument = new Dokument(title, year, doi, publisher, "PDF"); dokument.setAuthors(savedAuthors); this.documentRepository.save(dokument); diff --git a/src/main/java/com/dre0059/articleprocessor/service/ReferenceService.java b/src/main/java/com/dre0059/articleprocessor/service/ReferenceService.java index fd03a2355a6557a2629fceb7eb010419007bf339..74cfea52ded85ecee72f5603e20ca6e33079b2d6 100644 --- a/src/main/java/com/dre0059/articleprocessor/service/ReferenceService.java +++ b/src/main/java/com/dre0059/articleprocessor/service/ReferenceService.java @@ -87,6 +87,9 @@ public class ReferenceService { // Extract title - toDocument String title = xpath.evaluate(".//tei:title[@level='m' or @level='a']", biblNode); + if(title.isBlank()){ + title = xpath.evaluate(".//tei:title[@level='j']", biblNode); + } referencedDocument.setTitle(title); // Extract year of publication @@ -103,6 +106,10 @@ public class ReferenceService { String publisher = xpath.evaluate(".//tei:publisher", biblNode); referencedDocument.setPublisher(publisher); + // Extract publisher + String target = xpath.evaluate(".//tei:ptr/@target", biblNode); + referencedDocument.setTarget(target); + // Extract authors NodeList authorNodes = (NodeList) xpath.evaluate(".//tei:author/tei:persName", biblNode, XPathConstants.NODESET); List<Author> authors = new ArrayList<>(); @@ -128,7 +135,6 @@ public class ReferenceService { referencedDocument.setAuthors(authors); List<String> authorLastNames= authors.stream().map(Author::getLastname).toList(); - // check if document exists in dbs boolean exists = documentRepository.existsByTitleAndAuthorsIn(title, authorLastNames); @@ -145,12 +151,19 @@ public class ReferenceService { System.out.println("Document already exists in database : " + referencedDocument.getTitle() + " with ID : " + referencedDocument.getId()); } else { // create new dokument + referencedDocument.setStatus("Referenced"); this.setToDocument(referencedDocument); this.documentRepository.save(toDocument); this.authorRepository.saveAll(authors); } - Reference reference = new Reference("[i]", fromDocument, toDocument); + Reference reference = new Reference(/*referenceID,*/ fromDocument, toDocument); + + // extract ID from the document + String referenceID = xpath.evaluate("@*[local-name()='id']", biblNode); + System.out.println("referenceID: " + referenceID); + reference.setOrderNumber(referenceID); + referenceRepository.save(reference); } } catch (Exception e) {