/** * {@inheritDoc} */ @Override public void addToBagFromQuery(ObjectStoreBag osb, Query query) throws ObjectStoreException { List<QuerySelectable> select = query.getSelect(); if (select.size() != 1) { throw new IllegalArgumentException("Query has incorrect number of SELECT elements."); } Class<?> type = select.get(0).getType(); if (!(Integer.class.equals(type) || InterMineObject.class.isAssignableFrom(type))) { throw new IllegalArgumentException("The type of the result colum (" + type.getName() + ") is not an Integer or InterMineObject"); } try { Connection c = null; try { c = getConnection(); Set<String> readTables = SqlGenerator.findTableNames(query, getSchema()); readTables.add(INT_BAG_TABLE_NAME); batch.flush(c, readTables); addToBagFromQueryWithConnection(c, osb, query); } finally { releaseConnection(c); } } catch (SQLException e) { throw new ObjectStoreException("Could not get connection to database", e); } }
/** * {@inheritDoc} */ @Override public void addToBagFromQuery(ObjectStoreBag osb, Query query) throws ObjectStoreException { List<QuerySelectable> select = query.getSelect(); if (select.size() != 1) { throw new IllegalArgumentException("Query has incorrect number of SELECT elements."); } Class<?> type = select.get(0).getType(); if (!(Integer.class.equals(type) || InterMineObject.class.isAssignableFrom(type))) { throw new IllegalArgumentException("The type of the result colum (" + type.getName() + ") is not an Integer or InterMineObject"); } try { Connection c = null; try { c = getConnection(); Set<String> readTables = SqlGenerator.findTableNames(query, getSchema()); readTables.add(INT_BAG_TABLE_NAME); batch.flush(c, readTables); addToBagFromQueryWithConnection(c, osb, query); } finally { releaseConnection(c); } } catch (SQLException e) { throw new ObjectStoreException("Could not get connection to database", e); } }