DevDocQueryInfrastructure - JUCMNAV/projetseg-update GitHub Wiki

Query Infrastructure

Overview

  • Basically, our mechanism is to send requests to a singleton pattern that returns responses.
  • The singleton pattern uses a linked list of query processors to determine who should run the query and obtain the response.
  • TODO: explicit class naming

Usage

  • TODO w/ example

Extension

  • TODO w/ example

Issues

  • Right now, all our QueryRequests/!QueryResponses are inner classes of the query processors, meaning we need to know who will process the request before sending it to a generic structure that will run it indirectly.
  • I propose creating convenience methods in GraphExplorer that will encapsulate this complicated structure. Basically, for most purposes, a simple:

public static Vector GraphExplorer.getReachableEndPoints(!PathNode pn) is sufficient.

  • More complex queries/responses will justify creating/manipulating these objects directly. Their real purpose is to retain preprocess queries and cache results.
  • Working with inner classes is terrible. Forces the user to know exactly what query processor he will use. Extending them is even worse.
  • Maybe we can create a nice (non-inner) class hierarchy for queries/responses.
  • We would simply have to create a new instance of a query/response using a constant of RequestObject to determine the work to be done.
  • Without such methods, the GraphExplorer is pretty useless as we can run our queries much faster by creating the processors ourselves.
  • Can't we make GraphExplorer's run() static, using its only instance to run? Avoid calls to getInstance().

-- Main.JasonKealey - 12 Jul 2005