Changeset 4978


Ignore:
Timestamp:
04/15/14 09:14:17 (10 years ago)
Author:
Twan Goosen
Message:

lazy retrieval of resolved resource href's/file names in expanded details
(todo: add to record page; implement retrieval)

Location:
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo
Files:
2 added
4 edited

Legend:

Unmodified
Added
Removed
  • vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/config/VloSpringConfig.java

    r4932 r4978  
    2929import eu.clarin.cmdi.vlo.service.ResourceStringConverter;
    3030import eu.clarin.cmdi.vlo.service.ResourceTypeCountingService;
     31import eu.clarin.cmdi.vlo.service.UriResolver;
    3132import eu.clarin.cmdi.vlo.service.XmlTransformationService;
     33import eu.clarin.cmdi.vlo.service.impl.HandleResolver;
    3234import eu.clarin.cmdi.vlo.service.solr.SearchResultsDao;
    3335import eu.clarin.cmdi.vlo.service.solr.SolrDocumentService;
     
    127129    }
    128130
    129     @Bean
     131    @Bean(name = "resourceStringConverter")
    130132    public ResourceStringConverter resourceStringConverter() {
    131133        return new ResourceStringConverterImpl();
     134    }
     135
     136    @Bean(name = "resolvingResourceStringConverter")
     137    public ResourceStringConverter resolvingResourceStringConverter() {
     138        return new ResourceStringConverterImpl(handleResolver());
     139    }
     140
     141    @Bean
     142    public UriResolver handleResolver() {
     143        return new HandleResolver();
    132144    }
    133145
     
    159171                vloConfig().getTechnicalFields()));
    160172    }
    161    
    162     @Bean(name="searchResultPropertiesFilter")
     173
     174    @Bean(name = "searchResultPropertiesFilter")
    163175    public FieldFilter searchResultPropertiesFilter() {
    164176        return new InclusiveFieldFilter(vloConfig().getSearchResultFields());
  • vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/service/impl/ResourceStringConverterImpl.java

    r4943 r4978  
    1919import eu.clarin.cmdi.vlo.CommonUtils;
    2020import eu.clarin.cmdi.vlo.FacetConstants;
     21import static eu.clarin.cmdi.vlo.FacetConstants.HANDLE_PREFIX;
    2122import eu.clarin.cmdi.vlo.pojo.ResourceInfo;
    2223import eu.clarin.cmdi.vlo.pojo.ResourceType;
    2324import eu.clarin.cmdi.vlo.service.ResourceStringConverter;
     25import eu.clarin.cmdi.vlo.service.UriResolver;
    2426import java.net.URI;
    2527import java.net.URISyntaxException;
     
    3436
    3537    private final static String SPLIT_PATTERN = Pattern.quote(FacetConstants.FIELD_RESOURCE_SPLIT_CHAR);
     38    private final UriResolver resolver;
     39
     40    /**
     41     * creates a converter that does not attempt to resolve
     42     */
     43    public ResourceStringConverterImpl() {
     44        this(null);
     45    }
     46
     47    /**
     48     *
     49     * @param resolver resolver to apply to resource URI to get final href
     50     */
     51    public ResourceStringConverterImpl(UriResolver resolver) {
     52        this.resolver = resolver;
     53    }
    3654
    3755    @Override
     
    4058        final String[] tokens = resourceString.split(SPLIT_PATTERN, 2);
    4159        final String mimeType = tokens[0];
    42         final String href = tokens[1];
     60        final String href;
     61        if (resolver == null) {
     62            href = tokens[1];
     63        } else {
     64            href = resolver.resolve(tokens[1]);
     65        }
    4366
    4467        final String fileName = getFileName(href);
     
    5578            final String path = uri.getPath();
    5679            // in case of path information or handle, return original href
    57             if (path == null || path.isEmpty() || (scheme != null && scheme.equals("hdl"))) {
     80            if (path == null || path.isEmpty() || (scheme != null && scheme.equals(HANDLE_PREFIX))) {
    5881                return href;
    5982            } else {
  • vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/panels/record/ResourceLinksPanel.java

    r4904 r4978  
    4242public class ResourceLinksPanel extends Panel {
    4343
    44     @SpringBean
     44    @SpringBean(name = "resourceStringConverter")
    4545    private ResourceStringConverter resourceStringConverter;
    4646
     
    7474            final IModel<String> linkModel = new HandleLinkModel(new PropertyModel(resourceInfoModel, "href"));
    7575            final ExternalLink link = new ExternalLink("showResource", linkModel);
    76            
     76
    7777            // set the file name as the link's text content
    7878            link.add(new Label("filename", new PropertyModel(resourceInfoModel, "fileName")));
  • vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/panels/search/SearchResultItemExpandedPanel.java

    r4884 r4978  
    3232import org.apache.solr.common.SolrDocument;
    3333import org.apache.wicket.Component;
     34import org.apache.wicket.ajax.AbstractAjaxTimerBehavior;
     35import org.apache.wicket.ajax.AjaxRequestTarget;
    3436import org.apache.wicket.behavior.AttributeAppender;
    3537import org.apache.wicket.markup.html.WebMarkupContainer;
     
    4345import org.apache.wicket.model.StringResourceModel;
    4446import org.apache.wicket.spring.injection.annot.SpringBean;
     47import org.apache.wicket.util.time.Duration;
    4548
    4649/**
     
    5053public class SearchResultItemExpandedPanel extends GenericPanel<SolrDocument> {
    5154
    52     @SpringBean(name = "searchResultPropertiesFilter") 
     55    @SpringBean(name = "searchResultPropertiesFilter")
    5356    private FieldFilter propertiesFilter;
    54     @SpringBean
     57    @SpringBean(name = "resourceStringConverter")
    5558    ResourceStringConverter resourceStringConverter;
     59    @SpringBean(name = "resolvingResourceStringConverter")
     60    ResourceStringConverter resolvingResourceStringConverter;
    5661
    5762    public SearchResultItemExpandedPanel(String id, IModel<SolrDocument> documentModel, IModel<SearchContext> selectionModel) {
     
    8994
    9095            @Override
    91             protected void populateItem(ListItem<String> item) {
     96            protected void populateItem(final ListItem<String> item) {
    9297                // get resource string converted into a ResourceInfo model
    9398                final ResourceInfoModel resourceInfoModel = new ResourceInfoModel(resourceStringConverter, item.getModel());
     
    96101                final ExternalLink resourceLink = new ExternalLink("resourceLink", new PropertyModel(resourceInfoModel, "href"));
    97102                resourceLink.add(new Label("resourceName", new PropertyModel(resourceInfoModel, "fileName")));
     103                resourceLink.setOutputMarkupId(true);
     104
     105                // once loaded, make Ajax request to resolve handles and update
     106                // resource link
     107                resourceLink.add(new AbstractAjaxTimerBehavior(Duration.ONE_SECOND) {
     108
     109                    @Override
     110                    protected void onTimer(AjaxRequestTarget target) {
     111                        this.stop(target);
     112                        resourceInfoModel.setObject(
     113                                resolvingResourceStringConverter.getResourceInfo(item.getModelObject()));
     114                        target.add(resourceLink);
     115                    }
     116
     117                });
    98118
    99119                // add a tooltip showing resource type and mime type
Note: See TracChangeset for help on using the changeset viewer.