Changeset 5118
- Timestamp:
- 05/02/14 09:11:21 (10 years ago)
- Location:
- vlo/branches/vlo-3.0
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
vlo/branches/vlo-3.0
- Property svn:mergeinfo changed
/vlo/trunk merged: 5117
- Property svn:mergeinfo changed
-
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/provider/FacetFieldValuesProvider.java
r4950 r5118 23 23 import eu.clarin.cmdi.vlo.pojo.FieldValuesFilter; 24 24 import eu.clarin.cmdi.vlo.pojo.FieldValuesOrder; 25 import java.text.Collator; 25 26 import java.util.Collection; 26 27 import java.util.Iterator; 27 28 import java.util.List; 29 import java.util.Locale; 28 30 import org.apache.solr.client.solrj.response.FacetField; 29 31 import org.apache.solr.client.solrj.response.FacetField.Count; 32 import org.apache.wicket.Session; 33 import org.apache.wicket.WicketRuntimeException; 30 34 import org.apache.wicket.extensions.markup.html.repeater.util.SortParam; 31 35 import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider; 32 36 import org.apache.wicket.model.IModel; 33 37 import org.apache.wicket.model.Model; 38 import org.slf4j.Logger; 39 import org.slf4j.LoggerFactory; 34 40 35 41 /** … … 44 50 public class FacetFieldValuesProvider extends SortableDataProvider<FacetField.Count, FieldValuesOrder> { 45 51 52 private final static Logger logger = LoggerFactory.getLogger(FacetFieldValuesProvider.class); 46 53 private final IModel<FacetField> model; 47 54 private final int maxNumberOfItems; … … 169 176 final Ordering ordering; 170 177 if (getSort().getProperty() == FieldValuesOrder.COUNT) { 171 ordering = COUNT_ORDERING;178 ordering = countOrdering; 172 179 } else if (getSort().getProperty() == FieldValuesOrder.NAME) { 173 ordering = NAME_ORDERING;180 ordering = nameOrdering; 174 181 } else { 175 182 ordering = Ordering.natural(); … … 183 190 } 184 191 185 private static Ordering<FacetField.Count> COUNT_ORDERING= new Ordering<FacetField.Count>() {192 private final Ordering<FacetField.Count> countOrdering = new Ordering<FacetField.Count>() { 186 193 187 194 @Override … … 191 198 }; 192 199 193 private static Ordering<FacetField.Count> NAME_ORDERING = new Ordering<FacetField.Count>() { 200 private final Ordering<FacetField.Count> nameOrdering = new Ordering<FacetField.Count>() { 201 private final Collator collator; 202 203 { 204 collator = Collator.getInstance(getLocale()); 205 collator.setStrength(Collator.PRIMARY); 206 } 194 207 195 208 @Override 196 209 public int compare(Count arg0, Count arg1) { 197 // TODO: From old VLO: 198 return arg0.getName().compareToIgnoreCase(arg1.getName()); 210 return collator.compare(arg0.getName(), arg1.getName()); 199 211 } 200 212 }; 213 214 protected Locale getLocale() { 215 try { 216 final Session session = Session.get(); 217 if (session != null) { 218 return session.getLocale(); 219 } 220 } catch (WicketRuntimeException ex) { 221 logger.info("No session available, falling back to JVM default locale"); 222 } 223 return Locale.getDefault(); 224 } 201 225 202 226 /** -
vlo/branches/vlo-3.0/vlo-web-app/src/test/java/eu/clarin/cmdi/vlo/wicket/provider/FacetFieldValuesProviderTest.java
r4951 r5118 22 22 import java.util.Collection; 23 23 import java.util.Iterator; 24 import java.util.Locale; 25 import java.util.Locale; 24 26 import org.apache.solr.client.solrj.response.FacetField; 25 27 import org.apache.wicket.extensions.markup.html.repeater.util.SortParam; … … 188 190 valueCount = result.next(); 189 191 assertEquals("first value", valueCount.getName()); 192 193 assertFalse(result.hasNext()); 194 } 195 196 /** 197 * Test of iterator method, of class FacetFieldValuesProvider. 198 */ 199 @Test 200 public void testIteratorNameOrderCollation() { 201 facetField = new FacetField("field"); 202 facetField.add("a value", 1); 203 facetField.add("some other value", 1); 204 facetField.add("à€à€Ÿà€€", 1); 205 facetField.add("Etwas anderes", 1); 206 facetField.add("één nederlandse waarde", 1); 207 208 final FacetFieldValuesProvider instance = new FacetFieldValuesProvider(Model.of(facetField), 10, LOW_PRIORITY_VALUES, new SortParam<FieldValuesOrder>(FieldValuesOrder.NAME, true)) { 209 210 @Override 211 protected Locale getLocale() { 212 return Locale.ENGLISH; 213 } 214 215 }; 216 217 final long first = 0; 218 final long count = 100; 219 final Iterator<? extends FacetField.Count> result = instance.iterator(first, count); 220 221 //sorted by name (ascending) 222 assertTrue(result.hasNext()); 223 assertEquals("a value", result.next().getName()); 224 225 // diacritics 226 assertTrue(result.hasNext()); 227 assertEquals("één nederlandse waarde", result.next().getName()); 228 229 // capitalisation 230 assertTrue(result.hasNext()); 231 assertEquals("Etwas anderes", result.next().getName()); 232 233 assertTrue(result.hasNext()); 234 assertEquals("some other value", result.next().getName()); 235 236 // other scripts 237 assertTrue(result.hasNext()); 238 assertEquals("à€à€Ÿà€€", result.next().getName()); 190 239 191 240 assertFalse(result.hasNext());
Note: See TracChangeset
for help on using the changeset viewer.