public void createTestData()

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();
    }