in stack/tools/src/main/java/org/apache/usergrid/tools/ExportDataCreator.java [133:273]
public void createTestData() throws Exception {
OrganizationInfo orgInfo = managementService.getOrganizationByName( orgName );
if (orgInfo == null) {
OrganizationOwnerInfo ownerInfo = managementService.createOwnerAndOrganization(
orgName, adminUsername + "@example.com", adminUsername,
adminUsername + "@example.com", adminPassword, true, false );
orgInfo = ownerInfo.getOrganization();
}
ApplicationInfo appInfo = managementService.getApplicationInfo( orgName + "/" + appName );
if (appInfo == null) {
UUID appId = managementService.createApplication( orgInfo.getUuid(), appName ).getId();
appInfo = managementService.getApplicationInfo( appId );
}
EntityManager em = emf.getEntityManager( appInfo.getId() );
Fairy fairy = Fairy.create();
List<Entity> users = new ArrayList<Entity>( numUsers );
for (int i = 0; i < numUsers; i++) {
final Person person = fairy.person();
Entity userEntity = null;
try {
final Map<String, Object> userMap = new HashMap<String, Object>() {{
put( "name", person.username() );
put( "username", person.username() );
put( "password", person.password() );
put( "email", person.email() );
put( "companyEmail", person.companyEmail() );
put( "dateOfBirth", person.dateOfBirth().toDate().toString());
put( "firstName", person.firstName() );
put( "lastName", person.lastName() );
put( "nationalIdentificationNumber", person.nationalIdentificationNumber() );
put( "telephoneNumber", person.telephoneNumber() );
put( "passportNumber", person.passportNumber() );
put( "address", new HashMap<String, Object>() {{
put("streetNumber", person.getAddress().streetNumber());
put("street", person.getAddress().street());
put("city", person.getAddress().getCity());
put("postalCode", person.getAddress().getPostalCode());
}});
}};
userEntity = em.create( "user", userMap );
users.add( userEntity );
logger.debug("Created user {}", userEntity.getName());
} catch (DuplicateUniquePropertyExistsException e) {
logger.error( "Dup user generated: " + person.username() );
continue;
} catch (Exception e) {
logger.error("Error creating user", e);
continue;
}
em.refreshIndex();
final Company company = person.getCompany();
try {
EntityRef ref = em.getAlias( "company", company.name() );
Entity companyEntity = (ref == null) ? null : em.get( ref );
// create company if it does not exist yet
if ( companyEntity == null ) {
final Map<String, Object> companyMap = new HashMap<String, Object>() {{
put( "name", company.name() );
put( "domain", company.domain() );
put( "email", company.email() );
put( "url", company.url() );
put( "vatIdentificationNumber", company.vatIdentificationNumber() );
}};
companyEntity = em.create( "company", companyMap );
} else {
logger.info("Company {} already exists", company.name());
}
em.createConnection( userEntity, "employer", companyEntity );
logger.debug("User {} now employed by {}", userEntity.getName(), companyEntity.getName());
} catch (DuplicateUniquePropertyExistsException e) {
logger.error( "Dup company generated {} property={}", company.name(), e.getPropertyName() );
continue;
} catch (Exception e) {
logger.error("Error creating or connecting company", e);
continue;
}
em.refreshIndex();
try {
for (int j = 0; j < 5; j++) {
Activity activity = new Activity();
Activity.ActivityObject actor = new Activity.ActivityObject();
actor.setEntityType( "user" );
actor.setId( userEntity.getUuid().toString() );
activity.setActor( actor );
activity.setVerb( "POST" );
activity.setContent( "User " + person.username() + " generated a random string "
+ RandomStringUtils.randomAlphanumeric( 5 ) );
em.createItemInCollection( userEntity, "activities", "activity", activity.getProperties() );
logger.debug("Created activity {}", activity.getContent());
}
if (users.size() > 10) {
for (int j = 0; j < 5; j++) {
try {
Entity otherUser = users.get( (int) (Math.random() * users.size()) );
em.createConnection( userEntity, "associate", otherUser );
logger.debug("User {} now associated with user {}",
userEntity.getName(), otherUser.getName());
} catch (Exception e) {
logger.error( "Error connecting user to user: " + e.getMessage() );
}
}
}
em.refreshIndex();
Set<String> connectionTypes = em.getConnectionTypes( userEntity );
logger.debug("User {} now has {} connection types: {}",
new Object[] { userEntity.getName(), connectionTypes.size(), connectionTypes});
} catch (Exception e) {
logger.error("Error creating activities", e);
continue;
}
}
em.refreshIndex();
}