WIP fields parameter additionfields
This commit is contained in:
@@ -2,7 +2,10 @@ package org.mifosng.data;
|
||||
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
|
||||
import org.codehaus.jackson.map.annotate.JsonFilter;
|
||||
|
||||
@XmlRootElement
|
||||
@JsonFilter("myFilter")
|
||||
public class AdditionalFieldsSet {
|
||||
|
||||
private Integer id;
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
package org.mifosng.data;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
|
||||
@XmlRootElement
|
||||
public class AdditionalFieldsSets {
|
||||
|
||||
private List<AdditionalFieldsSet> additionalFieldsSets = new ArrayList<AdditionalFieldsSet>();
|
||||
|
||||
protected AdditionalFieldsSets() {
|
||||
//
|
||||
}
|
||||
|
||||
public AdditionalFieldsSets(final List<AdditionalFieldsSet> additionalFieldsSets) {
|
||||
this.additionalFieldsSets = additionalFieldsSets;
|
||||
}
|
||||
|
||||
public List<AdditionalFieldsSet> getAdditionalFieldsSets() {
|
||||
return additionalFieldsSets;
|
||||
}
|
||||
|
||||
public void setAdditionalFieldsSets(List<AdditionalFieldsSet> additionalFieldsSets) {
|
||||
this.additionalFieldsSets = additionalFieldsSets;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -53,28 +53,28 @@
|
||||
headingClassStr = ' class="' + displayAllVars.headingClass + '" ';
|
||||
|
||||
var extraDataNamesVar = "";
|
||||
for ( var i in data.additionalFieldsSets) {
|
||||
for ( var i in data) {
|
||||
var dsnDivName = generateDsnDivName(displayAllVars.datasetType, i,
|
||||
displayAllVars.datasetTypeDiv);
|
||||
extraDataNamesVar += '<br><span ' + headingClassStr + '><b>'
|
||||
+ doI18N(displayAllVars.headingPrefix)
|
||||
+ doI18N(data.additionalFieldsSets[i].name)
|
||||
+ doI18N(data[i].name)
|
||||
+ ' - </span></b> ';
|
||||
|
||||
extraDataNamesVar += editExtraDataLink(displayAllVars.url, displayAllVars.basicAuthKey,
|
||||
displayAllVars.datasetType,
|
||||
data.additionalFieldsSets[i].name,
|
||||
data[i].name,
|
||||
displayAllVars.datasetPKValue, dsnDivName);
|
||||
|
||||
extraDataNamesVar += '<div id="' + dsnDivName + '">';
|
||||
extraDataNamesVar += '</div>';
|
||||
}
|
||||
$('#' + displayAllVars.datasetTypeDiv).html(extraDataNamesVar);
|
||||
for ( var i in data.additionalFieldsSets) {
|
||||
for ( var i in data) {
|
||||
var dsnDivName = generateDsnDivName(displayAllVars.datasetType, i,
|
||||
displayAllVars.datasetTypeDiv);
|
||||
viewExtraData(displayAllVars.url, displayAllVars.basicAuthKey, displayAllVars.datasetType,
|
||||
data.additionalFieldsSets[i].name,
|
||||
data[i].name,
|
||||
displayAllVars.datasetPKValue, dsnDivName);
|
||||
}
|
||||
|
||||
|
||||
+3
-2
@@ -1,10 +1,11 @@
|
||||
package org.mifosng.platform;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.ws.rs.core.StreamingOutput;
|
||||
|
||||
import org.mifosng.data.AdditionalFieldsSets;
|
||||
import org.mifosng.data.AdditionalFieldsSet;
|
||||
import org.mifosng.data.reports.GenericResultset;
|
||||
|
||||
public interface ReadExtraDataAndReportingService {
|
||||
@@ -16,7 +17,7 @@ public interface ReadExtraDataAndReportingService {
|
||||
GenericResultset retrieveGenericResultset(String name, String type,
|
||||
Map<String, String> extractedQueryParams);
|
||||
|
||||
AdditionalFieldsSets retrieveExtraDatasetNames(String type);
|
||||
List<AdditionalFieldsSet> retrieveExtraDatasetNames(String type);
|
||||
|
||||
GenericResultset retrieveExtraData(String type, String set, Long id);
|
||||
|
||||
|
||||
+3
-5
@@ -17,7 +17,6 @@ import javax.sql.DataSource;
|
||||
import javax.ws.rs.core.StreamingOutput;
|
||||
|
||||
import org.mifosng.data.AdditionalFieldsSet;
|
||||
import org.mifosng.data.AdditionalFieldsSets;
|
||||
import org.mifosng.data.reports.GenericResultset;
|
||||
import org.mifosng.data.reports.ResultsetColumnHeader;
|
||||
import org.mifosng.data.reports.ResultsetDataRow;
|
||||
@@ -331,7 +330,7 @@ public class ReadExtraDataAndReportingServiceImpl implements
|
||||
}
|
||||
|
||||
@Override
|
||||
public AdditionalFieldsSets retrieveExtraDatasetNames(String type) {
|
||||
public List<AdditionalFieldsSet> retrieveExtraDatasetNames(String type) {
|
||||
|
||||
List<AdditionalFieldsSet> additionalFieldsSets = new ArrayList<AdditionalFieldsSet>();
|
||||
|
||||
@@ -366,7 +365,7 @@ public class ReadExtraDataAndReportingServiceImpl implements
|
||||
"Additional Fields Type: " + type);
|
||||
}
|
||||
|
||||
return new AdditionalFieldsSets(additionalFieldsSets);
|
||||
return additionalFieldsSets;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -598,8 +597,7 @@ public class ReadExtraDataAndReportingServiceImpl implements
|
||||
String transType = null;
|
||||
|
||||
String sql = "select s.id from `" + type + "` t left join `"
|
||||
+ fullDatasetName + "` s on s.id = t.id where t.id = "
|
||||
+ id;
|
||||
+ fullDatasetName + "` s on s.id = t.id where t.id = " + id;
|
||||
|
||||
try {
|
||||
Connection db_connection = dataSource.getConnection();
|
||||
|
||||
+39
-21
@@ -11,23 +11,22 @@ import javax.ws.rs.POST;
|
||||
import javax.ws.rs.Path;
|
||||
import javax.ws.rs.PathParam;
|
||||
import javax.ws.rs.Produces;
|
||||
import javax.ws.rs.QueryParam;
|
||||
import javax.ws.rs.WebApplicationException;
|
||||
import javax.ws.rs.core.Context;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.MultivaluedMap;
|
||||
import javax.ws.rs.core.Response;
|
||||
import javax.ws.rs.core.Response.Status;
|
||||
import javax.ws.rs.core.UriInfo;
|
||||
|
||||
import org.codehaus.jettison.json.JSONArray;
|
||||
import org.codehaus.jettison.json.JSONException;
|
||||
import org.codehaus.jettison.json.JSONObject;
|
||||
import org.mifosng.data.AdditionalFieldsSets;
|
||||
import org.mifosng.data.AdditionalFieldsSet;
|
||||
import org.mifosng.data.ApiParameterError;
|
||||
import org.mifosng.data.EntityIdentifier;
|
||||
import org.mifosng.data.reports.GenericResultset;
|
||||
import org.mifosng.platform.InvalidSqlException;
|
||||
import org.mifosng.platform.ReadExtraDataAndReportingService;
|
||||
import org.mifosng.platform.api.infrastructure.ApiJSONFormattingService;
|
||||
import org.mifosng.platform.exceptions.PlatformApiDataValidationException;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@@ -40,23 +39,35 @@ import org.springframework.stereotype.Component;
|
||||
@Scope("singleton")
|
||||
public class AdditionalFieldsApiResource {
|
||||
|
||||
private final static Logger logger = LoggerFactory.getLogger(AdditionalFieldsApiResource.class);
|
||||
private final static Logger logger = LoggerFactory
|
||||
.getLogger(AdditionalFieldsApiResource.class);
|
||||
|
||||
@Autowired
|
||||
private ReadExtraDataAndReportingService readExtraDataAndReportingService;
|
||||
|
||||
@Autowired
|
||||
private ApiJSONFormattingService jsonFormattingService;
|
||||
|
||||
@GET
|
||||
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
|
||||
@Produces({ MediaType.APPLICATION_JSON })
|
||||
public Response datasets(@Context UriInfo uriInfo) {
|
||||
public String datasets(@QueryParam("type") String type,
|
||||
@QueryParam("fields") String fields,
|
||||
@QueryParam("pretty") String pretty) {
|
||||
|
||||
MultivaluedMap<String, String> queryParams = uriInfo
|
||||
.getQueryParameters();
|
||||
String type = queryParams.getFirst("type");
|
||||
|
||||
AdditionalFieldsSets result = this.readExtraDataAndReportingService
|
||||
List<AdditionalFieldsSet> result = this.readExtraDataAndReportingService
|
||||
.retrieveExtraDatasetNames(type);
|
||||
return Response.ok().entity(result).build();
|
||||
|
||||
String filterType = "E";
|
||||
String fieldList = "";
|
||||
if (this.jsonFormattingService.isPassed(fields)) {
|
||||
filterType = "I";
|
||||
fieldList = fields;
|
||||
}
|
||||
|
||||
return this.jsonFormattingService.convertDataObjectJSON(result,
|
||||
filterType, fieldList,
|
||||
this.jsonFormattingService.isTrue(pretty));
|
||||
}
|
||||
|
||||
@GET
|
||||
@@ -64,8 +75,7 @@ public class AdditionalFieldsApiResource {
|
||||
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
|
||||
@Produces({ MediaType.APPLICATION_JSON })
|
||||
public Response extraData(@PathParam("type") final String type,
|
||||
@PathParam("set") final String set,
|
||||
@PathParam("id") final Long id) {
|
||||
@PathParam("set") final String set, @PathParam("id") final Long id) {
|
||||
|
||||
try {
|
||||
GenericResultset result = this.readExtraDataAndReportingService
|
||||
@@ -74,9 +84,13 @@ public class AdditionalFieldsApiResource {
|
||||
return Response.ok().entity(result).build();
|
||||
} catch (InvalidSqlException e) {
|
||||
List<ApiParameterError> dataValidationErrors = new ArrayList<ApiParameterError>();
|
||||
ApiParameterError error = ApiParameterError.parameterError("extradata.invalid.sql", "The sql is invalid.", "sql", e.getSql());
|
||||
ApiParameterError error = ApiParameterError.parameterError(
|
||||
"extradata.invalid.sql", "The sql is invalid.", "sql",
|
||||
e.getSql());
|
||||
dataValidationErrors.add(error);
|
||||
throw new PlatformApiDataValidationException("validation.msg.validation.errors.exist", "Validation errors exist.", dataValidationErrors);
|
||||
throw new PlatformApiDataValidationException(
|
||||
"validation.msg.validation.errors.exist",
|
||||
"Validation errors exist.", dataValidationErrors);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -85,8 +99,8 @@ public class AdditionalFieldsApiResource {
|
||||
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
|
||||
@Produces({ MediaType.APPLICATION_JSON })
|
||||
public Response saveExtraData(@PathParam("type") final String type,
|
||||
@PathParam("set") final String set,
|
||||
@PathParam("id") final Long id, String reqbody) {
|
||||
@PathParam("set") final String set, @PathParam("id") final Long id,
|
||||
String reqbody) {
|
||||
|
||||
try {
|
||||
|
||||
@@ -122,11 +136,15 @@ public class AdditionalFieldsApiResource {
|
||||
|
||||
return Response.ok().entity(entityIdentifier).build();
|
||||
} catch (InvalidSqlException e) {
|
||||
|
||||
|
||||
List<ApiParameterError> dataValidationErrors = new ArrayList<ApiParameterError>();
|
||||
ApiParameterError error = ApiParameterError.parameterError("extradata.invalid.sql", "The sql is invalid.", "sql", e.getSql());
|
||||
ApiParameterError error = ApiParameterError.parameterError(
|
||||
"extradata.invalid.sql", "The sql is invalid.", "sql",
|
||||
e.getSql());
|
||||
dataValidationErrors.add(error);
|
||||
throw new PlatformApiDataValidationException("validation.msg.validation.errors.exist", "Validation errors exist.", dataValidationErrors);
|
||||
throw new PlatformApiDataValidationException(
|
||||
"validation.msg.validation.errors.exist",
|
||||
"Validation errors exist.", dataValidationErrors);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,6 @@
|
||||
package org.mifosng.platform.api;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.ws.rs.Consumes;
|
||||
import javax.ws.rs.GET;
|
||||
@@ -53,11 +51,15 @@ public class OfficeApiResource {
|
||||
Collection<OfficeData> offices = this.readPlatformService
|
||||
.retrieveAllOffices();
|
||||
|
||||
Set<String> excludeFields = new HashSet<String>();
|
||||
excludeFields.add("allowedParents");
|
||||
String filterType = "E";
|
||||
String fieldList = "allowedParents";
|
||||
if (this.jsonFormattingService.isPassed(fields)) {
|
||||
filterType = "I";
|
||||
fieldList = fields;
|
||||
}
|
||||
|
||||
return this.jsonFormattingService.convertDataObjectJSON(offices,
|
||||
fields, excludeFields,
|
||||
filterType, fieldList,
|
||||
this.jsonFormattingService.isTrue(pretty));
|
||||
}
|
||||
|
||||
@@ -70,11 +72,11 @@ public class OfficeApiResource {
|
||||
OfficeData officeData = this.readPlatformService
|
||||
.retrieveNewOfficeTemplate();
|
||||
|
||||
Set<String> excludeFields = new HashSet<String>();
|
||||
String includeFields = "openingDate,allowedParents";
|
||||
String filterType = "I";
|
||||
String fieldList = "openingDate,allowedParents";
|
||||
|
||||
return this.jsonFormattingService.convertDataObjectJSON(officeData,
|
||||
includeFields, excludeFields,
|
||||
filterType, fieldList,
|
||||
this.jsonFormattingService.isTrue(pretty));
|
||||
}
|
||||
|
||||
@@ -102,26 +104,31 @@ public class OfficeApiResource {
|
||||
@QueryParam("template") String template,
|
||||
@QueryParam("pretty") String pretty) {
|
||||
|
||||
String includeFields = fields;
|
||||
Set<String> excludeFields = new HashSet<String>();
|
||||
OfficeData office = this.readPlatformService.retrieveOffice(officeId);
|
||||
|
||||
String filterType = "E";
|
||||
String fieldList = "";
|
||||
if (this.jsonFormattingService.isPassed(fields)) {
|
||||
filterType = "I";
|
||||
fieldList = fields;
|
||||
}
|
||||
|
||||
if (this.jsonFormattingService.isTrue(template)) {
|
||||
office.setAllowedParents(this.readPlatformService
|
||||
.retrieveAllowedParents(officeId));
|
||||
|
||||
if (this.jsonFormattingService.isPassed(includeFields)) {
|
||||
includeFields += ",allowedParents";
|
||||
if (this.jsonFormattingService.isPassed(fields)) {
|
||||
fieldList += ",allowedParents";
|
||||
}
|
||||
|
||||
} else {
|
||||
if (!(this.jsonFormattingService.isPassed(includeFields))) {
|
||||
excludeFields.add("allowedParents");
|
||||
if (!(this.jsonFormattingService.isPassed(fields))) {
|
||||
fieldList = "allowedParents";
|
||||
}
|
||||
}
|
||||
|
||||
return this.jsonFormattingService.convertDataObjectJSON(office,
|
||||
includeFields, excludeFields,
|
||||
filterType, fieldList,
|
||||
this.jsonFormattingService.isTrue(pretty));
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -4,8 +4,8 @@ import java.util.Set;
|
||||
|
||||
public interface ApiJSONFormattingService {
|
||||
|
||||
String convertDataObjectJSON(Object dataObject, String fields,
|
||||
Set<String> excludeFields, boolean prettyOutput);
|
||||
String convertDataObjectJSON(Object dataObject, String filterType,
|
||||
String fields, boolean prettyOutput);
|
||||
|
||||
Boolean isTrue(String param);
|
||||
|
||||
|
||||
+12
-18
@@ -13,44 +13,38 @@ import org.codehaus.jackson.map.ser.FilterProvider;
|
||||
import org.codehaus.jackson.map.ser.impl.SimpleBeanPropertyFilter;
|
||||
import org.codehaus.jackson.map.ser.impl.SimpleFilterProvider;
|
||||
import org.mifosng.platform.exceptions.PlatformInternalServerException;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class ApiJSONFormattingServiceImpl implements ApiJSONFormattingService {
|
||||
|
||||
private final static Logger logger = LoggerFactory
|
||||
.getLogger(ApiJSONFormattingServiceImpl.class);
|
||||
|
||||
@Override
|
||||
public String convertDataObjectJSON(Object dataObject, String fields,
|
||||
Set<String> excludeFields, boolean prettyOutput) {
|
||||
public String convertDataObjectJSON(Object dataObject, String filterType,
|
||||
String fields, boolean prettyOutput) {
|
||||
|
||||
try {
|
||||
String json = "";
|
||||
String myFilter = "myFilter";
|
||||
Set<String> includeFields = new HashSet<String>();
|
||||
FilterProvider filters = null;
|
||||
Set<String> filterFields = new HashSet<String>();
|
||||
|
||||
if (fields == null || fields.equals("")) {
|
||||
StringTokenizer st = new StringTokenizer(fields, ",");
|
||||
while (st.hasMoreTokens()) {
|
||||
filterFields.add(st.nextToken().trim());
|
||||
}
|
||||
|
||||
if (filterType.equals("I")) {
|
||||
filters = new SimpleFilterProvider().addFilter(myFilter,
|
||||
SimpleBeanPropertyFilter
|
||||
.serializeAllExcept(excludeFields));
|
||||
.filterOutAllExcept(filterFields));
|
||||
|
||||
} else {
|
||||
|
||||
StringTokenizer st = new StringTokenizer(fields, ",");
|
||||
while (st.hasMoreTokens()) {
|
||||
includeFields.add(st.nextToken().trim());
|
||||
}
|
||||
|
||||
filters = new SimpleFilterProvider().addFilter(myFilter,
|
||||
SimpleBeanPropertyFilter
|
||||
.filterOutAllExcept(includeFields));
|
||||
.serializeAllExcept(filterFields));
|
||||
}
|
||||
ObjectWriter jsonWriter = null;
|
||||
|
||||
ObjectWriter jsonWriter = null;
|
||||
if (prettyOutput) {
|
||||
jsonWriter = new ObjectMapper()
|
||||
.writerWithDefaultPrettyPrinter();
|
||||
|
||||
Reference in New Issue
Block a user