protected QueryTask calculateMatches(Association as, PresentationContext pc, Attributes rq, Attributes keys) throws DicomServiceException { return new BasicQueryTask(as, pc, rq, keys); } }
@Override public void run() { try { int msgId = rq.getInt(Tag.MessageID, -1); as.addCancelRQHandler(msgId, this); try { while (!canceled && hasMoreMatches()) { Attributes match = adjust(nextMatch()); if (match != null) { int status = optionalKeysNotSupported ? Status.PendingWarning : Status.Pending; as.writeDimseRSP(pc, Commands.mkCFindRSP(rq, status), match); } } int status = canceled ? Status.Cancel : Status.Success; as.writeDimseRSP(pc, Commands.mkCFindRSP(rq, status)); } catch (DicomServiceException e) { Attributes rsp = e.mkRSP(0x8020, msgId); as.writeDimseRSP(pc, rsp, e.getDataset()); } finally { as.removeCancelRQHandler(msgId); close(); } } catch (IOException e) { // handled by Association } }
@Override protected Attributes adjust(Attributes match) { Attributes adjust = super.adjust(match); adjust.remove(Tag.DirectoryRecordType); if (keys.contains(Tag.SOPClassUID)) adjust.setString(Tag.SOPClassUID, VR.UI, match.getString(Tag.ReferencedSOPClassUIDInFile)); if (keys.contains(Tag.SOPInstanceUID)) adjust.setString(Tag.SOPInstanceUID, VR.UI, match.getString(Tag.ReferencedSOPInstanceUIDInFile)); adjust.setString(Tag.QueryRetrieveLevel, VR.CS, keys.getString(Tag.QueryRetrieveLevel)); adjust.setString(Tag.RetrieveAETitle, VR.AE, as.getCalledAET()); if (availability != null) adjust.setString(Tag.InstanceAvailability, VR.CS, availability); adjust.setString(Tag.StorageMediaFileSetID, VR.SH, ddr.getFileSetID()); adjust.setString(Tag.StorageMediaFileSetUID, VR.UI, ddr.getFileSetUID()); match.setString(Tag.SOPClassUID, VR.UI, match.getString(Tag.ReferencedSOPClassUIDInFile)); match.setString(Tag.SOPInstanceUID, VR.UI, match.getString(Tag.ReferencedSOPInstanceUIDInFile)); if (delayCFind > 0) try { Thread.sleep(delayCFind); } catch (InterruptedException ignore) {} return adjust; }
@Override public void run() { try { int msgId = rq.getInt(Tag.MessageID, -1); as.addCancelRQHandler(msgId, this); try { while (!canceled && hasMoreMatches()) { Attributes match = adjust(nextMatch()); if (match != null) { int status = optionalKeysNotSupported ? Status.PendingWarning : Status.Pending; as.writeDimseRSP(pc, Commands.mkCFindRSP(rq, status), match); } } int status = canceled ? Status.Cancel : Status.Success; as.writeDimseRSP(pc, Commands.mkCFindRSP(rq, status)); } catch (DicomServiceException e) { Attributes rsp = e.mkRSP(0x8020, msgId); as.writeDimseRSP(pc, rsp, e.getDataset()); } finally { as.removeCancelRQHandler(msgId); close(); } } catch (IOException e) { // handled by Association } }
@Override protected Attributes adjust(Attributes match) { Attributes adjust = super.adjust(match); adjust.remove(Tag.DirectoryRecordType); if (keys.contains(Tag.SOPClassUID)) adjust.setString(Tag.SOPClassUID, VR.UI, match.getString(Tag.ReferencedSOPClassUIDInFile)); if (keys.contains(Tag.SOPInstanceUID)) adjust.setString(Tag.SOPInstanceUID, VR.UI, match.getString(Tag.ReferencedSOPInstanceUIDInFile)); adjust.setString(Tag.QueryRetrieveLevel, VR.CS, keys.getString(Tag.QueryRetrieveLevel)); adjust.setString(Tag.RetrieveAETitle, VR.AE, as.getCalledAET()); if (availability != null) adjust.setString(Tag.InstanceAvailability, VR.CS, availability); adjust.setString(Tag.StorageMediaFileSetID, VR.SH, ddr.getFileSetID()); adjust.setString(Tag.StorageMediaFileSetUID, VR.UI, ddr.getFileSetUID()); match.setString(Tag.SOPClassUID, VR.UI, match.getString(Tag.ReferencedSOPClassUIDInFile)); match.setString(Tag.SOPInstanceUID, VR.UI, match.getString(Tag.ReferencedSOPInstanceUIDInFile)); if (delayCFind > 0) try { Thread.sleep(delayCFind); } catch (InterruptedException ignore) {} return adjust; }
protected QueryTask calculateMatches(Association as, PresentationContext pc, Attributes rq, Attributes keys) throws DicomServiceException { return new BasicQueryTask(as, pc, rq, keys); } }