// PipelineDemo3.java import java.io.*; class PipelineDemo3 { public static void main(String[] args) { if (args.length < 1) { System.err.println("No args."); System.exit(1); } String filename = args[0]; // input/output devices FileIn fileIn = new FileIn(filename); FileOut fileOut1 = new FileOut("word.out.txt"); FileOut fileOut2 = new FileOut("toupper.out.txt"); StdOut stdOut = new StdOut(); // pipes Pipe pipe1 = new Pipe(); Pipe pipe2 = new Pipe(); Pipe pipe3 = new Pipe(); Pipe pipe4 = new Pipe(); // filters Filter word = new Word(fileIn, pipe1); Filter2 dup1 = new Dup(pipe1, pipe2, fileOut1); Filter2 dup2 = new Dup(pipe2, pipe3, pipe4); Filter tolower = new Tolower(pipe3, stdOut); Filter toupper = new Toupper(pipe4, fileOut2); // start pipeline word.start(); dup1.start(); dup2.start(); tolower.start(); toupper.start(); } }