package com.isti.traceview.data.ims; import java.io.IOException; import java.text.ParseException; import org.apache.log4j.Logger; import com.isti.traceview.data.BufferedRandomAccessFile; public class CHK2 extends Block { private static final Logger logger = Logger.getLogger(CHK2.class); private int chksum; public CHK2(long startOffset){ super(startOffset); } public int getChkSum() { return chksum; } public void read(BufferedRandomAccessFile input) throws IMSFormatException, IOException, ParseException { logger.debug("Reading buffered random access file"); header = input.readLine(); if (!header.startsWith("CHK2")) { throw new IMSFormatException("Wrong check block header: " + header); } String[] lineParts = header.split("\\s+"); chksum = Integer.parseInt(lineParts[1].trim()); } public int checksum(DAT2 dat2) { int i_sample; int sample_value; int modulo; int checksum; int MODULO_VALUE = 100000000; checksum = 0; modulo = MODULO_VALUE; for (i_sample = 0; i_sample < dat2.getData().length; i_sample++) { /* check on sample value overflow */ sample_value = dat2.getData()[i_sample]; if (Math.abs(sample_value) >= modulo) { sample_value = sample_value - (sample_value / modulo) * modulo; } } return checksum; } }