Package models.generator

Source Code of models.generator.DataGenerator

package models.generator;

import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;
import models.Article;
import models.ArticleComment;
import models.Badge;
import models.GoogleAccount;
import models.Interest;
import models.Member;
import models.Session;
import models.SessionComment;
import models.SharedLink;
import models.TwitterAccount;
import play.Logger;

/**
* Creates dummy data for load tests.
* @author Sryl <cyril.lacote@gmail.com>
*/
public final class DataGenerator {
   
    private static AtomicInteger nbMembers = new AtomicInteger(0);
    protected static Member createMember() {
        Member m = new Member("login"+nbMembers.getAndIncrement());
       
        m.company = Dummy.randomString(30);
        m.email = Dummy.randomEmail();
        m.firstname = Dummy.randomName(20);
        m.lastname = Dummy.randomName(30);
        m.longDescription = Dummy.randomText(5000);
        m.shortDescription = Dummy.randomText(140);
        m.nbConsults = Dummy.randomInt(9999);
        m.save();
       
        // Accounts
        m.addAccount(new TwitterAccount(Dummy.randomScreenName()));
        m.addAccount(new GoogleAccount(Dummy.randomGoogleId()));
       
        // Badges
        final int nbBadges = Dummy.randomInt(Badge.values().length);
        for (int i = 0; i < nbBadges; i++) {
            m.addBadge(Badge.values()[Dummy.randomInt(Badge.values().length)]);
        }

        // Interests
        // Some existing interests
        // Some new interests
        final int nbExistingInterests = Dummy.randomInt(5);
        List<Interest> interests = Interest.findAllOrdered();
        for (int i = 0; i < nbExistingInterests; i++) {
            m.addInterest(interests.get(Dummy.randomInt(interests.size())).name);
        }
        final int nbNewInterests = Dummy.randomInt(10);
        for (int i = 0; i < nbNewInterests; i++) {
            m.addInterest(Dummy.randomString(20));
        }
       
        // Shared links
        final int nbSharedLinks = Dummy.randomInt(5);
        for (int i = 0; i < nbSharedLinks; i++) {
            m.addSharedLink(new SharedLink(Dummy.randomString(25), Dummy.randomURL()));
        }
      
        return m.save();
    }
   
    public static Set<Member> createMembers(int nb) {
        Set<Member> members = new HashSet<Member>(nb);
        for (int i = 0; i < nb; i++) {
                   
            Logger.info("Generating dummy member n°"+(i+1));

            members.add(createMember());
        }
        return members;
    }
   
    public static void generateLinks(int averageLinksPerMember) {
        List<Member> members = Member.findAll();
        for (Member m : members) {

            Logger.info("Generating dummy links for member "+m);

            final int nbLinks = Dummy.randomInt(2*averageLinksPerMember);
            for (int i = 0; i < nbLinks; i++) {
                m.addLink(members.get(Dummy.randomInt(members.size())));
            }
            m.save();
        }
    }
   
    public static void generateSessionComments(int averageCommentsPerMember) {
        List<Session> sessions = Session.findAll();
        if (!sessions.isEmpty()) {
            List<Member> members = Member.findAll();
            for (Member m : members) {

                Logger.info("Generating dummy session comments for member "+m);

                final int nbComments = Dummy.randomInt(2*averageCommentsPerMember);
                for (int i = 0; i < nbComments; i++) {
                    Session s = sessions.get(Dummy.randomInt(sessions.size()));
                    s.addComment(new SessionComment(m, s, Dummy.randomText(3000)));
                    s.save();
                }
            }
        }
    }
   
    public static void generateArticleComments(int averageCommentsPerMember) {
        List<Article> articles = Article.findAll();
        if (!articles.isEmpty()) {
            List<Member> members = Member.findAll();
            for (Member m : members) {

                Logger.info("Generating dummy article comments for member "+m);

                final int nbComments = Dummy.randomInt(2*averageCommentsPerMember);
                for (int i = 0; i < nbComments; i++) {
                    Article a = articles.get(Dummy.randomInt(articles.size()));
                    a.addComment(new ArticleComment(m, a, Dummy.randomText(3000)));
                    a.save();
                }
            }
        }
    }
}
TOP

Related Classes of models.generator.DataGenerator

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.