Skip to content
Snippets Groups Projects
Commit 9ec29de1 authored by Andreas Romeyke's avatar Andreas Romeyke
Browse files

- refactoring, extracted setValid()

- refactoring, extracted extractErrorsFromReader()
- simplified handling external command calls
parent b2460ba3
No related branches found
No related tags found
No related merge requests found
......@@ -49,7 +49,6 @@ public class SLUBMatroskaFFV1FormatValidationPlugin implements FormatValidationP
private boolean iswellformed = false;
private String md5CurrentProfile;
private String md5UpcomingProfile;
//static final ExLogger log = ExLogger.getExLogger(SLUBTechnicalMetadataExtractorMediaConchPlugin.class, ExLogger.VALIDATIONSTACK);
private boolean isDifferentProfile = true;
private boolean dumpValidationResultToStdOut = false;
......@@ -79,8 +78,7 @@ public class SLUBMatroskaFFV1FormatValidationPlugin implements FormatValidationP
+ " mediaconch_upcoming_profile_path=" + mediaconch_upcoming_profile_path
+ (isDifferentProfile ? "with different profiles" : "with same profile")
);
} catch (Exception e) {
e.printStackTrace();
} catch (Exception ignored) {
}
log.info( "SLUBMatroskaFFV1FormatValidationPlugin instantiated with"
+ " mediaconch binary='" + mediaconch_binary_path
......@@ -110,9 +108,7 @@ public class SLUBMatroskaFFV1FormatValidationPlugin implements FormatValidationP
private void callMediaconch(String filePath, String profilePath) {
String execstring = this.mediaconch_binary_path + " " + filePath + " -p " + profilePath;
log.info("executing: " + execstring);
final AtomicBoolean fuse = new AtomicBoolean(true);
try {
Process p = Runtime.getRuntime().exec(execstring);
BufferedReader procOutputReader = new BufferedReader(new InputStreamReader(p.getInputStream()));
......@@ -175,12 +171,12 @@ public class SLUBMatroskaFFV1FormatValidationPlugin implements FormatValidationP
validationLog.add(line);
log.info( line );
}
procOutputReader.close();
} catch (IOException e) {
log.error("(actual) mediaconch not available, path=" + this.mediaconch_binary_path + ", " , e.getMessage());
System.out.println("ERROR: (actual) mediaconch not available, path=" + this.mediaconch_binary_path + ", " + e.getMessage());
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
log.error("ERROR: call of mediaconch interrupted, path=" + this.mediaconch_binary_path + ", " + e.getMessage());
} finally {
// ensure the while loop of procOutputReaderThread terminates under all circumstances
......@@ -188,14 +184,29 @@ public class SLUBMatroskaFFV1FormatValidationPlugin implements FormatValidationP
}
}
private void setValid(boolean value) {
isvalid = value;
iswellformed = value;
}
private void extractErrorsFromReader(BufferedReader reader) throws IOException {
while (true) {
String line = reader.readLine();
if (line == null) break;
System.out.println("MEDIACONCH line: " + line);
validationLog.add(line);
log.info(line);
}
}
@Override
public boolean validateFormat(String filePath) {
setValid(false);
// mediaconch validation, first using upcoming profile, if invalid then retry with current profile
callMediaconch(filePath, this.mediaconch_upcoming_profile_path);
if (this.isDifferentProfile && !isvalid) {
callMediaconch(filePath, this.mediaconch_current_profile_path);
}
return isvalid;
}
......@@ -203,40 +214,27 @@ public class SLUBMatroskaFFV1FormatValidationPlugin implements FormatValidationP
*
* @return string with version and signature version
*/
@Override
public final String getAgent() {
StringBuilder response = new StringBuilder();
response.append("mediaconch:\n");
InputStreamReader process_out = null;
try {
String execstring = this.mediaconch_binary_path + " --Version";
checkFileExists(this.mediaconch_binary_path);
Process p = Runtime.getRuntime().exec(execstring);
p.waitFor();
process_out = new InputStreamReader(p.getInputStream());
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
if (process_out != null) {
InputStreamReader process_out = new InputStreamReader(p.getInputStream());
BufferedReader reader = new BufferedReader(process_out);
String line;
try {
line = reader.readLine();
while (line != null) {
System.out.println(line);
response.append(line);
line = reader.readLine();
while (line != null) {
System.out.println(line);
response.append(line);
try {
line = reader.readLine();
} catch (IOException e) {
e.printStackTrace();
}
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
} catch (Exception ignored) {
}
return response.toString().trim();
}
......@@ -248,10 +246,10 @@ public class SLUBMatroskaFFV1FormatValidationPlugin implements FormatValidationP
@Override
public final List<String> getErrors() {
List<String> truncated = new ArrayList<String>();
List<String> truncated = new ArrayList<>();
int chars=0;
/* workaround for Rosetta Issue https://support.proquest.com/500Do0000083LJkIAM
* truncate to ensure not more than 2000 chars used, to
* truncate to ensure not more than 2000 chars used
*/
for (String e: validationLog) {
if ( (chars+ e.length()) < 1900 ) {
......@@ -286,8 +284,7 @@ public class SLUBMatroskaFFV1FormatValidationPlugin implements FormatValidationP
byte[] b = Files.readAllBytes(Paths.get(filename));
byte[] digest = md.digest(b);
return new BigInteger(1, digest).toString(16);
} catch (Exception e) {
e.printStackTrace();
} catch (Exception ignored) {
}
return "";
}
......@@ -295,8 +292,7 @@ public class SLUBMatroskaFFV1FormatValidationPlugin implements FormatValidationP
private String modificationDateOfFile(String filename ) {
try {
return Files.getLastModifiedTime(Paths.get(filename)).toString();
} catch (IOException e) {
e.printStackTrace();
} catch (IOException ignored) {
}
return "";
}
......@@ -324,11 +320,15 @@ public class SLUBMatroskaFFV1FormatValidationPlugin implements FormatValidationP
initp.put( "mediaconch_upcoming_profile_path", "/etc/mediaconch/profile.xml");
plugin.initParams( initp );
plugin.setDumpValidationResultToStdOut(true);
plugin.validateFormat(args[0]);
System.out.println("----------------------------------");
System.out.println("Agent: '" + plugin.getAgent() + "'");
System.out.println();
System.out.println("Validation RESULT: " + plugin.isValid());
for (String file : args) {
plugin.validateFormat( file );
System.out.println("Validation RESULT: " + plugin.isValid());
System.out.println("Errors:" + plugin.validationLog);
}
System.out.println("----------------------------------");
System.out.println("getAgent:");
System.out.println( plugin.getAgent());
......@@ -337,4 +337,4 @@ public class SLUBMatroskaFFV1FormatValidationPlugin implements FormatValidationP
System.out.println( plugin.getProfile());
System.out.println("----------------------------------");
}
}
\ No newline at end of file
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment