【问题标题】:File validation using Observables RxJava使用 Observables RxJava 进行文件验证
【发布时间】:2016-09-05 14:36:05
【问题描述】:

我正在尝试使用 Rxjava 解决经典的文件验证过程。我有一个带有普通标题的 CSV 文件和另一个标题列表,我需要验证它们是否属于那些选择的数据类型或值是否为空。

我已经使用普通的 java 实现了这个,但我想让我的验证代码更具反应性。这就是我到目前为止所取得的成就。

String filePath = "/home/user/Documents/test.csv";
Path path = Paths.get(filePath);
Map<String,String> headerMap = new HashMap<>();
headerMap.put("feild11","String");
headerMap.put("feild10","String");
headerMap.put("feild9","Date");
headerMap.put("feild8","NOT-NULL");

// An map observalble which defines my valdiation rules
Observable<Map<String,String>> fieldsToValidae = Observable.just(headerMap);

Observable<String> fileObservalbe = RxFileReader.from(path);
// An observalbe which gives a list of headers
Observable<String> headers = fileObservalbe.first();

// An observalbe which gives me list of feild values
Observable<String> feildValues = fileObservalbe.skip(1);

这里我有 3 个 observables 要组合并在第一个实例(行)中验证验证失败。

这是我想使用的示例数据:

标题:

名字|姓氏|性别|出生日期|feild1|feild2|feild3|feild4|feild5|feild6|feild7|feild8|feild9|feild10|feild11

价值观:

Prakash|joshi|M|11/25/2015|a fdf f|adf |saf |asf|dfadf |sadf | |asdf |asdfsdf|asdf|dfsfcded Prakash|joshi|M|10/25/2015|a fdf f|adf |saf |asf|dfadf |sadf | |asdf |asdfsdf|asdf|dfsfcded Prakash|joshi|M|10/25/2015|a fdf f|adf |saf |asf|dfadf |sadf | |asdf |asdfsdf|asdf|dfsfcded

我几乎被困在这一点上,任何人都可以帮助或指出正确的方向吗?

【问题讨论】:

    标签: java rx-java reactive-programming


    【解决方案1】:

    使用 combineLatest 运算符,传递内部标头和字段(据我所知,您将发出一个标头和许多字段),并在函数中传递逻辑以进行数据验证

    Observable<Result> validationResultObservable = Observable.combineLatest(headers, feildValues, new Func2<String, String, Result>() {
                @Override
                public Result call(String header, String field) {
                    // header always same
                    // field always new
                    // validate, create same kind of Result object or just a boolean
                    Log.i("TEST_IT", "validationResultObservable emitted: " + header + " - " + field);
                    return new Result(header, field);
                }
            });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-02
      • 2019-10-21
      • 2019-08-13
      • 2020-06-17
      • 1970-01-01
      • 2016-02-20
      • 2017-09-07
      相关资源
      最近更新 更多