Changeset 4639


Ignore:
Timestamp:
03/07/14 09:21:20 (10 years ago)
Author:
Twan Goosen
Message:

made service that creates ResourceInfo? objects from resource strings. This is now used by the resource type counting service. Adapted/added unit tests.

Location:
vlo/branches/vlo-3.0/vlo-web-app/src
Files:
4 added
3 edited

Legend:

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

    r4618 r4639  
    1717package eu.clarin.cmdi.vlo.config;
    1818
    19 import com.google.common.collect.Lists;
    2019import eu.clarin.cmdi.vlo.VloWicketApplication;
    2120import eu.clarin.cmdi.vlo.service.FacetFieldsService;
     21import eu.clarin.cmdi.vlo.service.ResourceStringConverter;
    2222import eu.clarin.cmdi.vlo.service.ResourceTypeCountingService;
    2323import eu.clarin.cmdi.vlo.service.SearchResultsDao;
    2424import eu.clarin.cmdi.vlo.service.SolrDocumentService;
    2525import eu.clarin.cmdi.vlo.service.SolrFacetQueryFactory;
     26import eu.clarin.cmdi.vlo.service.impl.ResourceStringConverterImpl;
    2627import eu.clarin.cmdi.vlo.service.impl.ResourceTypeCountingServiceImpl;
    2728import eu.clarin.cmdi.vlo.service.impl.SearchResultsDaoImpl;
     
    3132import eu.clarin.cmdi.vlo.service.impl.SolrFacetQueryFactoryImpl;
    3233import java.io.IOException;
    33 import java.util.ArrayList;
    3434import org.apache.solr.client.solrj.SolrServer;
    3535import org.apache.solr.client.solrj.impl.HttpSolrServer;
     
    100100    @Bean
    101101    public ResourceTypeCountingService resourceTypeCountingService() {
    102         return new ResourceTypeCountingServiceImpl();
     102        return new ResourceTypeCountingServiceImpl(resourceStringConverter());
     103    }
     104
     105    @Bean
     106    public ResourceStringConverter resourceStringConverter() {
     107        return new ResourceStringConverterImpl();
    103108    }
    104109
  • vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/service/impl/ResourceTypeCountingServiceImpl.java

    r4620 r4639  
    1919import com.google.common.collect.HashMultiset;
    2020import com.google.common.collect.Multiset;
    21 import eu.clarin.cmdi.vlo.CommonUtils;
    22 import eu.clarin.cmdi.vlo.FacetConstants;
     21import eu.clarin.cmdi.vlo.pojo.ResourceInfo;
    2322import eu.clarin.cmdi.vlo.pojo.ResourceType;
    2423import eu.clarin.cmdi.vlo.pojo.ResourceTypeCount;
     24import eu.clarin.cmdi.vlo.service.ResourceStringConverter;
    2525import eu.clarin.cmdi.vlo.service.ResourceTypeCountingService;
    2626import java.util.ArrayList;
    2727import java.util.Collection;
    2828import java.util.Collections;
    29 import java.util.regex.Pattern;
    3029
    3130/**
     
    3635public class ResourceTypeCountingServiceImpl implements ResourceTypeCountingService {
    3736
    38     private final static String SPLIT_PATTERN = Pattern.quote(FacetConstants.FIELD_RESOURCE_SPLIT_CHAR);
     37    private final ResourceStringConverter resourceStringConverter;
     38
     39    public ResourceTypeCountingServiceImpl(ResourceStringConverter resourceStringConverter) {
     40        this.resourceStringConverter = resourceStringConverter;
     41    }
    3942
    4043    @Override
     
    4245        if (resources == null || resources.isEmpty()) {
    4346            return Collections.emptySet();
     47        } else {
     48            return aggregateCounts(countTypes(resources));
    4449        }
     50    }
    4551
     52    private Multiset<ResourceType> countTypes(Collection<String> resources) {
    4653        final Multiset<ResourceType> countBag = HashMultiset.<ResourceType>create(ResourceType.values().length);
    47 
    4854        // loop over resources and count types
    4955        for (String resourceString : resources) {
    50             // split resource string to find mime type
    51             final String[] tokens = resourceString.split(SPLIT_PATTERN, 2);
    52             final String mimeType = tokens[0];
    53             // normalise
    54             final String normalizeMimeType = CommonUtils.normalizeMimeType(mimeType);
    55             // map to ResourceType and add to bag (TODO: normalize to ResourceType directly?)
    56             if (normalizeMimeType.equals(FacetConstants.RESOURCE_TYPE_ANNOTATION)) {
    57                 countBag.add(ResourceType.ANNOTATION);
    58             } else if (normalizeMimeType.equals(FacetConstants.RESOURCE_TYPE_AUDIO)) {
    59                 countBag.add(ResourceType.AUDIO);
    60             } else if (normalizeMimeType.equals(FacetConstants.RESOURCE_TYPE_IMAGE)) {
    61                 countBag.add(ResourceType.IMAGE);
    62             } else if (normalizeMimeType.equals(FacetConstants.RESOURCE_TYPE_TEXT)) {
    63                 countBag.add(ResourceType.TEXT);
    64             } else if (normalizeMimeType.equals(FacetConstants.RESOURCE_TYPE_VIDEO)) {
    65                 countBag.add(ResourceType.VIDEO);
    66             } else{
    67                 countBag.add(ResourceType.OTHER);
    68             }
     56            final ResourceInfo resourceInfo = resourceStringConverter.getResourceInfo(resourceString);
     57            countBag.add(resourceInfo.getResourceType());
    6958        }
     59        return countBag;
     60    }
    7061
     62    private Collection<ResourceTypeCount> aggregateCounts(Multiset<ResourceType> countBag) {
    7163        // count items in bag for each resource type
    7264        final Collection<ResourceTypeCount> counts = new ArrayList<ResourceTypeCount>(countBag.elementSet().size());
  • vlo/branches/vlo-3.0/vlo-web-app/src/test/java/eu/clarin/cmdi/vlo/service/impl/ResourceTypeCountingServiceImplTest.java

    r4621 r4639  
    1717package eu.clarin.cmdi.vlo.service.impl;
    1818
    19 import eu.clarin.cmdi.vlo.FacetConstants;
     19import eu.clarin.cmdi.vlo.pojo.ResourceInfo;
    2020import eu.clarin.cmdi.vlo.pojo.ResourceType;
    2121import eu.clarin.cmdi.vlo.pojo.ResourceTypeCount;
     22import eu.clarin.cmdi.vlo.service.ResourceStringConverter;
    2223import java.util.Arrays;
    2324import java.util.Collection;
     
    2526import static org.junit.Assert.*;
    2627import static org.hamcrest.Matchers.*;
     28import org.jmock.Expectations;
     29import org.jmock.Mockery;
     30import org.jmock.integration.junit4.JUnit4Mockery;
    2731
    2832/**
     
    3135 */
    3236public class ResourceTypeCountingServiceImplTest {
     37
     38    private final Mockery context = new JUnit4Mockery();
    3339
    3440    /**
     
    4046        System.out.println("countResourceTypes");
    4147        Collection<String> resources = Arrays.asList(
    42                 "video/mpeg" + FacetConstants.FIELD_RESOURCE_SPLIT_CHAR + "myvideo",
    43                 "video/mpeg" + FacetConstants.FIELD_RESOURCE_SPLIT_CHAR + "myvideo",
    44                 "audio/ogg" + FacetConstants.FIELD_RESOURCE_SPLIT_CHAR + "myaudio",
    45                 "audio/ogg" + FacetConstants.FIELD_RESOURCE_SPLIT_CHAR + "myaudio",
    46                 "audio/ogg" + FacetConstants.FIELD_RESOURCE_SPLIT_CHAR + "myaudio",
    47                 "audio/ogg" + FacetConstants.FIELD_RESOURCE_SPLIT_CHAR + "myaudio",
    48                 "text/plain" + FacetConstants.FIELD_RESOURCE_SPLIT_CHAR + "mytext",
    49                 "application/pdf" + FacetConstants.FIELD_RESOURCE_SPLIT_CHAR + "mypdf", // pdf = text
    50                 "text/x-chat" + FacetConstants.FIELD_RESOURCE_SPLIT_CHAR + "mytext", // annotation
    51                 "application/zip" + FacetConstants.FIELD_RESOURCE_SPLIT_CHAR + "myzip"
     48                "video resource string1",
     49                "video resource string2",
     50                "audio resource string",
     51                "text resource string",
     52                "annotation resource string",
     53                "other resource string"
     54//                "video/mpeg" + FacetConstants.FIELD_RESOURCE_SPLIT_CHAR + "myvideo",
     55//                "audio/ogg" + FacetConstants.FIELD_RESOURCE_SPLIT_CHAR + "myaudio",
     56//                "audio/ogg" + FacetConstants.FIELD_RESOURCE_SPLIT_CHAR + "myaudio"
     57        //                "audio/ogg" + FacetConstants.FIELD_RESOURCE_SPLIT_CHAR + "myaudio",
     58        //                "audio/ogg" + FacetConstants.FIELD_RESOURCE_SPLIT_CHAR + "myaudio",
     59        //                "text/plain" + FacetConstants.FIELD_RESOURCE_SPLIT_CHAR + "mytext",
     60        //                "application/pdf" + FacetConstants.FIELD_RESOURCE_SPLIT_CHAR + "mypdf", // pdf = text
     61        //                "text/x-chat" + FacetConstants.FIELD_RESOURCE_SPLIT_CHAR + "mytext", // annotation
     62        //                "application/zip" + FacetConstants.FIELD_RESOURCE_SPLIT_CHAR + "myzip"
    5263        );
    53         ResourceTypeCountingServiceImpl instance = new ResourceTypeCountingServiceImpl();
     64        final ResourceStringConverter converter = context.mock(ResourceStringConverter.class);
     65        context.checking(new Expectations() {
     66            {
     67                exactly(6).of(converter).getResourceInfo(with(any(String.class)));
     68                will(onConsecutiveCalls(
     69                        returnValue(new ResourceInfo("href1", "video/mpeg", ResourceType.VIDEO)),
     70                        returnValue(new ResourceInfo("href2", "video/mpeg", ResourceType.VIDEO)),
     71                        returnValue(new ResourceInfo("href3", "audio/ogg", ResourceType.AUDIO)),
     72                        returnValue(new ResourceInfo("href4", "audio/ogg", ResourceType.TEXT)),
     73                        returnValue(new ResourceInfo("href5", "audio/ogg", ResourceType.ANNOTATION)),
     74                        returnValue(new ResourceInfo("href6", "audio/ogg", ResourceType.OTHER))
     75                ));
     76            }
     77        });
     78        ResourceTypeCountingServiceImpl instance = new ResourceTypeCountingServiceImpl(converter);
    5479        Collection<ResourceTypeCount> result = instance.countResourceTypes(resources);
    5580        assertThat(result, hasItem(new ResourceTypeCount(ResourceType.VIDEO, 2)));
    56         assertThat(result, hasItem(new ResourceTypeCount(ResourceType.AUDIO, 4)));
    57         assertThat(result, hasItem(new ResourceTypeCount(ResourceType.TEXT, 2)));
     81        assertThat(result, hasItem(new ResourceTypeCount(ResourceType.AUDIO, 1)));
     82        assertThat(result, hasItem(new ResourceTypeCount(ResourceType.TEXT, 1)));
    5883        assertThat(result, hasItem(new ResourceTypeCount(ResourceType.ANNOTATION, 1)));
    59         assertThat(result, hasItem(new ResourceTypeCount(ResourceType.OTHER, 1))); // the zip
     84        assertThat(result, hasItem(new ResourceTypeCount(ResourceType.OTHER, 1)));
    6085    }
    6186
Note: See TracChangeset for help on using the changeset viewer.