/modules/apps/headless/headless-form/headless-form-client/src/main/java/com/liferay/headless/form/client/resource/v1_0/FormRecordResource.java

https://github.com/danielreuther/liferay-portal · Java · 751 lines · 553 code · 181 blank · 17 comment · 58 complexity · 9177cc25689fb2d092db7d96cf7223a0 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.form.client.resource.v1_0;
  15. import com.liferay.headless.form.client.dto.v1_0.FormRecord;
  16. import com.liferay.headless.form.client.http.HttpInvoker;
  17. import com.liferay.headless.form.client.pagination.Page;
  18. import com.liferay.headless.form.client.pagination.Pagination;
  19. import com.liferay.headless.form.client.problem.Problem;
  20. import com.liferay.headless.form.client.serdes.v1_0.FormRecordSerDes;
  21. import java.util.LinkedHashMap;
  22. import java.util.Locale;
  23. import java.util.Map;
  24. import java.util.logging.Level;
  25. import java.util.logging.Logger;
  26. import javax.annotation.Generated;
  27. /**
  28. * @author Javier Gamarra
  29. * @generated
  30. */
  31. @Generated("")
  32. public interface FormRecordResource {
  33. public static Builder builder() {
  34. return new Builder();
  35. }
  36. public FormRecord getFormRecord(Long formRecordId) throws Exception;
  37. public HttpInvoker.HttpResponse getFormRecordHttpResponse(Long formRecordId)
  38. throws Exception;
  39. public FormRecord putFormRecord(Long formRecordId, FormRecord formRecord)
  40. throws Exception;
  41. public HttpInvoker.HttpResponse putFormRecordHttpResponse(
  42. Long formRecordId, FormRecord formRecord)
  43. throws Exception;
  44. public void putFormRecordBatch(String callbackURL, Object object)
  45. throws Exception;
  46. public HttpInvoker.HttpResponse putFormRecordBatchHttpResponse(
  47. String callbackURL, Object object)
  48. throws Exception;
  49. public Page<FormRecord> getFormFormRecordsPage(
  50. Long formId, Pagination pagination)
  51. throws Exception;
  52. public HttpInvoker.HttpResponse getFormFormRecordsPageHttpResponse(
  53. Long formId, Pagination pagination)
  54. throws Exception;
  55. public FormRecord postFormFormRecord(Long formId, FormRecord formRecord)
  56. throws Exception;
  57. public HttpInvoker.HttpResponse postFormFormRecordHttpResponse(
  58. Long formId, FormRecord formRecord)
  59. throws Exception;
  60. public void postFormFormRecordBatch(
  61. Long formId, String callbackURL, Object object)
  62. throws Exception;
  63. public HttpInvoker.HttpResponse postFormFormRecordBatchHttpResponse(
  64. Long formId, String callbackURL, Object object)
  65. throws Exception;
  66. public FormRecord getFormFormRecordByLatestDraft(Long formId)
  67. throws Exception;
  68. public HttpInvoker.HttpResponse getFormFormRecordByLatestDraftHttpResponse(
  69. Long formId)
  70. throws Exception;
  71. public static class Builder {
  72. public Builder authentication(String login, String password) {
  73. _login = login;
  74. _password = password;
  75. return this;
  76. }
  77. public FormRecordResource build() {
  78. return new FormRecordResourceImpl(this);
  79. }
  80. public Builder contextPath(String contextPath) {
  81. _contextPath = contextPath;
  82. return this;
  83. }
  84. public Builder endpoint(String host, int port, String scheme) {
  85. _host = host;
  86. _port = port;
  87. _scheme = scheme;
  88. return this;
  89. }
  90. public Builder header(String key, String value) {
  91. _headers.put(key, value);
  92. return this;
  93. }
  94. public Builder locale(Locale locale) {
  95. _locale = locale;
  96. return this;
  97. }
  98. public Builder parameter(String key, String value) {
  99. _parameters.put(key, value);
  100. return this;
  101. }
  102. public Builder parameters(String... parameters) {
  103. if ((parameters.length % 2) != 0) {
  104. throw new IllegalArgumentException(
  105. "Parameters length is not an even number");
  106. }
  107. for (int i = 0; i < parameters.length; i += 2) {
  108. String parameterName = String.valueOf(parameters[i]);
  109. String parameterValue = String.valueOf(parameters[i + 1]);
  110. _parameters.put(parameterName, parameterValue);
  111. }
  112. return this;
  113. }
  114. private Builder() {
  115. }
  116. private String _contextPath = "";
  117. private Map<String, String> _headers = new LinkedHashMap<>();
  118. private String _host = "localhost";
  119. private Locale _locale;
  120. private String _login = "";
  121. private String _password = "";
  122. private Map<String, String> _parameters = new LinkedHashMap<>();
  123. private int _port = 8080;
  124. private String _scheme = "http";
  125. }
  126. public static class FormRecordResourceImpl implements FormRecordResource {
  127. public FormRecord getFormRecord(Long formRecordId) throws Exception {
  128. HttpInvoker.HttpResponse httpResponse = getFormRecordHttpResponse(
  129. formRecordId);
  130. String content = httpResponse.getContent();
  131. if ((httpResponse.getStatusCode() / 100) != 2) {
  132. _logger.log(
  133. Level.WARNING,
  134. "Unable to process HTTP response content: " + content);
  135. _logger.log(
  136. Level.WARNING,
  137. "HTTP response message: " + httpResponse.getMessage());
  138. _logger.log(
  139. Level.WARNING,
  140. "HTTP response status code: " +
  141. httpResponse.getStatusCode());
  142. throw new Problem.ProblemException(Problem.toDTO(content));
  143. }
  144. else {
  145. _logger.fine("HTTP response content: " + content);
  146. _logger.fine(
  147. "HTTP response message: " + httpResponse.getMessage());
  148. _logger.fine(
  149. "HTTP response status code: " +
  150. httpResponse.getStatusCode());
  151. }
  152. try {
  153. return FormRecordSerDes.toDTO(content);
  154. }
  155. catch (Exception e) {
  156. _logger.log(
  157. Level.WARNING,
  158. "Unable to process HTTP response: " + content, e);
  159. throw new Problem.ProblemException(Problem.toDTO(content));
  160. }
  161. }
  162. public HttpInvoker.HttpResponse getFormRecordHttpResponse(
  163. Long formRecordId)
  164. throws Exception {
  165. HttpInvoker httpInvoker = HttpInvoker.newHttpInvoker();
  166. if (_builder._locale != null) {
  167. httpInvoker.header(
  168. "Accept-Language", _builder._locale.toLanguageTag());
  169. }
  170. for (Map.Entry<String, String> entry :
  171. _builder._headers.entrySet()) {
  172. httpInvoker.header(entry.getKey(), entry.getValue());
  173. }
  174. for (Map.Entry<String, String> entry :
  175. _builder._parameters.entrySet()) {
  176. httpInvoker.parameter(entry.getKey(), entry.getValue());
  177. }
  178. httpInvoker.httpMethod(HttpInvoker.HttpMethod.GET);
  179. httpInvoker.path(
  180. _builder._scheme + "://" + _builder._host + ":" +
  181. _builder._port + _builder._contextPath +
  182. "/o/headless-form/v1.0/form-records/{formRecordId}");
  183. httpInvoker.path("formRecordId", formRecordId);
  184. httpInvoker.userNameAndPassword(
  185. _builder._login + ":" + _builder._password);
  186. return httpInvoker.invoke();
  187. }
  188. public FormRecord putFormRecord(
  189. Long formRecordId, FormRecord formRecord)
  190. throws Exception {
  191. HttpInvoker.HttpResponse httpResponse = putFormRecordHttpResponse(
  192. formRecordId, formRecord);
  193. String content = httpResponse.getContent();
  194. if ((httpResponse.getStatusCode() / 100) != 2) {
  195. _logger.log(
  196. Level.WARNING,
  197. "Unable to process HTTP response content: " + content);
  198. _logger.log(
  199. Level.WARNING,
  200. "HTTP response message: " + httpResponse.getMessage());
  201. _logger.log(
  202. Level.WARNING,
  203. "HTTP response status code: " +
  204. httpResponse.getStatusCode());
  205. throw new Problem.ProblemException(Problem.toDTO(content));
  206. }
  207. else {
  208. _logger.fine("HTTP response content: " + content);
  209. _logger.fine(
  210. "HTTP response message: " + httpResponse.getMessage());
  211. _logger.fine(
  212. "HTTP response status code: " +
  213. httpResponse.getStatusCode());
  214. }
  215. try {
  216. return FormRecordSerDes.toDTO(content);
  217. }
  218. catch (Exception e) {
  219. _logger.log(
  220. Level.WARNING,
  221. "Unable to process HTTP response: " + content, e);
  222. throw new Problem.ProblemException(Problem.toDTO(content));
  223. }
  224. }
  225. public HttpInvoker.HttpResponse putFormRecordHttpResponse(
  226. Long formRecordId, FormRecord formRecord)
  227. throws Exception {
  228. HttpInvoker httpInvoker = HttpInvoker.newHttpInvoker();
  229. httpInvoker.body(formRecord.toString(), "application/json");
  230. if (_builder._locale != null) {
  231. httpInvoker.header(
  232. "Accept-Language", _builder._locale.toLanguageTag());
  233. }
  234. for (Map.Entry<String, String> entry :
  235. _builder._headers.entrySet()) {
  236. httpInvoker.header(entry.getKey(), entry.getValue());
  237. }
  238. for (Map.Entry<String, String> entry :
  239. _builder._parameters.entrySet()) {
  240. httpInvoker.parameter(entry.getKey(), entry.getValue());
  241. }
  242. httpInvoker.httpMethod(HttpInvoker.HttpMethod.PUT);
  243. httpInvoker.path(
  244. _builder._scheme + "://" + _builder._host + ":" +
  245. _builder._port + _builder._contextPath +
  246. "/o/headless-form/v1.0/form-records/{formRecordId}");
  247. httpInvoker.path("formRecordId", formRecordId);
  248. httpInvoker.userNameAndPassword(
  249. _builder._login + ":" + _builder._password);
  250. return httpInvoker.invoke();
  251. }
  252. public void putFormRecordBatch(String callbackURL, Object object)
  253. throws Exception {
  254. HttpInvoker.HttpResponse httpResponse =
  255. putFormRecordBatchHttpResponse(callbackURL, object);
  256. String content = httpResponse.getContent();
  257. if ((httpResponse.getStatusCode() / 100) != 2) {
  258. _logger.log(
  259. Level.WARNING,
  260. "Unable to process HTTP response content: " + content);
  261. _logger.log(
  262. Level.WARNING,
  263. "HTTP response message: " + httpResponse.getMessage());
  264. _logger.log(
  265. Level.WARNING,
  266. "HTTP response status code: " +
  267. httpResponse.getStatusCode());
  268. throw new Problem.ProblemException(Problem.toDTO(content));
  269. }
  270. else {
  271. _logger.fine("HTTP response content: " + content);
  272. _logger.fine(
  273. "HTTP response message: " + httpResponse.getMessage());
  274. _logger.fine(
  275. "HTTP response status code: " +
  276. httpResponse.getStatusCode());
  277. }
  278. }
  279. public HttpInvoker.HttpResponse putFormRecordBatchHttpResponse(
  280. String callbackURL, Object object)
  281. throws Exception {
  282. HttpInvoker httpInvoker = HttpInvoker.newHttpInvoker();
  283. httpInvoker.body(object.toString(), "application/json");
  284. if (_builder._locale != null) {
  285. httpInvoker.header(
  286. "Accept-Language", _builder._locale.toLanguageTag());
  287. }
  288. for (Map.Entry<String, String> entry :
  289. _builder._headers.entrySet()) {
  290. httpInvoker.header(entry.getKey(), entry.getValue());
  291. }
  292. for (Map.Entry<String, String> entry :
  293. _builder._parameters.entrySet()) {
  294. httpInvoker.parameter(entry.getKey(), entry.getValue());
  295. }
  296. httpInvoker.httpMethod(HttpInvoker.HttpMethod.PUT);
  297. if (callbackURL != null) {
  298. httpInvoker.parameter(
  299. "callbackURL", String.valueOf(callbackURL));
  300. }
  301. httpInvoker.path(
  302. _builder._scheme + "://" + _builder._host + ":" +
  303. _builder._port + _builder._contextPath +
  304. "/o/headless-form/v1.0/form-records/batch");
  305. httpInvoker.userNameAndPassword(
  306. _builder._login + ":" + _builder._password);
  307. return httpInvoker.invoke();
  308. }
  309. public Page<FormRecord> getFormFormRecordsPage(
  310. Long formId, Pagination pagination)
  311. throws Exception {
  312. HttpInvoker.HttpResponse httpResponse =
  313. getFormFormRecordsPageHttpResponse(formId, pagination);
  314. String content = httpResponse.getContent();
  315. if ((httpResponse.getStatusCode() / 100) != 2) {
  316. _logger.log(
  317. Level.WARNING,
  318. "Unable to process HTTP response content: " + content);
  319. _logger.log(
  320. Level.WARNING,
  321. "HTTP response message: " + httpResponse.getMessage());
  322. _logger.log(
  323. Level.WARNING,
  324. "HTTP response status code: " +
  325. httpResponse.getStatusCode());
  326. throw new Problem.ProblemException(Problem.toDTO(content));
  327. }
  328. else {
  329. _logger.fine("HTTP response content: " + content);
  330. _logger.fine(
  331. "HTTP response message: " + httpResponse.getMessage());
  332. _logger.fine(
  333. "HTTP response status code: " +
  334. httpResponse.getStatusCode());
  335. }
  336. try {
  337. return Page.of(content, FormRecordSerDes::toDTO);
  338. }
  339. catch (Exception e) {
  340. _logger.log(
  341. Level.WARNING,
  342. "Unable to process HTTP response: " + content, e);
  343. throw new Problem.ProblemException(Problem.toDTO(content));
  344. }
  345. }
  346. public HttpInvoker.HttpResponse getFormFormRecordsPageHttpResponse(
  347. Long formId, Pagination pagination)
  348. throws Exception {
  349. HttpInvoker httpInvoker = HttpInvoker.newHttpInvoker();
  350. if (_builder._locale != null) {
  351. httpInvoker.header(
  352. "Accept-Language", _builder._locale.toLanguageTag());
  353. }
  354. for (Map.Entry<String, String> entry :
  355. _builder._headers.entrySet()) {
  356. httpInvoker.header(entry.getKey(), entry.getValue());
  357. }
  358. for (Map.Entry<String, String> entry :
  359. _builder._parameters.entrySet()) {
  360. httpInvoker.parameter(entry.getKey(), entry.getValue());
  361. }
  362. httpInvoker.httpMethod(HttpInvoker.HttpMethod.GET);
  363. if (pagination != null) {
  364. httpInvoker.parameter(
  365. "page", String.valueOf(pagination.getPage()));
  366. httpInvoker.parameter(
  367. "pageSize", String.valueOf(pagination.getPageSize()));
  368. }
  369. httpInvoker.path(
  370. _builder._scheme + "://" + _builder._host + ":" +
  371. _builder._port + _builder._contextPath +
  372. "/o/headless-form/v1.0/forms/{formId}/form-records");
  373. httpInvoker.path("formId", formId);
  374. httpInvoker.userNameAndPassword(
  375. _builder._login + ":" + _builder._password);
  376. return httpInvoker.invoke();
  377. }
  378. public FormRecord postFormFormRecord(Long formId, FormRecord formRecord)
  379. throws Exception {
  380. HttpInvoker.HttpResponse httpResponse =
  381. postFormFormRecordHttpResponse(formId, formRecord);
  382. String content = httpResponse.getContent();
  383. if ((httpResponse.getStatusCode() / 100) != 2) {
  384. _logger.log(
  385. Level.WARNING,
  386. "Unable to process HTTP response content: " + content);
  387. _logger.log(
  388. Level.WARNING,
  389. "HTTP response message: " + httpResponse.getMessage());
  390. _logger.log(
  391. Level.WARNING,
  392. "HTTP response status code: " +
  393. httpResponse.getStatusCode());
  394. throw new Problem.ProblemException(Problem.toDTO(content));
  395. }
  396. else {
  397. _logger.fine("HTTP response content: " + content);
  398. _logger.fine(
  399. "HTTP response message: " + httpResponse.getMessage());
  400. _logger.fine(
  401. "HTTP response status code: " +
  402. httpResponse.getStatusCode());
  403. }
  404. try {
  405. return FormRecordSerDes.toDTO(content);
  406. }
  407. catch (Exception e) {
  408. _logger.log(
  409. Level.WARNING,
  410. "Unable to process HTTP response: " + content, e);
  411. throw new Problem.ProblemException(Problem.toDTO(content));
  412. }
  413. }
  414. public HttpInvoker.HttpResponse postFormFormRecordHttpResponse(
  415. Long formId, FormRecord formRecord)
  416. throws Exception {
  417. HttpInvoker httpInvoker = HttpInvoker.newHttpInvoker();
  418. httpInvoker.body(formRecord.toString(), "application/json");
  419. if (_builder._locale != null) {
  420. httpInvoker.header(
  421. "Accept-Language", _builder._locale.toLanguageTag());
  422. }
  423. for (Map.Entry<String, String> entry :
  424. _builder._headers.entrySet()) {
  425. httpInvoker.header(entry.getKey(), entry.getValue());
  426. }
  427. for (Map.Entry<String, String> entry :
  428. _builder._parameters.entrySet()) {
  429. httpInvoker.parameter(entry.getKey(), entry.getValue());
  430. }
  431. httpInvoker.httpMethod(HttpInvoker.HttpMethod.POST);
  432. httpInvoker.path(
  433. _builder._scheme + "://" + _builder._host + ":" +
  434. _builder._port + _builder._contextPath +
  435. "/o/headless-form/v1.0/forms/{formId}/form-records");
  436. httpInvoker.path("formId", formId);
  437. httpInvoker.userNameAndPassword(
  438. _builder._login + ":" + _builder._password);
  439. return httpInvoker.invoke();
  440. }
  441. public void postFormFormRecordBatch(
  442. Long formId, String callbackURL, Object object)
  443. throws Exception {
  444. HttpInvoker.HttpResponse httpResponse =
  445. postFormFormRecordBatchHttpResponse(
  446. formId, callbackURL, object);
  447. String content = httpResponse.getContent();
  448. if ((httpResponse.getStatusCode() / 100) != 2) {
  449. _logger.log(
  450. Level.WARNING,
  451. "Unable to process HTTP response content: " + content);
  452. _logger.log(
  453. Level.WARNING,
  454. "HTTP response message: " + httpResponse.getMessage());
  455. _logger.log(
  456. Level.WARNING,
  457. "HTTP response status code: " +
  458. httpResponse.getStatusCode());
  459. throw new Problem.ProblemException(Problem.toDTO(content));
  460. }
  461. else {
  462. _logger.fine("HTTP response content: " + content);
  463. _logger.fine(
  464. "HTTP response message: " + httpResponse.getMessage());
  465. _logger.fine(
  466. "HTTP response status code: " +
  467. httpResponse.getStatusCode());
  468. }
  469. }
  470. public HttpInvoker.HttpResponse postFormFormRecordBatchHttpResponse(
  471. Long formId, String callbackURL, Object object)
  472. throws Exception {
  473. HttpInvoker httpInvoker = HttpInvoker.newHttpInvoker();
  474. httpInvoker.body(object.toString(), "application/json");
  475. if (_builder._locale != null) {
  476. httpInvoker.header(
  477. "Accept-Language", _builder._locale.toLanguageTag());
  478. }
  479. for (Map.Entry<String, String> entry :
  480. _builder._headers.entrySet()) {
  481. httpInvoker.header(entry.getKey(), entry.getValue());
  482. }
  483. for (Map.Entry<String, String> entry :
  484. _builder._parameters.entrySet()) {
  485. httpInvoker.parameter(entry.getKey(), entry.getValue());
  486. }
  487. httpInvoker.httpMethod(HttpInvoker.HttpMethod.POST);
  488. if (callbackURL != null) {
  489. httpInvoker.parameter(
  490. "callbackURL", String.valueOf(callbackURL));
  491. }
  492. httpInvoker.path(
  493. _builder._scheme + "://" + _builder._host + ":" +
  494. _builder._port + _builder._contextPath +
  495. "/o/headless-form/v1.0/forms/{formId}/form-records/batch");
  496. httpInvoker.path("formId", formId);
  497. httpInvoker.userNameAndPassword(
  498. _builder._login + ":" + _builder._password);
  499. return httpInvoker.invoke();
  500. }
  501. public FormRecord getFormFormRecordByLatestDraft(Long formId)
  502. throws Exception {
  503. HttpInvoker.HttpResponse httpResponse =
  504. getFormFormRecordByLatestDraftHttpResponse(formId);
  505. String content = httpResponse.getContent();
  506. if ((httpResponse.getStatusCode() / 100) != 2) {
  507. _logger.log(
  508. Level.WARNING,
  509. "Unable to process HTTP response content: " + content);
  510. _logger.log(
  511. Level.WARNING,
  512. "HTTP response message: " + httpResponse.getMessage());
  513. _logger.log(
  514. Level.WARNING,
  515. "HTTP response status code: " +
  516. httpResponse.getStatusCode());
  517. throw new Problem.ProblemException(Problem.toDTO(content));
  518. }
  519. else {
  520. _logger.fine("HTTP response content: " + content);
  521. _logger.fine(
  522. "HTTP response message: " + httpResponse.getMessage());
  523. _logger.fine(
  524. "HTTP response status code: " +
  525. httpResponse.getStatusCode());
  526. }
  527. try {
  528. return FormRecordSerDes.toDTO(content);
  529. }
  530. catch (Exception e) {
  531. _logger.log(
  532. Level.WARNING,
  533. "Unable to process HTTP response: " + content, e);
  534. throw new Problem.ProblemException(Problem.toDTO(content));
  535. }
  536. }
  537. public HttpInvoker.HttpResponse
  538. getFormFormRecordByLatestDraftHttpResponse(Long formId)
  539. throws Exception {
  540. HttpInvoker httpInvoker = HttpInvoker.newHttpInvoker();
  541. if (_builder._locale != null) {
  542. httpInvoker.header(
  543. "Accept-Language", _builder._locale.toLanguageTag());
  544. }
  545. for (Map.Entry<String, String> entry :
  546. _builder._headers.entrySet()) {
  547. httpInvoker.header(entry.getKey(), entry.getValue());
  548. }
  549. for (Map.Entry<String, String> entry :
  550. _builder._parameters.entrySet()) {
  551. httpInvoker.parameter(entry.getKey(), entry.getValue());
  552. }
  553. httpInvoker.httpMethod(HttpInvoker.HttpMethod.GET);
  554. httpInvoker.path(
  555. _builder._scheme + "://" + _builder._host + ":" +
  556. _builder._port + _builder._contextPath +
  557. "/o/headless-form/v1.0/forms/{formId}/form-records/by-latest-draft");
  558. httpInvoker.path("formId", formId);
  559. httpInvoker.userNameAndPassword(
  560. _builder._login + ":" + _builder._password);
  561. return httpInvoker.invoke();
  562. }
  563. private FormRecordResourceImpl(Builder builder) {
  564. _builder = builder;
  565. }
  566. private static final Logger _logger = Logger.getLogger(
  567. FormRecordResource.class.getName());
  568. private Builder _builder;
  569. }
  570. }