private static boolean isRetrieveRsp(DicomObject cmd) { int cmdField = cmd.getInt(Tag.CommandField); return cmdField == CommandUtils.C_MOVE_RSP || cmdField == CommandUtils.C_GET_RSP; }
/** * Reads the height of the overlay - needs to be done separately from the * primary width even though they are supposed to be identical, as a stand * alone overlay won't have any width/height except in the overlay tags. * * @param overlayNumber * @return */ public static int getOverlayHeight(DicomObject ds, int overlayNumber) { overlayNumber &= 0x60FF0000; return ds.getInt(Tag.OverlayRows | overlayNumber); }
public int getInt(int[] tagPath, VR vr, int defVal) { return dcmobj.getInt(tagPath, vr, defVal); }
public static boolean isResponse(DicomObject dcmobj) { return (dcmobj.getInt(Tag.CommandField) & RSP) != 0; }
public int getInt(int tag, VR vr, int defVal) { return dcmobj.getInt(tag, vr, defVal); }
public int getOffsetFirstRootRecord() { return dcmobj.getInt( Tag.OffsetOfTheFirstDirectoryRecordOfTheRootDirectoryEntity); }
public int getOffsetLastRootRecord() { return dcmobj.getInt( Tag.OffsetOfTheLastDirectoryRecordOfTheRootDirectoryEntity); }
public static boolean isCancelRQ(DicomObject dcmobj) { return dcmobj.getInt(Tag.CommandField) == C_CANCEL_RQ; }
public static boolean isPending(DicomObject cmd) { return (cmd.getInt(Tag.Status) & PENDING) == PENDING; }
public static boolean hasDataset(DicomObject dcmobj) { return dcmobj.getInt(Tag.CommandDataSetType) != NO_DATASET; }
private DicomObject readRecord(int offset, DicomObject keys, boolean ignoreCaseOfPN) throws IOException { while (offset != 0) { DicomObject item = readRecord(offset); if ((showInactiveRecords || item.getInt(Tag.RecordInUseFlag) != INACTIVE) && (keys == null || item.matches(keys, ignoreCaseOfPN))) return item; offset = item.getInt(Tag.OffsetOfTheNextDirectoryRecord); } return null; }
protected DicomObject lastSiblingOrThis(DicomObject rec) throws IOException { DicomObject next; while ((next = readRecord(rec .getInt(Tag.OffsetOfTheNextDirectoryRecord))) != null) { rec = next; } return rec; }
public DicomObject findFirstMatchingChildRecord(DicomObject parentRecord, DicomObject keys, boolean ignoreCaseOfPN) throws IOException { return readRecord(parentRecord .getInt(Tag.OffsetOfReferencedLowerLevelDirectoryEntity), keys, ignoreCaseOfPN); }
public DicomObject findNextMatchingSiblingRecord(DicomObject prevRecord, DicomObject keys, boolean ignoreCaseOfPN) throws IOException { return readRecord( prevRecord.getInt(Tag.OffsetOfTheNextDirectoryRecord), keys, ignoreCaseOfPN); }
public void registerCancelRQHandler(DicomObject cmd, DimseRSP handler) { synchronized (cancelHandlerForMsgId) { cancelHandlerForMsgId.put(cmd.getInt(Tag.MessageID), handler); } }
private void writeDirRecordHeader(DicomObject rec) throws IOException { ByteUtils.int2bytesLE(rec.getInt(Tag.OffsetOfTheNextDirectoryRecord), dirRecordHeader, 8); ByteUtils.ushort2bytesLE(rec.getInt(Tag.RecordInUseFlag), dirRecordHeader, 20); ByteUtils.int2bytesLE( rec.getInt(Tag.OffsetOfReferencedLowerLevelDirectoryEntity), dirRecordHeader, 30); raf.seek(rec.getItemOffset() + 8); raf.write(dirRecordHeader); }
public synchronized void deleteRecord(DicomObject rec) throws IOException { if (rec.getInt(Tag.RecordInUseFlag) == INACTIVE) { return; // already disabled } for (DicomObject child = readRecord( rec.getInt(Tag.OffsetOfReferencedLowerLevelDirectoryEntity)); child != null; child = readRecord( child.getInt(Tag.OffsetOfTheNextDirectoryRecord))) { deleteRecord(child); } rec.putInt(Tag.RecordInUseFlag, VR.US, INACTIVE); markAsDirty(rec); }
public synchronized int purge() throws IOException { int[] purged = { 0 }; for (DicomObject rec = readRecord(filesetInfo.getOffsetFirstRootRecord()); rec != null; rec = readRecord(rec.getInt(Tag.OffsetOfTheNextDirectoryRecord))) { if (rec.getInt(Tag.RecordInUseFlag) != INACTIVE) { purge(rec, purged); } } return purged[0]; }
protected DicomObject lastChildRecord(DicomObject parentRec) throws IOException { DicomObject child = readRecord(parentRec .getInt(Tag.OffsetOfReferencedLowerLevelDirectoryEntity)); return child != null ? lastSiblingOrThis(child) : null; }
void onCancelRQ(DicomObject cmd) throws IOException { int msgId = cmd.getInt(Tag.MessageIDBeingRespondedTo); DimseRSP handler = removeCancelRQHandler(msgId); if (handler != null) { handler.cancel(this); } }