Coverage Report - org.galagosearch.tupleflow.FileSource
 
Classes in this File Line Coverage Branch Coverage Complexity
FileSource
0%
0/50
0%
0/34
0
 
 1  
 // BSD License (http://www.galagosearch.org/license)
 2  
 package org.galagosearch.tupleflow;
 3  
 
 4  
 import java.io.File;
 5  
 import java.io.IOException;
 6  
 import java.util.List;
 7  
 import org.galagosearch.tupleflow.Parameters.Value;
 8  
 import org.galagosearch.tupleflow.execution.ErrorHandler;
 9  
 import org.galagosearch.tupleflow.types.FileName;
 10  
 
 11  
 /**
 12  
  *
 13  
  * @author trevor
 14  
  */
 15  
 @OutputClass(className = "org.galagosearch.tupleflow.types.FileName", order = {"+filename"})
 16  
 public class FileSource implements ExNihiloSource<FileName> {
 17  
     TupleFlowParameters parameters;
 18  
     public Processor<FileName> processor;
 19  
 
 20  
     /** Creates a new instance of FileSource */
 21  0
     public FileSource(TupleFlowParameters parameters) {
 22  0
         this.parameters = parameters;
 23  0
     }
 24  
 
 25  
     private void processDirectory(File root) throws IOException {
 26  0
         for (File file : root.listFiles()) {
 27  0
             if (file.isHidden()) {
 28  0
                 continue;
 29  
             }
 30  0
             if (file.isDirectory()) {
 31  0
                 processDirectory(file);
 32  
             } else {
 33  0
                 processor.process(new FileName(file.toString()));
 34  
             }
 35  
         }
 36  0
     }
 37  
 
 38  
     public void run() throws IOException {
 39  0
         if (parameters.getXML().containsKey("directory")) {
 40  0
             List<Value> directories = parameters.getXML().list("directory");
 41  
 
 42  0
             for (Value directory : directories) {
 43  0
                 File directoryFile = new File(directory.toString());
 44  0
                 processDirectory(directoryFile);
 45  0
             }
 46  0
         } else if (parameters.getXML().containsKey("filename")) {
 47  0
             List<Value> files = parameters.getXML().list("filename");
 48  
 
 49  0
             for (Value file : files) {
 50  0
                 String filename = file.toString();
 51  0
                 processor.process(new FileName(filename));
 52  0
             }
 53  
         }
 54  
 
 55  0
         processor.close();
 56  0
     }
 57  
 
 58  
     public void close() throws IOException {
 59  0
         processor.close();
 60  0
     }
 61  
 
 62  
     public void setProcessor(Step nextStage) throws IncompatibleProcessorException {
 63  0
         Linkage.link(this, nextStage);
 64  0
     }
 65  
 
 66  
     public static void verify(TupleFlowParameters parameters, ErrorHandler handler) {
 67  0
         if (!(parameters.getXML().containsKey("directory") || parameters.getXML().containsKey("filename"))) {
 68  0
             handler.addError("FileSource requires either at least one directory or filename parameter.");
 69  0
             return;
 70  
         }
 71  
 
 72  0
         if (parameters.getXML().containsKey("directory")) {
 73  0
             List<Value> directories = parameters.getXML().list("directory");
 74  
 
 75  0
             for (Value directory : directories) {
 76  0
                 File directoryFile = new File(directory.toString());
 77  
 
 78  0
                 if (directoryFile.exists() == false) {
 79  0
                     handler.addError("Directory " + directoryFile.toString() + " doesn't exist.");
 80  0
                 } else if (directoryFile.isDirectory() == false) {
 81  0
                     handler.addError(directoryFile.toString() + " exists, but it isn't a directory.");
 82  
                 }
 83  0
             }
 84  0
         } else if (parameters.getXML().containsKey("filename")) {
 85  0
             List<Value> files = parameters.getXML().list("filename");
 86  
 
 87  0
             for (Value file : files) {
 88  0
                 File f = new File(file.toString());
 89  
 
 90  0
                 if (f.exists() == false) {
 91  0
                     handler.addError("File " + file.toString() + " doesn't exist.");
 92  0
                 } else if (f.isFile() == false) {
 93  0
                     handler.addError(file.toString() + " exists, but isn't a file.");
 94  
                 }
 95  0
             }
 96  
         }
 97  0
     }
 98  
 }