View Issue Details
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0002026||Ham Radio Deluxe||Bug||public||2017-06-05 18:38||2018-04-09 14:37|
|Platform||Intel i7-5960X||OS||Windows 10 Professional x64||OS Version||1703|
|Target Version||Fixed in Version||220.127.116.116|
|Summary||0002026: IOTA island ID ADIF import/export problems|
|Description||Reported by G4NVB here: https://forums.hrdsoftwarellc.com/forum/beta-testers-forum/40908-iota-island-id-adif-export-issue|
The Logbook doesn't properly import the IOTA Island ID, an d there are issues with exporting the ID that make it incompatible with other ADIF software.
|Steps To Reproduce||Create a new HRD Test Logbook. |
Add a Log Entry (ALE) with an appropriate IOTA Island Station. To do this Click on the IOTA Tab within ALE and select a Ref: No. and Island.
Save the Log Entry.
Export an ADIF File of the Logbook (Logbook/File/Export/ADIF(ADI).
Enter File name.
In the “Fields to Export” Select ADIF + Ham Radio deluxe.
Click on Export (The ADIF file should now be saved).
Open the Exported ADIF File using “Notepad” or ADIFMaster. You should see a ‘Field’ named <app_hamradiodeluxe_island:n> with the name of the IOTA Island to the right.
Now delete the HRD Logbook (or create a new HRD Logbook).
Import the ADIF file that was previously Exported.
Click on the appropriate IOTA Log Entry in your HRD Logbook.
Click on the IOTA Tab within ALE.
Check to see if the Ref: No. is still shown and that the Island is no longer displayed.
|Tags||No tags attached.|
HRD Logbook IOTA Island ID.pdf (262,320 bytes)
The Logbook app maintains about 120 fields for each record. These fields are identified by an index -- a number that identifies the field uniquely within the row. For example, "mode" is field index #46.
Since there are about 120 fields (122, exactly), the indexes range from 0 to 121. If we want to do something to each field (like format it for export to an ADIF file) we simply loop over the fields from 0 to 121 (inclusive) and process each one.
This works great; the IOTA_ISLAND field is index number 113, falls inside that range, and it's fine.
Indexplicably, a handful of fields are outside of the numeric range [0..121], and aren't handled by such a simple loop. They're not handled by the ADIF Export code and the XML export code, alike -- which means this bug exists for XML imports and exports, too.
These fields have indexes like 8002 and 9001. The IOTA Name that's missing in this bug is 9004.
We can't simply loop over the values, because we'd be looping over several thousand values (from 122 to 7999; then from 8004 to 8999) that are unused.
To fix this issue safetly, I have to come to understand why this arrangement exists and circumvent it appropriately. It would make sense to fix the problem throughout the application. Otherwise, the fix for this specific issue would just add special cases to special cases, and that's why code starts to smell badly.
See the loop in ADIFCreate.cpp in the CADifCreate::AddEntry() method.
The loop in XMLSaveToFile.cpp is really in CLogbookQSORecordset::GetFieldsXML(), called from CXMLSaveToFile::Save()
A fix for this issue is staged on this shelf:
This checkin has been made to resovle this issue:
Note that it's possible to write an integer to identify a particular island. This is different than the AA-NNN code; just a plain number. The ADIF spec calls this field "IOTA_ISLAND_ID". That work is _not_ done with this checkin. This checkin _does_ enable the round-trip of the island name as an application-specific string.
A new item is opened to track the IOTA_ISLAND_ID field.
Followed the steps to reproduce, and the exported contact was successfully imported into a new database with the correct IOTA field value of OC-006 and the app_hamradiodeluxe_island field value of Tasmania preserved and displayed correctly. Refer attachments. Fixed.
Test Mantis #0002026.ADI (1,465 bytes)
Test Mantis #0002026.jpg (34,898 bytes)
Test Mantis #0002026.jpg (34,898 bytes)
|2017-06-05 18:38||K7ZCZ||New Issue|
|2017-06-05 18:38||K7ZCZ||File Added: HRD Logbook IOTA Island ID.pdf|
|2017-06-05 19:07||WA9PIE||Project||1 - Backlog => 3 - Current Dev List|
|2017-06-05 19:36||WA9PIE||Target Version||=> 18.104.22.1689|
|2017-08-11 17:26||K7ZCZ||Module||(select) => Logbook|
|2017-08-11 17:26||K7ZCZ||Sub-Module||=> Import Export|
|2017-08-11 17:26||K7ZCZ||Testing||=> Alpha Failed|
|2017-08-16 15:51||WA9PIE||Target Version||22.214.171.1249 =>|
|2017-08-17 12:50||WA9PIE||Testing||Alpha Failed => Not Started|
|2017-09-07 22:35||K7ZCZ||Assigned To||=> K7ZCZ|
|2017-09-07 22:35||K7ZCZ||Status||new => assigned|
|2017-09-10 20:21||K7ZCZ||Note Added: 0004158|
|2017-09-10 20:31||K7ZCZ||Note Added: 0004159|
|2017-09-18 00:14||WA9PIE||Project||3 - Current Dev List => 2 - Next Dev List (Holding Area)|
|2018-03-18 00:42||K7ZCZ||Note Added: 0004508|
|2018-03-22 17:20||K7ZCZ||Note Added: 0004528|
|2018-03-22 17:21||K7ZCZ||Status||assigned => resolved|
|2018-03-22 17:21||K7ZCZ||Resolution||open => fixed|
|2018-03-22 17:21||K7ZCZ||Testing||Not Started => Not Started|
|2018-04-02 10:44||K7ZCZ||Project||2 - Next Dev List (Holding Area) => 3 - Current Dev List|
|2018-04-02 10:45||K7ZCZ||Fixed in Version||=> 126.96.36.1998|
|2018-04-04 03:35||vk2byi||File Added: Test Mantis #0002026.ADI|
|2018-04-04 03:35||vk2byi||File Added: Test Mantis #0002026.jpg|
|2018-04-04 03:35||vk2byi||Note Added: 0004658|
|2018-04-04 14:50||WA9PIE||Status||resolved => closed|
|2018-04-04 14:50||WA9PIE||Testing||Not Started => Beta Successful|
|2018-04-07 19:23||WA9PIE||Project||3 - Current Dev List => Ham Radio Deluxe|
|2018-04-07 19:25||WA9PIE||Fixed in Version||188.8.131.528 => 184.108.40.2065|
|2018-04-09 14:37||WA9PIE||Fixed in Version||220.127.116.115 => 18.104.22.1686|