GithubHelp home page GithubHelp logo

history-research-environment / hre--history-research-environment Goto Github PK

View Code? Open in Web Editor NEW
32.0 17.0 6.0 175.87 MB

Main repo for HRE code

Home Page: https://historyresearchenvironment.org/

License: GNU Affero General Public License v3.0

genealogy history-management family-history-applications java multi-platform h2-database eclipse-rcp

hre--history-research-environment's Introduction

HRE HISTORY RESEARCH ENVIRONMENT

Towards a history of almost anything

1.1 HRE PROJECT AIMS - GENERAL

SUMMARY - APPLICATION GOALS:

  1. Build a modular, extendable application which manages the recording, analysis and reporting of research in any discipline associated with the history of any type of object

  2. Build an application complying with the GPL open source environment

  3. Build an application that will run on Windows, Macintosh and Linux operating systems with a single code base

  4. Use Java as the main implementation language

  5. Allow all text to be stored and manipulated as UTF-8 Unicode

  6. Enable the application to be extensible by the use of plug-ins that comply with the architecture and use the required registration and application interfaces

  7. The use of suitable GPL components is to be favored over the implementation of home-grown modules

  8. Application modules should be decoupled and testable within a suitable test framework

  9. The application will be able to be used in 2 modes:

    1. All components in a standalone installation, or

    2. A user interface running on a client computer with services being provided by an external server, not necessarily being cloud-based. NOTE: in this configuration there may be concurrent users of the database.

PROJECT BACKGROUND

The recording and analysis of historical records is a diverse subject, with the most common example being family history. However, there are two major issues with current family history applications and their position within the historical research landscape.

Firstly, they are constrained by their focus on the parenting of children and birth, death and marriage events. This family-centric focus imposes constraints on the types of data that can be recorded for later analysis and the types of inter-entity relationships that can be recorded. For instance, it is very difficult to present descriptions of the social family, with adoption, children by other partners, etc, and to represent a household versus a biological family. Many anthropological studies require a far wider definition of 'family'.

Secondly, most current family history applications are intentionally designed to focus on recording the history of individuals and their genetic relationships to other individuals. Such applications are not designed, for example, to record the history of an organisation as it went through structural re-organisation, takeovers, mergers, splits, CEO replacements, and so on. Some family history applications may allow creative customizations which can approximate recording such history, but this is unusual. Since their market is typically aimed at the casual family genealogist, these limitations are an inherent consequence of their goal to make the product simple and easy to use by that market for that one specific purpose. Such design limitations usually exclude more sophisticated features and tools desired by the more limited market of serious or professional family history researchers.

However, a more generic and sophisticated application could not only serve serious family history researchers, but could also extend its market to serious and professional researchers in many other fields of historical research.

Examples of such fields of research include the history of:

  • organisations, companies, political parties, associations, military units, trade unions, etc

  • medical conditions of communities, extended families, etc

  • conflicts (at any level), such as wars, social change, etc

  • anthropological groups (management of paternal/maternal kin-term distinctions, multiple naming streams, associated ‘significant others’, etc)

  • land, buildings, vessels, vehicles, etc (for owners, builders, architects, tenants, etc)

  • animal lineage, as in the breeding of dogs, cats, horses, whatever

  • botanical lineage, as in plant breeding

  • geographical regions, towns, villages, precincts, etc

  • investigations and research (as in police work, experimental science, etc)

  • art works - sculpture, music, film, radio, TV, drama, paintings, books (for artists, scripts, writers, players, producers, editors, restorers, etc)

  • legal cases and the characters/roles in them or affected by them

  • sporting competitions and events

All of these examples have similar underlying data storage and generic inter-relationship requirements, with the common elements being:

  • historical timeline of events

  • recording of evidence about these events

  • recording relationships of entities to those events and to other entities

  • analysis of the evidence to reach conclusions

  • preparation of reports, which may be research-field dependent, like the specialised relationship diagrams used in anthropology

  • documentation through the inclusion of documents, images, recordings, etc.

Thus the goal of the HRE project is the creation of a sophisticated application capable of supporting serious general historical research, rather than a simple application limited solely to the requirements of recording basic family history.

1.2 HRE AIMS - DATABASE

CHOICE OF DATABASE:

There are 3 classes of database use that need to be recognized: embedded single user, embeddable but multi-concurrent users and standalone TCP/IP networked. It is recognised that a single user database like SQLite would need too much extra code as a wrapper to allow for multi-concurrent users.

Although there are at least 3 other options, H2 (http://www.h2database.com/html/main.html) seems to be the most efficient available option.

DATABASE GOALS:

  1. The SQL database engine must be GPL (current choice being H2)

  2. There must be a database abstraction interface to allow replacement of the database engine if required in the future

  3. There will be a limit on the number of concurrent users of a single database (say 10)

  4. There will a limit on the number of records in any database table (say 10M)

  5. Every record of every user data table shall have a persistent record ID.

1.3 HRE AIMS – USER INTERFACE

USER INTERFACE:

  1. The presentation layer (user GUI and Report Generation) shall be able to operate in any supported natural language

  2. Language selection may be changed during application execution

  3. The user interface must be configurable to provide:

    1. Choice of content and layout with persistence of settings

    2. Choice of accessibility for vision, color and motor-skills available

    3. Choice of language

    4. Efficient pathways for common user workflows

    5. Balance of the use of screen real estate to achieve clarity of data presented

    6. Standard idioms of look and feel as used in browsers and in complex word processing and diagram drawing packages.

  4. All operations that may take a long time to complete must give status progress back to the user.

1.4 HRE AIMS – DATA MANAGEMENT

DATA MANAGEMENT:

  1. User files must be operating system independent in content

  2. The application must have facilities to import digital records in known discipline-related formats

  3. The application must have facilities to export digital records to known discipline-related formats

  4. All user data must have the capability to store alternative forms in any supported language

  5. The user must have the ability to “undo” at least the last data modifying command

  6. On a per session-basis, the user must be able identify what data has been changed, from what to what and by whom since the start of the session

  7. Selection and ordering of the focus of data manipulation:

    1. Manual selection and automated selection by use of filters must be provided

    2. Custom filters must be able to be saved and re-used.

  8. The report generator will:

    1. Provide default standard reports

    2. Permit users to create their own report templates

    3. Permit output to a number of word processing and other formats

    4. Permit creation of documents using larger page sizes (up to A0).

  9. All data management operations that may take a long time to complete must provide status progress back to the user.

1.5 HRE AIMS - INTEROPERABILITY

INTEROPERABILITY:

  1. To be able to export any data within the HRE database to XML format

  2. To provide functionality within the initial implementation that allows for the creation of plugin code to extend the functionality of HRE

  3. To provide plug-ins for genealogists to:

    1. Import project files created by The Master Genealogist v8.05 (and later) without loss of information and loss of an ability to use that data as it was in TMG

    2. Import GEDCOM v7 format files

    3. Export data from HRE that conforms to the GEDCOM v7 specifications

    4. Import data from other genealogical programs by use of the plug-in concept.

1.6 HRE IMPLEMENTATION STAGES

As this part is a complex document in its own right, refer to ‘1.6 Implementation Stages’ in the /Specifications folder.

hre--history-research-environment's People

Contributors

hreferg avatar michaelnmaggs avatar nilstolles avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hre--history-research-environment's Issues

Finalize New Project

A new project must be local. A server project should be created on the server.
An H2 database is created with the defined tables.
Load should happen, but is not possible at this moment in the project.
The project list should have the project model added, and the project navigator should be updated.

Icon sizes

Hi Don

Would it be possible to have the icons as 32*32, which is the best size for the Eclipse toolbar?

Br Michael

Build HRE v0.1 Skeleton

Create Maven/Tycho infrastructure
Add Menu definitions
Add code for project handling and settings

Finalize Open Project

Opening can have two flavours:

  1. Open from Project Navigator
  2. Open an existing project (Should be "Register")

HREDBADMIN Column RECORD_NUM not found

May 20, 2018 4:28:53 PM org.historyresearchenvironment.databaseadmin.providers.H2TableProvider select
SEVERE: Column "RECORD_NUM" not found; SQL statement:
SELECT * FROM PUBLIC.EXHIBIT WHERE RECORD_NUM = ? [42122-196]

In this case a message about invalid database should be given.

Keeping plugins on client and server side in sync

From @MichaelErichsen on September 13, 2017 13:16

HRE Projects can be dependent on different combinations of
plugins, etc. A Project must respond to a dependency request to list it
dependencies. How can the GUI download the GUI extras from the Server
and install those elements before it then attempts to open the HRE project.

Copied from original issue: MichaelErichsen/HRE--History-Research-Environment#10

Change server side code from using com.sun.net.httpserver.HttpServer to Jetty

This class is not meant as API:

[ERROR] Access restriction: The type 'HttpServer' is not API (restriction on classpath entry 'C:\Program Files\Java\jre1.8.0_172\lib\rt.jar')
[ERROR] C:\Users\michael\git\HRE--History-Research-Environment\HRE--History-Research-Environment\org.historyresearchenvironment\bundles\org.historyresearchenvironment.server\src\org\historyresearchenvironment\server\listeners\ServerRequestListener.java:[35]
[ERROR] final HttpServer server = HttpServer.create(new InetSocketAddress(preferences.getInt("SERVERPORT", 8000)),
[ERROR] 0);

It now prevents Maven from building HRE.

DDL Defects

Three tables are without primary keys:
CITN_TYPE_DEFNS
SUBSET_PAIR_DEFNS
SUBSET_SINGLE_DEFNS
Is that intentional or a defect?

Defect in DDL

Missing comma in

CREATE TABLE BIO_NAME_MAPS (
RECORD_NUM INTEGER NOT NULL,
SET_KEY SMALLINT NOT NULL,
COMMIT_PID INTEGER NOT NULL,
BIO_NAME_MAP_PID INTEGER NOT NULL,
IS_SYSTEM BOOLEAN,
PARENT_NAME_PID INTEGER,
PARENT_SUB_TYPE_KEY SMALLINT,
ELEMENT_TYPE_KEY SMALLINT,
SHARED INTEGER
INFERRED_SHARED INTEGER
)

Side-by-Side Visual Comparison of 2 Currently Open HRE Projects

From @MichaelErichsen on September 13, 2017 13:7

This is a very important research tool. But it has a number of difficulties in design and implementation. It is particularly aimed at situations where there exists 2 or more HRE Projects that have some potential common overlap in their Research Type data. But these HRE Projects are compiled by different users and are likely to contain data of additional non-overlapping Research Types.
[I perceive that this capability can only be achieved in the Eclipse RC GUI implemented cases, but others may know of a way that this may be overcome.]
The successive steps are to:

  1. From within a Project Selection GUI pane to select a HRE Project from any available Server (Local or Remote). This will need to have a recently visited Project list, a Server list and a search facility for Projects that exist on the known Servers. It will need to have an ability to add or delete Servers from the Server list. At the time of selection of a HRE Project to designate it as the First (default) or Second HRE Project. Each HRE Project to be displayed in a separate instance of the GUI.
  2. Both First and Second HRE Projects need to be selected before step 3 is activated.
  3. Open a third GUI pane or extend the GUI for the Second Project to enable marking of identified data structures of interest in the Second Project
  4. Perform an operation to copy and link the marked structures from the Second Project to the First Project
  5. A GUI action must be available to swap the First and Second Project roles in the comparison
  6. A GUI action must be available to select other HRE Projects for First Project and Second Project designations (with warnings about the need to save data changes before exiting any HRE Project).
    The conclusion is that the proposed Single HRE Project Technology Client-Server model can be extended to achieve the Side-by-Side Visual Comparison of 2 HRE Projects in the case of Eclipse RC GUI implementations.

Copied from original issue: MichaelErichsen/HRE--History-Research-Environment#8

Jython Support

From @MichaelErichsen on October 23, 2017 10:46

I would also be very interested within the Eclipse environment to be able to use Jython as a scripting language for report composition.

I would like to see this as a way where report scripts can be modified by more expert users to achieve bespoke reports.

Hence the concept would be that Jython would access the HRE Java components to sequence a report.

I understand that Jython scripts can also contain their own options selection GUI via Swing components initiated from the Jython script.

I don't want HRE to be limited to the rigid canned reports that we have in TMG.

(Robin)

Copied from original issue: MichaelErichsen/HRE--History-Research-Environment#31

Inconsistency between DDL and data in Excel sheet for T_152 V08a (M) Entity Name Tag Defns

The data sheet contains fields

VIEW_DATA_SCRIPT_GROUP_KEY | VIEW_DATA_SCRIPT_PID | MODIFY_DATA_SCRIPT_GROUP_KEY | MODIFY_DATA_SCRIPT_PID | DELETE_DATA_SCRIPT_GROUP_KEY | DELETE_DATA_SCRIPT_PID

which are empty, but which are there. This means that an export from Excel into a csv and a load into the H2 database fails with "Unexpected number of values. Data loading failed."

Is this intentional?

TLS certificates

From @MichaelErichsen on September 13, 2017 12:50

If we will run as a remote server, we need to handle TLS certificates

Copied from original issue: MichaelErichsen/HRE--History-Research-Environment#5

Defect in DDL

Missing comma in

CREATE TABLE DIGITALS (
RECORD_NUM INTEGER NOT NULL,
SET_KEY SMALLINT NOT NULL,
COMMIT_PID INTEGER NOT NULL,
DIGITAL_PID INTEGER NOT NULL,
IS_SYSTEM BOOLEAN,
VISIBLE_ID INTEGER,
SUB_TYPE_KEY SMALLINT,
BEST_NAME_PID INTEGER,
BEST_CREATE_PID INTEGER,
BEST_DESTROY_PID INTEGER,
BEST_IMAGE_PID INTEGER,
SURETY VARCHAR(10),
IS_INTERNAL BOOLEAN,
IS_BINARY BOOLEAN,
BINARY_CONTENT BLOB(2147483647),
CHAR_CONTENT CLOB(2147483647),
FILE_PATH VARCHAR(300),
PATH_IS_FULL BOOLEAN,
ENCODING_KEY SMALLINT,
IMAGE_WIDTH SMALLINT,
IMAGE_HEIGHT SMALLINT,
EDITED_COPY_PID INTEGER
FLAGS BINARY(100)
)

IP Multiuser configuration

From @MichaelErichsen on September 13, 2017 12:48

Jeg tenker meg at hvis vi bruker en port pr. bruker forbindelse og i HRE har
mange brukere logget inn på server,
så har vi muligens en begrensning for antall samtidig innloggede brukere.
Det kan bli mange porter som aktiveres.

Copied from original issue: MichaelErichsen/HRE--History-Research-Environment#4

GUI_ProjectOpen – Open a Project

The normal Eclipse way to do this is to have a table part with the projects, where the user can select actions on a selected project or for something that is not yet there.
Please see my implementation in the skeleton.

Br Michael

Defect in DDL

Invalid DDL statement in
-- Table 158
CCREATE TABLE TEMPLATE_TYPE_DEFNS (
RECORD_NUM INTEGER NOT NULL,
SET_KEY SMALLINT NOT NULL,
COMMIT_PID INTEGER NOT NULL,
TEMPLATE_TYPE_DEFN_PID INTEGER NOT NULL,
IS_SYSTEM BOOLEAN,
IS_MANDATORY BOOLEAN,
ENTITY_TYPE_KEY SMALLINT,
ENTITY_SUB_TYPE_KEY SMALLINT,
PUBLISH_TYPE_KEY SMALLINT,
REMINDER_KEY SMALLINT,
DISPLAY_ORDER SMALLINT,
IS_DEFAULT BOOLEAN,
SHOW BOOLEAN
);

Congratulations on the creation of this project and repository.

Welcome to Github 🥇

May the projects commits be bountiful and features abundant.

Cheers
Sam

PS: Whats with the name ( HRE-the-history-of-everything ) I was under the impression HRE stood for "History Research Environment" with the slogan "Towards the history of almost everything" or is this a non official repository and the real one is over here:

Which is a proper Organizational account as opposed to HREferg which is personal?

Server user administration

From @MichaelErichsen on September 13, 2017 13:17

Must be set up.
Perhaps in coordination with LDAP and AD?

Copied from original issue: MichaelErichsen/HRE--History-Research-Environment#11

Segmentation of large databases

From @MichaelErichsen on September 13, 2017 13:18

The file system prefix split: is used to split logical files into multiple physical files, for example so that a database can get larger
than the maximum file system size of the operating system. If the logical file is larger than the maximum file size, then the file
is split as follows:
• (first block, is always created)
• .1.part (second block)
More physical files (*.2.part, *.3.part) are automatically created / deleted if needed. The maximum physical file size of a block
is 2^30 bytes, which is also called 1 GiB or 1 GB. However this can be changed if required, by specifying the block size in the
file name. The file name format is: split:: where the file size per block is 2^x. For 1 MiB block sizes, use x = 20
(because 2^20 is 1 MiB). The following file name means the logical file is split into 1 MiB blocks: split:20:test.h2.db. An
example database URL for this case is jdbc:h2:split:20:~/test.

Copied from original issue: MichaelErichsen/HRE--History-Research-Environment#12

Icons

Hi

Eclipse prefers icons in the PNG format at 32*32 pixels.

Br Michael

Eclipse and plugin version control

From @MichaelErichsen on September 13, 2017 12:47

There will become a problem of keeping in sync if we independently
upgrade to new versions of various items. I think that this will need to
be discussed to ensure that we are all aware of the time to upgrade.

Copied from original issue: MichaelErichsen/HRE--History-Research-Environment#3

Code template and doc for Substitutions

Robin:

here would a need to implement an agreed set of APIs to the Substitution area and they would used in the skeleton a crude placeholder module was included. That would be replaced by the full one once it had been reasonably test in its sandpit. The Substitutions area would rely on another agreed set of APIs, to built by Michael to prove the storage of the template elementes and the database retrieval of values that Laney's code wanted to use, but at the start that can be ghosted in a sandpit.

THE PROPOSED TASK FOR LANEY (Overview - more detail later if agreed)

In TMG there are namestyle templates and sentences templates where a markup means to substitute that mark with a user data derived text string. The same concept applies in HRE with a more complete set of operators and larger environment from which retrieved values may be sourced. In HRE, the use of this mechanism is extended to error and warning messages, filter definitions, sorting definitions, memos with embedded Citations, selection of columns for tabular output and later in other types of report generation.

In HRE jargon this is the Substitutions area. The definition of and the evaluation of substitution templates becomes the core that provides the flexibility for the user to configure HRE to match their workflow needs. The substitutions area directly involves about 14 database tables and some auxiliary tables for each use. case.

The task would involve the GUI to create/edit/store/evaluate the template an the code required to manage the associated database tables (via APTs defined with Michael). In the process Business Rules level would need to provide validity checks for definition editing and execution.

Much of the preloading of the lookup tables in the database and the ability to store user data for any manual or importing from TMG will rely their being agreed structures and methods from the substitution area.

INTERACTIONS with the team
MICHAEL
(1) to continue with the structure of skeleton including GUI and other BR modules as required

(2) with LANEY jointly to define APIs for evaluation of templates for each type of use of Substitutions

(3) with Laney jointly defined APIs for the storage and retrieval of data related to definition and use of Substitutions.

LANEY
(1) to build the GUI for defining/editing/managing/validating any use of Substitutions

(2) code to evaluate substitution templates and return the content to the requester

ROBIN
(1) to provide additional documentation on the internals of Substitutions and their use cases.

(2) This documentation is currently being drafted to augment what has been already placed on GitHub

(3) To liaise with MICHAEL and LANEY to ensure the intention of the data model is achieved. It is quite likely that minor changes in the field set of some tables may need adjustment.

INTEGRATION

When LANEY's code has be tested in isolation and seems robust enough, then it can be integrated into the HRE skeleton.

There are other important tasks,
(a). dates and time intervals (Java),
(b). field and record validation rules (Jython)
that can start in the same way if others wish to be come involved.

Backup Comparison

From @MichaelErichsen on September 13, 2017 13:6

This is function that users often want to use to resolve apparent inconsistencies in a HRE Project.
PLEASE NOTE: This operation is explicitly limited to the comparison of backups of the same HRE Project over its life. It is not sensible or effective to try to do a computed difference between 2 HRE Projects that:
• may have some data in common
• are subject to differences in user standards and methods of data-entry
• include different research type plugins
It may be achieved by adding additional features to the Single HRE Project Open GUI. There may be some constraints with respect to the location of the backup file and the location of the Server of the already open HRE Project file. Depending on the implementation, there may be constraints like the exclusive access to the currently opened HRE Project file. The nature of the backup file may influence the feasibility of this operation. There are 2 forms that the backup file might take. If the backup is:

  1. A compressed copy of the HRE Project database – This requires the temporary opening of a second reconstituted HRE Project database on a server (preferably the server that is used for the currently opened HRE Project database)
  2. An XML Export file of the HRE Project Database – The current HRE Project could be also backed up as an XML Export file. This has the advantage that the comparison could be done at the XML level.
    This could be performed by appropriate GUI component or a free-standing HRE Tool. Michael wrote:
  3. Each of them exports their project as in the local project comparison. HRE compresses the XML export file to a zip format for them, so they can be emailed or FTP’ed to each other.
  4. Each of them can have HRE unzip and import the received XML file and proceed as in the local project comparison.

Copied from original issue: MichaelErichsen/HRE--History-Research-Environment#7

Perspectives

Add perspective handling.
Add a database administration perspective with the DBMADMIN parts.
Add a development perspective with the Javadoc in an internal browser part.
Add a user perspective with the sample views from issue #25 .

This can be copied from the mock up.

HREDBADMIN CSV Export Error

Exporting a table with a CLOB complains that a String cannot be cast to a CLOB.
Occurs in H2TableLNavigator
Surfaces in table DIGITALS

Defect in DDL

Missing underscore in

CREATE TABLE SUBSTN_COMMON_DEFNS (
RECORD_NUM INTEGER NOT NULL,
SET_KEY SMALLINT NOT NULL,
COMMIT_PID INTEGER NOT NULL,
SUBSTN_COMMON_DEFN_PID INTEGER NOT NULL,
IS SYSTEM BOOLEAN,
IS_DATA_RETRIEVAL BOOLEAN,
IS_VALUE_COMPARE BOOLEAN,
TOP_STEP_KEY SMALLINT,
REMINDER_KEY SMALLINT,
DISPLAY_ORDER SMALLINT,
SHOW BOOLEAN
)

Installation problem

The log displays the following:

Root exception:
java.nio.file.NoSuchFileException: c:\temp\hre-log.0.0.txt.lck

This is due to that HRE by default tries to create a log file in the directory c:\temp

GUI_ProjectBackup – Backup a Project

A project in TMG is a number of Firefox files.
A project in HRE is a single H2 database file.
This makes this much easier.
An unscientific test showed that zipped H2 databases shrunk to between two thirds and a few percent of the original files.
Just zipping and unzipping H2 files is the easiest solution.
Another way would be to export each table to cvs before zipping, which has the advantage of being readable outside of HRE and H2.

Help About

Update Help About to the description in 04.15 GUI_Help_AboutHRE 2018-05-31.pdf

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.