Changeset 6040
- Timestamp:
- 02/24/15 13:04:45 (9 years ago)
- Location:
- vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/pojo/FieldValuesFilter.java
r4951 r6040 21 21 import java.util.regex.Pattern; 22 22 import org.apache.solr.client.solrj.response.FacetField.Count; 23 import org.apache.wicket.util.convert.IConverter; 23 24 24 25 /** … … 62 63 * 63 64 * @param count count (name + count) to check 65 * @param converter optional converter to apply to value before comparison 64 66 * @return true IFF the {@link Count#getCount() } is more than {@link #getMinimalOccurence() 65 67 * } {@link Count#getName() } contains {@link #getName() } (case 66 68 * insensitive) 67 69 */ 68 public boolean matches(Count count) { 69 return count.getCount() >= minimalOccurence 70 && (namePattern == null || namePattern.matcher(count.getName()).find()); 70 public boolean matches(Count count, IConverter<String> converter) { 71 if (count.getCount() >= minimalOccurence) { 72 if (namePattern == null) { 73 // no pattern to compare to, always matches 74 return true; 75 } else { 76 // convert value if converter is provided 77 final String value; 78 if (converter == null) { 79 value = count.getName(); 80 } else { 81 value = converter.convertToString(count.getName(), null); 82 } 83 return namePattern.matcher(value).find(); 84 } 85 } else { 86 // too few occurences, no match 87 return false; 88 } 71 89 } 72 90 -
vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/CachingConverter.java
r6007 r6040 67 67 public CachingConverter(IConverter<C> converter) { 68 68 this.inner = converter; 69 } 70 71 /** 72 * Convenience factory method for wrapping a converter 73 * 74 * @param <C> The object to convert from and to String 75 * @param inner converter to wrap, can be null 76 * @return a new {@link CachingConverter} instance wrapping the inner 77 * converter, or null if inner is null 78 */ 79 public static <C> IConverter<C> wrap(IConverter<C> inner) { 80 if (inner == null) { 81 return null; 82 } else { 83 return new CachingConverter(inner); 84 } 69 85 } 70 86 -
vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/provider/FacetFieldValuesProvider.java
r6006 r6040 51 51 */ 52 52 public class FacetFieldValuesProvider extends SortableDataProvider<FacetField.Count, FieldValuesOrder> implements ListProvider<FacetField.Count> { 53 53 54 54 private final static Logger logger = LoggerFactory.getLogger(FacetFieldValuesProvider.class); 55 55 private final IModel<FacetField> model; … … 90 90 this(model, max, lowPriorityValues, new SortParam<FieldValuesOrder>(FieldValuesOrder.COUNT, false), fieldValueConverterProvider); 91 91 } 92 92 93 93 public FacetFieldValuesProvider(IModel<FacetField> model, int max, SortParam<FieldValuesOrder> sort, FieldValueConverterProvider fieldValueConverterProvider) { 94 94 this(model, max, null, sort, fieldValueConverterProvider); … … 120 120 return null; 121 121 } 122 122 123 123 @Override 124 124 public Iterator<? extends FacetField.Count> iterator(long first, long count) { … … 126 126 return getList().listIterator((int) first); 127 127 } 128 128 129 129 @Override 130 130 public List<? extends FacetField.Count> getList() { … … 139 139 } 140 140 } 141 141 142 142 @Override 143 143 public long size() { … … 147 147 return size; 148 148 } 149 149 150 150 @Override 151 151 public IModel<FacetField.Count> model(FacetField.Count object) { … … 158 158 private Iterable<FacetField.Count> filter(List<FacetField.Count> list) { 159 159 if (hasFilter()) { 160 final IConverter<String> converter = fieldValueConverterProvider.getConverter(model.getObject().getName()); 160 161 return Iterables.filter(list, new Predicate<FacetField.Count>() { 161 162 @Override 162 163 public boolean apply(Count input) { 163 return getFilterModel().getObject().matches(input );164 return getFilterModel().getObject().matches(input, converter); 164 165 } 165 166 }); … … 168 169 } 169 170 } 170 171 171 172 private Iterable<Count> getFilteredValues() { 172 173 if (filtered == null) { … … 177 178 return filtered; 178 179 } 179 180 180 181 private long getSize() { 181 182 if (hasFilter()) { … … 189 190 } 190 191 } 191 192 192 193 private boolean hasFilter() { 193 194 return getFilterModel() != null && getFilterModel().getObject() != null && !getFilterModel().getObject().isEmpty(); … … 207 208 } 208 209 } 209 210 210 211 private Ordering getBaseOrdering() { 211 212 final Ordering ordering; … … 217 218 ordering = Ordering.natural(); 218 219 } 219 220 220 221 if (getSort().isAscending()) { 221 222 return ordering; … … 224 225 } 225 226 } 226 227 227 228 protected Locale getLocale() { 228 229 try { … … 236 237 return Locale.getDefault(); 237 238 } 238 239 239 240 private final static class CountOrdering extends Ordering<FacetField.Count> { 240 241 241 242 @Override 242 243 public int compare(Count arg0, Count arg1) { … … 244 245 } 245 246 }; 246 247 247 248 private final static class NameOrdering extends Ordering<FacetField.Count> implements Serializable { 248 249 249 250 private final Collator collator; 250 251 private final IConverter converter; 251 252 private final Locale locale; 252 253 253 254 public NameOrdering(Locale locale, IConverter<String> converter) { 254 255 collator = Collator.getInstance(locale); 255 256 collator.setStrength(Collator.PRIMARY); 256 this.converter = new CachingConverter(converter);257 this.converter = CachingConverter.wrap(converter); 257 258 this.locale = locale; 258 259 } 259 260 260 261 @Override 261 262 public int compare(Count arg0, Count arg1) { … … 275 276 */ 276 277 private static class PriorityOrdering extends Ordering<FacetField.Count> { 277 278 278 279 private final Collection<String> lowPriorityValues; 279 280 280 281 public PriorityOrdering(Collection<String> lowPriorityValues) { 281 282 this.lowPriorityValues = lowPriorityValues; 282 283 } 283 284 284 285 @Override 285 286 public int compare(Count arg0, Count arg1) { 286 287 287 288 if (lowPriorityValues.contains(arg0.getName())) { 288 289 if (!lowPriorityValues.contains(arg1.getName())) { … … 298 299 return 0; 299 300 } 300 301 301 302 }; 302 303 303 304 @Override 304 305 public void detach() {
Note: See TracChangeset
for help on using the changeset viewer.