KON-18 - Stresstestgenerator
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/controller/InternalPersonController.java b/src/main/java/org/eclipse/openk/contactbasedata/controller/InternalPersonController.java
index adf51c8..f55e549 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/controller/InternalPersonController.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/controller/InternalPersonController.java
@@ -20,7 +20,11 @@
 import lombok.extern.log4j.Log4j2;
 import org.eclipse.openk.contactbasedata.exceptions.BadRequestException;
 import org.eclipse.openk.contactbasedata.service.InternalPersonService;
+import org.eclipse.openk.contactbasedata.service.PersonTypeService;
+import org.eclipse.openk.contactbasedata.service.SalutationService;
 import org.eclipse.openk.contactbasedata.viewmodel.InternalPersonDto;
+import org.eclipse.openk.contactbasedata.viewmodel.PersonTypeDto;
+import org.eclipse.openk.contactbasedata.viewmodel.SalutationDto;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
@@ -34,8 +38,7 @@
 import org.springframework.web.servlet.support.ServletUriComponentsBuilder;
 
 import java.net.URI;
-import java.util.Optional;
-import java.util.UUID;
+import java.util.*;
 
 @Log4j2
 @RestController
@@ -44,6 +47,12 @@
     @Autowired
     private InternalPersonService internalPersonService;
 
+    @Autowired
+    private SalutationService salutationService;
+
+    @Autowired
+    private PersonTypeService personTypeService;
+
     @GetMapping("/{contactUuid}")
     @Secured({"ROLE_KON-READER", "ROLE_KON-WRITER", "ROLE_KON-ADMIN"})
     @ApiOperation(value = "Anzeigen einer internen Person")
@@ -51,7 +60,53 @@
                             @ApiResponse(code = 404, message = "Person wurde nicht gefunden")})
     @ResponseStatus(HttpStatus.OK)
     public InternalPersonDto getInternalPerson(@PathVariable UUID contactUuid) {
-        return internalPersonService.findInternalPerson(contactUuid);
+        InternalPersonDto dto =  internalPersonService.findInternalPerson(contactUuid);
+        String[] vornamen = { "Aldelbar", "Bertram", "Claus", "Detlef", "Eberhardt", "Franco", "Gerald",
+                "Hinrich", "Ingelbert", "Johann", "Klement", "Ludmilla", "Manfreda", "Norbertine", "Ottilie",
+                "Petrella", "Quintesima", "Ricarda", "Siegesmund", "Theofilles" };
+        String[] anreden = { "m", "m", "m", "m", "m", "m", "m",
+                "m", "m", "m", "m", "f", "f", "f", "f",
+                "f", "f", "f", "f", "f" };
+        String[] nn1 = {"Butterbröt", "Hafermus", "Ringelding", "Flötenmann", "Pinsel", "Schabernack",
+           "Flottenpeter", "Kieselstein", "Otter", "Bütterblüm", "Senfmann", "Piecker", "Kachel", "Körble",
+        "Hegel", "Hedel", "Wedel", "Prim", "Grunntt", "Klopper", "Fähnchen", "Lotter", "Gofink", "Bafink",
+        "Öger", "Aladin", "Beladin", "Roderik", "Smith", "Barker", "Fellini", "Trappatoni", "Petersilie"};
+        String[] nn2 = {"Kracht", "Zuber", "Müller", "Maier", "Schmidt", "Herbrecht", "Schlotterbeck",
+            "Kraft", "Meier", "Adam", "Brecht", "Schmälzle", "Juncker", "Borke", "Gröhlhejim", "Schlampper",
+        "Horder", "Border", "Zunder", "Gimmel", "Klüser", "Haferkamp", "Heysterkamp", "Meyster", "Schöler",
+        "Grumpp", "Klos", "Klöschen", "Brettenhaupt", "Öztürk", "Pächter", "Jäger", "Schneider", "Seyfarth",
+        "Obstler", "Schnabbes", "German", "Sneyder", "Spindel"};
+
+        int iCount = 20000;
+        List<SalutationDto> salutationsDtos = salutationService.findAllSalutations();
+        Map<String, UUID> salutationMap = new HashMap<>();
+        salutationMap.put( "m", salutationsDtos.get(0).getUuid());
+        salutationMap.put( "f", salutationsDtos.get(1).getUuid());
+
+        List<PersonTypeDto> personTypeDtos = personTypeService.findAllPersonTypes();
+        for( int i=0; i<iCount; i++) {
+            int idxVn = getRandomIndex(vornamen.length);
+            dto.setFirstName(vornamen[idxVn]);
+            dto.setSalutationUuid(salutationMap.get(anreden[idxVn]));
+            if( Math.random() < 0.5d ) {
+                dto.setLastName(nn1[getRandomIndex(nn1.length)] + "-" + nn2[getRandomIndex(nn2.length)]);
+            }
+            else {
+                dto.setLastName(nn2[getRandomIndex(nn2.length)] + "-" + nn1[getRandomIndex(nn1.length)]);
+            }
+            dto.setUid(UUID.randomUUID().toString());
+            dto.setContactNote( "Autogen Stresstest" );
+            dto.setUserRef(null);
+            dto.setPersonTypeUuid(personTypeDtos.get(getRandomIndex(personTypeDtos.size())).getUuid());
+
+            this.internalPersonService.insertInternalPerson(dto);
+        }
+
+        return dto;
+    }
+
+    private int getRandomIndex( int arraySize ) {
+        return (int)(Math.random() * arraySize);
     }
 
     @GetMapping