diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..464a614e3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,40 @@ +# IntelijIdea Project Junk +.idea/ +*.iml + + +# Eclipse Project Junk +.factorypath +.settings/ +.project +.classpath +.vscode + + +# Build directories +/build/ +/out/ +/target/ +/*/target/ + +# Dependencies +node_modules/ + + +# Gradle meta +.gradle/ + + +# Compiled things +*.class + + +# Other version control +.svn/ + +# +# Exported from svn:ignore +# +*~ +classes +target diff --git a/column-tools.html b/column-tools.html new file mode 100644 index 000000000..0a86ed4ed --- /dev/null +++ b/column-tools.html @@ -0,0 +1,506 @@ + + + + + + + +Column Tools and Tool Bundles + + + + + +
+
+
+
+

WDK offers the ability to report statistics on a result pertaining to a single +column (column reporter), and also to filter a result on that column (column filter). +The report can be used by a user interface to inform a configuration of a column filter.

+
+
+
+
+

XML Configuration

+
+
+

A summary of the XML involved in configuring column tools is below.

+
+
+
+
<wdkModel>
+
+  <!-- Set of all column tool bundles in the system -->
+  <columnToolBundles>
+    <!-- Tool Bundle = Set of tools for a column -->
+    <toolBundle name="xxx">
+      <!-- Tool: single tool for a column
+        (contains reporter and optional filter; may vary based on data type) -->
+      <tool name="xxx">
+        <!-- The reporter/filter combo for string columns -->
+        <string>
+          <!-- implementation must implement org.gusdb.wdk.model.columntool.ColumnReporter -->
+          <reporter implementation="xxx">
+            <property name="xxx">text</property>
+          </reporter>
+          <!-- implementation must implement org.gusdb.wdk.model.columntool.ColumnFilter -->
+          <filter implementation="xxx"> (optional)
+            <property name="xxx">text</property>
+          </filter>
+        </string>
+        <number>...</number>
+        <date>...</date>
+        <default>...</default>
+      </tool>
+    </toolBundle>
+  </columnToolBundles>
+
+  <!-- Default tool bundle for the entire application -->
+  <defaultColumnToolBundle ref="xxx"/>
+
+  <!-- Tool bundle overrides for all attributes in a record class -->
+  <recordClass>
+    <defaultColumnToolBundle ref="xxx"/>
+  </recordClass
+
+  <!-- Tool bundle overrides for specific attributes -->
+  <columnAttribute toolBundleRef="xxx"/>
+  <textAttribute toolBundleRef="xxx"/>
+  <linkAttribute toolBundleRef="xxx"/>
+
+</wdkModel>
+
+
+
+
+
+ + \ No newline at end of file diff --git a/configuring-the-wdk.html b/configuring-the-wdk.html new file mode 100644 index 000000000..eea2371e3 --- /dev/null +++ b/configuring-the-wdk.html @@ -0,0 +1,445 @@ + + + + + + + +Configuration + + + + + +
+ +
+ + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 000000000..d53350d5b --- /dev/null +++ b/index.html @@ -0,0 +1,546 @@ + + + + + + + +WDK Technical Documentation + + + + + + +
+
+

What is WDK?

+
+
+

WDK is a search and access platform for data stored in an RDBMS. You define the record types to be searched, the parameterized SQL queries used to return a set of record IDs, the columns (aka attributes) that can be joined to the result and displayed, and much more. WDK supports a variety of parameter types, including enum params whose vocabularies are also defined by configured queries, string params, range params, and more. Dataset parameters allow the user to upload a set of IDs from which a result can be derived. Users can join the results of two queries using set operations like union, intersect, minus, and even custom joining of results. A user’s search history, including these result trees (strategies), is saved off, editable later, sharable, etc.

+
+
+
+
+

Configuration

+
+
+

Configuration is handled through one or more XML files, referred to as the WDK Model. These files define:

+
+
+
    +
  • +

    The data types available for search

    +
  • +
  • +

    Available attributes and data tables associated with records of those types

    +
  • +
  • +

    Available searches and associated SQL queries for those types

    +
  • +
  • +

    Parameters for each search, used to configure the associated query

    +
  • +
  • +

    Transformation queries (converting one data type to another)

    +
  • +
  • +

    Output format and data aggregation/statistics plugins

    +
  • +
  • +

    Result analysis plugins

    +
  • +
  • +

    Available result filters

    +
  • +
  • +

    etc.

    +
  • +
+
+
+

See Configuring the WDK for more details, or the WDK Model XML RelaxNG (RNG) Schema for all available options.

+
+
+

On startup, WDK reads and processes these XML files into an in-memory data structure, which it uses to deliver, via REST service, metadata about the configured data types and their properties. Incoming HTTP requests to query, process, combine, and analyze data reference the in-memory model to inform how to perform the requested actions.

+
+
+

A secondary XML file (model-config.xml) defines:

+
+
+
    +
  • +

    The databases WDK will use, namely:

    +
    +
      +
    • +

      AppDb: application domain data

      +
    • +
    • +

      UserDb: saved user data (search history, bookmarked records, analysis configurations, user preferences, etc.)

      +
    • +
    • +

      AccountDb: user identity information (soon to be deprecated by full OpenIDConnect compliance and external service calls)

      +
    • +
    +
    +
  • +
  • +

    Query performance monitoring config

    +
  • +
  • +

    User authentication scheme

    +
  • +
  • +

    etc.

    +
  • +
+
+
+
+
+

Record Classes

+
+
+

The record class is the fundamental record type in WDK. You can think of this as an "object" in OOP-speak. Record instances are defined by a one- or more- column primary key, which must be unique. Record classes have attributes (fields) associated with them,

+
+
+
+
+ + \ No newline at end of file diff --git a/wdk params design.pptx b/wdk params design.pptx new file mode 100644 index 000000000..e2e11e0ba Binary files /dev/null and b/wdk params design.pptx differ diff --git a/wdk-overview.pptx b/wdk-overview.pptx new file mode 100644 index 000000000..ce732d3ac Binary files /dev/null and b/wdk-overview.pptx differ