/aws-android-sdk-location/src/main/java/com/amazonaws/services/geo/model/transform/CalculateRouteMatrixRequestMarshaller.java

https://github.com/aws/aws-sdk-android · Java · 156 lines · 128 code · 11 blank · 17 comment · 32 complexity · 41b2a6ecdb9c1e1858e3880ff15af0d5 MD5 · raw file

  1. /*
  2. * Copyright 2010-2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License").
  5. * You may not use this file except in compliance with the License.
  6. * A copy of the License is located at
  7. *
  8. * http://aws.amazon.com/apache2.0
  9. *
  10. * or in the "license" file accompanying this file. This file is distributed
  11. * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
  12. * express or implied. See the License for the specific language governing
  13. * permissions and limitations under the License.
  14. */
  15. package com.amazonaws.services.geo.model.transform;
  16. import static com.amazonaws.util.StringUtils.UTF8;
  17. import java.io.ByteArrayInputStream;
  18. import java.io.ByteArrayOutputStream;
  19. import java.io.OutputStreamWriter;
  20. import java.io.StringWriter;
  21. import java.io.Writer;
  22. import android.text.TextUtils;
  23. import com.amazonaws.AmazonClientException;
  24. import com.amazonaws.Request;
  25. import com.amazonaws.DefaultRequest;
  26. import com.amazonaws.http.HttpMethodName;
  27. import com.amazonaws.services.geo.model.*;
  28. import com.amazonaws.transform.Marshaller;
  29. import com.amazonaws.util.BinaryUtils;
  30. import com.amazonaws.util.DateUtils;
  31. import com.amazonaws.util.StringUtils;
  32. import com.amazonaws.util.StringInputStream;
  33. import com.amazonaws.util.json.AwsJsonWriter;
  34. import com.amazonaws.util.json.JsonUtils;
  35. /**
  36. * JSON request marshaller for CalculateRouteMatrixRequest
  37. */
  38. public class CalculateRouteMatrixRequestMarshaller implements
  39. Marshaller<Request<CalculateRouteMatrixRequest>, CalculateRouteMatrixRequest> {
  40. public Request<CalculateRouteMatrixRequest> marshall(
  41. CalculateRouteMatrixRequest calculateRouteMatrixRequest) {
  42. if (calculateRouteMatrixRequest == null) {
  43. throw new AmazonClientException(
  44. "Invalid argument passed to marshall(CalculateRouteMatrixRequest)");
  45. }
  46. Request<CalculateRouteMatrixRequest> request = new DefaultRequest<CalculateRouteMatrixRequest>(
  47. calculateRouteMatrixRequest, "AmazonLocation");
  48. request.setHttpMethod(HttpMethodName.POST);
  49. String uriResourcePath = "/routes/v0/calculators/{CalculatorName}/calculate/route-matrix";
  50. uriResourcePath = uriResourcePath.replace(
  51. "{CalculatorName}",
  52. (calculateRouteMatrixRequest.getCalculatorName() == null) ? "" : StringUtils
  53. .fromString(calculateRouteMatrixRequest.getCalculatorName()));
  54. request.setResourcePath(uriResourcePath);
  55. try {
  56. StringWriter stringWriter = new StringWriter();
  57. AwsJsonWriter jsonWriter = JsonUtils.getJsonWriter(stringWriter);
  58. jsonWriter.beginObject();
  59. if (calculateRouteMatrixRequest.getCarModeOptions() != null) {
  60. CalculateRouteCarModeOptions carModeOptions = calculateRouteMatrixRequest
  61. .getCarModeOptions();
  62. jsonWriter.name("CarModeOptions");
  63. CalculateRouteCarModeOptionsJsonMarshaller.getInstance().marshall(carModeOptions,
  64. jsonWriter);
  65. }
  66. if (calculateRouteMatrixRequest.getDepartNow() != null) {
  67. Boolean departNow = calculateRouteMatrixRequest.getDepartNow();
  68. jsonWriter.name("DepartNow");
  69. jsonWriter.value(departNow);
  70. }
  71. if (calculateRouteMatrixRequest.getDeparturePositions() != null) {
  72. java.util.List<java.util.List<Double>> departurePositions = calculateRouteMatrixRequest
  73. .getDeparturePositions();
  74. jsonWriter.name("DeparturePositions");
  75. jsonWriter.beginArray();
  76. for (java.util.List<Double> departurePositionsItem : departurePositions) {
  77. if (departurePositionsItem != null) {
  78. jsonWriter.beginArray();
  79. for (Double departurePositionsItemItem : departurePositionsItem) {
  80. if (departurePositionsItemItem != null) {
  81. jsonWriter.value(departurePositionsItemItem);
  82. }
  83. }
  84. jsonWriter.endArray();
  85. }
  86. }
  87. jsonWriter.endArray();
  88. }
  89. if (calculateRouteMatrixRequest.getDepartureTime() != null) {
  90. java.util.Date departureTime = calculateRouteMatrixRequest.getDepartureTime();
  91. jsonWriter.name("DepartureTime");
  92. jsonWriter.value(DateUtils.formatISO8601Date(departureTime));
  93. }
  94. if (calculateRouteMatrixRequest.getDestinationPositions() != null) {
  95. java.util.List<java.util.List<Double>> destinationPositions = calculateRouteMatrixRequest
  96. .getDestinationPositions();
  97. jsonWriter.name("DestinationPositions");
  98. jsonWriter.beginArray();
  99. for (java.util.List<Double> destinationPositionsItem : destinationPositions) {
  100. if (destinationPositionsItem != null) {
  101. jsonWriter.beginArray();
  102. for (Double destinationPositionsItemItem : destinationPositionsItem) {
  103. if (destinationPositionsItemItem != null) {
  104. jsonWriter.value(destinationPositionsItemItem);
  105. }
  106. }
  107. jsonWriter.endArray();
  108. }
  109. }
  110. jsonWriter.endArray();
  111. }
  112. if (calculateRouteMatrixRequest.getDistanceUnit() != null) {
  113. String distanceUnit = calculateRouteMatrixRequest.getDistanceUnit();
  114. jsonWriter.name("DistanceUnit");
  115. jsonWriter.value(distanceUnit);
  116. }
  117. if (calculateRouteMatrixRequest.getTravelMode() != null) {
  118. String travelMode = calculateRouteMatrixRequest.getTravelMode();
  119. jsonWriter.name("TravelMode");
  120. jsonWriter.value(travelMode);
  121. }
  122. if (calculateRouteMatrixRequest.getTruckModeOptions() != null) {
  123. CalculateRouteTruckModeOptions truckModeOptions = calculateRouteMatrixRequest
  124. .getTruckModeOptions();
  125. jsonWriter.name("TruckModeOptions");
  126. CalculateRouteTruckModeOptionsJsonMarshaller.getInstance().marshall(
  127. truckModeOptions, jsonWriter);
  128. }
  129. jsonWriter.endObject();
  130. jsonWriter.close();
  131. String snippet = stringWriter.toString();
  132. byte[] content = snippet.getBytes(UTF8);
  133. request.setContent(new StringInputStream(snippet));
  134. request.addHeader("Content-Length", Integer.toString(content.length));
  135. } catch (Throwable t) {
  136. throw new AmazonClientException(
  137. "Unable to marshall request to JSON: " + t.getMessage(), t);
  138. }
  139. if (!request.getHeaders().containsKey("Content-Type")) {
  140. request.addHeader("Content-Type", "application/x-amz-json-1.1");
  141. }
  142. request.setHostPrefix("routes.");
  143. return request;
  144. }
  145. }