This is an old revision of the document!
AGTEK Access Server - Trackwork 2013
To support SmartTrack and Trackwork applications, the AGTEK Access server needs to change to accommodate new requirements. The first version of the server, written by external consultants, was a C++/Linux based server which had several issues. The second version of the server, written in Java/Linux, has been in production since 2009. A modified server implementation starting in 2014 is anticipated to support the track applications.
Story 0 - Leveling the base
We are anticipating that the trackwork will be significantly less than the original Java server implementation (2009) and should be less effort than the license extensions (2011). To prepare for the track extensions, the server needs to be in a relatively clean state. This will prevent any lingering server issues from introducing challenges to the track implementation.
The following items will set the base line for the track work:
Tag AgtekNet for pre-track work
Remove the remaining Box.net code.
Write report for keys created / month
Write report for checkouts / month
Write an autopruner for Apache tomcat
Enterprise work
Fix desktop session monitor
Op/second graph doesn't update correctly.
Add tab showing operation times, min, max, median (graph over time?)
Fix C++
API to use time_t 64 bit
Wildcard user searches, add support to AccessSupport/KeyForge
Upgrade the server runtime to Java 7, latest build
Read SmartTrack stories, extract server requirements
Server bugs
10 - Two checkouts in a row, more debugging?
7 - Performance stats? Basic collecting?
4 - Framework for purging licenselog, don't deploy
Story 1 - Base line
Provide the server base to support, at least, the capabilities required in SmartTrack.
Storage of normal tracks
Clean up
Remove TMM and TSM tables, drop table TMM; drop table TSM;
Remove RTK table, in each customer. drop table RTK; drop table RTKTRACK;
Remove RTK related tabs from customerView in com.agtek.support
Remove RTKTrack related tables from support tool.
Remove RTKTrackApi, protobuf
alter table TRACK set START, END, DISCOVERY, LARGESTGAP to bigint(20) ?
Add fix type to TRACK table, may be implied by
API
Add ability to migrate tracks to S3
-
Define constants for machine type
SmartTrack Management interface, CRUD directives
TrackAPI.CreateManagement directive
TrackAPI.DeleteManagement directive
TrackAPI.UpdatedManagement directive
TrackAPI.getManagementDirective()
TrackApi.getManagementDirective(StoredProject)
Remove Track fields; rejected_dop
. fix support display
Add Track field statistics | int(16)
Add support tool display options for stats
New track statistics, extend TrackDB for this too.
TrackStatistics
{
int track_id; // Handle of associated track
long moving_seconds; // delta seconds
long start_seconds; // absolute time
long end_seconds; // absolute time
long last_cycle_time; // delta seconds
long average_cycle_time; // delta seconds
int cycle_count;
boolean is_metric;
double volume; // CY for non-metric, M**3 for metric
double average_speed; // MPH for non-metric, KPH for metric
}
Add a new table to the customer database
TrackStatistics
+--------------------+------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+------------+------+-----+---------+----------------+
| handle | int(16) | NO | PRI | | auto_increment |
| track | int(16) | NO | | | |
| start_seconds | int(16) | NO | | | |
| end_seconds | int(16) | NO | | | |
| moving_seconds | int(16) | NO | | | |
| last_cycle_time | int(16) | NO | | | |
| average_cycle_time | int(16) | NO | | | |
| cycle_count | int(16) | NO | | | |
| is_metric | tinyint(1) | NO | | | |
| volume | float | NO | | | |
| average_speed | float | NO | | | |
+--------------------+------------+------+-----+---------+----------------+
Position Object extensions
Add compass to recorded points in track file, Position objects represent if they have compass.
Add fixtype field
Position
{
enum FixType {Auto, DGPS, Float, Fixed };
FixType type;
float compass; // 0.0 .. 359.9999999
}
Change PositionCodec and extend protobuf
Override upload to include project. The existing method operates as it does today. Tracks would be tagged with no project. Null will be acceptable for the StoredProject argument and makes this new method behave just like the old one.
upload( StoredProject proj, String serial, List<Position> positions)
Make sure that the Position object is in the JavaDocs
Modify server track file format
Add version to header to allow server to deal with V1, V2, etc.
V2 files write values in float, include position type (AUTO, FIXED, etc)
Move Track/Position
API to authenticated states in Server (require authentication)\
TrackAPI Modifications
Add TrackAPI.getGPSStats(String serialNumber )
for a single serial number. Return instance of GPS Stats or null, if not found.
Add TrackAPI.updateGPSStats( GPSStats statObject )
application to set stats + latest_version
Add ProjectAPI.deleteProject - will only succeed if project has zero tracks and zero files
HaulSim
GPSSim may need some changes.
Extend track file format to include compass, use floating point.
AccessSupport program
Devices page/tab can go because no longer assign to customer.
Delete com.agtek.net.storage.data.Device;
Delete com.agtek.net.support.gui.DeviceTableModel;
Delete com.agtek.net.support.dialog.AssignDeviceDialog
Delete com.agtek.net.support.op.GetDevices, DeleteDeviceOp, AssignDeviceOp
Remove Device oriented methods from SupportAPI and drop protobuf items for those.
Delete DeviceDB from storageDB