A semantic search engine for source code https://bitshift.benkurtovic.com/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

148 lines
5.2 KiB

  1. package com.bitshift.parsing.symbols;
  2. import java.util.HashMap;
  3. import java.util.ArrayList;
  4. import com.bitshift.parsing.symbols.Symbols;
  5. /*TODO: Overwrite toString.*/
  6. public class JavaSymbols extends Symbols {
  7. private String _packageName;
  8. private HashMap<String, HashMap<String, Object>> _classes;
  9. private HashMap<String, HashMap<String, Object>> _interfaces;
  10. private HashMap<String, HashMap<String, Object>> _methods;
  11. private HashMap<String, HashMap<String, Object>> _fields;
  12. private HashMap<String, HashMap<String, Object>> _vars;
  13. public JavaSymbols() {
  14. _packageName = null;
  15. _classes = new HashMap<String, HashMap<String, Object>>();
  16. _interfaces = new HashMap<String, HashMap<String, Object>>();
  17. _methods = new HashMap<String, HashMap<String, Object>>();
  18. _fields = new HashMap<String, HashMap<String, Object>>();
  19. _vars = new HashMap<String, HashMap<String, Object>>();
  20. }
  21. public boolean setPackage(String name) {
  22. _packageName = name;
  23. return true;
  24. }
  25. public boolean insertClassDeclaration(String name, HashMap<String, Object> data) {
  26. ArrayList<Object> assignments = new ArrayList<Object>(10);
  27. ArrayList<Object> uses = new ArrayList<Object>(10);
  28. HashMap<String, Object> klass = new HashMap<String, Object>();
  29. assignments.add(data.get("coord"));
  30. klass.put("assignments", assignments);
  31. klass.put("uses", uses);
  32. this._classes.put(name, klass);
  33. return true;
  34. }
  35. public boolean insertInterfaceDeclaration(String name, HashMap<String, Object> data) {
  36. this._interfaces.put(name, data);
  37. return true;
  38. }
  39. public boolean insertMethodDeclaration(String name, HashMap<String, Object> data) {
  40. HashMap<String, Object> method = this._methods.get(name);
  41. if (method == null) {
  42. method = new HashMap<String, Object>();
  43. ArrayList<Object> assignments = new ArrayList<Object>(10);
  44. ArrayList<Object> uses = new ArrayList<Object>(10);
  45. assignments.add(data.get("coord"));
  46. method.put("assignments", assignments);
  47. method.put("uses", uses);
  48. } else {
  49. ArrayList<Object> assignments = (ArrayList<Object>)method.get("assignments");
  50. assignments.add(data.get("coord"));
  51. method.put("assignments", assignments);
  52. }
  53. this._methods.put(name, method);
  54. return true;
  55. }
  56. public boolean insertMethodInvocation(String name, HashMap<String, Object> data) {
  57. HashMap<String, Object> method = this._methods.get(name);
  58. if (method == null) {
  59. method = new HashMap<String, Object>();
  60. ArrayList<Object> assignments = new ArrayList<Object>(10);
  61. ArrayList<Object> uses = new ArrayList<Object>(10);
  62. uses.add(data.get("coord"));
  63. method.put("assignments", assignments);
  64. method.put("uses", uses);
  65. } else {
  66. ArrayList<Object> uses = (ArrayList<Object>)method.get("uses");
  67. uses.add(data.get("coord"));
  68. method.put("uses", uses);
  69. }
  70. this._methods.put(name, method);
  71. return true;
  72. }
  73. public boolean insertFieldDeclaration(String name, HashMap<String, Object> data) {
  74. this._fields.put(name, data);
  75. return true;
  76. }
  77. public boolean insertVariableDeclaration(String name, HashMap<String, Object> data) {
  78. HashMap<String, Object> var = this._vars.get(name);
  79. if (var == null) {
  80. var = new HashMap<String, Object>();
  81. ArrayList<Object> assignments = new ArrayList<Object>(10);
  82. ArrayList<Object> uses = new ArrayList<Object>(10);
  83. assignments.add(data.get("coord"));
  84. var.put("assignments", assignments);
  85. var.put("uses", uses);
  86. } else {
  87. ArrayList<Object> assignments = (ArrayList<Object>)var.get("assignments");
  88. assignments.add(data.get("coord"));
  89. var.put("assignments", assignments);
  90. }
  91. this._vars.put(name, var);
  92. return true;
  93. }
  94. public boolean insertVariableAccess(String name, HashMap<String, Object> data) {
  95. HashMap<String, Object> var = this._vars.get(name);
  96. if (var == null) {
  97. var = new HashMap<String, Object>();
  98. ArrayList<Object> assignments = new ArrayList<Object>(10);
  99. ArrayList<Object> uses = new ArrayList<Object>(10);
  100. uses.add(data.get("coord"));
  101. var.put("assignments", assignments);
  102. var.put("uses", uses);
  103. } else {
  104. ArrayList<Object> uses = (ArrayList<Object>)var.get("uses");
  105. uses.add(data.get("coord"));
  106. var.put("uses", uses);
  107. }
  108. this._vars.put(name, var);
  109. return true;
  110. }
  111. public String toString() {
  112. StringBuilder builder = new StringBuilder();
  113. builder.append("classes:" + this._classes + ",");
  114. builder.append("interfaces:" + this._interfaces + ",");
  115. builder.append("methods:" + this._methods + ",");
  116. builder.append("fields:" + this._fields + ",");
  117. builder.append("vars:" + this._vars + ",");
  118. return "{" + builder.toString() + "}";
  119. }
  120. }