use of org.codice.imaging.nitf.core.security.SecurityMetadata in project alliance by codice.
the class CatalogOutputAdapterTest method getImageSecurityMetadata.
private SecurityMetadata getImageSecurityMetadata() {
SecurityMetadata imageSecurityMetadata = mock(SecurityMetadata.class);
when(imageSecurityMetadata.getFileType()).thenReturn(FileType.NITF_TWO_ONE);
when(imageSecurityMetadata.getSecurityClassification()).thenReturn(SecurityClassification.UNCLASSIFIED);
when(imageSecurityMetadata.getSecurityClassificationSystem()).thenReturn("");
when(imageSecurityMetadata.getCodewords()).thenReturn("");
when(imageSecurityMetadata.getControlAndHandling()).thenReturn("");
when(imageSecurityMetadata.getReleaseInstructions()).thenReturn("");
when(imageSecurityMetadata.getDeclassificationType()).thenReturn("");
when(imageSecurityMetadata.getDeclassificationDate()).thenReturn("");
when(imageSecurityMetadata.getDeclassificationExemption()).thenReturn("");
when(imageSecurityMetadata.getDowngrade()).thenReturn("");
when(imageSecurityMetadata.getDowngradeDate()).thenReturn("");
when(imageSecurityMetadata.getDowngradeDateOrSpecialCase()).thenReturn("");
when(imageSecurityMetadata.getDowngradeEvent()).thenReturn("");
when(imageSecurityMetadata.getClassificationText()).thenReturn("");
when(imageSecurityMetadata.getClassificationAuthorityType()).thenReturn("");
when(imageSecurityMetadata.getClassificationAuthority()).thenReturn("");
when(imageSecurityMetadata.getClassificationReason()).thenReturn("");
when(imageSecurityMetadata.getSecuritySourceDate()).thenReturn("");
when(imageSecurityMetadata.getSecurityControlNumber()).thenReturn("");
when(imageSecurityMetadata.hasDowngradeMagicValue()).thenReturn(false);
when(imageSecurityMetadata.getSerialisedLength()).thenReturn(0L);
return imageSecurityMetadata;
}
use of org.codice.imaging.nitf.core.security.SecurityMetadata 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));
});
}
use of org.codice.imaging.nitf.core.security.SecurityMetadata in project alliance by codice.
the class CatalogOutputAdapterTest method createGenericNitfSegmentFlow.
private NitfSegmentsFlow createGenericNitfSegmentFlow(int originalWidth, int originalHeight) throws NitfFormatException, NoSuchMethodException, InstantiationException, IllegalAccessException, InvocationTargetException {
DateTime dateTime = DateTimeImpl.getNitfDateTimeForNow();
FileSecurityMetadata fileSecurityMetadata = createFileSecurityMetadata();
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);
return constructor.newInstance(dataSource, (Runnable) () -> {
});
}
use of org.codice.imaging.nitf.core.security.SecurityMetadata 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));
});
}
use of org.codice.imaging.nitf.core.security.SecurityMetadata 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;
}
Aggregations