A semantic search engine for source code https://bitshift.benkurtovic.com/
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
 
 
 
 
 
 

140 rader
4.9 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. this._classes.put(name, data);
  27. return true;
  28. }
  29. public boolean insertInterfaceDeclaration(String name, HashMap<String, Object> data) {
  30. this._interfaces.put(name, data);
  31. return true;
  32. }
  33. public boolean insertMethodDeclaration(String name, HashMap<String, Object> data) {
  34. HashMap<String, Object> method = this._methods.get(name);
  35. if (method == null) {
  36. method = new HashMap<String, Object>();
  37. ArrayList<Object> assignments = new ArrayList<Object>(10);
  38. ArrayList<Object> uses = new ArrayList<Object>(10);
  39. assignments.add(data.get("coord"));
  40. method.put("assignments", assignments);
  41. method.put("uses", uses);
  42. } else {
  43. ArrayList<Object> assignments = (ArrayList<Object>)method.get("assignments");
  44. assignments.add(data.get("coord"));
  45. method.put("assignments", assignments);
  46. }
  47. this._methods.put(name, method);
  48. return true;
  49. }
  50. public boolean insertMethodInvocation(String name, HashMap<String, Object> data) {
  51. HashMap<String, Object> method = this._methods.get(name);
  52. if (method == null) {
  53. method = new HashMap<String, Object>();
  54. ArrayList<Object> assignments = new ArrayList<Object>(10);
  55. ArrayList<Object> uses = new ArrayList<Object>(10);
  56. uses.add(data.get("coord"));
  57. method.put("assignments", assignments);
  58. method.put("uses", uses);
  59. } else {
  60. ArrayList<Object> uses = (ArrayList<Object>)method.get("uses");
  61. uses.add(data.get("coord"));
  62. method.put("uses", uses);
  63. }
  64. this._methods.put(name, method);
  65. return true;
  66. }
  67. public boolean insertFieldDeclaration(String name, HashMap<String, Object> data) {
  68. this._fields.put(name, data);
  69. return true;
  70. }
  71. public boolean insertVariableDeclaration(String name, HashMap<String, Object> data) {
  72. HashMap<String, Object> var = this._vars.get(name);
  73. if (var == null) {
  74. var = new HashMap<String, Object>();
  75. ArrayList<Object> assignments = new ArrayList<Object>(10);
  76. ArrayList<Object> uses = new ArrayList<Object>(10);
  77. assignments.add(data.get("coord"));
  78. var.put("assignments", assignments);
  79. var.put("uses", uses);
  80. } else {
  81. ArrayList<Object> assignments = (ArrayList<Object>)var.get("assignments");
  82. assignments.add(data.get("coord"));
  83. var.put("assignments", assignments);
  84. }
  85. this._vars.put(name, var);
  86. return true;
  87. }
  88. public boolean insertVariableAccess(String name, HashMap<String, Object> data) {
  89. HashMap<String, Object> var = this._vars.get(name);
  90. if (var == null) {
  91. var = new HashMap<String, Object>();
  92. ArrayList<Object> assignments = new ArrayList<Object>(10);
  93. ArrayList<Object> uses = new ArrayList<Object>(10);
  94. uses.add(data.get("coord"));
  95. var.put("assignments", assignments);
  96. var.put("uses", uses);
  97. } else {
  98. ArrayList<Object> uses = (ArrayList<Object>)var.get("uses");
  99. uses.add(data.get("coord"));
  100. var.put("uses", uses);
  101. }
  102. this._vars.put(name, var);
  103. return true;
  104. }
  105. public String toString() {
  106. StringBuilder builder = new StringBuilder();
  107. builder.append("classes:" + this._classes + ",");
  108. builder.append("interfaces:" + this._interfaces + ",");
  109. builder.append("methods:" + this._methods + ",");
  110. builder.append("fields:" + this._fields + ",");
  111. builder.append("vars:" + this._vars + ",");
  112. return "{" + builder.toString() + "}";
  113. }
  114. }