No Description

STJBuilder.java 4.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. package graph.extractor.graph.builder;
  2. import entity.DOProcess;
  3. import entity.Entity;
  4. import entity.Judge;
  5. import entity.Lawyer;
  6. import entity.ProcessTypes;
  7. import entity.TYPES;
  8. public class STJBuilder extends BuilderFactory{
  9. private Entity getEntity(String canditate)
  10. {
  11. Entity entity = new Entity();
  12. try{
  13. if(canditate.contains(":") && !canditate.contains("Distribuição automática"))
  14. {
  15. String type = canditate.split(":")[0].trim();
  16. entity.setType(type);
  17. if(type.equals("RELATORA") || type.equals("RELATOR"))
  18. {
  19. entity.setType(TYPES.JUDGE);
  20. }
  21. if(type.contains("ADVOGAD") )
  22. {
  23. entity.setType(TYPES.LAWYER);
  24. }
  25. entity.setName(canditate.split(":")[1].trim());
  26. }
  27. else
  28. {
  29. entity.setName(canditate);
  30. entity.setType(TYPES.OTHERINFO);
  31. }
  32. }catch(Exception e)
  33. {
  34. // System.out.println(canditate);
  35. }
  36. return entity;
  37. }
  38. @Override
  39. protected DOProcess extractProcess(String process) {
  40. DOProcess proc = new DOProcess();
  41. proc.setOrign("DJ_STJ");
  42. String vecProcesses[] = process.split("\n");
  43. int index = 0;
  44. String firstLine = vecProcesses[index];
  45. /**Extract information from the first line**/
  46. try{
  47. if(firstLine.equals(""))
  48. {
  49. index++;
  50. firstLine = vecProcesses[index];
  51. }
  52. if(!firstLine.contains("class='np'"))
  53. {
  54. index++;
  55. firstLine = firstLine +vecProcesses[index];
  56. }
  57. if(!firstLine.contains("class='np'"))
  58. {
  59. return null;
  60. }
  61. String processType = firstLine.toLowerCase().split("nº")[0].toLowerCase();
  62. firstLine = firstLine.substring(processType.length());
  63. ProcessTypes procType = new ProcessTypes(processType);
  64. proc.setProcessType(procType);
  65. String processIndex = firstLine.split("<NP1><B class='np'>")[0].trim();
  66. firstLine = firstLine.split("<NP1><B class='np'>")[1].trim();
  67. proc.setProcessIndex(processIndex);
  68. String state = firstLine.split("\\(")[0].trim();
  69. firstLine = firstLine.split("\\(")[1].trim();
  70. proc.setState(state);
  71. String processNumber = firstLine.split("\\)")[0].trim();
  72. firstLine = firstLine.split("\\)")[1].trim();
  73. proc.setProcessNumber(processNumber);
  74. if(!firstLine.trim().equals("</B></NP1>"))
  75. {
  76. firstLine = firstLine.split("</B></NP1>")[1].trim();
  77. Entity entity= this.getEntity(firstLine);
  78. switch (entity.getType()) {
  79. case TYPES.JUDGE:
  80. proc.addJudge(new Judge(entity.getName()));
  81. break;
  82. case TYPES.OTHERINFO:
  83. proc.addOtherInfo(entity.getName());
  84. break;
  85. case TYPES.LAWYER:
  86. proc.addLawyer(new Lawyer(entity.getName()));
  87. break;
  88. default:
  89. proc.addEntity(entity);
  90. break;
  91. }
  92. }
  93. }catch(Exception e)
  94. {
  95. System.out.println("Error on this process");
  96. System.out.println(vecProcesses[0]);
  97. System.out.println(proc);
  98. System.out.println();
  99. return null;
  100. }
  101. /***next lines*/
  102. try{
  103. index++;
  104. String line = vecProcesses[index];
  105. while( index < vecProcesses.length-1 && !this.isVerdict(line) )
  106. {
  107. Entity entity= this.getEntity(line);
  108. switch (entity.getType()) {
  109. case TYPES.JUDGE:
  110. proc.addJudge(new Judge(entity.getName()));
  111. break;
  112. case TYPES.OTHERINFO:
  113. proc.addOtherInfo(entity.getName());
  114. break;
  115. case TYPES.LAWYER:
  116. proc.addLawyer(new Lawyer(entity.getName()));
  117. break;
  118. default:
  119. proc.addEntity(entity);
  120. break;
  121. }
  122. index++;
  123. line = vecProcesses[index];
  124. }
  125. StringBuilder sb = new StringBuilder();
  126. for(int i=index; i< vecProcesses.length; i++ )
  127. {
  128. sb.append(vecProcesses[i] +"\n");
  129. }
  130. proc.setVerdict(sb.toString());
  131. }catch(Exception e)
  132. {
  133. e.printStackTrace();
  134. }
  135. return proc;
  136. }
  137. private boolean isVerdict(String line) {
  138. line = line.trim().toLowerCase();
  139. if(line.equals("despacho"))
  140. {
  141. return true;
  142. }
  143. if(line.equals("decisão"))
  144. {
  145. return true;
  146. }
  147. if(line.contains("A Turma, por unanimidade"))
  148. {
  149. return true;
  150. }
  151. return false;
  152. }
  153. }