Compare commits
5 Commits
master
...
optimize-t
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
33de831391 | ||
|
|
53a3fc11ad | ||
|
|
7e0bd621f7 | ||
|
|
33a027a458 | ||
|
|
9cfbda3c18 |
1
.idea/.name
generated
Normal file
1
.idea/.name
generated
Normal file
@@ -0,0 +1 @@
|
|||||||
|
poc-java
|
||||||
539
.idea/dbnavigator.xml
generated
Normal file
539
.idea/dbnavigator.xml
generated
Normal file
@@ -0,0 +1,539 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="DBNavigator.Project.DataEditorManager">
|
||||||
|
<record-view-column-sorting-type value="BY_INDEX" />
|
||||||
|
<value-preview-text-wrapping value="false" />
|
||||||
|
<value-preview-pinned value="false" />
|
||||||
|
</component>
|
||||||
|
<component name="DBNavigator.Project.DataExportManager">
|
||||||
|
<export-instructions>
|
||||||
|
<create-header value="true" />
|
||||||
|
<quote-values-containing-separator value="true" />
|
||||||
|
<quote-all-values value="false" />
|
||||||
|
<value-separator value="" />
|
||||||
|
<file-name value="" />
|
||||||
|
<file-location value="" />
|
||||||
|
<scope value="GLOBAL" />
|
||||||
|
<destination value="FILE" />
|
||||||
|
<format value="EXCEL" />
|
||||||
|
<charset value="UTF-8" />
|
||||||
|
</export-instructions>
|
||||||
|
</component>
|
||||||
|
<component name="DBNavigator.Project.DatabaseBrowserManager">
|
||||||
|
<autoscroll-to-editor value="false" />
|
||||||
|
<autoscroll-from-editor value="true" />
|
||||||
|
<show-object-properties value="true" />
|
||||||
|
<loaded-nodes>
|
||||||
|
<connection connection-id="94a6cabe-5b17-467d-a87c-dc17d3749f25">
|
||||||
|
<schema name="information_schema" object-types="function, table" />
|
||||||
|
<schema name="pg_catalog" object-types="table" />
|
||||||
|
<schema name="public" object-types="table" />
|
||||||
|
</connection>
|
||||||
|
</loaded-nodes>
|
||||||
|
</component>
|
||||||
|
<component name="DBNavigator.Project.DatabaseConsoleManager">
|
||||||
|
<connection id="94a6cabe-5b17-467d-a87c-dc17d3749f25">
|
||||||
|
<console name="LocalPostGreSQL" type="STANDARD" />
|
||||||
|
</connection>
|
||||||
|
</component>
|
||||||
|
<component name="DBNavigator.Project.EditorStateManager">
|
||||||
|
<last-used-providers />
|
||||||
|
</component>
|
||||||
|
<component name="DBNavigator.Project.MethodExecutionManager">
|
||||||
|
<method-browser />
|
||||||
|
<execution-history>
|
||||||
|
<group-entries value="true" />
|
||||||
|
<execution-inputs />
|
||||||
|
</execution-history>
|
||||||
|
<argument-values-cache />
|
||||||
|
</component>
|
||||||
|
<component name="DBNavigator.Project.ObjectDependencyManager">
|
||||||
|
<last-used-dependency-type value="INCOMING" />
|
||||||
|
</component>
|
||||||
|
<component name="DBNavigator.Project.ObjectQuickFilterManager">
|
||||||
|
<last-used-operator value="EQUAL" />
|
||||||
|
<filters />
|
||||||
|
</component>
|
||||||
|
<component name="DBNavigator.Project.ScriptExecutionManager" clear-outputs="true">
|
||||||
|
<recently-used-interfaces />
|
||||||
|
</component>
|
||||||
|
<component name="DBNavigator.Project.Settings">
|
||||||
|
<connections>
|
||||||
|
<connection id="94a6cabe-5b17-467d-a87c-dc17d3749f25" active="true">
|
||||||
|
<database>
|
||||||
|
<name value="LocalPostGreSQL" />
|
||||||
|
<description value="LocalPostGreSQL" />
|
||||||
|
<database-type value="POSTGRES" />
|
||||||
|
<config-type value="BASIC" />
|
||||||
|
<database-version value="9.6" />
|
||||||
|
<driver-source value="BUILTIN" />
|
||||||
|
<driver-library value="" />
|
||||||
|
<driver value="" />
|
||||||
|
<url-type value="DATABASE" />
|
||||||
|
<host value="localhost" />
|
||||||
|
<port value="5432" />
|
||||||
|
<database value="postgres" />
|
||||||
|
<os-authentication value="true" />
|
||||||
|
<empty-password value="false" />
|
||||||
|
<user value="" />
|
||||||
|
<password value="" />
|
||||||
|
</database>
|
||||||
|
<properties>
|
||||||
|
<auto-commit value="false" />
|
||||||
|
</properties>
|
||||||
|
<ssh-settings>
|
||||||
|
<active value="false" />
|
||||||
|
<proxy-host value="" />
|
||||||
|
<proxy-port value="22" />
|
||||||
|
<proxy-user value="" />
|
||||||
|
<proxy-password value="" />
|
||||||
|
<auth-type value="PASSWORD" />
|
||||||
|
<key-file value="" />
|
||||||
|
<key-passphrase value="" />
|
||||||
|
</ssh-settings>
|
||||||
|
<details>
|
||||||
|
<charset value="UTF-8" />
|
||||||
|
<ddl-file-binding value="true" />
|
||||||
|
<database-logging value="false" />
|
||||||
|
<connect-automatically value="true" />
|
||||||
|
<restore-workspace value="true" />
|
||||||
|
<restore-workspace-deep value="true" />
|
||||||
|
<environment-type value="default" />
|
||||||
|
<idle-time-to-disconnect value="30" />
|
||||||
|
<password-expiry-time value="10" />
|
||||||
|
<max-connection-pool-size value="7" />
|
||||||
|
<alternative-statement-delimiter value="" />
|
||||||
|
</details>
|
||||||
|
<object-filters hide-empty-schemas="false">
|
||||||
|
<object-type-filter use-master-settings="true">
|
||||||
|
<object-type name="SCHEMA" enabled="true" />
|
||||||
|
<object-type name="USER" enabled="true" />
|
||||||
|
<object-type name="ROLE" enabled="true" />
|
||||||
|
<object-type name="PRIVILEGE" enabled="true" />
|
||||||
|
<object-type name="CHARSET" enabled="true" />
|
||||||
|
<object-type name="TABLE" enabled="true" />
|
||||||
|
<object-type name="VIEW" enabled="true" />
|
||||||
|
<object-type name="MATERIALIZED_VIEW" enabled="true" />
|
||||||
|
<object-type name="NESTED_TABLE" enabled="true" />
|
||||||
|
<object-type name="COLUMN" enabled="true" />
|
||||||
|
<object-type name="INDEX" enabled="true" />
|
||||||
|
<object-type name="CONSTRAINT" enabled="true" />
|
||||||
|
<object-type name="DATASET_TRIGGER" enabled="true" />
|
||||||
|
<object-type name="DATABASE_TRIGGER" enabled="true" />
|
||||||
|
<object-type name="SYNONYM" enabled="true" />
|
||||||
|
<object-type name="SEQUENCE" enabled="true" />
|
||||||
|
<object-type name="PROCEDURE" enabled="true" />
|
||||||
|
<object-type name="FUNCTION" enabled="true" />
|
||||||
|
<object-type name="PACKAGE" enabled="true" />
|
||||||
|
<object-type name="TYPE" enabled="true" />
|
||||||
|
<object-type name="TYPE_ATTRIBUTE" enabled="true" />
|
||||||
|
<object-type name="ARGUMENT" enabled="true" />
|
||||||
|
<object-type name="DIMENSION" enabled="true" />
|
||||||
|
<object-type name="CLUSTER" enabled="true" />
|
||||||
|
<object-type name="DBLINK" enabled="true" />
|
||||||
|
</object-type-filter>
|
||||||
|
<object-name-filters />
|
||||||
|
</object-filters>
|
||||||
|
</connection>
|
||||||
|
</connections>
|
||||||
|
<browser-settings>
|
||||||
|
<general>
|
||||||
|
<display-mode value="TABBED" />
|
||||||
|
<navigation-history-size value="100" />
|
||||||
|
<show-object-details value="false" />
|
||||||
|
</general>
|
||||||
|
<filters>
|
||||||
|
<object-type-filter>
|
||||||
|
<object-type name="SCHEMA" enabled="true" />
|
||||||
|
<object-type name="USER" enabled="true" />
|
||||||
|
<object-type name="ROLE" enabled="true" />
|
||||||
|
<object-type name="PRIVILEGE" enabled="true" />
|
||||||
|
<object-type name="CHARSET" enabled="true" />
|
||||||
|
<object-type name="TABLE" enabled="true" />
|
||||||
|
<object-type name="VIEW" enabled="true" />
|
||||||
|
<object-type name="MATERIALIZED_VIEW" enabled="true" />
|
||||||
|
<object-type name="NESTED_TABLE" enabled="true" />
|
||||||
|
<object-type name="COLUMN" enabled="true" />
|
||||||
|
<object-type name="INDEX" enabled="true" />
|
||||||
|
<object-type name="CONSTRAINT" enabled="true" />
|
||||||
|
<object-type name="DATASET_TRIGGER" enabled="true" />
|
||||||
|
<object-type name="DATABASE_TRIGGER" enabled="true" />
|
||||||
|
<object-type name="SYNONYM" enabled="true" />
|
||||||
|
<object-type name="SEQUENCE" enabled="true" />
|
||||||
|
<object-type name="PROCEDURE" enabled="true" />
|
||||||
|
<object-type name="FUNCTION" enabled="true" />
|
||||||
|
<object-type name="PACKAGE" enabled="true" />
|
||||||
|
<object-type name="TYPE" enabled="true" />
|
||||||
|
<object-type name="TYPE_ATTRIBUTE" enabled="true" />
|
||||||
|
<object-type name="ARGUMENT" enabled="true" />
|
||||||
|
<object-type name="DIMENSION" enabled="true" />
|
||||||
|
<object-type name="CLUSTER" enabled="true" />
|
||||||
|
<object-type name="DBLINK" enabled="true" />
|
||||||
|
</object-type-filter>
|
||||||
|
</filters>
|
||||||
|
<sorting>
|
||||||
|
<object-type name="COLUMN" sorting-type="NAME" />
|
||||||
|
<object-type name="FUNCTION" sorting-type="NAME" />
|
||||||
|
<object-type name="PROCEDURE" sorting-type="NAME" />
|
||||||
|
<object-type name="ARGUMENT" sorting-type="POSITION" />
|
||||||
|
</sorting>
|
||||||
|
<default-editors>
|
||||||
|
<object-type name="VIEW" editor-type="SELECTION" />
|
||||||
|
<object-type name="PACKAGE" editor-type="SELECTION" />
|
||||||
|
<object-type name="TYPE" editor-type="SELECTION" />
|
||||||
|
</default-editors>
|
||||||
|
</browser-settings>
|
||||||
|
<navigation-settings>
|
||||||
|
<lookup-filters>
|
||||||
|
<lookup-objects>
|
||||||
|
<object-type name="SCHEMA" enabled="true" />
|
||||||
|
<object-type name="USER" enabled="false" />
|
||||||
|
<object-type name="ROLE" enabled="false" />
|
||||||
|
<object-type name="PRIVILEGE" enabled="false" />
|
||||||
|
<object-type name="CHARSET" enabled="false" />
|
||||||
|
<object-type name="TABLE" enabled="true" />
|
||||||
|
<object-type name="VIEW" enabled="true" />
|
||||||
|
<object-type name="MATERIALIZED VIEW" enabled="true" />
|
||||||
|
<object-type name="NESTED TABLE" enabled="false" />
|
||||||
|
<object-type name="COLUMN" enabled="false" />
|
||||||
|
<object-type name="INDEX" enabled="true" />
|
||||||
|
<object-type name="CONSTRAINT" enabled="true" />
|
||||||
|
<object-type name="DATASET TRIGGER" enabled="true" />
|
||||||
|
<object-type name="DATABASE TRIGGER" enabled="true" />
|
||||||
|
<object-type name="SYNONYM" enabled="false" />
|
||||||
|
<object-type name="SEQUENCE" enabled="true" />
|
||||||
|
<object-type name="PROCEDURE" enabled="true" />
|
||||||
|
<object-type name="FUNCTION" enabled="true" />
|
||||||
|
<object-type name="PACKAGE" enabled="true" />
|
||||||
|
<object-type name="TYPE" enabled="true" />
|
||||||
|
<object-type name="TYPE ATTRIBUTE" enabled="false" />
|
||||||
|
<object-type name="ARGUMENT" enabled="false" />
|
||||||
|
<object-type name="DIMENSION" enabled="false" />
|
||||||
|
<object-type name="CLUSTER" enabled="false" />
|
||||||
|
<object-type name="DBLINK" enabled="true" />
|
||||||
|
</lookup-objects>
|
||||||
|
<force-database-load value="false" />
|
||||||
|
<prompt-connection-selection value="true" />
|
||||||
|
<prompt-schema-selection value="true" />
|
||||||
|
</lookup-filters>
|
||||||
|
</navigation-settings>
|
||||||
|
<dataset-grid-settings>
|
||||||
|
<general>
|
||||||
|
<enable-zooming value="true" />
|
||||||
|
</general>
|
||||||
|
<sorting>
|
||||||
|
<nulls-first value="true" />
|
||||||
|
<max-sorting-columns value="4" />
|
||||||
|
</sorting>
|
||||||
|
<tracking-columns>
|
||||||
|
<columnNames value="" />
|
||||||
|
<visible value="true" />
|
||||||
|
<editable value="false" />
|
||||||
|
</tracking-columns>
|
||||||
|
</dataset-grid-settings>
|
||||||
|
<dataset-editor-settings>
|
||||||
|
<text-editor-popup>
|
||||||
|
<active value="false" />
|
||||||
|
<active-if-empty value="false" />
|
||||||
|
<data-length-threshold value="100" />
|
||||||
|
<popup-delay value="1000" />
|
||||||
|
</text-editor-popup>
|
||||||
|
<values-list-popup>
|
||||||
|
<show-popup-button value="true" />
|
||||||
|
<element-count-threshold value="1000" />
|
||||||
|
<data-length-threshold value="250" />
|
||||||
|
</values-list-popup>
|
||||||
|
<general>
|
||||||
|
<fetch-block-size value="100" />
|
||||||
|
<fetch-timeout value="30" />
|
||||||
|
<trim-whitespaces value="true" />
|
||||||
|
<convert-empty-strings-to-null value="true" />
|
||||||
|
<select-content-on-cell-edit value="true" />
|
||||||
|
<large-value-preview-active value="true" />
|
||||||
|
</general>
|
||||||
|
<filters>
|
||||||
|
<prompt-filter-dialog value="true" />
|
||||||
|
<default-filter-type value="BASIC" />
|
||||||
|
</filters>
|
||||||
|
<qualified-text-editor text-length-threshold="300">
|
||||||
|
<content-types>
|
||||||
|
<content-type name="Text" enabled="true" />
|
||||||
|
<content-type name="Properties" enabled="true" />
|
||||||
|
<content-type name="XML" enabled="true" />
|
||||||
|
<content-type name="DTD" enabled="true" />
|
||||||
|
<content-type name="HTML" enabled="true" />
|
||||||
|
<content-type name="XHTML" enabled="true" />
|
||||||
|
<content-type name="Java" enabled="true" />
|
||||||
|
<content-type name="SQL" enabled="true" />
|
||||||
|
<content-type name="PL/SQL" enabled="true" />
|
||||||
|
<content-type name="Groovy" enabled="true" />
|
||||||
|
<content-type name="AIDL" enabled="true" />
|
||||||
|
<content-type name="YAML" enabled="true" />
|
||||||
|
<content-type name="Bash" enabled="true" />
|
||||||
|
<content-type name="Manifest" enabled="true" />
|
||||||
|
</content-types>
|
||||||
|
</qualified-text-editor>
|
||||||
|
<record-navigation>
|
||||||
|
<navigation-target value="VIEWER" />
|
||||||
|
</record-navigation>
|
||||||
|
</dataset-editor-settings>
|
||||||
|
<code-editor-settings>
|
||||||
|
<general>
|
||||||
|
<show-object-navigation-gutter value="false" />
|
||||||
|
<show-spec-declaration-navigation-gutter value="true" />
|
||||||
|
</general>
|
||||||
|
<confirmations>
|
||||||
|
<save-changes value="false" />
|
||||||
|
<revert-changes value="true" />
|
||||||
|
</confirmations>
|
||||||
|
</code-editor-settings>
|
||||||
|
<code-completion-settings>
|
||||||
|
<filters>
|
||||||
|
<basic-filter>
|
||||||
|
<filter-element type="RESERVED_WORD" id="keyword" selected="true" />
|
||||||
|
<filter-element type="RESERVED_WORD" id="function" selected="true" />
|
||||||
|
<filter-element type="RESERVED_WORD" id="parameter" selected="true" />
|
||||||
|
<filter-element type="RESERVED_WORD" id="datatype" selected="true" />
|
||||||
|
<filter-element type="RESERVED_WORD" id="exception" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="schema" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="role" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="user" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="privilege" selected="true" />
|
||||||
|
<user-schema>
|
||||||
|
<filter-element type="OBJECT" id="table" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="view" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="materialized view" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="index" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="constraint" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="trigger" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="synonym" selected="false" />
|
||||||
|
<filter-element type="OBJECT" id="sequence" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="procedure" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="function" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="package" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="type" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="dimension" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="cluster" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="dblink" selected="true" />
|
||||||
|
</user-schema>
|
||||||
|
<public-schema>
|
||||||
|
<filter-element type="OBJECT" id="table" selected="false" />
|
||||||
|
<filter-element type="OBJECT" id="view" selected="false" />
|
||||||
|
<filter-element type="OBJECT" id="materialized view" selected="false" />
|
||||||
|
<filter-element type="OBJECT" id="index" selected="false" />
|
||||||
|
<filter-element type="OBJECT" id="constraint" selected="false" />
|
||||||
|
<filter-element type="OBJECT" id="trigger" selected="false" />
|
||||||
|
<filter-element type="OBJECT" id="synonym" selected="false" />
|
||||||
|
<filter-element type="OBJECT" id="sequence" selected="false" />
|
||||||
|
<filter-element type="OBJECT" id="procedure" selected="false" />
|
||||||
|
<filter-element type="OBJECT" id="function" selected="false" />
|
||||||
|
<filter-element type="OBJECT" id="package" selected="false" />
|
||||||
|
<filter-element type="OBJECT" id="type" selected="false" />
|
||||||
|
<filter-element type="OBJECT" id="dimension" selected="false" />
|
||||||
|
<filter-element type="OBJECT" id="cluster" selected="false" />
|
||||||
|
<filter-element type="OBJECT" id="dblink" selected="false" />
|
||||||
|
</public-schema>
|
||||||
|
<any-schema>
|
||||||
|
<filter-element type="OBJECT" id="table" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="view" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="materialized view" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="index" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="constraint" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="trigger" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="synonym" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="sequence" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="procedure" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="function" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="package" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="type" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="dimension" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="cluster" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="dblink" selected="true" />
|
||||||
|
</any-schema>
|
||||||
|
</basic-filter>
|
||||||
|
<extended-filter>
|
||||||
|
<filter-element type="RESERVED_WORD" id="keyword" selected="true" />
|
||||||
|
<filter-element type="RESERVED_WORD" id="function" selected="true" />
|
||||||
|
<filter-element type="RESERVED_WORD" id="parameter" selected="true" />
|
||||||
|
<filter-element type="RESERVED_WORD" id="datatype" selected="true" />
|
||||||
|
<filter-element type="RESERVED_WORD" id="exception" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="schema" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="user" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="role" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="privilege" selected="true" />
|
||||||
|
<user-schema>
|
||||||
|
<filter-element type="OBJECT" id="table" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="view" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="materialized view" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="index" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="constraint" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="trigger" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="synonym" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="sequence" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="procedure" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="function" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="package" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="type" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="dimension" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="cluster" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="dblink" selected="true" />
|
||||||
|
</user-schema>
|
||||||
|
<public-schema>
|
||||||
|
<filter-element type="OBJECT" id="table" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="view" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="materialized view" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="index" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="constraint" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="trigger" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="synonym" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="sequence" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="procedure" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="function" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="package" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="type" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="dimension" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="cluster" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="dblink" selected="true" />
|
||||||
|
</public-schema>
|
||||||
|
<any-schema>
|
||||||
|
<filter-element type="OBJECT" id="table" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="view" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="materialized view" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="index" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="constraint" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="trigger" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="synonym" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="sequence" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="procedure" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="function" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="package" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="type" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="dimension" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="cluster" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="dblink" selected="true" />
|
||||||
|
</any-schema>
|
||||||
|
</extended-filter>
|
||||||
|
</filters>
|
||||||
|
<sorting enabled="true">
|
||||||
|
<sorting-element type="RESERVED_WORD" id="keyword" />
|
||||||
|
<sorting-element type="RESERVED_WORD" id="datatype" />
|
||||||
|
<sorting-element type="OBJECT" id="column" />
|
||||||
|
<sorting-element type="OBJECT" id="table" />
|
||||||
|
<sorting-element type="OBJECT" id="view" />
|
||||||
|
<sorting-element type="OBJECT" id="materialized view" />
|
||||||
|
<sorting-element type="OBJECT" id="index" />
|
||||||
|
<sorting-element type="OBJECT" id="constraint" />
|
||||||
|
<sorting-element type="OBJECT" id="trigger" />
|
||||||
|
<sorting-element type="OBJECT" id="synonym" />
|
||||||
|
<sorting-element type="OBJECT" id="sequence" />
|
||||||
|
<sorting-element type="OBJECT" id="procedure" />
|
||||||
|
<sorting-element type="OBJECT" id="function" />
|
||||||
|
<sorting-element type="OBJECT" id="package" />
|
||||||
|
<sorting-element type="OBJECT" id="type" />
|
||||||
|
<sorting-element type="OBJECT" id="dimension" />
|
||||||
|
<sorting-element type="OBJECT" id="cluster" />
|
||||||
|
<sorting-element type="OBJECT" id="dblink" />
|
||||||
|
<sorting-element type="OBJECT" id="schema" />
|
||||||
|
<sorting-element type="OBJECT" id="role" />
|
||||||
|
<sorting-element type="OBJECT" id="user" />
|
||||||
|
<sorting-element type="RESERVED_WORD" id="function" />
|
||||||
|
<sorting-element type="RESERVED_WORD" id="parameter" />
|
||||||
|
</sorting>
|
||||||
|
<format>
|
||||||
|
<enforce-code-style-case value="true" />
|
||||||
|
</format>
|
||||||
|
</code-completion-settings>
|
||||||
|
<execution-engine-settings>
|
||||||
|
<statement-execution>
|
||||||
|
<fetch-block-size value="100" />
|
||||||
|
<execution-timeout value="20" />
|
||||||
|
<debug-execution-timeout value="600" />
|
||||||
|
<focus-result value="false" />
|
||||||
|
<prompt-execution value="false" />
|
||||||
|
</statement-execution>
|
||||||
|
<script-execution>
|
||||||
|
<command-line-interfaces />
|
||||||
|
<execution-timeout value="300" />
|
||||||
|
</script-execution>
|
||||||
|
<method-execution>
|
||||||
|
<execution-timeout value="30" />
|
||||||
|
<debug-execution-timeout value="600" />
|
||||||
|
<parameter-history-size value="10" />
|
||||||
|
</method-execution>
|
||||||
|
</execution-engine-settings>
|
||||||
|
<operation-settings>
|
||||||
|
<transactions>
|
||||||
|
<uncommitted-changes>
|
||||||
|
<on-project-close value="ASK" />
|
||||||
|
<on-disconnect value="ASK" />
|
||||||
|
<on-autocommit-toggle value="ASK" />
|
||||||
|
</uncommitted-changes>
|
||||||
|
<multiple-uncommitted-changes>
|
||||||
|
<on-commit value="ASK" />
|
||||||
|
<on-rollback value="ASK" />
|
||||||
|
</multiple-uncommitted-changes>
|
||||||
|
</transactions>
|
||||||
|
<session-browser>
|
||||||
|
<disconnect-session value="ASK" />
|
||||||
|
<kill-session value="ASK" />
|
||||||
|
<reload-on-filter-change value="false" />
|
||||||
|
</session-browser>
|
||||||
|
<compiler>
|
||||||
|
<compile-type value="KEEP" />
|
||||||
|
<compile-dependencies value="ASK" />
|
||||||
|
<always-show-controls value="false" />
|
||||||
|
</compiler>
|
||||||
|
<debugger>
|
||||||
|
<debugger-type value="ASK" />
|
||||||
|
<use-generic-runners value="true" />
|
||||||
|
</debugger>
|
||||||
|
</operation-settings>
|
||||||
|
<ddl-file-settings>
|
||||||
|
<extensions>
|
||||||
|
<mapping file-type-id="VIEW" extensions="vw" />
|
||||||
|
<mapping file-type-id="TRIGGER" extensions="trg" />
|
||||||
|
<mapping file-type-id="PROCEDURE" extensions="prc" />
|
||||||
|
<mapping file-type-id="FUNCTION" extensions="fnc" />
|
||||||
|
<mapping file-type-id="PACKAGE" extensions="pkg" />
|
||||||
|
<mapping file-type-id="PACKAGE_SPEC" extensions="pks" />
|
||||||
|
<mapping file-type-id="PACKAGE_BODY" extensions="pkb" />
|
||||||
|
<mapping file-type-id="TYPE" extensions="tpe" />
|
||||||
|
<mapping file-type-id="TYPE_SPEC" extensions="tps" />
|
||||||
|
<mapping file-type-id="TYPE_BODY" extensions="tpb" />
|
||||||
|
</extensions>
|
||||||
|
<general>
|
||||||
|
<lookup-ddl-files value="true" />
|
||||||
|
<create-ddl-files value="false" />
|
||||||
|
<synchronize-ddl-files value="true" />
|
||||||
|
<use-qualified-names value="false" />
|
||||||
|
<make-scripts-rerunnable value="true" />
|
||||||
|
</general>
|
||||||
|
</ddl-file-settings>
|
||||||
|
<general-settings>
|
||||||
|
<regional-settings>
|
||||||
|
<date-format value="MEDIUM" />
|
||||||
|
<number-format value="UNGROUPED" />
|
||||||
|
<locale value="SYSTEM_DEFAULT" />
|
||||||
|
<use-custom-formats value="false" />
|
||||||
|
</regional-settings>
|
||||||
|
<environment>
|
||||||
|
<environment-types>
|
||||||
|
<environment-type id="development" name="Development" description="Development environment" color="-2430209/-12296320" readonly-code="false" readonly-data="false" />
|
||||||
|
<environment-type id="integration" name="Integration" description="Integration environment" color="-2621494/-12163514" readonly-code="true" readonly-data="false" />
|
||||||
|
<environment-type id="production" name="Production" description="Productive environment" color="-11574/-10271420" readonly-code="true" readonly-data="true" />
|
||||||
|
<environment-type id="other" name="Other" description="" color="-1576/-10724543" readonly-code="false" readonly-data="false" />
|
||||||
|
</environment-types>
|
||||||
|
<visibility-settings>
|
||||||
|
<connection-tabs value="true" />
|
||||||
|
<dialog-headers value="true" />
|
||||||
|
<object-editor-tabs value="true" />
|
||||||
|
<script-editor-tabs value="false" />
|
||||||
|
<execution-result-tabs value="true" />
|
||||||
|
</visibility-settings>
|
||||||
|
</environment>
|
||||||
|
</general-settings>
|
||||||
|
</component>
|
||||||
|
<component name="DBNavigator.Project.StatementExecutionManager">
|
||||||
|
<execution-variables />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
9
.idea/libraries/Gradle___IOBoard_0_1_.xml
generated
Normal file
9
.idea/libraries/Gradle___IOBoard_0_1_.xml
generated
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Gradle: :IOBoard-0.1:">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$PROJECT_DIR$/libs/IOBoard-0.1.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES />
|
||||||
|
</library>
|
||||||
|
</component>
|
||||||
9
.idea/libraries/Gradle___IOBoard_RPi_0_1_.xml
generated
Normal file
9
.idea/libraries/Gradle___IOBoard_RPi_0_1_.xml
generated
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Gradle: :IOBoard-RPi-0.1:">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$PROJECT_DIR$/libs/IOBoard-RPi-0.1.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES />
|
||||||
|
</library>
|
||||||
|
</component>
|
||||||
1
.idea/modules/poc-java.iml
generated
1
.idea/modules/poc-java.iml
generated
@@ -5,6 +5,7 @@
|
|||||||
<content url="file://$MODULE_DIR$/../..">
|
<content url="file://$MODULE_DIR$/../..">
|
||||||
<excludeFolder url="file://$MODULE_DIR$/../../.gradle" />
|
<excludeFolder url="file://$MODULE_DIR$/../../.gradle" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/../../build" />
|
<excludeFolder url="file://$MODULE_DIR$/../../build" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/../../out" />
|
||||||
</content>
|
</content>
|
||||||
<orderEntry type="inheritedJdk" />
|
<orderEntry type="inheritedJdk" />
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
|||||||
6
.idea/modules/poc-java_main.iml
generated
6
.idea/modules/poc-java_main.iml
generated
@@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<module external.linked.project.id="poc-java:main" external.linked.project.path="$MODULE_DIR$/../.." external.root.project.path="$MODULE_DIR$/../.." external.system.id="GRADLE" external.system.module.group="com.henrypump.poc" external.system.module.type="sourceSet" external.system.module.version="1.0-SNAPSHOT" type="JAVA_MODULE" version="4">
|
<module external.linked.project.id="poc-java:main" external.linked.project.path="$MODULE_DIR$/../.." external.root.project.path="$MODULE_DIR$/../.." external.system.id="GRADLE" external.system.module.group="com.henrypump.poc" external.system.module.type="sourceSet" external.system.module.version="1.0-SNAPSHOT" type="JAVA_MODULE" version="4">
|
||||||
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8" inherit-compiler-output="false">
|
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
|
||||||
<output url="file://$MODULE_DIR$/../../build/classes/main" />
|
<output url="file://$MODULE_DIR$/../../out/production/classes" />
|
||||||
<exclude-output />
|
<exclude-output />
|
||||||
<content url="file://$MODULE_DIR$/../../src/main">
|
<content url="file://$MODULE_DIR$/../../src/main">
|
||||||
<sourceFolder url="file://$MODULE_DIR$/../../src/main/java" isTestSource="false" />
|
<sourceFolder url="file://$MODULE_DIR$/../../src/main/java" isTestSource="false" />
|
||||||
@@ -13,6 +13,8 @@
|
|||||||
<orderEntry type="library" name="Gradle: com.googlecode.json-simple:json-simple:1.1.1" level="project" />
|
<orderEntry type="library" name="Gradle: com.googlecode.json-simple:json-simple:1.1.1" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: org.mongodb:mongodb-driver:3.4.2" level="project" />
|
<orderEntry type="library" name="Gradle: org.mongodb:mongodb-driver:3.4.2" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: de.vandermeer:asciitable:0.2.5" level="project" />
|
<orderEntry type="library" name="Gradle: de.vandermeer:asciitable:0.2.5" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: :IOBoard-0.1:" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: :IOBoard-RPi-0.1:" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: junit:junit:4.10" level="project" />
|
<orderEntry type="library" name="Gradle: junit:junit:4.10" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: org.mongodb:bson:3.4.2" level="project" />
|
<orderEntry type="library" name="Gradle: org.mongodb:bson:3.4.2" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: org.mongodb:mongodb-driver-core:3.4.2" level="project" />
|
<orderEntry type="library" name="Gradle: org.mongodb:mongodb-driver-core:3.4.2" level="project" />
|
||||||
|
|||||||
6
.idea/modules/poc-java_test.iml
generated
6
.idea/modules/poc-java_test.iml
generated
@@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<module external.linked.project.id="poc-java:test" external.linked.project.path="$MODULE_DIR$/../.." external.root.project.path="$MODULE_DIR$/../.." external.system.id="GRADLE" external.system.module.group="com.henrypump.poc" external.system.module.type="sourceSet" external.system.module.version="1.0-SNAPSHOT" type="JAVA_MODULE" version="4">
|
<module external.linked.project.id="poc-java:test" external.linked.project.path="$MODULE_DIR$/../.." external.root.project.path="$MODULE_DIR$/../.." external.system.id="GRADLE" external.system.module.group="com.henrypump.poc" external.system.module.type="sourceSet" external.system.module.version="1.0-SNAPSHOT" type="JAVA_MODULE" version="4">
|
||||||
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8" inherit-compiler-output="false">
|
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
|
||||||
<output-test url="file://$MODULE_DIR$/../../build/classes/test" />
|
<output-test url="file://$MODULE_DIR$/../../out/test/classes" />
|
||||||
<exclude-output />
|
<exclude-output />
|
||||||
<content url="file://$MODULE_DIR$/../../src/test">
|
<content url="file://$MODULE_DIR$/../../src/test">
|
||||||
<sourceFolder url="file://$MODULE_DIR$/../../src/test/java" isTestSource="true" />
|
<sourceFolder url="file://$MODULE_DIR$/../../src/test/java" isTestSource="true" />
|
||||||
@@ -14,6 +14,8 @@
|
|||||||
<orderEntry type="library" name="Gradle: com.googlecode.json-simple:json-simple:1.1.1" level="project" />
|
<orderEntry type="library" name="Gradle: com.googlecode.json-simple:json-simple:1.1.1" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: org.mongodb:mongodb-driver:3.4.2" level="project" />
|
<orderEntry type="library" name="Gradle: org.mongodb:mongodb-driver:3.4.2" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: de.vandermeer:asciitable:0.2.5" level="project" />
|
<orderEntry type="library" name="Gradle: de.vandermeer:asciitable:0.2.5" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: :IOBoard-0.1:" level="project" />
|
||||||
|
<orderEntry type="library" name="Gradle: :IOBoard-RPi-0.1:" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: org.mongodb:bson:3.4.2" level="project" />
|
<orderEntry type="library" name="Gradle: org.mongodb:bson:3.4.2" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: org.mongodb:mongodb-driver-core:3.4.2" level="project" />
|
<orderEntry type="library" name="Gradle: org.mongodb:mongodb-driver-core:3.4.2" level="project" />
|
||||||
<orderEntry type="library" name="Gradle: de.vandermeer:asciilist:0.0.3" level="project" />
|
<orderEntry type="library" name="Gradle: de.vandermeer:asciilist:0.0.3" level="project" />
|
||||||
|
|||||||
1049
.idea/workspace.xml
generated
1049
.idea/workspace.xml
generated
File diff suppressed because it is too large
Load Diff
25
Dockerfile
Normal file
25
Dockerfile
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
FROM resin/rpi-raspbian:jessie
|
||||||
|
# FROM ubuntu
|
||||||
|
|
||||||
|
# Install dependencies
|
||||||
|
RUN apt-get update && apt-get install -y \
|
||||||
|
git-core \
|
||||||
|
build-essential \
|
||||||
|
gcc \
|
||||||
|
oracle-java8-jdk\
|
||||||
|
curl\
|
||||||
|
wget\
|
||||||
|
--no-install-recommends && \
|
||||||
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
RUN git clone git://git.drogon.net/wiringPi
|
||||||
|
RUN cd wiringPi && ./build
|
||||||
|
RUN curl -s get.pi4j.com | bash
|
||||||
|
COPY build/libs/poc-java-all-1.0-SNAPSHOT.jar /root
|
||||||
|
COPY rpi_startup.sh /root
|
||||||
|
|
||||||
|
# Define working directory
|
||||||
|
WORKDIR /data
|
||||||
|
VOLUME /data
|
||||||
|
|
||||||
|
CMD ["/root/rpi_startup.sh"]
|
||||||
@@ -13,6 +13,10 @@ targetCompatibility = 1.8
|
|||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
maven { url "http://repo.maven.apache.org/maven2" }
|
maven { url "http://repo.maven.apache.org/maven2" }
|
||||||
|
flatDir {
|
||||||
|
dirs 'libs'
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
@@ -20,6 +24,8 @@ dependencies {
|
|||||||
compile group: 'com.googlecode.json-simple', name: 'json-simple', version:'1.1.1'
|
compile group: 'com.googlecode.json-simple', name: 'json-simple', version:'1.1.1'
|
||||||
compile group: 'org.mongodb', name: 'mongodb-driver', version:'3.4.2'
|
compile group: 'org.mongodb', name: 'mongodb-driver', version:'3.4.2'
|
||||||
compile group: 'de.vandermeer', name: 'asciitable', version:'0.2.5'
|
compile group: 'de.vandermeer', name: 'asciitable', version:'0.2.5'
|
||||||
|
compile name: 'IOBoard-0.1'
|
||||||
|
compile name: 'IOBoard-RPi-0.1'
|
||||||
testCompile group: 'junit', name: 'junit', version:'3.8.1'
|
testCompile group: 'junit', name: 'junit', version:'3.8.1'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
BIN
libs/IOBoard-0.1.jar
Normal file
BIN
libs/IOBoard-0.1.jar
Normal file
Binary file not shown.
BIN
libs/IOBoard-RPi-0.1.jar
Normal file
BIN
libs/IOBoard-RPi-0.1.jar
Normal file
Binary file not shown.
1
rpi_startup.sh
Normal file
1
rpi_startup.sh
Normal file
@@ -0,0 +1 @@
|
|||||||
|
java -classpath .:classes:/opt/pi4j/lib/'*':/root/poc-java-all-1.0-SNAPSHOT.jar com.henrypump.poc.POC localhost
|
||||||
@@ -10,6 +10,7 @@ import mraa.mraa;
|
|||||||
import mraa.Platform;
|
import mraa.Platform;
|
||||||
import mraa.Result;
|
import mraa.Result;
|
||||||
|
|
||||||
|
|
||||||
import static java.lang.Thread.sleep;
|
import static java.lang.Thread.sleep;
|
||||||
|
|
||||||
|
|
||||||
@@ -23,6 +24,7 @@ public class AnalogIn {
|
|||||||
private double euMax;
|
private double euMax;
|
||||||
private double[] history = new double[100];
|
private double[] history = new double[100];
|
||||||
|
|
||||||
|
|
||||||
AnalogIn(int channel, double rawMin, double rawMax, double euMin, double euMax){
|
AnalogIn(int channel, double rawMin, double rawMax, double euMin, double euMax){
|
||||||
this.channel = channel;
|
this.channel = channel;
|
||||||
if (channel != 99) {
|
if (channel != 99) {
|
||||||
|
|||||||
@@ -17,20 +17,20 @@ import org.bson.Document;
|
|||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.FileReader;
|
import java.io.FileReader;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.time.ZoneId;
|
||||||
import java.time.ZonedDateTime;
|
import java.time.ZonedDateTime;
|
||||||
|
|
||||||
import com.mongodb.client.MongoCursor;
|
import com.mongodb.client.MongoCursor;
|
||||||
import static com.mongodb.client.model.Filters.*;
|
import static com.mongodb.client.model.Filters.*;
|
||||||
|
|
||||||
import javax.print.Doc;
|
import javax.print.Doc;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.List;
|
|
||||||
public class Database {
|
public class Database {
|
||||||
private String pocDatabase = "poc";
|
private String pocDatabase = "poc";
|
||||||
private MongoClient mongoClient;
|
private MongoClient mongoClient;
|
||||||
private MongoDatabase database;
|
private MongoDatabase database;
|
||||||
|
private MongoCredential credential = MongoCredential.createCredential("poc_java", pocDatabase, "HenryPump@1903".toCharArray());
|
||||||
private MongoCollection<Document> cardCollection, wellDataCollection, gaugeOffCollection, wellTestCollection,
|
private MongoCollection<Document> cardCollection, wellDataCollection, gaugeOffCollection, wellTestCollection,
|
||||||
fluidShotsCollection, runStatusCollection, wellConfigCollection, setpointCollection;
|
fluidShotsCollection, runStatusCollection, wellConfigCollection, setpointCollection;
|
||||||
|
|
||||||
@@ -38,8 +38,8 @@ public class Database {
|
|||||||
cardCollection = database.getCollection("cards");
|
cardCollection = database.getCollection("cards");
|
||||||
cardCollection.createIndex(Indexes.ascending("timestamp", "strokeNumber"));
|
cardCollection.createIndex(Indexes.ascending("timestamp", "strokeNumber"));
|
||||||
|
|
||||||
wellDataCollection = database.getCollection("wellData");
|
wellDataCollection = database.getCollection("measurements");
|
||||||
wellDataCollection.createIndex(Indexes.ascending("timestamp", "tagName"));
|
wellDataCollection.createIndex(Indexes.ascending("dateStored", "tagName"));
|
||||||
|
|
||||||
gaugeOffCollection = database.getCollection("gaugeOff");
|
gaugeOffCollection = database.getCollection("gaugeOff");
|
||||||
gaugeOffCollection.createIndex(Indexes.ascending("timestamp", "tagName"));
|
gaugeOffCollection.createIndex(Indexes.ascending("timestamp", "tagName"));
|
||||||
@@ -63,7 +63,9 @@ public class Database {
|
|||||||
|
|
||||||
|
|
||||||
Database(){
|
Database(){
|
||||||
mongoClient = new MongoClient();
|
ServerAddress server = new ServerAddress("localhost", 27017);
|
||||||
|
List<MongoCredential> credentials = Arrays.asList(credential);
|
||||||
|
mongoClient = new MongoClient(server, credentials);
|
||||||
database = mongoClient.getDatabase(pocDatabase);
|
database = mongoClient.getDatabase(pocDatabase);
|
||||||
|
|
||||||
initCollections();
|
initCollections();
|
||||||
@@ -72,7 +74,9 @@ public class Database {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Database(String dbHostname){
|
Database(String dbHostname){
|
||||||
mongoClient = new MongoClient(dbHostname);
|
ServerAddress server = new ServerAddress(dbHostname, 27017);
|
||||||
|
List<MongoCredential> credentials = Arrays.asList(credential);
|
||||||
|
mongoClient = new MongoClient(server, credentials);
|
||||||
database = mongoClient.getDatabase(pocDatabase);
|
database = mongoClient.getDatabase(pocDatabase);
|
||||||
|
|
||||||
initCollections();
|
initCollections();
|
||||||
@@ -136,21 +140,32 @@ public class Database {
|
|||||||
|
|
||||||
|
|
||||||
public long newMeasurement(Measurement inpMeasurement){
|
public long newMeasurement(Measurement inpMeasurement){
|
||||||
Document doc = new Document("tagname", inpMeasurement.getTagName())
|
ZonedDateTime nowDate = ZonedDateTime.now(ZoneId.of("UTC"));
|
||||||
|
ZonedDateTime todayDate = ZonedDateTime.of(nowDate.getYear(), nowDate.getMonthValue(), nowDate.getDayOfMonth(), 0, 0, 0, 0, ZoneId.of("UTC"));
|
||||||
|
Date storeDate = Date.from(todayDate.toInstant());
|
||||||
|
Document nowMeasurement = new Document("values." + nowDate.getHour() + "." + nowDate.getMinute(), inpMeasurement.getCurrentValue())
|
||||||
.append("currentValue", inpMeasurement.getCurrentValue())
|
.append("currentValue", inpMeasurement.getCurrentValue())
|
||||||
.append("maxDailyValue", inpMeasurement.getDailyMax())
|
.append("maxValue", inpMeasurement.getDailyMax())
|
||||||
.append("minDailyValue", inpMeasurement.getDailyMin())
|
.append("minValue", inpMeasurement.getDailyMin())
|
||||||
.append("dailyAverage", inpMeasurement.getAverage())
|
.append("averageValue", inpMeasurement.getAverage())
|
||||||
.append("dailyTotal", inpMeasurement.getTotal())
|
.append("totalValue", inpMeasurement.getTotal())
|
||||||
.append("numMeasurements", inpMeasurement.getNumMeasurements())
|
.append("numMeasurements", inpMeasurement.getNumMeasurements())
|
||||||
.append("timestamp", Date.from(ZonedDateTime.now().toInstant()));
|
.append("units", inpMeasurement.getUnits())
|
||||||
wellDataCollection.insertOne(doc);
|
.append("storeDelta", inpMeasurement.getSendDelta())
|
||||||
|
.append("storeTime", inpMeasurement.getSendTimeDelta())
|
||||||
|
.append("useTotal", inpMeasurement.isUseTotal())
|
||||||
|
.append("useAverage", inpMeasurement.isUseAverage())
|
||||||
|
.append("dateStored", storeDate);
|
||||||
|
|
||||||
|
wellDataCollection.updateOne(and(eq("tagname", inpMeasurement.getTagName()), eq("dateStored", storeDate)), new Document("$set", nowMeasurement), (new UpdateOptions()).upsert(true));
|
||||||
|
// wellDataCollection.updateOne(and(eq("tagname", inpMeasurement.getTagName()), eq("dateStored", todayDate)), new Document("$set", aggregateData), (new UpdateOptions()).upsert(true));
|
||||||
|
|
||||||
System.out.println("Stored " + inpMeasurement.getCurrentValue() + " for " + inpMeasurement.getTagName());
|
System.out.println("Stored " + inpMeasurement.getCurrentValue() + " for " + inpMeasurement.getTagName());
|
||||||
return wellDataCollection.count();
|
return wellDataCollection.count();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Document getLastStoredMeasurement(String tagName){
|
public Document getLastStoredMeasurement(String tagName){
|
||||||
MongoCursor<Document> cursor = wellDataCollection.find(eq("tagname", tagName)).sort(Sorts.descending("timestamp")).limit(1).iterator();
|
MongoCursor<Document> cursor = wellDataCollection.find(eq("tagname", tagName)).sort(Sorts.descending("dateStored")).limit(1).iterator();
|
||||||
Document lastStoredDoc = new Document();
|
Document lastStoredDoc = new Document();
|
||||||
try {
|
try {
|
||||||
while (cursor.hasNext()) {
|
while (cursor.hasNext()) {
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
package com.henrypump.poc;
|
package com.henrypump.poc;
|
||||||
|
|
||||||
|
import com.henrypump.io.DigitalIn;
|
||||||
|
import com.henrypump.io.DigitalOut;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by patrickjmcd on 2/10/17.
|
* Created by patrickjmcd on 2/10/17.
|
||||||
*/
|
*/
|
||||||
@@ -12,17 +15,30 @@ public class IOControl implements Runnable {
|
|||||||
private double pos = 0;
|
private double pos = 0;
|
||||||
private int runStatus;
|
private int runStatus;
|
||||||
|
|
||||||
IOControl(POC poc){
|
IOControl(POC poc) {
|
||||||
this.poc = poc;
|
this.poc = poc;
|
||||||
// IO
|
// IO
|
||||||
|
|
||||||
|
if (this.poc.ioEnabled){
|
||||||
|
startBtn = new DigitalIn(1);
|
||||||
|
stopBtn = new DigitalIn(2);
|
||||||
|
led2 = new DigitalOut(3);
|
||||||
|
led3 = new DigitalOut(4);
|
||||||
|
led4 = new DigitalOut(5);
|
||||||
|
led5 = new DigitalOut(6);
|
||||||
|
runningIndicator = new DigitalOut(2);
|
||||||
|
runCommand = new DigitalOut(1);
|
||||||
|
} else {
|
||||||
|
|
||||||
startBtn = new DigitalIn(99);
|
startBtn = new DigitalIn(99);
|
||||||
stopBtn = new DigitalIn(99);
|
stopBtn = new DigitalIn(99);
|
||||||
led2 = new DigitalOut(2, 0);
|
led2 = new DigitalOut(99);
|
||||||
led3 = new DigitalOut(3, 0);
|
led3 = new DigitalOut(99);
|
||||||
led4 = new DigitalOut(4, 0);
|
led4 = new DigitalOut(99);
|
||||||
led5 = new DigitalOut(5, 0);
|
led5 = new DigitalOut(99);
|
||||||
runningIndicator = new DigitalOut(6,0);
|
runningIndicator = new DigitalOut(99);
|
||||||
runCommand = new DigitalOut(7,0);
|
runCommand = new DigitalOut(99);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void startWell(){
|
private void startWell(){
|
||||||
@@ -40,20 +56,20 @@ public class IOControl implements Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void allOutputsOff(){
|
public void allOutputsOff(){
|
||||||
led2.write(0,true);
|
led2.write(0);
|
||||||
led3.write(0,true);
|
led3.write(0);
|
||||||
led4.write(0,true);
|
led4.write(0);
|
||||||
led5.write(0,true);
|
led5.write(0);
|
||||||
runningIndicator.write(0, true);
|
runningIndicator.write(0);
|
||||||
runCommand.write(0,true);
|
runCommand.write(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void run() {
|
public void run() {
|
||||||
System.out.println("Running the IOControl Loop");
|
System.out.println("Running the IOControl Loop");
|
||||||
for (;;) {
|
for (;;) {
|
||||||
if (startBtn.read() == 1) startWell();
|
if (startBtn.read(poc.thisWell.ioMux) == 1) startWell();
|
||||||
if (stopBtn.read() == 1) stopWell();
|
if (stopBtn.read(poc.thisWell.ioMux) == 1) stopWell();
|
||||||
if (startBtn.read() == 1 && stopBtn.read() == 1) {
|
if (startBtn.read(poc.thisWell.ioMux) == 1 && stopBtn.read(poc.thisWell.ioMux) == 1) {
|
||||||
exitPOC();
|
exitPOC();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import org.bson.Document;
|
|||||||
import java.time.ZoneId;
|
import java.time.ZoneId;
|
||||||
import java.time.ZonedDateTime;
|
import java.time.ZonedDateTime;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import static java.lang.Math.abs;
|
import static java.lang.Math.abs;
|
||||||
|
|
||||||
@@ -27,8 +28,11 @@ public class Measurement {
|
|||||||
private Database db;
|
private Database db;
|
||||||
private long lastSentTimestamp;
|
private long lastSentTimestamp;
|
||||||
private long sendTimeDelta;
|
private long sendTimeDelta;
|
||||||
|
private String units = null;
|
||||||
|
private boolean useTotal;
|
||||||
|
private boolean useAverage;
|
||||||
|
|
||||||
Measurement(String tagName, Database db, double sendDelta, long sendTimeDelta){
|
Measurement(String tagName, Database db){
|
||||||
this.tagName = tagName;
|
this.tagName = tagName;
|
||||||
average = 0;
|
average = 0;
|
||||||
total = 0;
|
total = 0;
|
||||||
@@ -38,24 +42,36 @@ public class Measurement {
|
|||||||
|
|
||||||
// Database code
|
// Database code
|
||||||
this.db = db;
|
this.db = db;
|
||||||
this.sendDelta = sendDelta;
|
|
||||||
this.lastSentValue = 0.0;
|
this.lastSentValue = 0.0;
|
||||||
this.sendTimeDelta = sendTimeDelta;
|
|
||||||
|
|
||||||
Document lastStored = this.db.getLastStoredMeasurement(this.tagName);
|
Document lastStored = this.db.getLastStoredMeasurement(this.tagName);
|
||||||
try {
|
try {
|
||||||
Date lastStoredTimestamp = (Date) lastStored.get("timestamp");
|
Date lastStoredTimestamp = (Date) lastStored.get("dateStored");
|
||||||
ZonedDateTime timestamp = ZonedDateTime.ofInstant(lastStoredTimestamp.toInstant(),
|
ZonedDateTime timestamp = ZonedDateTime.ofInstant(lastStoredTimestamp.toInstant(),
|
||||||
ZoneId.systemDefault());
|
ZoneId.systemDefault());
|
||||||
if (isToday(timestamp)){
|
if (isToday(timestamp)){
|
||||||
this.average = lastStored.getDouble("dailyAverage");
|
this.average = lastStored.getDouble("averageValue");
|
||||||
this.total = lastStored.getDouble("dailyTotal");
|
this.total = lastStored.getDouble("totalValue");
|
||||||
this.lastSentValue = lastStored.getDouble("currentValue");
|
// this.lastSentValue = lastStored.getDouble("currentValue");
|
||||||
this.dailyMax = lastStored.getDouble("maxDailyValue");
|
this.dailyMax = lastStored.getDouble("maxValue");
|
||||||
this.dailyMin = lastStored.getDouble("minDailyValue");
|
this.dailyMin = lastStored.getDouble("minValue");
|
||||||
this.lastSentTimestamp = timestamp.toEpochSecond();
|
this.sendDelta = lastStored.getDouble("storeDelta");
|
||||||
|
this.sendTimeDelta = lastStored.getLong("storeTime");
|
||||||
|
this.units = lastStored.getString("units");
|
||||||
|
// this.lastSentTimestamp = timestamp.toEpochSecond();
|
||||||
|
Document values = (Document) lastStored.get("values");
|
||||||
|
Object[] hours = values.keySet().toArray();
|
||||||
|
String maxHour = (String) hours[hours.length - 1];
|
||||||
|
Document maxHourDoc = (Document) values.get(maxHour);
|
||||||
|
Object[] minutes = maxHourDoc.keySet().toArray();
|
||||||
|
String maxMinute = (String) minutes[minutes.length - 1];
|
||||||
|
this.lastSentValue = maxHourDoc.getDouble(maxMinute);
|
||||||
this.numMeasurements = lastStored.getLong("numMeasurements");
|
this.numMeasurements = lastStored.getLong("numMeasurements");
|
||||||
System.out.println("Using stored value from " + timestamp.toString() + " for " + this.tagName);
|
|
||||||
|
|
||||||
|
System.out.println("Using stored value from " + ZonedDateTime.of(timestamp.getYear(),
|
||||||
|
timestamp.getMonthValue(), timestamp.getDayOfMonth(), Integer.parseInt(maxHour),
|
||||||
|
Integer.parseInt(maxMinute), 0, 0, timestamp.getZone()).toString() + " for " + this.tagName);
|
||||||
} else {
|
} else {
|
||||||
System.out.println("Cannot use stored value from " + timestamp.toString() + " for " + this.tagName);
|
System.out.println("Cannot use stored value from " + timestamp.toString() + " for " + this.tagName);
|
||||||
}
|
}
|
||||||
@@ -65,17 +81,6 @@ public class Measurement {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Measurement(String tagName, boolean storeInDatabase){
|
|
||||||
// this.tagName = tagName;
|
|
||||||
// average = 0;
|
|
||||||
// total = 0;
|
|
||||||
// numMeasurements = 0;
|
|
||||||
// dailyMax = Double.MIN_VALUE;
|
|
||||||
// dailyMin = Double.MAX_VALUE;
|
|
||||||
//
|
|
||||||
// // Database code
|
|
||||||
// this.storeInDatabase = storeInDatabase;
|
|
||||||
// }
|
|
||||||
|
|
||||||
public double getCurrentValue() {
|
public double getCurrentValue() {
|
||||||
return currentValue;
|
return currentValue;
|
||||||
@@ -109,6 +114,50 @@ public class Measurement {
|
|||||||
return dailyMin;
|
return dailyMin;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public double getSendDelta() {
|
||||||
|
return sendDelta;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSendDelta(double sendDelta) {
|
||||||
|
this.sendDelta = sendDelta;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getSendTimeDelta() {
|
||||||
|
return sendTimeDelta;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSendTimeDelta(long sendTimeDelta) {
|
||||||
|
this.sendTimeDelta = sendTimeDelta;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUnits() {
|
||||||
|
return units;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUnits(String units) {
|
||||||
|
this.units = units;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isUseTotal() {
|
||||||
|
return useTotal;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUseTotal(boolean useTotal) {
|
||||||
|
this.useTotal = useTotal;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isUseAverage() {
|
||||||
|
return useAverage;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUseAverage(boolean useAverage) {
|
||||||
|
this.useAverage = useAverage;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private static boolean isToday(ZonedDateTime inpZDT){
|
private static boolean isToday(ZonedDateTime inpZDT){
|
||||||
ZonedDateTime now = ZonedDateTime.now();
|
ZonedDateTime now = ZonedDateTime.now();
|
||||||
if (now.toLocalDate().equals(inpZDT.toLocalDate())){
|
if (now.toLocalDate().equals(inpZDT.toLocalDate())){
|
||||||
|
|||||||
@@ -11,20 +11,20 @@ import java.time.ZonedDateTime;
|
|||||||
public class POC implements Runnable{
|
public class POC implements Runnable{
|
||||||
protected Well thisWell;
|
protected Well thisWell;
|
||||||
private Thread t;
|
private Thread t;
|
||||||
private boolean ioEnabled;
|
boolean ioEnabled;
|
||||||
|
|
||||||
POC(String dbHostname){
|
POC(String dbHostname){
|
||||||
ioEnabled = true;
|
ioEnabled = true;
|
||||||
thisWell = new Well(dbHostname, 0, 1, 7);
|
thisWell = new Well(dbHostname, 1, 2);
|
||||||
thisWell.getWellSetup();
|
thisWell.getWellSetup();
|
||||||
}
|
}
|
||||||
|
|
||||||
POC(String simFileName, boolean ioEnabled, String dbHostname){
|
POC(String simFileName, boolean ioEnabled, String dbHostname){
|
||||||
this.ioEnabled = ioEnabled;
|
this.ioEnabled = ioEnabled;
|
||||||
if (this.ioEnabled) {
|
if (this.ioEnabled) {
|
||||||
thisWell = new Well(dbHostname, simFileName,0, 1, 7);
|
thisWell = new Well(dbHostname, simFileName,1, 2);
|
||||||
} else {
|
} else {
|
||||||
thisWell = new Well(dbHostname, simFileName,99, 99, 99);
|
thisWell = new Well(dbHostname, simFileName,99, 99);
|
||||||
}
|
}
|
||||||
thisWell.getWellSetup();
|
thisWell.getWellSetup();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package com.henrypump.poc;
|
package com.henrypump.poc;
|
||||||
|
|
||||||
|
|
||||||
|
import com.henrypump.io.AnalogIn;
|
||||||
|
import com.henrypump.io.MuxSetup;
|
||||||
import de.vandermeer.asciitable.v2.RenderedTable;
|
import de.vandermeer.asciitable.v2.RenderedTable;
|
||||||
import de.vandermeer.asciitable.v2.V2_AsciiTable;
|
import de.vandermeer.asciitable.v2.V2_AsciiTable;
|
||||||
import de.vandermeer.asciitable.v2.render.V2_AsciiTableRenderer;
|
import de.vandermeer.asciitable.v2.render.V2_AsciiTableRenderer;
|
||||||
@@ -16,12 +18,16 @@ import java.io.FileNotFoundException;
|
|||||||
import java.io.FileReader;
|
import java.io.FileReader;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.file.*;
|
import java.nio.file.*;
|
||||||
|
import java.time.Duration;
|
||||||
|
import java.time.Instant;
|
||||||
import java.time.ZonedDateTime;
|
import java.time.ZonedDateTime;
|
||||||
import java.time.temporal.ChronoUnit;
|
import java.time.temporal.ChronoUnit;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import static java.lang.Math.*;
|
import static java.lang.Math.*;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by patrickjmcd on 1/31/17.
|
* Created by patrickjmcd on 1/31/17.
|
||||||
*/
|
*/
|
||||||
@@ -34,6 +40,7 @@ public class Well {
|
|||||||
/* IO */
|
/* IO */
|
||||||
private AnalogIn inclinometer;
|
private AnalogIn inclinometer;
|
||||||
private AnalogIn loadCell;
|
private AnalogIn loadCell;
|
||||||
|
MuxSetup ioMux = new MuxSetup();
|
||||||
private double currentSurfacePosition;
|
private double currentSurfacePosition;
|
||||||
private double currentSurfaceLoad;
|
private double currentSurfaceLoad;
|
||||||
private double currentDownholePosition;
|
private double currentDownholePosition;
|
||||||
@@ -201,20 +208,20 @@ public class Well {
|
|||||||
private long minutesSinceTimerStart_last = 0;
|
private long minutesSinceTimerStart_last = 0;
|
||||||
|
|
||||||
|
|
||||||
Well(String dbHostname, int inclinometerChannel, int loadCellChannel, int runCommandChannel){
|
Well(String dbHostname, int inclinometerChannel, int loadCellChannel){
|
||||||
this.wellName = wellName;
|
this.wellName = wellName;
|
||||||
db = new Database(dbHostname);
|
db = new Database(dbHostname);
|
||||||
strokesLifetime = db.getLastStrokeNum() + 1;
|
strokesLifetime = db.getLastStrokeNum() + 1;
|
||||||
currentCard = new Card(strokesLifetime);
|
currentCard = new Card(strokesLifetime);
|
||||||
inclinometer = new AnalogIn(inclinometerChannel, 0, 1020, 0, 145);
|
inclinometer = new AnalogIn(inclinometerChannel, 0, 65535, 0, 145);
|
||||||
loadCell = new AnalogIn(loadCellChannel, 0, 1020, 0, 50000);
|
loadCell = new AnalogIn(loadCellChannel, 0, 65535, 0, 50000);
|
||||||
|
|
||||||
initializeMeasurements();
|
initializeMeasurements();
|
||||||
initializeSetpoints();
|
initializeSetpoints();
|
||||||
db.newRunStatus("Boot", "io");
|
db.newRunStatus("Boot", "io");
|
||||||
}
|
}
|
||||||
|
|
||||||
Well(String dbHostname, String simFileName, int inclinometerChannel, int loadCellChannel, int runCommandChannel){
|
Well(String dbHostname, String simFileName, int inclinometerChannel, int loadCellChannel){
|
||||||
this.wellName = wellName;
|
this.wellName = wellName;
|
||||||
sim = new Simulation(simFileName);
|
sim = new Simulation(simFileName);
|
||||||
db = new Database(dbHostname);
|
db = new Database(dbHostname);
|
||||||
@@ -228,6 +235,32 @@ public class Well {
|
|||||||
db.newRunStatus("Boot", "commandline");
|
db.newRunStatus("Boot", "commandline");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private int[] calibrateInclinometer(){
|
||||||
|
System.out.println("Calibrating inclinometer...");
|
||||||
|
Instant startTime = Instant.now();
|
||||||
|
int maxRaw = Integer.MIN_VALUE;
|
||||||
|
int minRaw = Integer.MAX_VALUE;
|
||||||
|
while (Duration.between(startTime, Instant.now()).toMillis() < 30000){
|
||||||
|
inclinometer.read(ioMux);
|
||||||
|
if (inclinometer.getRawValue() > maxRaw){
|
||||||
|
maxRaw = inclinometer.getRawValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (inclinometer.getRawValue() < minRaw){
|
||||||
|
minRaw = inclinometer.getRawValue();
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
Thread.sleep(10);
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
int minMax[] = new int[]{minRaw, maxRaw};
|
||||||
|
System.out.println("Inclinometer Min: " + minRaw + ", Inclinometer Max: " + maxRaw);
|
||||||
|
return minMax;
|
||||||
|
};
|
||||||
|
|
||||||
private void initializeSetpoints(){
|
private void initializeSetpoints(){
|
||||||
/**
|
/**
|
||||||
* intializeSetpoints
|
* intializeSetpoints
|
||||||
@@ -318,26 +351,167 @@ public class Well {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void initializeMeasurements(){
|
private void initializeMeasurements(){
|
||||||
strokeSpeed = new Measurement("Stroke Speed", db, 0.5, 600);
|
strokeSpeed = new Measurement("Stroke Speed", db);
|
||||||
downholeGrossStroke = new Measurement("Downhole Gross Stroke", db, 0.5, 600);
|
if (strokeSpeed.getUnits() == null) {
|
||||||
downholeNetStroke = new Measurement("Downhole Net Stroke", db, 0.5, 600);
|
strokeSpeed.setUnits("SPM");
|
||||||
fluidLevel = new Measurement("Fluid Level", db, 10, 600);
|
strokeSpeed.setSendDelta(0.5);
|
||||||
fluidLoad = new Measurement("Fluid Load", db, 20, 600);
|
strokeSpeed.setSendTimeDelta(600);
|
||||||
inflowRate = new Measurement("Inflow Rate", db, 0.5, 600);
|
strokeSpeed.setUseAverage(true);
|
||||||
peakPolishedRodLoad = new Measurement("Peak PRL", db, 50, 600);
|
strokeSpeed.setUseTotal(false);
|
||||||
minPolishedRodLoad = new Measurement("Min PRL", db, 50, 600);
|
}
|
||||||
percentRun = new Measurement("Percent Run", db, 1.0, 600);
|
|
||||||
polishedRodHP = new Measurement("Polished Rod HP", db, 0.25, 600);
|
downholeGrossStroke = new Measurement("Downhole Gross Stroke", db);
|
||||||
pumpHP = new Measurement("Pump HP", db, 0.25, 600);
|
if (downholeGrossStroke.getUnits() == null) {
|
||||||
fluidProduced = new Measurement("Fluid Produced", db, 1.0, 600);
|
downholeGrossStroke.setUnits("in.");
|
||||||
fluidProducedAdjusted = new Measurement("Fluid Produced (adjusted)", db, 1.0, 600);
|
downholeGrossStroke.setSendDelta(0.5);
|
||||||
oilProduced = new Measurement("Oil Produced", db, 1.0, 600);
|
downholeGrossStroke.setSendTimeDelta(600);
|
||||||
waterProduced = new Measurement("Water Produced", db, 1.0, 600);
|
downholeGrossStroke.setUseAverage(true);
|
||||||
gasProduced = new Measurement("Gas Produced", db, 1.0, 600);
|
downholeGrossStroke.setUseTotal(false);
|
||||||
pumpIntakePressure = new Measurement("Pump Intake Pressure", db, 5.0, 600);
|
}
|
||||||
surfaceStrokeLength = new Measurement("Surface Stroke", db, 0.5, 1800);
|
downholeNetStroke = new Measurement("Downhole Net Stroke", db);
|
||||||
tubingMovement = new Measurement("Tubing Movement", db, 0.5, 600);
|
if (downholeNetStroke.getUnits() == null) {
|
||||||
pumpFillPercent = new Measurement("Pump Fill Percent", db, 0.5, 600);
|
downholeNetStroke.setUnits("in.");
|
||||||
|
downholeNetStroke.setSendDelta(0.5);
|
||||||
|
downholeNetStroke.setSendTimeDelta(600);
|
||||||
|
downholeNetStroke.setUseAverage(true);
|
||||||
|
downholeNetStroke.setUseTotal(false);
|
||||||
|
}
|
||||||
|
fluidLevel = new Measurement("Fluid Level", db);
|
||||||
|
if (fluidLevel.getUnits() == null) {
|
||||||
|
fluidLevel.setUnits("ft.");
|
||||||
|
fluidLevel.setSendDelta(10.0);
|
||||||
|
fluidLevel.setSendTimeDelta(600);
|
||||||
|
fluidLevel.setUseAverage(true);
|
||||||
|
fluidLevel.setUseTotal(false);
|
||||||
|
}
|
||||||
|
fluidLoad = new Measurement("Fluid Load", db);
|
||||||
|
if (fluidLoad.getUnits() == null) {
|
||||||
|
fluidLoad.setUnits("lbs.");
|
||||||
|
fluidLoad.setSendDelta(20.0);
|
||||||
|
fluidLoad.setSendTimeDelta(600);
|
||||||
|
fluidLoad.setUseAverage(true);
|
||||||
|
fluidLoad.setUseTotal(false);
|
||||||
|
}
|
||||||
|
inflowRate = new Measurement("Inflow Rate", db);
|
||||||
|
if (inflowRate.getUnits() == null) {
|
||||||
|
inflowRate.setUnits("BBL/day");
|
||||||
|
inflowRate.setSendDelta(0.5);
|
||||||
|
inflowRate.setSendTimeDelta(600);
|
||||||
|
inflowRate.setUseAverage(true);
|
||||||
|
inflowRate.setUseTotal(false);
|
||||||
|
}
|
||||||
|
peakPolishedRodLoad = new Measurement("Peak PRL", db);
|
||||||
|
if (peakPolishedRodLoad.getUnits() == null) {
|
||||||
|
peakPolishedRodLoad.setUnits("lbs.");
|
||||||
|
peakPolishedRodLoad.setSendDelta(50);
|
||||||
|
peakPolishedRodLoad.setSendTimeDelta(600);
|
||||||
|
peakPolishedRodLoad.setUseAverage(true);
|
||||||
|
peakPolishedRodLoad.setUseTotal(false);
|
||||||
|
}
|
||||||
|
minPolishedRodLoad = new Measurement("Min PRL", db);
|
||||||
|
if (minPolishedRodLoad.getUnits() == null) {
|
||||||
|
minPolishedRodLoad.setUnits("lbs.");
|
||||||
|
minPolishedRodLoad.setSendDelta(50.0);
|
||||||
|
minPolishedRodLoad.setSendTimeDelta(600);
|
||||||
|
minPolishedRodLoad.setUseAverage(true);
|
||||||
|
minPolishedRodLoad.setUseTotal(false);
|
||||||
|
}
|
||||||
|
percentRun = new Measurement("Percent Run", db);
|
||||||
|
if (percentRun.getUnits() == null) {
|
||||||
|
percentRun.setUnits("%");
|
||||||
|
percentRun.setSendDelta(0.5);
|
||||||
|
percentRun.setSendTimeDelta(600);
|
||||||
|
percentRun.setUseAverage(false);
|
||||||
|
percentRun.setUseTotal(false);
|
||||||
|
}
|
||||||
|
polishedRodHP = new Measurement("Polished Rod HP", db);
|
||||||
|
if (polishedRodHP.getUnits() == null) {
|
||||||
|
polishedRodHP.setUnits("HP");
|
||||||
|
polishedRodHP.setSendDelta(0.25);
|
||||||
|
polishedRodHP.setSendTimeDelta(600);
|
||||||
|
polishedRodHP.setUseAverage(true);
|
||||||
|
polishedRodHP.setUseTotal(false);
|
||||||
|
}
|
||||||
|
pumpHP = new Measurement("Pump HP", db);
|
||||||
|
if (pumpHP.getUnits() == null) {
|
||||||
|
pumpHP.setUnits("HP");
|
||||||
|
pumpHP.setSendDelta(0.25);
|
||||||
|
pumpHP.setSendTimeDelta(600);
|
||||||
|
pumpHP.setUseAverage(true);
|
||||||
|
pumpHP.setUseTotal(false);
|
||||||
|
}
|
||||||
|
fluidProduced = new Measurement("Fluid Produced", db);
|
||||||
|
if (fluidProduced.getUnits() == null) {
|
||||||
|
fluidProduced.setUnits("BBL");
|
||||||
|
fluidProduced.setSendDelta(1.0);
|
||||||
|
fluidProduced.setSendTimeDelta(600);
|
||||||
|
fluidProduced.setUseAverage(true);
|
||||||
|
fluidProduced.setUseTotal(true);
|
||||||
|
}
|
||||||
|
fluidProducedAdjusted = new Measurement("Fluid Produced (adjusted)", db);
|
||||||
|
if (fluidProducedAdjusted.getUnits() == null) {
|
||||||
|
fluidProducedAdjusted.setUnits("BBL");
|
||||||
|
fluidProducedAdjusted.setSendDelta(1.0);
|
||||||
|
fluidProducedAdjusted.setSendTimeDelta(600);
|
||||||
|
fluidProducedAdjusted.setUseAverage(true);
|
||||||
|
fluidProducedAdjusted.setUseTotal(true);
|
||||||
|
}
|
||||||
|
oilProduced = new Measurement("Oil Produced", db);
|
||||||
|
if (oilProduced.getUnits() == null) {
|
||||||
|
oilProduced.setUnits("BBL");
|
||||||
|
oilProduced.setSendDelta(0.5);
|
||||||
|
oilProduced.setSendTimeDelta(600);
|
||||||
|
oilProduced.setUseAverage(true);
|
||||||
|
oilProduced.setUseTotal(true);
|
||||||
|
}
|
||||||
|
waterProduced = new Measurement("Water Produced", db);
|
||||||
|
if (waterProduced.getUnits() == null) {
|
||||||
|
waterProduced.setUnits("BBL");
|
||||||
|
waterProduced.setSendDelta(1.0);
|
||||||
|
waterProduced.setSendTimeDelta(600);
|
||||||
|
waterProduced.setUseAverage(true);
|
||||||
|
waterProduced.setUseTotal(true);
|
||||||
|
}
|
||||||
|
gasProduced = new Measurement("Gas Produced", db);
|
||||||
|
if (gasProduced.getUnits() == null) {
|
||||||
|
gasProduced.setUnits("MCF");
|
||||||
|
gasProduced.setSendDelta(1.0);
|
||||||
|
gasProduced.setSendTimeDelta(600);
|
||||||
|
gasProduced.setUseAverage(true);
|
||||||
|
gasProduced.setUseTotal(true);
|
||||||
|
}
|
||||||
|
pumpIntakePressure = new Measurement("Pump Intake Pressure", db);
|
||||||
|
if (pumpIntakePressure.getUnits() == null) {
|
||||||
|
pumpIntakePressure.setUnits("PSI");
|
||||||
|
pumpIntakePressure.setSendDelta(5.0);
|
||||||
|
pumpIntakePressure.setSendTimeDelta(600);
|
||||||
|
pumpIntakePressure.setUseAverage(true);
|
||||||
|
pumpIntakePressure.setUseTotal(false);
|
||||||
|
}
|
||||||
|
surfaceStrokeLength = new Measurement("Surface Stroke", db);
|
||||||
|
if (surfaceStrokeLength.getUnits() == null) {
|
||||||
|
surfaceStrokeLength.setUnits("in.");
|
||||||
|
surfaceStrokeLength.setSendDelta(0.5);
|
||||||
|
surfaceStrokeLength.setSendTimeDelta(600);
|
||||||
|
surfaceStrokeLength.setUseAverage(true);
|
||||||
|
surfaceStrokeLength.setUseTotal(false);
|
||||||
|
}
|
||||||
|
tubingMovement = new Measurement("Tubing Movement", db);
|
||||||
|
if (tubingMovement.getUnits() == null) {
|
||||||
|
tubingMovement.setUnits("in.");
|
||||||
|
tubingMovement.setSendDelta(0.5);
|
||||||
|
tubingMovement.setSendTimeDelta(600);
|
||||||
|
tubingMovement.setUseAverage(true);
|
||||||
|
tubingMovement.setUseTotal(false);
|
||||||
|
}
|
||||||
|
pumpFillPercent = new Measurement("Pump Fill Percent", db);
|
||||||
|
if (pumpFillPercent.getUnits() == null) {
|
||||||
|
pumpFillPercent.setUnits("%");
|
||||||
|
pumpFillPercent.setSendDelta(1.0);
|
||||||
|
pumpFillPercent.setSendTimeDelta(600);
|
||||||
|
pumpFillPercent.setUseAverage(true);
|
||||||
|
pumpFillPercent.setUseTotal(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public double getDt() {
|
public double getDt() {
|
||||||
@@ -692,6 +866,8 @@ public class Well {
|
|||||||
strokesSinceStart = 0;
|
strokesSinceStart = 0;
|
||||||
pumpStartTime = ZonedDateTime.now();
|
pumpStartTime = ZonedDateTime.now();
|
||||||
db.newRunStatus(getRunStatusString(), initiator);
|
db.newRunStatus(getRunStatusString(), initiator);
|
||||||
|
int[] inclMinMax = calibrateInclinometer();
|
||||||
|
inclinometer = new AnalogIn(inclinometer.getChannel(), inclMinMax[0], inclMinMax[1], inclinometer.getEuMin(), inclinometer.getEuMax());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1351,8 +1527,8 @@ public class Well {
|
|||||||
|
|
||||||
public void eval(){
|
public void eval(){
|
||||||
checkSafeties();
|
checkSafeties();
|
||||||
currentSurfacePosition = inclinometer.readScaled();
|
currentSurfacePosition = inclinometer.read(ioMux);
|
||||||
currentSurfaceLoad = loadCell.readScaled();
|
currentSurfaceLoad = loadCell.read(ioMux);
|
||||||
LPStatus lastPoint = calc(currentSurfacePosition, currentSurfaceLoad);
|
LPStatus lastPoint = calc(currentSurfacePosition, currentSurfaceLoad);
|
||||||
if (lastPoint.getStatus() == GOOD_STATUS){
|
if (lastPoint.getStatus() == GOOD_STATUS){
|
||||||
currentDownholePosition = lastPoint.getPosition();
|
currentDownholePosition = lastPoint.getPosition();
|
||||||
@@ -1415,8 +1591,8 @@ public class Well {
|
|||||||
|
|
||||||
public void eval(int simPoint){
|
public void eval(int simPoint){
|
||||||
checkSafeties();
|
checkSafeties();
|
||||||
currentSurfacePosition = inclinometer.readScaledSim(sim.getPositionAtIndex(simPoint));
|
currentSurfacePosition = inclinometer.readSim(sim.getPositionAtIndex(simPoint));
|
||||||
currentSurfaceLoad = loadCell.readScaledSim(sim.getLoadAtIndex(simPoint));
|
currentSurfaceLoad = loadCell.readSim(sim.getLoadAtIndex(simPoint));
|
||||||
|
|
||||||
LPStatus lastPoint = calc(currentSurfacePosition, currentSurfaceLoad);
|
LPStatus lastPoint = calc(currentSurfacePosition, currentSurfaceLoad);
|
||||||
if (lastPoint.getStatus() == GOOD_STATUS){
|
if (lastPoint.getStatus() == GOOD_STATUS){
|
||||||
@@ -1509,7 +1685,7 @@ public class Well {
|
|||||||
|
|
||||||
|
|
||||||
public static void main( String[] args ){
|
public static void main( String[] args ){
|
||||||
Well thisWell = new Well(args[1], 99, 99, 99);
|
Well thisWell = new Well(args[1], 99, 99);
|
||||||
thisWell.getWellSetup();
|
thisWell.getWellSetup();
|
||||||
thisWell.printTapers();
|
thisWell.printTapers();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user