You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by sn...@apache.org on 2014/01/28 23:21:28 UTC
[18/96] [abbrv] [partial] Change package namespace to
org.apache.usergrid
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/2c2acbe4/stack/core/src/main/java/org/usergrid/persistence/EntityFactory.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/usergrid/persistence/EntityFactory.java b/stack/core/src/main/java/org/usergrid/persistence/EntityFactory.java
deleted file mode 100644
index e4c4ae9..0000000
--- a/stack/core/src/main/java/org/usergrid/persistence/EntityFactory.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*******************************************************************************
- * Copyright 2012 Apigee Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- ******************************************************************************/
-package org.usergrid.persistence;
-
-
-import java.util.UUID;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-
-/** A factory for creating Entity objects. */
-public class EntityFactory {
-
- /** The Constant logger. */
- private static final Logger logger = LoggerFactory.getLogger( EntityFactory.class );
-
-
- /**
- * New entity.
- *
- * @param <A> the generic type
- * @param id the id
- * @param type the type
- * @param entityClass the entity class
- *
- * @return new entity
- */
- public static <A extends Entity> A newEntity( UUID id, String type, Class<A> entityClass ) {
- if ( type == null ) {
- String errorMsg = "Entity type cannot be null";
- logger.error( errorMsg );
- throw new IllegalArgumentException( errorMsg );
- }
- if ( "entity".equalsIgnoreCase( type ) || "dynamicentity".equalsIgnoreCase( type ) ) {
- String errorMsg = "Unable to instantiate entity (" + type + ") because that is not a valid type.";
- logger.error( errorMsg );
- throw new IllegalArgumentException( errorMsg );
- }
- Class<? extends Entity> expectedCls = Schema.getDefaultSchema().getEntityClass( type );
-
- if ( entityClass == null ) {
- if ( expectedCls != null ) {
- entityClass = ( Class<A> ) expectedCls;
- }
- else {
- entityClass = ( Class<A> ) DynamicEntity.class;
- }
- }
-
- if ( ( expectedCls != null ) && !Entity.class.isAssignableFrom( entityClass ) && !expectedCls
- .isAssignableFrom( entityClass ) ) {
- String errorMsg = "Unable to instantiate entity (" + type
- + ") because type and entityClass do not match, either use DynamicClass as entityClass or fix " +
- "mismatch.";
- logger.error( errorMsg );
- throw new IllegalArgumentException( errorMsg );
- }
- else {
- try {
- A entity = entityClass.newInstance();
- entity.setUuid( id );
- entity.setType( type );
- return entity;
- }
- catch ( IllegalAccessException e ) {
- String errorMsg = "Unable to access entity (" + type + "): " + e.getMessage();
- logger.error( errorMsg );
- }
- catch ( InstantiationException e ) {
- String errorMsg = "Unable to instantiate entity (" + type + "): " + e.getMessage();
- logger.error( errorMsg );
- }
- }
-
- return null;
- }
-
-
- /**
- * New entity.
- *
- * @param <A> the generic type
- * @param id the id
- * @param entityClass the entity class
- *
- * @return new entity
- */
- public static <A extends Entity> A newEntity( UUID id, Class<A> entityClass ) {
-
- if ( entityClass == DynamicEntity.class ) {
- return null;
- }
-
- String type = Schema.getDefaultSchema().getEntityType( entityClass );
-
- return newEntity( id, type, entityClass );
- }
-
-
- /**
- * New entity.
- *
- * @param id the id
- * @param type the type
- *
- * @return new entity
- */
- public static Entity newEntity( UUID id, String type ) {
-
- Class<? extends Entity> entityClass = Schema.getDefaultSchema().getEntityClass( type );
- if ( entityClass == null ) {
- entityClass = DynamicEntity.class;
- }
-
- return newEntity( id, type, entityClass );
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/2c2acbe4/stack/core/src/main/java/org/usergrid/persistence/EntityManager.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/usergrid/persistence/EntityManager.java b/stack/core/src/main/java/org/usergrid/persistence/EntityManager.java
deleted file mode 100644
index 29f9019..0000000
--- a/stack/core/src/main/java/org/usergrid/persistence/EntityManager.java
+++ /dev/null
@@ -1,620 +0,0 @@
-/*******************************************************************************
- * Copyright 2012 Apigee Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- ******************************************************************************/
-package org.usergrid.persistence;
-
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.UUID;
-
-import org.usergrid.persistence.Results.Level;
-import org.usergrid.persistence.cassandra.GeoIndexManager;
-import org.usergrid.persistence.entities.Application;
-import org.usergrid.persistence.entities.Role;
-
-
-/**
- * The interface class for the data access object for Applications. Each application contains a set of users as well as
- * a hierarchy of groups. A application also includes a set of message inboxes and a set of assets.
- */
-public interface EntityManager {
-
- public void setApplicationId( UUID applicationId );
-
- public GeoIndexManager getGeoIndexManager();
-
- public EntityRef getApplicationRef();
-
- public Application getApplication() throws Exception;
-
- public void updateApplication( Application app ) throws Exception;
-
- public void updateApplication( Map<String, Object> properties ) throws Exception;
-
- public RelationManager getRelationManager( EntityRef entityRef );
-
- /** Get all collections for the application. Includes both user defined collections and schema collections */
- public Set<String> getApplicationCollections() throws Exception;
-
- public Map<String, Object> getApplicationCollectionMetadata() throws Exception;
-
- public long getApplicationCollectionSize( String collectionName ) throws Exception;
-
- /**
- * Creates an entity of the specified type attached to the specified application.
- *
- * @param type the type of the entity to create.
- * @param properties property values to create in the new entity or null.
- *
- * @return the newly created entity object.
- */
- public Entity create( String entityType, Map<String, Object> properties ) throws Exception;
-
- public <A extends Entity> A create( String entityType, Class<A> entityClass, Map<String, Object> properties )
- throws Exception;
-
- public <A extends TypedEntity> A create( A entity ) throws Exception;
-
- /**
- * Creates an entity of the specified type attached to the specified application.
- *
- * @param importId the UUID to assign to the imported entity
- * @param type the type of the entity to create.
- * @param properties property values to create in the new entity or null.
- *
- * @return the newly created entity object.
- *
- * @throws Exception the exception
- */
- public Entity create( UUID importId, String entityType, Map<String, Object> properties ) throws Exception;
-
- public void createApplicationCollection( String entityType ) throws Exception;
-
- public EntityRef getAlias( String aliasType, String alias ) throws Exception;
-
- /**
- * Get the entity ref from the value
- *
- * @param ownerId The owner Id of the collection
- * @param collectionName The name of the collection
- * @param aliasValue The value of the alias
- */
- public EntityRef getAlias( UUID ownerId, String collectionName, String aliasValue ) throws Exception;
-
- public Map<String, EntityRef> getAlias( String aliasType, List<String> aliases ) throws Exception;
-
- /**
- * Get aliases from the index with the given value
- *
- * @param ownerId The id of the collection owner
- * @param collectionName The name of the collection
- * @param aliases The alias property
- */
- public Map<String, EntityRef> getAlias( UUID ownerId, String collectionName, List<String> aliases )
- throws Exception;
-
- /**
- * Validates that the entity exists in the datastore meaning that it exists and the type has been loaded if not
- * already provided.
- *
- * @return an validated EntityRef or null.
- */
- public EntityRef validate( EntityRef entityRef ) throws Exception;
-
- public String getType( UUID entityId ) throws Exception;
-
- public EntityRef getRef( UUID entityId ) throws Exception;
-
- public Entity get( UUID entityId ) throws Exception;
-
- /**
- * Retrieves the entity for the specified entity reference.
- *
- * @param entity an Entity reference
- *
- * @return an Entity object for the specified entity reference.
- */
- public Entity get( EntityRef entityRef ) throws Exception;
-
- public <A extends Entity> A get( UUID entityId, Class<A> entityClass ) throws Exception;
-
- /**
- * Retrieves a set of Entities. Will return an Entity object containing all of the entity's name/value properties
- * and properties. For large numbers of entities, retrieving the properties can have additional overhead, passing
- * false for includeProperties can result in better performance.
- * <p/>
- * This method will be deprecated in future releases in favor of a version that supports paging.
- *
- * @param entityIds a list of entity UUIDs.
- * @param includeProperties whether to retrieve properties for the specified entities.
- *
- * @return a list of entity objects.
- */
- public Results get( Collection<UUID> entityIds, Results.Level resultsLevel ) throws Exception;
-
- /**
- * Retrieves a set of Entities. Will return an Entity object containing all of the entity's name/value properties
- * and properties. For large numbers of entities, retrieving the properties can have additional overhead, passing
- * false for includeProperties can result in better performance.
- * <p/>
- * This method will be deprecated in future releases in favor of a version that supports paging.
- *
- * @param entityIds a list of entity UUIDs.
- * @param includeProperties whether to retrieve properties for the specified entities.
- *
- * @return a list of entity objects.
- */
- public Results get( Collection<UUID> entityIds ) throws Exception;
-
- /**
- * Retrieves a set of Entitues cast to the specified class type.
- *
- * @return a list of entity objects.
- */
- public Results get( Collection<UUID> entityIds, Class<? extends Entity> entityClass, Results.Level resultsLevel )
- throws Exception;
-
- /**
- * Retrieves a set of Entities cast to the specified class type.
- *
- * @return a list of entity objects.
- */
- public Results get( Collection<UUID> entityIds, String entityType, Class<? extends Entity> entityClass,
- Results.Level resultsLevel ) throws Exception;
-
- /**
- * Updates the entity with the properties and values in the Entity Object.
- *
- * @param entity an Entity object.
- */
- public void update( Entity entity ) throws Exception;
-
- /**
- * Gets the value for a named entity property. Entity properties must be defined in the schema
- *
- * @param entity an entity reference
- * @param propertyName the property name to retrieve.
- *
- * @return the value of the named property or null.
- *
- * @throws Exception the exception
- */
- public Object getProperty( EntityRef entityRef, String propertyName ) throws Exception;
-
- /**
- * Do a single load of all entities with the given properties. Efficient if you have a subset of properties, and
- * know the ids of them. The entity UUID is in the key, the runtime subtype of Entity is in the value. Note that
- * if an entity cannot be loaded (id doesn't exist) it is simply ignored
- */
- public List<Entity> getPartialEntities( Collection<UUID> ids, Collection<String> properties ) throws Exception;
-
- /**
- * Gets the properties for the specified entity property.
- *
- * @param entity an entity reference
- *
- * @return the property values.
- *
- * @throws Exception the exception
- */
- public Map<String, Object> getProperties( EntityRef entityRef ) throws Exception;
-
- /**
- * Sets the value for a named entity property. If the property is being index, the index is updated to remove the
- * old value and add the new value.
- *
- * @param entity an entity reference
- * @param propertyName the property to set.
- * @param propertyValue new value for property.
- *
- * @throws Exception the exception
- */
- public void setProperty( EntityRef entityRef, String propertyName, Object propertyValue ) throws Exception;
-
- /**
- * You should only use this method if you are absolutely sure what you're doing. Use setProperty without the
- * override param in most cases. With great power comes great responsibility....
- *
- * @param override set to true to force this value to persist. This will ignore all mutable attributes as well as
- * validation. Use with care
- */
- void setProperty( EntityRef entityRef, String propertyName, Object propertyValue, boolean override )
- throws Exception;
-
- /**
- * Updates the properties for the specified entity.
- *
- * @param entity an entity reference
- * @param properties the properties
- *
- * @throws Exception the exception
- */
- public void updateProperties( EntityRef entityRef, Map<String, Object> properties ) throws Exception;
-
- public void deleteProperty( EntityRef entityRef, String propertyName ) throws Exception;
-
- /**
- * Gets the values from an entity list property. Lists are a special type of entity property that can contain an
- * unordered set of non-duplicate values.
- *
- * @param entity an entity reference
- * @param dictionaryName the property list name to retrieve.
- *
- * @return the value of the named property or null.
- *
- * @throws Exception the exception
- */
- public Set<Object> getDictionaryAsSet( EntityRef entityRef, String dictionaryName ) throws Exception;
-
- /**
- * Adds the specified value to the named entity list property. Lists are a special type of entity property that can
- * contain an unordered set of non-duplicate values.
- *
- * @param entity an entity reference
- * @param dictionaryName the property to set.
- * @param elementValue new value for property.
- *
- * @throws Exception the exception
- */
- public void addToDictionary( EntityRef entityRef, String dictionaryName, Object elementValue ) throws Exception;
-
- public void addToDictionary( EntityRef entityRef, String dictionaryName, Object elementName, Object elementValue )
- throws Exception;
-
- public void addSetToDictionary( EntityRef entityRef, String dictionaryName, Set<?> elementValues ) throws Exception;
-
- public void addMapToDictionary( EntityRef entityRef, String dictionaryName, Map<?, ?> elementValues )
- throws Exception;
-
- public Map<Object, Object> getDictionaryAsMap( EntityRef entityRef, String dictionaryName ) throws Exception;
-
- public Object getDictionaryElementValue( EntityRef entityRef, String dictionaryName, String elementName )
- throws Exception;
-
- /**
- * Removes the specified value to the named entity list property. Lists are a special type of entity property that
- * can contain an unordered set of non-duplicate values.
- *
- * @param entity an entity reference
- * @param dictionaryName the property to set.
- * @param elementValue new value for property.
- *
- * @throws Exception the exception
- */
- public void removeFromDictionary( EntityRef entityRef, String dictionaryName, Object elementValue )
- throws Exception;
-
- public Set<String> getDictionaries( EntityRef entity ) throws Exception;
-
- /**
- * Deletes the specified entity.
- *
- * @param entity an entity reference
- *
- * @throws Exception the exception
- */
- public void delete( EntityRef entityRef ) throws Exception;
-
- /**
- * Gets the entities and collections that the specified entity is a member of.
- *
- * @param entity an entity reference
- *
- * @return a map of entity references to set of collection names for the entities and collections that this entity
- * is a member of.
- *
- * @throws Exception the exception
- */
- public Map<String, Map<UUID, Set<String>>> getOwners( EntityRef entityRef ) throws Exception;
-
- /**
- * Return true if the owner entity ref is an owner of the entity;
- *
- * @param owner The owner of the collection
- * @param collectionName The collection name
- * @param entity The entity in the collection
- */
- public boolean isCollectionMember( EntityRef owner, String collectionName, EntityRef entity ) throws Exception;
-
- /**
- * Return true if the owner entity ref is an owner of the entity;
- *
- * @param owner The owner of the collection
- * @param collectionName The collection name
- * @param entity The entity in the collection
- */
- public boolean isConnectionMember( EntityRef owner, String connectionName, EntityRef entity ) throws Exception;
-
-
- /**
- * Gets the collections for the specified entity. Collection for a given type are encoded in the schema, this method
- * loads the entity type and returns the collections from the schema.
- *
- * @param entity an entity reference
- *
- * @return the collections for the entity type of the given entity.
- *
- * @throws Exception the exception
- */
- public Set<String> getCollections( EntityRef entityRef ) throws Exception;
-
- /**
- * Gets a list of entities in the specified collection belonging to the specified entity.
- *
- * @param entity an entity reference
- * @param collectionName the collection name.
- * @param startResult the start result
- * @param count the count
- *
- * @return a list of entities in the specified collection.
- *
- * @throws Exception the exception
- */
- public Results getCollection( EntityRef entityRef, String collectionName, UUID startResult, int count,
- Results.Level resultsLevel, boolean reversed ) throws Exception;
-
-
- public Results getCollection( UUID entityId, String collectionName, Query query, Results.Level resultsLevel )
- throws Exception;
-
- /**
- * Adds an entity to the specified collection belonging to the specified entity entity.
- *
- * @param entity an entity reference
- * @param collectionName the collection name.
- * @param item an entity to be added to the collection.
- *
- * @throws Exception the exception
- */
- public Entity addToCollection( EntityRef entityRef, String collectionName, EntityRef itemRef ) throws Exception;
-
- public Entity addToCollections( List<EntityRef> ownerEntities, String collectionName, EntityRef itemRef )
- throws Exception;
-
- /**
- * Create the item in a sub collection
- *
- * @param entityRef The owning entity
- * @param collectionName The name of the collection
- * @param itemType The type of the item
- * @param properties The properties for the item
- */
- public Entity createItemInCollection( EntityRef entityRef, String collectionName, String itemType,
- Map<String, Object> properties ) throws Exception;
-
- /**
- * Removes an entity to the specified collection belonging to the specified entity.
- *
- * @param entity an entity reference
- * @param collectionName the collection name.
- * @param item a entity to be removed from the collection.
- *
- * @throws Exception the exception
- */
- public void removeFromCollection( EntityRef entityRef, String collectionName, EntityRef itemRef ) throws Exception;
-
- public Results searchCollection( EntityRef entityRef, String collectionName, Query query ) throws Exception;
-
- public Set<String> getCollectionIndexes( EntityRef entity, String collectionName ) throws Exception;
-
- public void copyRelationships( EntityRef srcEntityRef, String srcRelationName, EntityRef dstEntityRef,
- String dstRelationName ) throws Exception;
-
- /**
- * Connect the specified entity to another entity with the specified connection type. Connections are directional
- * relationships that can be traversed in either direction.
- *
- * @param entity an entity reference
- * @param connectionType type of connection to make.
- * @param connectedEntity the entity to connect.
- *
- * @throws Exception the exception
- */
- public ConnectionRef createConnection( ConnectionRef connection ) throws Exception;
-
- public ConnectionRef createConnection( EntityRef connectingEntity, String connectionType,
- EntityRef connectedEntityRef ) throws Exception;
-
- public ConnectionRef createConnection( EntityRef connectingEntity, String pairedConnectionType,
- EntityRef pairedEntity, String connectionType, EntityRef connectedEntityRef )
- throws Exception;
-
- public ConnectionRef createConnection( EntityRef connectingEntity, ConnectedEntityRef... connections )
- throws Exception;
-
- public ConnectionRef connectionRef( EntityRef connectingEntity, String connectionType,
- EntityRef connectedEntityRef ) throws Exception;
-
- public ConnectionRef connectionRef( EntityRef connectingEntity, String pairedConnectionType, EntityRef pairedEntity,
- String connectionType, EntityRef connectedEntityRef ) throws Exception;
-
- public ConnectionRef connectionRef( EntityRef connectingEntity, ConnectedEntityRef... connections );
-
- /**
- * Disconnects two connected entities with the specified connection type. Connections are directional relationships
- * that can be traversed in either direction.
- *
- * @param entity an entity reference
- * @param connectionType type of connection to make.
- * @param connectedEntity the entity to connect
- *
- * @throws Exception the exception
- */
-
- public void deleteConnection( ConnectionRef connectionRef ) throws Exception;
-
- public Set<String> getConnectionTypes( EntityRef ref ) throws Exception;
-
-
- /**
- * Gets the entities of the specified type connected to the specified entity, optionally matching the specified
- * connection types and/or entity types. Returns a list of entity ids.
- *
- * @param entity an entity reference
- * @param connectionType type of connection or null.
- * @param connectedEntityType type of entity or null.
- *
- * @return a list of connected entity ids.
- *
- * @throws Exception the exception
- */
- public Results getConnectedEntities( UUID entityId, String connectionType, String connectedEntityType,
- Results.Level resultsLevel ) throws Exception;
-
- /**
- * Gets the entities connecting to this entity, optionally with the specified connection type and/or entity type.
- * <p/>
- * e.g. "get users who have favorited this place"
- *
- * @param entity an entity reference
- * @param connectionType type of connection or null.
- * @param connectingEntityType type of entity or null.
- *
- * @return a list of entities connecting to this one.
- *
- * @throws Exception the exception
- */
- public Results getConnectingEntities( UUID entityId, String connectionType, String connectedEntityType,
- Results.Level resultsLevel ) throws Exception;
-
-
- public Results getConnectingEntities(UUID uuid, String connectionType,
- String entityType, Level level, int count) throws Exception;
-
- public Results searchConnectedEntities( EntityRef connectingEntity, Query query ) throws Exception;
-
-
- // Application roles
-
- public Set<String> getConnectionIndexes( EntityRef entity, String connectionType ) throws Exception;
-
- public Map<String, String> getRoles() throws Exception;
-
- public void resetRoles() throws Exception;
-
- /**
- * Create the role with the title and inactivity
- *
- * @param roleName The name of the role
- * @param roleTitle The human readable title
- * @param inactivity The amount of inactivity time to have the role expire. 0 is infinity, I.E no expiration
- */
- public Entity createRole( String roleName, String roleTitle, long inactivity ) throws Exception;
-
- public void grantRolePermission( String roleName, String permission ) throws Exception;
-
- public void grantRolePermissions( String roleName, Collection<String> permissions ) throws Exception;
-
- public void revokeRolePermission( String roleName, String permission ) throws Exception;
-
- public Set<String> getRolePermissions( String roleName ) throws Exception;
-
- public void deleteRole( String roleName ) throws Exception;
-
- // Group roles
-
- public Map<String, String> getGroupRoles( UUID groupId ) throws Exception;
-
- /** Create a group role with the group id, roleName, and inactivity */
- public Entity createGroupRole( UUID groupId, String roleName, long inactivity ) throws Exception;
-
- public void grantGroupRolePermission( UUID groupId, String roleName, String permission ) throws Exception;
-
- public void revokeGroupRolePermission( UUID groupId, String roleName, String permission ) throws Exception;
-
- public Set<String> getGroupRolePermissions( UUID groupId, String roleName ) throws Exception;
-
- public void deleteGroupRole( UUID groupId, String roleName ) throws Exception;
-
- // User role membership
-
- public Set<String> getUserRoles( UUID userId ) throws Exception;
-
- public void addUserToRole( UUID userId, String roleName ) throws Exception;
-
- public void removeUserFromRole( UUID userId, String roleName ) throws Exception;
-
- // User permissions
-
- public Set<String> getUserPermissions( UUID userId ) throws Exception;
-
- public void grantUserPermission( UUID userId, String permission ) throws Exception;
-
- public void revokeUserPermission( UUID userId, String permission ) throws Exception;
-
- // User role membership
-
- public Map<String, String> getUserGroupRoles( UUID userId, UUID groupId ) throws Exception;
-
- public void addUserToGroupRole( UUID userId, UUID groupId, String roleName ) throws Exception;
-
- public void removeUserFromGroupRole( UUID userId, UUID groupId, String roleName ) throws Exception;
-
- public Results getUsersInGroupRole( UUID groupId, String roleName, Results.Level level ) throws Exception;
-
- public void incrementAggregateCounters( UUID userId, UUID groupId, String category, String counterName,
- long value );
-
- public Results getAggregateCounters( UUID userId, UUID groupId, String category, String counterName,
- CounterResolution resolution, long start, long finish, boolean pad );
-
- public Results getAggregateCounters( UUID userId, UUID groupId, UUID queueId, String category, String counterName,
- CounterResolution resolution, long start, long finish, boolean pad );
-
- public Results getAggregateCounters( Query query ) throws Exception;
-
- public EntityRef getUserByIdentifier( Identifier identifier ) throws Exception;
-
- public EntityRef getGroupByIdentifier( Identifier identifier ) throws Exception;
-
- public Set<String> getCounterNames() throws Exception;
-
- public Map<String, Long> getEntityCounters( UUID entityId ) throws Exception;
-
- public Map<String, Long> getApplicationCounters() throws Exception;
-
- public void incrementAggregateCounters( UUID userId, UUID groupId, String category, Map<String, Long> counters );
-
- public boolean isPropertyValueUniqueForEntity( String entityType, String propertyName, Object propertyValue )
- throws Exception;
-
- public <A extends Entity> A get( EntityRef entityRef, Class<A> entityClass ) throws Exception;
-
- public Map<String, Role> getRolesWithTitles( Set<String> roleNames ) throws Exception;
-
- public String getRoleTitle( String roleName ) throws Exception;
-
- public Map<String, Role> getUserRolesWithTitles( UUID userId ) throws Exception;
-
-
- // Group role membership
-
- public Map<String, Role> getGroupRolesWithTitles( UUID userId ) throws Exception;
-
- public void addGroupToRole( UUID userId, String roleName ) throws Exception;
-
- public void removeGroupFromRole( UUID userId, String roleName ) throws Exception;
-
- // Group permissions
-
- public Set<String> getGroupPermissions( UUID groupId ) throws Exception;
-
- public void grantGroupPermission( UUID groupId, String permission ) throws Exception;
-
- public void revokeGroupPermission( UUID groupId, String permission ) throws Exception;
-}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/2c2acbe4/stack/core/src/main/java/org/usergrid/persistence/EntityManagerFactory.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/usergrid/persistence/EntityManagerFactory.java b/stack/core/src/main/java/org/usergrid/persistence/EntityManagerFactory.java
deleted file mode 100644
index c4e9177..0000000
--- a/stack/core/src/main/java/org/usergrid/persistence/EntityManagerFactory.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*******************************************************************************
- * Copyright 2012 Apigee Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- ******************************************************************************/
-package org.usergrid.persistence;
-
-
-import java.util.Map;
-import java.util.UUID;
-
-
-// TODO: Auto-generated Javadoc
-
-
-/**
- * The interface class that specifies the operations that can be performed on the Usergrid Datastore. This interface is
- * designed to be implemented by different backends. Although these operations are meant to take advantage of the
- * capabilities of Cassandra, they should be implementable using other relational databases such as MySql or NoSQL
- * databases such as GAE or MongoDB.
- */
-public interface EntityManagerFactory {
-
- /**
- * A string description provided by the implementing class.
- *
- * @return description text
- *
- * @throws Exception the exception
- */
- public abstract String getImpementationDescription() throws Exception;
-
- /**
- * Gets the entity manager.
- *
- * @param applicationId the application id
- *
- * @return EntityDao for the specfied parameters
- */
- public abstract EntityManager getEntityManager( UUID applicationId );
-
- /**
- * Creates a new application.
- *
- * @param name a unique application name.
- *
- * @return the newly created application id.
- *
- * @throws Exception the exception
- */
- public abstract UUID createApplication( String organizationName, String name ) throws Exception;
-
- /**
- * Creates a Application entity. All entities except for applications must be attached to a Application.
- *
- * @param name the name of the application to create.
- * @param properties property values to create in the new entity or null.
- *
- * @return the newly created application id.
- *
- * @throws Exception the exception
- */
- public abstract UUID createApplication( String organizationName, String name, Map<String, Object> properties )
- throws Exception;
-
- public abstract UUID importApplication( String organization, UUID applicationId, String name,
- Map<String, Object> properties ) throws Exception;
-
- /**
- * Returns the application id for the application name.
- *
- * @param name a unique application name.
- *
- * @return the Application id or null.
- *
- * @throws Exception the exception
- */
- public abstract UUID lookupApplication( String name ) throws Exception;
-
- /**
- * Returns all the applications in the system.
- *
- * @return all the applications.
- *
- * @throws Exception the exception
- */
- public abstract Map<String, UUID> getApplications() throws Exception;
-
- public abstract void setup() throws Exception;
-
- public abstract Map<String, String> getServiceProperties();
-
- public abstract boolean updateServiceProperties( Map<String, String> properties );
-
- public abstract boolean setServiceProperty( String name, String value );
-
- public abstract boolean deleteServiceProperty( String name );
-}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/2c2acbe4/stack/core/src/main/java/org/usergrid/persistence/EntityPropertyComparator.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/usergrid/persistence/EntityPropertyComparator.java b/stack/core/src/main/java/org/usergrid/persistence/EntityPropertyComparator.java
deleted file mode 100644
index 7b9f0b5..0000000
--- a/stack/core/src/main/java/org/usergrid/persistence/EntityPropertyComparator.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*******************************************************************************
- * Copyright 2012 Apigee Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- ******************************************************************************/
-package org.usergrid.persistence;
-
-
-import java.util.Comparator;
-
-import static org.usergrid.persistence.cassandra.IndexUpdate.compareIndexedValues;
-
-
-public class EntityPropertyComparator implements Comparator<Entity> {
-
- final String propertyName;
- final int reverse;
-
-
- public EntityPropertyComparator( String propertyName, boolean reverse ) {
- this.propertyName = propertyName;
- this.reverse = reverse ? -1 : 1;
- }
-
-
- @Override
- public int compare( Entity e1, Entity e2 ) {
-
- if ( e1 == null ) {
- //second one is not null and first is, second is larger
- if ( e2 != null ) {
- return 1;
- }
- else {
- return 0;
- }
- }
- //first one is not null, second is
- else if ( e2 == null ) {
- return -1;
- }
-
- return compareIndexedValues( e1.getProperty( propertyName ), e2.getProperty( propertyName ) ) * reverse;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/2c2acbe4/stack/core/src/main/java/org/usergrid/persistence/EntityRef.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/usergrid/persistence/EntityRef.java b/stack/core/src/main/java/org/usergrid/persistence/EntityRef.java
deleted file mode 100644
index 340206f..0000000
--- a/stack/core/src/main/java/org/usergrid/persistence/EntityRef.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright 2012 Apigee Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- ******************************************************************************/
-package org.usergrid.persistence;
-
-
-import java.util.UUID;
-
-
-public interface EntityRef {
-
- /**
- * Gets the id.
- *
- * @return the id
- */
- public UUID getUuid();
-
- /**
- * Gets the type.
- *
- * @return the type
- */
- public String getType();
-}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/2c2acbe4/stack/core/src/main/java/org/usergrid/persistence/EntityUtils.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/usergrid/persistence/EntityUtils.java b/stack/core/src/main/java/org/usergrid/persistence/EntityUtils.java
deleted file mode 100644
index 5b48f20..0000000
--- a/stack/core/src/main/java/org/usergrid/persistence/EntityUtils.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*******************************************************************************
- * Copyright 2012 Apigee Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- ******************************************************************************/
-package org.usergrid.persistence;
-
-
-import java.util.Map;
-import java.util.TreeMap;
-
-
-public class EntityUtils {
-
- public static Map<String, Object> getSchemaProperties( String entityType, Map<String, Object> properties ) {
-
- Map<String, Object> sys_props = new TreeMap<String, Object>( String.CASE_INSENSITIVE_ORDER );
-
- for ( String propName : properties.keySet() ) {
- if ( Schema.getDefaultSchema().hasProperty( entityType, propName ) ) {
- Object propValue = properties.get( propName );
- sys_props.put( propName, propValue );
- }
- }
-
- return sys_props;
- }
-
-
- public static Map<String, Object> getDynamicProperties( String entityType, Map<String, Object> properties ) {
-
- Map<String, Object> sys_props = new TreeMap<String, Object>( String.CASE_INSENSITIVE_ORDER );
-
- for ( String propName : properties.keySet() ) {
- if ( !Schema.getDefaultSchema().hasProperty( entityType, propName ) ) {
- Object propValue = properties.get( propName );
- sys_props.put( propName, propValue );
- }
- }
-
- return sys_props;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/2c2acbe4/stack/core/src/main/java/org/usergrid/persistence/Identifier.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/usergrid/persistence/Identifier.java b/stack/core/src/main/java/org/usergrid/persistence/Identifier.java
deleted file mode 100644
index 7139e43..0000000
--- a/stack/core/src/main/java/org/usergrid/persistence/Identifier.java
+++ /dev/null
@@ -1,226 +0,0 @@
-/*******************************************************************************
- * Copyright 2012 Apigee Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- ******************************************************************************/
-package org.usergrid.persistence;
-
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.UUID;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.codehaus.jackson.annotate.JsonIgnore;
-import org.usergrid.utils.UUIDUtils;
-
-
-public class Identifier implements Serializable {
-
- public enum Type {
- UUID, NAME, EMAIL
- }
-
-
- Type type;
- Object value;
-
- static Pattern emailRegEx = Pattern.compile( "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}" );
- static Pattern nameRegEx = Pattern.compile( "[a-zA-Z0-9_\\-./]*" );
-
-
- private Identifier( Type type, Object value ) {
- this.type = type;
- this.value = value;
- }
-
-
- public static Identifier from( Object obj ) {
- if ( obj == null ) {
- return null;
- }
- if ( obj instanceof UUID ) {
- return new Identifier( Type.UUID, obj );
- }
- if ( obj instanceof String ) {
- UUID uuid = UUIDUtils.tryGetUUID( ( String ) obj );
- if ( uuid != null ) {
- return new Identifier( Type.UUID, uuid );
- }
- Matcher m = emailRegEx.matcher( ( String ) obj );
- if ( m.matches() ) {
- return new Identifier( Type.EMAIL, ( ( String ) obj ).toLowerCase() );
- }
- m = nameRegEx.matcher( ( String ) obj );
- if ( m.matches() ) {
- return new Identifier( Type.NAME, ( ( String ) obj ).toLowerCase() );
- }
- }
- return null;
- }
-
-
- public static Identifier fromUUID( UUID uuid ) {
- if ( uuid == null ) {
- return null;
- }
- return new Identifier( Type.UUID, uuid );
- }
-
-
- public static Identifier fromName( String name ) {
- if ( name == null ) {
- return null;
- }
- return new Identifier( Type.NAME, name );
- }
-
-
- public static Identifier fromEmail( String email ) {
- if ( email == null ) {
- return null;
- }
- return new Identifier( Type.EMAIL, email );
- }
-
-
- @JsonIgnore
- public UUID getUUID() {
- if ( type != Type.UUID ) {
- return null;
- }
- return ( UUID ) value;
- }
-
-
- @JsonIgnore
- public boolean isUUID() {
- return type == Type.UUID;
- }
-
-
- @JsonIgnore
- public String getEmail() {
- if ( type != Type.EMAIL ) {
- return null;
- }
- return ( String ) value;
- }
-
-
- @JsonIgnore
- public boolean isEmail() {
- return type == Type.EMAIL;
- }
-
-
- @JsonIgnore
- public String getName() {
- if ( type != Type.NAME ) {
- return null;
- }
- return ( String ) value;
- }
-
-
- @JsonIgnore
- public boolean isName() {
- return type == Type.NAME;
- }
-
-
- public Type getType() {
- return type;
- }
-
-
- @Override
- public String toString() {
- return value != null ? value.toString() : null;
- }
-
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ( ( type == null ) ? 0 : type.hashCode() );
- result = prime * result + ( ( value == null ) ? 0 : value.hashCode() );
- return result;
- }
-
-
- @Override
- public boolean equals( Object obj ) {
- if ( this == obj ) {
- return true;
- }
- if ( obj == null ) {
- return false;
- }
- if ( getClass() != obj.getClass() ) {
- return false;
- }
- Identifier other = ( Identifier ) obj;
- if ( type != other.type ) {
- return false;
- }
- if ( value == null ) {
- if ( other.value != null ) {
- return false;
- }
- }
- else if ( !value.equals( other.value ) ) {
- return false;
- }
- return true;
- }
-
-
- public static List<Identifier> fromList( List<String> l ) {
- List<Identifier> identifiers = null;
- if ( ( l != null ) && ( l.size() > 0 ) ) {
- for ( String s : l ) {
- Identifier identifier = Identifier.from( s );
- if ( identifier != null ) {
- if ( identifiers == null ) {
- identifiers = new ArrayList<Identifier>();
- }
- identifiers.add( identifier );
- }
- }
- }
- return identifiers;
- }
-
-
- // for serialization
- public Identifier() { }
-
-
- // for serialization
- public Object getValue() {
- return value;
- }
-
-
- // for serialization
- public void setValue( Object value ) {
- if ( isUUID() && value instanceof String ) {
- value = UUID.fromString( ( String ) value );
- }
- this.value = value;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/2c2acbe4/stack/core/src/main/java/org/usergrid/persistence/IndexBucketLocator.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/usergrid/persistence/IndexBucketLocator.java b/stack/core/src/main/java/org/usergrid/persistence/IndexBucketLocator.java
deleted file mode 100644
index 5fe1264..0000000
--- a/stack/core/src/main/java/org/usergrid/persistence/IndexBucketLocator.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*******************************************************************************
- * Copyright 2012 Apigee Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- ******************************************************************************/
-package org.usergrid.persistence;
-
-
-import java.util.List;
-import java.util.UUID;
-
-
-/**
- * Interface for locating different buckets for indexing entities. These buckets are not intended for user with time
- * series indexing. Rather this a means of partitioning index puts across multiple rows
- *
- * @author tnine
- */
-public interface IndexBucketLocator {
-
- public enum IndexType {
- COLLECTION( "collection" ), CONNECTION( "connection" ), GEO( "geo" ), UNIQUE( "unique" );
-
- private final String type;
-
-
- private IndexType( String type ) {
- this.type = type;
- }
-
-
- public String getType() {
- return type;
- }
-
- }
-
- /**
- * Return the bucket to use for indexing this entity
- *
- * @param applicationId The application id
- * @param type The type of the index. This way indexing on the same property value for different types of indexes
- * does not cause collisions on partitioning and lookups
- * @param entityId The entity id to be indexed
- * @param components The strings and uniquely identify the path to this index. I.E entityType and propName,
- * collection name etc This string must remain the same for all reads and writes
- *
- * @return A bucket to use. Note that ALL properties for the given entity should be in the same bucket. This
- * allows us to shard and execute queries in parallel. Generally speaking, sharding on entityId is the best
- * strategy, since this is an immutable value
- */
- public String getBucket( UUID applicationId, IndexType type, UUID entityId, String... components );
-
- /**
- * Get all buckets that exist for this application with the given entity type, and property name
- *
- * @param applicationId The application id
- * @param type The type of index
- * @param components The strings and uniquely identify the path to this index. I.E entityType and propName,
- * collection name etc
- *
- * @return All buckets for this application at the given component path
- */
- public List<String> getBuckets( UUID applicationId, IndexType type, String... components );
-}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/2c2acbe4/stack/core/src/main/java/org/usergrid/persistence/MultiQueryIterator.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/usergrid/persistence/MultiQueryIterator.java b/stack/core/src/main/java/org/usergrid/persistence/MultiQueryIterator.java
deleted file mode 100644
index a4ea562..0000000
--- a/stack/core/src/main/java/org/usergrid/persistence/MultiQueryIterator.java
+++ /dev/null
@@ -1,106 +0,0 @@
-package org.usergrid.persistence;
-
-
-import java.util.Iterator;
-import java.util.UUID;
-
-
-/**
- * For each in a set of source UUIDs, executes a sub-query and provides a unified iterator over the union of all
- * results. Honors page sizes for the Query to ensure memory isn't blown out.
- */
-public class MultiQueryIterator implements Iterator {
-
- private EntityManager entityManager;
- private Iterator<UUID> source;
- private Query query;
- private MutableEntityRef entityRef = new MutableEntityRef();
- private Iterator currentIterator;
-
-
- public MultiQueryIterator( Results results, Query query ) {
- this( results.getQueryProcessor().getEntityManager(), new PagingResultsIterator( results, Results.Level.IDS ),
- query );
- }
-
-
- public MultiQueryIterator( EntityManager entityManager, Iterator<UUID> source, Query query ) {
- if ( query.getCollection() == null && query.getConnectionType() == null ) {
- throw new IllegalArgumentException( "Query must have a collection or connectionType value" );
- }
- this.entityManager = entityManager;
- this.source = source;
- this.query = query;
- }
-
-
- @Override
- public boolean hasNext() {
- if ( source == null ) {
- return false;
- }
- if ( currentIterator != null && currentIterator.hasNext() ) {
- return true;
- }
- while ( source.hasNext() ) {
- UUID uuid = source.next();
- Results r = getResultsFor( uuid );
- if ( r.size() > 0 ) {
- currentIterator = new PagingResultsIterator( r, query.getResultsLevel() );
- return currentIterator.hasNext();
- }
- }
- currentIterator = null;
- source = null;
- return false;
- }
-
-
- @Override
- public Object next() {
- return ( currentIterator != null ) ? currentIterator.next() : null;
- }
-
-
- @Override
- public void remove() {
- throw new UnsupportedOperationException();
- }
-
-
- private Results getResultsFor( UUID uuid ) {
- entityRef.setUUID( uuid );
- try {
- return ( query.getCollection() != null ) ?
- entityManager.searchCollection( entityRef, query.getCollection(), query ) :
- entityManager.searchConnectedEntities( entityRef, query );
- }
- catch ( Exception e ) {
- throw new RuntimeException( e );
- }
- }
-
-
- // just avoid some garbage collection
- private static class MutableEntityRef implements EntityRef {
-
- private UUID uuid;
-
-
- public void setUUID( UUID uuid ) {
- this.uuid = uuid;
- }
-
-
- @Override
- public UUID getUuid() {
- return uuid;
- }
-
-
- @Override
- public String getType() {
- return null;
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/2c2acbe4/stack/core/src/main/java/org/usergrid/persistence/PagingResultsIterator.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/usergrid/persistence/PagingResultsIterator.java b/stack/core/src/main/java/org/usergrid/persistence/PagingResultsIterator.java
deleted file mode 100644
index 7beeb52..0000000
--- a/stack/core/src/main/java/org/usergrid/persistence/PagingResultsIterator.java
+++ /dev/null
@@ -1,109 +0,0 @@
-package org.usergrid.persistence;
-
-
-import java.util.Iterator;
-import java.util.List;
-
-
-/** iterates over a Results object, crossing page boundaries automatically */
-public class PagingResultsIterator implements Iterator, Iterable {
-
- private Results results;
- private Iterator currentPageIterator;
- private Results.Level level;
-
-
- public PagingResultsIterator( Results results ) {
- this( results, results.level );
- }
-
-
- /**
- * @param level overrides the default level from the Results - in case you want to return, say, UUIDs where the
- * Query was set for Entities
- */
- public PagingResultsIterator( Results results, Results.Level level ) {
- this.results = results;
- this.level = level;
- initCurrentPageIterator();
- }
-
-
- @Override
- public boolean hasNext() {
- if ( currentPageIterator != null ) {
- if ( currentPageIterator.hasNext() ) {
- return true;
- }
- else {
- return loadNextPage();
- }
- }
- return false;
- }
-
-
- /** @return the next object (type varies according the Results.Level) */
- @Override
- public Object next() {
- return currentPageIterator.next();
- }
-
-
- /** not supported */
- @Override
- public void remove() {
- throw new UnsupportedOperationException();
- }
-
-
- /**
- * initialize the iterator for the current page of results.
- *
- * @return true if the iterator has more results
- */
- private boolean initCurrentPageIterator() {
- List currentPage;
- if ( results != null ) {
- switch ( level ) {
- case IDS:
- currentPage = results.getIds();
- break;
- case REFS:
- currentPage = results.getRefs();
- break;
- default:
- currentPage = results.getEntities();
- }
- if ( currentPage.size() > 0 ) {
- currentPageIterator = currentPage.iterator();
- }
- }
- else {
- currentPageIterator = null;
- }
- return currentPageIterator != null && currentPageIterator.hasNext();
- }
-
-
- /**
- * attempts to load the next page
- *
- * @return true if loaded there are more results
- */
- private boolean loadNextPage() {
- try {
- results = results.getNextPageResults();
- }
- catch ( Exception e ) {
- throw new RuntimeException( e );
- }
- return initCurrentPageIterator();
- }
-
-
- @Override
- public Iterator iterator() {
- return this;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/2c2acbe4/stack/core/src/main/java/org/usergrid/persistence/PathQuery.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/usergrid/persistence/PathQuery.java b/stack/core/src/main/java/org/usergrid/persistence/PathQuery.java
deleted file mode 100644
index cc233e7..0000000
--- a/stack/core/src/main/java/org/usergrid/persistence/PathQuery.java
+++ /dev/null
@@ -1,115 +0,0 @@
-package org.usergrid.persistence;
-
-
-import java.util.Iterator;
-import java.util.UUID;
-
-
-public class PathQuery<E> {
-
- private PathQuery source;
- private Query query;
- private UUID head;
-
-
- public PathQuery() {
- }
-
-
- /**
- * top level
- *
- * @param head the top-level entity
- */
- public PathQuery( EntityRef head ) {
- this.head = head.getUuid();
- this.query = null;
- }
-
-
- /**
- * top level
- *
- * @param head the top-level entity
- * @param collectionName the query - must have a collection or connectType value set
- */
- public PathQuery( EntityRef head, Query query ) {
- if ( query.getCollection() == null && query.getConnectionType() == null ) {
- throw new IllegalArgumentException( "Query must have a collection or connectionType value" );
- }
- this.head = head.getUuid();
- this.query = query;
- }
-
-
- /**
- * chained
- *
- * @param source the source query we're chaining from
- * @param collectionName the query - must have a collection or connectType value set
- */
- public PathQuery( PathQuery source, Query query ) {
- if ( query.getCollection() == null && query.getConnectionType() == null ) {
- throw new IllegalArgumentException( "Query must have a collection or connectionType value" );
- }
- this.source = source;
- this.query = query;
- }
-
-
- public PathQuery chain( Query query ) {
- return new PathQuery( this, query );
- }
-
-
- public Iterator<E> iterator( EntityManager em ) {
- try {
- if ( head != null ) {
- return new PagingResultsIterator( getHeadResults( em ), query.getResultsLevel() );
- }
- else {
- return new MultiQueryIterator( em, source.uuidIterator( em ), query );
- }
- }
- catch ( Exception e ) {
- throw new RuntimeException( e );
- }
- }
-
-
- protected Results getHeadResults( EntityManager em ) throws Exception {
- EntityRef ref = new SimpleEntityRef( head );
- return ( query.getCollection() != null ) ? em.searchCollection( ref, query.getCollection(), query ) :
- em.searchConnectedEntities( ref, query );
- }
-
-
- protected Iterator uuidIterator( EntityManager em ) throws Exception {
- if ( head != null ) {
- return new PagingResultsIterator( getHeadResults( em ), Results.Level.IDS );
- }
- else {
- Query q = query;
- if ( query.getResultsLevel() != Results.Level.IDS ) { // ensure IDs level
- q = new Query( q );
- q.setResultsLevel( Results.Level.IDS );
- }
- return new MultiQueryIterator( em, source.uuidIterator( em ), q );
- }
- }
-
-
- public PathQuery getSource() {
- return source;
- }
-
-
- public UUID getHead() {
- return head;
- }
-
-
- public Query getQuery() {
- return query;
- }
-}