private List<String> getAllTags() throws QueryException { String query = "select distinct elements(prop.list) from BaseObject as obj, " + "DBStringListProperty as prop where obj.className='XWiki.TagClass' " + "and obj.id=prop.id.id and prop.id.name='tags'"; List<String> tags = queryManager.createQuery(query, Query.HQL).execute(); Collections.sort(tags, String.CASE_INSENSITIVE_ORDER); return tags; } }
private long getLastUsedId() throws QueryException { this.logger.debug("getLastUsedId()"); long crtMaxID = 0; Query q = this.qm.createQuery("select family.identifier " + "from Document doc, " + " doc.object(PhenoTips.FamilyClass) as family " + "where family.identifier is not null " + "order by family.identifier desc", Query.XWQL).setLimit(1); List<Long> crtMaxIDList = q.execute(); if (crtMaxIDList.size() > 0 && crtMaxIDList.get(0) != null) { crtMaxID = crtMaxIDList.get(0); } crtMaxID = Math.max(crtMaxID, 0); return crtMaxID; }
private List<String> getDocumentsWithTag(String tag) throws QueryException { String query = "select doc.fullName from XWikiDocument as doc, BaseObject as obj, DBStringListProperty as prop " + "where obj.name=doc.fullName and obj.className='XWiki.TagClass' and obj.id=prop.id.id " + "and prop.id.name='tags' and :tag in elements(prop.list) order by doc.name asc"; List<String> documentsWithTag = queryManager.createQuery(query, Query.HQL).bindValue("tag", tag).execute(); return documentsWithTag; } }
private List<String> runQuery(String queryString, String input) { String formattedInput = String.format(PhenotipsFamilyExport.INPUT_FORMAT, input.toLowerCase()); // Query patients Query query = null; List<String> queryResults = null; try { query = this.qm.createQuery(queryString, Query.XWQL); query.bindValue(PhenotipsFamilyExport.INPUT_PARAMETER, formattedInput); queryResults = query.execute(); } catch (QueryException e) { this.logger.error("Error while performing patients/families query: [{}] ", e.getMessage()); return Collections.emptyList(); } return queryResults; }
@Override public List<String> getIconSetNames() throws IconException { try { String xwql = "SELECT obj.name FROM Document doc, doc.object(IconThemesCode.IconThemeClass) obj " + "ORDER BY obj.name"; Query query = queryManager.createQuery(xwql, Query.XWQL); return query.execute(); } catch (QueryException e) { throw new IconException("Failed to get the name of all icon sets.", e); } } }
/** * Retrieves and collects patient entities that correspond to the provided external ID. * * @param patientsBuilder a patient entity set builder * @param eids external patient IDs, as a list * @throws QueryException if the query fails */ private void collectPatientsFromEids(@Nonnull final ImmutableSet.Builder<PrimaryEntity> patientsBuilder, @Nonnull final List<Object> eids) throws QueryException { final Query q = this.qm.createQuery("from doc.object(PhenoTips.PatientClass) p where p.external_id in (:eids)", Query.XWQL); q.bindValue("eids", eids); final List<Object> patientIds = q.execute(); addIds(patientsBuilder, patientIds); }
protected Patient getPatientByGUID(String guid) { try { Query q = this.queryManager.createQuery("from doc.object(PhenoTips.PatientClass) as o where o.guid = :guid", Query.XWQL).bindValue("guid", guid); List<String> results = q.<String>execute(); if (results.size() == 1) { DocumentReference reference = this.stringResolver.resolve(results.get(0), Patient.DEFAULT_DATA_SPACE); return new PhenoTipsPatient((XWikiDocument) this.bridge.getDocument(reference)); } } catch (Exception ex) { this.logger.warn("Failed to get patient with GUID [{}]: [{}] {}", guid, ex.getMessage(), ex); } return null; }
private List<String> runQuery(String queryString, String input, int resultsLimit) { String formattedInput = String.format(PhenotipsFamilyExport.INPUT_FORMAT, input); // Query patients Query query = null; List<String> queryResults = null; try { query = this.qm.createQuery(queryString, Query.XWQL); query.setLimit(resultsLimit); query.bindValue(PhenotipsFamilyExport.INPUT_PARAMETER, formattedInput); queryResults = query.execute(); } catch (QueryException e) { this.logger.error("Error while performing patiets query: [{}] ", e.getMessage()); return Collections.emptyList(); } return queryResults; }
private Query createQuery(String statement, String language, boolean checkCurrentUser) throws QueryException { Query query = this.secureQueryManager.createQuery(statement, language); if (query instanceof SecureQuery) { ((SecureQuery) query).checkCurrentAuthor(true); ((SecureQuery) query).checkCurrentUser(checkCurrentUser); } return new ScriptQuery(query, this.componentManager); } }
protected Patient getPatientByGUID(String guid) { try { Query q = this.queryManager.createQuery("from doc.object(PhenoTips.PatientClass) as o where o.guid = :guid", Query.XWQL).bindValue("guid", guid); List<String> results = q.<String>execute(); if (results.size() == 1) { DocumentReference reference = this.stringResolver.resolve(results.get(0), Patient.DEFAULT_DATA_SPACE); return new PhenoTipsPatient((XWikiDocument) this.bridge.getDocument(reference)); } } catch (Exception ex) { this.logger.warn("Failed to get patient with GUID [{}]: [{}] {}", guid, ex.getMessage(), ex); } return null; }
@Override public void deleteMessage(String id) { Query q; try { q = this.qm.createQuery("where event.id = :id", Query.XWQL); q.bindValue("id", id); List<Event> events = this.stream.searchEvents(q); if (events == null || events.isEmpty()) { throw new IllegalArgumentException("This message does not exist"); } else if (events.get(0).getUser().equals(this.bridge.getCurrentUserReference())) { this.stream.deleteEvent(events.get(0)); } else { throw new IllegalArgumentException("You are not authorized to delete this message"); } } catch (QueryException ex) { LOG.warn("Failed to delete message: {}", ex.getMessage()); } }
@Override public Map<String, Object> provideData() { Map<String, Object> jsonMap = new HashMap<>(); try { Query q = this.qm.createQuery("from doc.object(XWiki.XWikiUsers) as user", Query.XWQL); q.addFilter(this.countFilter); long count = 0; for (String instanceId : this.wikiManager.getAllIds()) { q.setWiki(instanceId); List<Object> results = q.execute(); long instanceCount = (long) results.get(0); count += instanceCount; } jsonMap.put(PROPERTY_USER_COUNT, count); } catch (QueryException | WikiManagerException e) { logWarning("Error getting users count", e); } return jsonMap; }
/** * {@inheritDoc} * * @see EventStream#searchEvents(Query) */ public List<Event> searchEvents(Query query) throws QueryException { Query q = this.qm.createQuery("select event from ActivityEventImpl event " + query.getStatement(), query.getLanguage()); for (Map.Entry<String, Object> entry : query.getNamedParameters().entrySet()) { q.bindValue(entry.getKey(), entry.getValue()); } for (Map.Entry<Integer, Object> entry : query.getPositionalParameters().entrySet()) { q.bindValue(entry.getKey(), entry.getValue()); } List<ActivityEvent> events = q.execute(); return convertActivitiesToEvents(events); }
@Override public void reindex() { try { List<String> patientDocs = this.qm.createQuery("from doc.object(PhenoTips.PatientClass) as patient", Query.XWQL).execute(); this.server.deleteByQuery("*:*"); for (String patientDoc : patientDocs) { this.index(this.patientRepository.get(patientDoc)); } this.server.commit(); } catch (SolrServerException ex) { this.logger.warn("Failed to reindex patients: {}", ex.getMessage()); } catch (IOException ex) { this.logger.warn("Error occurred while reindexing patients: {}", ex.getMessage()); } catch (QueryException ex) { this.logger.warn("Failed to search patients for reindexing: {}", ex.getMessage()); } }
@Override public List<Event> getRecentPersonalMessages(DocumentReference author, int limit, int offset) { List<Event> result = new ArrayList<Event>(); try { Query q = this.qm.createQuery( "where event.application = 'MessageStream' and event.type = 'personalMessage'" + " and event.user = :user order by event.date desc", Query.XWQL); q.bindValue("user", this.serializer.serialize(author)); q.setLimit(limit > 0 ? limit : 30).setOffset(offset >= 0 ? offset : 0); result = this.stream.searchEvents(q); } catch (QueryException ex) { LOG.warn("Failed to search personal messages: {}", ex.getMessage()); } return result; }
@Override public List<Event> getRecentMessagesForGroup(DocumentReference group, int limit, int offset) { List<Event> result = new ArrayList<Event>(); try { Query q = this.qm.createQuery( "where event.application = 'MessageStream' and event.type = 'groupMessage'" + " and event.stream = :group order by event.date desc", Query.XWQL); q.bindValue("group", this.serializer.serialize(group)); q.setLimit(limit > 0 ? limit : 30).setOffset(offset >= 0 ? offset : 0); result = this.stream.searchEvents(q); } catch (QueryException ex) { LOG.warn("Failed to search group messages: {}", ex.getMessage()); } return result; }
@Override public List<String> getAllXWikiServerClassDocumentNames() throws WikiManagerException { WikiDescriptorManager wikiDescriptorManager = wikiDescriptorManagerProvider.get(); try { Query query = this.queryManager.createQuery( "from doc.object(XWiki.XWikiServerClass) as descriptor where doc.name like 'XWikiServer%' " + "and doc.fullName <> 'XWiki.XWikiServerClassTemplate'", Query.XWQL); query.setWiki(wikiDescriptorManager.getMainWikiId()); query.addFilter(componentManager.<QueryFilter>getInstance(QueryFilter.class, "unique")); return query.execute(); } catch (Exception e) { throw new WikiManagerException("Failed to locate XWiki.XWikiServerClass documents", e); } }
@Override public List<Event> getRecentDirectMessages(int limit, int offset) { List<Event> result = new ArrayList<Event>(); try { Query q = this.qm.createQuery( "where event.application = 'MessageStream' and event.type = 'directMessage'" + " and event.stream = :targetUser order by event.date desc", Query.XWQL); q.bindValue("targetUser", this.serializer.serialize(this.bridge.getCurrentUserReference())); q.setLimit(limit > 0 ? limit : 30).setOffset(offset >= 0 ? offset : 0); result = this.stream.searchEvents(q); } catch (QueryException ex) { LOG.warn("Failed to search direct messages: {}", ex.getMessage()); } return result; }
@Override public Iterator<E> getAll() { try { Query q = this.qm.createQuery( "select doc.fullName from Document as doc, doc.object(" + this.localSerializer.serialize(getEntityXClassReference()) + ") as entity where doc.name not in (:template1, :template2) order by doc.name asc", Query.XWQL).bindValue("template1", this.getEntityXClassReference().getName() + "Template") .bindValue("template2", StringUtils.removeEnd(this.getEntityXClassReference().getName(), "Class") + "Template"); List<String> docNames = q.execute(); return new LazyPrimaryEntityIterator<>(docNames, this); } catch (QueryException ex) { this.logger.warn("Failed to query all entities of type [{}]: {}", getEntityXClassReference(), ex.getMessage()); } return Collections.emptyIterator(); }
@Override public Iterator<E> getAll() { try { Query q = this.qm.createQuery( "select doc.fullName from Document as doc, doc.object(" + this.localSerializer.serialize(getEntityXClassReference()) + ") as entity where doc.name not in (:template1, :template2) order by doc.name asc", Query.XWQL).bindValue("template1", this.getEntityXClassReference().getName() + "Template") .bindValue("template2", StringUtils.removeEnd(this.getEntityXClassReference().getName(), "Class") + "Template"); List<String> docNames = q.execute(); return new LazyPrimaryEntityIterator<>(docNames, this); } catch (QueryException ex) { this.logger.warn("Failed to query all entities of type [{}]: {}", getEntityXClassReference(), ex.getMessage()); } return Collections.emptyIterator(); }