Package br.com.six2six.bfgex

Source Code of br.com.six2six.bfgex.RandomGen

package br.com.six2six.bfgex;

import java.util.Collection;

import org.apache.commons.lang.RandomStringUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.math.NumberRange;
import org.apache.commons.lang.math.RandomUtils;
import org.apache.commons.math.random.RandomData;
import org.apache.commons.math.random.RandomDataImpl;

import br.com.six2six.bfgex.resource.Dictionary;


public class RandomGen {

  private static NumberRange WORDS_PER_SENTENCE = new NumberRange(3, 20);
  private static NumberRange SENTENCES_PER_PARAGRAPH = new NumberRange(3, 8);

  public static boolean pickBoolean() {
    return RandomUtils.nextBoolean();
  }

  public static String pickChar() {
    return RandomStringUtils.randomAlphabetic(1);
  }

  public static String pickLowerChar() {
    return pickChar().toLowerCase();
  }

  public static String pickUpperChar() {
    return pickChar().toUpperCase();
  }

  public static String pickWhiteSpaces(Integer length) {
    return RandomStringUtils.random(length, "\t\n\r");
  }

  public static String pickDigits(Integer length) {
    length = getValidLength(length, new NumberRange(1,10));
    return RandomStringUtils.randomNumeric(length);
  }

  public static <T> T pickArray(T[] array) {
    return array[RandomUtils.nextInt(array.length)];
  }

  public static <T> T pickOne(T...args) {
    return (T) pickArray(args);
  }

  public static Number pickRange(NumberRange range) {
    Number result = null;
    RandomData randomData = new RandomDataImpl();

    if (range.getMinimumNumber() instanceof Integer && range.getMaximumNumber() instanceof Integer) {
      result = randomData.nextInt(range.getMinimumInteger(), range.getMaximumInteger());
    }

    if (range.getMinimumNumber() instanceof Long && range.getMaximumNumber() instanceof Long) {
      result = randomData.nextLong(range.getMinimumLong(), range.getMaximumLong());
    }

    if (range.getMinimumNumber() instanceof Float && range.getMaximumNumber() instanceof Float) {
      result = randomData.nextUniform(range.getMinimumFloat(), range.getMaximumFloat());
    }

    if (range.getMinimumNumber() instanceof Double && range.getMaximumNumber() instanceof Double) {
      result = randomData.nextUniform(range.getMinimumDouble(), range.getMaximumDouble());
    }

    return result;
  }

  @SuppressWarnings("unchecked")
  public static <T> T pickCollection(Collection<T> collection) {
    T result = null;
    if (collection != null && !collection.isEmpty()) {
      result = (T) pickArray(collection.toArray());
    }
    return result;
  }

  public static String pickAlphaNumeric() {
    return RandomStringUtils.randomAlphanumeric(1);
  }

  public static String sentence(Integer length) {
    if (length == null) {
      length = pickRange(WORDS_PER_SENTENCE).intValue();
    }
    String[] result = new String[length];

    for (int i = 0; i < length; i++) {
      result[i] = word();
    }

    return StringUtils.join(result, " ");
  }

  public static String sentence() {
    return sentence (null);
  }

  public static String paragraph(Integer length) {
    if (length == null) {
      length = pickRange(SENTENCES_PER_PARAGRAPH).intValue();
    }
    String[] result = new String[length];

    for (int i = 0; i < length; i++) {
      result[i] = sentence();
    }

    return StringUtils.join(result, ".");
  }


  public static String email(Integer emailLength, String domain) {
    emailLength = getValidLength(emailLength, new NumberRange(3, 40));
    domain = domain == null ? "example.org" : domain;
    return word(emailLength - domain.length() - 1) + "@" + domain;
  }

  public static String email(Integer emailLength) {
    return email(emailLength, null);
  }

  public static String email(String domain) {
    return email(null, domain);
  }

  public static String email() {
    return email(null, null);
  }

  public static String word(Integer length) {
      String word = null;
        length = getValidLength(length, new NumberRange(3, 20));
     
      if (length == 1) {
          word = pickChar();
      } else {
          word = pickCollection(Dictionary.getWordsByLength(length));
      }

    if (word == null) {
      word = RandomStringUtils.randomAlphanumeric(length);
    }

    return word;
  }

  public static String word() {
    return word(null);
  }

  public static String firstName(Integer length, Gender gender) {
    length = getValidLength(length, new NumberRange(3, 10));
    return gender.equals(Gender.MALE) ?
        pickCollection(Dictionary.getMaleNameByLength(length)) : pickCollection(Dictionary.getFemaleNameByLength(length));
  }

  public static String firstName(Integer length) {
    return firstName(length, pickArray(Gender.values()));
  }

  public static String firstName() {
    return firstName(null, pickArray(Gender.values()));
  }

  public static String firstName(Gender gender) {
    return firstName(null, gender);
  }

  public static String lastName(Integer length) {
    length = getValidLength(length, new NumberRange(3, 10));
    return pickCollection(Dictionary.getLastNameByLength(length));
  }

  public static String lastName() {
    return lastName(null);
  }

  public static String name(Integer length, Gender gender) {
    return firstName(length, gender) + " " + lastName(length);
  }

  public static String name(Gender gender) {
    return firstName(null, gender) + " " + lastName(null);
  }

  public static String name(Integer length) {
    return firstName(length) + " " + lastName(length);
  }

  public static String name() {
    return firstName() + " " + lastName();
  }

  private static Integer getValidLength(Integer length, NumberRange numberRange) {
    if (length == null) {
      length = pickRange(numberRange).intValue();
    }
    return length;
  }
}
TOP

Related Classes of br.com.six2six.bfgex.RandomGen

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.