Skip to content
Snippets Groups Projects
Commit 50c09547 authored by dre0059's avatar dre0059
Browse files

Dokumentácia update

parent acfa19d6
Branches
No related merge requests found
Showing
with 163 additions and 79 deletions
/**
*
* Autor: Eliška Kozáčiková
* Škola: VŠB-TUO
* Fakulta: Fakulta Elektrotechniky a informatiky
* Dátum: 30.04.2025
*/
package com.dre0059.articleprocessor.model;
/**
* Trieda Reference reprezentuje referenciu medzi dvoma dokumentmi.
* Každá referencia obsahuje :
* - číslo alebo písmeno pre označenie poradia
* - vzťahy medzi dokumentmi (dokument ktorý obsahuje zoznam referencií (from) a referencovaný dokument (to)).
*/
import jakarta.persistence.*;
@Entity
......
/**
*
* Autor: Eliška Kozáčiková
* Škola: VŠB-TUO
* Fakulta: Fakulta Elektrotechniky a informatiky
* Dátum: 30.04.2025
*/
package com.dre0059.articleprocessor.model;
import jakarta.persistence.*;
......@@ -10,6 +17,13 @@ import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
* Trieda Tag reprezentuje tag (kĺúčové slovo), ktorý môže byť priradený dokumentu.
* Každý tag má unikátny názov - neexistujú duplicity
*
* Tagy sú spojené s dokumentmi (M:N vzťah)
* jeden dokument môže mať viacero tagov a jeden tag môže byť priradený viacerým dokumentom (M:N vzťah).
*/
@Entity
@NoArgsConstructor
@Getter
......
/**
*
* Autor: Eliška Kozáčiková
* Škola: VŠB-TUO
* Fakulta: Fakulta Elektrotechniky a informatiky
* Dátum: 30.04.2025
*/
package com.dre0059.articleprocessor.repository;
import com.dre0059.articleprocessor.model.Author;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
/**
* Repository pre prácu s entitou Author (pristupuje k DBS)
* Rozširuje JpaRepository pre poskytovanie CRUD operácií
*
*/
@Repository
public interface AuthorRepository extends JpaRepository<Author, Long> {
/*@Query("SELECT CASE WHEN COUNT(a) > 0 THEN true ELSE false END FROM Author a WHERE a.lastName = :lastName AND a.firstName = :firstName")
Optional<Author> findByLastNameAndInitial(@Param("lastName") String lastName, @Param("firstName") String firstName);
*/
Author findByLastNameAndFirstName(String lastName, String firstName);
}
/**
*
* Autor: Eliška Kozáčiková
* Škola: VŠB-TUO
* Fakulta: Fakulta Elektrotechniky a informatiky
* Dátum: 30.04.2025
*/
package com.dre0059.articleprocessor.repository;
import com.dre0059.articleprocessor.model.Category;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
/**
* Repository pre prácu s entitou Category.
* Rozširuje JpaRepository pre poskytovanie CRUD operácií.
* Obsahuje metódu na vyhľadávanie kategórie podľa názvu.
*/
@Repository
public interface CategoryRepository extends JpaRepository<Category, String> {
Category findByName(String name);
......
/**
*
* Autor: Eliška Kozáčiková
* Škola: VŠB-TUO
* Fakulta: Fakulta Elektrotechniky a informatiky
* Dátum: 30.04.2025
*/
package com.dre0059.articleprocessor.repository;
import com.dre0059.articleprocessor.model.*;
......@@ -11,7 +18,18 @@ import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Optional;
// uklada extrahovane data
/**
* Repository pre prácu s entitou Dokument.
* Rozširuje JpaRepository pre poskytovanie CRUD operácií
*
* Obsahuje metódy, ktoré využívajú JPA Query Language a EntityGraph
na získavanie dokumentov a ich vzťahov (autori, tagy a referencie)
*
* metódy na :
* - kontrolu existencie dokumentu s rovnakým názvom a autormi
* - vyhľadávanie dokumentu podľa názvu a autorov
* - zistenie referencií medzi dokumentmi.
*/
@Repository
public interface DocumentRepository extends JpaRepository<Dokument, Long> {
......
/**
*
* Autor: Eliška Kozáčiková
* Škola: VŠB-TUO
* Fakulta: Fakulta Elektrotechniky a informatiky
* Dátum: 30.04.2025
*/
package com.dre0059.articleprocessor.repository;
import com.dre0059.articleprocessor.model.Reference;
......@@ -7,6 +14,17 @@ import org.springframework.data.repository.query.Param;
import java.util.List;
/**
* Repository pre prácu s entitou Reference.
* Rozširuje JpaRepository pre poskytovanie CRUD
*
* Obsahuje metódy na získavanie referencií medzi dokumentmi,
* ako aj na počítanie referencií podľa roka a kategórie.
*
* metódy na :
* - mazanie referencií
* - vyhľadávanie podľa dokumentov (fromDocument alebo toDocument)
*/
public interface ReferenceRepository extends JpaRepository<Reference, Long> {
@Query("""
......
/**
*
* Autor: Eliška Kozáčiková
* Škola: VŠB-TUO
* Fakulta: Fakulta Elektrotechniky a informatiky
* Dátum: 30.04.2025
*/
package com.dre0059.articleprocessor.repository;
import com.dre0059.articleprocessor.model.Tag;
......@@ -6,9 +13,15 @@ import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
import java.util.Optional;
/**
* Repository pre prácu s entitou Tag.
* Rozširuje JpaRepository pre poskytovanie CRUD operácií.
*
* metódy na :
* - vyhľadávanie tagov podľa názvu
* - vyhľadávanie tagov podľa podreťazca
*/
public interface TagRepository extends JpaRepository<Tag, Long> {
Optional<Tag> findByTitle(String title);
List<Tag> findByTitleContainingIgnoreCase(String term); // musí vracať List<Tag>
Optional<Tag> findByTitleIgnoreCase(String title);
......
/**
*
* Autor: Eliška Kozáčiková
* Škola: VŠB-TUO
* Fakulta: Fakulta Elektrotechniky a informatiky
* Dátum: 30.04.2025
*/
package com.dre0059.articleprocessor.service;
import com.dre0059.articleprocessor.dto.CategoryDto;
......@@ -6,21 +13,32 @@ import com.dre0059.articleprocessor.repository.CategoryRepository;
import java.util.List;
import org.springframework.stereotype.Service;
/**
* Trieda manipuláciu s kategóriami dokumentov.
* *
* metódy na :
* - získavanie jednotlivých kategórií
* - získavanie zoznamu všetkých kategórií.
*
* Kategórie sú získavané z databázy cez repository a následne mapované na DTO objekty.
* *
*/
@Service
public class CategoryService {
private final CategoryMapper categoryMapper;
private final CategoryRepository categoryRepository;
private final CategoryMapper categoryMapper; // Mapper na mapovanie medzi entitami a DTO
private final CategoryRepository categoryRepository; // Repository pre prístup k databáze kategórií
public CategoryService(CategoryMapper categoryMapper, CategoryRepository categoryRepository) {
this.categoryMapper = categoryMapper;
this.categoryRepository = categoryRepository;
}
public CategoryDto getCategory(String id) {
return categoryMapper.toCategoryDto(categoryRepository.findById(id).orElse(null));
}
/**
* Získa zoznam všetkých kategórií.
*
* @return Zoznam DTO objektov všetkých kategórií
*/
public List<CategoryDto> getAll() {
return categoryMapper.toCategoryDtoList(categoryRepository.findAll());
}
......
/**
*
* Autor: Eliška Kozáčiková
* Škola: VŠB-TUO
* Fakulta: Fakulta Elektrotechniky a informatiky
* Dátum: 30.04.2025
*/
package com.dre0059.articleprocessor.service;
import com.dre0059.articleprocessor.dto.DocumentContentDto;
......
/**
*
* Autor: Eliška Kozáčiková
* Škola: VŠB-TUO
* Fakulta: Fakulta Elektrotechniky a informatiky
* Dátum: 30.04.2025
*/
package com.dre0059.articleprocessor.service;
import com.dre0059.articleprocessor.model.Author;
......
/**
*
* Autor: Eliška Kozáčiková
* Škola: VŠB-TUO
* Fakulta: Fakulta Elektrotechniky a informatiky
* Dátum: 30.04.2025
*/
package com.dre0059.articleprocessor.service;
import com.dre0059.articleprocessor.model.Author;
......
/**
*
* Autor: Eliška Kozáčiková
* Škola: VŠB-TUO
* Fakulta: Fakulta Elektrotechniky a informatiky
* Dátum: 30.04.2025
*/
package com.dre0059.articleprocessor.service;
import javax.xml.namespace.NamespaceContext;
......
/*package com.dre0059.articleprocessor.service;
import com.dre0059.articleprocessor.model.Author;
import com.dre0059.articleprocessor.model.Dokument;
import com.dre0059.articleprocessor.model.Reference;
import com.dre0059.articleprocessor.service.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.w3c.dom.*;
import org.xml.sax.InputSource;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;
@Service
public class TEIparser {
@Autowired
private ReferenceService referenceService;
@Autowired
private DocumentService documentService;
public void processReferences(String xmlContent, Dokument parentDocument){
try{
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = dbFactory.newDocumentBuilder();
Document doc = builder.parse(new InputSource(new StringReader(xmlContent)));
NodeList biblioEntries = doc.getElementsByTagName("biblStruct");
for(int i = 0; i < biblioEntries.getLength(); i++){
Element biblEntry = (Element) biblioEntries.item(i);
String title = biblEntry.getElementsByTagName("title").item(0).getTextContent();
String authorSurname = biblEntry.getElementsByTagName("surname").item(0).getTextContent();
Dokument referencedDocument = new Dokument();
referencedDocument.setTitle(title);
Author author = new Author();
author.setLastname(authorSurname);
referencedDocument.setAuthors(List.of(author));
Dokument savedReferencedDocument = documentService.saveDocument(referencedDocument);
// save Dokument
Reference reference = new Reference();
reference.setFromDocument(parentDocument);
reference.setToDocument(savedReferencedDocument);
referenceService.saveReference(reference);
}
} catch (Exception e){
e.printStackTrace();
}
}
}
*/
\ No newline at end of file
/**
*
* Autor: Eliška Kozáčiková
* Škola: VŠB-TUO
* Fakulta: Fakulta Elektrotechniky a informatiky
* Dátum: 30.04.2025
*/
package com.dre0059.articleprocessor;
import org.junit.jupiter.api.Test;
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment