PageRenderTime 38ms CodeModel.GetById 11ms RepoModel.GetById 0ms app.codeStats 0ms

/modules/apps/commerce/headless/headless-commerce/headless-commerce-delivery-catalog-client/src/main/java/com/liferay/headless/commerce/delivery/catalog/client/serdes/v1_0/SkuSerDes.java

https://github.com/ealonso/liferay-portal
Java | 663 lines | 504 code | 142 blank | 17 comment | 208 complexity | a2abc7fab12e2877cd31289435752523 MD5 | raw file
  1. /**
  2. * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
  3. *
  4. * This library is free software; you can redistribute it and/or modify it under
  5. * the terms of the GNU Lesser General Public License as published by the Free
  6. * Software Foundation; either version 2.1 of the License, or (at your option)
  7. * any later version.
  8. *
  9. * This library is distributed in the hope that it will be useful, but WITHOUT
  10. * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
  11. * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
  12. * details.
  13. */
  14. package com.liferay.headless.commerce.delivery.catalog.client.serdes.v1_0;
  15. import com.liferay.headless.commerce.delivery.catalog.client.dto.v1_0.Sku;
  16. import com.liferay.headless.commerce.delivery.catalog.client.dto.v1_0.SkuOption;
  17. import com.liferay.headless.commerce.delivery.catalog.client.json.BaseJSONParser;
  18. import java.text.DateFormat;
  19. import java.text.SimpleDateFormat;
  20. import java.util.Iterator;
  21. import java.util.Map;
  22. import java.util.Objects;
  23. import java.util.Set;
  24. import java.util.TreeMap;
  25. import java.util.stream.Stream;
  26. import javax.annotation.Generated;
  27. /**
  28. * @author Andrea Sbarra
  29. * @generated
  30. */
  31. @Generated("")
  32. public class SkuSerDes {
  33. public static Sku toDTO(String json) {
  34. SkuJSONParser skuJSONParser = new SkuJSONParser();
  35. return skuJSONParser.parseToDTO(json);
  36. }
  37. public static Sku[] toDTOs(String json) {
  38. SkuJSONParser skuJSONParser = new SkuJSONParser();
  39. return skuJSONParser.parseToDTOs(json);
  40. }
  41. public static String toJSON(Sku sku) {
  42. if (sku == null) {
  43. return "null";
  44. }
  45. StringBuilder sb = new StringBuilder();
  46. sb.append("{");
  47. DateFormat liferayToJSONDateFormat = new SimpleDateFormat(
  48. "yyyy-MM-dd'T'HH:mm:ssXX");
  49. if (sku.getAllowedOrderQuantities() != null) {
  50. if (sb.length() > 1) {
  51. sb.append(", ");
  52. }
  53. sb.append("\"allowedOrderQuantities\": ");
  54. sb.append("[");
  55. for (int i = 0; i < sku.getAllowedOrderQuantities().length; i++) {
  56. sb.append("\"");
  57. sb.append(_escape(sku.getAllowedOrderQuantities()[i]));
  58. sb.append("\"");
  59. if ((i + 1) < sku.getAllowedOrderQuantities().length) {
  60. sb.append(", ");
  61. }
  62. }
  63. sb.append("]");
  64. }
  65. if (sku.getAvailability() != null) {
  66. if (sb.length() > 1) {
  67. sb.append(", ");
  68. }
  69. sb.append("\"availability\": ");
  70. sb.append(String.valueOf(sku.getAvailability()));
  71. }
  72. if (sku.getDepth() != null) {
  73. if (sb.length() > 1) {
  74. sb.append(", ");
  75. }
  76. sb.append("\"depth\": ");
  77. sb.append(sku.getDepth());
  78. }
  79. if (sku.getDisplayDate() != null) {
  80. if (sb.length() > 1) {
  81. sb.append(", ");
  82. }
  83. sb.append("\"displayDate\": ");
  84. sb.append("\"");
  85. sb.append(liferayToJSONDateFormat.format(sku.getDisplayDate()));
  86. sb.append("\"");
  87. }
  88. if (sku.getExpirationDate() != null) {
  89. if (sb.length() > 1) {
  90. sb.append(", ");
  91. }
  92. sb.append("\"expirationDate\": ");
  93. sb.append("\"");
  94. sb.append(liferayToJSONDateFormat.format(sku.getExpirationDate()));
  95. sb.append("\"");
  96. }
  97. if (sku.getGtin() != null) {
  98. if (sb.length() > 1) {
  99. sb.append(", ");
  100. }
  101. sb.append("\"gtin\": ");
  102. sb.append("\"");
  103. sb.append(_escape(sku.getGtin()));
  104. sb.append("\"");
  105. }
  106. if (sku.getHeight() != null) {
  107. if (sb.length() > 1) {
  108. sb.append(", ");
  109. }
  110. sb.append("\"height\": ");
  111. sb.append(sku.getHeight());
  112. }
  113. if (sku.getId() != null) {
  114. if (sb.length() > 1) {
  115. sb.append(", ");
  116. }
  117. sb.append("\"id\": ");
  118. sb.append(sku.getId());
  119. }
  120. if (sku.getManufacturerPartNumber() != null) {
  121. if (sb.length() > 1) {
  122. sb.append(", ");
  123. }
  124. sb.append("\"manufacturerPartNumber\": ");
  125. sb.append("\"");
  126. sb.append(_escape(sku.getManufacturerPartNumber()));
  127. sb.append("\"");
  128. }
  129. if (sku.getMaxOrderQuantity() != null) {
  130. if (sb.length() > 1) {
  131. sb.append(", ");
  132. }
  133. sb.append("\"maxOrderQuantity\": ");
  134. sb.append(sku.getMaxOrderQuantity());
  135. }
  136. if (sku.getMinOrderQuantity() != null) {
  137. if (sb.length() > 1) {
  138. sb.append(", ");
  139. }
  140. sb.append("\"minOrderQuantity\": ");
  141. sb.append(sku.getMinOrderQuantity());
  142. }
  143. if (sku.getNeverExpire() != null) {
  144. if (sb.length() > 1) {
  145. sb.append(", ");
  146. }
  147. sb.append("\"neverExpire\": ");
  148. sb.append(sku.getNeverExpire());
  149. }
  150. if (sku.getPrice() != null) {
  151. if (sb.length() > 1) {
  152. sb.append(", ");
  153. }
  154. sb.append("\"price\": ");
  155. sb.append(String.valueOf(sku.getPrice()));
  156. }
  157. if (sku.getPublished() != null) {
  158. if (sb.length() > 1) {
  159. sb.append(", ");
  160. }
  161. sb.append("\"published\": ");
  162. sb.append(sku.getPublished());
  163. }
  164. if (sku.getPurchasable() != null) {
  165. if (sb.length() > 1) {
  166. sb.append(", ");
  167. }
  168. sb.append("\"purchasable\": ");
  169. sb.append(sku.getPurchasable());
  170. }
  171. if (sku.getSku() != null) {
  172. if (sb.length() > 1) {
  173. sb.append(", ");
  174. }
  175. sb.append("\"sku\": ");
  176. sb.append("\"");
  177. sb.append(_escape(sku.getSku()));
  178. sb.append("\"");
  179. }
  180. if (sku.getSkuOptions() != null) {
  181. if (sb.length() > 1) {
  182. sb.append(", ");
  183. }
  184. sb.append("\"skuOptions\": ");
  185. sb.append("[");
  186. for (int i = 0; i < sku.getSkuOptions().length; i++) {
  187. sb.append(String.valueOf(sku.getSkuOptions()[i]));
  188. if ((i + 1) < sku.getSkuOptions().length) {
  189. sb.append(", ");
  190. }
  191. }
  192. sb.append("]");
  193. }
  194. if (sku.getWeight() != null) {
  195. if (sb.length() > 1) {
  196. sb.append(", ");
  197. }
  198. sb.append("\"weight\": ");
  199. sb.append(sku.getWeight());
  200. }
  201. if (sku.getWidth() != null) {
  202. if (sb.length() > 1) {
  203. sb.append(", ");
  204. }
  205. sb.append("\"width\": ");
  206. sb.append(sku.getWidth());
  207. }
  208. sb.append("}");
  209. return sb.toString();
  210. }
  211. public static Map<String, Object> toMap(String json) {
  212. SkuJSONParser skuJSONParser = new SkuJSONParser();
  213. return skuJSONParser.parseToMap(json);
  214. }
  215. public static Map<String, String> toMap(Sku sku) {
  216. if (sku == null) {
  217. return null;
  218. }
  219. Map<String, String> map = new TreeMap<>();
  220. DateFormat liferayToJSONDateFormat = new SimpleDateFormat(
  221. "yyyy-MM-dd'T'HH:mm:ssXX");
  222. if (sku.getAllowedOrderQuantities() == null) {
  223. map.put("allowedOrderQuantities", null);
  224. }
  225. else {
  226. map.put(
  227. "allowedOrderQuantities",
  228. String.valueOf(sku.getAllowedOrderQuantities()));
  229. }
  230. if (sku.getAvailability() == null) {
  231. map.put("availability", null);
  232. }
  233. else {
  234. map.put("availability", String.valueOf(sku.getAvailability()));
  235. }
  236. if (sku.getDepth() == null) {
  237. map.put("depth", null);
  238. }
  239. else {
  240. map.put("depth", String.valueOf(sku.getDepth()));
  241. }
  242. if (sku.getDisplayDate() == null) {
  243. map.put("displayDate", null);
  244. }
  245. else {
  246. map.put(
  247. "displayDate",
  248. liferayToJSONDateFormat.format(sku.getDisplayDate()));
  249. }
  250. if (sku.getExpirationDate() == null) {
  251. map.put("expirationDate", null);
  252. }
  253. else {
  254. map.put(
  255. "expirationDate",
  256. liferayToJSONDateFormat.format(sku.getExpirationDate()));
  257. }
  258. if (sku.getGtin() == null) {
  259. map.put("gtin", null);
  260. }
  261. else {
  262. map.put("gtin", String.valueOf(sku.getGtin()));
  263. }
  264. if (sku.getHeight() == null) {
  265. map.put("height", null);
  266. }
  267. else {
  268. map.put("height", String.valueOf(sku.getHeight()));
  269. }
  270. if (sku.getId() == null) {
  271. map.put("id", null);
  272. }
  273. else {
  274. map.put("id", String.valueOf(sku.getId()));
  275. }
  276. if (sku.getManufacturerPartNumber() == null) {
  277. map.put("manufacturerPartNumber", null);
  278. }
  279. else {
  280. map.put(
  281. "manufacturerPartNumber",
  282. String.valueOf(sku.getManufacturerPartNumber()));
  283. }
  284. if (sku.getMaxOrderQuantity() == null) {
  285. map.put("maxOrderQuantity", null);
  286. }
  287. else {
  288. map.put(
  289. "maxOrderQuantity", String.valueOf(sku.getMaxOrderQuantity()));
  290. }
  291. if (sku.getMinOrderQuantity() == null) {
  292. map.put("minOrderQuantity", null);
  293. }
  294. else {
  295. map.put(
  296. "minOrderQuantity", String.valueOf(sku.getMinOrderQuantity()));
  297. }
  298. if (sku.getNeverExpire() == null) {
  299. map.put("neverExpire", null);
  300. }
  301. else {
  302. map.put("neverExpire", String.valueOf(sku.getNeverExpire()));
  303. }
  304. if (sku.getPrice() == null) {
  305. map.put("price", null);
  306. }
  307. else {
  308. map.put("price", String.valueOf(sku.getPrice()));
  309. }
  310. if (sku.getPublished() == null) {
  311. map.put("published", null);
  312. }
  313. else {
  314. map.put("published", String.valueOf(sku.getPublished()));
  315. }
  316. if (sku.getPurchasable() == null) {
  317. map.put("purchasable", null);
  318. }
  319. else {
  320. map.put("purchasable", String.valueOf(sku.getPurchasable()));
  321. }
  322. if (sku.getSku() == null) {
  323. map.put("sku", null);
  324. }
  325. else {
  326. map.put("sku", String.valueOf(sku.getSku()));
  327. }
  328. if (sku.getSkuOptions() == null) {
  329. map.put("skuOptions", null);
  330. }
  331. else {
  332. map.put("skuOptions", String.valueOf(sku.getSkuOptions()));
  333. }
  334. if (sku.getWeight() == null) {
  335. map.put("weight", null);
  336. }
  337. else {
  338. map.put("weight", String.valueOf(sku.getWeight()));
  339. }
  340. if (sku.getWidth() == null) {
  341. map.put("width", null);
  342. }
  343. else {
  344. map.put("width", String.valueOf(sku.getWidth()));
  345. }
  346. return map;
  347. }
  348. public static class SkuJSONParser extends BaseJSONParser<Sku> {
  349. @Override
  350. protected Sku createDTO() {
  351. return new Sku();
  352. }
  353. @Override
  354. protected Sku[] createDTOArray(int size) {
  355. return new Sku[size];
  356. }
  357. @Override
  358. protected void setField(
  359. Sku sku, String jsonParserFieldName, Object jsonParserFieldValue) {
  360. if (Objects.equals(jsonParserFieldName, "allowedOrderQuantities")) {
  361. if (jsonParserFieldValue != null) {
  362. sku.setAllowedOrderQuantities(
  363. toStrings((Object[])jsonParserFieldValue));
  364. }
  365. }
  366. else if (Objects.equals(jsonParserFieldName, "availability")) {
  367. if (jsonParserFieldValue != null) {
  368. sku.setAvailability(
  369. AvailabilitySerDes.toDTO((String)jsonParserFieldValue));
  370. }
  371. }
  372. else if (Objects.equals(jsonParserFieldName, "depth")) {
  373. if (jsonParserFieldValue != null) {
  374. sku.setDepth(Double.valueOf((String)jsonParserFieldValue));
  375. }
  376. }
  377. else if (Objects.equals(jsonParserFieldName, "displayDate")) {
  378. if (jsonParserFieldValue != null) {
  379. sku.setDisplayDate(toDate((String)jsonParserFieldValue));
  380. }
  381. }
  382. else if (Objects.equals(jsonParserFieldName, "expirationDate")) {
  383. if (jsonParserFieldValue != null) {
  384. sku.setExpirationDate(toDate((String)jsonParserFieldValue));
  385. }
  386. }
  387. else if (Objects.equals(jsonParserFieldName, "gtin")) {
  388. if (jsonParserFieldValue != null) {
  389. sku.setGtin((String)jsonParserFieldValue);
  390. }
  391. }
  392. else if (Objects.equals(jsonParserFieldName, "height")) {
  393. if (jsonParserFieldValue != null) {
  394. sku.setHeight(Double.valueOf((String)jsonParserFieldValue));
  395. }
  396. }
  397. else if (Objects.equals(jsonParserFieldName, "id")) {
  398. if (jsonParserFieldValue != null) {
  399. sku.setId(Long.valueOf((String)jsonParserFieldValue));
  400. }
  401. }
  402. else if (Objects.equals(
  403. jsonParserFieldName, "manufacturerPartNumber")) {
  404. if (jsonParserFieldValue != null) {
  405. sku.setManufacturerPartNumber((String)jsonParserFieldValue);
  406. }
  407. }
  408. else if (Objects.equals(jsonParserFieldName, "maxOrderQuantity")) {
  409. if (jsonParserFieldValue != null) {
  410. sku.setMaxOrderQuantity(
  411. Integer.valueOf((String)jsonParserFieldValue));
  412. }
  413. }
  414. else if (Objects.equals(jsonParserFieldName, "minOrderQuantity")) {
  415. if (jsonParserFieldValue != null) {
  416. sku.setMinOrderQuantity(
  417. Integer.valueOf((String)jsonParserFieldValue));
  418. }
  419. }
  420. else if (Objects.equals(jsonParserFieldName, "neverExpire")) {
  421. if (jsonParserFieldValue != null) {
  422. sku.setNeverExpire((Boolean)jsonParserFieldValue);
  423. }
  424. }
  425. else if (Objects.equals(jsonParserFieldName, "price")) {
  426. if (jsonParserFieldValue != null) {
  427. sku.setPrice(
  428. PriceSerDes.toDTO((String)jsonParserFieldValue));
  429. }
  430. }
  431. else if (Objects.equals(jsonParserFieldName, "published")) {
  432. if (jsonParserFieldValue != null) {
  433. sku.setPublished((Boolean)jsonParserFieldValue);
  434. }
  435. }
  436. else if (Objects.equals(jsonParserFieldName, "purchasable")) {
  437. if (jsonParserFieldValue != null) {
  438. sku.setPurchasable((Boolean)jsonParserFieldValue);
  439. }
  440. }
  441. else if (Objects.equals(jsonParserFieldName, "sku")) {
  442. if (jsonParserFieldValue != null) {
  443. sku.setSku((String)jsonParserFieldValue);
  444. }
  445. }
  446. else if (Objects.equals(jsonParserFieldName, "skuOptions")) {
  447. if (jsonParserFieldValue != null) {
  448. sku.setSkuOptions(
  449. Stream.of(
  450. toStrings((Object[])jsonParserFieldValue)
  451. ).map(
  452. object -> SkuOptionSerDes.toDTO((String)object)
  453. ).toArray(
  454. size -> new SkuOption[size]
  455. ));
  456. }
  457. }
  458. else if (Objects.equals(jsonParserFieldName, "weight")) {
  459. if (jsonParserFieldValue != null) {
  460. sku.setWeight(Double.valueOf((String)jsonParserFieldValue));
  461. }
  462. }
  463. else if (Objects.equals(jsonParserFieldName, "width")) {
  464. if (jsonParserFieldValue != null) {
  465. sku.setWidth(Double.valueOf((String)jsonParserFieldValue));
  466. }
  467. }
  468. }
  469. }
  470. private static String _escape(Object object) {
  471. String string = String.valueOf(object);
  472. for (String[] strings : BaseJSONParser.JSON_ESCAPE_STRINGS) {
  473. string = string.replace(strings[0], strings[1]);
  474. }
  475. return string;
  476. }
  477. private static String _toJSON(Map<String, ?> map) {
  478. StringBuilder sb = new StringBuilder("{");
  479. @SuppressWarnings("unchecked")
  480. Set set = map.entrySet();
  481. @SuppressWarnings("unchecked")
  482. Iterator<Map.Entry<String, ?>> iterator = set.iterator();
  483. while (iterator.hasNext()) {
  484. Map.Entry<String, ?> entry = iterator.next();
  485. sb.append("\"");
  486. sb.append(entry.getKey());
  487. sb.append("\": ");
  488. Object value = entry.getValue();
  489. Class<?> valueClass = value.getClass();
  490. if (value instanceof Map) {
  491. sb.append(_toJSON((Map)value));
  492. }
  493. else if (valueClass.isArray()) {
  494. Object[] values = (Object[])value;
  495. sb.append("[");
  496. for (int i = 0; i < values.length; i++) {
  497. sb.append("\"");
  498. sb.append(_escape(values[i]));
  499. sb.append("\"");
  500. if ((i + 1) < values.length) {
  501. sb.append(", ");
  502. }
  503. }
  504. sb.append("]");
  505. }
  506. else if (value instanceof String) {
  507. sb.append("\"");
  508. sb.append(_escape(entry.getValue()));
  509. sb.append("\"");
  510. }
  511. else {
  512. sb.append(String.valueOf(entry.getValue()));
  513. }
  514. if (iterator.hasNext()) {
  515. sb.append(", ");
  516. }
  517. }
  518. sb.append("}");
  519. return sb.toString();
  520. }
  521. }