Dateiverwaltung für die WebBox
ulrich@undisclosed
2020-05-04 d61a61bfa06aaa5c62cc137e059e17f921689e05
commit | author | age
631a88 1 package de.uhilger.filecms.api;
U 2
3 import java.io.BufferedReader;
4 import java.io.File;
5 import java.io.FileReader;
6 import java.io.IOException;
7 import java.util.Date;
8 import java.util.logging.Level;
9 import java.util.logging.Logger;
10
11 public class SuchApi extends Api {
12
2248cb 13   private static final Logger logger = Logger.getLogger(SuchApi.class.getName());
631a88 14
U 15 /**
16  * Dateien suchen
17  * 
18  * Suche von Dateien die einen gegebenen Suchbegriff irgendwo im Namen haben.
19  * Die Suche erfolgt ohne Beruecksichtigung von Gross- und Kleinschreibung, 
20  * 
21  * @param suchbegriff zu suchender Inhalt
22  * @param ablageort Ordner, in dem gesucht wird, einschl. Unterordner
23  * 
24  * http://localhost:8080/suche/api?c=de.uhilger.suche.api.SuchApi&m=dateiSuchen&p=wbx&p=/home/ulrich/work
25  *
26  */
27   public String dateiSuchen(String suchbegriff, String ablageort) {
28     ProcessBuilder builder = new ProcessBuilder("find", 
29             ablageort, "-iname", "*" + suchbegriff + "*");
30     return prozessAusfuehren(builder);
31   }
32   
33   /**
34    * grep -ril "javadoc"   /media/extmirror/wbx-data/cms
35    * http://localhost:8080/suche/api?c=de.uhilger.suche.api.SuchApi&m=inhaltSuchen&p=docker&p=/home/ulrich/work
36    * @return 
37    */
38   public String inhaltSuchen(String suchbegriff, String ablageort) {
39     ProcessBuilder builder = new ProcessBuilder("grep", "-ril", 
40             suchbegriff, ablageort);
41     return prozessAusfuehren(builder);
42   }
43   
44   /**
45    * http://localhost:8080/suche/api?c=de.uhilger.suche.api.SuchApi&m=list&p=/home/ulrich/work
46    * ls -l /pfad/zum/inhalt
47    * @param ort
48    * @return 
49    */
50   public String list(String ort) {
51     ProcessBuilder builder = new ProcessBuilder("ls", "-l", 
52             ort);
53     return prozessAusfuehren(builder);
54   }
55   
56   private String prozessAusfuehren(ProcessBuilder builder) {
57     try {
58       File outFile = new File(
59               new File(System.getProperty("catalina.base"), "temp"), 
60               "proc-out-" + new Date().getTime() + ".txt");
61       builder.redirectOutput(outFile);
62       builder.redirectError(outFile);
63       Process p = builder.start();
64       p.waitFor();
65       String newLine = System.getProperty("line.separator");
66       StringBuilder ergebnis = new StringBuilder();
67       BufferedReader fr = new BufferedReader(new FileReader(outFile));
68       String line = fr.readLine();
69       while(line != null) {
70         ergebnis.append(line);
71         ergebnis.append(newLine);
72         line = fr.readLine();
73       }
74       outFile.delete();
75       return ergebnis.toString();
76     } catch (IOException | InterruptedException ex) {
77       logger.log(Level.SEVERE, null, ex);
78       return ex.getMessage();
79     }
80   }
81
82 }