/modules/apps/headless/headless-delivery/headless-delivery-client/src/main/java/com/liferay/headless/delivery/client/serdes/v1_0/PageCollectionDefinitionSerDes.java

https://github.com/danielreuther/liferay-portal · Java · 658 lines · 509 code · 132 blank · 17 comment · 178 complexity · 2cdb20c9c800179bbcf3fd0752ae862f 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.delivery.client.serdes.v1_0;
  15. import com.liferay.headless.delivery.client.dto.v1_0.CollectionViewport;
  16. import com.liferay.headless.delivery.client.dto.v1_0.FragmentViewport;
  17. import com.liferay.headless.delivery.client.dto.v1_0.PageCollectionDefinition;
  18. import com.liferay.headless.delivery.client.json.BaseJSONParser;
  19. import java.util.Iterator;
  20. import java.util.Map;
  21. import java.util.Objects;
  22. import java.util.Set;
  23. import java.util.TreeMap;
  24. import java.util.stream.Stream;
  25. import javax.annotation.Generated;
  26. /**
  27. * @author Javier Gamarra
  28. * @generated
  29. */
  30. @Generated("")
  31. public class PageCollectionDefinitionSerDes {
  32. public static PageCollectionDefinition toDTO(String json) {
  33. PageCollectionDefinitionJSONParser pageCollectionDefinitionJSONParser =
  34. new PageCollectionDefinitionJSONParser();
  35. return pageCollectionDefinitionJSONParser.parseToDTO(json);
  36. }
  37. public static PageCollectionDefinition[] toDTOs(String json) {
  38. PageCollectionDefinitionJSONParser pageCollectionDefinitionJSONParser =
  39. new PageCollectionDefinitionJSONParser();
  40. return pageCollectionDefinitionJSONParser.parseToDTOs(json);
  41. }
  42. public static String toJSON(
  43. PageCollectionDefinition pageCollectionDefinition) {
  44. if (pageCollectionDefinition == null) {
  45. return "null";
  46. }
  47. StringBuilder sb = new StringBuilder();
  48. sb.append("{");
  49. if (pageCollectionDefinition.getCollectionConfig() != null) {
  50. if (sb.length() > 1) {
  51. sb.append(", ");
  52. }
  53. sb.append("\"collectionConfig\": ");
  54. sb.append(
  55. String.valueOf(pageCollectionDefinition.getCollectionConfig()));
  56. }
  57. if (pageCollectionDefinition.getCollectionViewports() != null) {
  58. if (sb.length() > 1) {
  59. sb.append(", ");
  60. }
  61. sb.append("\"collectionViewports\": ");
  62. sb.append("[");
  63. for (int i = 0;
  64. i < pageCollectionDefinition.getCollectionViewports().length;
  65. i++) {
  66. sb.append(
  67. String.valueOf(
  68. pageCollectionDefinition.getCollectionViewports()[i]));
  69. if ((i + 1) <
  70. pageCollectionDefinition.
  71. getCollectionViewports().length) {
  72. sb.append(", ");
  73. }
  74. }
  75. sb.append("]");
  76. }
  77. if (pageCollectionDefinition.getDisplayAllItems() != null) {
  78. if (sb.length() > 1) {
  79. sb.append(", ");
  80. }
  81. sb.append("\"displayAllItems\": ");
  82. sb.append(pageCollectionDefinition.getDisplayAllItems());
  83. }
  84. if (pageCollectionDefinition.getDisplayAllPages() != null) {
  85. if (sb.length() > 1) {
  86. sb.append(", ");
  87. }
  88. sb.append("\"displayAllPages\": ");
  89. sb.append(pageCollectionDefinition.getDisplayAllPages());
  90. }
  91. if (pageCollectionDefinition.getFragmentStyle() != null) {
  92. if (sb.length() > 1) {
  93. sb.append(", ");
  94. }
  95. sb.append("\"fragmentStyle\": ");
  96. sb.append(
  97. String.valueOf(pageCollectionDefinition.getFragmentStyle()));
  98. }
  99. if (pageCollectionDefinition.getFragmentViewports() != null) {
  100. if (sb.length() > 1) {
  101. sb.append(", ");
  102. }
  103. sb.append("\"fragmentViewports\": ");
  104. sb.append("[");
  105. for (int i = 0;
  106. i < pageCollectionDefinition.getFragmentViewports().length;
  107. i++) {
  108. sb.append(
  109. String.valueOf(
  110. pageCollectionDefinition.getFragmentViewports()[i]));
  111. if ((i + 1) <
  112. pageCollectionDefinition.
  113. getFragmentViewports().length) {
  114. sb.append(", ");
  115. }
  116. }
  117. sb.append("]");
  118. }
  119. if (pageCollectionDefinition.getListItemStyle() != null) {
  120. if (sb.length() > 1) {
  121. sb.append(", ");
  122. }
  123. sb.append("\"listItemStyle\": ");
  124. sb.append("\"");
  125. sb.append(_escape(pageCollectionDefinition.getListItemStyle()));
  126. sb.append("\"");
  127. }
  128. if (pageCollectionDefinition.getListStyle() != null) {
  129. if (sb.length() > 1) {
  130. sb.append(", ");
  131. }
  132. sb.append("\"listStyle\": ");
  133. sb.append("\"");
  134. sb.append(_escape(pageCollectionDefinition.getListStyle()));
  135. sb.append("\"");
  136. }
  137. if (pageCollectionDefinition.getName() != null) {
  138. if (sb.length() > 1) {
  139. sb.append(", ");
  140. }
  141. sb.append("\"name\": ");
  142. sb.append("\"");
  143. sb.append(_escape(pageCollectionDefinition.getName()));
  144. sb.append("\"");
  145. }
  146. if (pageCollectionDefinition.getNumberOfColumns() != null) {
  147. if (sb.length() > 1) {
  148. sb.append(", ");
  149. }
  150. sb.append("\"numberOfColumns\": ");
  151. sb.append(pageCollectionDefinition.getNumberOfColumns());
  152. }
  153. if (pageCollectionDefinition.getNumberOfItems() != null) {
  154. if (sb.length() > 1) {
  155. sb.append(", ");
  156. }
  157. sb.append("\"numberOfItems\": ");
  158. sb.append(pageCollectionDefinition.getNumberOfItems());
  159. }
  160. if (pageCollectionDefinition.getNumberOfItemsPerPage() != null) {
  161. if (sb.length() > 1) {
  162. sb.append(", ");
  163. }
  164. sb.append("\"numberOfItemsPerPage\": ");
  165. sb.append(pageCollectionDefinition.getNumberOfItemsPerPage());
  166. }
  167. if (pageCollectionDefinition.getNumberOfPages() != null) {
  168. if (sb.length() > 1) {
  169. sb.append(", ");
  170. }
  171. sb.append("\"numberOfPages\": ");
  172. sb.append(pageCollectionDefinition.getNumberOfPages());
  173. }
  174. if (pageCollectionDefinition.getPaginationType() != null) {
  175. if (sb.length() > 1) {
  176. sb.append(", ");
  177. }
  178. sb.append("\"paginationType\": ");
  179. sb.append("\"");
  180. sb.append(pageCollectionDefinition.getPaginationType());
  181. sb.append("\"");
  182. }
  183. if (pageCollectionDefinition.getShowAllItems() != null) {
  184. if (sb.length() > 1) {
  185. sb.append(", ");
  186. }
  187. sb.append("\"showAllItems\": ");
  188. sb.append(pageCollectionDefinition.getShowAllItems());
  189. }
  190. if (pageCollectionDefinition.getTemplateKey() != null) {
  191. if (sb.length() > 1) {
  192. sb.append(", ");
  193. }
  194. sb.append("\"templateKey\": ");
  195. sb.append("\"");
  196. sb.append(_escape(pageCollectionDefinition.getTemplateKey()));
  197. sb.append("\"");
  198. }
  199. sb.append("}");
  200. return sb.toString();
  201. }
  202. public static Map<String, Object> toMap(String json) {
  203. PageCollectionDefinitionJSONParser pageCollectionDefinitionJSONParser =
  204. new PageCollectionDefinitionJSONParser();
  205. return pageCollectionDefinitionJSONParser.parseToMap(json);
  206. }
  207. public static Map<String, String> toMap(
  208. PageCollectionDefinition pageCollectionDefinition) {
  209. if (pageCollectionDefinition == null) {
  210. return null;
  211. }
  212. Map<String, String> map = new TreeMap<>();
  213. if (pageCollectionDefinition.getCollectionConfig() == null) {
  214. map.put("collectionConfig", null);
  215. }
  216. else {
  217. map.put(
  218. "collectionConfig",
  219. String.valueOf(pageCollectionDefinition.getCollectionConfig()));
  220. }
  221. if (pageCollectionDefinition.getCollectionViewports() == null) {
  222. map.put("collectionViewports", null);
  223. }
  224. else {
  225. map.put(
  226. "collectionViewports",
  227. String.valueOf(
  228. pageCollectionDefinition.getCollectionViewports()));
  229. }
  230. if (pageCollectionDefinition.getDisplayAllItems() == null) {
  231. map.put("displayAllItems", null);
  232. }
  233. else {
  234. map.put(
  235. "displayAllItems",
  236. String.valueOf(pageCollectionDefinition.getDisplayAllItems()));
  237. }
  238. if (pageCollectionDefinition.getDisplayAllPages() == null) {
  239. map.put("displayAllPages", null);
  240. }
  241. else {
  242. map.put(
  243. "displayAllPages",
  244. String.valueOf(pageCollectionDefinition.getDisplayAllPages()));
  245. }
  246. if (pageCollectionDefinition.getFragmentStyle() == null) {
  247. map.put("fragmentStyle", null);
  248. }
  249. else {
  250. map.put(
  251. "fragmentStyle",
  252. String.valueOf(pageCollectionDefinition.getFragmentStyle()));
  253. }
  254. if (pageCollectionDefinition.getFragmentViewports() == null) {
  255. map.put("fragmentViewports", null);
  256. }
  257. else {
  258. map.put(
  259. "fragmentViewports",
  260. String.valueOf(
  261. pageCollectionDefinition.getFragmentViewports()));
  262. }
  263. if (pageCollectionDefinition.getListItemStyle() == null) {
  264. map.put("listItemStyle", null);
  265. }
  266. else {
  267. map.put(
  268. "listItemStyle",
  269. String.valueOf(pageCollectionDefinition.getListItemStyle()));
  270. }
  271. if (pageCollectionDefinition.getListStyle() == null) {
  272. map.put("listStyle", null);
  273. }
  274. else {
  275. map.put(
  276. "listStyle",
  277. String.valueOf(pageCollectionDefinition.getListStyle()));
  278. }
  279. if (pageCollectionDefinition.getName() == null) {
  280. map.put("name", null);
  281. }
  282. else {
  283. map.put("name", String.valueOf(pageCollectionDefinition.getName()));
  284. }
  285. if (pageCollectionDefinition.getNumberOfColumns() == null) {
  286. map.put("numberOfColumns", null);
  287. }
  288. else {
  289. map.put(
  290. "numberOfColumns",
  291. String.valueOf(pageCollectionDefinition.getNumberOfColumns()));
  292. }
  293. if (pageCollectionDefinition.getNumberOfItems() == null) {
  294. map.put("numberOfItems", null);
  295. }
  296. else {
  297. map.put(
  298. "numberOfItems",
  299. String.valueOf(pageCollectionDefinition.getNumberOfItems()));
  300. }
  301. if (pageCollectionDefinition.getNumberOfItemsPerPage() == null) {
  302. map.put("numberOfItemsPerPage", null);
  303. }
  304. else {
  305. map.put(
  306. "numberOfItemsPerPage",
  307. String.valueOf(
  308. pageCollectionDefinition.getNumberOfItemsPerPage()));
  309. }
  310. if (pageCollectionDefinition.getNumberOfPages() == null) {
  311. map.put("numberOfPages", null);
  312. }
  313. else {
  314. map.put(
  315. "numberOfPages",
  316. String.valueOf(pageCollectionDefinition.getNumberOfPages()));
  317. }
  318. if (pageCollectionDefinition.getPaginationType() == null) {
  319. map.put("paginationType", null);
  320. }
  321. else {
  322. map.put(
  323. "paginationType",
  324. String.valueOf(pageCollectionDefinition.getPaginationType()));
  325. }
  326. if (pageCollectionDefinition.getShowAllItems() == null) {
  327. map.put("showAllItems", null);
  328. }
  329. else {
  330. map.put(
  331. "showAllItems",
  332. String.valueOf(pageCollectionDefinition.getShowAllItems()));
  333. }
  334. if (pageCollectionDefinition.getTemplateKey() == null) {
  335. map.put("templateKey", null);
  336. }
  337. else {
  338. map.put(
  339. "templateKey",
  340. String.valueOf(pageCollectionDefinition.getTemplateKey()));
  341. }
  342. return map;
  343. }
  344. public static class PageCollectionDefinitionJSONParser
  345. extends BaseJSONParser<PageCollectionDefinition> {
  346. @Override
  347. protected PageCollectionDefinition createDTO() {
  348. return new PageCollectionDefinition();
  349. }
  350. @Override
  351. protected PageCollectionDefinition[] createDTOArray(int size) {
  352. return new PageCollectionDefinition[size];
  353. }
  354. @Override
  355. protected void setField(
  356. PageCollectionDefinition pageCollectionDefinition,
  357. String jsonParserFieldName, Object jsonParserFieldValue) {
  358. if (Objects.equals(jsonParserFieldName, "collectionConfig")) {
  359. if (jsonParserFieldValue != null) {
  360. pageCollectionDefinition.setCollectionConfig(
  361. CollectionConfigSerDes.toDTO(
  362. (String)jsonParserFieldValue));
  363. }
  364. }
  365. else if (Objects.equals(
  366. jsonParserFieldName, "collectionViewports")) {
  367. if (jsonParserFieldValue != null) {
  368. pageCollectionDefinition.setCollectionViewports(
  369. Stream.of(
  370. toStrings((Object[])jsonParserFieldValue)
  371. ).map(
  372. object -> CollectionViewportSerDes.toDTO(
  373. (String)object)
  374. ).toArray(
  375. size -> new CollectionViewport[size]
  376. ));
  377. }
  378. }
  379. else if (Objects.equals(jsonParserFieldName, "displayAllItems")) {
  380. if (jsonParserFieldValue != null) {
  381. pageCollectionDefinition.setDisplayAllItems(
  382. (Boolean)jsonParserFieldValue);
  383. }
  384. }
  385. else if (Objects.equals(jsonParserFieldName, "displayAllPages")) {
  386. if (jsonParserFieldValue != null) {
  387. pageCollectionDefinition.setDisplayAllPages(
  388. (Boolean)jsonParserFieldValue);
  389. }
  390. }
  391. else if (Objects.equals(jsonParserFieldName, "fragmentStyle")) {
  392. if (jsonParserFieldValue != null) {
  393. pageCollectionDefinition.setFragmentStyle(
  394. FragmentStyleSerDes.toDTO(
  395. (String)jsonParserFieldValue));
  396. }
  397. }
  398. else if (Objects.equals(jsonParserFieldName, "fragmentViewports")) {
  399. if (jsonParserFieldValue != null) {
  400. pageCollectionDefinition.setFragmentViewports(
  401. Stream.of(
  402. toStrings((Object[])jsonParserFieldValue)
  403. ).map(
  404. object -> FragmentViewportSerDes.toDTO(
  405. (String)object)
  406. ).toArray(
  407. size -> new FragmentViewport[size]
  408. ));
  409. }
  410. }
  411. else if (Objects.equals(jsonParserFieldName, "listItemStyle")) {
  412. if (jsonParserFieldValue != null) {
  413. pageCollectionDefinition.setListItemStyle(
  414. (String)jsonParserFieldValue);
  415. }
  416. }
  417. else if (Objects.equals(jsonParserFieldName, "listStyle")) {
  418. if (jsonParserFieldValue != null) {
  419. pageCollectionDefinition.setListStyle(
  420. (String)jsonParserFieldValue);
  421. }
  422. }
  423. else if (Objects.equals(jsonParserFieldName, "name")) {
  424. if (jsonParserFieldValue != null) {
  425. pageCollectionDefinition.setName(
  426. (String)jsonParserFieldValue);
  427. }
  428. }
  429. else if (Objects.equals(jsonParserFieldName, "numberOfColumns")) {
  430. if (jsonParserFieldValue != null) {
  431. pageCollectionDefinition.setNumberOfColumns(
  432. Integer.valueOf((String)jsonParserFieldValue));
  433. }
  434. }
  435. else if (Objects.equals(jsonParserFieldName, "numberOfItems")) {
  436. if (jsonParserFieldValue != null) {
  437. pageCollectionDefinition.setNumberOfItems(
  438. Integer.valueOf((String)jsonParserFieldValue));
  439. }
  440. }
  441. else if (Objects.equals(
  442. jsonParserFieldName, "numberOfItemsPerPage")) {
  443. if (jsonParserFieldValue != null) {
  444. pageCollectionDefinition.setNumberOfItemsPerPage(
  445. Integer.valueOf((String)jsonParserFieldValue));
  446. }
  447. }
  448. else if (Objects.equals(jsonParserFieldName, "numberOfPages")) {
  449. if (jsonParserFieldValue != null) {
  450. pageCollectionDefinition.setNumberOfPages(
  451. Integer.valueOf((String)jsonParserFieldValue));
  452. }
  453. }
  454. else if (Objects.equals(jsonParserFieldName, "paginationType")) {
  455. if (jsonParserFieldValue != null) {
  456. pageCollectionDefinition.setPaginationType(
  457. PageCollectionDefinition.PaginationType.create(
  458. (String)jsonParserFieldValue));
  459. }
  460. }
  461. else if (Objects.equals(jsonParserFieldName, "showAllItems")) {
  462. if (jsonParserFieldValue != null) {
  463. pageCollectionDefinition.setShowAllItems(
  464. (Boolean)jsonParserFieldValue);
  465. }
  466. }
  467. else if (Objects.equals(jsonParserFieldName, "templateKey")) {
  468. if (jsonParserFieldValue != null) {
  469. pageCollectionDefinition.setTemplateKey(
  470. (String)jsonParserFieldValue);
  471. }
  472. }
  473. }
  474. }
  475. private static String _escape(Object object) {
  476. String string = String.valueOf(object);
  477. for (String[] strings : BaseJSONParser.JSON_ESCAPE_STRINGS) {
  478. string = string.replace(strings[0], strings[1]);
  479. }
  480. return string;
  481. }
  482. private static String _toJSON(Map<String, ?> map) {
  483. StringBuilder sb = new StringBuilder("{");
  484. @SuppressWarnings("unchecked")
  485. Set set = map.entrySet();
  486. @SuppressWarnings("unchecked")
  487. Iterator<Map.Entry<String, ?>> iterator = set.iterator();
  488. while (iterator.hasNext()) {
  489. Map.Entry<String, ?> entry = iterator.next();
  490. sb.append("\"");
  491. sb.append(entry.getKey());
  492. sb.append("\": ");
  493. Object value = entry.getValue();
  494. Class<?> valueClass = value.getClass();
  495. if (value instanceof Map) {
  496. sb.append(_toJSON((Map)value));
  497. }
  498. else if (valueClass.isArray()) {
  499. Object[] values = (Object[])value;
  500. sb.append("[");
  501. for (int i = 0; i < values.length; i++) {
  502. sb.append("\"");
  503. sb.append(_escape(values[i]));
  504. sb.append("\"");
  505. if ((i + 1) < values.length) {
  506. sb.append(", ");
  507. }
  508. }
  509. sb.append("]");
  510. }
  511. else if (value instanceof String) {
  512. sb.append("\"");
  513. sb.append(_escape(entry.getValue()));
  514. sb.append("\"");
  515. }
  516. else {
  517. sb.append(String.valueOf(entry.getValue()));
  518. }
  519. if (iterator.hasNext()) {
  520. sb.append(", ");
  521. }
  522. }
  523. sb.append("}");
  524. return sb.toString();
  525. }
  526. }