new feature: clickable error list

This commit is contained in:
Andreas Billmann
2015-12-07 22:41:59 +01:00
parent 873a880971
commit 11fb9b1094
13 changed files with 226 additions and 79 deletions

View File

@@ -28,7 +28,7 @@ package ninja.javafx.smartcsv.fx.table.model;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import ninja.javafx.smartcsv.validation.ValidationState;
import ninja.javafx.smartcsv.validation.ValidationError;
import ninja.javafx.smartcsv.validation.Validator;
/**
@@ -41,6 +41,7 @@ public class CSVModel {
private ObservableList<CSVRow> rows = FXCollections.observableArrayList();
private String[] header;
private String filepath;
private ObservableList<ValidationError> validationError = FXCollections.observableArrayList();
public CSVModel(String filepath) {
this.filepath = filepath;
@@ -71,6 +72,10 @@ public class CSVModel {
return rows;
}
public ObservableList<ValidationError> getValidationError() {
return validationError;
}
/**
* adds a new and empty row
* @return the new row
@@ -105,22 +110,37 @@ public class CSVModel {
* walks through the data and validates each value
*/
private void revalidate() {
validationError.clear();
if (header != null && validator != null) {
validator.isHeaderValid(header);
addValidationError(validator.isHeaderValid(header));
}
for (CSVRow row: rows) {
for (int lineNumber = 0; lineNumber < rows.size(); lineNumber++) {
CSVRow row = rows.get(lineNumber);
row.setValidator(validator);
for (String column: row.getColumns().keySet()) {
CSVValue value = row.getColumns().get(column).getValue();
value.setValidator(validator);
if (validator != null) {
value.setValid(validator.isValid(column, value.getValue()));
ValidationError validationError = validator.isValid(column, value.getValue(), lineNumber);
if (validationError != null) {
addValidationError(validationError);
value.setValidationError(validationError);
} else {
value.setValidationError(null);
}
} else {
value.setValid(new ValidationState());
value.setValidationError(null);
}
}
}
}
private void addValidationError(ValidationError validationError) {
if (validationError != null) {
this.validationError.add(validationError);
}
}
}

View File

@@ -28,7 +28,7 @@ package ninja.javafx.smartcsv.fx.table.model;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import ninja.javafx.smartcsv.validation.ValidationState;
import ninja.javafx.smartcsv.validation.ValidationError;
import ninja.javafx.smartcsv.validation.Validator;
/**
@@ -41,7 +41,7 @@ public class CSVValue {
private int rowNumber;
private String column;
private StringProperty value = new SimpleStringProperty();
private ValidationState valid = new ValidationState();
private ValidationError valid;
/**
* single value of a cell
@@ -89,7 +89,7 @@ public class CSVValue {
*/
public void setValue(String value) {
if (validator != null) {
valid = validator.isValid(column, value);
valid = validator.isValid(column, value, rowNumber);
}
this.value.set(value);
}
@@ -98,7 +98,7 @@ public class CSVValue {
* returns if the value is valid to the rules of the validator
* @return
*/
public ValidationState getValid() {
public ValidationError getValidationError() {
return valid;
}
@@ -106,7 +106,7 @@ public class CSVValue {
* sets the state if a value is valid or not
* @param valid the validation state
*/
protected void setValid(ValidationState valid) {
protected void setValidationError(ValidationError valid) {
this.valid = valid;
}
}