blob: 251af9b04ee6ff387375f667e7281c9c871b61b5 [file] [log] [blame]
/*
* Copyright 2010 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.google.gwt.sample.dynatablerf.server;
import com.google.gwt.sample.dynatablerf.domain.Person;
import com.google.gwt.sample.dynatablerf.domain.Schedule;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
/**
* Utility class for creating random people.
*/
class PersonFuzzer {
public static final int MAX_PEOPLE = 100;
private static final String[] FIRST_NAMES = new String[] {
"Inman", "Sally", "Omar", "Teddy", "Jimmy", "Cathy", "Barney", "Fred",
"Eddie", "Carlos"};
private static final String[] LAST_NAMES = new String[] {
"Smith", "Jones", "Epps", "Gibbs", "Webber", "Blum", "Mendez",
"Crutcher", "Needler", "Wilson", "Chase", "Edelstein"};
private static final String[] SUBJECTS = new String[] {
"Chemistry", "Phrenology", "Geometry", "Underwater Basket Weaving",
"Basketball", "Computer Science", "Statistics", "Materials Engineering",
"English Literature", "Geology"};
private static final int STUDENTS_PER_PROF = 5;
public static List<Schedule> collectSchedules(List<Person> randomPeople) {
List<Schedule> toReturn = new ArrayList<Schedule>();
for (Person person : randomPeople) {
toReturn.add(person.getClassSchedule());
}
return toReturn;
}
public static Person generatePerson() {
Random rnd = new Random();
Person toReturn = generateRandomPerson(rnd);
AddressFuzzer.fuzz(rnd, toReturn.getAddress());
return toReturn;
}
public static List<Person> generateRandomPeople() {
List<Person> toReturn = new ArrayList<Person>(MAX_PEOPLE);
Random rnd = new Random(3);
for (long i = 0; i < MAX_PEOPLE; i++) {
Person person = generateRandomPerson(rnd);
AddressFuzzer.fuzz(rnd, person.getAddress());
toReturn.add(person);
}
return toReturn;
}
private static Person generateRandomPerson(Random rnd) {
if (isChosenAsProfessor(rnd)) {
return generateRandomProfessor(rnd);
} else {
return generateRandomStudent(rnd);
}
}
private static Person generateRandomProfessor(Random rnd) {
Person prof = new Person();
String firstName = pickRandomString(rnd, FIRST_NAMES);
String lastName = pickRandomString(rnd, LAST_NAMES);
prof.setName("Dr. " + firstName + " " + lastName);
String subject = pickRandomString(rnd, SUBJECTS);
prof.setDescription("Professor of " + subject);
prof.setClassSchedule(ScheduleFuzzer.generateRandomSchedule(rnd));
return prof;
}
private static Person generateRandomStudent(Random rnd) {
Person student = new Person();
String firstName = pickRandomString(rnd, FIRST_NAMES);
String lastName = pickRandomString(rnd, LAST_NAMES);
student.setName(firstName + " " + lastName);
String subject = pickRandomString(rnd, SUBJECTS);
student.setDescription("Majoring in " + subject);
student.setClassSchedule(ScheduleFuzzer.generateRandomSchedule(rnd));
return student;
}
private static boolean isChosenAsProfessor(Random rnd) {
return rnd.nextInt(STUDENTS_PER_PROF + 1) == 0;
}
private static String pickRandomString(Random rnd, String[] a) {
int i = rnd.nextInt(a.length);
return a[i];
}
}