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

https://github.com/danielreuther/liferay-portal · Java · 969 lines · 753 code · 199 blank · 17 comment · 274 complexity · 2d8bb731a660877a69b2f61787e547ca 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.CustomField;
  16. import com.liferay.headless.delivery.client.dto.v1_0.KnowledgeBaseArticle;
  17. import com.liferay.headless.delivery.client.dto.v1_0.RelatedContent;
  18. import com.liferay.headless.delivery.client.dto.v1_0.TaxonomyCategoryBrief;
  19. import com.liferay.headless.delivery.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 Javier Gamarra
  31. * @generated
  32. */
  33. @Generated("")
  34. public class KnowledgeBaseArticleSerDes {
  35. public static KnowledgeBaseArticle toDTO(String json) {
  36. KnowledgeBaseArticleJSONParser knowledgeBaseArticleJSONParser =
  37. new KnowledgeBaseArticleJSONParser();
  38. return knowledgeBaseArticleJSONParser.parseToDTO(json);
  39. }
  40. public static KnowledgeBaseArticle[] toDTOs(String json) {
  41. KnowledgeBaseArticleJSONParser knowledgeBaseArticleJSONParser =
  42. new KnowledgeBaseArticleJSONParser();
  43. return knowledgeBaseArticleJSONParser.parseToDTOs(json);
  44. }
  45. public static String toJSON(KnowledgeBaseArticle knowledgeBaseArticle) {
  46. if (knowledgeBaseArticle == null) {
  47. return "null";
  48. }
  49. StringBuilder sb = new StringBuilder();
  50. sb.append("{");
  51. DateFormat liferayToJSONDateFormat = new SimpleDateFormat(
  52. "yyyy-MM-dd'T'HH:mm:ssXX");
  53. if (knowledgeBaseArticle.getActions() != null) {
  54. if (sb.length() > 1) {
  55. sb.append(", ");
  56. }
  57. sb.append("\"actions\": ");
  58. sb.append(_toJSON(knowledgeBaseArticle.getActions()));
  59. }
  60. if (knowledgeBaseArticle.getAggregateRating() != null) {
  61. if (sb.length() > 1) {
  62. sb.append(", ");
  63. }
  64. sb.append("\"aggregateRating\": ");
  65. sb.append(
  66. String.valueOf(knowledgeBaseArticle.getAggregateRating()));
  67. }
  68. if (knowledgeBaseArticle.getArticleBody() != null) {
  69. if (sb.length() > 1) {
  70. sb.append(", ");
  71. }
  72. sb.append("\"articleBody\": ");
  73. sb.append("\"");
  74. sb.append(_escape(knowledgeBaseArticle.getArticleBody()));
  75. sb.append("\"");
  76. }
  77. if (knowledgeBaseArticle.getCreator() != null) {
  78. if (sb.length() > 1) {
  79. sb.append(", ");
  80. }
  81. sb.append("\"creator\": ");
  82. sb.append(String.valueOf(knowledgeBaseArticle.getCreator()));
  83. }
  84. if (knowledgeBaseArticle.getCustomFields() != null) {
  85. if (sb.length() > 1) {
  86. sb.append(", ");
  87. }
  88. sb.append("\"customFields\": ");
  89. sb.append("[");
  90. for (int i = 0; i < knowledgeBaseArticle.getCustomFields().length;
  91. i++) {
  92. sb.append(
  93. String.valueOf(knowledgeBaseArticle.getCustomFields()[i]));
  94. if ((i + 1) < knowledgeBaseArticle.getCustomFields().length) {
  95. sb.append(", ");
  96. }
  97. }
  98. sb.append("]");
  99. }
  100. if (knowledgeBaseArticle.getDateCreated() != null) {
  101. if (sb.length() > 1) {
  102. sb.append(", ");
  103. }
  104. sb.append("\"dateCreated\": ");
  105. sb.append("\"");
  106. sb.append(
  107. liferayToJSONDateFormat.format(
  108. knowledgeBaseArticle.getDateCreated()));
  109. sb.append("\"");
  110. }
  111. if (knowledgeBaseArticle.getDateModified() != null) {
  112. if (sb.length() > 1) {
  113. sb.append(", ");
  114. }
  115. sb.append("\"dateModified\": ");
  116. sb.append("\"");
  117. sb.append(
  118. liferayToJSONDateFormat.format(
  119. knowledgeBaseArticle.getDateModified()));
  120. sb.append("\"");
  121. }
  122. if (knowledgeBaseArticle.getDescription() != null) {
  123. if (sb.length() > 1) {
  124. sb.append(", ");
  125. }
  126. sb.append("\"description\": ");
  127. sb.append("\"");
  128. sb.append(_escape(knowledgeBaseArticle.getDescription()));
  129. sb.append("\"");
  130. }
  131. if (knowledgeBaseArticle.getEncodingFormat() != null) {
  132. if (sb.length() > 1) {
  133. sb.append(", ");
  134. }
  135. sb.append("\"encodingFormat\": ");
  136. sb.append("\"");
  137. sb.append(_escape(knowledgeBaseArticle.getEncodingFormat()));
  138. sb.append("\"");
  139. }
  140. if (knowledgeBaseArticle.getExternalReferenceCode() != null) {
  141. if (sb.length() > 1) {
  142. sb.append(", ");
  143. }
  144. sb.append("\"externalReferenceCode\": ");
  145. sb.append("\"");
  146. sb.append(_escape(knowledgeBaseArticle.getExternalReferenceCode()));
  147. sb.append("\"");
  148. }
  149. if (knowledgeBaseArticle.getFriendlyUrlPath() != null) {
  150. if (sb.length() > 1) {
  151. sb.append(", ");
  152. }
  153. sb.append("\"friendlyUrlPath\": ");
  154. sb.append("\"");
  155. sb.append(_escape(knowledgeBaseArticle.getFriendlyUrlPath()));
  156. sb.append("\"");
  157. }
  158. if (knowledgeBaseArticle.getId() != null) {
  159. if (sb.length() > 1) {
  160. sb.append(", ");
  161. }
  162. sb.append("\"id\": ");
  163. sb.append(knowledgeBaseArticle.getId());
  164. }
  165. if (knowledgeBaseArticle.getKeywords() != null) {
  166. if (sb.length() > 1) {
  167. sb.append(", ");
  168. }
  169. sb.append("\"keywords\": ");
  170. sb.append("[");
  171. for (int i = 0; i < knowledgeBaseArticle.getKeywords().length;
  172. i++) {
  173. sb.append("\"");
  174. sb.append(_escape(knowledgeBaseArticle.getKeywords()[i]));
  175. sb.append("\"");
  176. if ((i + 1) < knowledgeBaseArticle.getKeywords().length) {
  177. sb.append(", ");
  178. }
  179. }
  180. sb.append("]");
  181. }
  182. if (knowledgeBaseArticle.getNumberOfAttachments() != null) {
  183. if (sb.length() > 1) {
  184. sb.append(", ");
  185. }
  186. sb.append("\"numberOfAttachments\": ");
  187. sb.append(knowledgeBaseArticle.getNumberOfAttachments());
  188. }
  189. if (knowledgeBaseArticle.getNumberOfKnowledgeBaseArticles() != null) {
  190. if (sb.length() > 1) {
  191. sb.append(", ");
  192. }
  193. sb.append("\"numberOfKnowledgeBaseArticles\": ");
  194. sb.append(knowledgeBaseArticle.getNumberOfKnowledgeBaseArticles());
  195. }
  196. if (knowledgeBaseArticle.getParentKnowledgeBaseArticleId() != null) {
  197. if (sb.length() > 1) {
  198. sb.append(", ");
  199. }
  200. sb.append("\"parentKnowledgeBaseArticleId\": ");
  201. sb.append(knowledgeBaseArticle.getParentKnowledgeBaseArticleId());
  202. }
  203. if (knowledgeBaseArticle.getParentKnowledgeBaseFolder() != null) {
  204. if (sb.length() > 1) {
  205. sb.append(", ");
  206. }
  207. sb.append("\"parentKnowledgeBaseFolder\": ");
  208. sb.append(
  209. String.valueOf(
  210. knowledgeBaseArticle.getParentKnowledgeBaseFolder()));
  211. }
  212. if (knowledgeBaseArticle.getParentKnowledgeBaseFolderId() != null) {
  213. if (sb.length() > 1) {
  214. sb.append(", ");
  215. }
  216. sb.append("\"parentKnowledgeBaseFolderId\": ");
  217. sb.append(knowledgeBaseArticle.getParentKnowledgeBaseFolderId());
  218. }
  219. if (knowledgeBaseArticle.getRelatedContents() != null) {
  220. if (sb.length() > 1) {
  221. sb.append(", ");
  222. }
  223. sb.append("\"relatedContents\": ");
  224. sb.append("[");
  225. for (int i = 0;
  226. i < knowledgeBaseArticle.getRelatedContents().length; i++) {
  227. sb.append(
  228. String.valueOf(
  229. knowledgeBaseArticle.getRelatedContents()[i]));
  230. if ((i + 1) <
  231. knowledgeBaseArticle.getRelatedContents().length) {
  232. sb.append(", ");
  233. }
  234. }
  235. sb.append("]");
  236. }
  237. if (knowledgeBaseArticle.getSiteId() != null) {
  238. if (sb.length() > 1) {
  239. sb.append(", ");
  240. }
  241. sb.append("\"siteId\": ");
  242. sb.append(knowledgeBaseArticle.getSiteId());
  243. }
  244. if (knowledgeBaseArticle.getSubscribed() != null) {
  245. if (sb.length() > 1) {
  246. sb.append(", ");
  247. }
  248. sb.append("\"subscribed\": ");
  249. sb.append(knowledgeBaseArticle.getSubscribed());
  250. }
  251. if (knowledgeBaseArticle.getTaxonomyCategoryBriefs() != null) {
  252. if (sb.length() > 1) {
  253. sb.append(", ");
  254. }
  255. sb.append("\"taxonomyCategoryBriefs\": ");
  256. sb.append("[");
  257. for (int i = 0;
  258. i < knowledgeBaseArticle.getTaxonomyCategoryBriefs().length;
  259. i++) {
  260. sb.append(
  261. String.valueOf(
  262. knowledgeBaseArticle.getTaxonomyCategoryBriefs()[i]));
  263. if ((i + 1) <
  264. knowledgeBaseArticle.
  265. getTaxonomyCategoryBriefs().length) {
  266. sb.append(", ");
  267. }
  268. }
  269. sb.append("]");
  270. }
  271. if (knowledgeBaseArticle.getTaxonomyCategoryIds() != null) {
  272. if (sb.length() > 1) {
  273. sb.append(", ");
  274. }
  275. sb.append("\"taxonomyCategoryIds\": ");
  276. sb.append("[");
  277. for (int i = 0;
  278. i < knowledgeBaseArticle.getTaxonomyCategoryIds().length;
  279. i++) {
  280. sb.append(knowledgeBaseArticle.getTaxonomyCategoryIds()[i]);
  281. if ((i + 1) <
  282. knowledgeBaseArticle.getTaxonomyCategoryIds().length) {
  283. sb.append(", ");
  284. }
  285. }
  286. sb.append("]");
  287. }
  288. if (knowledgeBaseArticle.getTitle() != null) {
  289. if (sb.length() > 1) {
  290. sb.append(", ");
  291. }
  292. sb.append("\"title\": ");
  293. sb.append("\"");
  294. sb.append(_escape(knowledgeBaseArticle.getTitle()));
  295. sb.append("\"");
  296. }
  297. if (knowledgeBaseArticle.getViewableBy() != null) {
  298. if (sb.length() > 1) {
  299. sb.append(", ");
  300. }
  301. sb.append("\"viewableBy\": ");
  302. sb.append("\"");
  303. sb.append(knowledgeBaseArticle.getViewableBy());
  304. sb.append("\"");
  305. }
  306. sb.append("}");
  307. return sb.toString();
  308. }
  309. public static Map<String, Object> toMap(String json) {
  310. KnowledgeBaseArticleJSONParser knowledgeBaseArticleJSONParser =
  311. new KnowledgeBaseArticleJSONParser();
  312. return knowledgeBaseArticleJSONParser.parseToMap(json);
  313. }
  314. public static Map<String, String> toMap(
  315. KnowledgeBaseArticle knowledgeBaseArticle) {
  316. if (knowledgeBaseArticle == null) {
  317. return null;
  318. }
  319. Map<String, String> map = new TreeMap<>();
  320. DateFormat liferayToJSONDateFormat = new SimpleDateFormat(
  321. "yyyy-MM-dd'T'HH:mm:ssXX");
  322. if (knowledgeBaseArticle.getActions() == null) {
  323. map.put("actions", null);
  324. }
  325. else {
  326. map.put(
  327. "actions", String.valueOf(knowledgeBaseArticle.getActions()));
  328. }
  329. if (knowledgeBaseArticle.getAggregateRating() == null) {
  330. map.put("aggregateRating", null);
  331. }
  332. else {
  333. map.put(
  334. "aggregateRating",
  335. String.valueOf(knowledgeBaseArticle.getAggregateRating()));
  336. }
  337. if (knowledgeBaseArticle.getArticleBody() == null) {
  338. map.put("articleBody", null);
  339. }
  340. else {
  341. map.put(
  342. "articleBody",
  343. String.valueOf(knowledgeBaseArticle.getArticleBody()));
  344. }
  345. if (knowledgeBaseArticle.getCreator() == null) {
  346. map.put("creator", null);
  347. }
  348. else {
  349. map.put(
  350. "creator", String.valueOf(knowledgeBaseArticle.getCreator()));
  351. }
  352. if (knowledgeBaseArticle.getCustomFields() == null) {
  353. map.put("customFields", null);
  354. }
  355. else {
  356. map.put(
  357. "customFields",
  358. String.valueOf(knowledgeBaseArticle.getCustomFields()));
  359. }
  360. if (knowledgeBaseArticle.getDateCreated() == null) {
  361. map.put("dateCreated", null);
  362. }
  363. else {
  364. map.put(
  365. "dateCreated",
  366. liferayToJSONDateFormat.format(
  367. knowledgeBaseArticle.getDateCreated()));
  368. }
  369. if (knowledgeBaseArticle.getDateModified() == null) {
  370. map.put("dateModified", null);
  371. }
  372. else {
  373. map.put(
  374. "dateModified",
  375. liferayToJSONDateFormat.format(
  376. knowledgeBaseArticle.getDateModified()));
  377. }
  378. if (knowledgeBaseArticle.getDescription() == null) {
  379. map.put("description", null);
  380. }
  381. else {
  382. map.put(
  383. "description",
  384. String.valueOf(knowledgeBaseArticle.getDescription()));
  385. }
  386. if (knowledgeBaseArticle.getEncodingFormat() == null) {
  387. map.put("encodingFormat", null);
  388. }
  389. else {
  390. map.put(
  391. "encodingFormat",
  392. String.valueOf(knowledgeBaseArticle.getEncodingFormat()));
  393. }
  394. if (knowledgeBaseArticle.getExternalReferenceCode() == null) {
  395. map.put("externalReferenceCode", null);
  396. }
  397. else {
  398. map.put(
  399. "externalReferenceCode",
  400. String.valueOf(
  401. knowledgeBaseArticle.getExternalReferenceCode()));
  402. }
  403. if (knowledgeBaseArticle.getFriendlyUrlPath() == null) {
  404. map.put("friendlyUrlPath", null);
  405. }
  406. else {
  407. map.put(
  408. "friendlyUrlPath",
  409. String.valueOf(knowledgeBaseArticle.getFriendlyUrlPath()));
  410. }
  411. if (knowledgeBaseArticle.getId() == null) {
  412. map.put("id", null);
  413. }
  414. else {
  415. map.put("id", String.valueOf(knowledgeBaseArticle.getId()));
  416. }
  417. if (knowledgeBaseArticle.getKeywords() == null) {
  418. map.put("keywords", null);
  419. }
  420. else {
  421. map.put(
  422. "keywords", String.valueOf(knowledgeBaseArticle.getKeywords()));
  423. }
  424. if (knowledgeBaseArticle.getNumberOfAttachments() == null) {
  425. map.put("numberOfAttachments", null);
  426. }
  427. else {
  428. map.put(
  429. "numberOfAttachments",
  430. String.valueOf(knowledgeBaseArticle.getNumberOfAttachments()));
  431. }
  432. if (knowledgeBaseArticle.getNumberOfKnowledgeBaseArticles() == null) {
  433. map.put("numberOfKnowledgeBaseArticles", null);
  434. }
  435. else {
  436. map.put(
  437. "numberOfKnowledgeBaseArticles",
  438. String.valueOf(
  439. knowledgeBaseArticle.getNumberOfKnowledgeBaseArticles()));
  440. }
  441. if (knowledgeBaseArticle.getParentKnowledgeBaseArticleId() == null) {
  442. map.put("parentKnowledgeBaseArticleId", null);
  443. }
  444. else {
  445. map.put(
  446. "parentKnowledgeBaseArticleId",
  447. String.valueOf(
  448. knowledgeBaseArticle.getParentKnowledgeBaseArticleId()));
  449. }
  450. if (knowledgeBaseArticle.getParentKnowledgeBaseFolder() == null) {
  451. map.put("parentKnowledgeBaseFolder", null);
  452. }
  453. else {
  454. map.put(
  455. "parentKnowledgeBaseFolder",
  456. String.valueOf(
  457. knowledgeBaseArticle.getParentKnowledgeBaseFolder()));
  458. }
  459. if (knowledgeBaseArticle.getParentKnowledgeBaseFolderId() == null) {
  460. map.put("parentKnowledgeBaseFolderId", null);
  461. }
  462. else {
  463. map.put(
  464. "parentKnowledgeBaseFolderId",
  465. String.valueOf(
  466. knowledgeBaseArticle.getParentKnowledgeBaseFolderId()));
  467. }
  468. if (knowledgeBaseArticle.getRelatedContents() == null) {
  469. map.put("relatedContents", null);
  470. }
  471. else {
  472. map.put(
  473. "relatedContents",
  474. String.valueOf(knowledgeBaseArticle.getRelatedContents()));
  475. }
  476. if (knowledgeBaseArticle.getSiteId() == null) {
  477. map.put("siteId", null);
  478. }
  479. else {
  480. map.put("siteId", String.valueOf(knowledgeBaseArticle.getSiteId()));
  481. }
  482. if (knowledgeBaseArticle.getSubscribed() == null) {
  483. map.put("subscribed", null);
  484. }
  485. else {
  486. map.put(
  487. "subscribed",
  488. String.valueOf(knowledgeBaseArticle.getSubscribed()));
  489. }
  490. if (knowledgeBaseArticle.getTaxonomyCategoryBriefs() == null) {
  491. map.put("taxonomyCategoryBriefs", null);
  492. }
  493. else {
  494. map.put(
  495. "taxonomyCategoryBriefs",
  496. String.valueOf(
  497. knowledgeBaseArticle.getTaxonomyCategoryBriefs()));
  498. }
  499. if (knowledgeBaseArticle.getTaxonomyCategoryIds() == null) {
  500. map.put("taxonomyCategoryIds", null);
  501. }
  502. else {
  503. map.put(
  504. "taxonomyCategoryIds",
  505. String.valueOf(knowledgeBaseArticle.getTaxonomyCategoryIds()));
  506. }
  507. if (knowledgeBaseArticle.getTitle() == null) {
  508. map.put("title", null);
  509. }
  510. else {
  511. map.put("title", String.valueOf(knowledgeBaseArticle.getTitle()));
  512. }
  513. if (knowledgeBaseArticle.getViewableBy() == null) {
  514. map.put("viewableBy", null);
  515. }
  516. else {
  517. map.put(
  518. "viewableBy",
  519. String.valueOf(knowledgeBaseArticle.getViewableBy()));
  520. }
  521. return map;
  522. }
  523. public static class KnowledgeBaseArticleJSONParser
  524. extends BaseJSONParser<KnowledgeBaseArticle> {
  525. @Override
  526. protected KnowledgeBaseArticle createDTO() {
  527. return new KnowledgeBaseArticle();
  528. }
  529. @Override
  530. protected KnowledgeBaseArticle[] createDTOArray(int size) {
  531. return new KnowledgeBaseArticle[size];
  532. }
  533. @Override
  534. protected void setField(
  535. KnowledgeBaseArticle knowledgeBaseArticle,
  536. String jsonParserFieldName, Object jsonParserFieldValue) {
  537. if (Objects.equals(jsonParserFieldName, "actions")) {
  538. if (jsonParserFieldValue != null) {
  539. knowledgeBaseArticle.setActions(
  540. (Map)KnowledgeBaseArticleSerDes.toMap(
  541. (String)jsonParserFieldValue));
  542. }
  543. }
  544. else if (Objects.equals(jsonParserFieldName, "aggregateRating")) {
  545. if (jsonParserFieldValue != null) {
  546. knowledgeBaseArticle.setAggregateRating(
  547. AggregateRatingSerDes.toDTO(
  548. (String)jsonParserFieldValue));
  549. }
  550. }
  551. else if (Objects.equals(jsonParserFieldName, "articleBody")) {
  552. if (jsonParserFieldValue != null) {
  553. knowledgeBaseArticle.setArticleBody(
  554. (String)jsonParserFieldValue);
  555. }
  556. }
  557. else if (Objects.equals(jsonParserFieldName, "creator")) {
  558. if (jsonParserFieldValue != null) {
  559. knowledgeBaseArticle.setCreator(
  560. CreatorSerDes.toDTO((String)jsonParserFieldValue));
  561. }
  562. }
  563. else if (Objects.equals(jsonParserFieldName, "customFields")) {
  564. if (jsonParserFieldValue != null) {
  565. knowledgeBaseArticle.setCustomFields(
  566. Stream.of(
  567. toStrings((Object[])jsonParserFieldValue)
  568. ).map(
  569. object -> CustomFieldSerDes.toDTO((String)object)
  570. ).toArray(
  571. size -> new CustomField[size]
  572. ));
  573. }
  574. }
  575. else if (Objects.equals(jsonParserFieldName, "dateCreated")) {
  576. if (jsonParserFieldValue != null) {
  577. knowledgeBaseArticle.setDateCreated(
  578. toDate((String)jsonParserFieldValue));
  579. }
  580. }
  581. else if (Objects.equals(jsonParserFieldName, "dateModified")) {
  582. if (jsonParserFieldValue != null) {
  583. knowledgeBaseArticle.setDateModified(
  584. toDate((String)jsonParserFieldValue));
  585. }
  586. }
  587. else if (Objects.equals(jsonParserFieldName, "description")) {
  588. if (jsonParserFieldValue != null) {
  589. knowledgeBaseArticle.setDescription(
  590. (String)jsonParserFieldValue);
  591. }
  592. }
  593. else if (Objects.equals(jsonParserFieldName, "encodingFormat")) {
  594. if (jsonParserFieldValue != null) {
  595. knowledgeBaseArticle.setEncodingFormat(
  596. (String)jsonParserFieldValue);
  597. }
  598. }
  599. else if (Objects.equals(
  600. jsonParserFieldName, "externalReferenceCode")) {
  601. if (jsonParserFieldValue != null) {
  602. knowledgeBaseArticle.setExternalReferenceCode(
  603. (String)jsonParserFieldValue);
  604. }
  605. }
  606. else if (Objects.equals(jsonParserFieldName, "friendlyUrlPath")) {
  607. if (jsonParserFieldValue != null) {
  608. knowledgeBaseArticle.setFriendlyUrlPath(
  609. (String)jsonParserFieldValue);
  610. }
  611. }
  612. else if (Objects.equals(jsonParserFieldName, "id")) {
  613. if (jsonParserFieldValue != null) {
  614. knowledgeBaseArticle.setId(
  615. Long.valueOf((String)jsonParserFieldValue));
  616. }
  617. }
  618. else if (Objects.equals(jsonParserFieldName, "keywords")) {
  619. if (jsonParserFieldValue != null) {
  620. knowledgeBaseArticle.setKeywords(
  621. toStrings((Object[])jsonParserFieldValue));
  622. }
  623. }
  624. else if (Objects.equals(
  625. jsonParserFieldName, "numberOfAttachments")) {
  626. if (jsonParserFieldValue != null) {
  627. knowledgeBaseArticle.setNumberOfAttachments(
  628. Integer.valueOf((String)jsonParserFieldValue));
  629. }
  630. }
  631. else if (Objects.equals(
  632. jsonParserFieldName, "numberOfKnowledgeBaseArticles")) {
  633. if (jsonParserFieldValue != null) {
  634. knowledgeBaseArticle.setNumberOfKnowledgeBaseArticles(
  635. Integer.valueOf((String)jsonParserFieldValue));
  636. }
  637. }
  638. else if (Objects.equals(
  639. jsonParserFieldName, "parentKnowledgeBaseArticleId")) {
  640. if (jsonParserFieldValue != null) {
  641. knowledgeBaseArticle.setParentKnowledgeBaseArticleId(
  642. Long.valueOf((String)jsonParserFieldValue));
  643. }
  644. }
  645. else if (Objects.equals(
  646. jsonParserFieldName, "parentKnowledgeBaseFolder")) {
  647. if (jsonParserFieldValue != null) {
  648. knowledgeBaseArticle.setParentKnowledgeBaseFolder(
  649. ParentKnowledgeBaseFolderSerDes.toDTO(
  650. (String)jsonParserFieldValue));
  651. }
  652. }
  653. else if (Objects.equals(
  654. jsonParserFieldName, "parentKnowledgeBaseFolderId")) {
  655. if (jsonParserFieldValue != null) {
  656. knowledgeBaseArticle.setParentKnowledgeBaseFolderId(
  657. Long.valueOf((String)jsonParserFieldValue));
  658. }
  659. }
  660. else if (Objects.equals(jsonParserFieldName, "relatedContents")) {
  661. if (jsonParserFieldValue != null) {
  662. knowledgeBaseArticle.setRelatedContents(
  663. Stream.of(
  664. toStrings((Object[])jsonParserFieldValue)
  665. ).map(
  666. object -> RelatedContentSerDes.toDTO((String)object)
  667. ).toArray(
  668. size -> new RelatedContent[size]
  669. ));
  670. }
  671. }
  672. else if (Objects.equals(jsonParserFieldName, "siteId")) {
  673. if (jsonParserFieldValue != null) {
  674. knowledgeBaseArticle.setSiteId(
  675. Long.valueOf((String)jsonParserFieldValue));
  676. }
  677. }
  678. else if (Objects.equals(jsonParserFieldName, "subscribed")) {
  679. if (jsonParserFieldValue != null) {
  680. knowledgeBaseArticle.setSubscribed(
  681. (Boolean)jsonParserFieldValue);
  682. }
  683. }
  684. else if (Objects.equals(
  685. jsonParserFieldName, "taxonomyCategoryBriefs")) {
  686. if (jsonParserFieldValue != null) {
  687. knowledgeBaseArticle.setTaxonomyCategoryBriefs(
  688. Stream.of(
  689. toStrings((Object[])jsonParserFieldValue)
  690. ).map(
  691. object -> TaxonomyCategoryBriefSerDes.toDTO(
  692. (String)object)
  693. ).toArray(
  694. size -> new TaxonomyCategoryBrief[size]
  695. ));
  696. }
  697. }
  698. else if (Objects.equals(
  699. jsonParserFieldName, "taxonomyCategoryIds")) {
  700. if (jsonParserFieldValue != null) {
  701. knowledgeBaseArticle.setTaxonomyCategoryIds(
  702. toLongs((Object[])jsonParserFieldValue));
  703. }
  704. }
  705. else if (Objects.equals(jsonParserFieldName, "title")) {
  706. if (jsonParserFieldValue != null) {
  707. knowledgeBaseArticle.setTitle((String)jsonParserFieldValue);
  708. }
  709. }
  710. else if (Objects.equals(jsonParserFieldName, "viewableBy")) {
  711. if (jsonParserFieldValue != null) {
  712. knowledgeBaseArticle.setViewableBy(
  713. KnowledgeBaseArticle.ViewableBy.create(
  714. (String)jsonParserFieldValue));
  715. }
  716. }
  717. }
  718. }
  719. private static String _escape(Object object) {
  720. String string = String.valueOf(object);
  721. for (String[] strings : BaseJSONParser.JSON_ESCAPE_STRINGS) {
  722. string = string.replace(strings[0], strings[1]);
  723. }
  724. return string;
  725. }
  726. private static String _toJSON(Map<String, ?> map) {
  727. StringBuilder sb = new StringBuilder("{");
  728. @SuppressWarnings("unchecked")
  729. Set set = map.entrySet();
  730. @SuppressWarnings("unchecked")
  731. Iterator<Map.Entry<String, ?>> iterator = set.iterator();
  732. while (iterator.hasNext()) {
  733. Map.Entry<String, ?> entry = iterator.next();
  734. sb.append("\"");
  735. sb.append(entry.getKey());
  736. sb.append("\": ");
  737. Object value = entry.getValue();
  738. Class<?> valueClass = value.getClass();
  739. if (value instanceof Map) {
  740. sb.append(_toJSON((Map)value));
  741. }
  742. else if (valueClass.isArray()) {
  743. Object[] values = (Object[])value;
  744. sb.append("[");
  745. for (int i = 0; i < values.length; i++) {
  746. sb.append("\"");
  747. sb.append(_escape(values[i]));
  748. sb.append("\"");
  749. if ((i + 1) < values.length) {
  750. sb.append(", ");
  751. }
  752. }
  753. sb.append("]");
  754. }
  755. else if (value instanceof String) {
  756. sb.append("\"");
  757. sb.append(_escape(entry.getValue()));
  758. sb.append("\"");
  759. }
  760. else {
  761. sb.append(String.valueOf(entry.getValue()));
  762. }
  763. if (iterator.hasNext()) {
  764. sb.append(", ");
  765. }
  766. }
  767. sb.append("}");
  768. return sb.toString();
  769. }
  770. }