Author: bleny Date: 2014-05-20 15:39:14 +0200 (Tue, 20 May 2014) New Revision: 1972 Url: http://forge.codelutin.com/projects/wao/repository/revisions/1972 Log: when getting samle rows filter values by json, reduce json size Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/SampleRowsFilterValues.java trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/SampleRowsFilterValuesJsonAction.java trunk/wao-web/src/main/webapp/wao.js Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/SampleRowsFilterValues.java =================================================================== --- trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/SampleRowsFilterValues.java 2014-05-20 12:14:21 UTC (rev 1971) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/SampleRowsFilterValues.java 2014-05-20 13:39:14 UTC (rev 1972) @@ -163,4 +163,19 @@ return targetSpeciesDcfs; } + public SampleRowsFilterValues getCopyWithSingleProperty(String propertyName) { + SampleRowsFilterValues copy = new SampleRowsFilterValues(locale, obsProgram, optionalCompanyId); + try { + // no setter, use field directly + Object value = copy.getClass().getDeclaredField(propertyName).get(this); + copy.getClass().getDeclaredField(propertyName).set(copy, value); + //Object value = PropertyUtils.getProperty(this, propertyName); + // BeanUtilsBean.getInstance().getPropertyUtils().setProperty(copy, propertyName, value); + } catch (IllegalAccessException e) { + throw new IllegalArgumentException("unable to access field '" + propertyName + "', on " + this, e); + } catch (NoSuchFieldException e) { + throw new IllegalArgumentException("no such field '" + propertyName + "', on " + this, e); + } + return copy; + } } Modified: trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/SampleRowsFilterValuesJsonAction.java =================================================================== --- trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/SampleRowsFilterValuesJsonAction.java 2014-05-20 12:14:21 UTC (rev 1971) +++ trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/SampleRowsFilterValuesJsonAction.java 2014-05-20 13:39:14 UTC (rev 1972) @@ -27,6 +27,7 @@ import fr.ifremer.wao.services.service.ObsMerSamplingPlanService; import fr.ifremer.wao.services.service.SampleRowsFilterValues; import fr.ifremer.wao.web.WaoJsonActionSupport; +import org.apache.commons.lang3.StringUtils; public class SampleRowsFilterValuesJsonAction extends WaoJsonActionSupport implements Preparable { @@ -38,6 +39,8 @@ protected SampleRowsFilterValues filterValues; + protected String filterValuesField; + public void setService(ObsMerSamplingPlanService service) { this.service = service; } @@ -49,6 +52,10 @@ return filter; } + public void setFilterValuesField(String filterValuesField) { + this.filterValuesField = filterValuesField; + } + @Override public void prepare() { @@ -63,9 +70,21 @@ filterValues = samplingPlan.getFilterValues(); + if (StringUtils.isNotBlank(filterValuesField)) { + + // le client ne demande qu'un seul champ, on peut éviter de retourner l'objet complet + + filterValues = filterValues.getCopyWithSingleProperty(filterValuesField); + + } + return SUCCESS; } + public String getFilterValuesField() { + return filterValuesField; + } + public SampleRowsFilterValues getFilterValues() { return filterValues; } Modified: trunk/wao-web/src/main/webapp/wao.js =================================================================== --- trunk/wao-web/src/main/webapp/wao.js 2014-05-20 12:14:21 UTC (rev 1971) +++ trunk/wao-web/src/main/webapp/wao.js 2014-05-20 13:39:14 UTC (rev 1972) @@ -236,7 +236,10 @@ var options = WAO.getNestedPropertyValue(oneFilterModel.filterMapping.filterValuesField, data.filterValues); oneFilterModel.setOptions(options); } - WAO.get(this.filterValuesUrl, filter, successCallback); + + var data = $.extend({}, filter, { filterValuesField: oneFilterModel.filterMapping.filterValuesField }); + + WAO.get(this.filterValuesUrl, data, successCallback); }; this.onSelectedOptionsUpdated = function (oneFilterModel) {