blob: 6cce6ec8fdd905cfdfe893cfcd3ff76de0ad5242 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.apache.usergrid.corepersistence.pipeline.read;
import org.apache.usergrid.corepersistence.pipeline.read.collect.ConnectionRefFilter;
import org.apache.usergrid.corepersistence.pipeline.read.collect.ConnectionRefResumeFilter;
import org.apache.usergrid.corepersistence.pipeline.read.collect.EntityResumeFilter;
import org.apache.usergrid.corepersistence.pipeline.read.search.CandidateEntityFilter;
import org.apache.usergrid.corepersistence.pipeline.read.search.CandidateIdFilter;
import org.apache.usergrid.corepersistence.pipeline.read.search.SearchCollectionFilter;
import org.apache.usergrid.corepersistence.pipeline.read.search.SearchConnectionFilter;
import org.apache.usergrid.corepersistence.pipeline.read.traverse.*;
import org.apache.usergrid.persistence.model.entity.Id;
import com.google.common.base.Optional;
import com.google.inject.assistedinject.Assisted;
/**
* A factory for generating read commands
*/
public interface FilterFactory {
/**
* Generate a new instance of the command with the specified parameters
*
* @param collectionName The collection name to use when reading the graph
*/
ReadGraphCollectionFilter readGraphCollectionFilter( final String collectionName );
/**
* Read a connection between two entities, the incoming and the target entity
*
* @param collectionName The collection name to use when reading the edge
* @param targetId The target id to use when traversing the graph
*/
ReadGraphCollectionByIdFilter readGraphCollectionByIdFilter( final String collectionName, final Id targetId );
/**
* Generate a new instance of the command with the specified parameters
*
* @param connectionName The connection name to use when traversing the graph
*/
ReadGraphConnectionFilter readGraphConnectionFilter( final String connectionName );
/**
* Generate a new instance of the command with the specified parameters
*
* @param connectionName The connection name to use when reverse traversing the graph
*/
ReadGraphReverseConnectionFilter readGraphReverseConnectionFilter( final String connectionName );
/**
* Generate a new instance of the command with the specified parameters
*
* @param connectionName The connection name to use when traversing the graph
* @param entityType The entity type to use when traversing the graph
*/
ReadGraphConnectionByTypeFilter readGraphConnectionByTypeFilter(
@Assisted( "connectionName" ) final String connectionName, @Assisted( "entityType" ) final String entityType );
/**
* Read a connection directly between two identifiers
*
* @param connectionName The connection name to use when traversing the graph
* @param targetId The target Id to use when traversing the graph
*/
ReadGraphConnectionByIdFilter readGraphConnectionByIdFilter( final String connectionName, final Id targetId );
/**
* Generate a new instance of the command with the specified parameters
*
* @param query The query to use when querying the entities in the collection
* @param collectionName The collection name to use when querying
*/
SearchCollectionFilter searchCollectionFilter( @Assisted( "query" ) final String query,
@Assisted( "collectionName" ) final String collectionName,
@Assisted( "entityType" ) final String entityType,
@Assisted( "analyzeOnly") final boolean analyzeOnly,
@Assisted( "returnQuery" ) final boolean returnQuery);
/**
* Generate a new instance of the command with the specified parameters
*
* @param query The query to use when querying the entities in the connection
* @param connectionName The type of connection to query
* @param connectedEntityType The type of entity in the connection. Leave absent to query all entity types
*/
SearchConnectionFilter searchConnectionFilter( @Assisted( "query" ) final String query,
@Assisted( "connectionName" ) final String connectionName,
@Assisted( "connectedEntityType" ) final Optional<String> connectedEntityType,
@Assisted( "analyzeOnly") final boolean analyzeOnly,
@Assisted( "returnQuery") final boolean returnQuery);
/**
* Generate a new instance of the command with the specified parameters
*/
EntityLoadVerifyFilter entityLoadFilter();
/**
* Get the collector for collection candidate results to entities
*/
CandidateEntityFilter candidateEntityFilter();
/**
* Get a candidate ids verifier for collection results. Should be inserted into pipelines where a query filter is
* an intermediate step, not a final filter before collectors
*/
CandidateIdFilter candidateResultsIdVerifyFilter();
/**
* @param entityId The entity id to emit
*
* @deprecated A 1.0 api
*
* Get an entity id filter. Used as a 1.0->2.0 bridge since we're not doing full traversals
*/
@Deprecated
EntityIdFilter getEntityIdFilter( final Id entityId );
/**
* Create a new instance of our entity filter
*/
EntityResumeFilter entityResumeFilter();
/**
* @deprecated A 1.0 api Create a filter for resuming connection references
*/
@Deprecated
ConnectionRefResumeFilter connectionRefResumeFilter();
/**
*
* Creates connection refs for 1.0 compatibilty
*
* @param sourceId The source id
* @param connectionType The connection type
*
* @deprecated A 1.0 api Create a filter for transforming incoming ids into connection refs
*/
@Deprecated
ConnectionRefFilter connectionRefFilter( @Assisted( "sourceId" ) final Id sourceId,
@Assisted( "connectionType" ) final String connectionType );
}