Merge branch 'DEVELOP' of ssh://git.eclipse.org:29418/openk-usermodules/org.eclipse.openk-usermodules.contactBaseData.backend into KON-22_Firmen
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/controller/CompanyController.java b/src/main/java/org/eclipse/openk/contactbasedata/controller/CompanyController.java
new file mode 100644
index 0000000..7d35734
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/contactbasedata/controller/CompanyController.java
@@ -0,0 +1,102 @@
+/*
+ *******************************************************************************
+ * 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 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.CompanyService;
+import org.eclipse.openk.contactbasedata.viewmodel.CompanyDto;
+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.security.access.annotation.Secured;
+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("/companies")
+public class CompanyController {
+    @Autowired
+    private CompanyService companyService;
+
+    @GetMapping("/{contactUuid}")
+    @Secured({"ROLE_KON-READER", "ROLE_KON-WRITER", "ROLE_KON-ADMIN"})
+    @ApiOperation(value = "Anzeigen einer Firma")
+    @ApiResponses(value = { @ApiResponse(code = 200, message = "Erfolgreich durchgeführt"),
+                            @ApiResponse(code = 404, message = "Firma wurde nicht gefunden")})
+    @ResponseStatus(HttpStatus.OK)
+    public CompanyDto getCompany(@PathVariable UUID contactUuid) {
+        return companyService.findCompany(contactUuid);
+    }
+
+    @GetMapping
+    @Secured({"ROLE_KON-READER", "ROLE_KON-WRITER", "ROLE_KON-ADMIN"})
+    @ApiOperation(value = "Anzeigen aller Firmen", notes = "Sortieren ist möglich. Firmen werden seitenweise geliefert.")
+    @ResponseStatus(HttpStatus.OK)
+    @ApiResponses(value = {
+            @ApiResponse(code = 200, message = "Erfolgreich durchgeführt")})
+    public Page<CompanyDto> readCompanys(
+            @PageableDefault(sort = {"companyName"}, direction = Sort.Direction.ASC) Pageable pageable){
+            return companyService.findCompanies(pageable);
+    }
+
+    @PostMapping
+    @Secured("ROLE_KON-ADMIN")
+    @ApiOperation(value = "Anlegen einer Firma")
+    @ApiResponses(value = {
+            @ApiResponse(code = 201, message = "Firma erfolgreich angelegt"),
+            @ApiResponse(code = 500, message = "Konnte nicht durchgeführt werden")
+    })
+    public ResponseEntity<CompanyDto> insertCompany(
+            @Validated @RequestBody CompanyDto companyDto) {
+        CompanyDto savedCompanyDto = companyService.insertCompany(companyDto);
+        URI location = ServletUriComponentsBuilder
+                .fromCurrentRequestUri()
+                .path("/{uuid}")
+                .buildAndExpand(savedCompanyDto.getContactUuid())
+                .toUri();
+        return ResponseEntity.created(location).body(savedCompanyDto);
+    }
+
+    @PutMapping("/{contactUuid}")
+    @Secured("ROLE_KON-ADMIN")
+    @ApiOperation(value = "Ändern einer externen Person")
+    @ApiResponses(value = {
+            @ApiResponse(code = 200, message = "Firma wurde aktualisiert"),
+            @ApiResponse(code = 400, message = "Ungültige Eingabe"),
+            @ApiResponse(code = 404, message = "Nicht gefunden")})
+    public ResponseEntity updateCompany(@PathVariable UUID contactUuid, @Validated @RequestBody CompanyDto companyDto) {
+
+        if (!companyDto.getContactUuid().equals(contactUuid)) {
+            throw new BadRequestException("invalid.uuid.path.object");
+        }
+
+        companyService.updateCompany(companyDto);
+        return ResponseEntity.ok().build();
+    }
+}
+
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/mapper/CompanyMapper.java b/src/main/java/org/eclipse/openk/contactbasedata/mapper/CompanyMapper.java
index 458eecc..662f832 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/mapper/CompanyMapper.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/mapper/CompanyMapper.java
@@ -24,7 +24,16 @@
 @Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
 public interface CompanyMapper {
     @Mappings({
-            @Mapping( source="contact.uuid", target="contactUuid")
+            @Mapping( source="contact.uuid", target="contactUuid"),
+            @Mapping( source="contact.contactType", target="contactType"),
+            @Mapping( source="contact.note", target="contactNote"),
     })
     CompanyDto toCompanyDto(TblCompany tblCompany);
+
+    @Mappings({
+            @Mapping( source="contactUuid", target="contact.uuid"),
+            @Mapping( source="contactType", target="contact.contactType"),
+            @Mapping( source="contactNote", target="contact.note"),
+    })
+    TblCompany toTblCompany(CompanyDto companyDto);
 }
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/mapper/ExternalPersonMapper.java b/src/main/java/org/eclipse/openk/contactbasedata/mapper/ExternalPersonMapper.java
index 23e288c..658e81c 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/mapper/ExternalPersonMapper.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/mapper/ExternalPersonMapper.java
@@ -26,7 +26,6 @@
 
     @Mappings({
             @Mapping( source="contact.uuid", target="contactUuid"),
-            //@Mapping( source="contact.uuid", target="contactId"),
             @Mapping( source="contact.contactType", target="contactType"),
             @Mapping( source="contact.note", target="contactNote"),
             @Mapping( source="refPersonType.uuid", target="personTypeUuid"),
@@ -37,7 +36,6 @@
     ExternalPersonDto toExternalPersonDto(TblExternalPerson tblExternalPerson);
 
     @Mappings({
-            //@Mapping( source="id", target="uuid"),
             @Mapping( source="contactUuid", target="contact.uuid"),
             @Mapping( source="contactType", target="contact.contactType"),
             @Mapping( source="contactNote", target="contact.note"),
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/model/TblCompany.java b/src/main/java/org/eclipse/openk/contactbasedata/model/TblCompany.java
index 8895d39..77f2316 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/model/TblCompany.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/model/TblCompany.java
@@ -33,6 +33,7 @@
     private String hrNumber;
 
     @OneToOne
+    @JoinColumn( name = "fk_contact_id")
     private TblContact contact;
 
     @OneToMany
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/repository/CompanyRepository.java b/src/main/java/org/eclipse/openk/contactbasedata/repository/CompanyRepository.java
new file mode 100644
index 0000000..b27c86c
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/contactbasedata/repository/CompanyRepository.java
@@ -0,0 +1,28 @@
+/*
+ *******************************************************************************
+ * 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.repository;
+
+import org.eclipse.openk.contactbasedata.model.TblCompany;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+
+import java.util.Optional;
+import java.util.UUID;
+
+public interface CompanyRepository extends JpaRepository<TblCompany, Long > {
+    @Query("select co from TblCompany co where co.contact.uuid = :contactUuid")
+    Optional<TblCompany> findByTblContactUuid(@Param("contactUuid") UUID contactUuid);
+}
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/service/CompanyService.java b/src/main/java/org/eclipse/openk/contactbasedata/service/CompanyService.java
new file mode 100644
index 0000000..02b0d1c
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/contactbasedata/service/CompanyService.java
@@ -0,0 +1,110 @@
+/*
+ *******************************************************************************
+ * 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 lombok.extern.log4j.Log4j2;
+import org.eclipse.openk.contactbasedata.constants.Constants;
+import org.eclipse.openk.contactbasedata.exceptions.NotFoundException;
+import org.eclipse.openk.contactbasedata.mapper.CompanyMapper;
+import org.eclipse.openk.contactbasedata.mapper.ContactMapper;
+import org.eclipse.openk.contactbasedata.model.TblCompany;
+import org.eclipse.openk.contactbasedata.model.TblContact;
+import org.eclipse.openk.contactbasedata.repository.CompanyRepository;
+import org.eclipse.openk.contactbasedata.repository.ContactRepository;
+import org.eclipse.openk.contactbasedata.repository.PersonTypeRepository;
+import org.eclipse.openk.contactbasedata.repository.SalutationRepository;
+import org.eclipse.openk.contactbasedata.viewmodel.CompanyDto;
+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 CompanyService {
+    @Autowired
+    private CompanyRepository companyRepository;
+
+    @Autowired
+    private ContactRepository contactRepository;
+
+    @Autowired
+    private SalutationRepository salutationRepository;
+
+    @Autowired
+    private PersonTypeRepository personTypeRepository;
+
+    @Autowired
+    private CompanyMapper companyMapper;
+
+    @Autowired
+    private ContactMapper contactMapper;
+
+    @Autowired
+    private BaseContactService baseContactService;
+
+    public CompanyDto findCompany(UUID contactUuid) {
+        return companyMapper.toCompanyDto(
+                companyRepository.findByTblContactUuid(contactUuid).orElseThrow(NotFoundException::new)
+        );
+    }
+
+    public Page<CompanyDto> findCompanies(Pageable pageable) {
+        return companyRepository.findAll(pageable).map(companyMapper::toCompanyDto);
+    }
+
+
+    @Transactional
+    public CompanyDto insertCompany(CompanyDto companyDto) {
+        TblContact contactToSave = new TblContact();
+        contactToSave.setUuid(UUID.randomUUID());
+        contactToSave.setContactType(Constants.CONTACT_TYPE_COMPANY);
+
+        TblCompany companyToSave = companyMapper.toTblCompany(companyDto);
+        companyToSave.setContact(contactToSave);
+        contactRepository.save(companyToSave.getContact());
+
+        setFromCompanyDto( companyToSave, companyDto );
+
+        // Then save dependent Model-Object
+        return companyMapper.toCompanyDto(companyRepository.save(companyToSave));
+    }
+
+    @Transactional
+    public CompanyDto updateCompany(CompanyDto companyDto){
+        TblCompany companyUpdated;
+
+        //Interne Person holen
+        TblCompany existingCompany = companyRepository
+                .findByTblContactUuid(companyDto.getContactUuid())
+                .orElseThrow(() -> new NotFoundException("contact.uuid.not.existing"));
+
+        existingCompany.setCompanyName(companyDto.getCompanyName());
+        existingCompany.setCompanyType(companyDto.getCompanyType());
+
+        setFromCompanyDto( existingCompany, companyDto );
+        companyUpdated = companyRepository.save(existingCompany);
+
+        return companyMapper.toCompanyDto(companyUpdated);
+    }
+
+    private void setFromCompanyDto( TblCompany destTblCompany, CompanyDto sourceDto ) {
+
+        destTblCompany.getContact().setNote(sourceDto.getContactNote());
+    }
+}
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 3378d51..834d699 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/CompanyDto.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/CompanyDto.java
@@ -22,9 +22,6 @@
 
 @Data
 public class CompanyDto implements Serializable {
-
-    @JsonProperty("id")
-    private UUID uuid;
     private String companyName;
     private String companyType;
     private String hrNumber;
@@ -33,5 +30,5 @@
     @JsonProperty("contactId")
     private UUID contactUuid;
     private String contactType;
-    private String note;
+    private String contactNote;
 }
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/ContactPersonDto.java b/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/ContactPersonDto.java
index 25a0675..a77b23b 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/ContactPersonDto.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/ContactPersonDto.java
@@ -23,8 +23,6 @@
 @Data
 public class ContactPersonDto implements Serializable {
 
-    @JsonProperty("id")
-    private UUID uuid;
     private String firstName;
     private String lastName;
     private String title;
@@ -36,7 +34,8 @@
     private String note;
 
     //from Company
-    private String companyId;
+    @JsonProperty("companyContactId")
+    private UUID companyContactUuid;
     private String companyName;
     private String companyType;
     private String hrNumber;
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 975f786..8dcf590 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/ExternalPersonDto.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/ExternalPersonDto.java
@@ -23,8 +23,6 @@
 @Data
 public class ExternalPersonDto implements Serializable {
 
-    @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 e07c8c7..9da4ff6 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/InternalPersonDto.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/InternalPersonDto.java
@@ -22,9 +22,6 @@
 
 @Data
 public class InternalPersonDto implements Serializable {
-
-    @JsonProperty("id")
-    private UUID uuid;
     private String firstName;
     private String lastName;
     private String title;
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 a5961c3..62524b1 100644
--- a/src/test/java/org/eclipse/openk/contactbasedata/config/TestConfiguration.java
+++ b/src/test/java/org/eclipse/openk/contactbasedata/config/TestConfiguration.java
@@ -42,6 +42,9 @@
     InternalPersonMapper internalPersonMapper() { return new InternalPersonMapperImpl(); }
 
     @Bean
+    CompanyMapper companyMapper() { return new CompanyMapperImpl(); }
+
+    @Bean
     ContactMapper contactMapper() { return new ContactMapperImpl(); }
 
     @Bean
@@ -74,6 +77,9 @@
     public InternalPersonService myInternalPersonService() { return new InternalPersonService(); }
 
     @Bean
+    public CompanyService myCompanyService() { return new CompanyService(); }
+
+    @Bean
     public SalutationService mySalutationService() { return new SalutationService(); }
 
     @Bean
diff --git a/src/test/java/org/eclipse/openk/contactbasedata/controller/CompanyControllerTest.java b/src/test/java/org/eclipse/openk/contactbasedata/controller/CompanyControllerTest.java
new file mode 100644
index 0000000..27963ea
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/contactbasedata/controller/CompanyControllerTest.java
@@ -0,0 +1,119 @@
+/*
+ *******************************************************************************
+ * 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.CompanyService;
+import org.eclipse.openk.contactbasedata.support.MockDataHelper;
+import org.eclipse.openk.contactbasedata.viewmodel.CompanyDto;
+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.context.ActiveProfiles;
+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
+@ActiveProfiles("test") // Todo: Find a better way to configure the tests
+public class CompanyControllerTest {
+
+    @MockBean
+    private CompanyService companyService;
+
+    @Autowired
+    private MockMvc mockMvc;
+
+
+    @Test
+    public void shouldReturnARequestedExtPerson() throws Exception {
+        CompanyDto ep = MockDataHelper.mockCompanyDto();
+
+        when(companyService.findCompany(any(UUID.class))).thenReturn(ep);
+
+        mockMvc.perform(get("/companies/"+UUID.randomUUID().toString()))
+                .andExpect(status().is2xxSuccessful())
+                .andExpect(content().contentType(MediaType.APPLICATION_JSON))
+                .andExpect(jsonPath("companyName", is(  ep.getCompanyName())));
+    }
+
+
+    @Test
+    public void shouldReturnAllExtPerson() throws Exception {
+        Page<CompanyDto> epPage = MockDataHelper.mockCompanyDtoPage();
+
+        when(companyService.findCompanies(any(Pageable.class))).thenReturn(epPage);
+
+        mockMvc.perform(get("/companies"))
+                .andExpect(status().is2xxSuccessful())
+                .andExpect(content().contentType(MediaType.APPLICATION_JSON))
+                .andExpect(jsonPath("totalElements", is(  2 )));
+    }
+
+    @Test
+    public void shouldUpdateExtPerson() throws Exception {
+        CompanyDto ep = MockDataHelper.mockCompanyDto();
+
+        when( companyService.updateCompany(any(CompanyDto.class))).thenReturn(ep);
+
+        mockMvc.perform(put("/companies/{uuid}", ep.getContactUuid().toString())
+                .contentType(MediaType.APPLICATION_JSON)
+                .content(new ObjectMapper().writeValueAsString(ep)))
+                .andExpect(status().is2xxSuccessful());
+    }
+
+    @Test
+    public void shouldNotUpdateExtPersonDueToException() throws Exception {
+        CompanyDto ep = MockDataHelper.mockCompanyDto();
+
+        when( companyService.updateCompany(any(CompanyDto.class))).thenReturn(ep);
+
+        // provide different exception in url and object
+        mockMvc.perform(put("/companies/{uuid}", UUID.randomUUID().toString())
+                .contentType(MediaType.APPLICATION_JSON)
+                .content(new ObjectMapper().writeValueAsString(ep)))
+                .andExpect(status().isBadRequest());
+    }
+
+    @Test
+    public void shouldInsertExtPerson() throws Exception {
+        CompanyDto companyDto = MockDataHelper.mockCompanyDto();
+
+        when( companyService.insertCompany(any(CompanyDto.class))).thenReturn(companyDto);
+
+        mockMvc.perform(post("/companies")
+                .contentType(MediaType.APPLICATION_JSON)
+                .content(new ObjectMapper().writeValueAsString(companyDto)))
+                .andExpect(jsonPath("$.companyName", is(companyDto.getCompanyName())))
+                .andExpect(jsonPath("$.contactId", not(companyDto.getContactUuid())))
+                .andExpect(jsonPath("$.contactNote", is(companyDto.getContactNote())))
+                .andExpect(status().is2xxSuccessful());
+    }
+}
\ 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 04e7abc..5850ad6 100644
--- a/src/test/java/org/eclipse/openk/contactbasedata/support/MockDataHelper.java
+++ b/src/test/java/org/eclipse/openk/contactbasedata/support/MockDataHelper.java
@@ -422,6 +422,46 @@
         return new PageImpl<>(list, Pageable.unpaged(), list.size());
     }
 
+    public static TblCompany mockCompany() {
+        TblContact c = new TblContact();
+        c.setId( 10L );
+        c.setContactType(Constants.CONTACT_TYPE_COMPANY);
+        c.setUuid(UUID.randomUUID());
+        TblCompany tblCompany = new TblCompany();
+        tblCompany.setId( 12L );
+        tblCompany.setContact(c);
+        tblCompany.setCompanyName("Kuemmelbrot");
+        tblCompany.setCompanyType("GmbH");
+        c.setNote("insolvent");
+        return tblCompany;
+    }
+
+    public static CompanyDto mockCompanyDto() {
+        CompanyDto tblCompany = new CompanyDto();
+        tblCompany.setContactUuid(UUID.randomUUID());
+        tblCompany.setCompanyName("Kuemmelbrot");
+        tblCompany.setCompanyType("GmbH");
+        tblCompany.setContactType(Constants.CONTACT_TYPE_COMPANY);
+
+        tblCompany.setContactNote("Vorsicht");
+        return tblCompany;
+    }
+
+    public static Page<CompanyDto> mockCompanyDtoPage(){
+
+        CompanyDto com1 = mockCompanyDto();
+
+        CompanyDto com2 = new CompanyDto();
+        com2.setContactUuid(UUID.randomUUID());
+        com2.setCompanyName("Sputnik 2000");
+        com2.setCompanyType("AG");
+        com2.setContactType(Constants.CONTACT_TYPE_COMPANY);
+        com2.setContactNote("Gründer");
+
+        List<CompanyDto> list = Arrays.asList(com1, com2);
+        return new PageImpl<>(list, Pageable.unpaged(), list.size());
+    }
+
     public static TblContact mockTblContact(){
         TblContact tblContact = new TblContact();
         tblContact.setId(5L);