package test; import java.util.ArrayList; import java.util.LinkedList; import java.util.Random; import edu.cs320.project.*; public class InputGenerator { private static Random generator; private static ArrayList<Character> alpha = new ArrayList<Character>(); private static LinkedList<Drug> generatedDrugs = new LinkedList<Drug>(); private static LinkedList<Allergy> generatedAllergies = new LinkedList<Allergy>(); private static LinkedList<PatientInfo> generatedPatients = new LinkedList<PatientInfo>(); private static LinkedList<PatientRecord> generatedPatientRecords = new LinkedList<PatientRecord>(); private static LinkedList<QuestionSet> generatedQuestionSets = new LinkedList<QuestionSet>(); private static LinkedList<User> generatedUsers = new LinkedList<User>(); private static LinkedList<String> generatedNotes = new LinkedList<String>(); static { generator = new Random(); for(char c = 'A'; c <= 'Z'; ++c) alpha.add(c); for(char c = 'a'; c <= 'z'; ++c) alpha.add(c); } private InputGenerator() {} public static LinkedList<Drug> getGeneratedDrugs(){ return generatedDrugs; } public static LinkedList<Allergy> getGeneratedAllergy(){ return generatedAllergies; } public static LinkedList<PatientInfo> getGeneratedPatients(){ return generatedPatients; } public static LinkedList<PatientRecord> getGeneratedPatientRecords(){ return generatedPatientRecords; } public static LinkedList<QuestionSet> getGeneratedQuestionSets(){ return generatedQuestionSets; } public static LinkedList<String> getGeneratedNotes() { return generatedNotes; } public static LinkedList<User> getGeneratedUsers(){ return generatedUsers; } public static String randomString() { int size = generator.nextInt(100)+1; StringBuilder string = new StringBuilder(); for(int x=0;x<size;x++) string.append(alpha.get(generator.nextInt(52))); return string.toString(); } public static String randomString(int maxSize) { int size = generator.nextInt(maxSize)+1; StringBuilder string = new StringBuilder(); for(int x = 0; x < size; x++) string.append(alpha.get(generator.nextInt(52))); return string.toString(); } public static String randomMinString(int minSize) { int size = generator.nextInt(minSize)+minSize; StringBuilder string = new StringBuilder(); for(int x = 0; x < size; x++) string.append(alpha.get(generator.nextInt(52))); return string.toString(); } public static LinkedList <String> randomStrings() { LinkedList<String> questions = new LinkedList<String>(); for(int i = 0; i < generator.nextInt(50)+1; i++) questions.add(InputGenerator.randomString(InputGenerator.randomInt(50)+1)); return questions; } public static int randomInt(){ return generator.nextInt(); } public static double randomDouble(){ return generator.nextDouble(); } public static int randomNegativeInt(){ return -generator.nextInt(Integer.MAX_VALUE-1)+1; } public static int randomInt(int range){ return generator.nextInt(range); } public static int randomNegativeInt(int range){ return -generator.nextInt(Integer.MAX_VALUE-1)+1; } private static boolean isLeapYear(int year) { if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) return true; else return false; } public static String randomDateString() { int year = randomDateYear(); int month = randomDateMonth(); int day = randomDateDay(year, month); int hour = randomDateHour(); int minute = randomDateMinute(); int second = randomDateSecond(); return String.format("%04d-%02d-%02d %02d:%02d:%02d", year, month, day, hour, minute, second); } public static String randomDateStringNoTime() { int year = randomDateYear(); int month = randomDateMonth(); int day = randomDateDay(year, month); return String.format("%02d-%02d-%04d", month, day, year); } public static String randomDateStringFormat2() { int year = randomDateYear(); int month = randomDateMonth(); int day = randomDateDay(year, month); int hour = randomDateHour(); int minute = randomDateMinute(); int second = randomDateSecond(); return String.format("%02d-%02d-%04d %02d:%02d:%02d", month, day, year, hour, minute, second); } public static String randomDateDisplayString() { int year = randomDateYear(); int month = randomDateMonth(); int day = randomDateDay(year, month); int hour = randomDateHour(); int minute = randomDateMinute(); int second = randomDateSecond(); return String.format("%02d/%02d/%04d %02d:%02d:%02d", year, month, day, hour, minute, second); } public static int randomDateYear() { return 1900 + generator.nextInt(200); } public static int randomDateMonth() { return generator.nextInt(12) + 1; } public static int randomDateDay(int year, int month) { final int[] maxMonthDays = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; int numDays = maxMonthDays[month - 1]; if (month == 2 && isLeapYear(year)) numDays = 29; return generator.nextInt(numDays) + 1; } public static int randomDateHour() { return generator.nextInt(24); } public static int randomDateMinute() { return generator.nextInt(60); } public static int randomDateSecond() { return generator.nextInt(60); } public static int randomDateMillisecond() { return generator.nextInt(1000); } public static DateWrapper randomDateWrapper() { return new DateWrapper(randomDateString()); } public static DateWrapper randomDateWrapper(DateWrapper startDate) { DateWrapper date = (DateWrapper) startDate.clone(); //date.setTimeInMillis(startDate.getTimeInMillis()+randomInt()); return date; } public static Drug randomDrug(){ Drug drug = new Drug(); drug.SetDosage(generator.nextFloat()); drug.SetDosageUnit(randomString()); drug.SetName(randomString()); drug.SetPrescriber(randomString()); drug.SetRoute(randomString(60)); drug.SetStartDate(randomDateWrapper()); drug.SetStopDate(randomDateWrapper()); drug.setDrugID(randomInt()); LinkedList <String> addlQs = new LinkedList <String> (); drug.SetAdditionalQuestions(InputGenerator.randomStrings()); generatedDrugs.add(drug); return drug; } public static String randomNote() { String note = randomString(); generatedNotes.add(note); return note; } public static PatientRecord randomPatientRecord() { PatientRecord record = PatientRecord.GetInstance(); LinkedList<Drug> drugList = new LinkedList<Drug>(); LinkedList<Allergy> allergyList = new LinkedList<Allergy>(); LinkedList<String> notesList = new LinkedList<String>(); for(int i = 0; i < generator.nextInt(100); i++) { drugList.add(randomDrug()); allergyList.add(randomAllergy()); notesList.add(randomNote()); } QuestionSet questions = new QuestionSet(InputGenerator.randomStrings()); LinkedList<String> allQuestions = new LinkedList<String>(); for (Drug a : drugList) for (String question : a.GetAdditionalQuestions()) allQuestions.add(question); questions.UpdateQuestionSet(allQuestions); PatientInfo patient = randomPatient(); String recordCreator = randomString(); String lastModifiedBy = randomString(); DateWrapper dateCreated = randomDateWrapper(); DateWrapper dateLastModified = randomDateWrapper(dateCreated); boolean appendOnly = generator.nextBoolean(); boolean summaryMode = generator.nextBoolean(); record.SetDrugsList(drugList); record.SetAllergyList(allergyList); record.SetNotesList(notesList); record.SetQuestions(questions); record.SetPatient(patient); record.SetRecordCreator(recordCreator); record.SetLastModifiedBy(lastModifiedBy); record.SetDateCreated(dateCreated); record.SetDateLastModified(dateLastModified); record.SetAppendOnly(appendOnly); generatedPatientRecords.add(record); return record; } public static QuestionSet randomQuestionSet() { LinkedList<String> staticQuestions = new LinkedList<String>(); LinkedList<String> dynamicQuestions = new LinkedList<String>(); for(int i = 0; i < generator.nextInt(100); i++) { staticQuestions.add(randomString()); dynamicQuestions.add(randomString()); } QuestionSet set = new QuestionSet(staticQuestions); set.UpdateQuestionSet(dynamicQuestions); generatedQuestionSets.add(set); return set; } public static PatientInfo randomPatient() { PatientInfo temp = new PatientInfo(randomString(), randomString(), randomDateString()); temp.SetHeight(randomInt(90)+1); temp.SetWeight(randomInt(500)+1); int gen = randomInt(2); if(gen==0) temp.SetGender("male"); else if(gen==1) temp.SetGender("female"); else temp.SetGender("other"); temp.SetMedicalNumber(randomInt() + ""); generatedPatients.add(temp); return temp; } public static Allergy randomAllergy() { Allergy temp = new Allergy(randomString(), randomString()); generatedAllergies.add(temp); return temp; } public static User randomUser() { int gen = randomInt(3); String type = null; if(gen == 0) type = "nurse"; else if(gen == 1) type = "admin"; else if(gen == 2) type = "pharmacist"; User user = new User(randomString(), type); user.password = randomString(); generatedUsers.add(user); return user; } public static User randomUser(int maxSize) { int gen = randomInt(3); String type = null; if(gen == 0) type = "nurse"; else if(gen == 1) type = "admin"; else if(gen == 2) type = "pharmacist"; User user = new User(randomString(maxSize), type); user.password = randomString(maxSize); generatedUsers.add(user); return user; } public static User randomMinUser(int minSize) { int gen = randomInt(3); String type = null; if(gen == 0) type = "nurse"; else if(gen == 1) type = "admin"; else if(gen == 2) type = "pharmacist"; User user = new User(randomString(minSize), type); user.password = randomString(minSize); generatedUsers.add(user); return user; } public static void reset() { generatedAllergies.clear(); generatedDrugs.clear(); generatedPatients.clear(); generatedPatientRecords.clear(); generatedQuestionSets.clear(); generatedUsers.clear(); generatedNotes.clear(); } }