Merge pull request #23 from mdudzinski/MIFOSX-41

MIFOSX-41: API fix.
This commit is contained in:
John Woodlock
2012-08-27 18:24:26 -07:00
4 changed files with 53 additions and 19 deletions
@@ -57,12 +57,19 @@ public class ChargesApiResource {
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON})
public String retrieveCharge(@PathParam("chargeId") final Long chargeId, @Context final UriInfo uriInfo){
Set<String> responseParameters = ApiParameterHelper.extractFieldsForResponseIfProvided(uriInfo.getQueryParameters());
boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
boolean template = ApiParameterHelper.template(uriInfo.getQueryParameters());
ChargeData charge = this.chargeReadPlatformService.retrieveCharge(chargeId);
if (template){
ChargeData templateData = this.chargeReadPlatformService.retrieveNewChargeDetails();
charge = new ChargeData(charge, templateData);
}
return this.apiJsonSerializerService.serializeChargeDataToJson(prettyPrint, responseParameters, charge);
}
@@ -71,16 +78,8 @@ public class ChargesApiResource {
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON})
public String retrieveNewChargeDetails(@Context final UriInfo uriInfo) {
Set<String> typicalResponseParameters = new HashSet<String>(
Arrays.asList("id", "name", "amount", "currency", "active", "chargeAppliesTo", "chargeTimeType",
"chargeCalculationType", "chargeCalculationTypeOptions", "currencyOptions")
);
Set<String> responseParameters = ApiParameterHelper.extractFieldsForResponseIfProvided(uriInfo.getQueryParameters());
if (responseParameters.isEmpty()) {
responseParameters.addAll(typicalResponseParameters);
}
boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
ChargeData chargeData = this.chargeReadPlatformService.retrieveNewChargeDetails();
@@ -19,16 +19,29 @@ public class ChargeData {
private final List<CurrencyData> currencyOptions;
private final List<EnumOptionData> chargeCalculationTypeOptions;
private final List<EnumOptionData> chargeAppliesToOptions;
private final List<EnumOptionData> chargeTimeTypeOptions;
public static ChargeData template(
final CurrencyData currency,
final EnumOptionData chargeTimeType,
final EnumOptionData chargeAppliesToType,
final EnumOptionData chargeCalculationType,
final List<CurrencyData> currencyOptions,
final List<EnumOptionData> chargeCalculationTypeOptions) {
return new ChargeData(null, null, null, null, chargeTimeType, chargeAppliesToType, chargeCalculationType, false, currencyOptions, chargeCalculationTypeOptions);
final List<EnumOptionData> chargeCalculationTypeOptions,
final List<EnumOptionData> chargeAppliesToOptions,
final List<EnumOptionData> chargeTimeTypeOptions) {
return new ChargeData(null, null, null, currency, chargeTimeType, chargeAppliesToType, chargeCalculationType, false,
currencyOptions, chargeCalculationTypeOptions, chargeAppliesToOptions, chargeTimeTypeOptions);
}
public ChargeData(ChargeData charge, ChargeData template){
this(charge.getId(), charge.getName(), charge.getAmount(), charge.getCurrency(), charge.getChargeTimeType(),
charge.getChargeAppliesTo(), charge.getChargeCalculationType(), charge.isActive(),
template.getCurrencyOptions(), template.getChargeCalculationTypeOptions(),
template.getChargeAppliesToOptions(), template.getChargeTimeTypeOptions());
}
public ChargeData(final Long id, final String name,
final BigDecimal amount, final CurrencyData currency,
final EnumOptionData chargeTimeType,
@@ -44,6 +57,8 @@ public class ChargeData {
this.active = active;
this.currencyOptions = null;
this.chargeCalculationTypeOptions = null;
this.chargeAppliesToOptions = null;
this.chargeTimeTypeOptions = null;
}
public ChargeData(final Long id, final String name,
@@ -52,7 +67,9 @@ public class ChargeData {
final EnumOptionData chargeAppliesTo,
final EnumOptionData chargeCalculationType, final boolean active,
final List<CurrencyData> currencyOptions,
final List<EnumOptionData> chargeCalculationTypeOptions) {
final List<EnumOptionData> chargeCalculationTypeOptions,
final List<EnumOptionData> chargeAppliesToOptions,
final List<EnumOptionData> chargeTimeTypeOptions) {
this.id = id;
this.name = name;
this.amount = amount;
@@ -63,6 +80,8 @@ public class ChargeData {
this.active = active;
this.currencyOptions = currencyOptions;
this.chargeCalculationTypeOptions = chargeCalculationTypeOptions;
this.chargeAppliesToOptions = chargeAppliesToOptions;
this.chargeTimeTypeOptions = chargeTimeTypeOptions;
}
public Long getId() {
@@ -104,4 +123,12 @@ public class ChargeData {
public List<EnumOptionData> getChargeCalculationTypeOptions() {
return chargeCalculationTypeOptions;
}
public List<EnumOptionData> getChargeAppliesToOptions() {
return chargeAppliesToOptions;
}
public List<EnumOptionData> getChargeTimeTypeOptions() {
return chargeTimeTypeOptions;
}
}
@@ -159,7 +159,7 @@ public class GoogleGsonApiJsonSerializerService implements
Arrays.asList("id", "name", "amount", "currency", "active",
"chargeAppliesTo", "chargeTimeType",
"chargeCalculationType", "chargeCalculationTypeOptions",
"currencyOptions"));
"chargeAppliesToOptions", "chargeTimeTypeOptions", "currencyOptions"));
private final GoogleGsonSerializerHelper helper;
@@ -75,17 +75,25 @@ public class ChargeReadPlatformServiceImpl implements ChargeReadPlatformService
this.context.authenticatedUser();
List<CurrencyData> currencyOptions = currencyReadPlatformService.retrieveAllowedCurrencies();
List<EnumOptionData> allowedChargeCalculationMethods = Arrays.asList(
CurrencyData currency = new CurrencyData("", "", 0, "", "");
EnumOptionData allowedChargeCalculationType = chargeCalculationType(ChargeCalculationMethod.FLAT);
List<EnumOptionData> allowedChargeCalculationMethodsOptions = Arrays.asList(
chargeCalculationType(ChargeCalculationMethod.FLAT),
chargeCalculationType(ChargeCalculationMethod.PERCENT_OF_AMOUNT),
chargeCalculationType(ChargeCalculationMethod.PERCENT_OF_AMOUNT_AND_INTEREST),
chargeCalculationType(ChargeCalculationMethod.PERCENT_OF_INTEREST)
);
EnumOptionData allowedChargeAppliesTo = chargeAppliesTo(ChargeAppliesTo.LOAN);
EnumOptionData allowedChargeTime = chargeTimeType(ChargeTimeType.DISBURSEMENT);
EnumOptionData allowedChargeCalculationType = chargeCalculationType(ChargeCalculationMethod.FLAT);
return ChargeData.template(allowedChargeTime, allowedChargeAppliesTo, allowedChargeCalculationType, currencyOptions, allowedChargeCalculationMethods);
EnumOptionData allowedChargeAppliesTo = chargeAppliesTo(ChargeAppliesTo.LOAN);
List<EnumOptionData> allowedChargeAppliesToOptions = Arrays.asList(allowedChargeAppliesTo);
EnumOptionData allowedChargeTime = chargeTimeType(ChargeTimeType.DISBURSEMENT);
List<EnumOptionData> allowedChargeTimeOptions = Arrays.asList(allowedChargeTime);
return ChargeData.template(currency, allowedChargeTime, allowedChargeAppliesTo, allowedChargeCalculationType,
currencyOptions, allowedChargeCalculationMethodsOptions,
allowedChargeAppliesToOptions, allowedChargeTimeOptions);
}
private static final class ChargeMapper implements RowMapper<ChargeData> {