From fb0c18a14b730a3e643c0296d41a3206dc01066e Mon Sep 17 00:00:00 2001 From: John Woodlock Date: Thu, 7 Jun 2012 02:43:56 +1000 Subject: [PATCH] WIP associations parameter --- .../ApiJSONFormattingService.java | 9 ++++- .../ApiJSONFormattingServiceImpl.java | 39 +++++++++++++++++++ 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiJSONFormattingService.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiJSONFormattingService.java index 4c60ba455..b1a604a3b 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiJSONFormattingService.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiJSONFormattingService.java @@ -4,7 +4,12 @@ import javax.ws.rs.core.MultivaluedMap; public interface ApiJSONFormattingService { - String convertRequest(Object dataObject, String filterName, String allowedFieldList, - String selectedFields, MultivaluedMap queryParams); + String convertRequest(Object dataObject, String filterName, + String allowedFieldList, String selectedFields, + MultivaluedMap queryParams); + + String convertRequest(Object dataObject, String filterName, + String allowedFieldList, String selectedFields, + String associationFields, MultivaluedMap queryParams); } diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiJSONFormattingServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiJSONFormattingServiceImpl.java index d8f0b9e8c..70765fb12 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiJSONFormattingServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/infrastructure/ApiJSONFormattingServiceImpl.java @@ -25,6 +25,32 @@ public class ApiJSONFormattingServiceImpl implements ApiJSONFormattingService { String allowedFieldList, String selectedFields, MultivaluedMap queryParams) { + String associationFields = ""; + return convertRequestCommon(dataObject, filterName, allowedFieldList, + selectedFields, associationFields, queryParams); + + } + + @Override + public String convertRequest(Object dataObject, String filterName, + String allowedFieldList, String selectedFields, + String associationFields, MultivaluedMap queryParams) { + + return convertRequestCommon(dataObject, filterName, allowedFieldList, + selectedFields, associationFields, queryParams); + + } + + private String convertRequestCommon(Object dataObject, String filterName, + String allowedFieldList, String selectedFields, + String associationFields, MultivaluedMap queryParams) { + + // filterType E means Exclude : used where no restriction on the basic + // fields in the java object and has the effect of returning all fields + // in the object + // filterType I mean Include : used when a specific list of fields is to + // be returned. + String filterType = "E"; String fieldList = ""; String fields = queryParams.getFirst("fields"); @@ -73,6 +99,19 @@ public class ApiJSONFormattingServiceImpl implements ApiJSONFormattingService { fieldList = allowedFieldList; } + if (isTrue(queryParams.getFirst("associations"))) { + // assume ALL for moment + if (filterType.equals("I")) + fieldList += "," + associationFields; + } else { + if (filterType.equals("E")) { + if (fieldList.equals("")) + fieldList = associationFields; + else + fieldList += "," + associationFields; + } + } + return convertDataObjectJSON(dataObject, filterName, filterType, fieldList, isTrue(queryParams.getFirst("pretty"))); }