-
-
Notifications
You must be signed in to change notification settings - Fork 0
Developer Notes
ELS is written for Java version 19+. The resulting jar is completely self-contained. ELS runs on any version 19 or newer of either Oracle Java or the OpenJDK. The distribution files in deploy/ contain an embedded JRE from the OpenJDK Project.
ELS is developed using JetBrains Intellij IDEA. Eclipse and Netbeans users can adapt the project easily.
Built using:
- JetBrains IntelliJ IDE, https://www.jetbrains.com/idea/
- JFormDesigner, https://www.formdev.com/jformdesigner/doc/
- Actual Installer, for the Windows installer, https://www.actualinstaller.com/
- appbundler, Ant task for the MacOS .app, https://github.com/TheInfiniteKind/appbundler
- DMG Canvas, for the MacOS DMG, https://www.araelium.com/dmgcanvas
With open source components from FormDev:
- FlatLaf look 'n feel, https://www.formdev.com/flatlaf/
- https://github.com/JFormDesigner/FlatLaf
See also:
- https://github.com/JFormDesigner/FlatLaf/tree/main/flatlaf-extras
- https://github.com/JFormDesigner/svgSalamander
In the interest of readability and extensibility some portions of ELS are written-out in "long hand" code. Heavy abstraction and terse "denso-code" have been avoided, while other areas are more object-oriented. To that end many data elements do not have one or more layers of getters and setters. Instead the longer, direct, more descriptive and readable, approach has been used (right or wrong).
The SFTP client is implemented using Jsch : Java Secure Channel.
The SFTP server implementation utilizes Apache MINA Project technology.
The STTY implementation is entirely custom. The command set available is easily extensible. Commands are used by both automated and interactive (-r M and -r T) sessions in a request/response REST style. Interactive sessions display a built-in terminal developed in Java Swing. The Look 'n Feel of the terminal depends on the operating system. The default LnF supported by the installed Java VM is used by default. The LnF used may be changed, see the Communications How-To for details.
All remote communication is encrypted. Remote being not on the local computer where two systems running ELS are being used.
The mock directory contains pre-set publisher and subscriber collections and hint files to support testing and provide a completely self-contained development and test environment. The mock/scripts/ directory has many scripts to perform application-level tests.
These scripts show many of the various ways ELS may be executed using different combinations of options. See the README in that directory for more information and a description of the testing sequence.
For IntelliJ users several run/debug configurations have been added that generally match the scripts in the mock/scripts/ directory organized in the same way and use the same mock/ data.
ELS is made up of several sub-projects, see https://github.com/Corionis
Unpack the artifacts/stage/rt-archives/ files into the desired matching linux, macos and/or windows stage directory.
To run the ELS Navigator GUI with the built-in test environment without building:
- Unpack the latest ELS from the deploy/ .tar.gz or .zip archive file into mock/ :
- Unpack only the contents inside the archive root directory ELS/
- Open the archive file
- Navigate into the ELS/ directory
- Highlight the contents
- Unpack them into the mock/ directory
- When done there should be mock/bin/ and mock/rt/
- Unpack only the contents inside the archive root directory ELS/
- Goto mock/scripts/<your O/S, linux/mac or windows>/
- Run
reset.batorreset.shthat creates a mock/test environment - Run
080-26_Navigator-local.bator080-26_Navigator-local.sh
To build ELS from sources use Apache ant in the root of the project directory:
-
ant -f els.xmlBuilds the ELS default target 'All' into the build/ directory and mock/bin/ for testing. -
ant -f els.xml All-DeployBuilds the ELS for all platforms into the build/ directory then copies the distribution files to the deploy/ directory used by ELS to check for updates and download the files.
Full deployment builds are done on Linux to capture executable file permissions correctly. The Windows installer .exe is then built on Windows.
In IntelliJ most/all Run configurations execute the els.xml stamp ant target.
The changes.html file is edited in the 'build' directory between deployments.
The docs/ directory contains the configuration and pages for the ELS user site.
- Various places in the code have several distinct sections, e.g. case statements and
initialization segments. In many of those places each "section" may be found by
searching for:
// ---
- Communications time-out handling and the many changes those areas have gone through
made finding the code locations more important. To find the relevant code locations
search for:
time-out
- The locations that handle the internal heartbeat for remote connections can be found
by searching the code for:
ping
- IntelliJ can be configured with additional To Do markers. In addition to those included
in the IDE the ELS project also uses:
- QUESTION case-sensitive
- IDEA case-sensitive
- ISSUE case-sensitive
- LEFTOFF case-sensitive, where we stopped for the nightdaynight
- TEST case-sensitive
- Debugging event actions with GUI controls like a combobox can cause the desktop to
appear to be locked-up. It is a conflict between the application and the IDE. To avoid
that issue add "-Dsun.awt.disablegrab=true" to the VM arguments.
See also: https://intellij-support.jetbrains.com/hc/en-us/community/posts/206248729-Tip-Avoid-frozen-X-when-debugging-an-UI
- The project is intended to work using relative paths and tries to avoid fully-qualified paths in JSON and configuration. However, if debugging from a directory other than ./mock/ is needed the JetBrains Run/Debug Configuration -Dlog4j.configurationFile= property must be changed to use a fully-qualified path, example: -Dlog4j.configurationFile=/home/acme/corionis/ELS/lib/log4j2.xml
ELS has significant potential. There are ideas going to Version 7 which have been written-up in Milestones.
Will be looking for one or more enthusiastic contributors to eventually take-over this project and carry it into the future. I'm a retired near 50-year engineer and scientist. ELS is a project of need and passion for cool tools and making neat stuff. Would love to find others who feel the same way.
If you would like help on your project leveraging ELS contact me by commenting on the latest "General" Discussion item.
See the ELS Discussions and join the conversation