private void closeAndForgetOldResults() { Iterator<FieldSearchResultSQLImpl> iter = m_currentResults.values().iterator(); while (iter.hasNext()) { FieldSearchResultSQLImpl r = iter.next(); if (r.isExpired()) { logger.debug("listSession " + r.getToken() + " expired; will forget it."); iter.remove(); } } }
private static final String dcFixup(String st) { String dcFixed; if (isDCProp(st)) { StringBuilder sb = new StringBuilder(st.length() + 2); sb.append("dc").append(Character.toUpperCase(st.charAt(0))); sb.append(st, 1, st.length()); dcFixed = sb.toString(); } else { dcFixed = st; } return dcFixed; }
private FieldSearchResult stepAndRemember(FieldSearchResultSQLImpl result) throws UnrecognizedFieldException, ObjectIntegrityException, RepositoryConfigurationException, StreamIOException, ServerException, UnrecognizedFieldException { result.step(); if (result.getToken() != null) { m_currentResults.put(result.getToken(), result); } return result; }
private String logAndGetQueryText(FieldSearchQuery query, String[] resultFields) //2004.05.02 wdn5e throws SQLException, QueryParseException { StringBuffer queryText = new StringBuffer("SELECT"); if (query.getType() == FieldSearchQuery.TERMS_TYPE) { queryText.append(" doFields.pid FROM doFields" + getWhereClause(query.getTerms())); } else { StringBuffer resultFieldsString = new StringBuffer(); if (resultFields.length > 0) { String delimiter = " "; for (String element : resultFields) { String dbColumn = "doFields." + dcFixup(element); resultFieldsString.append(delimiter + dbColumn); delimiter = ", "; } } queryText.append(resultFieldsString); queryText.append(" FROM doFields"); queryText.append(getWhereClause(query.getConditions())); // disabled sorting: see bug 78 // queryText.append(" ORDER BY"); // queryText.append(resultFieldsString); } String qt = queryText.toString(); logger.debug(qt); return qt; }
toSql("doFields.dcDate", cond.getValue()); if (sqlPart.startsWith(" ")) { needsEscape = true; if (isDCProp(prop)) { throw new QueryParseException("The = operator " + "can only be used with dates and " toSql("doFields." + prop, cond.getValue()); if (sqlPart.indexOf("LIKE ") != -1) { throw new QueryParseException("The = " if (isDCProp(prop)) { toSql("doFields." + prop, cond.getValue()); if (sqlPart.startsWith(" ")) { needsEscape = true;
public FieldSearchResult findObjects(String[] resultFields, int maxResults, FieldSearchQuery query) throws UnrecognizedFieldException, ObjectIntegrityException, RepositoryConfigurationException, StreamIOException, ServerException, StorageDeviceException { closeAndForgetOldResults(); int actualMax = maxResults; if (m_maxResults < maxResults) { actualMax = m_maxResults; } try { return stepAndRemember(new FieldSearchResultSQLImpl(m_cPool, m_repoReader, resultFields, actualMax, m_maxSecondsPerSession, query)); } catch (SQLException sqle) { throw new StorageDeviceException("Error querying sql db: " + sqle.getMessage(), sqle); } }
whereClause.append(" OR"); String qPart = toSql(column, terms); if (qPart.charAt(0) == ' ') { needsEscape = true;
boolean success = false; try { m_statement = m_conn.prepareStatement(logAndGetQueryText(query, m_resultFields)); m_resultSet =
m_nextPID = null; m_objectFields.add(getObjectFields(pid));
private String logAndGetQueryText(FieldSearchQuery query, String[] resultFields) //2004.05.02 wdn5e throws SQLException, QueryParseException { StringBuffer queryText = new StringBuffer("SELECT"); if (query.getType() == FieldSearchQuery.TERMS_TYPE) { queryText.append(" doFields.pid FROM doFields" + getWhereClause(query.getTerms())); } else { StringBuffer resultFieldsString = new StringBuffer(); if (resultFields.length > 0) { String delimiter = " "; for (String element : resultFields) { String dbColumn = "doFields." + dcFixup(element); resultFieldsString.append(delimiter + dbColumn); delimiter = ", "; } } queryText.append(resultFieldsString); queryText.append(" FROM doFields"); queryText.append(getWhereClause(query.getConditions())); // disabled sorting: see bug 78 // queryText.append(" ORDER BY"); // queryText.append(resultFieldsString); } String qt = queryText.toString(); logger.debug(qt); return qt; }
toSql("doFields.dcDate", cond.getValue()); if (sqlPart.startsWith(" ")) { needsEscape = true; if (isDCProp(prop)) { throw new QueryParseException("The = operator " + "can only be used with dates and " toSql("doFields." + prop, cond.getValue()); if (sqlPart.indexOf("LIKE ") != -1) { throw new QueryParseException("The = " if (isDCProp(prop)) { toSql("doFields." + prop, cond.getValue()); if (sqlPart.startsWith(" ")) { needsEscape = true;
public FieldSearchResult findObjects(String[] resultFields, int maxResults, FieldSearchQuery query) throws UnrecognizedFieldException, ObjectIntegrityException, RepositoryConfigurationException, StreamIOException, ServerException, StorageDeviceException { closeAndForgetOldResults(); int actualMax = maxResults; if (m_maxResults < maxResults) { actualMax = m_maxResults; } try { return stepAndRemember(new FieldSearchResultSQLImpl(m_cPool, m_repoReader, resultFields, actualMax, m_maxSecondsPerSession, query)); } catch (SQLException sqle) { throw new StorageDeviceException("Error querying sql db: " + sqle.getMessage(), sqle); } }
whereClause.append(" OR"); String qPart = toSql(column, terms); if (qPart.charAt(0) == ' ') { needsEscape = true;
boolean success = false; try { m_statement = m_conn.prepareStatement(logAndGetQueryText(query, m_resultFields)); m_resultSet =
m_nextPID = null; m_objectFields.add(getObjectFields(pid));
private void closeAndForgetOldResults() { Iterator<FieldSearchResultSQLImpl> iter = m_currentResults.values().iterator(); while (iter.hasNext()) { FieldSearchResultSQLImpl r = iter.next(); if (r.isExpired()) { logger.debug("listSession " + r.getToken() + " expired; will forget it."); iter.remove(); } } }
private FieldSearchResult stepAndRemember(FieldSearchResultSQLImpl result) throws UnrecognizedFieldException, ObjectIntegrityException, RepositoryConfigurationException, StreamIOException, ServerException, UnrecognizedFieldException { result.step(); if (result.getToken() != null) { m_currentResults.put(result.getToken(), result); } return result; }
private static final String dcFixup(String st) { String dcFixed; if (isDCProp(st)) { StringBuilder sb = new StringBuilder(st.length() + 2); sb.append("dc").append(Character.toUpperCase(st.charAt(0))); sb.append(st, 1, st.length()); dcFixed = sb.toString(); } else { dcFixed = st; } return dcFixed; }