package de.uhilger.filecms.api;
|
|
import java.io.BufferedReader;
|
import java.io.File;
|
import java.io.FileReader;
|
import java.io.IOException;
|
import java.util.Date;
|
import java.util.logging.Level;
|
import java.util.logging.Logger;
|
|
public class SuchApi extends Api {
|
|
private static final Logger logger = Logger.getLogger(SuchApi.class.getName());
|
|
/**
|
* Dateien suchen
|
*
|
* Suche von Dateien die einen gegebenen Suchbegriff irgendwo im Namen haben.
|
* Die Suche erfolgt ohne Beruecksichtigung von Gross- und Kleinschreibung,
|
*
|
* @param suchbegriff zu suchender Inhalt
|
* @param ablageort Ordner, in dem gesucht wird, einschl. Unterordner
|
*
|
* http://localhost:8080/suche/api?c=de.uhilger.suche.api.SuchApi&m=dateiSuchen&p=wbx&p=/home/ulrich/work
|
*
|
*/
|
public String dateiSuchen(String suchbegriff, String ablageort) {
|
ProcessBuilder builder = new ProcessBuilder("find",
|
ablageort, "-iname", "*" + suchbegriff + "*");
|
return prozessAusfuehren(builder);
|
}
|
|
/**
|
* grep -ril "javadoc" /media/extmirror/wbx-data/cms
|
* http://localhost:8080/suche/api?c=de.uhilger.suche.api.SuchApi&m=inhaltSuchen&p=docker&p=/home/ulrich/work
|
* @return
|
*/
|
public String inhaltSuchen(String suchbegriff, String ablageort) {
|
ProcessBuilder builder = new ProcessBuilder("grep", "-ril",
|
suchbegriff, ablageort);
|
return prozessAusfuehren(builder);
|
}
|
|
/**
|
* http://localhost:8080/suche/api?c=de.uhilger.suche.api.SuchApi&m=list&p=/home/ulrich/work
|
* ls -l /pfad/zum/inhalt
|
* @param ort
|
* @return
|
*/
|
public String list(String ort) {
|
ProcessBuilder builder = new ProcessBuilder("ls", "-l",
|
ort);
|
return prozessAusfuehren(builder);
|
}
|
|
private String prozessAusfuehren(ProcessBuilder builder) {
|
try {
|
File outFile = new File(
|
new File(System.getProperty("catalina.base"), "temp"),
|
"proc-out-" + new Date().getTime() + ".txt");
|
builder.redirectOutput(outFile);
|
builder.redirectError(outFile);
|
Process p = builder.start();
|
p.waitFor();
|
String newLine = System.getProperty("line.separator");
|
StringBuilder ergebnis = new StringBuilder();
|
BufferedReader fr = new BufferedReader(new FileReader(outFile));
|
String line = fr.readLine();
|
while(line != null) {
|
ergebnis.append(line);
|
ergebnis.append(newLine);
|
line = fr.readLine();
|
}
|
outFile.delete();
|
return ergebnis.toString();
|
} catch (IOException | InterruptedException ex) {
|
logger.log(Level.SEVERE, null, ex);
|
return ex.getMessage();
|
}
|
}
|
|
}
|