private void readNotMissingEntry(DataSetRow dataRow,String[] row,int columnIndex,int rowIndex,final ColumnType columnType,Map<Integer,Set<Integer>> errorCells){
  try {
switch (columnType) {
case DATE:
      row[columnIndex]=Tools.formatDate(dataRow.getDate(columnIndex));
    break;
case DATETIME:
  row[columnIndex]=Tools.formatDateTime(dataRow.getDate(columnIndex));
break;
case TIME:
row[columnIndex]=Tools.formatTime(dataRow.getDate(columnIndex));
break;
case REAL:
row[columnIndex]=Tools.formatNumber(dataRow.getDouble(columnIndex));
break;
case INTEGER:
row[columnIndex]=Tools.formatIntegerIfPossible(Math.round(dataRow.getDouble(columnIndex)));
break;
case CATEGORICAL:
row[columnIndex]=DefaultPreview.shortenDisplayValue(dataRow.getString(columnIndex));
break;
case BINARY:
String value=dataRow.getString(columnIndex);
final Set<String> binaryEntries=binaryMapping.get(columnIndex);
if (binaryEntries.size() == 2 && !binaryEntries.contains(value)) {
throw new ParseException(ALREADY_TWO_BINARY_VALUES + binaryEntries.toString());
}
 else {
binaryEntries.add(value);
row[columnIndex]=DefaultPreview.shortenDisplayValue(value);
}
break;
default :
break;
}
}
 catch (ParseException e) {
row[columnIndex]=null;
String originalValue=null;
if (columnType != ColumnType.CATEGORICAL) {
try {
originalValue=dataRow.getString(columnIndex);
}
 catch (ParseException e1) {
originalValue=null;
}
}
parsingErrorList.add(new ParsingError(columnIndex,rowIndex,originalValue,e.getMessage()));
Set<Integer> errors=errorCells.get(columnIndex);
if (errors != null) {
errors.add(rowIndex);
}
 else {
Set<Integer> errorRows=new HashSet<>();
errorRows.add(rowIndex);
errorCells.put(columnIndex,errorRows);
}
}
}

private void readNotMissingEntry ( DataSetRow dataRow , String [ ] row , int columnIndex , int rowIndex , final ColumnType columnType , Map < Integer , Set < Integer > > errorCells ) { try { switch ( columnType ) { case DATE : row [ columnIndex ] = Tools . formatDate ( dataRow . getDate ( columnIndex ) ) ; break ; case DATETIME : row [ columnIndex ] = Tools . formatDateTime ( dataRow . getDate ( columnIndex ) ) ; break ; case TIME : row [ columnIndex ] = Tools . formatTime ( dataRow . getDate ( columnIndex ) ) ; break ; case REAL : row [ columnIndex ] = Tools . formatNumber ( dataRow . getDouble ( columnIndex ) ) ; break ; case INTEGER : row [ columnIndex ] = Tools . formatIntegerIfPossible ( Math . round ( dataRow . getDouble ( columnIndex ) ) ) ; break ; case CATEGORICAL : row [ columnIndex ] = DefaultPreview . shortenDisplayValue ( dataRow . getString ( columnIndex ) ) ; break ; case BINARY : String value = dataRow . getString ( columnIndex ) ; final Set < String > binaryEntries = binaryMapping . get ( columnIndex ) ; if ( binaryEntries . size ( ) == 2 && ! binaryEntries . contains ( value ) ) { throw new ParseException ( ALREADY_TWO_BINARY_VALUES + binaryEntries . toString ( ) ) ; } else { binaryEntries . add ( value ) ; row [ columnIndex ] = DefaultPreview . shortenDisplayValue ( value ) ; } break ; default : break ; } } catch ( ParseException e ) { row [ columnIndex ] = null ; String originalValue = null ; if ( columnType != ColumnType . CATEGORICAL ) { try { originalValue = dataRow . getString ( columnIndex ) ; } catch ( ParseException e1 ) { originalValue = null ; } } parsingErrorList . add ( new ParsingError ( columnIndex , rowIndex , originalValue , e . getMessage ( ) ) ) ; Set < Integer > errors = errorCells . get ( columnIndex ) ; if ( errors != null ) { errors . add ( rowIndex ) ; } else { Set < Integer > errorRows = new HashSet < > ( ) ; errorRows . add ( rowIndex ) ; errorCells . put ( columnIndex , errorRows ) ; } } }
reads the entry specified by columnindex from the datarow and stores it in the row array .
