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

- find working configuration

parent 6b484a0e
Branches
Tags
No related merge requests found
......@@ -19,7 +19,6 @@ package org.slub.rosetta.dps.repository.plugin;
import com.exlibris.core.sdk.strings.StringUtils;
import com.exlibris.dps.sdk.techmd.MDExtractorPlugin;
import org.xml.sax.InputSource;
import javax.xml.XMLConstants;
import javax.xml.transform.Transformer;
......@@ -27,11 +26,14 @@ import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
......@@ -49,6 +51,7 @@ public class SLUBTechnicalMetadataExtractorMediaConchPlugin implements MDExtract
private String mediaconch_binary_path;
private String mediaconch_profile_path;
private String mediainfo_binary_path;
private final static String MEDIAINFO_XSD = "/transformer.xsl";
private List<String> extractionErrors = new ArrayList<String>();
private List<String> validationLog = new ArrayList<String>();
......@@ -137,25 +140,45 @@ public class SLUBTechnicalMetadataExtractorMediaConchPlugin implements MDExtract
StringBuilder mediainfo_output= new StringBuilder();
while (line != null) {
/* we should patched out, because not allowed to download xsd */
String regex = " https://mediaarea\\.net/mediainfo/mediainfo.*\\.xsd";
/* String regex = " https://mediaarea\\.net/mediainfo/mediainfo.*\\.xsd";
*/
String regex = "xsi:schemaLocation.*?>";
String line_patched = line.replaceAll( regex, "");
mediainfo_output.append(line_patched);
//mediainfo_output.append(line);
line = reader.readLine();
}
File temp_media_output_file = File.createTempFile("mediainfo_", ".xml");
OutputStream temp_media_outputstream = new FileOutputStream( temp_media_output_file);
OutputStreamWriter temp_media_streamwriter = new OutputStreamWriter( temp_media_outputstream);
temp_media_streamwriter.append( mediainfo_output);
temp_media_streamwriter.close();
/* xslt transform */
InputStream stylestream = getClass().getResourceAsStream("resources/transformer.xsl");
InputStream stylestream = getClass().getResourceAsStream(MEDIAINFO_XSD);
File tmp = new File(
String.valueOf(getClass().getResource(MEDIAINFO_XSD))
);
System.out.println("Resource="+tmp.getPath());
StreamSource stylesource = new StreamSource( stylestream);
//stylesource.setPublicId("https://mediaarea.net/mediainfo");
//stylesource.setSystemId("https://mediaarea.net/mediainfo");
stylesource.setSystemId( "./resources" + MEDIAINFO_XSD);
System.out.println("stylesource, systemID=" + stylesource.getSystemId());
System.out.println("stylesource, publicID=" + stylesource.getPublicId());
// Use a Transformer for output
StreamSource mediainfo_source = new StreamSource(String.valueOf(new InputSource(mediainfo_output.toString())));
InputStream mediastream = new FileInputStream( temp_media_output_file );
StreamSource mediainfo_source = new StreamSource( mediastream );
//stylesource.setPublicId("https://mediaarea.net/mediainfo");
mediainfo_source.setSystemId( temp_media_output_file);
System.out.println("mediainfo_source, systemID=" + mediainfo_source.getSystemId());
System.out.println("mediainfo_source, publicID=" + mediainfo_source.getPublicId());
TransformerFactory tFactory = TransformerFactory.newInstance();
tFactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
tFactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, "");
//tFactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, "");
tFactory.setFeature(XMLConstants.USE_CATALOG, false);
Transformer transformer = tFactory.newTransformer(stylesource);
/* ok, mediainfo is loaded correctly, and xslt loaded too */
......@@ -163,6 +186,7 @@ public class SLUBTechnicalMetadataExtractorMediaConchPlugin implements MDExtract
StreamResult result = new StreamResult( debugFile);
// StreamResult result = new StreamResult(System.out); /* FIXME , use StringOutputStream */
transformer.transform(mediainfo_source, result);
temp_media_output_file.deleteOnExit();
attributes.put("key", "value");
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment