public void executeQuery(CompiledQuery query, CompiledQueryMix queryMix) { double timeInSeconds; String queryString = query.getQueryString(); String parametrizedQueryString = query.getParametrizedQueryString(); String encodedParamString = query.getEncodedParamString(); byte queryType = query.getQueryType(); int queryNr = query.getNr(); NetQuery qe; if (query.source.isParametrized) qe = new NetQuery( serverURL, parametrizedQueryString, encodedParamString, queryType, defaultGraph, timeout); else qe = new NetQuery(serverURL, queryString, "", queryType, defaultGraph, timeout); int queryMixRun = queryMix.getRun() + 1; InputStream is = qe.exec(); if (is == null) { // then Timeout! double t = this.timeout / 1000.0; System.out.println("Query " + queryNr + ": " + t + " seconds timeout!"); queryMix.reportTimeOut(); // inc. timeout counter queryMix.setCurrent(0, t); qe.close(); return; } int resultCount = 0; try { // Write XML result into result if (queryType == Query.SELECT_TYPE) resultCount = countResults(is); else resultCount = countBytes(is); timeInSeconds = qe.getExecutionTimeInSeconds(); } catch (SocketTimeoutException e) { double t = this.timeout / 1000.0; System.out.println("Query " + queryNr + ": " + t + " seconds timeout!"); queryMix.reportTimeOut(); // inc. timeout counter queryMix.setCurrent(0, t); qe.close(); return; } if (logger.isEnabledFor(Level.ALL) && queryMixRun > 0) logResultInfo(queryNr, queryMixRun, timeInSeconds, queryString, queryType, resultCount); queryMix.setCurrent(resultCount, timeInSeconds); qe.close(); }