Package com.bugyal.imentor.frontend.server

Source Code of com.bugyal.imentor.frontend.server.RandomString

package com.bugyal.imentor.frontend.server;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Random;
import java.util.Set;

import com.bugyal.imentor.MentorException;
import com.bugyal.imentor.server.MentorManager;
import com.bugyal.imentor.server.ParticipantManager;
import com.bugyal.imentor.server.data.Location;
import com.bugyal.imentor.server.data.Opportunity;
import com.bugyal.imentor.server.data.Participant;
import com.bugyal.imentor.server.data.old.Subject;

public class DataGenerator {
  private Random r = new Random();
  private RandomString rs = new RandomString(5);

  DataGenerator(int count) throws MentorException {
    createRandomParticipants(count);
  }

  void createRandomParticipants(int count) throws MentorException {
    for (int i = 0; i < count; i++) {
      String name = "";
      String gender = getRandomGender();
      if (gender.equals("male")) {
        name = Names.BOYS.get(r.nextInt(Names.BOYS.size()));
      } else {
        name = Names.GIRLS.get(r.nextInt(Names.GIRLS.size()));
      }
      String email = name + "." + rs.nextString() + "@kawanan.com";

      List<String> hasSubjects = getRandomList();
      List<String> needSubjects = getRandomList();

      ParticipantManager participantManager = MentorManager.INSTANCE
          .getParticipantManager();
      Participant participant = participantManager.createParticipant(
          name, gender, getRandomLocation(), email, "100002992300278");

      participantManager.addHasKnowledge(participant, hasSubjects, 1,
          participant);
      participantManager.addNeedKnowledge(participant, needSubjects, 1,
          participant);

      if (r.nextFloat() < 0.1) {
        List<Participant> contacts = new ArrayList<Participant>();
        contacts.add(participant);
        Opportunity o = MentorManager.INSTANCE.getOpportunityManager()
            .createOpportunity(getRandomLocation(),
                getRandomList(), r.nextInt(7), contacts,
                r.nextInt(4), rs.nextString(), participant);
        for (int loc = 0; loc < o.getContacts().size(); loc++) {
          Participant p = MentorManager.INSTANCE
              .getParticipantManager().findById(
                  o.getContacts().get(loc));
          p.addCreatedOpportuny(o.getKey());
          MentorManager.INSTANCE.getParticipantManager().save(p);
        }
      }

    }
  }

  // 17.535368,78.222656, 17.264105,78.717041
  // 31.989442,72.949219, 7.406048,87.758789

  private Location getRandomLocation() {
    Location location = new Location(nextDouble(17.26, 17.53, r),
        nextDouble(78.22, 78.72, r), rs.nextString(), r.nextInt(100));
    // For more spread data (most of india)
    // Location location = new Location(nextDouble(7.4, 32.0, r),
    // nextDouble(72.95, 87.75, r), rs.nextString(), r.nextInt(100));
    return location;
  }

  enum Gender {
    M, F;
  }

  private String getRandomGender() {
    String gender = Gender.values()[r.nextInt(2)].toString();
    return gender;
  }

  private List<String> getRandomList() {
    List<String> returnList = new ArrayList<String>();
    int count = r.nextInt(3) + 1;

    Set<Integer> included = new HashSet<Integer>();
    for (int i = 0; i < count;) {
      int r1 = r.nextInt(Subject.subjects.size());
      if (!included.contains(r)) {
        i++;
        included.add(r1);
        returnList.add(Subject.subjects.get(r1));
      }
    }

    return returnList;
  }

  public double nextDouble(double min, double max, Random r) {
    double randomValue = min + (max - min) * r.nextDouble();
    return randomValue;
  }
}

class RandomString {
  private static final char[] symbols = new char[36];

  static {
    for (int idx = 0; idx < 10; ++idx)
      symbols[idx] = (char) ('0' + idx);
    for (int idx = 10; idx < 36; ++idx)
      symbols[idx] = (char) ('a' + idx - 10);
  }

  private final Random random = new Random();

  private final char[] buf;

  public RandomString(int length) {
    if (length < 1)
      throw new IllegalArgumentException("length < 1: " + length);
    buf = new char[length];
  }

  public String nextString() {
    for (int idx = 0; idx < buf.length; ++idx)
      buf[idx] = symbols[random.nextInt(symbols.length)];
    return new String(buf);
  }

}
TOP

Related Classes of com.bugyal.imentor.frontend.server.RandomString

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.