Changeset 4307


Ignore:
Timestamp:
01/21/14 10:23:06 (10 years ago)
Author:
twagoo
Message:

LoadableDetachableModel? for complete CMDI view so that the HTML no longer gets cached

Location:
vlo/trunk/vlo_web_app/src/main/java/eu/clarin/cmdi/vlo/pages
Files:
1 added
1 edited

Legend:

Unmodified
Added
Removed
  • vlo/trunk/vlo_web_app/src/main/java/eu/clarin/cmdi/vlo/pages/ShowResultPage.java

    r4288 r4307  
    77import eu.clarin.cmdi.vlo.config.VloConfig;
    88import eu.clarin.cmdi.vlo.dao.DaoLocator;
    9 import java.io.InputStreamReader;
    10 import java.io.StringWriter;
    119import java.io.UnsupportedEncodingException;
    1210import java.net.MalformedURLException;
     
    1917import java.util.List;
    2018import java.util.regex.Pattern;
    21 import javax.xml.transform.stream.StreamSource;
    22 import net.sf.saxon.s9api.Processor;
    23 import net.sf.saxon.s9api.Serializer;
    24 import net.sf.saxon.s9api.XdmNode;
    25 import net.sf.saxon.s9api.XsltCompiler;
    26 import net.sf.saxon.s9api.XsltExecutable;
    27 import net.sf.saxon.s9api.XsltTransformer;
    2819import org.apache.solr.common.SolrDocument;
    2920import org.apache.wicket.Application;
     
    7667    public static final String feedbackfromURL = VloConfig.getFeedbackFromUrl();
    7768
    78     private final URL xslFile = getClass().getResource("/eu/clarin/cmdi/vlo/pages/cmdi2xhtml.xsl");
    7969    private final ResourceReference XSL_CSS_REFERENCE = new PackageResourceReference(getClass(), "cmdi.css");
    8070
     
    8272    public ShowResultPage(final PageParameters currentParam) {
    8373        super(currentParam);
    84        
     74
    8575        final StringValue docIdParam = getPageParameters().get(PARAM_DOC_ID);
    8676        if (docIdParam == null) {
     
    9282                Application.get().getRequestCycleSettings().getResponseRequestEncoding()); // get current character set from request cycle
    9383        SolrDocument solrDocument = DaoLocator.getSearchResultsDao().getSolrDocument(docId);
    94        
     84
    9585        if (solrDocument != null) {
    9686            final SearchPageQuery query = new SearchPageQuery(currentParam);
     
    565555
    566556    private void createCompleteCmdiView(final SolrDocument solrDocument) {
    567         StringWriter strWriter = new StringWriter();
    568 
    569         final Processor proc = new Processor(false);
    570         final XsltCompiler comp = proc.newXsltCompiler();
    571 
     557        final String completeMetadataField = solrDocument.getFirstValue(FacetConstants.FIELD_COMPLETE_METADATA).toString();
    572558        try {
    573             final XsltExecutable exp = comp.compile(new StreamSource(xslFile.getFile()));
    574             final XdmNode source = proc.newDocumentBuilder().build(
    575                     new StreamSource(new InputStreamReader(new URL(solrDocument.getFirstValue(FacetConstants.FIELD_COMPLETE_METADATA).toString()).openStream())));
    576             final Serializer out = new Serializer();
    577             out.setOutputProperty(Serializer.Property.METHOD, "html");
    578             out.setOutputProperty(Serializer.Property.INDENT, "yes");
    579             out.setOutputProperty(Serializer.Property.ENCODING, "UTF-8");
    580             out.setOutputWriter(strWriter);
    581             final XsltTransformer trans = exp.load();
    582 
    583             trans.setInitialContextNode(source);
    584             trans.setDestination(out);
    585             trans.transform();
    586         } catch (Exception e) {
    587             LOG.error("Couldn't create CMDI metadata: ", e);
    588             strWriter = new StringWriter().append("<b>Could not load complete CMDI metadata</b>");
    589         }
    590 
    591         completeCmdiLabel = new Label("completeCmdi", strWriter.toString());
    592         completeCmdiLabel.setEscapeModelStrings(false);
     559            final CmdiXsltModel cmdiXsltModel = new CmdiXsltModel(new URL(completeMetadataField));
     560            completeCmdiLabel = new Label("completeCmdi", cmdiXsltModel);
     561            completeCmdiLabel.setEscapeModelStrings(false);
     562        } catch (MalformedURLException ex) {
     563            LOG.error("Could not create CMDI view, malformed URL: {}", completeMetadataField, ex);
     564            completeCmdiLabel = new Label("<b>Could not read metadata</b>");
     565        }
    593566    }
    594567
Note: See TracChangeset for help on using the changeset viewer.