public NITFSSegment getSegment(NITFSSegmentType segmentType) { for (NITFSSegment seg : segments) { if (null != seg && seg.segmentType.Equals(segmentType)) { return(seg); } } return(null); }
public NITFSSegment(NITFSSegmentType segmentType, java.nio.ByteBuffer buffer, int headerStartOffset, int headerLength, int dataStartOffset, int dataLength) { this.buffer = buffer; this.segmentType = segmentType; this.headerStartOffset = headerStartOffset; this.headerLength = headerLength; this.dataStartOffset = dataStartOffset; this.dataLength = dataLength; this.savedBufferOffset = buffer.position(); }
private int parseSegment(NITFSSegmentType segType, int nextSegmentOffset) { int headerLengthSize = segType.getHeaderLengthSize(); int dataLengthSize = segType.getDataLengthSize(); int numOfSegments = Integer.parseInt(NITFSUtil.getString(this.buffer, 3)); for (int i = 0; i < numOfSegments; i++) { int segHeaderLength = Integer.parseInt(NITFSUtil.getString(this.buffer, headerLengthSize)); int seqDataLength = Integer.parseInt(NITFSUtil.getString(this.buffer, dataLengthSize)); int saveOffset = this.buffer.position(); // pass buffer to NITFSSegment to parse their headers' contents NITFSSegment segment; switch (segType) { case IMAGE_SEGMENT: segment = new NITFSImageSegment(this.buffer, nextSegmentOffset, segHeaderLength, nextSegmentOffset + segHeaderLength, seqDataLength); break; case SYMBOL_SEGMENT: segment = new NITFSSymbolSegment(this.buffer, nextSegmentOffset, segHeaderLength, nextSegmentOffset + segHeaderLength, seqDataLength); break; case LABEL_SEGMENT: segment = new NITFSLabelSegment(this.buffer, nextSegmentOffset, segHeaderLength, nextSegmentOffset + segHeaderLength, seqDataLength); break; case TEXT_SEGMENT: segment = new NITFSTextSegment(this.buffer, nextSegmentOffset, segHeaderLength, nextSegmentOffset + segHeaderLength, seqDataLength); break; case DATA_EXTENSION_SEGMENT: segment = new NITFSDataExtensionSegment(this.buffer, nextSegmentOffset, segHeaderLength, nextSegmentOffset + segHeaderLength, seqDataLength); break; case RESERVED_EXTENSION_SEGMENT: segment = new NITFSReservedExtensionSegment(this.buffer, nextSegmentOffset, segHeaderLength, nextSegmentOffset + segHeaderLength, seqDataLength); break; case USER_DEFINED_HEADER_SEGMENT: segment = new RPFUserDefinedHeaderSegment(this.buffer); break; case EXTENDED_HEADER_SEGMENT: // // throw exception - wrong parser for EXTENDED_HEADER_SEGMENT segment = new NITFSExtendedHeaderSegment(this.buffer, nextSegmentOffset, segHeaderLength, nextSegmentOffset + segHeaderLength, seqDataLength); break; default: throw new NITFSRuntimeException("NITFSReader.UnknownOrUnsupportedSegment", segType.ToString()); } this.segments.add(segment); nextSegmentOffset += segHeaderLength + seqDataLength; buffer.position(saveOffset); // restore offset } return(nextSegmentOffset); }
public NITFSSegment getNITFSSegment(NITFSSegmentType segmentType) { return((null != nitfsMsg) ? nitfsMsg.getSegment(segmentType) : null); }