package example1.afw.jobflow;
import com.asakusafw.vocabulary.flow.Export;
import com.asakusafw.vocabulary.flow.FlowDescription;
import com.asakusafw.vocabulary.flow.Import;
import com.asakusafw.vocabulary.flow.In;
import com.asakusafw.vocabulary.flow.JobFlow;
import com.asakusafw.vocabulary.flow.Out;
import example1.afw.modelgen.dmdl.model.TextModel;
import example1.afw.modelgen.dmdl.model.WordCountModel;
import example1.afw.operator.WordCountOperatorFactory;
import example1.afw.operator.WordCountOperatorFactory.Count;
import example1.afw.operator.WordCountOperatorFactory.Split;
/**
* ジョブフロークラス
*/
@JobFlow(name = "wordcount")
public class WordCountJobFlow extends FlowDescription {
private In<TextModel> in;
private Out<WordCountModel> out;
public WordCountJobFlow(
@Import(name = "in", description = TextFromCsv.class) In<TextModel> in,
@Export(name = "out", description = WordCountToCsv.class) Out<WordCountModel> out) {
this.in = in;
this.out = out;
}
@Override
public void describe() {
WordCountOperatorFactory operators = new WordCountOperatorFactory();
Split split = operators.split(in);
Count count = operators.count(split.out);
out.add(count.out);
}
}