Package gotnames.web.st

Source Code of gotnames.web.st.CreateTestDataTask

package gotnames.web.st;

import gotnames.Pair;
import gotnames.dm.FindOrCreate;
import gotnames.dm.Group;
import gotnames.dm.KTrans;
import gotnames.dm.PersistedEntityValue;
import gotnames.dm.ProfilePicture;
import gotnames.dm.ProfilePictureData;
import gotnames.dm.User;
import gotnames.dm.User.Gender;

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Arrays;
import java.util.List;

import javax.jdo.PersistenceManager;
import javax.jdo.Query;

import org.apache.commons.io.IOUtils;

import com.medallia.spider.Task;
import com.medallia.tiny.Empty;
import com.medallia.tiny.Func;
import com.medallia.tiny.Funcs;

/**
* Task used to create some test data; the values in {@link #PEOPLE} are movie
* starts and their pictures are taken from IMDB.
*/
public class CreateTestDataTask extends Task {
 
  private static final String[][] PEOPLE = new String[][] {
    { "Arnold", "Schwarzenegger", "m", "http://ia.media-imdb.com/images/M/MV5BMTI3MDc4NzUyMV5BMl5BanBnXkFtZTcwMTQyMTc5MQ@@._V1._SY314_CR18,0,214,314_.jpg" },
    { "Michael", "Dudikoff", "m", "http://ia.media-imdb.com/images/M/MV5BMTQ4MTA1NDMyOV5BMl5BanBnXkFtZTcwNjgzMzA3Mg@@._V1._SY314_CR126,0,214,314_.jpg" },
    { "Jean-Claude Van", "Damme", "m", "http://ia.media-imdb.com/images/M/MV5BMTA2OTE1Njg4NjVeQTJeQWpwZ15BbWU3MDAyNjU4MDM@._V1._SY314_CR20,0,214,314_.jpg" },
    { "Dolph", "Lundgren", "m", "http://ia.media-imdb.com/images/M/MV5BMjE3MzIzNDMwMl5BMl5BanBnXkFtZTcwMDAzNDk1Mw@@._V1._SY314_CR128,0,214,314_.jpg" },
    { "Steven", "Seagal", "m", "http://ia.media-imdb.com/images/M/MV5BMTczNTU4ODcyMV5BMl5BanBnXkFtZTYwMzkyMjA1._V1._SY314_CR8,0,214,314_.jpg" },
    { "Bruce", "Willis", "m", "http://ia.media-imdb.com/images/M/MV5BMjA0MjMzMTE5OF5BMl5BanBnXkFtZTcwMzQ2ODE3Mw@@._V1._SY314_CR26,0,214,314_.jpg" },
    { "Orlando", "Bloom", "m", "http://ia.media-imdb.com/images/M/MV5BMjE1MDkxMjQ3NV5BMl5BanBnXkFtZTcwMzQ3Mjc4MQ@@._V1._SY314_CR7,0,214,314_.jpg" },
    { "Robert", "Duvall", "m", "http://ia.media-imdb.com/images/M/MV5BMjk1MjA2Mjc2MF5BMl5BanBnXkFtZTcwOTE4MTUwMg@@._V1._SY314_CR5,0,214,314_.jpg" },
   
    { "Jodie", "Foster", "f", "http://ia.media-imdb.com/images/M/MV5BMTM3MjgyOTQwNF5BMl5BanBnXkFtZTcwMDczMzEwNA@@._V1._SY314_CR0,0,214,314_.jpg" },
    { "Jennifer", "Aniston", "f", "http://ia.media-imdb.com/images/M/MV5BNjk1MjIxNjUxNF5BMl5BanBnXkFtZTcwODk2NzM4Mg@@._V1._SY314_CR2,0,214,314_.jpg" },
    { "Jessica", "Alba", "f", "http://ia.media-imdb.com/images/M/MV5BODYxNzE4OTk5Nl5BMl5BanBnXkFtZTcwODYyMDYzMw@@._V1._SY314_CR11,0,214,314_.jpg" },
    { "Halle", "Berry", "f", "http://ia.media-imdb.com/images/M/MV5BMjIxNzc5MDAzOV5BMl5BanBnXkFtZTcwMDUxMjMxMw@@._V1._SY314_CR9,0,214,314_.jpg" },
    { "Angelina", "Jolie", "f", "http://ia.media-imdb.com/images/M/MV5BMjA3MjczNzU1OV5BMl5BanBnXkFtZTcwODM3OTc1Mg@@._V1._SY314_CR4,0,214,314_.jpg" },
    { "Sandra", "Bullock", "f", "http://ia.media-imdb.com/images/M/MV5BMTI5NDY5NjU3NF5BMl5BanBnXkFtZTcwMzQ0MTMyMw@@._V1._SY314_CR0,0,214,314_.jpg" },
    { "Hilary", "Swank", "f", "http://ia.media-imdb.com/images/M/MV5BMTM5NzQzNTU4NV5BMl5BanBnXkFtZTcwMDAyOTMwMw@@._V1._SY314_CR11,0,214,314_.jpg" },
    { "Kate", "Hudson", "f", "http://ia.media-imdb.com/images/M/MV5BMTA1NTk0MjMyOTFeQTJeQWpwZ15BbWU3MDA4NzEzMTM@._V1._SY314_CR11,0,214,314_.jpg" }
  };
 
  PostAction action(User user, final PersistenceManager pm) {
    final String groupName = "Celebrity";
   
    // create the group
    PersistedEntityValue<Group> pe = new FindOrCreate<Group>(pm, Group.class) {
      @Override protected Object execute(Query query) {
        query.setFilter("name == fieldParam");
        query.declareParameters("String fieldParam");
        return query.execute(groupName);
      }
      @Override protected void setValues(Group x) {
        x.setName(groupName);
      }
    }.go();
   
    if (!pe.isNew())
      return rawStringUtf8("Group " + groupName + " already exists");
   
    final Long groupKey = pe.getEntityValue().getKey();
   
    final List<Pair<User, ProfilePictureData>> users = Funcs.map(Arrays.asList(PEOPLE), new Func<String[], Pair<User, ProfilePictureData>>() {
      private boolean first = true;
      @Override public Pair<User, ProfilePictureData> call(final String[] person) {
        return new KTrans<Pair<User, ProfilePictureData>>(pm) {
          @Override protected Pair<User, ProfilePictureData> call() {
            User u = User.newUser(groupKey);
            u.setFirstName(person[0]);
            u.setLastName(person[1]);
            u.setEmail(person[0].toLowerCase() + "@example.com");
            u.setGender(person[2].equals("m") ? Gender.MALE : Gender.FEMALE);
           
            if (first) {
              u.setAdmin(true);
              first = false;
            }

            try {
              URL url = new URL(person[3]);
              byte[] rawProfilePictureBytes = IOUtils.toByteArray(url.openStream());

              ProfilePictureData profilePicture = ProfilePictureData.getProfilePicture(rawProfilePictureBytes);
              u.setProfilePictureInfo(profilePicture);

              pm.makePersistent(u);

              return Pair.cons(u, profilePicture);

            } catch (MalformedURLException e) {
              throw new IllegalStateException(e);
            } catch (IOException e) {
              throw new IllegalStateException("while contacting " + person[2], e);
            }
          }
        }.go();
      }
    });
   
    for (final Pair<User, ProfilePictureData> u : users) {
      new KTrans.Void(pm) {
        @Override protected void run() {
          ProfilePicture.saveProfilePicture(u.first, pm, u.second);
        }
      }.go();
    }
   
    StringBuilder sb = Empty.sb();
    sb.append("OK; created " + users.size() + " users\n");
    for (Pair<User, ProfilePictureData> u : users) {
      sb.append(u.first.getFullName() + ": " + u.first.getAuthToken() + "\n");
    }
   
    return rawStringUtf8(sb.toString());
  }

}
TOP

Related Classes of gotnames.web.st.CreateTestDataTask

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.