/* Copyright (C) 2001, 2007 United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All Rights Reserved. */ package gov.nasa.worldwind.formats.nitfs; import gov.nasa.worldwind.util.StringUtil; /** * @author Lado Garakanidze * @version $Id: NITFSFileHeader.java 2422 2007-07-25 23:07:49Z tgaskins $ */ public class NITFSFileHeader { private String headerID; private String version; private String specialType; private int headerLength; private int fileLength; private boolean isVersion0210; private short complexityLevel ; private String originationStationId; private String dateTime; private String title ; private String FSCLAS ; private String FSCLSY ; private String FSCODE ; private String FSCTLH ; private String FSREL ; private String FSDCTP ; private String FSDCDT ; private String FSDCXM ; private String FSDG ; private String FSDGDT ; private String FSCLTX ; private String FSCATP ; private String FSCAUT ; private String FSCRSN ; private String FSSRDT ; private String FSCTLN ; private String FSDWNG ; private String FSDEVT ; private String FSCOP ; private String FSCPYS ; private String ENCRYP ; private String FBKGC ; private String ONAME ; private String OPHONE ; public NITFSFileHeader(java.nio.ByteBuffer buffer) { parseFileHeaderInfo(buffer); } private void parseFileHeaderInfo(java.nio.ByteBuffer buffer) { this.headerID = NITFSUtil.getString(buffer, 0, 4); this.version = NITFSUtil.getString(buffer, 5); this.isVersion0210 = StringUtil.Equals("02.10", version); this.complexityLevel = NITFSUtil.getShortNumeric(buffer, 2); this.specialType = NITFSUtil.getString(buffer, 4); // offset 11, size 4 this.originationStationId = NITFSUtil.getString(buffer, 10); // offset 15, size 10 this.dateTime = NITFSUtil.getString(buffer, 14); // offset 25, size 14 this.title = NITFSUtil.getString(buffer, 80); // offset 39, size 80 this.FSCLAS = NITFSUtil.getString(buffer, 1); // offset 119, size 1 this.FSCLSY = (isVersion0210 ? NITFSUtil.getString(buffer, 2) : StringUtil.EMPTY); // offset 120, size 2 this.FSCODE = NITFSUtil.getString(buffer, isVersion0210 ? 11 : 40); this.FSCTLH = NITFSUtil.getString(buffer, isVersion0210 ? 2 : 40); this.FSREL = NITFSUtil.getString(buffer, isVersion0210 ? 20 : 40); this.FSDCTP = (isVersion0210 ? NITFSUtil.getString(buffer, 2) : StringUtil.EMPTY); this.FSDCDT = (isVersion0210 ? NITFSUtil.getString(buffer, 8) : StringUtil.EMPTY); // offset 157/ this.FSDCXM = (isVersion0210 ? NITFSUtil.getString(buffer, 4) : StringUtil.EMPTY); // offset 165/ this.FSDG = (isVersion0210 ? NITFSUtil.getString(buffer, 1) : StringUtil.EMPTY); // offset 169/ this.FSDGDT = (isVersion0210 ? NITFSUtil.getString(buffer, 8) : StringUtil.EMPTY); // oofset 170/ this.FSCLTX = (isVersion0210 ? NITFSUtil.getString(buffer, 43) : StringUtil.EMPTY); // offset 178/ this.FSCATP = (isVersion0210 ? NITFSUtil.getString(buffer, 1) : StringUtil.EMPTY); // offset 221/ this.FSCAUT = NITFSUtil.getString(buffer, isVersion0210 ? 40 : 20); // offset 222/240 this.FSCRSN = (isVersion0210 ? NITFSUtil.getString(buffer, 1) : StringUtil.EMPTY); // offset 262/ this.FSSRDT = (isVersion0210 ? NITFSUtil.getString(buffer, 8) : StringUtil.EMPTY); // offset 263/ this.FSCTLN = NITFSUtil.getString(buffer, isVersion0210 ? 15 : 20); // offset 271/260 this.FSDWNG = (isVersion0210) ? StringUtil.EMPTY : NITFSUtil.getString(buffer, 6); // offset /280 this.FSDEVT = (!isVersion0210 && StringUtil.Equals("999998", FSDWNG)) // offset /286 ? NITFSUtil.getString(buffer, 40) : StringUtil.EMPTY; this.FSCOP = NITFSUtil.getString(buffer, 5); // offset 286/+40 this.FSCPYS = NITFSUtil.getString(buffer, 5); // offset 291/+40 this.ENCRYP = NITFSUtil.getString(buffer, 1); // offset 296/+40 this.FBKGC = (isVersion0210 ? NITFSUtil.getString(buffer, 297, 3) : StringUtil.EMPTY); // offset 297/ this.ONAME = NITFSUtil.getString(buffer, isVersion0210 ? 24 : 27); // offset 300/297(+40) this.OPHONE = NITFSUtil.getString(buffer, 18); // offset 324(+40) this.fileLength = NITFSUtil.getNumeric(buffer, 12); // offset 342(+40) this.headerLength = NITFSUtil.getNumeric(buffer, 6); // offset 352(+40) } public String getHeaderID() { return this.headerID; } public String getVersion() { return this.version; } public boolean isVersion0210() { return this.isVersion0210; } public short getComplexityLevel() { return this.complexityLevel; } public String getSpecialType() { return this.specialType; } public String getOriginationStationId() { return this.originationStationId; } public String getDateTime() { return this.dateTime; } public String getTitle() { return this.title; } public int getHeaderLength() { return this.headerLength; } public String getFSCLAS() { return this.FSCLAS; } public String getFSCLSY() { return this.FSCLSY; } public String getFSCODE() { return this.FSCODE; } public String getFSCTLH() { return this.FSCTLH; } public String getFSREL() { return this.FSREL; } public String getFSDCTP() { return this.FSDCTP; } public String getFSDCDT() { return this.FSDCDT; } public String getFSDCXM() { return this.FSDCXM; } public String getFSDG() { return this.FSDG; } public String getFSDGDT() { return this.FSDGDT; } public String getFSCLTX() { return this.FSCLTX; } public String getFSCATP() { return this.FSCATP; } public String getFSCAUT() { return this.FSCAUT; } public String getFSCRSN() { return this.FSCRSN; } public String getFSSRDT() { return this.FSSRDT; } public String getFSCTLN() { return this.FSCTLN; } public String getFSDWNG() { return this.FSDWNG; } public String getFSDEVT() { return this.FSDEVT; } public String getFSCOP() { return this.FSCOP; } public String getFSCPYS() { return this.FSCPYS; } public String getENCRYP() { return this.ENCRYP; } public String getFBKGC() { return this.FBKGC; } public String getONAME() { return this.ONAME; } public String getOPHONE() { return this.OPHONE; } public int getFileLength() { return this.fileLength; } }