protected DBMSEvent extractEventRowLevel(String firstData) throws InterruptedException, ExtractorException {
  DBMSEvent dbmsEvent=null;
  RowChangeData rowChangeData=new RowChangeData();
  OneRowChange oneRowChange=null;
  boolean first=true;
  if (!initialized)   throw new ExtractorException("Extractor not initialized");
  ArrayList<DBMSData> trx=new ArrayList<DBMSData>(128);
  while (true) {
    String data;
    if (first)     data=firstData;
 else     data=getNextOp();
    first=false;
    oneRowChange=parser.parse(data,lastSCN);
    if (oneRowChange == null) {
      trx.add(rowChangeData);
      dbmsEvent=new DBMSEvent(lastEventID,trx,new Timestamp(System.currentTimeMillis()));
      break;
    }
 else {
      rowChangeData.appendOneRowChange(oneRowChange);
    }
  }
  return dbmsEvent;
}

protected DBMSEvent extractEventRowLevel ( String firstData ) throws InterruptedException , ExtractorException { DBMSEvent dbmsEvent = null ; RowChangeData rowChangeData = new RowChangeData ( ) ; OneRowChange oneRowChange = null ; boolean first = true ; if ( ! initialized ) throw new ExtractorException ( "Extractor not initialized" ) ; ArrayList < DBMSData > trx = new ArrayList < DBMSData > ( 128 ) ; while ( true ) { String data ; if ( first ) data = firstData ; else data = getNextOp ( ) ; first = false ; oneRowChange = parser . parse ( data , lastSCN ) ; if ( oneRowChange == null ) { trx . add ( rowChangeData ) ; dbmsEvent = new DBMSEvent ( lastEventID , trx , new Timestamp ( System . currentTimeMillis ( ) ) ) ; break ; } else { rowChangeData . appendOneRowChange ( oneRowChange ) ; } } return dbmsEvent ; }
return the next row level event from received from dslisten .
