/**
  * 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16, 16 (^-separated)
  * rec_id,given_name,surname,street_number,address_1,address_2,suburb,postcode,state,date_of_birth,age,phone_number,soc_sec_id,blocking_number,gender(M/F/O),race,account,id-seq
  */
 private void getPerson(int lineIndex, String line) throws ParseException {
   String[] fields = new String[MAX_FIELD_COUNT];
   int length = line.length();
   int begin = 0;
   int end = 0;
   int fieldIndex = 0;
   while (end < length) {
     while (end < length - 1 && line.charAt(end) != ',') {
       end++;
     }
     if (end == length - 1) {
       break;
     }
     fields[fieldIndex++] = line.substring(begin, end);
     end++;
     begin = end;
   }
   fields[fieldIndex] = line.substring(begin, end + 1);
   if (isPopulatedField(fields[16])) {
     log.debug("Extracted an account number of " + fields[16]);
     PersonIdentifier id = extractAccountIdentifier(fields[16]);
     log.debug("We have an ID of " + id);
     log.debug("Will set the account number to: " + String.format("%07d", lineIndex));
     id.setIdentifier(String.format("%07d", lineIndex));
     outputLine(fields, id);
   }
 }
 private PersonIdentifier extractAccountIdentifier(String accountId) {
   StringTokenizer idTokenizer = new StringTokenizer(accountId, "&");
   int count = 0;
   PersonIdentifier id = new PersonIdentifier();
   while (idTokenizer.hasMoreTokens()) {
     String field = idTokenizer.nextToken();
     switch (count) {
       case 0:
         id.setIdentifier(field);
         break;
       case 1:
         id.setNamespaceIdentifier(field);
         break;
       case 2:
         id.setUniversalIdentifier(field);
         break;
       case 3:
         id.setUniversalIdentifierTypeCode(field);
         break;
     }
     count++;
   }
   return id;
 }