Example usage for org.apache.cassandra.db PartitionPosition kind

List of usage examples for org.apache.cassandra.db PartitionPosition kind

Introduction

In this page you can find the example usage for org.apache.cassandra.db PartitionPosition kind.

Prototype

public Kind kind();

Source Link

Usage

From source file:com.stratio.cassandra.lucene.IndexServiceWide.java

License:Apache License

/** {@inheritDoc} */
@Override//from   ww w. j  a v a  2 s.com
public Optional<Query> query(DataRange dataRange) {

    // Extract data range data
    PartitionPosition startPosition = dataRange.startKey();
    PartitionPosition stopPosition = dataRange.stopKey();
    Token startToken = startPosition.getToken();
    Token stopToken = stopPosition.getToken();
    Optional<ClusteringPrefix> maybeStartClustering = KeyMapper.startClusteringPrefix(dataRange);
    Optional<ClusteringPrefix> maybeStopClustering = KeyMapper.stopClusteringPrefix(dataRange);

    // Prepare query builder
    BooleanQuery.Builder builder = new BooleanQuery.Builder();

    // Add first partition filter
    maybeStartClustering.ifPresent(startClustering -> {
        DecoratedKey startKey = (DecoratedKey) startPosition;
        builder.add(keyMapper.query(startKey, startClustering, null, false, true), SHOULD);
    });

    // Add token range filter
    boolean includeStart = startPosition.kind() == MIN_BOUND && !maybeStartClustering.isPresent();
    boolean includeStop = stopPosition.kind() == MAX_BOUND && !maybeStopClustering.isPresent();
    tokenMapper.query(startToken, stopToken, includeStart, includeStop).ifPresent(x -> builder.add(x, SHOULD));

    // Add last partition filter
    maybeStopClustering.ifPresent(stopClustering -> {
        DecoratedKey stopKey = (DecoratedKey) stopPosition;
        builder.add(keyMapper.query(stopKey, null, stopClustering, true, false), SHOULD);
    });

    // Return query, or empty if there are no restrictions
    BooleanQuery query = builder.build();
    return query.clauses().isEmpty() ? Optional.empty() : Optional.of(query);
}

From source file:com.stratio.cassandra.lucene.key.TokenMapper.java

License:Apache License

/**
 * Returns if the specified lower partition position must be included in a filtered range.
 *
 * @param position a {@link PartitionPosition}
 * @return {@code true} if {@code position} must be included, {@code false} otherwise
 *//*  w w  w .  j a va  2 s  . com*/
public boolean includeStart(PartitionPosition position) {
    return position.kind() == PartitionPosition.Kind.MIN_BOUND;
}

From source file:com.stratio.cassandra.lucene.key.TokenMapper.java

License:Apache License

/**
 * Returns if the specified upper partition position must be included in a filtered range.
 *
 * @param position a {@link PartitionPosition}
 * @return {@code true} if {@code position} must be included, {@code false} otherwise
 *///from  w w  w . j av  a2  s.c  o  m
public boolean includeStop(PartitionPosition position) {
    return position.kind() == PartitionPosition.Kind.MAX_BOUND;
}