Browse Source

Person Service

Andrew Grant 4 tháng trước cách đây
mục cha
commit
0f397d241b

+ 1 - 3
src/main/java/scot/carricksoftware/grantswriter/repositories/people/PersonRepository.java

@@ -5,14 +5,12 @@
 
 package scot.carricksoftware.grantswriter.repositories.people;
 
-import org.springframework.data.repository.PagingAndSortingRepository;
 import org.springframework.stereotype.Repository;
 import scot.carricksoftware.grantswriter.domains.people.Person;
 
 @SuppressWarnings("unused")
 @Repository
-public interface PersonRepository extends PagingAndSortingRepository<Person, Long> {
-
+public interface PersonRepository extends ReadOnlyRepository<Person, Long> {
 
 
 }

+ 18 - 0
src/main/java/scot/carricksoftware/grantswriter/repositories/people/ReadOnlyRepository.java

@@ -0,0 +1,18 @@
+/*
+ * Copyright (c) 2025.  Andrew Grant Carrick Software. All rights reserved
+ *
+ */
+
+package scot.carricksoftware.grantswriter.repositories.people;
+
+import org.springframework.data.repository.NoRepositoryBean;
+import org.springframework.data.repository.Repository;
+
+import java.util.List;
+import java.util.Optional;
+
+@NoRepositoryBean
+public interface ReadOnlyRepository<T, ID> extends Repository<T, ID> {
+    Optional<T> findById(ID id);
+    List<T> findAll();
+}

+ 17 - 0
src/main/java/scot/carricksoftware/grantswriter/services/people/PersonService.java

@@ -0,0 +1,17 @@
+/*
+ * Copyright (c) 2025.  Andrew Grant Carrick Software. All rights reserved
+ *
+ */
+
+package scot.carricksoftware.grantswriter.services.people;
+
+import scot.carricksoftware.grantswriter.domains.people.Person;
+
+import java.util.List;
+
+public interface PersonService {
+
+    @SuppressWarnings("unused")
+    List<Person> findAll();
+
+}

+ 37 - 0
src/main/java/scot/carricksoftware/grantswriter/services/people/PersonServiceImpl.java

@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2025.  Andrew Grant Carrick Software. All rights reserved
+ *
+ */
+
+package scot.carricksoftware.grantswriter.services.people;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.springframework.stereotype.Service;
+import scot.carricksoftware.grantswriter.domains.people.Person;
+import scot.carricksoftware.grantswriter.repositories.people.PersonRepository;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Service
+public class PersonServiceImpl implements PersonService {
+
+    private static final Logger logger = LogManager.getLogger(PersonServiceImpl.class);
+
+    private final PersonRepository personRepository;
+
+    public PersonServiceImpl(PersonRepository personRepository) {
+        this.personRepository = personRepository;
+    }
+
+    @Override
+    public List<Person> findAll() {
+        logger.debug("PersonServiceImpl::findAll");
+        List<Person> result = new ArrayList<>();
+        Iterable<Person> personIterable = personRepository.findAll();
+        personIterable.forEach(result::add);
+        return result;
+    }
+
+}

+ 34 - 0
src/test/java/scot/carricksoftware/grantswriter/services/people/PersonServiceTest.java

@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2025.  Andrew Grant Carrick Software. All rights reserved
+ *
+ */
+
+package scot.carricksoftware.grantswriter.services.people;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.Mock;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
+import scot.carricksoftware.grantswriter.repositories.people.PersonRepository;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+@ExtendWith(SpringExtension.class)
+class PersonServiceTest {
+
+    private PersonService service;
+
+    @Mock
+    private PersonRepository personRepository;
+
+    @BeforeEach
+    void setUp() {
+        service = new PersonServiceImpl(personRepository);
+    }
+
+    @Test
+    void constructorTest() {
+        assertNotNull(service);
+    }
+}