private void init(File file) throws IOException, CiraException {
      CSVReader reader = null;
      lineNum = 1;
      sdf = prepSdf("yyyy-MM-dd HH:mm:ss");
      try {
         reader = new CSVReader(new FileReader(file));
         items = new ArrayList<CiraRec>();
         totalAmount = new BigDecimal(0);
         int expectedItemCount = -1;
         BigDecimal expectedTotalAmount = null;
         String[] fields;
         while ((fields = reader.readNext()) != null) {
            switch (lineNum) {
               case 1:
               case 2:
               case 5:
                  //currently ignored
                  break;
               case 3:
                  expectedTotalAmount = parseExpectedTotal(fields);
                  break;
               case 4:
                  //TODO handle possible 65K error msg
                  expectedItemCount = parseExpectedItemCount(fields);
                  break;
               default:
                  CiraRec rec = parseRec(fields);
                  items.add(rec);
                  totalAmount = totalAmount.add(rec.getAmount());
                  break;
            }
            lineNum++;
         }
         if (!totalAmount.equals(expectedTotalAmount)) {
            throw new IllegalArgumentException("Stated total does not " +
                      "match the actual total of the line items.");
         }
         if (items.size() != expectedItemCount) {
            throw new IllegalArgumentException("Stated total item count " +
                      "does not match the actual count of line items.");
         }
      } finally {
         if (reader != null) {
            reader.close();
         }
      }
   }