Introducing Commander Mafi's PAPA

Cliffs:
- PAPA stands for "Pen And Paper Application"
- a Java Application, needs MySQL server (and Connector/J) to run properly
- see some screens in next posting for program features
- download version 1.3 from: http://hochladen.to/files/gnNggWB1424397228.html

change log v1.3:
- added features to backup and restore databases
- adapted the tutorial page to reflect the added features
- TPSR: changed overview sort order to "1. Shiptype name asc, 2. Port name asc"
- TGVM: added "Colony", "Prison Colony", "Theocracy" and "Imperial" as pre-populated data
- some minor tweaks and layout changes

change log v1.2:
- TPIR: added filtering for Demand and Supply indicators
- TSYS: added filtering for Economy and Security
- TSFR: added plausi-check on Influence (must be between 0 and 100)
- TGVM: added "Cooperative" to table's pre-population
- TITM: adjusted pre-defined Global Avg. Prices to recent server changes
- TPSR: adjusted OV layout

change log v1.1:
- enhanced handling of SQL statements for all tables (saving special characters like apostrophs in names and notes is now possible and potential SQL injection attacks are not possible anymore)
- TITM: fixed filtering by name
- TSFR: corrected header label

From the programs "About-Page":
Pen and Paper Application (PAPA) is written by Commander Mafi, beginning with the release of the Computer Space Simulation "Elite: Dangerous"(*). All copyrights of this program belong to the author. As the program's name suggests, it is an enhanced digital version of physical pen&paper notices used to store all kind of information a successful Elite commander comes across and might want to use at a later time.

The program is delivered "as is". The author takes no responsibilty for anything that is caused by the program. The program might be used and distributed free of charge and without changes only, as long as credits are given to the author.

The program was written in Java using Netbeans IDE on a Windows 7 computer. To run this program properly a MySQL Server must be correctly configured and accessible by the program. MySQL is a popular open source database and can be downloaded from mysql.com.

From the programs "Tutorial-Page":
Introduction

This program provides a graphics user interface to store and manipulate data a commander comes across the space simulation game "Elite: Dangerous". The data is stored in a MySQL database. Therefore a MySQL server must be accessible using an account with sufficient privileges/grants to access and manipulate the database. The program starts with default MySQL access data, which can be viewed and manipulated under the menu program->configuration

As to date the program is able to keep track of 16 different logical entities. Each is stored in it's own database table. The tables are put together in two different menu groups, the basic tables and the advanced tables. The basic tables have a predefined and more or less constant set of data records. New records will be added just occasionally, if at all. The group of the advanced tables consists of all tables which will potentially grow rapidly over time. New records will be added very often to these tables.

To access the table data you need first to connect to the database management system via the DBMS menu. Next step is to either select an existing database or create a new database. If a new database is created the basic tables are populated with a predefined set of records, for example all the known items for the commodity marktet.

A database can be exported and imported using the backup and restore features in the database menu. To restore a database the database must already exist, then the restore feature will replace it's content with the content from the backup file used for restoring. That way you can also copy one into another database or transfer a database from one computer to another. For the backup and restore features to work properly the operating system's global path variable must contain the path to the bin folder of your MySQL installation. Also before upgrading from on program version to a new version a database backup should be performed and the old program version should be saved to have a fallback strategy in case something goes wrong when updating the program.

Working with the database tables:
For every table a Graphics User Interface (GUI) exists, consisting of a tabbed pane in 3 parts: 1st Filterview (FV), 2nd Overview (OV) and 3rd Detailview (DV).

1. Filterview tasks:
The FV gives the user a way to define conditions for a "where" clause when trying to perform a "select" statement on the database table, limiting the result set to certain or a single record(s). If no changes on the initial FV's contents are made a "select" statement with no "where" clause is performed. The number of records resulting from the filter operation can be limited by setting a number of "max. Records". If the value of max records is set to 0, all available records will be selected.
1. a) The user may change the content of the FV's fields and/or execute the Filter operation. When the Filter operation was successful a resultset will be displayed in the OV. The user may perform tasks in the OV or switch back to the FV and rerun the Filter operation with different filter settings.
1. b) The user may create a new table record by directly switching to an initialized DV by pressing the "New" button.

2. Overview tasks:
The OV displays a number of records, one per row, resulting from previous operations performed in FV or DV. Currently the OV is non-editable. This may or may not change in a later program version.
2. a) Refreshing the OV will simply (re)run the Filter operation with the current FV settings. It's basically the same as executing the Filter again, just more convenient, because the user don't need to switch back to the FV.
2. b) The user may select one row from the OV and switch to DV, performing DV tasks with the selected row.

3. Detailview tasks:
The DV displays one record at a time. Depending on how the user accessed the DV, different tasks may be performed. Coming with a selected record from the OV, that record will be displayed in the DV and can be changed or deleted. Coming directly from the FV only creating a new record or reading and modifying single existing records will be possible.
3. a) Pressing the "Read" button will perform a "select" on the database using the given contents of the DV primary key fields (the rest of the DV will be ignored) and display the result in the DV.
3. b) Pressing the "Save" button will create a new record with the current contents of the DV or update the record if it already existed. Special checks may be performed prior to executing this operation to make sure the content of the DV is plausible. The OV will be updated accordingly.
3. c) Pressing the "Delete" button will delete the current DV's record after a successful plausi check. If the current record is still used by other table's records due to some foreign key constraints, the deletion will not be possible. Cascading deletion is not supported in the current program version. This may or may not change later. After successful deletion the OV will be updated accordingly and the DV will be re-initialized.
3. d) Pressing the "Init" button is basically the same as coming directly from FV. The DV will be re-initialized and the user may continue creating a new record or reading a single record in the DV.
3. e) Whenever the user changes the primary key the "Save" operation will be disabled until a "Read" operation was performed. This is to prevent accidently overwriting existing records with data from other records.

Commander Mafi
 
Last edited:
Program features:
10 basic tables...
01_basic_tables.jpg

... and 6 advanced tables to track data...
02_advanced_tables.jpg

... use highly customizable filter...
03_TPRT_FVs.jpg

... or overview to compare records...
04_TITM_OVs.jpg

... and detailview to create new or modify or delete existing records.
05_TSYS_DVs.jpg
 
Last edited:
- uploaded some more meaningful screens in previous posting to show program features
- deployed version 1.1, change log and download link in first posting
 

wolverine2710

Tutorial & Guide Writer
Nice tool. I've added it to the OP of the thread "Complete list of all third party tools, spreadsheets, manuals and other data sources.". So far no one has responded to this thread, which is a shame. Hopefully the thread gets a bit more exposure now.....

Name: Commander Mafi's PAPA
Author: mafi
Description: A handy replacement for what you would normally do with a pen and paper.
Website: N/A
Source available: NO
Thread: Introducing Commander Mafi's PAPA
Compatible with Release: Yes
Comments: By the author "This program provides a graphics user interface (GUI) to store and manipulate data a commander comes across the space simulation game "Elite Dangerous""

Monday the 5th of January. Added to the OP, section "Route planners"


I do have a question/suggestion. To run this tool one needs to have Mysql installed. I can imagine this scares of some commanders.
Is there a reason for not usin sqlite? That way no database has to be installed.
 
Last edited:
well, the first reason why i wrote this program was to exercise java and also to exercise database programming for myself. also in first instance i wrote this program just for my personal use. but after i put already quite some time and effort into it, i thought it might be a good idea to let others use it a well.
when i started the programm i tried to keep it as general and flexible as possible, in terms of software/platform as well as functionality (and still try to do so). but didn't put too much effort into finding the "optimal" architecture. i just started with java, because this runs on almost all platforms and i like it. and i took mysql because i needed a dbms, and mysql is a full sql dbms which is free to use as well. i just checked sqlite's description. that seems to have only limited functionalities (according to http://en.wikipedia.org/wiki/SQLite). so i still think mysql is the better choice, especially with potential database definition changes on existing databases in future releases or if i might implement handling of different user accounts with things like grants and privileges later. if people are afraid to install mysql, i don't mind, i am not earning money or anything with that program. who want's to use my program, fine. who doesn't want, fine too. there are already plenty of other nice tools out there...

just a short preview of what to expect here next:
i just programmed the trilateration algorithm to determine system coordinates for an unknown star system, deriving it from other known star system locations and their distances to the unknown system (see http://en.wikipedia.org/wiki/Trilateration). i will implement this in the next release as i find the time for it.
 
Last edited:

wolverine2710

Tutorial & Guide Writer
well, the first reason why i wrote this program was to exercise java and also to exercise database programming for myself. also in first instance i wrote this program just for my personal use. but after i put already quite some time and effort into it, i thought it might be a good idea to let others use it a well.
when i started the programm i tried to keep it as general and flexible as possible, in terms of software/platform as well as functionality (and still try to do so). but didn't put too much effort into finding the "optimal" architecture. i just started with java, because this runs on almost all platforms and i like it. and i took mysql because i needed a dbms, and mysql is a full sql dbms which is free to use as well. i just checked sqlite's description. that seems to have only limited functionalities (according to http://en.wikipedia.org/wiki/SQLite). so i still think mysql is the better choice, especially with potential database definition changes on existing databases in future releases or if i might implement handling of different user accounts with things like grants and privileges later. if people are afraid to install mysql, i don't mind, i am not earning money or anything with that program. who want's to use my program, fine. who doesn't want, fine too. there are already plenty of other nice tools out there...

just a short preview of what to expect here next:
i just programmed the trilateration algorithm to determine system coordinates for an unknown star system, deriving it from other known star system locations and their distances to the unknown system (see http://en.wikipedia.org/wiki/Trilateration). i will implement this in the next release as i find the time for it.

Thanks for the fast reply. Now I understand it a bit better. Wrt calculating coordinates. Please hop over to the crowd sourcing coordinates project (see sig or profile). They have a LOT of experience with it. Its not as simple as one would expect. Stars being on a 1/32 LY grid etc.
 
Thanks for the fast reply. Now I understand it a bit better. Wrt calculating coordinates. Please hop over to the crowd sourcing coordinates project (see sig or profile). They have a LOT of experience with it. Its not as simple as one would expect. Stars being on a 1/32 LY grid etc.

my trilateration algorithm is already coded and tested. i "only" need to implement it in PAPA now. i.e. adapting the database definition and gui. but this needs some additional actions too. like implementing database backup and recovery features as well as a program feature to upgrade the database definition from the current release to the next release. this will take some time.

i am also aware of the 1/32 ly issue and other issues regarding the trilateration algorithm. i will implement some quality measurement mechanism, to let the user decide if the calculated result is good enough to be saved. in my tests the result's maximum uncertainties were between 20% and 50% of 1/32 ly. that should be good enough to get reasonable results. for that i use 4 stars and their distances as input. that way i get 4 right (and 4 wrong) solutions and derive the final solution as average from it as well as the uncertainty intervals as the maximum differences between the 4 single solutions. another quality measurement is to calculate the volume of the prism (parallelepid, see section volume in http://en.wikipedia.org/wiki/Parallelepiped) defined by the 4 input stars. if this volume is non-zero, the 4 input stars are non-coplanar (see http://en.wikipedia.org/wiki/Coplanarity). an important requirement for getting a reasonable trilateration result. also the volume size can be treated as a measurement of the result's quality. the bigger the volume, the better the result's quality. beside this i will implemement an addional field in the database, where the calculation level will be saved. a newly calculated star location will always be one level higher than the highest level of the 4 input stars. that way users have the possibility to choose the 4 input stars in a way to keep that calculation level as low as possible. in best case always use the original fd coordinates from beta/gamma only. finally, when using 4 input stars to get 4 solutions, additional measurements can be implemented to find out, if one or more of the input parameters is/are corrupt.
 
Last edited:
I just deployed version 1.3, full change log and download link in first posting. It contains backup and restore features now (but still not the trilateration feature) to prepare for future releases with the necessary database definition changes to implement trilateration and other future enhancements.
 
No, it's not dead. Only the download link expired. I just renewed it. About further development: I will surely make further improvements like described in the previous postings and more. But at the moment I don't find the time for it and I also want to wait a bit until the dust settles a bit about the ED release, the first few major patches and the API which FD promised. Nevertheless I still use the program myself. To date my own database consists of 72 starsystems, 228 factions, 242 system-faction-references, 158 spaceports, 235 port-ship-references and 3122 port-item-referenences and it will continue growing slowly. For my personal playing style i don't need more program enhancements now. The result of that is that i spend my limited time playing ED rather than developing the program further. Sorry about that. As soon as I have my fully kitted dream ship, I probably will spend more time on program development again. :)
 

wolverine2710

Tutorial & Guide Writer
In the past your excellent tool, thread has been added to EDCodex. Before EDCodex was released on the 17th of August you have received in the period 5th - 10th of August a PM with an invitation and a special link. After registering and logging in you would automatically become owner of your entry. According to the admin tool(s) you haven't used the special link (yet). Perhaps you have missed the PM or have been (temporarily) away from ED. Its also possible you choose not to claim your entry. Note: Its also possible to assign another commander editing rights for your entry. In either case please send us a PM. You can find your EDCodex entry here.

Alternative way to get ownership
The special link will cease to function in the (near) future, for security reasons. Should you after that point want to become owner of your entry you can use the "Claim ownership" button. In that case please send biobob or myself a PM with the email addressed you used for registration - for verification. You can also use this procedure if you no longer have the PM.

What is EDCodex:
Its a website with a database of currently approx 215+ tools,threads,websites,videos for ED. Any one can and is encouraged to add entries there. EDCodex is and should be community-driven. EDCodex companion thread. Its equally suited for PC's, tablets and smartphones and has RSS feeds.

With kind regards,
Biobob
Wolverine2710
 
Back
Top Bottom