/** * Copyright 2010 the original author or authors. * * This file is part of Zksample2. http://zksample2.sourceforge.net/ * * Zksample2 is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Zksample2 is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Zksample2. If not, see <http://www.gnu.org/licenses/gpl.html>. */ package de.forsthaus.example; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import java.util.Random; import org.apache.commons.lang.StringUtils; /** * Engine for creating random data from text files.<br> * * * @author bbruhns * @author sgerth */ public final class RandomDataEngine implements Serializable { private static final long serialVersionUID = 1L; final private Random RANDOM; final private String[] BLOB; final private String[] EMAIL; final private String[] HOMEPAGE; final private String[] MANFIRSTNAME; final private String[] LASTNAME; final private String[] CITY; final private String[] ZIP; final private String[] STREET; final private String[] PHONENUMBER; final private String[] FEMALEFIRSTNAME; public String getRandomBlob() { return this.BLOB[this.RANDOM.nextInt(this.BLOB.length)]; } public String getRandomEmail() { return this.EMAIL[this.RANDOM.nextInt(this.EMAIL.length)]; } public String getRandomHomepage() { return this.HOMEPAGE[this.RANDOM.nextInt(this.HOMEPAGE.length)]; } public String getRandomManFirstname() { return this.MANFIRSTNAME[this.RANDOM.nextInt(this.MANFIRSTNAME.length)]; } public String getRandomLastname() { return this.LASTNAME[this.RANDOM.nextInt(this.LASTNAME.length)]; } public String getRandomCity() { return this.CITY[this.RANDOM.nextInt(this.CITY.length)]; } public String getRandomZip() { return this.ZIP[this.RANDOM.nextInt(this.ZIP.length)]; } public String getRandomStreet() { return this.STREET[this.RANDOM.nextInt(this.STREET.length)]; } public String getRandomPhoneNumber() { return this.PHONENUMBER[this.RANDOM.nextInt(this.PHONENUMBER.length)]; } public String getRandomFemaleFirstname() { return this.FEMALEFIRSTNAME[this.RANDOM.nextInt(this.FEMALEFIRSTNAME.length)]; } private static String[] createStringArray(String name) { try { final InputStream inputStream = RandomDataEngine.class.getResourceAsStream("/example/" + name); try { final BufferedReader lr = new BufferedReader(new InputStreamReader(inputStream, "UTF-8")); final List<String> r = new ArrayList<String>(); String str; while ((str = lr.readLine()) != null) { if (StringUtils.isBlank(str)) { continue; } r.add(str); } return r.toArray(new String[r.size()]); } finally { if (inputStream != null) { inputStream.close(); } } } catch (final IOException e) { throw new RuntimeException(e); } } public RandomDataEngine() { this.RANDOM = new Random((long) Math.random() + System.currentTimeMillis()); this.BLOB = createStringArray("blob.txt"); this.EMAIL = createStringArray("email.txt"); this.HOMEPAGE = createStringArray("homepage.txt"); this.MANFIRSTNAME = createStringArray("manfirstname.txt"); this.LASTNAME = createStringArray("lastname.txt"); this.CITY = createStringArray("city.txt"); this.ZIP = createStringArray("zip.txt"); this.STREET = createStringArray("street.txt"); this.PHONENUMBER = createStringArray("phonenumber.txt"); this.FEMALEFIRSTNAME = createStringArray("femalefirstname.txt"); } }