· 8 years ago · Jul 16, 2018, 08:12 AM
1package dbinitialization;
2
3import java.math.BigInteger;
4import java.security.SecureRandom;
5import java.util.ArrayList;
6import java.util.Calendar;
7import java.util.Date;
8import java.util.Random;
9
10import persistence.Arzt;
11import persistence.Patient;
12import persistence.SystemNutzer;
13import persistence.SystemNutzer.Geschlecht;
14import service.Service;
15
16public class PersonCreator {
17
18 private Random randomGenerator = new Random();
19 private ArrayList<Arzt> arztListe = new ArrayList<Arzt>();
20 private ArrayList<Patient> patientListe = new ArrayList<Patient>();
21
22 private String[] vornameM = { "Max", "Alex", "Martino", "Aranito",
23 "Faulenzio", "Predator", "Bill", "Micha", "Bernard", "abdullah",
24 "Angel", "Darko", "Drago", "Waldemar", "Wladimir", "Marco",
25 "Dejan", "Alexander", "Benjamin", "Leon", "Rudolf", "Hans-Jürgen",
26 "Phoenix", "Walter", "Silvio", "Wesam", "Rudolf", "Samir", "Elvis",
27 "Borat", "Bruce", "Jackie", "Jose", "Joe", "Enrique", "Ricardo",
28 "Ramon" };
29 private String[] vornameW = { "Angela", "Anja", "Natascha", "Magda",
30 "Lena", "Stefania", "Sofia", "Tiffany", "Jose", "Joe", "Zoey",
31 "Enrique", "Ricardo", "Makoto", "Ramona", "Wahiba", "Linda",
32 "Julia", "Olga", "Helen", "Sarah", "Jasmin", "Elena", "Tara",
33 "Tamara", "Silvia", "Hannah", "Lea", "Lucy", "Giselle", "Samira",
34 "Solveig", "Marta", "Anja", "Medina", "Danuta", "Sülcey", "Nikita",
35 "Sonja", "Konstantina", "Aischa", "Milica" };
36 private String[] nachnameArray = { "Meier", "Müller", "Radovic", "Julka",
37 "Zimmermann", "Bronstein", "Stern", "Assis", "Mc Millan", "Rizzi",
38 "Canelloni", "Chirac", "Sarkozy", "Park", "Palin", "Trupp",
39 "Forch", "Müllerschön", "Schmidt", "Laun", "Schearzkompf",
40 "Kosmaul", "Hund", "Ackerman", "Lee", "Chan", "Xu", "Yamamoto",
41 "Masato", "Shinoda", "Bauer", "Bork", "Walter", "Mert", "Krasniqi",
42 "Gashi", "Schiling", "WeÃnsberg", "Corlaso", "Faruk", "Moor",
43 "Gonzalez", "Maldonado", "Rubiales", "Lopez", "Gomez",
44 "Hautamäkki", "Hillpalla", "Burgos" };
45 private String[] strasse = { "Hauptstraße", "Bahnhofstraße",
46 "Schillerstraße", "Goethestraße", "Luisenstraße", "Postallee",
47 "Reichsallee", "Kaiserallee", "Klosterweg", "Karlstraße",
48 "Hinter der Burg", "Wilhemstraße", "Wilhelm-Leuchner-Straße",
49 "Im Sand", "Yorkstraße", "Gassiweg", "Industriegebiet",
50 "Eckenerstraße", "Bilderweg", "Marktplatz", "Europaplatz",
51 "Fliederweg", "Joseph-Haydn-Straße", "Beethovenstraße", "Rosenweg",
52 "Durlacher Weg" };
53 private String[] wohnort = { "Nabburg", "Nagold", "Naila", "Nassau",
54 "Nastätten", "Nauen", "Neckarsulm", "Naumburg", "Naunhof", "Nebra",
55 "Neckarbischofsheim", "Magdala", "Magdeburg", "Mahlberg",
56 "Mainbernheim", "Mainburg", "Maintal", "Mainz", "Laage", "Laatzen",
57 "Ladenburg", "Lage", "Lahnstein", "Lahr/Schwarzwald", "Haan",
58 "Hachenburg", "Hadamar", "Hagen", "Hagenbach", "Bad Belzig",
59 "Bad Bentheim", "Bad Bergzabern", "Bad Berka", "Bad Berleburg",
60 "Bad Berneck im Fichtelgebirge", "Bad Bevensen ", "Bad Bibra",
61 "Bad Blankenburg", "Gera" };
62 private String[] vorwahl = { "0151", "07131", "02451", "0630", "06535",
63 "07634" };
64 private String[] emailAdressenEndung = { "@gmx.de", "@web.de",
65 "@gmail.com", "@yahoo.com", "@1und1.de", "@t-online.de",
66 "@green.de", "@isp.net", "@atnt.com", "@verizon.com",
67 "@telefonica.es" };
68 private Date date;
69
70 private Geschlecht geschlecht;
71 private String telefonnummer;
72 private String emailadresse;
73 private String hausnummer;
74 private String[] zusatz = { "a", "b", "c" };
75 private String plz;
76 private String[] sotialversicherungsNummer = { "" };
77 // Patientendaten
78 private String[] krankenversicherung = { "BKK", "AOK", "Barmer", "TK",
79 "IKK", "BBK", "Hallersche", "Debeka" };
80
81 private String versichertenNummer;
82
83 public PersonCreator(int anzahlPatienten, int anzahlAerzte) {
84 if (anzahlPatienten > 0) {
85 for (int i = 0; i < anzahlPatienten; i++) {
86 this.patientListe.add(createPatient());
87 }
88 }
89
90 if (anzahlAerzte > 0) {
91 for (int i = 0; i < anzahlAerzte; i++) {
92 this.arztListe.add(createArzt());
93 }
94 }
95
96 Arzt standardArzt = createArzt();
97 if (standardArzt instanceof SystemNutzer) {
98 standardArzt.setSozialversicherungsNummer("arzt");
99 standardArzt.setPasswort("arzt");
100 }
101 this.arztListe.add(0, standardArzt);
102
103 Patient standardPatient = createPatient();
104 if (standardPatient instanceof SystemNutzer) {
105 standardPatient.setSozialversicherungsNummer("patient");
106 standardPatient.setPasswort("patient");
107 }
108
109 Service service = new Service();
110
111 for (Arzt arzt : this.arztListe) {
112 try {
113 service.store(arzt);
114 } catch (Exception e) {
115 // TODO Auto-generated catch block
116 e.printStackTrace();
117 }
118 }
119
120 for (Patient patient : this.patientListe) {
121 try {
122 service.store(patient);
123 } catch (Exception e) {
124 // TODO Auto-generated catch block
125 e.printStackTrace();
126 }
127 }
128 }
129
130 public Arzt createArzt() {
131 String vorname = createRandomVorname();
132 String nachname = createRandomNachname();
133 Geschlecht geschlecht = getGeschlecht(vorname);
134 Date geburtsDatum = createRandomDate();
135 String sozialversicherungsNummer = createRandomVersicherungsnummer();
136 String passwort = createRandomAlphaNumeric(36);
137 String telefonNummer = createRandomTelefonnummer();
138 String emailAdresse = creatRandomEmailAdresse(vorname, nachname);
139 String strasse = createRandomStrasse();
140 String hausnummer = createRandomHausnummer();
141 String zusatz = createRandomZusatz();
142 String plz = createRandomPLZ();
143 String wohnort = createRandomWohnort();
144
145 Arzt arzt = new Arzt(vorname, nachname, geburtsDatum, geschlecht,
146 sozialversicherungsNummer, passwort, telefonnummer,
147 emailAdresse, strasse, hausnummer, zusatz, plz, wohnort);
148 return arzt;
149 }
150
151 public Patient createPatient() {
152
153 String vorname = createRandomVorname();
154 String nachname = createRandomNachname();
155 Geschlecht geschlecht = getGeschlecht(vorname);
156 Date geburtsDatum = createRandomDate();
157 String sozialversicherungsNummer = createRandomVersicherungsnummer();
158 String passwort = createRandomAlphaNumeric(36);
159 String telefonNummer = createRandomTelefonnummer();
160 String emailAdresse = creatRandomEmailAdresse(vorname, nachname);
161 String strasse = createRandomStrasse();
162 String hausnummer = createRandomHausnummer();
163 String zusatz = createRandomZusatz();
164 String plz = createRandomPLZ();
165 String wohnort = createRandomWohnort();
166 String krankenversicherung = createRandomKrankenversicherung();
167
168 Patient patient = new Patient(vorname, nachname, geburtsDatum,
169 geschlecht, sozialversicherungsNummer, passwort, telefonNummer,
170 emailAdresse, strasse, hausnummer, zusatz, plz, wohnort,
171 krankenversicherung, hausnummer);
172 return patient;
173 }
174
175 public String createKrankenversicherungsNummer() {
176 int zufall = randomGenerator.nextInt(100000000);
177 return "" + zufall;
178 }
179
180 /**
181 * Erzeugt einen zufaelligen alphanumerischen String
182 *
183 * @param size
184 * - fuer 8 Stellen size = 36 waehlen, fuer 10 Stellen size = 46
185 * @return
186 */
187 public String createRandomAlphaNumeric(int size) {
188 SecureRandom random = new SecureRandom();
189 return (new BigInteger(size, random).toString(32));
190 };
191
192 /**
193 * Erzeugt ein zufaelliges Datum
194 *
195 * @return
196 */
197 public Date createRandomDate() {
198
199 int tag = randomGenerator.nextInt(30) + 1;
200 int monat = randomGenerator.nextInt(12) + 1;
201 int jahr = 1930 + randomGenerator.nextInt(70);
202
203 Calendar cal = Calendar.getInstance();
204 // Clear all fields
205 cal.clear();
206
207 cal.set(Calendar.YEAR, jahr);
208 cal.set(Calendar.MONTH, monat);
209 cal.set(Calendar.DATE, tag);
210
211 Date datum = cal.getTime();
212
213 return datum;
214 }
215
216 /**
217 * Erzeugt eine zufaellige Hausnummer
218 *
219 * @return String hausnummer
220 */
221 public String createRandomHausnummer() {
222 return randomGenerator.nextInt(1000) + "";
223 }
224
225 /**
226 * Erzeugt eine zufaellige Krankenversicherung
227 *
228 * @return
229 */
230 public String createRandomKrankenversicherung() {
231
232 int krankenversicherungIndex = randomGenerator
233 .nextInt(krankenversicherung.length);
234
235 return krankenversicherung[krankenversicherungIndex];
236 }
237
238 /**
239 * Erzeugt einen zufaelligen Nachname
240 *
241 * @return
242 */
243 public String createRandomNachname() {
244
245 int nachnameIndex = randomGenerator.nextInt(nachnameArray.length);
246 return nachnameArray[nachnameIndex];
247 }
248
249 public String createRandomPassword() {
250 return createRandomAlphaNumeric(36);
251 }
252
253 /**
254 * Erzeugt eine zufaellige 5 Stellige PLZ
255 *
256 * @return
257 */
258 public String createRandomPLZ() {
259 int PLZ = randomGenerator.nextInt(99999);
260 if (PLZ < 10000) {
261 PLZ += 10017;
262 }
263 return PLZ + "";
264 }
265
266 /**
267 * Erzeugt einen zufaelligen Strassenamen
268 *
269 * @return
270 */
271 public String createRandomStrasse() {
272
273 int strasseIndex = randomGenerator.nextInt(strasse.length);
274 return strasse[strasseIndex];
275 }
276
277 public String createRandomTelefonnummer() {
278 int zufallVorwahl = randomGenerator.nextInt(vorwahl.length);
279 int telefonnummer = randomGenerator.nextInt(100000);
280 return vorwahl[zufallVorwahl] + telefonnummer;
281 }
282
283 public String createRandomVersicherungsnummer() {
284 return createRandomAlphaNumeric(46);
285 }
286
287 /**
288 * Erzeugt einen zufaelligen Vornamen
289 *
290 * @return String
291 */
292 public String createRandomVorname() {
293 double i = Math.random();
294 // Geschlecht bestimmen und Vorname waehlen
295 // weiblich
296 if (i <= 0.51) {
297 int vornameIndex = randomGenerator.nextInt(vornameW.length);
298 return vornameW[vornameIndex];
299 }
300 // maennlich
301 else {
302 int vornameIndex = randomGenerator.nextInt(vornameM.length);
303 return vornameM[vornameIndex];
304 }
305 }
306
307 /**
308 * Erzeugt einen zufaelligen Wohnort
309 *
310 * @return
311 */
312 public String createRandomWohnort() {
313
314 int wohnortIndex = randomGenerator.nextInt(wohnort.length);
315 return wohnort[wohnortIndex];
316 }
317
318 public String createRandomZusatz() {
319 return zusatz[randomGenerator.nextInt(zusatz.length)];
320 }
321
322 public String creatRandomEmailAdresse(String vorname, String nachname) {
323 int emailIndex = randomGenerator.nextInt(emailAdressenEndung.length);
324 return vorname + "." + nachname + createRandomAlphaNumeric(28)
325 + emailAdressenEndung[emailIndex];
326 }
327
328 public Geschlecht getGeschlecht(String vorname) {
329 for (int i = 0; i < vornameM.length; i++) {
330 if (vornameM[i].contentEquals(vorname)) {
331 return Geschlecht.MAENNLICH;
332 }
333 }
334 return Geschlecht.WEIBLICH;
335 }
336
337}