code: public static String getCMDKey(final MetaData columnMD, final String line) {
          if (!columnMD.isAnyRecordFormatSpecified()) {
              // no <RECORD> elements were specified for this parse, just return the
              // detail id
              return FPConstants.DETAIL_ID;
          }
          final Iterator<Entry<String, XMLRecordElement>> mapEntries = columnMD.xmlRecordIterator();
          // loop through the XMLRecordElement objects and see if we need a
          // different MD object
          while (mapEntries.hasNext()) {
              final Entry<String, XMLRecordElement> entry = mapEntries.next();
              final XMLRecordElement recordXMLElement = entry.getValue();
  
              if (recordXMLElement.getEndPositition() > line.length()) {
                  // make sure our substring is not going to fail
                  continue;
              }
              final int subfrm = recordXMLElement.getStartPosition() - 1; // convert
              // to 0
              // based
              final int subto = recordXMLElement.getEndPositition();
              if (line.substring(subfrm, subto).equals(recordXMLElement.getIndicator())) {
                  // we found the MD object we want to return
                  return entry.getKey();
              }
  
          }
  
          // must be a detail line
          return FPConstants.DETAIL_ID;
      }
docs: Returns the key to the list of ColumnMetaData objects. Returns the
  correct MetaData per the mapping file and the data contained on the line
  
  
  @param columnMD
  @param line
  @return List - ColumMetaData