private ClosableIterator<Tuple> extractResultSet(String storedProcedureName, Object res) { try { return CollectionHelper.newClosableIterator( TupleExtractor.extractTuplesFromObject( res ) ); } catch (Exception e) { throw log.cannotExtractStoredProcedureResultSet( storedProcedureName, res, e ); } } }
private ClosableIterator<Tuple> extractResultSet(String storedProcedureName, Object res) { try { return CollectionHelper.newClosableIterator( TupleExtractor.extractTuplesFromObject( res ) ); } catch (Exception e) { throw log.cannotExtractStoredProcedureResultSet( storedProcedureName, res, e ); } } }
private ClosableIterator<Tuple> extractResultSet(String storedProcedureName, Object res) { try { return CollectionHelper.newClosableIterator( TupleExtractor.extractTuplesFromObject( res ) ); } catch (Exception e) { throw log.cannotExtractStoredProcedureResultSet( storedProcedureName, res, e ); } } }
private static ClosableIterator<Tuple> doCount(MongoDBQueryDescriptor query, MongoCollection<Document> collection) { long count = collection.countDocuments( query.getCriteria() ); MapTupleSnapshot snapshot = new MapTupleSnapshot( Collections.<String, Object>singletonMap( "n", count ) ); return CollectionHelper.newClosableIterator( Collections.singletonList( new Tuple( snapshot, SnapshotType.UNKNOWN ) ) ); }
private static ClosableIterator<Tuple> doCount(MongoDBQueryDescriptor query, MongoCollection<Document> collection) { long count = collection.countDocuments( query.getCriteria() ); MapTupleSnapshot snapshot = new MapTupleSnapshot( Collections.<String, Object>singletonMap( "n", count ) ); return CollectionHelper.newClosableIterator( Collections.singletonList( new Tuple( snapshot, SnapshotType.UNKNOWN ) ) ); }
/** * do 'Distinct' operation * * @param queryDescriptor descriptor of MongoDB query * @param collection collection for execute the operation * @return result iterator * @see <a href ="https://docs.mongodb.com/manual/reference/method/db.collection.distinct/">distinct</a> */ private static ClosableIterator<Tuple> doDistinct(final MongoDBQueryDescriptor queryDescriptor, final MongoCollection<Document> collection) { DistinctIterable<?> distinctFieldValues = collection.distinct( queryDescriptor.getDistinctFieldName(), queryDescriptor.getCriteria(), String.class ); Collation collation = getCollation( queryDescriptor.getOptions() ); distinctFieldValues = collation != null ? distinctFieldValues.collation( collation ) : distinctFieldValues; MongoCursor<?> cursor = distinctFieldValues.iterator(); List<Object> documents = new ArrayList<>(); while ( cursor.hasNext() ) { documents.add( cursor.next() ); } MapTupleSnapshot snapshot = new MapTupleSnapshot( Collections.<String, Object>singletonMap( "n", documents ) ); return CollectionHelper.newClosableIterator( Collections.singletonList( new Tuple( snapshot, SnapshotType.UNKNOWN ) ) ); }
/** * do 'Distinct' operation * * @param queryDescriptor descriptor of MongoDB query * @param collection collection for execute the operation * @return result iterator * @see <a href ="https://docs.mongodb.com/manual/reference/method/db.collection.distinct/">distinct</a> */ private static ClosableIterator<Tuple> doDistinct(final MongoDBQueryDescriptor queryDescriptor, final MongoCollection<Document> collection) { DistinctIterable<?> distinctFieldValues = collection.distinct( queryDescriptor.getDistinctFieldName(), queryDescriptor.getCriteria(), String.class ); Collation collation = getCollation( queryDescriptor.getOptions() ); distinctFieldValues = collation != null ? distinctFieldValues.collation( collation ) : distinctFieldValues; MongoCursor<?> cursor = distinctFieldValues.iterator(); List<Object> documents = new ArrayList<>(); while ( cursor.hasNext() ) { documents.add( cursor.next() ); } MapTupleSnapshot snapshot = new MapTupleSnapshot( Collections.<String, Object>singletonMap( "n", documents ) ); return CollectionHelper.newClosableIterator( Collections.singletonList( new Tuple( snapshot, SnapshotType.UNKNOWN ) ) ); }
/** * In MongoDB the equivalent of a stored procedure is a stored Javascript. * * @param storedProcedureName name of stored procedure * @param params query parameters * @param tupleContext the tuple context * * @return the result as a {@link ClosableIterator} */ @Override public ClosableIterator<Tuple> callStoredProcedure(String storedProcedureName, ProcedureQueryParameters params, TupleContext tupleContext) { validate( params ); StringBuilder commandLine = createCallStoreProcedureCommand( storedProcedureName, params ); Document result = callStoredProcedure( commandLine ); Object resultValue = result.get( "retval" ); List<Tuple> resultTuples = extractTuples( storedProcedureName, resultValue ); return CollectionHelper.newClosableIterator( resultTuples ); }
/** * In MongoDB the equivalent of a stored procedure is a stored Javascript. * * @param storedProcedureName name of stored procedure * @param params query parameters * @param tupleContext the tuple context * * @return the result as a {@link ClosableIterator} */ @Override public ClosableIterator<Tuple> callStoredProcedure(String storedProcedureName, ProcedureQueryParameters params, TupleContext tupleContext) { validate( params ); StringBuilder commandLine = createCallStoreProcedureCommand( storedProcedureName, params ); Document result = callStoredProcedure( commandLine ); Object resultValue = result.get( "retval" ); List<Tuple> resultTuples = extractTuples( storedProcedureName, resultValue ); return CollectionHelper.newClosableIterator( resultTuples ); }
return CollectionHelper.newClosableIterator( Collections.singletonList( new Tuple( snapshot, SnapshotType.UNKNOWN ) ) );
return CollectionHelper.newClosableIterator( Collections.singletonList( new Tuple( snapshot, SnapshotType.UNKNOWN ) ) );