public Response toResponse(QueryException exception) { return Response.serverError().entity( String.format("%s\n%s\n", exception.getMessage(), exception.getCause().getMessage())).type( MediaType.TEXT_PLAIN).build(); }
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 protected long getLastUsedId() { this.logger.debug("getLastUsedId()"); long crtMaxID = 0; try { 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); } catch (QueryException ex) { this.logger.warn("Failed to get the last used identifier: {}", ex.getMessage()); } return crtMaxID; }
@Override public Response fetchPatients() { final Request request = this.container.getRequest(); // Get the internal and external IDs, if provided. final List<Object> eids = request.getProperties("eid"); final List<Object> ids = request.getProperties("id"); this.slf4Jlogger.debug("Retrieving patient records with external IDs [{}] and internal IDs [{}]", eids, ids); // Build a set of patients from the provided external and/or internal ID data. final ImmutableSet.Builder<PrimaryEntity> patientsBuilder = ImmutableSet.builder(); try { addEids(patientsBuilder, eids); addIds(patientsBuilder, ids); // Generate JSON for all retrieved patients. final String json = this.objectMapper.writeValueAsString(patientsBuilder.build()); return Response.ok(json, MediaType.APPLICATION_JSON_TYPE).build(); } catch (final JsonProcessingException ex) { this.slf4Jlogger.error("Failed to serialize patients [{}] to JSON: {}", eids, ex.getMessage()); return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } catch (final QueryException ex) { this.slf4Jlogger.error("Failed to retrieve patients with external ids [{}]: {}", eids, ex.getMessage()); return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } }
@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()); } }
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; }
protected long getLastUsedId() { long crtMaxID = 0; try { Query q = this.qm.createQuery( "select doc.name from Document doc, doc.object(" + this.localSerializer.serialize(getEntityXClassReference()) + ") as entity where doc.space = :space order by doc.name desc", Query.XWQL).bindValue("space", this.getDataSpace().getName()).setLimit(1); List<String> crtMaxIDList = q.execute(); if (!crtMaxIDList.isEmpty() && crtMaxIDList.get(0) != null) { crtMaxID = Integer.parseInt(crtMaxIDList.get(0).replaceAll("\\D++", "")); } crtMaxID = Math.max(crtMaxID, 0); } catch (QueryException ex) { this.logger.warn("Failed to get the last used identifier: {}", ex.getMessage()); } return crtMaxID; }
protected long getLastUsedId() { long crtMaxID = 0; try { Query q = this.qm.createQuery( "select doc.name from Document doc, doc.object(" + this.localSerializer.serialize(getEntityXClassReference()) + ") as entity where doc.space = :space order by doc.name desc", Query.XWQL).bindValue("space", this.getDataSpace().getName()).setLimit(1); List<String> crtMaxIDList = q.execute(); if (!crtMaxIDList.isEmpty() && crtMaxIDList.get(0) != null) { crtMaxID = Integer.parseInt(crtMaxIDList.get(0).replaceAll("\\D++", "")); } crtMaxID = Math.max(crtMaxID, 0); } catch (QueryException ex) { this.logger.warn("Failed to get the last used identifier: {}", ex.getMessage()); } return crtMaxID; }
private List<String> runQuery(String queryString, String formattedInput, int resultsLimit) { Query query = null; List<String> queryResults = null; try { query = this.qm.createQuery(queryString, Query.XWQL); if (resultsLimit > 0) { query.setLimit(resultsLimit); query.setOffset(0); } if (StringUtils.isNotBlank(formattedInput)) { query.bindValue(UsersAndGroups.INPUT_PARAMETER, formattedInput); } queryResults = query.execute(); } catch (QueryException e) { this.logger.error("Error while performing query: [{}] ", queryString, e.getMessage()); return Collections.emptyList(); } return queryResults; }
@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; }
public void refreshLinks(XWikiContext context) throws XWikiException { try { // refreshes all Links of each doc of the wiki List<String> docs = getStore().getQueryManager().getNamedQuery("getAllDocuments").execute(); for (int i = 0; i < docs.size(); i++) { XWikiDocument myDoc = this.getDocument(docs.get(i), context); myDoc.getStore().saveLinks(myDoc, context, true); } } catch (QueryException ex) { throw new XWikiException(0, 0, ex.getMessage(), ex); } }
public List<String> getSpaces(XWikiContext context) throws XWikiException { try { return getStore().getQueryManager().getNamedQuery("getSpaces").execute(); } catch (QueryException ex) { throw new XWikiException(0, 0, ex.getMessage(), ex); } }
@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; }
public List<String> getSpaceDocsName(String spaceName, XWikiContext context) throws XWikiException { try { return getStore().getQueryManager().getNamedQuery("getSpaceDocsName").bindValue("space", spaceName) .execute(); } catch (QueryException ex) { throw new XWikiException(0, 0, ex.getMessage(), ex); } }
@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(); }
/** * {@inheritDoc} * <p> * This assumes that the name is stored in the document title. Override for a different behavior. * </p> */ @Override public E getByName(String name) { try { Query q = this.qm.createQuery( "select doc.fullName from Document doc, doc.object(" + this.localSerializer.serialize(getEntityXClassReference()) + ") as entity where doc.space = :space and doc.title = :name", Query.XWQL).bindValue("space", this.getDataSpace().getName()).bindValue("name", name); List<String> docNames = q.execute(); for (String docName : docNames) { return get(docName); } } catch (QueryException ex) { this.logger.warn("Failed to retrieve the entity named [{}]: {}", name, ex.getMessage()); } return null; }
/** * {@inheritDoc} * <p> * This assumes that the name is stored in the document title. Override for a different behavior. * </p> */ @Override public E getByName(String name) { try { Query q = this.qm.createQuery( "select doc.fullName from Document doc, doc.object(" + this.localSerializer.serialize(getEntityXClassReference()) + ") as entity where doc.space = :space and doc.title = :name", Query.XWQL).bindValue("space", this.getDataSpace().getName()).bindValue("name", name); List<String> docNames = q.execute(); for (String docName : docNames) { return get(docName); } } catch (QueryException ex) { this.logger.warn("Failed to retrieve the entity named [{}]: {}", name, ex.getMessage()); } return null; }