Coverage Report - org.galagosearch.core.index.ManifestWriter
 
Classes in this File Line Coverage Branch Coverage Complexity
ManifestWriter
21%
6/28
25%
3/12
0
 
 1  
 // BSD License (http://www.galagosearch.org/license)
 2  
 
 3  
 package org.galagosearch.core.index;
 4  
 
 5  
 import org.galagosearch.tupleflow.InputClass;
 6  
 import org.galagosearch.tupleflow.TupleFlowParameters;
 7  
 import org.galagosearch.tupleflow.Parameters;
 8  
 import org.galagosearch.tupleflow.Processor;
 9  
 import org.galagosearch.tupleflow.execution.ErrorHandler;
 10  
 import org.galagosearch.tupleflow.execution.Verification;
 11  
 import org.galagosearch.tupleflow.types.XMLFragment;
 12  
 import java.io.File;
 13  
 import java.io.IOException;
 14  
 
 15  
 /**
 16  
  *    
 17  
  * @author trevor
 18  
  */
 19  
 @InputClass(className = "org.galagosearch.tupleflow.types.XMLFragment")
 20  0
 public class ManifestWriter implements Processor<XMLFragment> {
 21  
     String filename;
 22  
     Parameters result;
 23  
 
 24  
     /** Creates a new instance of ManifestWriter */
 25  0
     public ManifestWriter(TupleFlowParameters p) throws IOException {
 26  0
         if (p.getXML().containsKey("xml")) {
 27  0
             Parameters.Value value = p.getXML().value().map().get("xml").get(0);
 28  0
             result = new Parameters(value);
 29  0
         } else {
 30  0
             result = new Parameters();
 31  
         }
 32  
 
 33  0
         filename = p.getXML().get("filename");
 34  0
     }
 35  
 
 36  
     public void process(XMLFragment object) throws IOException {
 37  0
         result.add(object.nodePath, object.innerText);
 38  0
     }
 39  
 
 40  
     public void close() throws IOException {
 41  0
         File f = new File(filename);
 42  0
         String parent = f.getParent();
 43  
 
 44  
         // make parent directories
 45  0
         if (parent != null) {
 46  0
             new File(parent).mkdirs();
 47  
         }
 48  0
         result.write(filename);
 49  0
     }
 50  
 
 51  
     public static void verify(TupleFlowParameters parameters, ErrorHandler handler) {
 52  20
         if (!parameters.getXML().containsKey("filename")) {
 53  0
             handler.addError("ManifestWriter requires a 'filename' parameter.");
 54  0
             return;
 55  
         }
 56  
 
 57  20
         File f = new File(parameters.getXML().get("filename"));
 58  
 
 59  20
         if (f.isFile() && f.canWrite()) {
 60  0
             return; // good news
 61  
         }
 62  20
         if (f.isDirectory()) {
 63  0
             handler.addError("Pathname " + f.toString() + " exists, and it is a directory, but " +
 64  
                     "ManifestWriter would like to write a file there.");
 65  0
             return;
 66  
         }
 67  
 
 68  
         // this will search upwards and verify that we can make
 69  
         // the necessary directory structure to store this file.
 70  20
         Verification.requireWriteableFile(f.toString(), handler);
 71  20
     }
 72  
 }