@Test public void testOrNegative() throws Exception { insertMockObject(); DBCursor<MockObject> cursor = coll.find().or(DBQuery.is("integer", 9), DBQuery.lessThan("integer", 9)); assertThat(cursor.hasNext(), equalTo(false)); }
@Test public void testNorPositive() throws Exception { MockObject mockObject = insertMockObject(); DBCursor<MockObject> cursor = coll.find().nor(DBQuery.lessThan("integer", 9), DBQuery.greaterThan("integer", 11)); assertThat(cursor.hasNext(), equalTo(true)); assertThat(cursor.next(), equalTo(mockObject)); }
@Test public void testNorNegative() throws Exception { insertMockObject(); DBCursor<MockObject> cursor = coll.find() .and( DBQuery.lessThan("integer", 9), DBQuery.is("string", "hello"), DBQuery.greaterThan("integer", 11)); assertThat(cursor.hasNext(), equalTo(false)); }
@Test public void testAnd() { MockObject o = new MockObject(); o.i = 5; coll.save(o); // Ensure that the serializer actually worked assertThat( coll.find().and(DBQuery.lessThan("i", 12), DBQuery.greaterThan("i", 4)).toArray(), hasSize(1)); assertThat( coll.find().and(DBQuery.lessThan("i", 12), DBQuery.greaterThan("i", 9)).toArray(), hasSize(0)); }
@Test public void testSerializationFromInFind() throws Exception { MockObject mockObject = insertMockObjectWithEmbedded(); DBCursor<MockObject> cursor = coll.find(DBQuery.in("object", mockObject.object)); assertThat(cursor.hasNext(), equalTo(true)); assertThat(cursor.next(), equalTo(mockObject)); }
@Test public void testElemMatchNegative() throws Exception { insertMockObjectWithComplexList(); DBCursor<MockObject> cursor = coll.find().elemMatch("complexList", DBQuery.in("value", "foo", "la").size("list", 2)); assertThat(cursor.hasNext(), equalTo(false)); }
/** * Create an squery using some preset values for the query parameters, only passing in the * document ids to be searched. * * @param docidList an array of document identifiers to search for */ public static String createDocidQuery(String[] docidList) throws PropertyNotFoundException { String pathQuery = ""; Hashtable params = getDefaultQueryParams(); if (docidList != null) { params.put("/eml/@packageId", docidList); } pathQuery = DBQuery.createSQuery(params); return pathQuery; }
@Test public void testSimpleEquals() { coll.save(new MockObject()); String id = coll.findOne().id; assertNotNull(coll.findOne(DBQuery.is("_id", id))); }
/** * Perform the query on the database, and prepare the array of returned DO objects. * * @exception DataObjectException If a database access error occurs. * @exception NonUniqueQueryException If too many rows were found. */ private void runQuery() throws DataObjectException, NonUniqueQueryException { needToRun = false; arrayIndex = -1; DBQuery dbQuery = null; try { Vector results; /* if ( cacheHits.size() > 0 ) { // The setQuery methods build up the cacheHits. // If the cache had our desired objects, // we don't query the database, so we have no ResultSet. results = cacheHits; // executeQuery saw cache hits } else { // If the cache doesn't exist, or could not handle the query, // then we actually query the database. dbQuery = Enhydra.getDatabaseManager().createQuery(); dbQuery.query( this ); // invokes executeQuery results = new Vector(); while ( resultSet.next() ) { results.addElement( new SoftwareCandidateDO ( resultSet ) ); } } */ if (/* partialCache && */ 0 == cacheHits.size()) hitDb = true; if (hitDb) { dbQuery = Enhydra.getDatabaseManager().createQuery(); dbQuery.query(this); // invokes executeQuery results = new Vector(); while (resultSet.next()) { // results.addElement( new SoftwareCandidateDO ( resultSet ) ); results.addElement(SoftwareCandidateDO.createExisting(resultSet)); } } else { results = cacheHits; // executeQuery saw cache hits } if (results.size() > 1 && uniqueInstance) throw new NonUniqueQueryException("Too many rows returned from database"); DOs = new SoftwareCandidateDO[results.size()]; for (int i = 0; i < results.size(); i++) { DOs[i] = (SoftwareCandidateDO) results.elementAt(i); } arrayIndex = 0; } catch (SQLException se) { if (null == se.getSQLState()) { throw new DataObjectException("Unknown SQLException", se); } if (se.getSQLState().startsWith("02") && se.getErrorCode() == 100) { throw new DataObjectException("Update or delete DO is out of synch", se); } else if (se.getSQLState().equals("S1000") && se.getErrorCode() == -268) { throw new DataObjectException("Integrity constraint violation", se); } else { throw new DataObjectException("Data Object Error", se); } } catch (ObjectIdException oe) { throw new DataObjectException("Object ID Error", oe); } catch (DatabaseManagerException de) { throw new DataObjectException("Database connection Error", de); } finally { if (null != dbQuery) dbQuery.release(); } }