Merge branch 'DEVELOP' of ssh://git.eclipse.org:29418/openk-usermodules/org.eclipse.openk-usermodules.contactBaseData.backend into KON_110-SpringSecurity
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/controller/AddressController.java b/src/main/java/org/eclipse/openk/contactbasedata/controller/AddressController.java
index e5ef1be..5ac7356 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/controller/AddressController.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/controller/AddressController.java
@@ -43,62 +43,4 @@
return addressService.getAddressesByContactUuid(contactUuid);
}
-
-// @GetMapping("/{salutationUuid}")
-// @ApiOperation(value = "Suchen einer Anrede per UUID")
-// @ResponseStatus(HttpStatus.OK)
-// @ApiResponses(value = {
-// @ApiResponse(code = 400, message = "Ungültige Anfrage."),
-// @ApiResponse(code = 200, message = "Anrede gefunden")})
-// public SalutationDto getSalutation(@PathVariable UUID salutationUuid) {
-//
-// return salutationService.getSalutationByUuid(salutationUuid);
-// }
-//
-//
-// @PostMapping
-// @ApiOperation(value = "Anlegen einer neuen Anrede")
-// @ApiResponses(value = {
-// @ApiResponse(code = 200, message = "Anrede erfolgreich angelegt"),
-// @ApiResponse(code = 500, message = "Konnte nicht durchgeführt werden")
-// })
-// public ResponseEntity<SalutationDto> insertSalutation(@Validated @RequestBody SalutationDto salutationDto) {
-// SalutationDto savedSalutationDto = salutationService.insertSalutation(salutationDto);
-// URI location = ServletUriComponentsBuilder
-// .fromCurrentRequestUri()
-// .path("/{uuid}")
-// .buildAndExpand(savedSalutationDto.getUuid())
-// .toUri();
-// return ResponseEntity.created(location).body(savedSalutationDto);
-// }
-//
-//
-// @PutMapping("/{salutationUuid}")
-// @ApiOperation(value = "Ändern einer Anrede")
-// @ApiResponses(value = {
-// @ApiResponse(code = 200, message = "Anrede wurde erfolgreich aktualisiert"),
-// @ApiResponse(code = 400, message = "Ungültige Eingabe"),
-// @ApiResponse(code = 404, message = "Nicht gefunden")})
-// public ResponseEntity updateSupplier(@PathVariable UUID salutationUuid, @Validated @RequestBody SalutationDto salutationDto) {
-//
-// if (!salutationDto.getUuid().equals(salutationUuid)) {
-// throw new BadRequestException("invalid.uuid.path.object");
-// }
-//
-// salutationService.updateSalutation(salutationDto);
-// return ResponseEntity.ok().build();
-// }
-//
-//
-// @DeleteMapping("/{uuid}")
-// @ResponseStatus(HttpStatus.OK)
-// @ApiOperation(value = "Anrede löschen")
-// @ApiResponses(value = {
-// @ApiResponse(code = 204, message = "Erfolgreich durchgeführt"),
-// @ApiResponse(code = 400, message = "Ungültige Anfrage"),
-// @ApiResponse(code = 404, message = "Nicht gefunden")})
-// public void removeSalutation(@PathVariable UUID uuid) {
-// salutationService.removeSalutation(uuid);
-// }
-
}
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/controller/CommunicationTypeController.java b/src/main/java/org/eclipse/openk/contactbasedata/controller/CommunicationTypeController.java
index fe6b031..f0e5f71 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/controller/CommunicationTypeController.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/controller/CommunicationTypeController.java
@@ -5,21 +5,14 @@
import io.swagger.annotations.ApiResponses;
import lombok.extern.log4j.Log4j2;
import org.eclipse.openk.contactbasedata.exceptions.BadRequestException;
-import org.eclipse.openk.contactbasedata.service.CommunicationTypeService;
-import org.eclipse.openk.contactbasedata.service.ExternalPersonService;
+import org.eclipse.openk.contactbasedata.service.CommunicationTypeService;;
import org.eclipse.openk.contactbasedata.viewmodel.CommunicationTypeDto;
-import org.eclipse.openk.contactbasedata.viewmodel.ExternalPersonDto;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Pageable;
-import org.springframework.data.domain.Sort;
-import org.springframework.data.web.PageableDefault;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.support.ServletUriComponentsBuilder;
-
import java.net.URI;
import java.util.List;
import java.util.UUID;
@@ -76,8 +69,7 @@
public ResponseEntity updateCommunicationType(@PathVariable UUID uuid, @Validated @RequestBody CommunicationTypeDto communicationTypeDto) {
if (!communicationTypeDto.getUuid().equals(uuid)) {
- // TODO: Msg extrahieren
- throw new BadRequestException("Die Id des Pfades stimmt nicht mit der des Objekts überein");
+ throw new BadRequestException("invalid.uuid.path.object");
}
communicationTypeService.updateCommunicationType(communicationTypeDto);
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/controller/ExternalPersonController.java b/src/main/java/org/eclipse/openk/contactbasedata/controller/ExternalPersonController.java
index 367b648..87d10d7 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/controller/ExternalPersonController.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/controller/ExternalPersonController.java
@@ -28,7 +28,6 @@
@Autowired
private ExternalPersonService externalPersonService;
-
@GetMapping("/{contactUuid}")
@ApiOperation(value = "Anzeigen einer externen Person")
@ApiResponses(value = { @ApiResponse(code = 200, message = "Erfolgreich durchgeführt"),
@@ -39,7 +38,7 @@
}
@GetMapping
- @ApiOperation(value = "Anzeigen aller externen Personen", notes = "Sortieren ist möglich. Lieferanten werden seitenweise geliefert.")
+ @ApiOperation(value = "Anzeigen aller externen Personen", notes = "Sortieren ist möglich. Externe Personen werden seitenweise geliefert.")
@ResponseStatus(HttpStatus.OK)
@ApiResponses(value = {
@ApiResponse(code = 200, message = "Erfolgreich durchgeführt")})
@@ -74,8 +73,7 @@
public ResponseEntity updateExternalPerson(@PathVariable UUID contactUuid, @Validated @RequestBody ExternalPersonDto externalPersonDto) {
if (!externalPersonDto.getContactId().equals(contactUuid)) {
- // TODO: Msg extrahieren
- throw new BadRequestException("Die Id des Pfades stimmt nicht mit der des Objekts überein");
+ throw new BadRequestException("invalid.uuid.path.object");
}
externalPersonService.updateExternalPerson(externalPersonDto);
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/controller/InternalPersonController.java b/src/main/java/org/eclipse/openk/contactbasedata/controller/InternalPersonController.java
new file mode 100644
index 0000000..2322a6a
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/contactbasedata/controller/InternalPersonController.java
@@ -0,0 +1,82 @@
+package org.eclipse.openk.contactbasedata.controller;
+
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import lombok.extern.log4j.Log4j2;
+import org.eclipse.openk.contactbasedata.exceptions.BadRequestException;
+import org.eclipse.openk.contactbasedata.service.InternalPersonService;
+import org.eclipse.openk.contactbasedata.viewmodel.InternalPersonDto;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.web.PageableDefault;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.support.ServletUriComponentsBuilder;
+import java.net.URI;
+import java.util.UUID;
+
+@Log4j2
+@RestController
+@RequestMapping("/internal-persons")
+public class InternalPersonController {
+ @Autowired
+ private InternalPersonService internalPersonService;
+
+ @GetMapping("/{contactUuid}")
+ @ApiOperation(value = "Anzeigen einer internen Person")
+ @ApiResponses(value = { @ApiResponse(code = 200, message = "Erfolgreich durchgeführt"),
+ @ApiResponse(code = 404, message = "Person wurde nicht gefunden")})
+ @ResponseStatus(HttpStatus.OK)
+ public InternalPersonDto getInternalPerson(@PathVariable UUID contactUuid) {
+ return internalPersonService.findInternalPerson(contactUuid);
+ }
+
+ @GetMapping
+ @ApiOperation(value = "Anzeigen aller internen Personen", notes = "Sortieren ist möglich. Interne Personen werden seitenweise geliefert.")
+ @ResponseStatus(HttpStatus.OK)
+ @ApiResponses(value = {
+ @ApiResponse(code = 200, message = "Erfolgreich durchgeführt")})
+ public Page<InternalPersonDto> readInternalPersons(
+ @PageableDefault(sort = {"lastName"}, direction = Sort.Direction.ASC) Pageable pageable){
+ return internalPersonService.findInternalPersons(pageable);
+ }
+
+ @PostMapping
+ @ApiOperation(value = "Anlegen einer internen Person")
+ @ApiResponses(value = {
+ @ApiResponse(code = 201, message = "interne Person erfolgreich angelegt"),
+ @ApiResponse(code = 500, message = "Konnte nicht durchgeführt werden")
+ })
+ public ResponseEntity<InternalPersonDto> insertInternalPerson(
+ @Validated @RequestBody InternalPersonDto internalPersonDto) {
+ InternalPersonDto savedInternalPersonDto = internalPersonService.insertInternalPerson(internalPersonDto);
+ URI location = ServletUriComponentsBuilder
+ .fromCurrentRequestUri()
+ .path("/{uuid}")
+ .buildAndExpand(savedInternalPersonDto.getContactId())
+ .toUri();
+ return ResponseEntity.created(location).body(savedInternalPersonDto);
+ }
+
+ @PutMapping("/{contactUuid}")
+ @ApiOperation(value = "Ändern einer internen Person")
+ @ApiResponses(value = {
+ @ApiResponse(code = 200, message = "Interne Person wurde aktualisiert"),
+ @ApiResponse(code = 400, message = "Ungültige Eingabe"),
+ @ApiResponse(code = 404, message = "Nicht gefunden")})
+ public ResponseEntity updateInternalPerson(@PathVariable UUID contactUuid, @Validated @RequestBody InternalPersonDto internalPersonDto) {
+
+ if (!internalPersonDto.getContactId().equals(contactUuid)) {
+ throw new BadRequestException("invalid.uuid.path.object");
+ }
+
+ internalPersonService.updateInternalPerson(internalPersonDto);
+ return ResponseEntity.ok().build();
+ }
+}
+
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/controller/SalutationController.java b/src/main/java/org/eclipse/openk/contactbasedata/controller/SalutationController.java
index 0bf4bb8..1176ec3 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/controller/SalutationController.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/controller/SalutationController.java
@@ -84,7 +84,7 @@
@ApiResponse(code = 200, message = "Anrede wurde erfolgreich aktualisiert"),
@ApiResponse(code = 400, message = "Ungültige Eingabe"),
@ApiResponse(code = 404, message = "Nicht gefunden")})
- public ResponseEntity updateSupplier(@PathVariable UUID salutationUuid, @Validated @RequestBody SalutationDto salutationDto) {
+ public ResponseEntity updateSalutation(@PathVariable UUID salutationUuid, @Validated @RequestBody SalutationDto salutationDto) {
if (!salutationDto.getUuid().equals(salutationUuid)) {
throw new BadRequestException("invalid.uuid.path.object");
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/mapper/CommunicationTypeMapper.java b/src/main/java/org/eclipse/openk/contactbasedata/mapper/CommunicationTypeMapper.java
index 958fd5d..99b947f 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/mapper/CommunicationTypeMapper.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/mapper/CommunicationTypeMapper.java
@@ -15,7 +15,6 @@
package org.eclipse.openk.contactbasedata.mapper;
import org.eclipse.openk.contactbasedata.model.RefCommunicationType;
-import org.eclipse.openk.contactbasedata.viewmodel.CommunicationDto;
import org.eclipse.openk.contactbasedata.viewmodel.CommunicationTypeDto;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/mapper/InternalPersonMapper.java b/src/main/java/org/eclipse/openk/contactbasedata/mapper/InternalPersonMapper.java
index d0855a9..e1f28c6 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/mapper/InternalPersonMapper.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/mapper/InternalPersonMapper.java
@@ -15,7 +15,6 @@
package org.eclipse.openk.contactbasedata.mapper;
import org.eclipse.openk.contactbasedata.model.TblInternalPerson;
-import org.eclipse.openk.contactbasedata.viewmodel.ExternalPersonDto;
import org.eclipse.openk.contactbasedata.viewmodel.InternalPersonDto;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
@@ -25,8 +24,26 @@
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface InternalPersonMapper {
+
@Mappings({
- @Mapping( source="contact.uuid", target="id")
+ @Mapping( source="contact.uuid", target="contactId"),
+ @Mapping( source="contact.contactType", target="contactType"),
+ @Mapping( source="contact.note", target="contactNote"),
+ @Mapping( source="refPersonType.uuid", target="personTypeId"),
+ @Mapping( source="refPersonType.type", target="personType"),
+ @Mapping( source="salutation.uuid", target="salutationId"),
+ @Mapping( source="salutation.type", target="salutationType")
})
InternalPersonDto toInternalPersonDto(TblInternalPerson tblInternalPerson);
+
+ @Mappings({
+ @Mapping( source="contactId", target="contact.uuid"),
+ @Mapping( source="contactType", target="contact.contactType"),
+ @Mapping( source="contactNote", target="contact.note"),
+ @Mapping( source="personTypeId", target="refPersonType.uuid"),
+ @Mapping( source="personType", target="refPersonType.type"),
+ @Mapping( source="salutationId", target="salutation.uuid"),
+ @Mapping( source="salutationType", target="salutation.type")
+ })
+ TblInternalPerson toTblInternalPerson(InternalPersonDto internalPersonDto);
}
\ No newline at end of file
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/model/TblInternalPerson.java b/src/main/java/org/eclipse/openk/contactbasedata/model/TblInternalPerson.java
index 99a67ea..19c3b23 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/model/TblInternalPerson.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/model/TblInternalPerson.java
@@ -30,17 +30,21 @@
private String firstName;
private String lastName;
private String title;
+ private String department;
private String sid;
private String userRef;
@OneToOne
+ @JoinColumn( name = "fk_contact_id")
private TblContact contact;
- @OneToOne
- private RefSalutation refSalutation;
+ @ManyToOne
+ @JoinColumn( name = "fk_salutation_id")
+ private RefSalutation salutation;
- @OneToOne
+ @ManyToOne
+ @JoinColumn( name = "fk_ref_person_type_id")
private RefPersonType refPersonType;
}
\ No newline at end of file
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/repository/AddressRepository.java b/src/main/java/org/eclipse/openk/contactbasedata/repository/AddressRepository.java
index 085eb00..d7e4bc5 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/repository/AddressRepository.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/repository/AddressRepository.java
@@ -14,13 +14,10 @@
*/
package org.eclipse.openk.contactbasedata.repository;
-import org.eclipse.openk.contactbasedata.model.RefSalutation;
import org.eclipse.openk.contactbasedata.model.TblAddress;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
-
import java.util.List;
-import java.util.Optional;
import java.util.UUID;
public interface AddressRepository extends JpaRepository<TblAddress, Long> {
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/repository/CommunicationTypeRepository.java b/src/main/java/org/eclipse/openk/contactbasedata/repository/CommunicationTypeRepository.java
index 61eed73..af45b7e 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/repository/CommunicationTypeRepository.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/repository/CommunicationTypeRepository.java
@@ -1,10 +1,7 @@
package org.eclipse.openk.contactbasedata.repository;
import org.eclipse.openk.contactbasedata.model.RefCommunicationType;
-import org.eclipse.openk.contactbasedata.model.TblExternalPerson;
import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.Query;
-
import java.util.Optional;
import java.util.UUID;
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/repository/ContactRepository.java b/src/main/java/org/eclipse/openk/contactbasedata/repository/ContactRepository.java
index c32af23..76de05a 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/repository/ContactRepository.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/repository/ContactRepository.java
@@ -2,7 +2,6 @@
import org.eclipse.openk.contactbasedata.model.TblContact;
import org.springframework.data.jpa.repository.JpaRepository;
-
import java.util.Optional;
import java.util.UUID;
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/repository/ExternalPersonRepository.java b/src/main/java/org/eclipse/openk/contactbasedata/repository/ExternalPersonRepository.java
index 4f9dd2e..b09ea8f 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/repository/ExternalPersonRepository.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/repository/ExternalPersonRepository.java
@@ -3,7 +3,6 @@
import org.eclipse.openk.contactbasedata.model.TblExternalPerson;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
-
import java.util.Optional;
import java.util.UUID;
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/repository/InternalPersonRepository.java b/src/main/java/org/eclipse/openk/contactbasedata/repository/InternalPersonRepository.java
new file mode 100644
index 0000000..a2f7a8b
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/contactbasedata/repository/InternalPersonRepository.java
@@ -0,0 +1,13 @@
+package org.eclipse.openk.contactbasedata.repository;
+
+import org.eclipse.openk.contactbasedata.model.TblInternalPerson;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import java.util.Optional;
+import java.util.UUID;
+
+public interface InternalPersonRepository extends JpaRepository<TblInternalPerson, Long > {
+ @Query("select ip from TblInternalPerson ip where ip.contact.uuid = ?1")
+ Optional< TblInternalPerson > findByTblContactUuid(final UUID contactUuid);
+
+}
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/repository/PersonTypeRepository.java b/src/main/java/org/eclipse/openk/contactbasedata/repository/PersonTypeRepository.java
index 35276b2..98b0d7a 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/repository/PersonTypeRepository.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/repository/PersonTypeRepository.java
@@ -15,7 +15,6 @@
package org.eclipse.openk.contactbasedata.repository;
import org.eclipse.openk.contactbasedata.model.RefPersonType;
-import org.eclipse.openk.contactbasedata.model.RefSalutation;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/repository/SalutationRepository.java b/src/main/java/org/eclipse/openk/contactbasedata/repository/SalutationRepository.java
index 511685f..ed70443 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/repository/SalutationRepository.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/repository/SalutationRepository.java
@@ -16,7 +16,6 @@
import org.eclipse.openk.contactbasedata.model.RefSalutation;
import org.springframework.data.jpa.repository.JpaRepository;
-
import java.util.List;
import java.util.Optional;
import java.util.UUID;
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/service/AddressService.java b/src/main/java/org/eclipse/openk/contactbasedata/service/AddressService.java
index e03ec03..37d932e 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/service/AddressService.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/service/AddressService.java
@@ -15,20 +15,12 @@
package org.eclipse.openk.contactbasedata.service;
import lombok.extern.log4j.Log4j2;
-import org.eclipse.openk.contactbasedata.exceptions.BadRequestException;
-import org.eclipse.openk.contactbasedata.exceptions.NotFoundException;
import org.eclipse.openk.contactbasedata.mapper.AddressMapper;
-import org.eclipse.openk.contactbasedata.mapper.SalutationMapper;
-import org.eclipse.openk.contactbasedata.model.RefSalutation;
import org.eclipse.openk.contactbasedata.model.TblAddress;
import org.eclipse.openk.contactbasedata.repository.AddressRepository;
-import org.eclipse.openk.contactbasedata.repository.SalutationRepository;
import org.eclipse.openk.contactbasedata.viewmodel.AddressDto;
-import org.eclipse.openk.contactbasedata.viewmodel.SalutationDto;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Page;
import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.UUID;
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/service/BaseContactService.java b/src/main/java/org/eclipse/openk/contactbasedata/service/BaseContactService.java
index 6c7c357..8ef4c32 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/service/BaseContactService.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/service/BaseContactService.java
@@ -27,10 +27,9 @@
public TblContact getContact(UUID contactUuid){
- //TODO: Fehlermeldung mit message!
return contactRepository
.findByUuid(contactUuid)
- .orElseThrow(() -> new NotFoundException("Der Kontakt konnte nicht gefunden werden"));
+ .orElseThrow(() -> new NotFoundException("contact.not.found"));
}
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/service/CommunicationTypeService.java b/src/main/java/org/eclipse/openk/contactbasedata/service/CommunicationTypeService.java
index ddc7a6c..c7bc333 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/service/CommunicationTypeService.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/service/CommunicationTypeService.java
@@ -1,22 +1,13 @@
package org.eclipse.openk.contactbasedata.service;
import lombok.extern.log4j.Log4j2;
-import org.eclipse.openk.contactbasedata.constants.Constants;
-import org.eclipse.openk.contactbasedata.exceptions.BadRequestException;
import org.eclipse.openk.contactbasedata.exceptions.NotFoundException;
import org.eclipse.openk.contactbasedata.mapper.CommunicationTypeMapper;
-import org.eclipse.openk.contactbasedata.mapper.ContactMapper;
-import org.eclipse.openk.contactbasedata.mapper.ExternalPersonMapper;
import org.eclipse.openk.contactbasedata.model.*;
import org.eclipse.openk.contactbasedata.repository.*;
import org.eclipse.openk.contactbasedata.viewmodel.CommunicationTypeDto;
-import org.eclipse.openk.contactbasedata.viewmodel.ExternalPersonDto;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/service/ExternalPersonService.java b/src/main/java/org/eclipse/openk/contactbasedata/service/ExternalPersonService.java
index 6ba6e67..2c1b8db 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/service/ExternalPersonService.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/service/ExternalPersonService.java
@@ -83,17 +83,12 @@
.findByTblContactUuid(externalPersonDto.getContactId())
.orElseThrow(() -> new NotFoundException("contact.uuid.not.existing"));
-// TblExternalPerson externalPersonToSave = externalPersonMapper.toTblExternalPerson(externalPersonDto);
-// externalPersonToSave.setId(existingExternalPerson.getId());
-
existingExternalPerson.setLastName(externalPersonDto.getLastName());
existingExternalPerson.setFirstName(externalPersonDto.getFirstName());
existingExternalPerson.setTitle(externalPersonDto.getTitle());
setFromExternalPersonDto( existingExternalPerson, externalPersonDto );
- //setFromExternalPersonDto( externalPersonToSave, externalPersonDto );
externalPersonUpdated = externalPersonRepository.save(existingExternalPerson);
- //externalPersonUpdated = externalPersonRepository.save(externalPersonToSave);
return externalPersonMapper.toExternalPersonDto(externalPersonUpdated);
}
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/service/InternalPersonService.java b/src/main/java/org/eclipse/openk/contactbasedata/service/InternalPersonService.java
new file mode 100644
index 0000000..a8afa8f
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/contactbasedata/service/InternalPersonService.java
@@ -0,0 +1,103 @@
+package org.eclipse.openk.contactbasedata.service;
+
+import lombok.extern.log4j.Log4j2;
+import org.eclipse.openk.contactbasedata.constants.Constants;
+import org.eclipse.openk.contactbasedata.exceptions.NotFoundException;
+import org.eclipse.openk.contactbasedata.mapper.ContactMapper;
+import org.eclipse.openk.contactbasedata.mapper.InternalPersonMapper;
+import org.eclipse.openk.contactbasedata.model.*;
+import org.eclipse.openk.contactbasedata.repository.*;
+import org.eclipse.openk.contactbasedata.viewmodel.InternalPersonDto;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.UUID;
+
+@Log4j2
+@Service
+public class InternalPersonService {
+ @Autowired
+ private InternalPersonRepository internalPersonRepository;
+
+ @Autowired
+ private ContactRepository contactRepository;
+
+ @Autowired
+ private SalutationRepository salutationRepository;
+
+ @Autowired
+ private PersonTypeRepository personTypeRepository;
+
+ @Autowired
+ private InternalPersonMapper internalPersonMapper;
+
+ @Autowired
+ private ContactMapper contactMapper;
+
+ @Autowired
+ private BaseContactService baseContactService;
+
+ public InternalPersonDto findInternalPerson(UUID contactUuid) {
+ return internalPersonMapper.toInternalPersonDto(
+ internalPersonRepository.findByTblContactUuid(contactUuid).orElseThrow(NotFoundException::new)
+ );
+ }
+
+ public Page<InternalPersonDto> findInternalPersons(Pageable pageable) {
+ return internalPersonRepository.findAll(pageable).map(internalPersonMapper::toInternalPersonDto);
+ }
+
+
+ @Transactional
+ public InternalPersonDto insertInternalPerson(InternalPersonDto internalPersonDto) {
+ TblContact contactToSave = new TblContact();
+ contactToSave.setUuid(UUID.randomUUID());
+ contactToSave.setContactType(Constants.CONTACT_TYPE_INTERNAL_PERSON);
+
+ TblInternalPerson internalPersonToSave = internalPersonMapper.toTblInternalPerson(internalPersonDto);
+ internalPersonToSave.setContact(contactToSave);
+ contactRepository.save(internalPersonToSave.getContact());
+
+ setFromInternalPersonDto( internalPersonToSave, internalPersonDto );
+ // Save Contact first
+
+ // Then save dependent Model-Object
+ return internalPersonMapper.toInternalPersonDto(internalPersonRepository.save(internalPersonToSave));
+ }
+
+ @Transactional
+ public InternalPersonDto updateInternalPerson(InternalPersonDto internalPersonDto){
+ TblInternalPerson internalPersonUpdated;
+
+ //Interne Person holen
+ TblInternalPerson existingInternalPerson = internalPersonRepository
+ .findByTblContactUuid(internalPersonDto.getContactId())
+ .orElseThrow(() -> new NotFoundException("contact.uuid.not.existing"));
+
+ existingInternalPerson.setLastName(internalPersonDto.getLastName());
+ existingInternalPerson.setFirstName(internalPersonDto.getFirstName());
+ existingInternalPerson.setTitle(internalPersonDto.getTitle());
+
+ setFromInternalPersonDto( existingInternalPerson, internalPersonDto );
+ internalPersonUpdated = internalPersonRepository.save(existingInternalPerson);
+
+ return internalPersonMapper.toInternalPersonDto(internalPersonUpdated);
+ }
+
+ private void setFromInternalPersonDto( TblInternalPerson destTblInternalPerson, InternalPersonDto sourceDto ) {
+ RefSalutation salutationUpdated = salutationRepository
+ .findByUuid(sourceDto.getSalutationId())
+ .orElseThrow(() -> new NotFoundException("salutation.uuid.not.existing"));
+ RefPersonType personTypeUpdated = personTypeRepository
+ .findByUuid(sourceDto.getPersonTypeId())
+ .orElseThrow(() -> new NotFoundException("person.type.uuid.not.existing"));
+
+ destTblInternalPerson.setSalutation(salutationUpdated);
+ destTblInternalPerson.setRefPersonType(personTypeUpdated);
+
+ destTblInternalPerson.getContact().setNote(sourceDto.getContactNote());
+ }
+}
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/AddressDto.java b/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/AddressDto.java
index 85ef29f..855e92e 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/AddressDto.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/AddressDto.java
@@ -1,5 +1,6 @@
package org.eclipse.openk.contactbasedata.viewmodel;
+import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.io.Serializable;
@@ -7,8 +8,9 @@
@Data
public class AddressDto implements Serializable {
- private UUID uuid;
+ @JsonProperty("id")
+ private UUID uuid;
private Boolean isMainAddress;
private String postcode;
private String community;
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/AddressTypeDto.java b/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/AddressTypeDto.java
index 8a4a6b7..ac4a496 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/AddressTypeDto.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/AddressTypeDto.java
@@ -1,5 +1,6 @@
package org.eclipse.openk.contactbasedata.viewmodel;
+import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.io.Serializable;
@@ -7,6 +8,8 @@
@Data
public class AddressTypeDto implements Serializable {
+
+ @JsonProperty("id")
private UUID uuid;
private String type;
private String description;
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/CommunicationDto.java b/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/CommunicationDto.java
index 76ac357..81e34ef 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/CommunicationDto.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/CommunicationDto.java
@@ -1,5 +1,6 @@
package org.eclipse.openk.contactbasedata.viewmodel;
+import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.io.Serializable;
@@ -8,7 +9,8 @@
@Data
public class CommunicationDto implements Serializable {
- private Long id;
+ @JsonProperty("id")
+ private UUID uuid;
private String communicationData;
//fromCommunicationType
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/CommunicationTypeDto.java b/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/CommunicationTypeDto.java
index c861000..4f2e342 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/CommunicationTypeDto.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/CommunicationTypeDto.java
@@ -1,5 +1,6 @@
package org.eclipse.openk.contactbasedata.viewmodel;
+import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.io.Serializable;
@@ -7,6 +8,8 @@
@Data
public class CommunicationTypeDto implements Serializable {
+
+ @JsonProperty("id")
private UUID uuid;
private String type;
private String description;
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/CompanyDto.java b/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/CompanyDto.java
index 5b40347..48ccac1 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/CompanyDto.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/CompanyDto.java
@@ -7,6 +7,8 @@
@Data
public class CompanyDto implements Serializable {
+
+
private UUID id;
private String companyName;
private String companyType;
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/ContactDto.java b/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/ContactDto.java
index 8640323..efd16af 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/ContactDto.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/ContactDto.java
@@ -1,5 +1,6 @@
package org.eclipse.openk.contactbasedata.viewmodel;
+import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.io.Serializable;
@@ -7,6 +8,8 @@
@Data
public class ContactDto implements Serializable {
+
+ @JsonProperty("id")
private UUID id;
private String contactType;
private String note;
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/ExternalPersonDto.java b/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/ExternalPersonDto.java
index d90d76e..cf8cd41 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/ExternalPersonDto.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/ExternalPersonDto.java
@@ -1,5 +1,6 @@
package org.eclipse.openk.contactbasedata.viewmodel;
+import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.io.Serializable;
@@ -8,7 +9,8 @@
@Data
public class ExternalPersonDto implements Serializable {
- //private UUID id;
+ @JsonProperty("id")
+ private UUID uuid;
private String firstName;
private String lastName;
private String title;
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/InternalPersonDto.java b/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/InternalPersonDto.java
index d6cc25f..83a001e 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/InternalPersonDto.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/InternalPersonDto.java
@@ -1,5 +1,6 @@
package org.eclipse.openk.contactbasedata.viewmodel;
+import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.io.Serializable;
@@ -8,24 +9,25 @@
@Data
public class InternalPersonDto implements Serializable {
- private UUID id;
+ @JsonProperty("id")
+ private UUID uuid;
private String firstName;
private String lastName;
private String title;
+ private String department;
private String sid;
private String userRef;
//from Contact
+ private UUID contactId;
private String contactType;
- private String note;
+ private String contactNote;
// from RefPersonType
private UUID personTypeId;
- private String personTypeType;
- private String personTypeDescription;
+ private String personType;
//from RefSalutation
private UUID salutationId;
private String salutationType;
- private String salutationDescription;
}
\ No newline at end of file
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/PersonTypeDto.java b/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/PersonTypeDto.java
index 5292b9c..61b47b0 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/PersonTypeDto.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/PersonTypeDto.java
@@ -1,5 +1,6 @@
package org.eclipse.openk.contactbasedata.viewmodel;
+import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.io.Serializable;
@@ -7,6 +8,8 @@
@Data
public class PersonTypeDto implements Serializable {
+
+ @JsonProperty("id")
private UUID uuid;
private String type;
private String description;
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/SalutationDto.java b/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/SalutationDto.java
index 67e2995..f1c74f2 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/SalutationDto.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/SalutationDto.java
@@ -1,5 +1,6 @@
package org.eclipse.openk.contactbasedata.viewmodel;
+import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.io.Serializable;
@@ -7,6 +8,8 @@
@Data
public class SalutationDto implements Serializable {
+
+ @JsonProperty("id")
private UUID uuid;
private String type;
private String description;
diff --git a/src/main/resources/messages.properties b/src/main/resources/messages.properties
index b4541ed..935091e 100644
--- a/src/main/resources/messages.properties
+++ b/src/main/resources/messages.properties
@@ -3,6 +3,7 @@
address.not.found=Adresse wurde nicht gefunden
salutation.not.found=Anrede wurde nicht gefunden
+contact.not.found=Kontakt wurde nicht gefunden
salutation.uuid.not.existing=Die \u00fcbergebene UUID einer Anrede existiert nicht
communication.type.uuid.not.existing= Die \u00fcbergebene UUID eines Kommunikationstyps existiert nicht
contact.uuid.not.existing= Die \u00fcbergebene UUID eines Kontaktes existiert nicht
diff --git a/src/test/java/org/eclipse/openk/contactbasedata/config/TestConfiguration.java b/src/test/java/org/eclipse/openk/contactbasedata/config/TestConfiguration.java
index 7290e6d..8323d28 100644
--- a/src/test/java/org/eclipse/openk/contactbasedata/config/TestConfiguration.java
+++ b/src/test/java/org/eclipse/openk/contactbasedata/config/TestConfiguration.java
@@ -39,6 +39,9 @@
ExternalPersonMapper externalPersonMapper() { return new ExternalPersonMapperImpl(); }
@Bean
+ InternalPersonMapper internalPersonMapper() { return new InternalPersonMapperImpl(); }
+
+ @Bean
ContactMapper contactMapper() { return new ContactMapperImpl(); }
@Bean
@@ -62,6 +65,9 @@
public ExternalPersonService myExternalPersonService() { return new ExternalPersonService(); }
@Bean
+ public InternalPersonService myInternalPersonService() { return new InternalPersonService(); }
+
+ @Bean
public SalutationService mySalutationService() { return new SalutationService(); }
@Bean
diff --git a/src/test/java/org/eclipse/openk/contactbasedata/controller/ExternalPersonControllerTest.java b/src/test/java/org/eclipse/openk/contactbasedata/controller/ExternalPersonControllerTest.java
index 105f453..c4fc5a5 100644
--- a/src/test/java/org/eclipse/openk/contactbasedata/controller/ExternalPersonControllerTest.java
+++ b/src/test/java/org/eclipse/openk/contactbasedata/controller/ExternalPersonControllerTest.java
@@ -84,9 +84,6 @@
mockMvc.perform(put("/external-persons/{uuid}", ep.getContactId().toString())
.contentType(MediaType.APPLICATION_JSON)
.content(new ObjectMapper().writeValueAsString(ep)))
- /*.andExpect(jsonPath("$.lastName", Matchers.is("Testbeschreibung")))
- .andExpect(jsonPath("$.displayId", Matchers.is(400)))
- .andExpect(jsonPath("$.stockTypeId", Matchers.is("123")))*/
.andExpect(status().is2xxSuccessful());
}
diff --git a/src/test/java/org/eclipse/openk/contactbasedata/controller/InternalPersonControllerTest.java b/src/test/java/org/eclipse/openk/contactbasedata/controller/InternalPersonControllerTest.java
new file mode 100644
index 0000000..54b535e
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/contactbasedata/controller/InternalPersonControllerTest.java
@@ -0,0 +1,121 @@
+/*
+ *******************************************************************************
+ * Copyright (c) 2019 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************
+ */
+package org.eclipse.openk.contactbasedata.controller;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.eclipse.openk.contactbasedata.ContactBaseDataApplication;
+import org.eclipse.openk.contactbasedata.service.ExternalPersonService;
+import org.eclipse.openk.contactbasedata.service.InternalPersonService;
+import org.eclipse.openk.contactbasedata.support.MockDataHelper;
+import org.eclipse.openk.contactbasedata.viewmodel.ExternalPersonDto;
+import org.eclipse.openk.contactbasedata.viewmodel.InternalPersonDto;
+import org.hamcrest.Matchers;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.http.MediaType;
+import org.springframework.test.web.servlet.MockMvc;
+
+import java.util.UUID;
+
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.not;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.when;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
+
+
+@SpringBootTest(classes = ContactBaseDataApplication.class)
+@AutoConfigureMockMvc
+public class InternalPersonControllerTest {
+
+ @MockBean
+ private InternalPersonService internalPersonService;
+
+ @Autowired
+ private MockMvc mockMvc;
+
+
+ @Test
+ public void shouldReturnARequestedIntPerson() throws Exception {
+ InternalPersonDto ip = MockDataHelper.mockInternalPersonDto();
+
+ when(internalPersonService.findInternalPerson(any(UUID.class))).thenReturn(ip);
+
+ mockMvc.perform(get("/internal-persons/"+UUID.randomUUID().toString()))
+ .andExpect(status().is2xxSuccessful())
+ .andExpect(content().contentType(MediaType.APPLICATION_JSON))
+ .andExpect(jsonPath("firstName", is( ip.getFirstName())));
+ }
+
+
+ @Test
+ public void shouldReturnAllIntPersons() throws Exception {
+ Page<InternalPersonDto> ipPage = MockDataHelper.mockInternalPersonDtoPage();
+
+ when(internalPersonService.findInternalPersons(any(Pageable.class))).thenReturn(ipPage);
+
+ mockMvc.perform(get("/internal-persons"))
+ .andExpect(status().is2xxSuccessful())
+ .andExpect(content().contentType(MediaType.APPLICATION_JSON))
+ .andExpect(jsonPath("totalElements", is( 2 )));
+ }
+
+ @Test
+ public void shouldUpdateIntPerson() throws Exception {
+ InternalPersonDto ip = MockDataHelper.mockInternalPersonDto();
+
+ when( internalPersonService.updateInternalPerson(any(InternalPersonDto.class))).thenReturn(ip);
+
+ mockMvc.perform(put("/internal-persons/{uuid}", ip.getContactId().toString())
+ .contentType(MediaType.APPLICATION_JSON)
+ .content(new ObjectMapper().writeValueAsString(ip)))
+ .andExpect(status().is2xxSuccessful());
+ }
+
+ @Test
+ public void shouldNotUpdateIntPersonDueToException() throws Exception {
+ InternalPersonDto ip = MockDataHelper.mockInternalPersonDto();
+
+ when( internalPersonService.updateInternalPerson(any(InternalPersonDto.class))).thenReturn(ip);
+
+ // provide different exception in url and object
+ mockMvc.perform(put("/internal-persons/{uuid}", UUID.randomUUID().toString())
+ .contentType(MediaType.APPLICATION_JSON)
+ .content(new ObjectMapper().writeValueAsString(ip)))
+ .andExpect(status().isBadRequest());
+ }
+
+ @Test
+ public void shouldInsertIntPerson() throws Exception {
+ InternalPersonDto ip = MockDataHelper.mockInternalPersonDto();
+
+ when( internalPersonService.insertInternalPerson(any(InternalPersonDto.class))).thenReturn(ip);
+
+ mockMvc.perform(post("/internal-persons")
+ .contentType(MediaType.APPLICATION_JSON)
+ .content(new ObjectMapper().writeValueAsString(ip)))
+ .andExpect(jsonPath("$.lastName", is(ip.getLastName())))
+ .andExpect(jsonPath("$.contactId", not(ip.getContactId())))
+ .andExpect(jsonPath("$.contactNote", is(ip.getContactNote())))
+ .andExpect(status().is2xxSuccessful());
+ }
+
+}
\ No newline at end of file
diff --git a/src/test/java/org/eclipse/openk/contactbasedata/service/InternalPersonServiceTest.java b/src/test/java/org/eclipse/openk/contactbasedata/service/InternalPersonServiceTest.java
new file mode 100644
index 0000000..6a18eef
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/contactbasedata/service/InternalPersonServiceTest.java
@@ -0,0 +1,192 @@
+/*
+ *******************************************************************************
+ * Copyright (c) 2019 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************
+ */
+package org.eclipse.openk.contactbasedata.service;
+
+import org.eclipse.openk.contactbasedata.config.TestConfiguration;
+import org.eclipse.openk.contactbasedata.exceptions.NotFoundException;
+import org.eclipse.openk.contactbasedata.model.*;
+import org.eclipse.openk.contactbasedata.repository.*;
+import org.eclipse.openk.contactbasedata.support.MockDataHelper;
+import org.eclipse.openk.contactbasedata.viewmodel.ExternalPersonDto;
+import org.eclipse.openk.contactbasedata.viewmodel.InternalPersonDto;
+import org.junit.jupiter.api.Test;
+import org.mockito.stubbing.Answer;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
+import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.test.context.ContextConfiguration;
+
+import java.util.Optional;
+import java.util.UUID;
+
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.when;
+
+@DataJpaTest
+@ContextConfiguration(classes = {TestConfiguration.class})
+
+public class InternalPersonServiceTest {
+ @Qualifier("myInternalPersonService")
+ @Autowired
+ private InternalPersonService internalPersonService;
+
+ @MockBean
+ private InternalPersonRepository internalPersonRepository;
+
+ @MockBean
+ private ContactRepository contactRepository;
+
+ @MockBean
+ private SalutationRepository salutationRepository;
+
+ @MockBean
+ private PersonTypeRepository personTypeRepository;
+
+ @Test
+ public void shouldFindAnInternalPersonProperly() {
+ TblInternalPerson ip = MockDataHelper.mockInternalPerson();
+ when(internalPersonRepository.findByTblContactUuid(any(UUID.class))).thenReturn(Optional.of(ip));
+ InternalPersonDto dto = internalPersonService.findInternalPerson(UUID.randomUUID());
+
+ assertEquals(ip.getContact().getUuid(), dto.getContactId());
+ }
+
+ @Test
+ public void shouldThrowInErrorCaseWithInternalPerson() {
+ TblInternalPerson ip = MockDataHelper.mockInternalPerson();
+ when(internalPersonRepository.findByTblContactUuid(any(UUID.class))).thenReturn(Optional.empty());
+ assertThrows(NotFoundException.class, () -> internalPersonService.findInternalPerson(UUID.randomUUID()));
+ }
+
+ @Test
+ public void shouldUpdateInternalPerson() {
+ InternalPersonDto ipDto = MockDataHelper.mockInternalPersonDto();
+ TblInternalPerson ipTbl = MockDataHelper.mockInternalPerson();
+ when(internalPersonRepository.findByTblContactUuid(any(UUID.class))).thenReturn(Optional.of(ipTbl));
+ when(salutationRepository.findByUuid(any(UUID.class)))
+ .thenReturn(Optional.of(MockDataHelper.mockRefSalutation()));
+ when(personTypeRepository.findByUuid(any(UUID.class)))
+ .thenReturn(Optional.of(MockDataHelper.mockRefPersonType()));
+
+ when(internalPersonRepository.save(any(TblInternalPerson.class)))
+ .then((Answer<TblInternalPerson>) invocation -> {
+ Object[] args = invocation.getArguments();
+ return (TblInternalPerson) args[0];
+ });
+
+ InternalPersonDto savedDto = internalPersonService.updateInternalPerson(ipDto);
+ assertEquals(ipTbl.getContact().getUuid(), savedDto.getContactId());
+ assertEquals(ipTbl.getContact().getNote(), savedDto.getContactNote());
+ assertEquals(ipTbl.getContact().getContactType(), savedDto.getContactType());
+ assertEquals(ipTbl.getFirstName(), savedDto.getFirstName());
+ assertEquals(ipTbl.getLastName(), savedDto.getLastName());
+ assertEquals(ipTbl.getTitle(), savedDto.getTitle());
+ assertEquals(ipTbl.getUserRef(), savedDto.getUserRef());
+ assertEquals(ipTbl.getDepartment(), savedDto.getDepartment());
+ assertEquals(ipTbl.getSid(), savedDto.getSid());
+ assertEquals(ipTbl.getRefPersonType().getUuid(), savedDto.getPersonTypeId());
+ assertEquals(ipTbl.getSalutation().getUuid(), savedDto.getSalutationId());
+ }
+
+ @Test
+ public void shouldNotUpdateInternalPerson_Exception1() {
+ InternalPersonDto ipDto = MockDataHelper.mockInternalPersonDto();
+ TblInternalPerson ipTbl = MockDataHelper.mockInternalPerson();
+ when(internalPersonRepository.findByTblContactUuid(any(UUID.class))).thenReturn(Optional.empty());
+ when(salutationRepository.findByUuid(any(UUID.class)))
+ .thenReturn(Optional.of(MockDataHelper.mockRefSalutation()));
+ when(personTypeRepository.findByUuid(any(UUID.class)))
+ .thenReturn(Optional.of(MockDataHelper.mockRefPersonType()));
+
+ when(internalPersonRepository.save(any(TblInternalPerson.class)))
+ .then((Answer<TblInternalPerson>) invocation -> {
+ Object[] args = invocation.getArguments();
+ return (TblInternalPerson) args[0];
+ });
+
+ assertThrows( NotFoundException.class, () -> internalPersonService.updateInternalPerson(ipDto));
+ }
+
+ @Test
+ public void shouldNotUpdateInternalPerson_Exception2() {
+ InternalPersonDto epDto = MockDataHelper.mockInternalPersonDto();
+ TblInternalPerson epTbl = MockDataHelper.mockInternalPerson();
+ when(internalPersonRepository.findByTblContactUuid(any(UUID.class))).thenReturn(Optional.of(epTbl));
+ when(salutationRepository.findByUuid(any(UUID.class)))
+ .thenReturn(Optional.empty());
+ when(personTypeRepository.findByUuid(any(UUID.class)))
+ .thenReturn(Optional.of(MockDataHelper.mockRefPersonType()));
+
+ when(internalPersonRepository.save(any(TblInternalPerson.class)))
+ .then((Answer<TblInternalPerson>) invocation -> {
+ Object[] args = invocation.getArguments();
+ return (TblInternalPerson) args[0];
+ });
+
+ assertThrows( NotFoundException.class, () -> internalPersonService.updateInternalPerson(epDto));
+ }
+ @Test
+ public void shouldNotUpdateInternalPerson_Exception3() {
+ InternalPersonDto ipDto = MockDataHelper.mockInternalPersonDto();
+ TblInternalPerson ipTbl = MockDataHelper.mockInternalPerson();
+ when(internalPersonRepository.findByTblContactUuid(any(UUID.class))).thenReturn(Optional.of(ipTbl));
+ when(salutationRepository.findByUuid(any(UUID.class)))
+ .thenReturn(Optional.of(MockDataHelper.mockRefSalutation()));
+ when(personTypeRepository.findByUuid(any(UUID.class)))
+ .thenReturn(Optional.empty());
+
+ when(internalPersonRepository.save(any(TblInternalPerson.class)))
+ .then((Answer<TblInternalPerson>) invocation -> {
+ Object[] args = invocation.getArguments();
+ return (TblInternalPerson) args[0];
+ });
+
+ assertThrows( NotFoundException.class, () -> internalPersonService.updateInternalPerson(ipDto));
+ }
+
+ @Test
+ public void shouldInsertInternalPerson() {
+ InternalPersonDto ipDto = MockDataHelper.mockInternalPersonDto();
+ ipDto.setContactId(null);
+ RefSalutation refSalutation = MockDataHelper.mockRefSalutation();
+ when(salutationRepository.findByUuid(any(UUID.class)))
+ .thenReturn(Optional.of(refSalutation));
+ RefPersonType refPersonType = MockDataHelper.mockRefPersonType();
+ when(personTypeRepository.findByUuid(any(UUID.class)))
+ .thenReturn(Optional.of(refPersonType));
+ when(contactRepository.save(any(TblContact.class)))
+ .then((Answer<TblContact>) invocation -> {
+ Object[] args = invocation.getArguments();
+ return (TblContact) args[0];
+ });
+ when(internalPersonRepository.save(any(TblInternalPerson.class)))
+ .then((Answer<TblInternalPerson>) invocation -> {
+ Object[] args = invocation.getArguments();
+ return (TblInternalPerson) args[0];
+ });
+
+ InternalPersonDto savedDto = internalPersonService.insertInternalPerson(ipDto);
+ assertNotNull(savedDto.getContactId());
+ assertEquals(ipDto.getContactNote(), savedDto.getContactNote());
+ assertEquals(ipDto.getContactType(), savedDto.getContactType());
+ assertEquals(ipDto.getFirstName(), savedDto.getFirstName());
+ assertEquals(ipDto.getLastName(), savedDto.getLastName());
+ assertEquals(ipDto.getTitle(), savedDto.getTitle());
+ assertEquals(refPersonType.getUuid(), savedDto.getPersonTypeId());
+ assertEquals(refSalutation.getUuid(), savedDto.getSalutationId());
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/org/eclipse/openk/contactbasedata/support/MockDataHelper.java b/src/test/java/org/eclipse/openk/contactbasedata/support/MockDataHelper.java
index 11d6e90..d637058 100644
--- a/src/test/java/org/eclipse/openk/contactbasedata/support/MockDataHelper.java
+++ b/src/test/java/org/eclipse/openk/contactbasedata/support/MockDataHelper.java
@@ -16,11 +16,7 @@
import org.eclipse.openk.contactbasedata.constants.Constants;
import org.eclipse.openk.contactbasedata.model.*;
-import org.eclipse.openk.contactbasedata.viewmodel.AddressDto;
-import org.eclipse.openk.contactbasedata.viewmodel.CommunicationTypeDto;
-import org.eclipse.openk.contactbasedata.viewmodel.ExternalPersonDto;
-import org.eclipse.openk.contactbasedata.viewmodel.SalutationDto;
-import org.eclipse.openk.contactbasedata.viewmodel.VersionDto;
+import org.eclipse.openk.contactbasedata.viewmodel.*;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
@@ -273,8 +269,8 @@
ctDto2.setDescription("Mobil");
ctDto2.setType("Mobil");
CommunicationTypeDto ctDto3 = mockCommunicationTypeDto();
- ctDto3.setDescription("Persönlich");
- ctDto3.setType("Persönlich");
+ ctDto3.setDescription("Pers�nlich");
+ ctDto3.setType("Pers�nlich");
List<CommunicationTypeDto> listCtDto = new ArrayList<>();
listCtDto.add(ctDto1);
@@ -291,8 +287,8 @@
ct2.setDescription("Mobil");
ct2.setType("Mobil");
RefCommunicationType ct3 = mockRefCommunicationType();
- ct3.setDescription("Persönlich");
- ct3.setType("Persönlich");
+ ct3.setDescription("Pers�nlich");
+ ct3.setType("Pers�nlich");
List<RefCommunicationType> listCt = new ArrayList<>();
listCt.add(ct1);
@@ -301,4 +297,62 @@
return listCt;
}
+
+ public static TblInternalPerson mockInternalPerson() {
+ TblContact c = new TblContact();
+ c.setId( 10L );
+ c.setContactType(Constants.CONTACT_TYPE_INTERNAL_PERSON);
+ c.setUuid(UUID.randomUUID());
+ TblInternalPerson i = new TblInternalPerson();
+ i.setId( 12L );
+ i.setContact(c);
+ i.setFirstName("Wolfi");
+ i.setLastName("Weinbrenner");
+ i.setTitle("Freiherr");
+ i.setDepartment("Forschung");
+ i.setSid("111-777");
+ i.setUserRef("WWEINB");
+ i.setRefPersonType(mockRefPersonType());
+ i.setSalutation(mockRefSalutation());
+ c.setNote("Teilzeit");
+ return i;
+ }
+
+ public static InternalPersonDto mockInternalPersonDto() {
+ InternalPersonDto ipd = new InternalPersonDto();
+ ipd.setContactId(UUID.randomUUID());
+ ipd.setFirstName("Hella");
+ ipd.setLastName("Wahnsinn");
+ ipd.setContactType(Constants.CONTACT_TYPE_INTERNAL_PERSON);
+ ipd.setTitle("Mrs.");
+ ipd.setDepartment("Beschwerdemanagement");
+ ipd.setSid("222-888");
+ ipd.setUserRef("HWAHNS");
+ ipd.setPersonTypeId(UUID.randomUUID());
+ ipd.setSalutationId(UUID.randomUUID());
+ ipd.setContactNote("Vorsicht");
+ return ipd;
+ }
+
+ public static Page<InternalPersonDto> mockInternalPersonDtoPage(){
+
+ InternalPersonDto ip1 = mockInternalPersonDto();
+
+ InternalPersonDto ip2 = new InternalPersonDto();
+ ip2.setContactId(UUID.randomUUID());
+ ip2.setFirstName("Fritz");
+ ip2.setLastName("Alter");
+ ip2.setContactType(Constants.CONTACT_TYPE_INTERNAL_PERSON);
+ ip2.setTitle("Dr.");
+ ip2.setDepartment("Geschäftsführung");
+ ip2.setSid("333-999");
+ ip2.setUserRef("FALTER");
+ ip2.setPersonTypeId(UUID.randomUUID());
+ ip2.setSalutationId(UUID.randomUUID());
+ ip2.setContactNote("Gründer");
+
+ List<InternalPersonDto> list = Arrays.asList(ip1, ip2);
+ return new PageImpl<>(list, Pageable.unpaged(), list.size());
+ }
+
}