@Override public LineProcessor execute(final ExecutionContext context, final LineProcessor output) { final UniqArguments args = getArguments(context); // input from file? if (args.isFileSet()) { final FileInput input = new FileInput(args.getFile()); return getFileInputProcessor(Collections.singletonList(input), context, output, args); } else if (args.isPathSet()) { final List<File> files = FileUtil.expandFiles(context.getCurrentDirectory(), args.getPath()); final List<FileInput> inputs = FileInput.multiple(files); return getFileInputProcessor(inputs, context, output, args); } // no, from standard input return getStandardInputProcessor(context, output, args); }
private LineProcessor getStandardInputProcessor( ExecutionContext context, LineProcessor output, UniqArguments args) { if (args.isGlobal()) { if (args.isUniqueOnly()) { return new GlobalProcessor.UniqueOnly(this, context, output); } else if (args.isDuplicatedOnly()) { return new GlobalProcessor.DuplicateOnly(this, context, output); } else if (args.isCount()) { return new GlobalProcessor.Count(this, context, output); } return new GlobalProcessor.Normal(this, context, output); } else { if (args.isUniqueOnly()) { return new AdjacentProcessor.UniqueOnly(this, context, output); } else if (args.isDuplicatedOnly()) { return new AdjacentProcessor.DuplicateOnly(this, context, output); } else if (args.isCount()) { return new AdjacentProcessor.Count(this, context, output); } return new AdjacentProcessor.Normal(this, context, output); } }