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

- find working configuration

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