Search in sources :

Example 1 with TargetIdImpl

use of org.codice.imaging.nitf.core.image.impl.TargetIdImpl in project alliance by codice.

the class CatalogOutputAdapterTest method testGetNitfBinaryContentBlockedChip.

@Test
public void testGetNitfBinaryContentBlockedChip() throws MimeTypeParseException, NitfFormatException, IOException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
    // 200000N0200000E 200000N0400000E
    // 000000N0200000E 000000N0400000E
    int originalWidth = 2048;
    int originalHeight = 2048;
    int chipX = 0;
    int chipY = 0;
    int chipWidth = 2048;
    int chipHeight = 2048;
    BufferedImage chipImage = new BufferedImage(chipWidth, chipHeight, BufferedImage.TYPE_3BYTE_BGR);
    FileSecurityMetadata fileSecurityMetadata = createFileSecurityMetadata();
    DateTime dateTime = DateTimeImpl.getNitfDateTimeForNow();
    DataSource dataSource = mock(DataSource.class);
    NitfHeader nitfHeader = getNitfHeader(fileSecurityMetadata, dateTime);
    ImageCoordinates imageCoordinates = getImageCoordinates();
    SecurityMetadata imageSecurityMetadata = getImageSecurityMetadata();
    ImageSegment imageSegment = getImageSegment(originalWidth, originalHeight, dateTime, imageCoordinates, imageSecurityMetadata);
    when(dataSource.getNitfHeader()).thenReturn(nitfHeader);
    when(dataSource.getImageSegments()).thenReturn(Collections.singletonList(imageSegment));
    Constructor<NitfSegmentsFlowImpl> constructor;
    constructor = NitfSegmentsFlowImpl.class.getDeclaredConstructor(DataSource.class, Runnable.class);
    constructor.setAccessible(true);
    NitfSegmentsFlow nitfSegmentsFlow = constructor.newInstance(dataSource, (Runnable) () -> {
    });
    BinaryContent binaryContent = catalogOutputAdapter.getNitfBinaryContent(chipImage, nitfSegmentsFlow, chipX, chipY);
    NitfSegmentsFlow chipNitfSegmentFlow = new NitfParserInputFlowImpl().inputStream(binaryContent.getInputStream()).allData();
    assertThat(chipNitfSegmentFlow, notNullValue());
    chipNitfSegmentFlow.fileHeader(nh -> {
        assertThat(nh.getFileType(), is(FileType.NITF_TWO_ONE));
        assertThat(nh.getFileTitle(), is("FileTitle"));
        assertThat(nh.getStandardType(), is("BF01"));
        assertThat(nh.getOriginatingStationId(), is("U21SOO90"));
        assertThat(nh.getFileBackgroundColour().getRed(), is((byte) 0));
        assertThat(nh.getFileBackgroundColour().getGreen(), is((byte) 0));
        assertThat(nh.getFileBackgroundColour().getBlue(), is((byte) 0));
        assertThat(nh.getFileDateTime(), notNullValue());
        assertThat(nh.getOriginatorsName(), is("W.TEMPEL"));
        assertThat(nh.getOriginatorsPhoneNumber(), is("44 1480 84 5611"));
        assertThat(nh.getFileSecurityMetadata().getSecurityClassification(), is(SecurityClassification.UNCLASSIFIED));
        assertThat(nh.getFileSecurityMetadata().getSecurityClassificationSystem(), is("AB"));
        assertThat(nh.getFileSecurityMetadata().getCodewords(), is("ABCDEFGHIJK"));
        assertThat(nh.getFileSecurityMetadata().getControlAndHandling(), is("AB"));
        assertThat(nh.getFileSecurityMetadata().getReleaseInstructions(), is("01234567890123456789"));
        assertThat(nh.getFileSecurityMetadata().getDeclassificationType(), is("DD"));
        assertThat(nh.getFileSecurityMetadata().getDeclassificationDate(), is("20160101"));
        assertThat(nh.getFileSecurityMetadata().getDeclassificationExemption(), is("abcd"));
        assertThat(nh.getFileSecurityMetadata().getDowngrade(), is("S"));
        assertThat(nh.getFileSecurityMetadata().getDowngradeDate(), is("20160202"));
        assertThat(nh.getFileSecurityMetadata().getClassificationText(), is("classtext"));
        assertThat(nh.getFileSecurityMetadata().getClassificationAuthorityType(), is("O"));
        assertThat(nh.getFileSecurityMetadata().getClassificationAuthority(), is("MyAuthority"));
        assertThat(nh.getFileSecurityMetadata().getClassificationReason(), is("A"));
        assertThat(nh.getFileSecurityMetadata().getSecuritySourceDate(), is("20160303"));
        assertThat(nh.getFileSecurityMetadata().getSecurityControlNumber(), is("012345678901234"));
        assertThat(nh.getFileSecurityMetadata().getFileCopyNumber(), is("99999"));
        assertThat(nh.getFileSecurityMetadata().getFileNumberOfCopies(), is("99999"));
    });
    chipNitfSegmentFlow.forEachImageSegment(imageSegment1 -> {
        assertThat(imageSegment1.getImageCoordinates().getCoordinate00().getLongitude(), closeTo(20, 0.01));
        assertThat(imageSegment1.getImageCoordinates().getCoordinate00().getLatitude(), closeTo(20, 0.01));
        assertThat(imageSegment1.getImageCoordinates().getCoordinate0MaxCol().getLongitude(), closeTo(40, 0.01));
        assertThat(imageSegment1.getImageCoordinates().getCoordinate0MaxCol().getLatitude(), closeTo(20, 0.01));
        assertThat(imageSegment1.getImageCoordinates().getCoordinateMaxRowMaxCol().getLongitude(), closeTo(40, 0.01));
        assertThat(imageSegment1.getImageCoordinates().getCoordinateMaxRowMaxCol().getLatitude(), closeTo(0, 0.01));
        assertThat(imageSegment1.getImageCoordinates().getCoordinateMaxRow0().getLongitude(), closeTo(20, 0.01));
        assertThat(imageSegment1.getImageCoordinates().getCoordinateMaxRow0().getLatitude(), closeTo(0, 0.01));
        assertThat(imageSegment1.getNumberOfColumns(), is((long) chipWidth));
        assertThat(imageSegment1.getNumberOfRows(), is((long) chipHeight));
        assertThat(imageSegment1.getImageCategory(), is(ImageCategory.UNKNOWN));
        assertThat(imageSegment1.getImageComments(), is(Collections.singletonList("MyComment")));
        assertThat(imageSegment1.getIdentifier(), is("0123456789"));
        assertThat(imageSegment1.getImageIdentifier2(), is("abc"));
        assertThat(imageSegment1.getImageMagnification(), is("1.0 "));
        try {
            assertThat(imageSegment1.getImageTargetId().textValue(), is(new TargetIdImpl("                 ").textValue()));
        } catch (NitfFormatException e) {
            fail(e.getMessage());
        }
        assertThat(imageSegment1.getImageSource(), is(""));
        assertThat(imageSegment1.getImageDateTime().getSourceString(), is(dateTime.getSourceString()));
        assertThat(imageSegment1.getImageRepresentation(), is(ImageRepresentation.RGBTRUECOLOUR));
    });
}
Also used : ImageSegment(org.codice.imaging.nitf.core.image.ImageSegment) TargetIdImpl(org.codice.imaging.nitf.core.image.impl.TargetIdImpl) NitfFormatException(org.codice.imaging.nitf.core.common.NitfFormatException) NitfSegmentsFlow(org.codice.imaging.nitf.fluent.NitfSegmentsFlow) NitfParserInputFlowImpl(org.codice.imaging.nitf.fluent.impl.NitfParserInputFlowImpl) BinaryContent(ddf.catalog.data.BinaryContent) FileSecurityMetadata(org.codice.imaging.nitf.core.security.FileSecurityMetadata) BufferedImage(java.awt.image.BufferedImage) DateTime(org.codice.imaging.nitf.core.common.DateTime) DataSource(org.codice.imaging.nitf.core.DataSource) NitfSegmentsFlowImpl(org.codice.imaging.nitf.fluent.impl.NitfSegmentsFlowImpl) NitfHeader(org.codice.imaging.nitf.core.header.NitfHeader) ImageCoordinates(org.codice.imaging.nitf.core.image.ImageCoordinates) SecurityMetadata(org.codice.imaging.nitf.core.security.SecurityMetadata) FileSecurityMetadata(org.codice.imaging.nitf.core.security.FileSecurityMetadata) Test(org.junit.Test)

Example 2 with TargetIdImpl

use of org.codice.imaging.nitf.core.image.impl.TargetIdImpl in project alliance by codice.

the class CatalogOutputAdapterTest method getImageSegment.

private ImageSegment getImageSegment(long originalWidth, long originalHeight, DateTime dateTime, ImageCoordinates imageCoordinates, SecurityMetadata imageSecurityMetadata) throws NitfFormatException {
    ImageSegment imageSegment = mock(ImageSegment.class);
    when(imageSegment.getImageCoordinates()).thenReturn(imageCoordinates);
    when(imageSegment.getNumberOfColumns()).thenReturn(originalWidth);
    when(imageSegment.getNumberOfRows()).thenReturn(originalHeight);
    when(imageSegment.getImageCategory()).thenReturn(ImageCategory.UNKNOWN);
    when(imageSegment.getImageComments()).thenReturn(Collections.singletonList("MyComment"));
    when(imageSegment.getIdentifier()).thenReturn("0123456789");
    when(imageSegment.getImageIdentifier2()).thenReturn("abc");
    when(imageSegment.getImageMagnification()).thenReturn("1.0 ");
    when(imageSegment.getImageTargetId()).thenReturn(new TargetIdImpl("                 "));
    when(imageSegment.getImageSource()).thenReturn("");
    when(imageSegment.getImageDateTime()).thenReturn(dateTime);
    when(imageSegment.getImageRepresentation()).thenReturn(ImageRepresentation.UNKNOWN);
    when(imageSegment.getSecurityMetadata()).thenReturn(imageSecurityMetadata);
    when(imageSegment.getTREsRawStructure()).thenReturn(new TreCollectionImpl());
    return imageSegment;
}
Also used : ImageSegment(org.codice.imaging.nitf.core.image.ImageSegment) TargetIdImpl(org.codice.imaging.nitf.core.image.impl.TargetIdImpl) TreCollectionImpl(org.codice.imaging.nitf.core.tre.impl.TreCollectionImpl)

Example 3 with TargetIdImpl

use of org.codice.imaging.nitf.core.image.impl.TargetIdImpl in project alliance by codice.

the class CatalogOutputAdapterTest method testGetNitfBinaryContent.

@Test
public void testGetNitfBinaryContent() throws MimeTypeParseException, NitfFormatException, IOException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
    // 200000N0200000E 200000N0400000E
    // 000000N0200000E 000000N0400000E
    int originalWidth = 200;
    int originalHeight = 100;
    int chipX = 20;
    int chipY = 10;
    int chipWidth = 160;
    int chipHeight = 80;
    // assume original image is 200x100, chip is 20x10/160x80
    BufferedImage chipImage = new BufferedImage(chipWidth, chipHeight, BufferedImage.TYPE_3BYTE_BGR);
    FileSecurityMetadata fileSecurityMetadata = createFileSecurityMetadata();
    DateTime dateTime = DateTimeImpl.getNitfDateTimeForNow();
    NitfHeader nitfHeader = getNitfHeader(fileSecurityMetadata, dateTime);
    ImageCoordinates imageCoordinates = getImageCoordinates();
    SecurityMetadata imageSecurityMetadata = getImageSecurityMetadata();
    ImageSegment imageSegment = getImageSegment(originalWidth, originalHeight, dateTime, imageCoordinates, imageSecurityMetadata);
    DataSource dataSource = getDataSource(nitfHeader, Collections.singletonList(imageSegment));
    Constructor<NitfSegmentsFlowImpl> constructor;
    constructor = NitfSegmentsFlowImpl.class.getDeclaredConstructor(DataSource.class, Runnable.class);
    constructor.setAccessible(true);
    NitfSegmentsFlow nitfSegmentsFlow = constructor.newInstance(dataSource, (Runnable) () -> {
    });
    BinaryContent binaryContent = catalogOutputAdapter.getNitfBinaryContent(chipImage, nitfSegmentsFlow, chipX, chipY);
    NitfSegmentsFlow chipNitfSegmentFlow = new NitfParserInputFlowImpl().inputStream(binaryContent.getInputStream()).allData();
    assertThat(chipNitfSegmentFlow, notNullValue());
    chipNitfSegmentFlow.fileHeader(nh -> {
        assertThat(nh.getFileType(), is(FileType.NITF_TWO_ONE));
        assertThat(nh.getFileTitle(), is("FileTitle"));
        assertThat(nh.getStandardType(), is("BF01"));
        assertThat(nh.getOriginatingStationId(), is("U21SOO90"));
        assertThat(nh.getFileBackgroundColour().getRed(), is((byte) 0));
        assertThat(nh.getFileBackgroundColour().getGreen(), is((byte) 0));
        assertThat(nh.getFileBackgroundColour().getBlue(), is((byte) 0));
        assertThat(nh.getFileDateTime(), notNullValue());
        assertThat(nh.getOriginatorsName(), is("W.TEMPEL"));
        assertThat(nh.getOriginatorsPhoneNumber(), is("44 1480 84 5611"));
        assertThat(nh.getFileSecurityMetadata().getSecurityClassification(), is(SecurityClassification.UNCLASSIFIED));
        assertThat(nh.getFileSecurityMetadata().getSecurityClassificationSystem(), is("AB"));
        assertThat(nh.getFileSecurityMetadata().getCodewords(), is("ABCDEFGHIJK"));
        assertThat(nh.getFileSecurityMetadata().getControlAndHandling(), is("AB"));
        assertThat(nh.getFileSecurityMetadata().getReleaseInstructions(), is("01234567890123456789"));
        assertThat(nh.getFileSecurityMetadata().getDeclassificationType(), is("DD"));
        assertThat(nh.getFileSecurityMetadata().getDeclassificationDate(), is("20160101"));
        assertThat(nh.getFileSecurityMetadata().getDeclassificationExemption(), is("abcd"));
        assertThat(nh.getFileSecurityMetadata().getDowngrade(), is("S"));
        assertThat(nh.getFileSecurityMetadata().getDowngradeDate(), is("20160202"));
        assertThat(nh.getFileSecurityMetadata().getClassificationText(), is("classtext"));
        assertThat(nh.getFileSecurityMetadata().getClassificationAuthorityType(), is("O"));
        assertThat(nh.getFileSecurityMetadata().getClassificationAuthority(), is("MyAuthority"));
        assertThat(nh.getFileSecurityMetadata().getClassificationReason(), is("A"));
        assertThat(nh.getFileSecurityMetadata().getSecuritySourceDate(), is("20160303"));
        assertThat(nh.getFileSecurityMetadata().getSecurityControlNumber(), is("012345678901234"));
        assertThat(nh.getFileSecurityMetadata().getFileCopyNumber(), is("99999"));
        assertThat(nh.getFileSecurityMetadata().getFileNumberOfCopies(), is("99999"));
    });
    chipNitfSegmentFlow.forEachImageSegment(imageSegment1 -> {
        assertThat(imageSegment1.getImageCoordinates().getCoordinate00().getLongitude(), closeTo(22, 0.01));
        assertThat(imageSegment1.getImageCoordinates().getCoordinate00().getLatitude(), closeTo(18, 0.01));
        assertThat(imageSegment1.getImageCoordinates().getCoordinate0MaxCol().getLongitude(), closeTo(38, 0.01));
        assertThat(imageSegment1.getImageCoordinates().getCoordinate0MaxCol().getLatitude(), closeTo(18, 0.01));
        assertThat(imageSegment1.getImageCoordinates().getCoordinateMaxRowMaxCol().getLongitude(), closeTo(38, 0.01));
        assertThat(imageSegment1.getImageCoordinates().getCoordinateMaxRowMaxCol().getLatitude(), closeTo(2, 0.01));
        assertThat(imageSegment1.getImageCoordinates().getCoordinateMaxRow0().getLongitude(), closeTo(22, 0.01));
        assertThat(imageSegment1.getImageCoordinates().getCoordinateMaxRow0().getLatitude(), closeTo(2, 0.01));
        assertThat(imageSegment1.getNumberOfColumns(), is((long) chipWidth));
        assertThat(imageSegment1.getNumberOfRows(), is((long) chipHeight));
        assertThat(imageSegment1.getImageCategory(), is(ImageCategory.UNKNOWN));
        assertThat(imageSegment1.getImageComments(), is(Collections.singletonList("MyComment")));
        assertThat(imageSegment1.getIdentifier(), is("0123456789"));
        assertThat(imageSegment1.getImageIdentifier2(), is("abc"));
        assertThat(imageSegment1.getImageMagnification(), is("1.0 "));
        try {
            assertThat(imageSegment1.getImageTargetId().textValue(), is(new TargetIdImpl("                 ").textValue()));
        } catch (NitfFormatException e) {
            fail(e.getMessage());
        }
        assertThat(imageSegment1.getImageSource(), is(""));
        assertThat(imageSegment1.getImageDateTime().getSourceString(), is(dateTime.getSourceString()));
        assertThat(imageSegment1.getImageRepresentation(), is(ImageRepresentation.RGBTRUECOLOUR));
    });
}
Also used : ImageSegment(org.codice.imaging.nitf.core.image.ImageSegment) TargetIdImpl(org.codice.imaging.nitf.core.image.impl.TargetIdImpl) NitfFormatException(org.codice.imaging.nitf.core.common.NitfFormatException) NitfSegmentsFlow(org.codice.imaging.nitf.fluent.NitfSegmentsFlow) NitfParserInputFlowImpl(org.codice.imaging.nitf.fluent.impl.NitfParserInputFlowImpl) BinaryContent(ddf.catalog.data.BinaryContent) FileSecurityMetadata(org.codice.imaging.nitf.core.security.FileSecurityMetadata) BufferedImage(java.awt.image.BufferedImage) DateTime(org.codice.imaging.nitf.core.common.DateTime) DataSource(org.codice.imaging.nitf.core.DataSource) NitfSegmentsFlowImpl(org.codice.imaging.nitf.fluent.impl.NitfSegmentsFlowImpl) NitfHeader(org.codice.imaging.nitf.core.header.NitfHeader) ImageCoordinates(org.codice.imaging.nitf.core.image.ImageCoordinates) SecurityMetadata(org.codice.imaging.nitf.core.security.SecurityMetadata) FileSecurityMetadata(org.codice.imaging.nitf.core.security.FileSecurityMetadata) Test(org.junit.Test)

Example 4 with TargetIdImpl

use of org.codice.imaging.nitf.core.image.impl.TargetIdImpl in project alliance by codice.

the class TreUtilityTest method createImageSegment.

public static ImageSegment createImageSegment(DateTime imageDateTime) {
    SecurityMetadata securityMetadata = createSecurityMetadata();
    ImageBand imageBand = createImageBand();
    ImageSegment imageSegment = mock(ImageSegment.class);
    TreCollection treCollection = new TreCollectionImpl();
    when(imageSegment.getFileType()).thenReturn(FileType.NITF_TWO_ONE);
    when(imageSegment.getNumBands()).thenReturn(3);
    when(imageSegment.getActualBitsPerPixelPerBand()).thenReturn(8);
    when(imageSegment.getIdentifier()).thenReturn("12345");
    when(imageSegment.getImageDateTime()).thenReturn(imageDateTime);
    when(imageSegment.getImageTargetId()).thenReturn(new TargetIdImpl());
    when(imageSegment.getImageIdentifier2()).thenReturn("");
    when(imageSegment.getSecurityMetadata()).thenReturn(securityMetadata);
    when(imageSegment.getImageSource()).thenReturn("");
    when(imageSegment.getNumberOfRows()).thenReturn(2048L);
    when(imageSegment.getNumberOfColumns()).thenReturn(2048L);
    when(imageSegment.getPixelValueType()).thenReturn(PixelValueType.INTEGER);
    when(imageSegment.getImageRepresentation()).thenReturn(ImageRepresentation.RGBTRUECOLOUR);
    when(imageSegment.getImageCategory()).thenReturn(ImageCategory.MULTISPECTRAL);
    when(imageSegment.getActualBitsPerPixelPerBand()).thenReturn(8);
    when(imageSegment.getPixelJustification()).thenReturn(PixelJustification.LEFT);
    when(imageSegment.getImageCoordinatesRepresentation()).thenReturn(ImageCoordinatesRepresentation.NONE);
    when(imageSegment.getImageCompression()).thenReturn(ImageCompression.NOTCOMPRESSED);
    when(imageSegment.getImageBandZeroBase(anyInt())).thenReturn(imageBand);
    when(imageSegment.getImageMode()).thenReturn(ImageMode.BANDSEQUENTIAL);
    when(imageSegment.getNumberOfBlocksPerRow()).thenReturn(4);
    when(imageSegment.getNumberOfBlocksPerColumn()).thenReturn(4);
    when(imageSegment.getNumberOfPixelsPerBlockHorizontal()).thenReturn(512L);
    when(imageSegment.getNumberOfPixelsPerBlockVertical()).thenReturn(512L);
    when(imageSegment.getImageDisplayLevel()).thenReturn(1);
    when(imageSegment.getAttachmentLevel()).thenReturn(2);
    when(imageSegment.getImageLocationRow()).thenReturn(0);
    when(imageSegment.getImageLocationColumn()).thenReturn(0);
    when(imageSegment.getImageMagnification()).thenReturn("1.00");
    when(imageSegment.getTREsRawStructure()).thenReturn(treCollection);
    return imageSegment;
}
Also used : ImageSegment(org.codice.imaging.nitf.core.image.ImageSegment) ImageBand(org.codice.imaging.nitf.core.image.ImageBand) TargetIdImpl(org.codice.imaging.nitf.core.image.impl.TargetIdImpl) TreCollectionImpl(org.codice.imaging.nitf.core.tre.impl.TreCollectionImpl) SecurityMetadata(org.codice.imaging.nitf.core.security.SecurityMetadata) FileSecurityMetadata(org.codice.imaging.nitf.core.security.FileSecurityMetadata) TreCollection(org.codice.imaging.nitf.core.tre.TreCollection)

Aggregations

ImageSegment (org.codice.imaging.nitf.core.image.ImageSegment)4 TargetIdImpl (org.codice.imaging.nitf.core.image.impl.TargetIdImpl)4 FileSecurityMetadata (org.codice.imaging.nitf.core.security.FileSecurityMetadata)3 SecurityMetadata (org.codice.imaging.nitf.core.security.SecurityMetadata)3 BinaryContent (ddf.catalog.data.BinaryContent)2 BufferedImage (java.awt.image.BufferedImage)2 DataSource (org.codice.imaging.nitf.core.DataSource)2 DateTime (org.codice.imaging.nitf.core.common.DateTime)2 NitfFormatException (org.codice.imaging.nitf.core.common.NitfFormatException)2 NitfHeader (org.codice.imaging.nitf.core.header.NitfHeader)2 ImageCoordinates (org.codice.imaging.nitf.core.image.ImageCoordinates)2 TreCollectionImpl (org.codice.imaging.nitf.core.tre.impl.TreCollectionImpl)2 NitfSegmentsFlow (org.codice.imaging.nitf.fluent.NitfSegmentsFlow)2 NitfParserInputFlowImpl (org.codice.imaging.nitf.fluent.impl.NitfParserInputFlowImpl)2 NitfSegmentsFlowImpl (org.codice.imaging.nitf.fluent.impl.NitfSegmentsFlowImpl)2 Test (org.junit.Test)2 ImageBand (org.codice.imaging.nitf.core.image.ImageBand)1 TreCollection (org.codice.imaging.nitf.core.tre.TreCollection)1