/modules/dxp/apps/portal-workflow/portal-workflow-metrics-rest-client/src/main/java/com/liferay/portal/workflow/metrics/rest/client/serdes/v1_0/InstanceSerDes.java

https://github.com/danielreuther/liferay-portal · Java · 766 lines · 588 code · 161 blank · 17 comment · 232 complexity · 92e58b98f392cfb5dccfb9bba3e9db0c MD5 · raw file

  1. /**
  2. * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
  3. *
  4. * The contents of this file are subject to the terms of the Liferay Enterprise
  5. * Subscription License ("License"). You may not use this file except in
  6. * compliance with the License. You can obtain a copy of the License by
  7. * contacting Liferay, Inc. See the License for the specific language governing
  8. * permissions and limitations under the License, including but not limited to
  9. * distribution rights of the Software.
  10. *
  11. *
  12. *
  13. */
  14. package com.liferay.portal.workflow.metrics.rest.client.serdes.v1_0;
  15. import com.liferay.portal.workflow.metrics.rest.client.dto.v1_0.Assignee;
  16. import com.liferay.portal.workflow.metrics.rest.client.dto.v1_0.Instance;
  17. import com.liferay.portal.workflow.metrics.rest.client.dto.v1_0.SLAResult;
  18. import com.liferay.portal.workflow.metrics.rest.client.dto.v1_0.Transition;
  19. import com.liferay.portal.workflow.metrics.rest.client.json.BaseJSONParser;
  20. import java.text.DateFormat;
  21. import java.text.SimpleDateFormat;
  22. import java.util.Iterator;
  23. import java.util.Map;
  24. import java.util.Objects;
  25. import java.util.Set;
  26. import java.util.TreeMap;
  27. import java.util.stream.Stream;
  28. import javax.annotation.Generated;
  29. /**
  30. * @author Rafael Praxedes
  31. * @generated
  32. */
  33. @Generated("")
  34. public class InstanceSerDes {
  35. public static Instance toDTO(String json) {
  36. InstanceJSONParser instanceJSONParser = new InstanceJSONParser();
  37. return instanceJSONParser.parseToDTO(json);
  38. }
  39. public static Instance[] toDTOs(String json) {
  40. InstanceJSONParser instanceJSONParser = new InstanceJSONParser();
  41. return instanceJSONParser.parseToDTOs(json);
  42. }
  43. public static String toJSON(Instance instance) {
  44. if (instance == null) {
  45. return "null";
  46. }
  47. StringBuilder sb = new StringBuilder();
  48. sb.append("{");
  49. DateFormat liferayToJSONDateFormat = new SimpleDateFormat(
  50. "yyyy-MM-dd'T'HH:mm:ssXX");
  51. if (instance.getActive() != null) {
  52. if (sb.length() > 1) {
  53. sb.append(", ");
  54. }
  55. sb.append("\"active\": ");
  56. sb.append(instance.getActive());
  57. }
  58. if (instance.getAssetTitle() != null) {
  59. if (sb.length() > 1) {
  60. sb.append(", ");
  61. }
  62. sb.append("\"assetTitle\": ");
  63. sb.append("\"");
  64. sb.append(_escape(instance.getAssetTitle()));
  65. sb.append("\"");
  66. }
  67. if (instance.getAssetTitle_i18n() != null) {
  68. if (sb.length() > 1) {
  69. sb.append(", ");
  70. }
  71. sb.append("\"assetTitle_i18n\": ");
  72. sb.append(_toJSON(instance.getAssetTitle_i18n()));
  73. }
  74. if (instance.getAssetType() != null) {
  75. if (sb.length() > 1) {
  76. sb.append(", ");
  77. }
  78. sb.append("\"assetType\": ");
  79. sb.append("\"");
  80. sb.append(_escape(instance.getAssetType()));
  81. sb.append("\"");
  82. }
  83. if (instance.getAssetType_i18n() != null) {
  84. if (sb.length() > 1) {
  85. sb.append(", ");
  86. }
  87. sb.append("\"assetType_i18n\": ");
  88. sb.append(_toJSON(instance.getAssetType_i18n()));
  89. }
  90. if (instance.getAssignees() != null) {
  91. if (sb.length() > 1) {
  92. sb.append(", ");
  93. }
  94. sb.append("\"assignees\": ");
  95. sb.append("[");
  96. for (int i = 0; i < instance.getAssignees().length; i++) {
  97. sb.append(String.valueOf(instance.getAssignees()[i]));
  98. if ((i + 1) < instance.getAssignees().length) {
  99. sb.append(", ");
  100. }
  101. }
  102. sb.append("]");
  103. }
  104. if (instance.getClassName() != null) {
  105. if (sb.length() > 1) {
  106. sb.append(", ");
  107. }
  108. sb.append("\"className\": ");
  109. sb.append("\"");
  110. sb.append(_escape(instance.getClassName()));
  111. sb.append("\"");
  112. }
  113. if (instance.getClassPK() != null) {
  114. if (sb.length() > 1) {
  115. sb.append(", ");
  116. }
  117. sb.append("\"classPK\": ");
  118. sb.append(instance.getClassPK());
  119. }
  120. if (instance.getCompleted() != null) {
  121. if (sb.length() > 1) {
  122. sb.append(", ");
  123. }
  124. sb.append("\"completed\": ");
  125. sb.append(instance.getCompleted());
  126. }
  127. if (instance.getCreator() != null) {
  128. if (sb.length() > 1) {
  129. sb.append(", ");
  130. }
  131. sb.append("\"creator\": ");
  132. sb.append(String.valueOf(instance.getCreator()));
  133. }
  134. if (instance.getDateCompletion() != null) {
  135. if (sb.length() > 1) {
  136. sb.append(", ");
  137. }
  138. sb.append("\"dateCompletion\": ");
  139. sb.append("\"");
  140. sb.append(
  141. liferayToJSONDateFormat.format(instance.getDateCompletion()));
  142. sb.append("\"");
  143. }
  144. if (instance.getDateCreated() != null) {
  145. if (sb.length() > 1) {
  146. sb.append(", ");
  147. }
  148. sb.append("\"dateCreated\": ");
  149. sb.append("\"");
  150. sb.append(
  151. liferayToJSONDateFormat.format(instance.getDateCreated()));
  152. sb.append("\"");
  153. }
  154. if (instance.getDateModified() != null) {
  155. if (sb.length() > 1) {
  156. sb.append(", ");
  157. }
  158. sb.append("\"dateModified\": ");
  159. sb.append("\"");
  160. sb.append(
  161. liferayToJSONDateFormat.format(instance.getDateModified()));
  162. sb.append("\"");
  163. }
  164. if (instance.getDuration() != null) {
  165. if (sb.length() > 1) {
  166. sb.append(", ");
  167. }
  168. sb.append("\"duration\": ");
  169. sb.append(instance.getDuration());
  170. }
  171. if (instance.getId() != null) {
  172. if (sb.length() > 1) {
  173. sb.append(", ");
  174. }
  175. sb.append("\"id\": ");
  176. sb.append(instance.getId());
  177. }
  178. if (instance.getProcessId() != null) {
  179. if (sb.length() > 1) {
  180. sb.append(", ");
  181. }
  182. sb.append("\"processId\": ");
  183. sb.append(instance.getProcessId());
  184. }
  185. if (instance.getProcessVersion() != null) {
  186. if (sb.length() > 1) {
  187. sb.append(", ");
  188. }
  189. sb.append("\"processVersion\": ");
  190. sb.append("\"");
  191. sb.append(_escape(instance.getProcessVersion()));
  192. sb.append("\"");
  193. }
  194. if (instance.getSlaResults() != null) {
  195. if (sb.length() > 1) {
  196. sb.append(", ");
  197. }
  198. sb.append("\"slaResults\": ");
  199. sb.append("[");
  200. for (int i = 0; i < instance.getSlaResults().length; i++) {
  201. sb.append(String.valueOf(instance.getSlaResults()[i]));
  202. if ((i + 1) < instance.getSlaResults().length) {
  203. sb.append(", ");
  204. }
  205. }
  206. sb.append("]");
  207. }
  208. if (instance.getSLAStatus() != null) {
  209. if (sb.length() > 1) {
  210. sb.append(", ");
  211. }
  212. sb.append("\"slaStatus\": ");
  213. sb.append("\"");
  214. sb.append(instance.getSLAStatus());
  215. sb.append("\"");
  216. }
  217. if (instance.getTaskNames() != null) {
  218. if (sb.length() > 1) {
  219. sb.append(", ");
  220. }
  221. sb.append("\"taskNames\": ");
  222. sb.append("[");
  223. for (int i = 0; i < instance.getTaskNames().length; i++) {
  224. sb.append("\"");
  225. sb.append(_escape(instance.getTaskNames()[i]));
  226. sb.append("\"");
  227. if ((i + 1) < instance.getTaskNames().length) {
  228. sb.append(", ");
  229. }
  230. }
  231. sb.append("]");
  232. }
  233. if (instance.getTransitions() != null) {
  234. if (sb.length() > 1) {
  235. sb.append(", ");
  236. }
  237. sb.append("\"transitions\": ");
  238. sb.append("[");
  239. for (int i = 0; i < instance.getTransitions().length; i++) {
  240. sb.append(String.valueOf(instance.getTransitions()[i]));
  241. if ((i + 1) < instance.getTransitions().length) {
  242. sb.append(", ");
  243. }
  244. }
  245. sb.append("]");
  246. }
  247. sb.append("}");
  248. return sb.toString();
  249. }
  250. public static Map<String, Object> toMap(String json) {
  251. InstanceJSONParser instanceJSONParser = new InstanceJSONParser();
  252. return instanceJSONParser.parseToMap(json);
  253. }
  254. public static Map<String, String> toMap(Instance instance) {
  255. if (instance == null) {
  256. return null;
  257. }
  258. Map<String, String> map = new TreeMap<>();
  259. DateFormat liferayToJSONDateFormat = new SimpleDateFormat(
  260. "yyyy-MM-dd'T'HH:mm:ssXX");
  261. if (instance.getActive() == null) {
  262. map.put("active", null);
  263. }
  264. else {
  265. map.put("active", String.valueOf(instance.getActive()));
  266. }
  267. if (instance.getAssetTitle() == null) {
  268. map.put("assetTitle", null);
  269. }
  270. else {
  271. map.put("assetTitle", String.valueOf(instance.getAssetTitle()));
  272. }
  273. if (instance.getAssetTitle_i18n() == null) {
  274. map.put("assetTitle_i18n", null);
  275. }
  276. else {
  277. map.put(
  278. "assetTitle_i18n",
  279. String.valueOf(instance.getAssetTitle_i18n()));
  280. }
  281. if (instance.getAssetType() == null) {
  282. map.put("assetType", null);
  283. }
  284. else {
  285. map.put("assetType", String.valueOf(instance.getAssetType()));
  286. }
  287. if (instance.getAssetType_i18n() == null) {
  288. map.put("assetType_i18n", null);
  289. }
  290. else {
  291. map.put(
  292. "assetType_i18n", String.valueOf(instance.getAssetType_i18n()));
  293. }
  294. if (instance.getAssignees() == null) {
  295. map.put("assignees", null);
  296. }
  297. else {
  298. map.put("assignees", String.valueOf(instance.getAssignees()));
  299. }
  300. if (instance.getClassName() == null) {
  301. map.put("className", null);
  302. }
  303. else {
  304. map.put("className", String.valueOf(instance.getClassName()));
  305. }
  306. if (instance.getClassPK() == null) {
  307. map.put("classPK", null);
  308. }
  309. else {
  310. map.put("classPK", String.valueOf(instance.getClassPK()));
  311. }
  312. if (instance.getCompleted() == null) {
  313. map.put("completed", null);
  314. }
  315. else {
  316. map.put("completed", String.valueOf(instance.getCompleted()));
  317. }
  318. if (instance.getCreator() == null) {
  319. map.put("creator", null);
  320. }
  321. else {
  322. map.put("creator", String.valueOf(instance.getCreator()));
  323. }
  324. if (instance.getDateCompletion() == null) {
  325. map.put("dateCompletion", null);
  326. }
  327. else {
  328. map.put(
  329. "dateCompletion",
  330. liferayToJSONDateFormat.format(instance.getDateCompletion()));
  331. }
  332. if (instance.getDateCreated() == null) {
  333. map.put("dateCreated", null);
  334. }
  335. else {
  336. map.put(
  337. "dateCreated",
  338. liferayToJSONDateFormat.format(instance.getDateCreated()));
  339. }
  340. if (instance.getDateModified() == null) {
  341. map.put("dateModified", null);
  342. }
  343. else {
  344. map.put(
  345. "dateModified",
  346. liferayToJSONDateFormat.format(instance.getDateModified()));
  347. }
  348. if (instance.getDuration() == null) {
  349. map.put("duration", null);
  350. }
  351. else {
  352. map.put("duration", String.valueOf(instance.getDuration()));
  353. }
  354. if (instance.getId() == null) {
  355. map.put("id", null);
  356. }
  357. else {
  358. map.put("id", String.valueOf(instance.getId()));
  359. }
  360. if (instance.getProcessId() == null) {
  361. map.put("processId", null);
  362. }
  363. else {
  364. map.put("processId", String.valueOf(instance.getProcessId()));
  365. }
  366. if (instance.getProcessVersion() == null) {
  367. map.put("processVersion", null);
  368. }
  369. else {
  370. map.put(
  371. "processVersion", String.valueOf(instance.getProcessVersion()));
  372. }
  373. if (instance.getSlaResults() == null) {
  374. map.put("slaResults", null);
  375. }
  376. else {
  377. map.put("slaResults", String.valueOf(instance.getSlaResults()));
  378. }
  379. if (instance.getSLAStatus() == null) {
  380. map.put("slaStatus", null);
  381. }
  382. else {
  383. map.put("slaStatus", String.valueOf(instance.getSLAStatus()));
  384. }
  385. if (instance.getTaskNames() == null) {
  386. map.put("taskNames", null);
  387. }
  388. else {
  389. map.put("taskNames", String.valueOf(instance.getTaskNames()));
  390. }
  391. if (instance.getTransitions() == null) {
  392. map.put("transitions", null);
  393. }
  394. else {
  395. map.put("transitions", String.valueOf(instance.getTransitions()));
  396. }
  397. return map;
  398. }
  399. public static class InstanceJSONParser extends BaseJSONParser<Instance> {
  400. @Override
  401. protected Instance createDTO() {
  402. return new Instance();
  403. }
  404. @Override
  405. protected Instance[] createDTOArray(int size) {
  406. return new Instance[size];
  407. }
  408. @Override
  409. protected void setField(
  410. Instance instance, String jsonParserFieldName,
  411. Object jsonParserFieldValue) {
  412. if (Objects.equals(jsonParserFieldName, "active")) {
  413. if (jsonParserFieldValue != null) {
  414. instance.setActive((Boolean)jsonParserFieldValue);
  415. }
  416. }
  417. else if (Objects.equals(jsonParserFieldName, "assetTitle")) {
  418. if (jsonParserFieldValue != null) {
  419. instance.setAssetTitle((String)jsonParserFieldValue);
  420. }
  421. }
  422. else if (Objects.equals(jsonParserFieldName, "assetTitle_i18n")) {
  423. if (jsonParserFieldValue != null) {
  424. instance.setAssetTitle_i18n(
  425. (Map)InstanceSerDes.toMap(
  426. (String)jsonParserFieldValue));
  427. }
  428. }
  429. else if (Objects.equals(jsonParserFieldName, "assetType")) {
  430. if (jsonParserFieldValue != null) {
  431. instance.setAssetType((String)jsonParserFieldValue);
  432. }
  433. }
  434. else if (Objects.equals(jsonParserFieldName, "assetType_i18n")) {
  435. if (jsonParserFieldValue != null) {
  436. instance.setAssetType_i18n(
  437. (Map)InstanceSerDes.toMap(
  438. (String)jsonParserFieldValue));
  439. }
  440. }
  441. else if (Objects.equals(jsonParserFieldName, "assignees")) {
  442. if (jsonParserFieldValue != null) {
  443. instance.setAssignees(
  444. Stream.of(
  445. toStrings((Object[])jsonParserFieldValue)
  446. ).map(
  447. object -> AssigneeSerDes.toDTO((String)object)
  448. ).toArray(
  449. size -> new Assignee[size]
  450. ));
  451. }
  452. }
  453. else if (Objects.equals(jsonParserFieldName, "className")) {
  454. if (jsonParserFieldValue != null) {
  455. instance.setClassName((String)jsonParserFieldValue);
  456. }
  457. }
  458. else if (Objects.equals(jsonParserFieldName, "classPK")) {
  459. if (jsonParserFieldValue != null) {
  460. instance.setClassPK(
  461. Long.valueOf((String)jsonParserFieldValue));
  462. }
  463. }
  464. else if (Objects.equals(jsonParserFieldName, "completed")) {
  465. if (jsonParserFieldValue != null) {
  466. instance.setCompleted((Boolean)jsonParserFieldValue);
  467. }
  468. }
  469. else if (Objects.equals(jsonParserFieldName, "creator")) {
  470. if (jsonParserFieldValue != null) {
  471. instance.setCreator(
  472. CreatorSerDes.toDTO((String)jsonParserFieldValue));
  473. }
  474. }
  475. else if (Objects.equals(jsonParserFieldName, "dateCompletion")) {
  476. if (jsonParserFieldValue != null) {
  477. instance.setDateCompletion(
  478. toDate((String)jsonParserFieldValue));
  479. }
  480. }
  481. else if (Objects.equals(jsonParserFieldName, "dateCreated")) {
  482. if (jsonParserFieldValue != null) {
  483. instance.setDateCreated(
  484. toDate((String)jsonParserFieldValue));
  485. }
  486. }
  487. else if (Objects.equals(jsonParserFieldName, "dateModified")) {
  488. if (jsonParserFieldValue != null) {
  489. instance.setDateModified(
  490. toDate((String)jsonParserFieldValue));
  491. }
  492. }
  493. else if (Objects.equals(jsonParserFieldName, "duration")) {
  494. if (jsonParserFieldValue != null) {
  495. instance.setDuration(
  496. Long.valueOf((String)jsonParserFieldValue));
  497. }
  498. }
  499. else if (Objects.equals(jsonParserFieldName, "id")) {
  500. if (jsonParserFieldValue != null) {
  501. instance.setId(Long.valueOf((String)jsonParserFieldValue));
  502. }
  503. }
  504. else if (Objects.equals(jsonParserFieldName, "processId")) {
  505. if (jsonParserFieldValue != null) {
  506. instance.setProcessId(
  507. Long.valueOf((String)jsonParserFieldValue));
  508. }
  509. }
  510. else if (Objects.equals(jsonParserFieldName, "processVersion")) {
  511. if (jsonParserFieldValue != null) {
  512. instance.setProcessVersion((String)jsonParserFieldValue);
  513. }
  514. }
  515. else if (Objects.equals(jsonParserFieldName, "slaResults")) {
  516. if (jsonParserFieldValue != null) {
  517. instance.setSlaResults(
  518. Stream.of(
  519. toStrings((Object[])jsonParserFieldValue)
  520. ).map(
  521. object -> SLAResultSerDes.toDTO((String)object)
  522. ).toArray(
  523. size -> new SLAResult[size]
  524. ));
  525. }
  526. }
  527. else if (Objects.equals(jsonParserFieldName, "slaStatus")) {
  528. if (jsonParserFieldValue != null) {
  529. instance.setSLAStatus(
  530. Instance.SLAStatus.create(
  531. (String)jsonParserFieldValue));
  532. }
  533. }
  534. else if (Objects.equals(jsonParserFieldName, "taskNames")) {
  535. if (jsonParserFieldValue != null) {
  536. instance.setTaskNames(
  537. toStrings((Object[])jsonParserFieldValue));
  538. }
  539. }
  540. else if (Objects.equals(jsonParserFieldName, "transitions")) {
  541. if (jsonParserFieldValue != null) {
  542. instance.setTransitions(
  543. Stream.of(
  544. toStrings((Object[])jsonParserFieldValue)
  545. ).map(
  546. object -> TransitionSerDes.toDTO((String)object)
  547. ).toArray(
  548. size -> new Transition[size]
  549. ));
  550. }
  551. }
  552. }
  553. }
  554. private static String _escape(Object object) {
  555. String string = String.valueOf(object);
  556. for (String[] strings : BaseJSONParser.JSON_ESCAPE_STRINGS) {
  557. string = string.replace(strings[0], strings[1]);
  558. }
  559. return string;
  560. }
  561. private static String _toJSON(Map<String, ?> map) {
  562. StringBuilder sb = new StringBuilder("{");
  563. @SuppressWarnings("unchecked")
  564. Set set = map.entrySet();
  565. @SuppressWarnings("unchecked")
  566. Iterator<Map.Entry<String, ?>> iterator = set.iterator();
  567. while (iterator.hasNext()) {
  568. Map.Entry<String, ?> entry = iterator.next();
  569. sb.append("\"");
  570. sb.append(entry.getKey());
  571. sb.append("\": ");
  572. Object value = entry.getValue();
  573. Class<?> valueClass = value.getClass();
  574. if (value instanceof Map) {
  575. sb.append(_toJSON((Map)value));
  576. }
  577. else if (valueClass.isArray()) {
  578. Object[] values = (Object[])value;
  579. sb.append("[");
  580. for (int i = 0; i < values.length; i++) {
  581. sb.append("\"");
  582. sb.append(_escape(values[i]));
  583. sb.append("\"");
  584. if ((i + 1) < values.length) {
  585. sb.append(", ");
  586. }
  587. }
  588. sb.append("]");
  589. }
  590. else if (value instanceof String) {
  591. sb.append("\"");
  592. sb.append(_escape(entry.getValue()));
  593. sb.append("\"");
  594. }
  595. else {
  596. sb.append(String.valueOf(entry.getValue()));
  597. }
  598. if (iterator.hasNext()) {
  599. sb.append(", ");
  600. }
  601. }
  602. sb.append("}");
  603. return sb.toString();
  604. }
  605. }