Changeset 5046
- Timestamp:
- 04/24/14 11:58:48 (10 years ago)
- Location:
- vlo/branches/vlo-3.0/vlo-web-app/src
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/config/VloSpringConfig.java
r5026 r5046 52 52 import eu.clarin.cmdi.vlo.service.solr.impl.SolrFacetQueryFactoryImpl; 53 53 import java.io.IOException; 54 import java.util. Collection;54 import java.util.List; 55 55 import java.util.Properties; 56 56 import javax.xml.transform.OutputKeys; … … 154 154 } 155 155 156 @Bean(name ="queryParametersConverter")156 @Bean(name = "queryParametersConverter") 157 157 public PageParametersConverter<QueryFacetsSelection> queryParametersConverter() { 158 158 return new QueryFacetsSelectionParametersConverter(); 159 159 } 160 161 @Bean(name ="documentParamsConverter")160 161 @Bean(name = "documentParamsConverter") 162 162 public PageParametersConverter<SolrDocument> documentParamsConverter() { 163 163 return new DocumentParametersConverter(); 164 164 } 165 166 @Bean(name ="searchContextParamsConverter")167 public PageParametersConverter<SearchContext> searchContextParamsConverter() {165 166 @Bean(name = "searchContextParamsConverter") 167 public PageParametersConverter<SearchContext> searchContextParamsConverter() { 168 168 return new SearchContextParametersConverter(queryParametersConverter()); 169 169 } … … 203 203 } 204 204 205 @Bean(name = "documentFieldOrder") 206 public List<String> documentFieldOrder() { 207 return DOCUMENT_FIELDS; 208 } 209 205 210 /** 206 211 * Fields to request for documents. TODO: Make configurable? 212 * 207 213 */ 208 public static final Collection<String> DOCUMENT_FIELDS = ImmutableList.of(214 public static final List<String> DOCUMENT_FIELDS = ImmutableList.of( 209 215 FacetConstants.FIELD_NAME, 210 216 FacetConstants.FIELD_DESCRIPTION, -
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/pages/RecordPage.java
r5015 r5046 41 41 import eu.clarin.cmdi.vlo.wicket.panels.record.ResourceLinksPanel; 42 42 import eu.clarin.cmdi.vlo.wicket.provider.DocumentFieldsProvider; 43 import java.util.List; 43 44 import org.apache.solr.common.SolrDocument; 44 45 import org.apache.wicket.Component; … … 73 74 @SpringBean(name = "technicalPropertiesFilter") 74 75 private FieldFilter technicalPropertiesFilter; 76 @SpringBean(name = "documentFieldOrder") 77 private List<String> fieldOrder; 75 78 76 79 private final IModel<SearchContext> navigationModel; … … 131 134 add(new SolrFieldLabel("name", getModel(), FacetConstants.FIELD_NAME, "Unnamed record")); 132 135 add(createLandingPageLink("landingPageLink")); 133 add(new FieldsTablePanel("documentProperties", new DocumentFieldsProvider(getModel(), basicPropertiesFilter )));136 add(new FieldsTablePanel("documentProperties", new DocumentFieldsProvider(getModel(), basicPropertiesFilter, fieldOrder))); 134 137 135 138 // Resources section … … 246 249 @Override 247 250 protected Component createContent(String id) { 248 return new FieldsTablePanel(id, new DocumentFieldsProvider(getModel(), technicalPropertiesFilter ));251 return new FieldsTablePanel(id, new DocumentFieldsProvider(getModel(), technicalPropertiesFilter, fieldOrder)); 249 252 } 250 253 }; -
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/panels/search/SearchResultItemExpandedPanel.java
r5024 r5046 62 62 @SpringBean(name = "resolvingResourceStringConverter") 63 63 ResourceStringConverter resolvingResourceStringConverter; 64 @SpringBean(name = "documentFieldOrder") 65 private List<String> fieldOrder; 64 66 65 67 public SearchResultItemExpandedPanel(String id, final IModel<SolrDocument> documentModel, final IModel<SearchContext> selectionModel) { … … 74 76 75 77 // table with some basic properties 76 add(new FieldsTablePanel("documentProperties", new DocumentFieldsProvider(documentModel, propertiesFilter )) {78 add(new FieldsTablePanel("documentProperties", new DocumentFieldsProvider(documentModel, propertiesFilter, fieldOrder)) { 77 79 78 80 @Override -
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/provider/DocumentFieldsProvider.java
r4854 r5046 17 17 package eu.clarin.cmdi.vlo.wicket.provider; 18 18 19 import com.google.common.base.Function; 20 import com.google.common.collect.Ordering; 19 21 import eu.clarin.cmdi.vlo.pojo.DocumentField; 20 22 import eu.clarin.cmdi.vlo.service.FieldFilter; … … 39 41 private final FieldFilter fieldFilter; 40 42 private List<DocumentFieldModel> fields; 43 private final List<String> fieldOrder; 41 44 42 45 /** … … 44 47 * @param documentModel model that has the document containing the fields 45 48 * @param fieldFilter filter that decides which fields are included 49 * @param fieldOrder list of field names that determine the order 46 50 */ 47 public DocumentFieldsProvider(IModel<SolrDocument> documentModel, FieldFilter fieldFilter ) {51 public DocumentFieldsProvider(IModel<SolrDocument> documentModel, FieldFilter fieldFilter, List<String> fieldOrder) { 48 52 this.documentModel = documentModel; 49 53 this.fieldFilter = fieldFilter; 54 this.fieldOrder = fieldOrder; 50 55 } 51 56 … … 61 66 } 62 67 } 63 return fields; 68 69 if (fieldOrder == null) { 70 return fields; 71 } else { 72 return getFieldOrdering().sortedCopy(fields); 73 } 74 } 75 76 /** 77 * Makes an explicit ordering based on the field name of the document field. 78 * Note: this is not stored in the instance because the resulting Ordering 79 * is not serializable 80 * 81 * @return ordering for document fields 82 */ 83 private Ordering<DocumentField> getFieldOrdering() { 84 final Ordering<DocumentField> fieldOrdering = Ordering.explicit(fieldOrder).onResultOf(new Function<DocumentField, String>() { 85 86 @Override 87 public String apply(DocumentField input) { 88 return input.getFieldName(); 89 } 90 }); 91 return fieldOrdering; 64 92 } 65 93 -
vlo/branches/vlo-3.0/vlo-web-app/src/test/java/eu/clarin/cmdi/vlo/wicket/provider/DocumentFieldsProviderTest.java
r4854 r5046 17 17 package eu.clarin.cmdi.vlo.wicket.provider; 18 18 19 import com.google.common.collect.ImmutableList; 19 20 import eu.clarin.cmdi.vlo.pojo.DocumentField; 20 21 import eu.clarin.cmdi.vlo.service.FieldFilter; 21 22 import java.util.Iterator; 23 import java.util.List; 22 24 import org.apache.solr.common.SolrDocument; 23 25 import org.apache.wicket.model.Model; … … 51 53 document.addField("field4", "value4"); 52 54 53 instance = new DocumentFieldsProvider(Model.of(document), filter );55 instance = new DocumentFieldsProvider(Model.of(document), filter, null); 54 56 } 55 57 … … 70 72 oneOf(filter).allowField("field3"); 71 73 will(returnValue(true)); 72 74 73 75 oneOf(filter).allowField("field4"); 74 76 will(returnValue(true)); … … 77 79 // two items as field2 is excluded by the filter 78 80 assertEquals(3, instance.size()); 81 } 82 83 @Test 84 public void testOrder() { 85 // pass in a filter that allows all fields 86 final FieldFilter allowAllFilter = new FieldFilter() { 87 88 @Override 89 public boolean allowField(String fieldName) { 90 return true; 91 } 92 }; 93 94 // pass in an explicit field order 95 final List<String> order = ImmutableList.of("field4", "field2", "field1", "field3"); 96 instance = new DocumentFieldsProvider(Model.of(document), allowAllFilter, order); 97 98 final long first = 0L; 99 final long count = 100L; 100 final Iterator<? extends DocumentField> result = instance.iterator(first, count); 101 assertTrue(result.hasNext()); 102 assertEquals("field4", result.next().getFieldName()); 103 assertTrue(result.hasNext()); 104 assertEquals("field2", result.next().getFieldName()); 105 assertTrue(result.hasNext()); 106 assertEquals("field1", result.next().getFieldName()); 107 assertTrue(result.hasNext()); 108 assertEquals("field3", result.next().getFieldName()); 109 assertFalse(result.hasNext()); 79 110 } 80 111 … … 95 126 oneOf(filter).allowField("field3"); 96 127 will(returnValue(true)); 97 128 98 129 oneOf(filter).allowField("field4"); 99 130 will(returnValue(false));
Note: See TracChangeset
for help on using the changeset viewer.