Changeset 4639
- Timestamp:
- 03/07/14 09:21:20 (10 years ago)
- 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 17 17 package eu.clarin.cmdi.vlo.config; 18 18 19 import com.google.common.collect.Lists;20 19 import eu.clarin.cmdi.vlo.VloWicketApplication; 21 20 import eu.clarin.cmdi.vlo.service.FacetFieldsService; 21 import eu.clarin.cmdi.vlo.service.ResourceStringConverter; 22 22 import eu.clarin.cmdi.vlo.service.ResourceTypeCountingService; 23 23 import eu.clarin.cmdi.vlo.service.SearchResultsDao; 24 24 import eu.clarin.cmdi.vlo.service.SolrDocumentService; 25 25 import eu.clarin.cmdi.vlo.service.SolrFacetQueryFactory; 26 import eu.clarin.cmdi.vlo.service.impl.ResourceStringConverterImpl; 26 27 import eu.clarin.cmdi.vlo.service.impl.ResourceTypeCountingServiceImpl; 27 28 import eu.clarin.cmdi.vlo.service.impl.SearchResultsDaoImpl; … … 31 32 import eu.clarin.cmdi.vlo.service.impl.SolrFacetQueryFactoryImpl; 32 33 import java.io.IOException; 33 import java.util.ArrayList;34 34 import org.apache.solr.client.solrj.SolrServer; 35 35 import org.apache.solr.client.solrj.impl.HttpSolrServer; … … 100 100 @Bean 101 101 public ResourceTypeCountingService resourceTypeCountingService() { 102 return new ResourceTypeCountingServiceImpl(); 102 return new ResourceTypeCountingServiceImpl(resourceStringConverter()); 103 } 104 105 @Bean 106 public ResourceStringConverter resourceStringConverter() { 107 return new ResourceStringConverterImpl(); 103 108 } 104 109 -
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/service/impl/ResourceTypeCountingServiceImpl.java
r4620 r4639 19 19 import com.google.common.collect.HashMultiset; 20 20 import com.google.common.collect.Multiset; 21 import eu.clarin.cmdi.vlo.CommonUtils; 22 import eu.clarin.cmdi.vlo.FacetConstants; 21 import eu.clarin.cmdi.vlo.pojo.ResourceInfo; 23 22 import eu.clarin.cmdi.vlo.pojo.ResourceType; 24 23 import eu.clarin.cmdi.vlo.pojo.ResourceTypeCount; 24 import eu.clarin.cmdi.vlo.service.ResourceStringConverter; 25 25 import eu.clarin.cmdi.vlo.service.ResourceTypeCountingService; 26 26 import java.util.ArrayList; 27 27 import java.util.Collection; 28 28 import java.util.Collections; 29 import java.util.regex.Pattern;30 29 31 30 /** … … 36 35 public class ResourceTypeCountingServiceImpl implements ResourceTypeCountingService { 37 36 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 } 39 42 40 43 @Override … … 42 45 if (resources == null || resources.isEmpty()) { 43 46 return Collections.emptySet(); 47 } else { 48 return aggregateCounts(countTypes(resources)); 44 49 } 50 } 45 51 52 private Multiset<ResourceType> countTypes(Collection<String> resources) { 46 53 final Multiset<ResourceType> countBag = HashMultiset.<ResourceType>create(ResourceType.values().length); 47 48 54 // loop over resources and count types 49 55 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()); 69 58 } 59 return countBag; 60 } 70 61 62 private Collection<ResourceTypeCount> aggregateCounts(Multiset<ResourceType> countBag) { 71 63 // count items in bag for each resource type 72 64 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 17 17 package eu.clarin.cmdi.vlo.service.impl; 18 18 19 import eu.clarin.cmdi.vlo. FacetConstants;19 import eu.clarin.cmdi.vlo.pojo.ResourceInfo; 20 20 import eu.clarin.cmdi.vlo.pojo.ResourceType; 21 21 import eu.clarin.cmdi.vlo.pojo.ResourceTypeCount; 22 import eu.clarin.cmdi.vlo.service.ResourceStringConverter; 22 23 import java.util.Arrays; 23 24 import java.util.Collection; … … 25 26 import static org.junit.Assert.*; 26 27 import static org.hamcrest.Matchers.*; 28 import org.jmock.Expectations; 29 import org.jmock.Mockery; 30 import org.jmock.integration.junit4.JUnit4Mockery; 27 31 28 32 /** … … 31 35 */ 32 36 public class ResourceTypeCountingServiceImplTest { 37 38 private final Mockery context = new JUnit4Mockery(); 33 39 34 40 /** … … 40 46 System.out.println("countResourceTypes"); 41 47 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" 52 63 ); 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); 54 79 Collection<ResourceTypeCount> result = instance.countResourceTypes(resources); 55 80 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))); 58 83 assertThat(result, hasItem(new ResourceTypeCount(ResourceType.ANNOTATION, 1))); 59 assertThat(result, hasItem(new ResourceTypeCount(ResourceType.OTHER, 1))); // the zip84 assertThat(result, hasItem(new ResourceTypeCount(ResourceType.OTHER, 1))); 60 85 } 61 86
Note: See TracChangeset
for help on using the changeset viewer.