/src-api/com/corrspt/xeo/tests/AbstractJSONImplementation.java

https://bitbucket.org/corrspt/xalpi · Java · 486 lines · 387 code · 96 blank · 3 comment · 25 complexity · 5830fb1098dc4a72b74e10344d372254 MD5 · raw file

  1. package com.corrspt.xeo.tests;
  2. import java.text.DateFormat;
  3. import java.text.ParseException;
  4. import java.text.SimpleDateFormat;
  5. import java.util.Date;
  6. import java.util.HashMap;
  7. import java.util.List;
  8. import java.util.Map;
  9. import netgest.bo.runtime.EboContext;
  10. import netgest.bo.runtime.boConvertUtils;
  11. import netgest.bo.runtime.boObject;
  12. import netgest.bo.runtime.boRuntimeException;
  13. import netgest.io.iFile;
  14. import netgest.utils.StringUtils;
  15. import org.json.JSONArray;
  16. import org.json.JSONException;
  17. import org.json.JSONObject;
  18. import com.corrspt.xeo.api.core.BOUI;
  19. import com.corrspt.xeo.api.core.BaseModel;
  20. public abstract class AbstractJSONImplementation implements BaseModel {
  21. protected static final String EXISTS = "sys_exists";
  22. protected static final String CHANGED = "sys_changed";
  23. protected static final String DISABLED = "sys_disabled";
  24. protected static final String CLASSNAME = "sys_classname";
  25. protected static final String SYS_DTCREATE = "sys_dtcreate";
  26. protected static final String SYS_UPDATE = "sys_dtupdate";
  27. protected static final String PARENT = "parent$";
  28. protected static final String OBJ_ERRORS = "sys_obj_errors";
  29. protected static final String OBJ_ATTRIBUTE_ERRORS = "sys_att_errors";
  30. protected static final String BOUI = "BOUI";
  31. protected JSONObject attributes = new JSONObject();
  32. protected Map<String,iFile> ifiles = new HashMap<String, iFile>();
  33. protected Map<String,BaseModel> relations = new HashMap<String, BaseModel>();
  34. protected Map<String,List<BaseModel>> bridges = new HashMap<String, List<BaseModel>>();
  35. protected Map<String,String> parameters = new HashMap<String, String>();
  36. protected BaseModel parent;
  37. protected JSONObject system = new JSONObject();
  38. private final DateFormat formatDate = new SimpleDateFormat("dd-MM-yyyy");
  39. private final DateFormat formatDateTime = new SimpleDateFormat("dd-MM-yyyy HH:mm:SS");
  40. protected Date convertStringToDate(String date){
  41. try {
  42. Date result = formatDateTime.parse(date);
  43. return result;
  44. } catch (ParseException e){
  45. try {
  46. Date result = formatDate.parse(date);
  47. return result;
  48. } catch (ParseException e1){
  49. }
  50. }
  51. return null;
  52. }
  53. protected String convertDateToString(Date date){
  54. try {
  55. String result = formatDateTime.format(date);
  56. return result;
  57. } catch (IllegalArgumentException e){
  58. try {
  59. String result = formatDate.format(date);
  60. return result;
  61. } catch (IllegalArgumentException e1){
  62. }
  63. }
  64. return null;
  65. }
  66. protected void put(String key, Object value){
  67. try {
  68. attributes.put(key, value);
  69. } catch (JSONException e) {
  70. e.printStackTrace();
  71. }
  72. }
  73. protected boolean contains(String key){
  74. return system.has(key) || attributes.has(key);
  75. }
  76. protected void removeKey(String key){
  77. system.remove(key);
  78. }
  79. protected AbstractJSONImplementation(JSONObject definition){
  80. putSystem(CHANGED, false);
  81. putSystem(EXISTS, false);
  82. try {
  83. if (definition.has(CLASSNAME))
  84. putSystem(CLASSNAME, definition.get(CLASSNAME));
  85. if (definition.has(DISABLED))
  86. putSystem(DISABLED, definition.get(DISABLED));
  87. else
  88. putSystem(DISABLED, Boolean.FALSE);
  89. if (definition.has(CHANGED))
  90. putSystem(CHANGED, definition.get(CHANGED));
  91. if (definition.has(OBJ_ERRORS)){
  92. putSystem(OBJ_ERRORS, definition.get(OBJ_ERRORS));
  93. }
  94. if (definition.has(OBJ_ATTRIBUTE_ERRORS)){
  95. putSystem(OBJ_ATTRIBUTE_ERRORS, definition.get(OBJ_ATTRIBUTE_ERRORS));
  96. }
  97. if (definition.has(BOUI)){
  98. put(BOUI, definition.get(BOUI));
  99. }
  100. if (definition.has(SYS_DTCREATE)){
  101. put(SYS_DTCREATE, definition.get(SYS_DTCREATE));
  102. }
  103. if (definition.has(SYS_UPDATE)){
  104. put(SYS_UPDATE, definition.get(SYS_UPDATE));
  105. }
  106. } catch (JSONException e){
  107. e.printStackTrace();
  108. }
  109. }
  110. protected AbstractJSONImplementation(){
  111. putSystem(CHANGED, false);
  112. putSystem(EXISTS, false);
  113. }
  114. protected void markChanged(){
  115. putSystem(CHANGED, true);
  116. }
  117. protected void putSystem(String key, Object value){
  118. try {
  119. system.put(key, value);
  120. } catch (JSONException e) {
  121. e.printStackTrace();
  122. }
  123. }
  124. protected String get(String key){
  125. try {
  126. if (attributes.has(key))
  127. return attributes.getString(key);
  128. } catch (JSONException e) {
  129. //e.printStackTrace();
  130. }
  131. return null;
  132. }
  133. protected String getString(String key){
  134. return get(key);
  135. }
  136. protected Date getDate(String key){
  137. if (attributes.has(key)){
  138. try {
  139. return new Date(attributes.getLong(key));
  140. } catch (JSONException e){
  141. e.printStackTrace();
  142. }
  143. }
  144. return null;
  145. }
  146. protected Long getLong(String key){
  147. try {
  148. return attributes.getLong(key);
  149. } catch (JSONException e) {
  150. e.printStackTrace();
  151. }
  152. return null;
  153. }
  154. protected Boolean getBoolean(String key){
  155. try {
  156. if (attributes.has(key))
  157. return attributes.getBoolean(key);
  158. } catch (JSONException e) {
  159. e.printStackTrace();
  160. }
  161. return null;
  162. }
  163. protected boolean getBoolSys(String key){
  164. try {
  165. if (system.has(key))
  166. return system.getBoolean(key);
  167. } catch (JSONException e) {
  168. e.printStackTrace();
  169. }
  170. return false;
  171. }
  172. protected long getLongSys(String key){
  173. try {
  174. if (system.has(key))
  175. return system.getLong(key);
  176. } catch (JSONException e) {
  177. e.printStackTrace();
  178. }
  179. return 0;
  180. }
  181. protected String getStringSys(String key){
  182. try {
  183. if (system.has(key))
  184. return system.getString(key);
  185. } catch (JSONException e) {
  186. e.printStackTrace();
  187. }
  188. return "";
  189. }
  190. @Override
  191. public void update() throws boRuntimeException {
  192. putSystem(EXISTS, true);
  193. }
  194. @Override
  195. public void destroy() throws boRuntimeException { }
  196. @Override
  197. public boObject getOriginal() {
  198. return null;
  199. }
  200. @Override
  201. public String getCardId() {
  202. //Gerado pelo
  203. return null;
  204. }
  205. @Override
  206. public String getCardIdIcon() {
  207. // TODO Auto-generated method stub
  208. return null;
  209. }
  210. @Override
  211. public String getXeoModelName() {
  212. return get(CLASSNAME);
  213. }
  214. @Override
  215. public void addErrorMessage(String errorMessage) {
  216. try {
  217. if (!system.has(OBJ_ERRORS)){
  218. JSONArray messages = new JSONArray();
  219. messages.put(errorMessage);
  220. system.put(OBJ_ERRORS, messages);
  221. } else {
  222. JSONArray array;
  223. array = (JSONArray) system.get(OBJ_ERRORS);
  224. array.put(errorMessage);
  225. }
  226. } catch (JSONException e ){
  227. e.printStackTrace();
  228. }
  229. }
  230. @Override
  231. public boolean hasErrors() {
  232. return (contains(OBJ_ERRORS) || contains(OBJ_ATTRIBUTE_ERRORS));
  233. }
  234. @Override
  235. public boolean hasAttributeErrors() {
  236. return contains(OBJ_ATTRIBUTE_ERRORS);
  237. }
  238. @Override
  239. public boolean hasErrorsInObjectOnly() {
  240. return contains(OBJ_ERRORS);
  241. }
  242. @Override
  243. public boolean exists() {
  244. if (system.has(EXISTS)){
  245. return getBoolSys(EXISTS);
  246. } else {
  247. putSystem(EXISTS, false);
  248. }
  249. return false;
  250. }
  251. @Override
  252. public void clearErrors() {
  253. removeKey(OBJ_ATTRIBUTE_ERRORS);
  254. removeKey(OBJ_ERRORS);
  255. }
  256. @Override
  257. public void clearObjectErrors() {
  258. removeKey(OBJ_ERRORS);
  259. }
  260. @Override
  261. public void clearAttributeErrors() {
  262. removeKey(OBJ_ATTRIBUTE_ERRORS);
  263. }
  264. @Override
  265. public boolean isChanged() {
  266. return getBoolSys(CHANGED);
  267. }
  268. @Override
  269. public void disable() {
  270. markChanged();
  271. putSystem(DISABLED, true);
  272. }
  273. @Override
  274. public boolean isDisabled() {
  275. if (system.has(DISABLED)){
  276. return getBoolSys(DISABLED);
  277. }
  278. return false;
  279. }
  280. @Override
  281. public void enable() {
  282. markChanged();
  283. putSystem("disabled", false);
  284. }
  285. @Override
  286. public boolean isEnabled() {
  287. if (system.has(DISABLED)){
  288. return !getBoolSys(DISABLED);
  289. }
  290. return true;
  291. }
  292. @Override
  293. public void setParent(BaseModel parent) {
  294. markChanged();
  295. this.parent = parent;
  296. }
  297. @Override
  298. public EboContext getEboContext() {
  299. return null;
  300. }
  301. @Override
  302. public BOUI getBoui() {
  303. String boui = get(BOUI);
  304. return new JSONBOUI(boui);
  305. }
  306. @Override
  307. public Date getDateCreate() {
  308. try{
  309. String date = getStringSys(SYS_DTCREATE);
  310. if (StringUtils.isEmpty(date))
  311. return null;
  312. Date dateCreate = boConvertUtils.convertToDate(date, null);
  313. return dateCreate;
  314. } catch (Exception e){
  315. e.printStackTrace();
  316. return null;
  317. }
  318. }
  319. @Override
  320. public Date getDateLastUpdate() {
  321. try{
  322. String date = getStringSys(SYS_UPDATE);
  323. if (StringUtils.isEmpty(date))
  324. return null;
  325. Date dateCreate = boConvertUtils.convertToDate(date, null);
  326. return dateCreate;
  327. } catch (Exception e){
  328. e.printStackTrace();
  329. return null;
  330. }
  331. }
  332. public void setBoui(BOUI boui){
  333. putSystem(BOUI, boui.serialize());
  334. }
  335. public void setBoui(Long boui){
  336. putSystem(BOUI, String.valueOf(boui));
  337. }
  338. public void setBoui(String boui){
  339. putSystem(BOUI, boui);
  340. }
  341. public void setDateCreate(String date){
  342. putSystem(SYS_DTCREATE, date);
  343. }
  344. public void setDateUpdate(String date){
  345. putSystem(SYS_UPDATE, date);
  346. }
  347. @Override
  348. public boolean hasParent() {
  349. return parent != null;
  350. }
  351. @Override
  352. public BaseModel getParent() {
  353. return parent;
  354. }
  355. @Override
  356. public boolean isSame(BaseModel o) {
  357. return o.getBoui().equals(getBoui());
  358. }
  359. @Override
  360. public boolean isValid() {
  361. return true;
  362. }
  363. private static class JSONBOUI implements BOUI {
  364. private String boui;
  365. public JSONBOUI(String boui){
  366. this.boui = boui;
  367. }
  368. @Override
  369. public Object getValue() {
  370. return boui;
  371. }
  372. @Override
  373. public String serialize() {
  374. return boui;
  375. }
  376. @Override
  377. public boolean equals(com.corrspt.xeo.api.core.BOUI o) {
  378. return o.serialize().equals(boui);
  379. }
  380. }
  381. public void setCustomParameter(String name, String value){
  382. parameters.put(name, value);
  383. }
  384. public String getCustomParameter(String name){
  385. return parameters.get(name);
  386. }
  387. public void removeParent() {
  388. this.parent = null;
  389. }
  390. }