mirror of
https://github.com/PAMGuard/PAMGuard.git
synced 2024-11-22 07:02:29 +00:00
Squashed commit of the following:
commitc64fa8fe9d
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Thu Mar 7 11:24:20 2024 +0000 opt to easily turn off restart debug output commit48c5387291
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Thu Mar 7 09:22:45 2024 +0000 binary store count (#129) Fix issue in binary store object count commit769193703a
Merge:308442f2
23062c3f
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Thu Mar 7 09:16:45 2024 +0000 Merge branch 'restart' into main commit308442f201
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Thu Mar 7 09:14:33 2024 +0000 Merge from dg dev main (#128) * updating Tethys help * added help details server connection & calibration * Reporting outputs to user Use Pamguard WarnOnce system to show a message of success or failure after attempting to output to Tethys. * Removing empty fields Start of implementation of code that can remove empty fields from objects before they are written. * More help documentation Continued writing general export help. Added new css style Added image * Fix type in Deployment export * Prevent single deployment export For now, disable the option to export a single Deployment document for multiple recording periods. * System to search species codes Search the ITIS species codes in Tethys to find ITIS codes. Search can be on a common or scientific name. * Data blocks help + species codes More help documentation on exporting detections/localization as well as mapping detection species codes to TSNs. Includes supporting images * Improved dialog for finding species codes Now has a progress bar to block GUI while searching database. * Add species codes TOC in help * Documented new species search in help * Nilus Checker Can check a Nilus class to see if it's missing required objects and be used to remove empty fields (e.g. zero length strings) from an object. * fixed anchor html problem * Messing around with checking of required fields in nilus objects. * split Tethys help files into smaller chunks * Update button enablers And reinstate output of a single deployment document, with non-recording periods stores in the QA section And update help TOC for latest help documents. --------- Co-authored-by: Marie <marie.roch@sdsu.edu> commit23062c3ff4
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Mon Mar 4 13:59:09 2024 +0000 Update PamController.java add in debug output at start and stop commit85b47c86af
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Mon Mar 4 13:05:56 2024 +0000 exception handling A bit more exception handling in click train detector and output of a version 10aa/other commite3ffd56f69
Merge:1200b13f
e6c2f325
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Mon Mar 4 12:28:42 2024 +0000 Merge branch 'restart' of https://github.com/douggillespie/PAMGuard into restart commite6c2f325b2
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Sat Mar 2 10:43:41 2024 +0000 Binary store Fix err in binary footer where count of objects also included the count of noise measurements. commit45b99273fa
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Tue Feb 27 19:09:58 2024 +0000 Restore single param call into PamParameterSet.autoGenerate commitc36ad2a33a
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Tue Feb 27 15:55:02 2024 +0000 Fix settings load. Problems in viewer mode with long (>50char) settings names which don't get fully stored in the database. Fixed by only looking at the start of the name. Better to not use such long names. commit2721095a03
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Tue Feb 27 14:08:22 2024 +0000 Fix compound data selector V2.02.10b also a bug in logger forms if malformed UDF's commit1200b13f95
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Fri Feb 23 15:53:00 2024 +0000 Exception handling in CTD commit156952bafe
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Thu Feb 22 17:40:45 2024 +0000 Update MHTClickTrainAlgorithm.java Synchronize calls into MHT Algorithm across threads (can mess up during restarts otherwise) commite491028ef7
Merge:d2263bbb
21b4bc13
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Thu Feb 15 16:52:29 2024 +0000 Merge pull request #66 from PAMGuard/main merge from main commitd2263bbba5
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Thu Feb 15 16:48:33 2024 +0000 Functions for better restarting after buffer overflow. commit21b4bc130d
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Fri Feb 9 11:53:35 2024 +0000 Hydrophone data loading Change how hydrophone data are loaded in viewer. Don't load ALL data. Load the loading period + some before the load period which will be one minute of data PLUS an extra n*2 data before that extra minute where n is the number of hydrophones. commite52701353a
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Mon Feb 5 13:34:15 2024 +0000 Fix data integrity bug Fix of bug that 'fixed' event start and end times in database for linked parent / child event tables. Error was caused by a mix up between ParentID and ParentUID fields. commit66b73c45e2
Merge:0dc47fcb
9fe8e353
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Fri Feb 2 09:08:19 2024 +0000 Merge branch 'main' of https://github.com/PAMGuard/PAMGuard.git into main commit0dc47fcb0b
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Fri Feb 2 09:07:55 2024 +0000 click display arrangement Added options to NOT automatically rearrange all the windows in the click display every time the display size changes commit9609546602
Merge:82e02a21
67e58416
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Tue Jan 30 15:01:04 2024 +0000 Merge pull request #65 from douggillespie/Tethys Tethys commit67e5841668
Merge:6b184529
9fe8e353
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Tue Jan 30 15:00:00 2024 +0000 Merge pull request #64 from PAMGuard/main Merge from main commit9fe8e35322
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Tue Jan 30 14:58:50 2024 +0000 MErge from dg (#127) * updating Tethys help * added help details server connection & calibration * Reporting outputs to user Use Pamguard WarnOnce system to show a message of success or failure after attempting to output to Tethys. * Removing empty fields Start of implementation of code that can remove empty fields from objects before they are written. * More help documentation Continued writing general export help. Added new css style Added image * Fix type in Deployment export * Prevent single deployment export For now, disable the option to export a single Deployment document for multiple recording periods. * System to search species codes Search the ITIS species codes in Tethys to find ITIS codes. Search can be on a common or scientific name. * Data blocks help + species codes More help documentation on exporting detections/localization as well as mapping detection species codes to TSNs. Includes supporting images * Improved dialog for finding species codes Now has a progress bar to block GUI while searching database. * Add species codes TOC in help * Documented new species search in help * Nilus Checker Can check a Nilus class to see if it's missing required objects and be used to remove empty fields (e.g. zero length strings) from an object. * fixed anchor html problem * Messing around with checking of required fields in nilus objects. * split Tethys help files into smaller chunks * Update button enablers And reinstate output of a single deployment document, with non-recording periods stores in the QA section And update help TOC for latest help documents. --------- Co-authored-by: Marie <marie.roch@sdsu.edu> commit1c532906ca
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Tue Jan 30 14:57:38 2024 +0000 Merge from dg (#126) * updating Tethys help * added help details server connection & calibration * Reporting outputs to user Use Pamguard WarnOnce system to show a message of success or failure after attempting to output to Tethys. * Removing empty fields Start of implementation of code that can remove empty fields from objects before they are written. * More help documentation Continued writing general export help. Added new css style Added image * Fix type in Deployment export * Prevent single deployment export For now, disable the option to export a single Deployment document for multiple recording periods. * System to search species codes Search the ITIS species codes in Tethys to find ITIS codes. Search can be on a common or scientific name. * Data blocks help + species codes More help documentation on exporting detections/localization as well as mapping detection species codes to TSNs. Includes supporting images * Improved dialog for finding species codes Now has a progress bar to block GUI while searching database. * Add species codes TOC in help * Documented new species search in help * Nilus Checker Can check a Nilus class to see if it's missing required objects and be used to remove empty fields (e.g. zero length strings) from an object. * fixed anchor html problem * Messing around with checking of required fields in nilus objects. * split Tethys help files into smaller chunks * Update button enablers And reinstate output of a single deployment document, with non-recording periods stores in the QA section And update help TOC for latest help documents. --------- Co-authored-by: Marie <marie.roch@sdsu.edu> commit82e02a21b3
Merge:8b57a398
c4192a73
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Tue Jan 30 14:56:43 2024 +0000 Merge pull request #63 from PAMGuard/main MErge from main commitc4192a7323
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Tue Jan 30 14:51:29 2024 +0000 Version 2.02.10 final commit of updated version info for release commit5466914d4e
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Tue Jan 30 11:55:34 2024 +0000 Merge from dev branch (#125) * updating Tethys help * added help details server connection & calibration * Reporting outputs to user Use Pamguard WarnOnce system to show a message of success or failure after attempting to output to Tethys. * Removing empty fields Start of implementation of code that can remove empty fields from objects before they are written. * More help documentation Continued writing general export help. Added new css style Added image * Fix type in Deployment export * Prevent single deployment export For now, disable the option to export a single Deployment document for multiple recording periods. * System to search species codes Search the ITIS species codes in Tethys to find ITIS codes. Search can be on a common or scientific name. * Data blocks help + species codes More help documentation on exporting detections/localization as well as mapping detection species codes to TSNs. Includes supporting images * Improved dialog for finding species codes Now has a progress bar to block GUI while searching database. * Add species codes TOC in help * Documented new species search in help * Nilus Checker Can check a Nilus class to see if it's missing required objects and be used to remove empty fields (e.g. zero length strings) from an object. * fixed anchor html problem * Messing around with checking of required fields in nilus objects. * split Tethys help files into smaller chunks * Update button enablers And reinstate output of a single deployment document, with non-recording periods stores in the QA section And update help TOC for latest help documents. --------- Co-authored-by: Marie <marie.roch@sdsu.edu> commit8b57a3982a
Merge:f4993425
cb0d191c
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Tue Jan 30 11:54:17 2024 +0000 Merge pull request #62 from PAMGuard/main Update README.html commitf4993425b5
Merge:dacfab07
6b184529
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Tue Jan 30 11:52:32 2024 +0000 Merge pull request #61 from douggillespie/Tethys TethysMerge in from Tetthys commitcb0d191c08
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Mon Jan 29 20:50:07 2024 +0000 Update README.html Fix problems of weird characters in readme.html commit6b1845293c
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Mon Jan 29 16:54:24 2024 +0000 Update button enablers And reinstate output of a single deployment document, with non-recording periods stores in the QA section And update help TOC for latest help documents. commit810ec67077
Author: Marie <marie.roch@sdsu.edu> Date: Fri Jan 26 19:56:45 2024 -0800 split Tethys help files into smaller chunks commitdacfab07f5
Merge:a6765d72
53ca798f
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Fri Jan 26 10:02:00 2024 +0000 Merge pull request #60 from PAMGuard/main Correct sorting of input sound files commit53ca798f1b
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Fri Jan 26 09:57:57 2024 +0000 Correct sorting of input sound files commit88be6ffe2e
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Thu Jan 25 18:04:57 2024 +0000 Messing around with checking of required fields in nilus objects. commitfe33930ca8
Author: Marie <marie.roch@sdsu.edu> Date: Wed Jan 24 11:50:20 2024 -0800 fixed anchor html problem commitfdfa9a20d8
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Wed Jan 24 16:32:30 2024 +0000 Nilus Checker Can check a Nilus class to see if it's missing required objects and be used to remove empty fields (e.g. zero length strings) from an object. commitb78bbe8b9e
Merge:c0080ae4
a6765d72
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Wed Jan 24 14:50:22 2024 +0000 Merge pull request #59 from douggillespie/main merge from main commita6765d72b1
Merge:efdf17f6
5fcd3607
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Wed Jan 24 14:46:39 2024 +0000 Merge pull request #58 from PAMGuard/main Remove comments in split positioner commit5fcd360737
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Wed Jan 24 14:46:05 2024 +0000 Remove comments in split positioner commitc0080ae4f4
Merge:f1bb6e4c
efdf17f6
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Wed Jan 24 14:37:24 2024 +0000 Merge remote-tracking branch 'origin/main' into Tethys Conflicts: src/help/JavaHelpSearch/DOCS src/help/JavaHelpSearch/DOCS.TAB src/help/JavaHelpSearch/OFFSETS src/help/JavaHelpSearch/POSITIONS src/help/JavaHelpSearch/SCHEMA src/help/JavaHelpSearch/TMAP src/help/utilities/tethys/docs/tethys_quickstart.html commitf1bb6e4c0c
Author: Marie <marie.roch@sdsu.edu> Date: Tue Jan 23 14:33:50 2024 -0800 Documented new species search in help commit971165b72e
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Tue Jan 23 11:12:54 2024 +0000 Add species codes TOC in help commit3d7224eb93
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Mon Jan 22 18:04:57 2024 +0000 Improved dialog for finding species codes Now has a progress bar to block GUI while searching database. commit7d30b303e7
Author: Marie <marie.roch@sdsu.edu> Date: Sun Jan 21 15:24:13 2024 -0800 Data blocks help + species codes More help documentation on exporting detections/localization as well as mapping detection species codes to TSNs. Includes supporting images commitbaff8d140c
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Sun Jan 21 21:35:34 2024 +0000 System to search species codes Search the ITIS species codes in Tethys to find ITIS codes. Search can be on a common or scientific name. commit54cb0d1b08
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Sun Jan 21 17:01:10 2024 +0000 Prevent single deployment export For now, disable the option to export a single Deployment document for multiple recording periods. commit522253b489
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Sun Jan 21 16:25:03 2024 +0000 Fix type in Deployment export commit98bc7587b5
Merge:c8bc943f
e0392de9
Author: Marie <marie.roch@sdsu.edu> Date: Sat Jan 20 20:01:19 2024 -0800 Merge branch 'Tethys' of https://github.com/douggillespie/PAMGuard into Tethys commitc8bc943ff7
Author: Marie <marie.roch@sdsu.edu> Date: Sat Jan 20 20:01:05 2024 -0800 More help documentation Continued writing general export help. Added new css style Added image commite0392de9c7
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Fri Jan 19 17:29:12 2024 +0000 Removing empty fields Start of implementation of code that can remove empty fields from objects before they are written. commit65300d719a
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Fri Jan 19 16:29:41 2024 +0000 Reporting outputs to user Use Pamguard WarnOnce system to show a message of success or failure after attempting to output to Tethys. commitfa02c9826c
Merge:3f2e4239
7efc8242
Author: Marie <marie.roch@sdsu.edu> Date: Thu Jan 18 19:37:29 2024 -0800 Merge branch 'Tethys' of https://github.com/douggillespie/PAMGuard into Tethys commit3f2e4239b0
Author: Marie <marie.roch@sdsu.edu> Date: Thu Jan 18 19:37:17 2024 -0800 added help details server connection & calibration commitefdf17f651
Merge:02f1889e
e5fda7f7
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Thu Jan 18 09:39:55 2024 +0000 Merge pull request #57 from PAMGuard/main merge from main commite5fda7f72a
Merge:3ed9be4b
02f1889e
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Thu Jan 18 09:39:45 2024 +0000 Merge branch 'main' into main commit3ed9be4bfd
Merge:42b72960
43811c1f
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Thu Jan 18 09:36:56 2024 +0000 Merge branch 'main' of https://github.com/PAMGuard/PAMGuard.git into main commit42b7296075
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Thu Jan 18 09:36:10 2024 +0000 Hide Tethys module and remove text output in splitpanepositioner commit02f1889e39
Merge:0bc3968d
52bbff36
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Thu Jan 18 09:33:26 2024 +0000 Merge branch 'main' of https://github.com/douggillespie/PAMGuard.git into main Conflicts: src/binaryFileStorage/BinaryStore.java commit43811c1f9b
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Thu Jan 18 09:31:00 2024 +0000 Merge from DG (#124) * claspath update * Batch processing Adding functionality for offline task batch processing. commit52bbff36e5
Merge:0c035aa0
b373e169
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Thu Jan 18 09:29:50 2024 +0000 Merge pull request #56 from PAMGuard/main Merge from main commit0bc3968dc8
Merge:52cc8c71
a3a74adb
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Wed Jan 17 21:28:02 2024 +0000 Fix err in binary store commit0c035aa0fe
Merge:52cc8c71
a3a74adb
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Wed Jan 17 21:28:02 2024 +0000 Merge branch 'main' of https://github.com/douggillespie/PAMGuard commit52cc8c7177
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Wed Jan 17 21:24:04 2024 +0000 Batch processing Adding functionality for offline task batch processing. commitb373e169f2
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Wed Jan 17 21:13:14 2024 +0000 updating Tethys help (#123) commit5d83af1d42
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Wed Jan 17 21:11:31 2024 +0000 updating Tethys help (#122) commit7efc824226
Merge:d05cecaf
bb17d384
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Wed Jan 17 21:11:13 2024 +0000 Merge branch 'main' into Tethys commita3a74adb78
Merge:ac1a7f87
bb17d384
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Wed Jan 17 14:37:30 2024 +0000 Merge pull request #55 from PAMGuard/main MErge from main commitd05cecaf8b
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Fri Jan 12 18:57:38 2024 +0000 updating Tethys help commit7a1c697319
Merge:21fa4aff
ac1a7f87
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Fri Jan 12 15:41:54 2024 +0000 Merge remote-tracking branch 'origin/main' into Tethys Conflicts: pom.xml src/PamController/PamguardVersionInfo.java commitbb17d384b3
Merge:031f4c7a
21fa4aff
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Fri Jan 12 15:34:05 2024 +0000 Merge branch 'Tethys' into main commitac1a7f87ac
Merge:133da119
031f4c7a
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Fri Jan 12 15:29:05 2024 +0000 Merge pull request #53 from PAMGuard/main changes from main commit031f4c7ab4
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Fri Jan 12 15:28:23 2024 +0000 V 2.02.09aa with click marking bug fix commit217283c704
Merge:4856a827
46d01e62
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Fri Jan 12 11:58:31 2024 +0000 Merge branch 'main' of https://github.com/PAMGuard/PAMGuard commit4856a827df
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Fri Jan 12 11:57:11 2024 +0000 click labelling fixed a couple of problems in click labelling (Viewer mode) when clics were reassigned to different events. commitdf178a4122
Merge:782057c0
133da119
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Fri Jan 12 10:16:35 2024 +0000 Merge branch 'main' of https://github.com/douggillespie/PAMGuard.git into main commit133da119e0
Merge:f097ddce
46d01e62
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Fri Jan 12 10:16:12 2024 +0000 Merge pull request #52 from PAMGuard/main Merge from main commit46d01e62db
Merge:0e5bca51
f097ddce
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Fri Jan 12 10:16:00 2024 +0000 Merge branch 'main' into main commit0e5bca5198
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Fri Jan 12 10:11:21 2024 +0000 Update X3 lib to 2.2.7 commit21fa4aff07
Merge:73810b85
716eb1fa
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Sat Dec 30 18:50:58 2023 +0000 Merge branch 'Tethys' of https://github.com/douggillespie/PAMGuard.git into Tethys Conflicts: src/tethys/swing/TethysMainPanel.java commit73810b85bf
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Sat Dec 30 18:48:24 2023 +0000 use new diider location memory commit7a5e8f1031
Merge:e48eb002
f097ddce
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Sat Dec 30 17:39:28 2023 +0000 Merge branch 'main' into Tethys Conflicts: pom.xml src/PamController/PamguardVersionInfo.java commite48eb00204
Merge:70fbeaaf
1b8bb14e
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Sat Dec 30 17:37:02 2023 +0000 Merge remote-tracking branch 'upstream/main' into Tethys Conflicts: pom.xml src/loggerForms/FormsDataDisplayTable.java commit70fbeaafde
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Sat Dec 30 17:32:57 2023 +0000 work on deployment wizards commit782057c020
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Sat Dec 30 17:28:23 2023 +0000 claspath update commit716eb1faa7
Merge:c63fb3f3
e29f6f05
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Sat Dec 30 17:26:43 2023 +0000 Merge branch 'Tethys' of https://github.com/douggillespie/PAMGuard into Tethys commitc63fb3f341
Merge:56bab82b
b7cbd259
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Sat Dec 30 17:07:17 2023 +0000 Merge branch 'main' into Tethys Conflicts: src/loggerForms/FormsDataDisplayTable.java commitf097ddce45
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Sat Dec 30 17:01:46 2023 +0000 Split pane positioner Handy little class for remembering and restoring the positions of jSplitPane's commitf5c3ce06ce
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Fri Dec 29 17:55:30 2023 +0000 Database opening from Explorer Sorted so that a viewer database can be opened by right clicking on a sqlite3 file. Requires updated installer to make appropriate registry changes. Will be in 2.02.10 commite29f6f0589
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Fri Dec 22 13:38:18 2023 +0000 Fix Effort null pointers Trap a coupld of null pointer exceptions which get thrown when there are no acoustic data. commit56bab82be3
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Thu Dec 21 18:34:58 2023 +0000 POM Excludes signature files Updated POM file to correctly exclude signature files which prevented PAMGuard from running from the installed version (unless these were manually removed from the jar file). commit99aa3f342c
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Thu Dec 21 17:07:23 2023 +0000 Update nilus and javaclient Updated java client and nilus jar builds for Maven. commitf4a42d2bb2
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Thu Dec 21 11:22:01 2023 +0000 update pom to groupid tethys commit1b8bb14e9d
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Wed Dec 20 16:47:18 2023 +0000 Pre release V2.02.09f With release notes for V2.02.10 which is coming soon ... commitf9a0716c0f
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Wed Dec 20 14:51:10 2023 +0000 Updates from DG (#120) * Stop command small change so command is available as a constant * Lots of small updates to enable opening of a secondary configuration for batch processing control. * Fix user input bug in viewer which created exponential copies of user comments! * Adding TAST trigger alarm action To be competed when GW provide correct string for interface * Echo offline detection Fix up affected datablocks for offline echo detection * fix module import System for importing modules from other psfx files was not working. Probably wasn't working for quite some time. Now fixed. * Bug fixes to Match Template classifier 1) When a large template was imported only 1: fftLength of the mathc waveform was used and so clicks would be correlated with noise. The peak of the template is now used when the peak search function is selected. 2) The plus button in the tab pane had disappeared. 3) Seems like the decimators were the wrong round. So the waveforms were using an up sample function when they should have been using a decimator function. and vice versa...major bug when using different sample rates! * Fix merge Merged in a single commit from Jamies fork that had updates to the template classifier. Then had to make a few changes to get it working with other changes J had made that must have been in other commits. * Logger forms viewer Viewer display of logger forms was throwing exceptions on Boolean values which had been stored as a String or Integer 0 or 1 in some databases. Now fixed to turn these into a sensible boolean value for the data table * Logger form plotting Fixed logger form plotting in Viewer so that points can find their correct GPS position (based on time) * Fix small bugs * Fix settings import not all imports working. Now seems fixed. --------- Co-authored-by: Jamie Mac <macster110@gmail.com> commitb7cbd2592f
Merge:ae8839e7
639f3360
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Wed Dec 20 14:48:30 2023 +0000 Merge branch 'main' of https://github.com/douggillespie/PAMGuard.git into main commitae8839e756
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Wed Dec 20 14:48:15 2023 +0000 Fix settings import not all imports working. Now seems fixed. commit639f33607e
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Wed Dec 20 09:05:33 2023 +0000 Fix small bugs commit3e4dd77908
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Tue Dec 19 16:41:57 2023 +0000 Logger form plotting Fixed logger form plotting in Viewer so that points can find their correct GPS position (based on time) commit1d9768b8c1
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Tue Dec 19 16:41:57 2023 +0000 Logger form plotting Fixed logger form plotting in Viewer so that points can find their correct GPS position (based on time) commit2fa91d69a5
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Tue Dec 19 16:41:57 2023 +0000 Logger form plotting Fixed logger form plotting in Viewer so that points can find their correct GPS position (based on time) commit1461808b14
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Tue Dec 19 16:41:57 2023 +0000 Logger form plotting Fixed logger form plotting in Viewer so that points can find their correct GPS position (based on time) commit54f5a5f0fb
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Tue Dec 19 15:54:38 2023 +0000 Logger forms viewer Viewer display of logger forms was throwing exceptions on Boolean values which had been stored as a String or Integer 0 or 1 in some databases. Now fixed to turn these into a sensible boolean value for the data table commit0085215eff
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Tue Dec 19 15:54:38 2023 +0000 Logger forms viewer Viewer display of logger forms was throwing exceptions on Boolean values which had been stored as a String or Integer 0 or 1 in some databases. Now fixed to turn these into a sensible boolean value for the data table commitea6caecc67
Merge:d200e5c2
bfbb58ea
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Tue Dec 19 12:45:56 2023 +0000 Updated POM working POM for build with Tethys. Note though that it's failing to get rid of all signature files in the \META-INF\ folder, so the two files META-INF\ECLIPSE_.SF and META-INF\ECLIPSE_.RSA must be removed before the jar file can be used. commitd200e5c2df
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Mon Dec 18 18:30:41 2023 +0000 Maven stuff for nilus and javaclient commitbfbb58ea5a
Merge:480f55f6
d1b40c1d
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Mon Dec 18 18:25:29 2023 +0000 Merge pull request #51 from PAMGuard/main get whistle det fix commitd1b40c1d86
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Mon Dec 18 16:48:36 2023 +0000 Release V2.02.09e fixes to WMD stub removal to make it a lot faster. commit3cf0a4e1e6
Merge:25d10d54
480f55f6
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Mon Dec 18 15:27:24 2023 +0000 Merge remote-tracking branch 'origin/main' into Tethys commit291b00e1b1
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Mon Dec 18 15:19:22 2023 +0000 Merge from DG with fixes to MatchedTemplate classifier. (#119) * Stop command small change so command is available as a constant * Lots of small updates to enable opening of a secondary configuration for batch processing control. * Fix user input bug in viewer which created exponential copies of user comments! * Adding TAST trigger alarm action To be competed when GW provide correct string for interface * Echo offline detection Fix up affected datablocks for offline echo detection * fix module import System for importing modules from other psfx files was not working. Probably wasn't working for quite some time. Now fixed. * Bug fixes to Match Template classifier 1) When a large template was imported only 1: fftLength of the mathc waveform was used and so clicks would be correlated with noise. The peak of the template is now used when the peak search function is selected. 2) The plus button in the tab pane had disappeared. 3) Seems like the decimators were the wrong round. So the waveforms were using an up sample function when they should have been using a decimator function. and vice versa...major bug when using different sample rates! * Fix merge Merged in a single commit from Jamies fork that had updates to the template classifier. Then had to make a few changes to get it working with other changes J had made that must have been in other commits. --------- Co-authored-by: Jamie Mac <macster110@gmail.com> commit480f55f6e9
Merge:2f41c986
667b68e2
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Mon Dec 18 15:18:18 2023 +0000 Merge pull request #50 from PAMGuard/main merge from main (#118) commit2f41c986f4
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Mon Dec 18 14:58:24 2023 +0000 Fix merge Merged in a single commit from Jamies fork that had updates to the template classifier. Then had to make a few changes to get it working with other changes J had made that must have been in other commits. commit1b9d80b0eb
Author: Jamie Mac <macster110@gmail.com> Date: Thu Dec 14 12:06:51 2023 +0000 Bug fixes to Match Template classifier 1) When a large template was imported only 1: fftLength of the mathc waveform was used and so clicks would be correlated with noise. The peak of the template is now used when the peak search function is selected. 2) The plus button in the tab pane had disappeared. 3) Seems like the decimators were the wrong round. So the waveforms were using an up sample function when they should have been using a decimator function. and vice versa...major bug when using different sample rates! commit667b68e231
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Mon Dec 18 14:09:30 2023 +0000 merge from main (#118) * Stop command small change so command is available as a constant * Lots of small updates to enable opening of a secondary configuration for batch processing control. * Fix user input bug in viewer which created exponential copies of user comments! * Adding TAST trigger alarm action To be competed when GW provide correct string for interface * Echo offline detection Fix up affected datablocks for offline echo detection * fix module import System for importing modules from other psfx files was not working. Probably wasn't working for quite some time. Now fixed. commitbe88f4b296
Merge:0039ff74
7a321f6d
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Mon Dec 18 14:07:19 2023 +0000 # WARNING: head commit changed in the meantime Merge branch 'main' of https://github.com/PAMGuard/PAMGuard into main commit7a321f6d95
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Mon Dec 18 13:28:38 2023 +0000 Revert "Merge branch 'main' of https://github.com/PAMGuard/PAMGuard" This reverts commitf52a27ccf2
, reversing changes made to4a5c6fe52e
. commitf52a27ccf2
Merge:4a5c6fe5
f8d2de44
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Mon Dec 18 12:45:53 2023 +0000 Merge branch 'main' of https://github.com/PAMGuard/PAMGuard commit4a5c6fe52e
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Mon Dec 18 12:45:49 2023 +0000 small fix in histograms small fix in histograms to avoid null commit25d10d54b4
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Sun Dec 17 19:28:03 2023 +0000 Start Tethys Help commita761100ba7
Merge:c3edae51
0039ff74
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Sun Dec 17 12:52:36 2023 +0000 Merge remote-tracking branch 'origin/main' into Tethys commitc3edae516b
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Sun Dec 17 12:52:06 2023 +0000 Small error handling commitf8d2de4482
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Sun Dec 17 12:27:31 2023 +0000 Settings import (#117) * Stop command small change so command is available as a constant * Lots of small updates to enable opening of a secondary configuration for batch processing control. * Fix user input bug in viewer which created exponential copies of user comments! * Adding TAST trigger alarm action To be competed when GW provide correct string for interface * Echo offline detection Fix up affected datablocks for offline echo detection * fix module import System for importing modules from other psfx files was not working. Probably wasn't working for quite some time. Now fixed. commit0039ff7422
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Sun Dec 17 12:19:18 2023 +0000 fix module import System for importing modules from other psfx files was not working. Probably wasn't working for quite some time. Now fixed. commit2e29e9cd95
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Fri Dec 15 17:49:39 2023 +0000 Deployment and Detections work Big tidy up of Deployment and Detections output. Think it' spretty close to a functional system now. commit75d349e33c
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Thu Dec 14 18:52:17 2023 +0000 Echo offline detection Fix up affected datablocks for offline echo detection commitf55311ea36
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Thu Dec 14 18:51:42 2023 +0000 Adding TAST trigger alarm action To be competed when GW provide correct string for interface commit760b9769d7
Merge:4297afdc
951e3116
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Thu Dec 14 12:43:07 2023 +0000 Merge branch 'main' of https://github.com/douggillespie/PAMGuard.git into main commit4297afdc51
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Thu Dec 14 12:42:41 2023 +0000 Fix user input bug in viewer which created exponential copies of user comments! commit3059e087ac
Merge:9a000586
87813746
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Thu Dec 14 12:27:14 2023 +0000 Merge branch 'Tethys' of C:\Users\dg50\source\repos\PAMGuardTethys into Tethys commit9a0005861c
Merge:951e3116
5b649edc
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Thu Dec 14 12:14:44 2023 +0000 Merge branch 'Tethys' of C:\Users\dg50\source\repos\PAMGuardTethys into Tethys commit8781374685
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Thu Dec 14 11:57:44 2023 +0000 Small changes to deployment table commitef92e1eea9
Merge:02ad66db
951e3116
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Thu Dec 14 10:53:46 2023 +0000 Merge branch 'main' of https://github.com/douggillespie/PAMGuard into main commit951e3116a5
Merge:2dd90f6a
b12ccf9c
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Thu Dec 14 10:51:17 2023 +0000 Merge pull request #48 from PAMGuard/main Merge from main commitb12ccf9c67
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Thu Dec 14 10:50:29 2023 +0000 Merge with main (#116) * Stop command small change so command is available as a constant * Lots of small updates to enable opening of a secondary configuration for batch processing control. commit02ad66db3b
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Thu Dec 14 10:33:46 2023 +0000 User input viewer bug PAMGuard was marking multiline comments as changed and then relogging them. Led to exponential increase in database size! commit03483ded18
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Wed Dec 13 17:31:35 2023 +0000 Deployment export Improved deployment export interface and options. commit860d1bec17
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Thu Dec 7 20:08:17 2023 +0000 Update Calibration export Stop repeating hydrophones and add two addresses to Calibrations docs commit9c86b41027
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Thu Dec 7 15:10:45 2023 +0000 Project info dialog More wrapping of nilus objects to make a general project info tab in PAMGuard. This is global and can share basic project informatin with the Tethys module. commit7721d7f1c0
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Wed Dec 6 17:35:57 2023 +0000 Global metadata Reorganised how global meta data for a PAMGuard dataset is managed by wrapping a nilus deployment object so that PAMGuard settings can serialise and unpack the xml version of a nilus Deployment object. commitbafe93e7f5
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Wed Dec 6 12:20:40 2023 +0000 SQLLogging revert Revert main table definition class used by SQLLogging to PamTableDefinition, back from EmptyTableDefinition, to maintain compatibility with existing plugin modules. commit9939e8aa85
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Mon Dec 4 21:27:00 2023 +0000 Calibrations Export Functional Calibrations export wizard and display commit275a53c042
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Sun Dec 3 18:21:09 2023 +0000 Calibrations display display of calibrations documents + some general tidying up of document management and display. commit840e6c89a1
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Thu Nov 16 20:36:14 2023 +0000 R2.02.09d Fix matched template classifier import fix azigram help file image display commit2dd90f6a32
Merge:58fe0d77
acc806d3
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Wed Nov 15 15:02:50 2023 +0000 Merge branch 'main' of https://github.com/PAMGuard/PAMGuard into main commit58fe0d7754
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Wed Nov 15 15:02:18 2023 +0000 Lots of small updates to enable opening of a secondary configuration for batch processing control. commitacc806d375
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Wed Nov 15 13:08:02 2023 +0000 Updated X3 library to 2.2.6 commita4f484c76c
Merge:8e60ad2e
d7c4c278
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Wed Nov 15 09:44:09 2023 +0000 Merge branch 'main' of https://github.com/PAMGuard/PAMGuard.git into main commit8e60ad2eff
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Wed Nov 15 09:43:39 2023 +0000 update to array diagnostics and sensor control commitd7c4c278d8
Author: m2oswald <45486636+m2oswald@users.noreply.github.com> Date: Wed Nov 15 09:17:49 2023 +0000 Added code to Rocca for training/testing classifier (#114) * allow Rocca to run without classifiers Fixed bug that threw an error if no classifier files were specified in Rocca Params dialog * add rocca switch to enable dev mode currently only shows/hides extra buttons in the Params dialog, but will extend to more options in the future * Fix memory issue with RoccaContourDataBlocks not being released for garbage collection Set RoccaContourDataBlock objects to null and stop PamObserver Timer to force release * Fix problem tracing whistles in Rocca spectrogram pop-up Whistle and raw data were being cleared before the user had time to trace out the whistle, causing PAMGuard to throw an exception. Both were already being cleared when the pop-up window is closed, so no need to do it here. * updated for training/testing classifiers commitd5f504dcd1
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Fri Nov 10 18:08:31 2023 +0000 Bearing localiser offline save Bug stopping it correctly saving data from the offline task to the database fixed. commit6cc01fe77a
Merge:1f8e790a
9fca879c
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Fri Oct 27 10:06:52 2023 +0100 Merge branch 'main' of https://github.com/douggillespie/PAMGuard into main commit9fca879c39
Merge:bff8eeeb
7a44d49e
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Fri Oct 27 10:02:47 2023 +0100 Merge branch 'main' of https://github.com/PAMGuard/PAMGuard.git into main commit7a44d49e27
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Fri Oct 27 09:59:28 2023 +0100 X3 Version 2.2.3 Add maven jar files for X3/SUD version 2.2.3 commitbff8eeebc5
Merge:3da3f31b
fa5fe994
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Thu Oct 26 15:50:26 2023 +0100 Merge branch 'main' of https://github.com/PAMGuard/PAMGuard.git into main commitfa5fe9943d
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Thu Oct 26 14:44:41 2023 +0100 update sud file management to more efficiently skip to the correct part of a sud file when reading data offline. commit1f8e790ae5
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Fri Sep 29 13:43:49 2023 +0100 Collection enum Made an enum for the different collections. More robust than passing the names around as strings. Contains functions for converting between the collection name and the documents names within those collections. commit773f1f542b
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Sun Sep 24 21:59:15 2023 +0100 Species map i/o commit8257122d14
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Thu Sep 21 18:01:41 2023 +0100 Log Tethys output and include instrumentid in Deployment queries commit4d294b56a8
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Tue Sep 19 16:55:33 2023 +0100 Click event output commit5fe0927c10
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Mon Sep 18 12:49:39 2023 +0100 Noise logging commit415ec87938
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Sun Sep 17 21:10:23 2023 +0100 noise output commit158eedce8c
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Fri Sep 15 15:15:28 2023 +0100 Detections output more work on detections output. commitdb1cc75bc1
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Wed Sep 13 17:28:47 2023 +0100 More output More changes to Detections output. commit85fd84d18a
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Mon Sep 11 21:52:46 2023 +0100 Fix binned output couple of fixes in binned output commit65dfb5688b
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Mon Sep 11 17:47:50 2023 +0100 More on granularity Nice format of granularity in display tables. commitc221d78aa2
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Mon Sep 11 17:07:15 2023 +0100 Added bin granularity binned granularity in place. TODO Encounter granularity. commitbaca001ed8
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Fri Sep 8 16:31:00 2023 +0100 Param output only if not display commit7465243169
Merge:fb00a757
3da3f31b
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Fri Sep 8 13:32:22 2023 +0100 Merge branch 'main' of https://github.com/douggillespie/PAMGuard into main commit3da3f31b33
Merge:dbeaa668
3385935a
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Fri Sep 8 13:29:37 2023 +0100 Merge branch 'main' of https://github.com/douggillespie/PAMGuard.git into main commitdbeaa66821
Merge:1b5454be
60435e56
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Fri Sep 8 13:26:11 2023 +0100 Merge branch 'main' of https://github.com/PAMGuard/PAMGuard into main commit60435e567a
Author: Brian S Miller <93690136+BrianSMiller@users.noreply.github.com> Date: Fri Sep 8 21:54:40 2023 +1000 Fixes issues #111 and fixes #112 (DIFAR module crashes and ability to use Deep Learning Detections in DIFAR module) (#110) * Bugfix for OverlayMarks Check for a null pointer exception in OverlayMarks that was causing a crash on startup. * Bugfix for null pointer in symbol manager Fix a bug that I found where the DIFAR module was crashing the symbol manager. Seems that this was due to this subclass of clip generator having a null value for it's uniqueName. I've fixed by checking for null values and assigning a generic symbol when null. * DeepLearning detections canGenerateClips=true Set flag in DeepLearning detector so that detections are considered 'clips' by Pamguard. This allows them to be processed automatically in the DIFAR Localisation module (and maybe others). * DIFAR: bugfix frequency limits for auto-detections Fix a bug in DIFAR module where the frequency limits of automated detections were not being set properly by the DIFAR module. * DeepLearning - Bugfix to detection duration Fix bug in deep learning detector where duration (in samples) was being set to number of samples in a hop instead of the number of samples in a segment. commitfb00a757cd
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Thu Sep 7 16:58:38 2023 +0100 Data export A few fixes in Detections export. commit3688719e25
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Thu Aug 31 17:06:51 2023 +0100 Working parameter output Only just and not complete, but working. commit07ced6ae6d
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Tue Aug 29 11:53:40 2023 +0100 Species info Sort out of species info which hopefully now deals with all eventualities. commit74deebe446
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Tue Aug 8 18:29:45 2023 +0100 Fixed queries Also added internal display of existing docuemtns (so they can be deleted) commit9018176899
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Thu Jul 20 19:06:42 2023 +0100 ITIS Codes GUI Basic system in place for handling ITIS species codes. commit5c969d8889
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Wed Jul 19 13:56:39 2023 +0100 work on species mapping commit527aeccbb8
Merge:cd70026c
3385935a
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Mon Jul 3 18:00:53 2023 +0100 Merge branch 'main' of https://github.com/douggillespie/PAMGuard into main commitcd70026cf8
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Mon Jul 3 17:53:35 2023 +0100 Starting to map species codes commit3385935aec
Merge:68b2f3bb
c3c31c33
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Mon Jul 3 17:48:41 2023 +0100 Merge pull request #47 from PAMGuard/main pull from main commit75470b450b
Merge:f3944e35
68b2f3bb
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Fri Jun 9 13:01:35 2023 +0100 Merge branch 'main' of https://github.com/douggillespie/PAMGuard into main Conflicts: src/PamModel/PamModel.java commitf3944e3536
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Fri Jun 9 12:56:23 2023 +0100 Update FolderInputSystem.java commit68b2f3bb53
Merge:1b5454be
b0a06300
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Fri Jun 9 12:53:30 2023 +0100 Merge pull request #46 from PAMGuard/main get V2.02.08 from main commit3df05c3ec6
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Mon May 29 15:27:21 2023 +0100 Document export commit36da1bcbeb
Merge:1ea20d80
1b5454be
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Mon May 29 09:02:48 2023 +0100 Merge branch 'main' of https://github.com/douggillespie/PAMGuard into main commit1b5454be91
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Fri May 26 10:27:25 2023 +0100 Stop command small change so command is available as a constant commitd841959171
Merge:f97f967b
d350d5a7
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Fri May 26 09:53:08 2023 +0100 Merge pull request #45 from PAMGuard/main pull from main commitf97f967b23
Merge:508ca524
c17208d3
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Tue May 23 15:46:57 2023 +0100 Merge pull request #44 from PAMGuard/main Map file errors commit508ca524e8
Merge:becb24dc
db037c6d
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Fri May 12 15:38:04 2023 +0100 Merge pull request #43 from PAMGuard/main update from main commit1ea20d80ed
Merge:49843b40
becb24dc
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Mon May 8 15:46:04 2023 +0100 Merge branch 'main' of https://github.com/douggillespie/PAMGuard into main commitbecb24dcc5
Merge:2953d82b
29f0bf7e
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Mon May 8 15:43:58 2023 +0100 Merge pull request #42 from PAMGuard/main X3 updates commit49843b405f
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Sun May 7 20:06:59 2023 +0100 Some query changes Changes in server code required update of some of the json for existing queries. commit00410d2017
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Sun May 7 19:00:37 2023 +0100 Exception handling Exception handling and warning messages on Tethys transactions commit71c8415bc8
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Sat May 6 19:26:04 2023 +0100 Playing with export options commit38b05b13c5
Merge:8a9719b4
2953d82b
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Sat May 6 11:15:48 2023 +0100 Merge branch 'main' of https://github.com/douggillespie/PAMGuard into main commit8a9719b425
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Mon May 1 18:55:35 2023 +0100 Tethys working again And a bit more playing around with metadata handling for Deploymnet documents commit379cd61afa
Merge:4f0f4a6c
f74bb5eb
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Mon Apr 24 13:35:51 2023 +0100 Merge branch 'main' of https://github.com/douggillespie/PAMGuard into main commit4f0f4a6c36
Merge:dfb78813
795b32e4
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Thu Apr 13 18:04:38 2023 +0100 Merge remote-tracking branch 'PAMGuardDGOriginal/main' into main Conflicts: src/binaryFileStorage/BinaryStoreProcess.java src/clickDetector/layoutFX/clickClassifiers/SweepClassifierSetPaneFX.java commitdfb78813ea
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Thu Apr 13 17:41:52 2023 +0100 Update TethysControl.java commitdbc8f0c682
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Tue Apr 4 21:02:09 2023 +0100 Men items to open collections in browser commit35fa8270d2
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Tue Apr 4 20:53:14 2023 +0100 Changes to match server updates Deleting now working. am automatically calling a windows curl command to disable the cache on the server. commitfaea94205c
Merge:573785d9
16e8184a
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Sun Apr 2 11:15:19 2023 +0100 Merge branch 'main' of https://github.com/douggillespie/PAMGuard into main Conflicts: src/Array/ArrayDialog.java src/PamModel/PamModel.java src/clickDetector/layoutFX/clickClassifiers/SweepClassifierSetPaneFX.java commit573785d98f
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Fri Mar 31 19:07:02 2023 +0100 GUi Play Export wizard for detections commit4be259b76b
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Wed Mar 29 20:57:54 2023 +0100 GUI Play Experimenting with GUI components commit642f1da873
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Wed Mar 22 20:07:17 2023 +0000 updated doc names Dog names now match their id so it's easier to delete them from Tethys commitc7ceba1604
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Tue Mar 21 20:05:38 2023 +0000 GUI Work. working on some GUI / control options. Semi functional. Seem to have a problem with time zones converting from XML time to millis which need sorting. commitf51a519d82
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Fri Mar 17 21:26:13 2023 +0000 Start Tethys GUI commitb344b775ec
Merge:cff6f718
ecf364f9
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Thu Mar 16 16:35:09 2023 +0000 Merge branch 'main' of https://github.com/douggillespie/PAMGuardTethys commitcff6f71881
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Thu Mar 16 16:34:03 2023 +0000 update autoprovider commitecf364f999
Merge:7f680f3e
289b0659
Author: kbolaughlin <kolaughl@ucsd.edu> Date: Thu Mar 16 09:14:11 2023 -0700 Merge branch 'main' of https://github.com/douggillespie/PAMGuardTethys commit7f680f3e20
Author: kbolaughlin <kolaughl@ucsd.edu> Date: Thu Mar 16 09:13:42 2023 -0700 fixed some deploymentData defaulting fixed some deploymentData defaulting commit289b065914
Merge:8c3c0098
140af14c
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Wed Mar 15 23:39:33 2023 +0000 Merge branch 'main' of https://github.com/douggillespie/PAMGuardTethys commit8c3c0098da
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Wed Mar 15 23:38:51 2023 +0000 work commit140af14cba
Author: kbolaughlin <kolaughl@ucsd.edu> Date: Wed Mar 15 16:38:13 2023 -0700 required field update and post to tethys fxn updates fill in required data for deployments/detections and minor tweaks to post to tethys fxn commitd96ace1ca2
Merge:f15a6daf
27b8456c
Author: kbolaughlin <kolaughl@ucsd.edu> Date: Wed Mar 15 15:05:57 2023 -0700 Merge branch 'main' of https://github.com/douggillespie/PAMGuardTethys commitf15a6dafa6
Author: kbolaughlin <kolaughl@ucsd.edu> Date: Wed Mar 15 15:05:33 2023 -0700 TethysExportControl add post to tethys code in TethysExportControl commit27b8456c5a
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Wed Mar 15 22:04:13 2023 +0000 More detection work commite8e947b91f
Merge:ceefa618
4876899b
Author: kbolaughlin <kolaughl@ucsd.edu> Date: Wed Mar 15 12:38:33 2023 -0700 Merge branch 'main' of https://github.com/douggillespie/PAMGuardTethys commitceefa6188c
Author: kbolaughlin <kolaughl@ucsd.edu> Date: Wed Mar 15 12:38:29 2023 -0700 Update TethysExporter.java updated export code to add namespace to the xml produced commit4876899b54
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Wed Mar 15 18:13:11 2023 +0000 Detections Document ready to go commitf97247f148
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Wed Mar 15 17:21:35 2023 +0000 Detections output Working towards output of Detections ... commit98ce0ff9d2
Merge:68b7d08b
3991a871
Author: kbolaughlin <kolaughl@ucsd.edu> Date: Tue Mar 14 14:16:02 2023 -0700 Merge branch 'main' of https://github.com/douggillespie/PAMGuardTethys commit68b7d08bc6
Author: kbolaughlin <kolaughl@ucsd.edu> Date: Tue Mar 14 14:14:22 2023 -0700 Update TethysExporter.java minor tweak commit3991a87102
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Tue Mar 14 21:13:48 2023 +0000 up[dated exporter commit0fad7c6cfa
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Tue Mar 14 17:34:45 2023 +0000 Deployment doc Work on deployment document population commit103c050d0c
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Tue Mar 14 17:28:13 2023 +0000 Trying to Merge with KB Changes commit2dd870956a
Author: kbolaughlin <kolaughl@ucsd.edu> Date: Tue Mar 14 08:40:49 2023 -0700 Update TethysExporter.java small fix commit8842166f43
Merge:799c7b21
501c0ec2
Author: kbolaughlin <kolaughl@ucsd.edu> Date: Tue Mar 14 08:38:08 2023 -0700 Merge branch 'main' of https://github.com/douggillespie/PAMGuardTethys commit799c7b218e
Author: kbolaughlin <kolaughl@ucsd.edu> Date: Mon Mar 13 17:27:39 2023 -0700 Update TethysExporter.java file importer commit501c0ec292
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Mon Mar 13 21:44:19 2023 +0000 Deployment positions commit98cf904830
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Mon Mar 13 20:45:51 2023 +0000 first very incomplete deployment doc commit456f9102db
Merge:534765d1
7d69992d
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Mon Mar 13 18:36:36 2023 +0000 Merge branch 'main' of https://github.com/douggillespie/PAMGuardTethys commit534765d1cc
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Mon Mar 13 18:35:25 2023 +0000 notes commit7d69992d44
Author: kbolaughlin <kolaughl@ucsd.edu> Date: Mon Mar 13 11:33:46 2023 -0700 Update TethysExporter.java testing commit24c7baab6e
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Mon Mar 13 18:31:04 2023 +0000 Notes commit43ea481c3f
Author: kbolaughlin <kolaughl@ucsd.edu> Date: Mon Mar 13 11:05:10 2023 -0700 adding deployment recovery pair commitbfed9cfa00
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Thu Feb 23 13:37:53 2023 +0000 Update to Nilus 3 commit9c10af43bc
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Wed Feb 22 10:51:04 2023 +0000 Added code to find acquisition settings This is most of the data needed for TEthys commitf12be978aa
Merge:b2e6f85f
5b649edc
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Wed Feb 1 10:23:39 2023 +0000 Merge pull request #2 from douggillespie/Tethys Merging Tethys branch into main commit5b649edc19
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Fri Jan 27 15:13:30 2023 +0000 Comments Added a couple of comments to help SDSU folk get off the ground commitb2e6f85faf
Merge:738c9ab6
1c11e3da
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Fri Jan 27 14:34:12 2023 +0000 Merge pull request #1 from douggillespie/Tethys Tethys commit1c11e3da15
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Fri Jan 27 11:11:02 2023 +0000 DBXM Export A few functions to help find data. commitf02001a6fc
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Wed Jan 25 16:40:03 2023 +0000 Changes for Tethys integration commit5e6cd42eea
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Thu Dec 15 18:21:17 2022 +0000 Tethys Export A bit of fun writing some outline functions to export data to Tethys. commit48716cb366
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Mon Dec 12 17:04:20 2022 +0000 XML Settings Added a new log of XML settings / Effort for each module to the database. Had to make a lot of changes so that the base table in SQLLogging is of type EmptyTableDefinition, not PamTableDefinition. Needs a lot of testing and may break plugins using logging features. commit29230a5c5f
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com> Date: Wed Nov 23 14:56:25 2022 +0000 Better XML Improving XML data for each detector
This commit is contained in:
parent
7ddf4d6eb9
commit
3a74152beb
2
.project
2
.project
@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<projectDescription>
|
<projectDescription>
|
||||||
<name>PamGuard Main DG</name>
|
<name>PamGuard Main Tethys</name>
|
||||||
<comment></comment>
|
<comment></comment>
|
||||||
<projects>
|
<projects>
|
||||||
</projects>
|
</projects>
|
||||||
|
470
README.html
470
README.html
@ -324,9 +324,8 @@ href="http://www.gnu.org/licenses/gpl-3.0-standalone.html">http://www.gnu.org/li
|
|||||||
<h1><a name="_Toc444450028"></a><a name="_Toc444450392"></a>INSTALLATION </h1>
|
<h1><a name="_Toc444450028"></a><a name="_Toc444450392"></a>INSTALLATION </h1>
|
||||||
|
|
||||||
<p class=MsoNormal>The latest version of PAMGuard has been tested on 64 bit
|
<p class=MsoNormal>The latest version of PAMGuard has been tested on 64 bit
|
||||||
Windows 10. We expect it to work without problems on 64 bit versions of Windows
|
Windows 10 and Windows 11. We expect it to work without problems on 64 bit
|
||||||
8 and probably 7. Some testing has been undertaken on Windows 11 and nothing
|
versions of Windows 8 and probably 7. </p>
|
||||||
unexpected has been noted. </p>
|
|
||||||
|
|
||||||
<p class=MsoNormal>On Windows, download and run the Windows installer.</p>
|
<p class=MsoNormal>On Windows, download and run the Windows installer.</p>
|
||||||
|
|
||||||
@ -372,23 +371,27 @@ size for the JVM being used to run Pamguard i.e. how much memory it gets to
|
|||||||
use. The default max size usually being too low.</p>
|
use. The default max size usually being too low.</p>
|
||||||
|
|
||||||
<p class=MsoNormal>The -Djava.library.path=lib64 tells the JVM that it should
|
<p class=MsoNormal>The -Djava.library.path=lib64 tells the JVM that it should
|
||||||
look in the folder called "lib64" for the required shared libraries (change
|
look in the folder called "lib64" for the required shared libraries
|
||||||
to <em><span style='font-family:"Calibri",sans-serif'>lib</span></em> for the
|
(change to <em><span style='font-family:"Calibri",sans-serif'>lib</span></em>
|
||||||
32 bit version).</p>
|
for the 32 bit version).</p>
|
||||||
|
|
||||||
<p class=MsoNormal>For "Mixed" and "Viewer" modes just add
|
<p class=MsoNormal>For "Mixed" and "Viewer" modes just add
|
||||||
a "-m" or "-v" to the list of java arguments. On Windows
|
a "-m" or "-v" to the list of java arguments. On Windows
|
||||||
just run the appropriately named executable (e.g. PamguardBeta_MixedMode.exe or
|
just run the appropriately named executable (e.g. PamguardBeta_MixedMode.exe or
|
||||||
PamguardBeta_ViewerMode.exe):</p>
|
PamguardBeta_ViewerMode.exe):</p>
|
||||||
|
|
||||||
<p class=MsoNormal><em><span style='font-family:"Calibri",sans-serif'>java -Xms384m
|
<p class=MsoNormal><em><span style='font-family:"Calibri",sans-serif'>java
|
||||||
-Xmx4096m -Djava.library.path=lib64 -jar PamguardBeta_xxxxxx.jar -v</span></em></p>
|
-Xms384m -Xmx4096m -Djava.library.path=lib64 -jar PamguardBeta_xxxxxx.jar -v</span></em></p>
|
||||||
|
|
||||||
<p class=MsoNormal><em><span style='font-family:"Calibri",sans-serif'> </span></em></p>
|
<p class=MsoNormal><em><span style='font-family:"Calibri",sans-serif'> </span></em></p>
|
||||||
|
|
||||||
<h1><a name="_LATEST_VERSION_2.02.03"></a><a name="_VERSION_2.02.07_January"></a><em><span
|
<h1><a name="_LATEST_VERSION_2.02.03"></a><a name="_VERSION_2.02.07_January"></a><a
|
||||||
style='font-size:12.0pt;font-family:"Cambria",serif;font-style:normal'><a
|
name="_Latest_Version_2.02.10"></a><em><span style='font-size:12.0pt;
|
||||||
href="#_Version_2.02.09_June">Latest Version 2.02.09 June 2023</a></span></em></h1>
|
font-family:"Cambria",serif;font-style:normal'><a
|
||||||
|
href="#_Version_2.02.10_January">Latest Version 2.02.10 January 2024</a></span></em></h1>
|
||||||
|
|
||||||
|
<h1><em><span style='font-size:12.0pt;font-family:"Cambria",serif;font-style:
|
||||||
|
normal'><a href="#_Version_2.02.09_June">Version 2.02.09 June 2023</a></span></em></h1>
|
||||||
|
|
||||||
<h1><em><span style='font-size:12.0pt;font-family:"Cambria",serif;font-style:
|
<h1><em><span style='font-size:12.0pt;font-family:"Cambria",serif;font-style:
|
||||||
normal'><a href="#_Version_2.02.08_May">Version 2.02.08 May 2023</a></span></em></h1>
|
normal'><a href="#_Version_2.02.08_May">Version 2.02.08 May 2023</a></span></em></h1>
|
||||||
@ -457,8 +460,86 @@ Version 2.00.10 June 2017</a></span></h1>
|
|||||||
|
|
||||||
<h1><a name="_Latest_Version_2.02.03_1"></a><a name="_Latest_Version_2.02.05"></a><a
|
<h1><a name="_Latest_Version_2.02.03_1"></a><a name="_Latest_Version_2.02.05"></a><a
|
||||||
name="_Latest_Version_2.02.06"></a><a name="_Latest_Version_2.02.07"></a><a
|
name="_Latest_Version_2.02.06"></a><a name="_Latest_Version_2.02.07"></a><a
|
||||||
name="_Latest_Version_2.02.08"></a><a name="_Version_2.02.09_June"></a><span
|
name="_Latest_Version_2.02.08"></a><a name="_Version_2.02.09_June"></a><a
|
||||||
lang=EN-US>Version 2.02.09 June 2023</span></h1>
|
name="_Version_2.02.10_January"></a>Version 2.02.10 January 2024</h1>
|
||||||
|
|
||||||
|
<h2><span lang=EN-US>New Features</span></h2>
|
||||||
|
|
||||||
|
<p class=MsoNormal><b><span lang=EN-US>Importing modules</span></b><span
|
||||||
|
lang=EN-US> from other configurations: New options from file menu allowing
|
||||||
|
import of specific modules, or module settings from other configurations. E.g.
|
||||||
|
if you had three similar configurations and had set one of them up with a new
|
||||||
|
detector, or got the click classifier settings set up just right in one of
|
||||||
|
those configurations, you can import the additional modules or the click
|
||||||
|
detector settings easily into the other configurations. </span></p>
|
||||||
|
|
||||||
|
<p class=MsoNormal><b><span lang=EN-US>Improved SUD (soundtrap compressed
|
||||||
|
files) file performance</span></b><span lang=EN-US> when scrolling through
|
||||||
|
audio data in Viewer mode. </span></p>
|
||||||
|
|
||||||
|
<p class=MsoNormal><b><span lang=EN-US>Viewer Launch</span></b><span
|
||||||
|
lang=EN-US> by right clicking on sqlite database and selecting “open with /
|
||||||
|
Pamguard ViewerMode” launcher menu option.</span></p>
|
||||||
|
|
||||||
|
<h2><span lang=EN-US>Bug Fixes</span></h2>
|
||||||
|
|
||||||
|
<p class=MsoNormal><b><span lang=EN-US>Logger Forms</span></b></p>
|
||||||
|
|
||||||
|
<p class=MsoNormal><span lang=EN-US>Boolean (logical true/false, yes/no) data
|
||||||
|
were not showing correctly in Viewer mode. Now fixed</span></p>
|
||||||
|
|
||||||
|
<p class=MsoNormal><span lang=EN-US>Data selectors for plotting on map were not
|
||||||
|
working, also fixed</span></p>
|
||||||
|
|
||||||
|
<p class=MsoNormal><span lang=EN-US>Bearing localizer running offline was not
|
||||||
|
correctly saving updated bearings to the database. Now fixed. </span></p>
|
||||||
|
|
||||||
|
<p class=MsoNormal><b><span lang=EN-US>ROCCA Classifier fixes</span></b></p>
|
||||||
|
|
||||||
|
<p class=MsoNormal><span lang=EN-US>Allow Rocca to run without classifiers:
|
||||||
|
Fixed bug that threw an error if no classifier files were specified in
|
||||||
|
Rocca Params dialog</span></p>
|
||||||
|
|
||||||
|
<p class=MsoNormal><span lang=EN-US>Fix memory issue with
|
||||||
|
RoccaContourDataBlocks not being released for garbage collection</span></p>
|
||||||
|
|
||||||
|
<p class=MsoNormal><span lang=EN-US>Set RoccaContourDataBlock objects to null
|
||||||
|
and stop PamObserver Timer to</span></p>
|
||||||
|
|
||||||
|
<p class=MsoNormal><span lang=EN-US>force release</span></p>
|
||||||
|
|
||||||
|
<p class=MsoNormal><span lang=EN-US>Fix problem tracing whistles in Rocca
|
||||||
|
spectrogram pop-up: Whistle and raw data were being cleared before the user had
|
||||||
|
time to trace out the whistle, causing PAMGuard to throw an exception.
|
||||||
|
Both were already being cleared when the pop-up window is closed, so no need to
|
||||||
|
do it here.</span></p>
|
||||||
|
|
||||||
|
<p class=MsoNormal><b><span lang=EN-US>DIFAR Module</span></b><span lang=EN-US>:
|
||||||
|
Bug crashing the module with null pointer errors fixed.</span></p>
|
||||||
|
|
||||||
|
<p class=MsoNormal><b><span lang=EN-US>Whistle Detector</span></b><span
|
||||||
|
lang=EN-US>: Fixed bug which caused the detector to slow to almost zero speed
|
||||||
|
when large complex sounds with many branches were detected. </span></p>
|
||||||
|
|
||||||
|
<p class=MsoNormal><b><span lang=EN-US>Click Detector Offline Event Marking</span></b><span
|
||||||
|
lang=EN-US>: Fixed problem of events not being correctly deleted and also of
|
||||||
|
clicks not being correctly reassigned to different events. </span></p>
|
||||||
|
|
||||||
|
<p class=MsoNormal><b><span lang=EN-US>Screen Position</span></b><span
|
||||||
|
lang=EN-US>: When using multiple monitors, if you move a configuration to a
|
||||||
|
computer with a different monitor layout, the GUI should work out if it’s
|
||||||
|
opening on a screen area which no longer exists and move itself onto the
|
||||||
|
primary monitor. </span></p>
|
||||||
|
|
||||||
|
<p class=MsoNormal><b><span lang=EN-US>File Folder Processing</span></b><span
|
||||||
|
lang=EN-US>: Previous version had a bug which caused files to not always be
|
||||||
|
sorted into the correct order for processing. This caused some instability in
|
||||||
|
some detectors, causing memory leaks when new data arrived with time stamps
|
||||||
|
earlier than already processed data in memory. This is now fixed – files are ow
|
||||||
|
correctly sorted alphabetically </span>by file name, i.e. not including the
|
||||||
|
name of the folder containing the files.</p>
|
||||||
|
|
||||||
|
<h1><span lang=EN-US>Version 2.02.09 June 2023</span></h1>
|
||||||
|
|
||||||
<h2><span lang=EN-US>Bug Fixes</span></h2>
|
<h2><span lang=EN-US>Bug Fixes</span></h2>
|
||||||
|
|
||||||
@ -484,8 +565,8 @@ bearings, the localizer was not correctly loading required raw or FFT data to
|
|||||||
input to the cross correlation algorithm. This is now fixed so that you can
|
input to the cross correlation algorithm. This is now fixed so that you can
|
||||||
reprocess bearings in viewer mode. </span></p>
|
reprocess bearings in viewer mode. </span></p>
|
||||||
|
|
||||||
<p class=MsoNormal><span lang=EN-US>Map files: Added additional exception handlers
|
<p class=MsoNormal><span lang=EN-US>Map files: Added additional exception
|
||||||
to handle corrupt map files. </span></p>
|
handlers to handle corrupt map files. </span></p>
|
||||||
|
|
||||||
<h2><span lang=EN-US>New Features</span></h2>
|
<h2><span lang=EN-US>New Features</span></h2>
|
||||||
|
|
||||||
@ -508,16 +589,16 @@ the first two characters of the string name may be. </span></p>
|
|||||||
|
|
||||||
<h2><span lang=EN-US>Bug Fixes</span></h2>
|
<h2><span lang=EN-US>Bug Fixes</span></h2>
|
||||||
|
|
||||||
<p class=MsoNormal><span lang=EN-US>Use of localization sensor and orientation data
|
<p class=MsoNormal><span lang=EN-US>Use of localization sensor and orientation
|
||||||
for static hydrophones had a bug whereby it would continually ‘forget’ angle
|
data for static hydrophones had a bug whereby it would continually ‘forget’
|
||||||
offsets applied to static hydrophones in viewer mode. This is now fixed. </span></p>
|
angle offsets applied to static hydrophones in viewer mode. This is now fixed. </span></p>
|
||||||
|
|
||||||
<p class=MsoNormal><span lang=EN-US>Click tool bar: Correctly shows event
|
<p class=MsoNormal><span lang=EN-US>Click tool bar: Correctly shows event
|
||||||
selection options even if no species classification options are in place. </span></p>
|
selection options even if no species classification options are in place. </span></p>
|
||||||
|
|
||||||
<p class=MsoNormal><span lang=EN-US>Fixed Landmarks: Earlier versions were
|
<p class=MsoNormal><span lang=EN-US>Fixed Landmarks: Earlier versions were ‘losing’
|
||||||
‘losing’ these every time PAMGuard started or new data were loaded in viewer
|
these every time PAMGuard started or new data were loaded in viewer mode. Now
|
||||||
mode. Now fixed. </span></p>
|
fixed. </span></p>
|
||||||
|
|
||||||
<p class=MsoNormal><span lang=EN-US>ROCCA: Fixed (another) memory leak which
|
<p class=MsoNormal><span lang=EN-US>ROCCA: Fixed (another) memory leak which
|
||||||
caused PAMGuard to crash when processing large data sets with the ROCCA
|
caused PAMGuard to crash when processing large data sets with the ROCCA
|
||||||
@ -563,10 +644,10 @@ whistle classification module.</span></p>
|
|||||||
<p class=MsoNormal><span lang=EN-US>SoundTrap SUD file reading. If you’re using
|
<p class=MsoNormal><span lang=EN-US>SoundTrap SUD file reading. If you’re using
|
||||||
SoundTrap autonomous recorders from Ocean Instruments, you no longer need to
|
SoundTrap autonomous recorders from Ocean Instruments, you no longer need to
|
||||||
decompress the SoundTrap files prior to processing. This will save time and a
|
decompress the SoundTrap files prior to processing. This will save time and a
|
||||||
lot of disk space. Extraction of clicks from the inbuilt SoundTrap Click detector
|
lot of disk space. Extraction of clicks from the inbuilt SoundTrap Click
|
||||||
can also happen while processing SUD file data with other detectors, thereby
|
detector can also happen while processing SUD file data with other detectors,
|
||||||
streamlining the whole processing chain. Read the online Help for details.
|
thereby streamlining the whole processing chain. Read the online Help for
|
||||||
</span></p>
|
details. </span></p>
|
||||||
|
|
||||||
<h1><span lang=EN-US>Version 2.02.05 October 2022</span></h1>
|
<h1><span lang=EN-US>Version 2.02.05 October 2022</span></h1>
|
||||||
|
|
||||||
@ -624,7 +705,7 @@ audio files. </span></p>
|
|||||||
<h2><span lang=EN-US>Bug Fixes</span></h2>
|
<h2><span lang=EN-US>Bug Fixes</span></h2>
|
||||||
|
|
||||||
<p class=MsoNormal><span lang=EN-US>Soundtrap DWV import. Will now generate
|
<p class=MsoNormal><span lang=EN-US>Soundtrap DWV import. Will now generate
|
||||||
binary files even if DWV file doesnÂ’t exist (which is correct behavior in
|
binary files even if DWV file doesn‚’t exist (which is correct behavior in
|
||||||
quiet conditions when no clicks were detected). </span></p>
|
quiet conditions when no clicks were detected). </span></p>
|
||||||
|
|
||||||
<p class=MsoNormal><span lang=EN-US>Spectrogram. Changes to stop occasional
|
<p class=MsoNormal><span lang=EN-US>Spectrogram. Changes to stop occasional
|
||||||
@ -659,8 +740,8 @@ running in real time. Added template names based on file names. </p>
|
|||||||
<p class=MsoNormal>#13 Merging files when offline processing file folders: Had
|
<p class=MsoNormal>#13 Merging files when offline processing file folders: Had
|
||||||
an error introduced in last release which caused it to fail to recognise gaps
|
an error introduced in last release which caused it to fail to recognise gaps
|
||||||
between files, meaning that some output data (i.e. after a gap) would have an
|
between files, meaning that some output data (i.e. after a gap) would have an
|
||||||
incorrect time stamp. This did not affect data if the ‘merge contiguous
|
incorrect time stamp. This did not affect data if the ‘merge contiguous files’
|
||||||
files’ option was not selected. </p>
|
option was not selected. </p>
|
||||||
|
|
||||||
<p class=MsoNormal>#14 Logger forms data were not plotting correctly. This was
|
<p class=MsoNormal>#14 Logger forms data were not plotting correctly. This was
|
||||||
due to the required data selection functions not being fully implemented. This
|
due to the required data selection functions not being fully implemented. This
|
||||||
@ -669,9 +750,9 @@ selections from drop down lists within any form.</p>
|
|||||||
|
|
||||||
<p class=MsoNormal> </p>
|
<p class=MsoNormal> </p>
|
||||||
|
|
||||||
<p class=MsoNormal>Note that updates have also been made to the Matlab interface
|
<p class=MsoNormal>Note that updates have also been made to the Matlab
|
||||||
to PAMGuard binary files, which has now also been migrated to GitHub at <a
|
interface to PAMGuard binary files, which has now also been migrated to GitHub
|
||||||
href="https://github.com/PAMGuard/PAMGuardMatlab">https://github.com/PAMGuard/PAMGuardMatlab</a>.
|
at <a href="https://github.com/PAMGuard/PAMGuardMatlab">https://github.com/PAMGuard/PAMGuardMatlab</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h1> </h1>
|
<h1> </h1>
|
||||||
@ -686,9 +767,8 @@ the TF FX display to crash if no data were displayed.</span></p>
|
|||||||
<p class=MsoNormal><span lang=EN-US>See major release notes for V 2.02.01
|
<p class=MsoNormal><span lang=EN-US>See major release notes for V 2.02.01
|
||||||
below. </span></p>
|
below. </span></p>
|
||||||
|
|
||||||
<p class=MsoNormal><span lang=EN-US>Bug 495: TD FX display throws
|
<p class=MsoNormal><span lang=EN-US>Bug 495: TD FX display throws NullPointerException
|
||||||
NullPointerException if user has removed all data units and then moves mouse
|
if user has removed all data units and then moves mouse over display area.</span></p>
|
||||||
over display area.</span></p>
|
|
||||||
|
|
||||||
<h1><a name="_Latest_Version_2.02.01"></a><span lang=EN-US>Version 2.02.01
|
<h1><a name="_Latest_Version_2.02.01"></a><span lang=EN-US>Version 2.02.01
|
||||||
October 2021</span></h1>
|
October 2021</span></h1>
|
||||||
@ -711,11 +791,11 @@ font-family:"Times New Roman",serif'> </span></p>
|
|||||||
|
|
||||||
<h2>File Format Change</h2>
|
<h2>File Format Change</h2>
|
||||||
|
|
||||||
<p class=MsoNormal>Changes have been made to the binary file format to support
|
<p class=MsoNormal>Changes have been made to the binary file format to support the
|
||||||
the output of additional noise outputs for certain detectors (See below).
|
output of additional noise outputs for certain detectors (See below). Binary
|
||||||
Binary files created with this version will not be compatible with earlier
|
files created with this version will not be compatible with earlier versions
|
||||||
versions 2.01.### and below. This version will read and may convert earlier
|
2.01.### and below. This version will read and may convert earlier format
|
||||||
format binary files.</p>
|
binary files.</p>
|
||||||
|
|
||||||
<p class=MsoNormal style='margin-bottom:0cm'><span style='font-size:12.0pt;
|
<p class=MsoNormal style='margin-bottom:0cm'><span style='font-size:12.0pt;
|
||||||
font-family:"Times New Roman",serif'> </span></p>
|
font-family:"Times New Roman",serif'> </span></p>
|
||||||
@ -733,10 +813,10 @@ href="http://www.pamguard.org/downloads.php?cat_id=3">here</a>.</p>
|
|||||||
<p class=MsoNormal><b><span lang=EN-US>Detection Group Localiser</span></b><span
|
<p class=MsoNormal><b><span lang=EN-US>Detection Group Localiser</span></b><span
|
||||||
lang=EN-US> </span></p>
|
lang=EN-US> </span></p>
|
||||||
|
|
||||||
<p class=MsoNormal>This module has been renamed “Detection Grouper”, so
|
<p class=MsoNormal>This module has been renamed “Detection Grouper”, so as to
|
||||||
as to avoid confusion with the Group 3D localizer. This is because the
|
avoid confusion with the Group 3D localizer. This is because the Detection
|
||||||
Detection Grouper is more for organizing data into groups to be localized than
|
Grouper is more for organizing data into groups to be localized than it is for
|
||||||
it is for doing localization.</p>
|
doing localization.</p>
|
||||||
|
|
||||||
<p class=MsoNormal><b><span lang=EN-US>Minor Bug Fixes</span></b><span
|
<p class=MsoNormal><b><span lang=EN-US>Minor Bug Fixes</span></b><span
|
||||||
lang=EN-US> </span></p>
|
lang=EN-US> </span></p>
|
||||||
@ -791,9 +871,9 @@ lang=EN-US> </span>Allow Clip Generator to create both a binary record and a
|
|||||||
wav file </p>
|
wav file </p>
|
||||||
|
|
||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>5. </span><span
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>5. </span><span
|
||||||
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span>
|
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span><span
|
||||||
Implemented a Backup Manager for backing up multiple types of data to multiple
|
lang=EN-US> </span>Implemented a Backup Manager for backing up multiple types
|
||||||
locations] </p>
|
of data to multiple locations] </p>
|
||||||
|
|
||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>6. </span><span
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>6. </span><span
|
||||||
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span><span
|
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span><span
|
||||||
@ -834,8 +914,8 @@ lang=EN-US> </span>Extend the Hyperbolic Localiser to handle 2D planar arrays
|
|||||||
(previously limited to 3D volumetric arrays) </p>
|
(previously limited to 3D volumetric arrays) </p>
|
||||||
|
|
||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>14. </span><span
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>14. </span><span
|
||||||
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span>
|
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span><span
|
||||||
new CPOD features </p>
|
lang=EN-US> </span>new CPOD features </p>
|
||||||
|
|
||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>15. </span><span
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>15. </span><span
|
||||||
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span><span
|
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span><span
|
||||||
@ -843,28 +923,29 @@ lang=EN-US> </span>Better interpolation of data by the Decimator when
|
|||||||
decimating/upsampling by a non-integer amount </p>
|
decimating/upsampling by a non-integer amount </p>
|
||||||
|
|
||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>16. </span><span
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>16. </span><span
|
||||||
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span>
|
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span><span
|
||||||
Noise Level Outputs - as an aid to performance diagnosis, some detectors
|
lang=EN-US> </span>Noise Level Outputs - as an aid to performance diagnosis,
|
||||||
(currently the GPL, Click Detector and Whistle and Moan Detector) are
|
some detectors (currently the GPL, Click Detector and Whistle and Moan
|
||||||
outputting additional noise metrics to their binary output files. These can be
|
Detector) are outputting additional noise metrics to their binary output files.
|
||||||
read with the <a href="https://sourceforge.net/projects/pamguard/files/Matlab/">PAMGuard
|
These can be read with the <a
|
||||||
Matlab library</a> and used to diagnose system performance in varying noise conditions.
|
href="https://sourceforge.net/projects/pamguard/files/Matlab/">PAMGuard Matlab
|
||||||
Improved displays within PAMGuard for these noise metrics will be included in a
|
library</a> and used to diagnose system performance in varying noise
|
||||||
future release. </p>
|
conditions. Improved displays within PAMGuard for these noise metrics will be
|
||||||
|
included in a future release. </p>
|
||||||
|
|
||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>17. </span><span
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>17. </span><span
|
||||||
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span><span
|
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span><span
|
||||||
lang=EN-US> </span>An implementation of the Generalized Power Law Detector,
|
lang=EN-US> </span>An implementation of the Generalized Power Law Detector,
|
||||||
developed by Tyler Helble ([Helble et al., ‘A generalized power-law detection
|
developed by Tyler Helble ([Helble et al., ‘A generalized power-law detection
|
||||||
algorithm for humpback whale vocalizations’, The Journal of the Acoustical
|
algorithm for humpback whale vocalizations’, The Journal of the Acoustical
|
||||||
Society of America, vol. 131, no. 4, pp. 2682–2699, 2012) is now available.
|
Society of America, vol. 131, no. 4, pp. 2682–2699, 2012) is now available. For
|
||||||
For details, see the online help </p>
|
details, see the online help </p>
|
||||||
|
|
||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>18. </span><span
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>18. </span><span
|
||||||
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span>
|
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span><span
|
||||||
A Deep Learning module for sound classification is now available. This allows
|
lang=EN-US> </span>A Deep Learning module for sound classification is now
|
||||||
users to deploy a large variety of deep learning models natively in PAMGuard.
|
available. This allows users to deploy a large variety of deep learning models
|
||||||
For details, see the <a
|
natively in PAMGuard. For details, see the <a
|
||||||
href="https://github.com/macster110/PAMGuard_DeepLearningSegmenter/blob/master/deep_learning_help.md">online
|
href="https://github.com/macster110/PAMGuard_DeepLearningSegmenter/blob/master/deep_learning_help.md">online
|
||||||
help</a>. </p>
|
help</a>. </p>
|
||||||
|
|
||||||
@ -1123,8 +1204,8 @@ lang=EN-US> </span>Add option to alarm module to attach screenshots of all
|
|||||||
frames to email alerts. </p>
|
frames to email alerts. </p>
|
||||||
|
|
||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>7. </span><span
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>7. </span><span
|
||||||
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span>
|
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span><span
|
||||||
Add Beamformer and Bearing Localiser modules </p>
|
lang=EN-US> </span>Add Beamformer and Bearing Localiser modules </p>
|
||||||
|
|
||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>8. </span><span
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>8. </span><span
|
||||||
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span><span
|
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span><span
|
||||||
@ -1205,8 +1286,8 @@ lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> &nb
|
|||||||
lang=EN-US> </span>Bug 437. Right whale detector crashing if no input was set.</p>
|
lang=EN-US> </span>Bug 437. Right whale detector crashing if no input was set.</p>
|
||||||
|
|
||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>6. </span><span
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>6. </span><span
|
||||||
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span>
|
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span><span
|
||||||
Bug 438. Text not showing in tabs in Night colour mode.</p>
|
lang=EN-US> </span>Bug 438. Text not showing in tabs in Night colour mode.</p>
|
||||||
|
|
||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>7. </span><span
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>7. </span><span
|
||||||
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span><span
|
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span><span
|
||||||
@ -1218,8 +1299,8 @@ lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> &nb
|
|||||||
Bug 440. Measurement Computing Cards not enumerating properly.</p>
|
Bug 440. Measurement Computing Cards not enumerating properly.</p>
|
||||||
|
|
||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>9. </span><span
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>9. </span><span
|
||||||
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span>
|
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span><span
|
||||||
Bug 441. Plot coordinate calculations incorrect in PamAxis.</p>
|
lang=EN-US> </span>Bug 441. Plot coordinate calculations incorrect in PamAxis.</p>
|
||||||
|
|
||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>10. </span><span
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>10. </span><span
|
||||||
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span><span
|
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span><span
|
||||||
@ -1232,9 +1313,9 @@ lang=EN-US> </span>Bug 443. NI playback crashing immediately if a device is not
|
|||||||
present.</p>
|
present.</p>
|
||||||
|
|
||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>12. </span><span
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>12. </span><span
|
||||||
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span>
|
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span><span
|
||||||
Bug 444. Bug in data selector which caused it to mess up history of recent psf
|
lang=EN-US> </span>Bug 444. Bug in data selector which caused it to mess up
|
||||||
files.</p>
|
history of recent psf files.</p>
|
||||||
|
|
||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>13. </span><span
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>13. </span><span
|
||||||
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span><span
|
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span><span
|
||||||
@ -1247,9 +1328,9 @@ Bug 446. Multiple PamDataBlocks with same name turn on/off together in
|
|||||||
Spectrogram display.</p>
|
Spectrogram display.</p>
|
||||||
|
|
||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>15. </span><span
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>15. </span><span
|
||||||
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span>
|
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span><span
|
||||||
Bug 447. Viewer mode throws exception when trying to load beamformer
|
lang=EN-US> </span>Bug 447. Viewer mode throws exception when trying to load
|
||||||
localisations</p>
|
beamformer localisations</p>
|
||||||
|
|
||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>16. </span><span
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>16. </span><span
|
||||||
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span><span
|
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span><span
|
||||||
@ -1374,8 +1455,8 @@ lang=EN-US> </span>Bug 431. Error when trying to mark section of spectrogram to
|
|||||||
send to Bearing Calculator module</p>
|
send to Bearing Calculator module</p>
|
||||||
|
|
||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>6. </span><span
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>6. </span><span
|
||||||
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span>
|
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span><span
|
||||||
Bug 432. MySQL database interface - connection problems</p>
|
lang=EN-US> </span>Bug 432. MySQL database interface - connection problems</p>
|
||||||
|
|
||||||
<p class=MsoNormal><b><span lang=EN-US>Upgrades</span></b></p>
|
<p class=MsoNormal><b><span lang=EN-US>Upgrades</span></b></p>
|
||||||
|
|
||||||
@ -1479,8 +1560,8 @@ Upgrades to the Group Localiser, including better error estimation.</p>
|
|||||||
|
|
||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>2. </span><span
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>2. </span><span
|
||||||
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span><span
|
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span><span
|
||||||
lang=EN-US> </span>Click Train Detector upgrades, including ability to import time
|
lang=EN-US> </span>Click Train Detector upgrades, including ability to import
|
||||||
chunks from csv file for batch processing.</p>
|
time chunks from csv file for batch processing.</p>
|
||||||
|
|
||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>3. </span><span
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>3. </span><span
|
||||||
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span><span
|
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span><span
|
||||||
@ -1502,8 +1583,8 @@ lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> &nb
|
|||||||
New Analog Array Sensors module, to read data from 3-axis accelerometers.</p>
|
New Analog Array Sensors module, to read data from 3-axis accelerometers.</p>
|
||||||
|
|
||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>6. </span><span
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>6. </span><span
|
||||||
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span>
|
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span><span
|
||||||
Send Email option added to Alarm module.</p>
|
lang=EN-US> </span>Send Email option added to Alarm module.</p>
|
||||||
|
|
||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>7. </span><span
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>7. </span><span
|
||||||
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span><span
|
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span><span
|
||||||
@ -1625,8 +1706,8 @@ with installation and use of this version.</span></p>
|
|||||||
|
|
||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>1. </span><span
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>1. </span><span
|
||||||
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>
|
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>
|
||||||
</span>Bug 338. Problem displaying coastlines and bathymetric contours around
|
</span>Bug 338. Problem displaying coastlines and bathymetric contours around the
|
||||||
the dateline (+/- 180 longitude) in the map.</p>
|
dateline (+/- 180 longitude) in the map.</p>
|
||||||
|
|
||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>2. </span><span
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>2. </span><span
|
||||||
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>
|
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>
|
||||||
@ -1864,17 +1945,17 @@ interface when importing Soundtrap data. Also changed the default date/time
|
|||||||
format to ISO8601 standard.</p>
|
format to ISO8601 standard.</p>
|
||||||
|
|
||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>2. </span><span
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>2. </span><span
|
||||||
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span>
|
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span><span
|
||||||
A number of upgrades and fixes to the Localiser algorithms, including expanding
|
lang=EN-US> </span>A number of upgrades and fixes to the Localiser algorithms,
|
||||||
to work with whistles.</p>
|
including expanding to work with whistles.</p>
|
||||||
|
|
||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>3. </span><span
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>3. </span><span
|
||||||
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span>
|
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span><span
|
||||||
Added option to export all settings and parameters as an XML-formatted file. Note
|
lang=EN-US> </span>Added option to export all settings and parameters as an
|
||||||
that this required changes to the structure of the Array Manager, and as such
|
XML-formatted file. Note that this required changes to the structure of the
|
||||||
any settings (psf) files created with this version of Pamguard cannot be used
|
Array Manager, and as such any settings (psf) files created with this version
|
||||||
in older versions. Older psf files can be loaded with this version, but will be
|
of Pamguard cannot be used in older versions. Older psf files can be loaded
|
||||||
converted.</p>
|
with this version, but will be converted.</p>
|
||||||
|
|
||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>4. </span><span
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>4. </span><span
|
||||||
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span><span
|
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span><span
|
||||||
@ -1948,11 +2029,11 @@ trying to classify a boxed whistle</p>
|
|||||||
<p class=MsoNormal><b><span lang=EN-US>Upgrades</span></b></p>
|
<p class=MsoNormal><b><span lang=EN-US>Upgrades</span></b></p>
|
||||||
|
|
||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>1. </span><span
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>1. </span><span
|
||||||
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span>
|
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> </span><span
|
||||||
During conversion from Core to Beta versions, if there are any problems
|
lang=EN-US> </span>During conversion from Core to Beta versions, if there are
|
||||||
matching database units to binary store units the UID values will now be set to
|
any problems matching database units to binary store units the UID values will
|
||||||
negative numbers instead of leaving them null. The user is warned about this
|
now be set to negative numbers instead of leaving them null. The user is warned
|
||||||
and encouraged to manually fix the database.</p>
|
about this and encouraged to manually fix the database.</p>
|
||||||
|
|
||||||
<!-- ************************************************************************************************************************** -->
|
<!-- ************************************************************************************************************************** -->
|
||||||
|
|
||||||
@ -2126,26 +2207,26 @@ the PAMGuard Viewer the older data will be converted to the new format (see
|
|||||||
below for details).</span></p>
|
below for details).</span></p>
|
||||||
|
|
||||||
<p class=MsoNormal><span lang=EN-US>The most significant change in the binary
|
<p class=MsoNormal><span lang=EN-US>The most significant change in the binary
|
||||||
file format is the addition of a Unique Data Identifier (UID) to each unit of data.
|
file format is the addition of a Unique Data Identifier (UID) to each unit of
|
||||||
This is intended to aid in offline analysis by making it easier for the user to
|
data. This is intended to aid in offline analysis by making it easier for the
|
||||||
link what they are seeing on different PAMGuard displays and also to link with
|
user to link what they are seeing on different PAMGuard displays and also to
|
||||||
any data post processed in Matlab or other custom analysis software. UID’s
|
link with any data post processed in Matlab or other custom analysis software.
|
||||||
are also added to PAMGuard database tables. </span></p>
|
UID’s are also added to PAMGuard database tables. </span></p>
|
||||||
|
|
||||||
<h4><span lang=EN-US>Converting Old Data</span></h4>
|
<h4><span lang=EN-US>Converting Old Data</span></h4>
|
||||||
|
|
||||||
<p class=MsoNormal><span lang=EN-US>If old data are opened with the PAMGuard
|
<p class=MsoNormal><span lang=EN-US>If old data are opened with the PAMGuard
|
||||||
viewer they will automatically be converted. For safety, the original binary
|
viewer they will automatically be converted. For safety, the original binary
|
||||||
files will not be overwritten and the new data will be placed in a new folder
|
files will not be overwritten and the new data will be placed in a new folder
|
||||||
on your computer with the same path as the old data, but suffixed with
|
on your computer with the same path as the old data, but suffixed with ‘_WithUID’,
|
||||||
‘_WithUID’, e.g. if your binary data were previously stored in the folder
|
e.g. if your binary data were previously stored in the folder
|
||||||
C:\MySurvey\binarydata the new data will be written to
|
C:\MySurvey\binarydata the new data will be written to
|
||||||
C:\MySurvey\binarydata_WithUID. </span></p>
|
C:\MySurvey\binarydata_WithUID. </span></p>
|
||||||
|
|
||||||
<p class=MsoNormal><span lang=EN-US>The additional UID column will be added to
|
<p class=MsoNormal><span lang=EN-US>The additional UID column will be added to
|
||||||
all database tables and populated with unique values. For data which are stored
|
all database tables and populated with unique values. For data which are stored
|
||||||
in both the binary files and in database tables, the same UID’s will be used
|
in both the binary files and in database tables, the same UID’s will be used in
|
||||||
in both data stores. </span></p>
|
both data stores. </span></p>
|
||||||
|
|
||||||
<h3><span lang=EN-US>New Displays</span></h3>
|
<h3><span lang=EN-US>New Displays</span></h3>
|
||||||
|
|
||||||
@ -2214,8 +2295,8 @@ Hawaii/Temperate Pacific/North Atlantic datasets. This has been corrected.</p>
|
|||||||
|
|
||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>2.</span><span
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>2.</span><span
|
||||||
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>
|
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>
|
||||||
</span>Bug 320. Pamguard stopped reading Click Detector Event data from
|
</span>Bug 320. Pamguard stopped reading Click Detector Event data from database
|
||||||
database when target motion analysis information was encountered. Corrected.</p>
|
when target motion analysis information was encountered. Corrected.</p>
|
||||||
|
|
||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>3.</span><span
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>3.</span><span
|
||||||
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>
|
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>
|
||||||
@ -2236,8 +2317,8 @@ lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'> &nb
|
|||||||
|
|
||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>3.</span><span
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>3.</span><span
|
||||||
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>
|
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>
|
||||||
</span>Rocca Module: added StartHr, ProportionWhists and ProportionClicks parameters
|
</span>Rocca Module: added StartHr, ProportionWhists and ProportionClicks
|
||||||
to Event classifier</p>
|
parameters to Event classifier</p>
|
||||||
|
|
||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>4.</span><span
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>4.</span><span
|
||||||
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>
|
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>
|
||||||
@ -2379,19 +2460,19 @@ November 2016</span></h1>
|
|||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>1.
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>1.
|
||||||
Bug 303. Some ASIO sound cards not working with either ASIO system in PAMGuard.
|
Bug 303. Some ASIO sound cards not working with either ASIO system in PAMGuard.
|
||||||
For the PAMGuard ASIO system, this was due to a data format used by some sound
|
For the PAMGuard ASIO system, this was due to a data format used by some sound
|
||||||
cards never being properly implemented. For the “New ASIO system” which
|
cards never being properly implemented. For the “New ASIO system” which is
|
||||||
is based on jAsioHost, the unpacking of that format contained a bug which
|
based on jAsioHost, the unpacking of that format contained a bug which returned
|
||||||
returned incorrect numbers, so data were swamped with noise. Both systems are
|
incorrect numbers, so data were swamped with noise. Both systems are now fixed.
|
||||||
now fixed. By preference, users should use the PAMGuard ASIO system since the
|
By preference, users should use the PAMGuard ASIO system since the JAsioHost
|
||||||
JAsioHost based system seems to drop samples when many channels are running at
|
based system seems to drop samples when many channels are running at high
|
||||||
high sample rate. </span></p>
|
sample rate. </span></p>
|
||||||
|
|
||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'>2.<span style='font-size-adjust: none;
|
<p class=MsoListParagraph style='text-indent:-18.0pt'>2.<span style='font-size-adjust: none;
|
||||||
font-stretch: normal'><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>
|
font-stretch: normal'><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>
|
||||||
</span></span><span lang=EN-US>Bug 305. Date and Time not being correctly extracted
|
</span></span><span lang=EN-US>Bug 305. Date and Time not being correctly
|
||||||
from wav files created using SoundTrap recorders. Fixed by correctly finding
|
extracted from wav files created using SoundTrap recorders. Fixed by correctly
|
||||||
and unpacking information in the accompanying xml log files that come with
|
finding and unpacking information in the accompanying xml log files that come
|
||||||
SoundTrap files. </span></p>
|
with SoundTrap files. </span></p>
|
||||||
|
|
||||||
<h1><a name="_Latest_Version_1.15.06"></a><span lang=EN-US>Version 1.15.06
|
<h1><a name="_Latest_Version_1.15.06"></a><span lang=EN-US>Version 1.15.06
|
||||||
November 2016</span></h1>
|
November 2016</span></h1>
|
||||||
@ -2671,8 +2752,8 @@ being imported into the new database. Problem 2 was that indexing of imported
|
|||||||
click events in the new database was incorrect. Both these issues have now been
|
click events in the new database was incorrect. Both these issues have now been
|
||||||
fixed. </span></p>
|
fixed. </span></p>
|
||||||
|
|
||||||
<h1><a name="_Latest_Version_1.15.02"></a><span lang=EN-US>Version 1.15.02
|
<h1><a name="_Latest_Version_1.15.02"></a><span lang=EN-US>Version 1.15.02 March
|
||||||
March 2016</span></h1>
|
2016</span></h1>
|
||||||
|
|
||||||
<p class=MsoNormal>A number of small bug fixes following release of 1.15.00.</p>
|
<p class=MsoNormal>A number of small bug fixes following release of 1.15.00.</p>
|
||||||
|
|
||||||
@ -2749,8 +2830,8 @@ same click multiple times</p>
|
|||||||
|
|
||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>1.</span><span
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>1.</span><span
|
||||||
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>
|
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>
|
||||||
</span><span lang=EN-US>Bug 253. Database import fails when Access database contains
|
</span><span lang=EN-US>Bug 253. Database import fails when Access database
|
||||||
queries. Fixed.</span></p>
|
contains queries. Fixed.</span></p>
|
||||||
|
|
||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>2.</span><span
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>2.</span><span
|
||||||
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>
|
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>
|
||||||
@ -2824,13 +2905,13 @@ for details. </span></p>
|
|||||||
|
|
||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>3.</span><span
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>3.</span><span
|
||||||
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>
|
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>
|
||||||
</span><span lang=EN-US>GPS Loading into PAMGuard Viewer. This has been
|
</span><span lang=EN-US>GPS Loading into PAMGuard Viewer. This has been modified
|
||||||
modified so that the rules governing GPS data collection and storage also apply
|
so that the rules governing GPS data collection and storage also apply when
|
||||||
when loading data from the database. For instance, if you've stored all GPS
|
loading data from the database. For instance, if you've stored all GPS data,
|
||||||
data, you've probably got a record every second in the database which can
|
you've probably got a record every second in the database which can create
|
||||||
create memory overflows if you try to load a lot of data in the viewer. You can
|
memory overflows if you try to load a lot of data in the viewer. You can now
|
||||||
now tell PAMGuard to only load a data point every n seconds which will reduce
|
tell PAMGuard to only load a data point every n seconds which will reduce the
|
||||||
the number of points loaded. Useful when making large scale overview maps of a
|
number of points loaded. Useful when making large scale overview maps of a
|
||||||
survey. </span></p>
|
survey. </span></p>
|
||||||
|
|
||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>4.</span><span
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>4.</span><span
|
||||||
@ -3129,9 +3210,8 @@ to read on a time. Fixed</p>
|
|||||||
|
|
||||||
<p class=MsoNormal><i>Menu Layout</i></p>
|
<p class=MsoNormal><i>Menu Layout</i></p>
|
||||||
|
|
||||||
<p class=MsoNormal>The PAMGuard menus have been rearranged into a more
|
<p class=MsoNormal>The PAMGuard menus have been rearranged into a more intuitive
|
||||||
intuitive grouping which we believe will help users find functionality more
|
grouping which we believe will help users find functionality more easily. </p>
|
||||||
easily. </p>
|
|
||||||
|
|
||||||
<p class=MsoNormal>'Detection' menu has been renamed to 'Settings' since many
|
<p class=MsoNormal>'Detection' menu has been renamed to 'Settings' since many
|
||||||
menu items within this menu were not directly to do with 'Detection'.</p>
|
menu items within this menu were not directly to do with 'Detection'.</p>
|
||||||
@ -3197,8 +3277,8 @@ whistles as well. </p>
|
|||||||
<p class=MsoNormal>This module, funded by NOAA for the South West Fisheries
|
<p class=MsoNormal>This module, funded by NOAA for the South West Fisheries
|
||||||
Science Centre (SWFSC), measures pitch and roll from analogue accelerometer
|
Science Centre (SWFSC), measures pitch and roll from analogue accelerometer
|
||||||
sensors in a hydrophone. Data are fed real time into the updated hydrophone
|
sensors in a hydrophone. Data are fed real time into the updated hydrophone
|
||||||
array manager in order that bearings from a tetrahedral tracking array are correctly
|
array manager in order that bearings from a tetrahedral tracking array are
|
||||||
calculated in real world coordinates. </p>
|
correctly calculated in real world coordinates. </p>
|
||||||
|
|
||||||
<p class=MsoNormal><i>Wild ArcGIS Interface</i> (Maps and Mapping group)</p>
|
<p class=MsoNormal><i>Wild ArcGIS Interface</i> (Maps and Mapping group)</p>
|
||||||
|
|
||||||
@ -3208,12 +3288,12 @@ marine mammal survey package. See online help for details. </p>
|
|||||||
|
|
||||||
<p class=MsoNormal><i>Alarms</i> (Utilities Group)</p>
|
<p class=MsoNormal><i>Alarms</i> (Utilities Group)</p>
|
||||||
|
|
||||||
<p class=MsoNormal>This is a general system of visual and audio alarms developed
|
<p class=MsoNormal>This is a general system of visual and audio alarms
|
||||||
by Doug Gillespie for use on a variety of projects. The alarms can be coupled
|
developed by Doug Gillespie for use on a variety of projects. The alarms can be
|
||||||
to any module or detector in PAMGuard. Where appropriate, modules can control
|
coupled to any module or detector in PAMGuard. Where appropriate, modules can
|
||||||
which of their data will cause an alarm action (e.g. in the Click detector you
|
control which of their data will cause an alarm action (e.g. in the Click
|
||||||
can set which types of classified click will fire the alarm). See online help
|
detector you can set which types of classified click will fire the alarm). See
|
||||||
for details. </p>
|
online help for details. </p>
|
||||||
|
|
||||||
<p class=MsoNormal><i>Noise Band Monitor</i> (Sound Processing Group)</p>
|
<p class=MsoNormal><i>Noise Band Monitor</i> (Sound Processing Group)</p>
|
||||||
|
|
||||||
@ -3222,9 +3302,9 @@ of third octave noise bands. See online help for details. </p>
|
|||||||
|
|
||||||
<p class=MsoNormal><i>Filtered Noise Measurement</i> (Sound Processing Group)</p>
|
<p class=MsoNormal><i>Filtered Noise Measurement</i> (Sound Processing Group)</p>
|
||||||
|
|
||||||
<p class=MsoNormal>This module, developed by Douglas Gillespie, measures noise
|
<p class=MsoNormal>This module, developed by Douglas Gillespie, measures noise levels
|
||||||
levels in a single frequency band using a variety of filter functions. See
|
in a single frequency band using a variety of filter functions. See online help
|
||||||
online help for details. </p>
|
for details. </p>
|
||||||
|
|
||||||
<p class=MsoNormal><i>Envelope Tracing</i> (Beta Only, Sound Processing Group)</p>
|
<p class=MsoNormal><i>Envelope Tracing</i> (Beta Only, Sound Processing Group)</p>
|
||||||
|
|
||||||
@ -3260,11 +3340,10 @@ different. Details are available in the online help. </p>
|
|||||||
<p class=MsoNormal><i>FLAC File Support</i></p>
|
<p class=MsoNormal><i>FLAC File Support</i></p>
|
||||||
|
|
||||||
<p class=MsoNormal>Can now read raw audio data direct from FLAC files. <a
|
<p class=MsoNormal>Can now read raw audio data direct from FLAC files. <a
|
||||||
href="http://en.wikipedia.org/wiki/FLAC">FLAC</a> is a lossless compression
|
href="http://en.wikipedia.org/wiki/FLAC">FLAC</a> is a lossless compression algorithm
|
||||||
algorithm for audio data. Files, or folders of files are accessed in the same way
|
for audio data. Files, or folders of files are accessed in the same way as WAV
|
||||||
as WAV and AIFF files in the Sound Acquisition module. In a future release we
|
and AIFF files in the Sound Acquisition module. In a future release we also
|
||||||
also hope to provide support for writing FLAC files from the sound recorder
|
hope to provide support for writing FLAC files from the sound recorder module. </p>
|
||||||
module. </p>
|
|
||||||
|
|
||||||
<p class=MsoNormal><i>Sound Recorder Module</i></p>
|
<p class=MsoNormal><i>Sound Recorder Module</i></p>
|
||||||
|
|
||||||
@ -3307,8 +3386,9 @@ shaped Finite Impulse Response filters (see online help for details). </p>
|
|||||||
|
|
||||||
<p class=MsoNormal><i>Radar Display</i></p>
|
<p class=MsoNormal><i>Radar Display</i></p>
|
||||||
|
|
||||||
<p class=MsoNormal>Can now show bearings relative to true North OR the vessel heading.
|
<p class=MsoNormal>Can now show bearings relative to true North OR the vessel
|
||||||
Also has the option of only showing certain types of click and whistle.</p>
|
heading. Also has the option of only showing certain types of click and
|
||||||
|
whistle.</p>
|
||||||
|
|
||||||
<p class=MsoNormal><b>Bug Fixes</b></p>
|
<p class=MsoNormal><b>Bug Fixes</b></p>
|
||||||
|
|
||||||
@ -3387,8 +3467,8 @@ survey software package.</p>
|
|||||||
|
|
||||||
<p class=MsoNormal style='margin-left:36.0pt'><i>Core Functionality</i></p>
|
<p class=MsoNormal style='margin-left:36.0pt'><i>Core Functionality</i></p>
|
||||||
|
|
||||||
<p class=MsoNormal style='margin-left:36.0pt'>New storage options have been implemented
|
<p class=MsoNormal style='margin-left:36.0pt'>New storage options have been
|
||||||
which give the user greater control of where data are stored. </p>
|
implemented which give the user greater control of where data are stored. </p>
|
||||||
|
|
||||||
<p class=MsoNormal style='margin-left:36.0pt'>Modules have been arranged into
|
<p class=MsoNormal style='margin-left:36.0pt'>Modules have been arranged into
|
||||||
different groups in the configuration menus and tool tip texts have been added
|
different groups in the configuration menus and tool tip texts have been added
|
||||||
@ -3475,8 +3555,8 @@ inter-detection interval.</p>
|
|||||||
margin-left:36.0pt'> </p>
|
margin-left:36.0pt'> </p>
|
||||||
|
|
||||||
<p class=MsoNormal style='margin-top:0cm;margin-right:0cm;margin-bottom:0cm;
|
<p class=MsoNormal style='margin-top:0cm;margin-right:0cm;margin-bottom:0cm;
|
||||||
margin-left:36.0pt'>Target Motion Analysis: Updated target motion analysis module
|
margin-left:36.0pt'>Target Motion Analysis: Updated target motion analysis
|
||||||
so that it works in three (as opposed to two) dimensions.</p>
|
module so that it works in three (as opposed to two) dimensions.</p>
|
||||||
|
|
||||||
<p class=MsoNormal style='margin-top:0cm;margin-right:0cm;margin-bottom:0cm;
|
<p class=MsoNormal style='margin-top:0cm;margin-right:0cm;margin-bottom:0cm;
|
||||||
margin-left:36.0pt'> </p>
|
margin-left:36.0pt'> </p>
|
||||||
@ -3619,8 +3699,8 @@ Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif
|
|||||||
|
|
||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
|
||||||
Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>
|
Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>
|
||||||
</span>Bearings can be calculated using the envelope of the waveform rather than
|
</span>Bearings can be calculated using the envelope of the waveform rather
|
||||||
the full waveform. The waveform or envelope can also be filtered prior to
|
than the full waveform. The waveform or envelope can also be filtered prior to
|
||||||
bearing calculation.</p>
|
bearing calculation.</p>
|
||||||
|
|
||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
|
||||||
@ -3713,8 +3793,8 @@ the correct data stream. This has been fixed. </p>
|
|||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
|
||||||
Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>
|
Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>
|
||||||
</span>Whistle classifier has some new features in the classifier training
|
</span>Whistle classifier has some new features in the classifier training
|
||||||
panel. It is also now possible to export training data files directly from binary
|
panel. It is also now possible to export training data files directly from
|
||||||
data files. </p>
|
binary data files. </p>
|
||||||
|
|
||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
|
||||||
Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>
|
Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>
|
||||||
@ -3841,14 +3921,14 @@ modules which resulted in a number of bugs which could cause confusion as to
|
|||||||
which hydrophones were being used during localisation or during calibrated
|
which hydrophones were being used during localisation or during calibrated
|
||||||
measurement. The situation tended to only arise with a small number of ASIO
|
measurement. The situation tended to only arise with a small number of ASIO
|
||||||
sound cards such as the RME Fireface 400 on which the most useful inputs, the
|
sound cards such as the RME Fireface 400 on which the most useful inputs, the
|
||||||
balanced line inputs, are hardware channels 4,5,6 and 7 on the back of the
|
balanced line inputs, are hardware channels 4,5,6 and 7 on the back of the instrument.
|
||||||
instrument. (On the Fireface 800, the balanced line inputs are channels 0 to
|
(On the Fireface 800, the balanced line inputs are channels 0 to 7). When using
|
||||||
7). When using the National Instruments system, data were always sent into the
|
the National Instruments system, data were always sent into the rest of
|
||||||
rest of PAMGUARD with sequential channel numbering starting at 0. This was
|
PAMGUARD with sequential channel numbering starting at 0. This was required in
|
||||||
required in order to support multiple NI Daq boards where it is possible to
|
order to support multiple NI Daq boards where it is possible to read for
|
||||||
read for example channel 0 and 1 on two different devices, so to uniquely
|
example channel 0 and 1 on two different devices, so to uniquely identify
|
||||||
identify channels in the rest of PAMGUARD, the only rational thing to do was to
|
channels in the rest of PAMGUARD, the only rational thing to do was to re-label
|
||||||
re-label those channels 0,1,2,3. </p>
|
those channels 0,1,2,3. </p>
|
||||||
|
|
||||||
<p class=MsoNormal>There have been other annoyances with the ASIO channel
|
<p class=MsoNormal>There have been other annoyances with the ASIO channel
|
||||||
numbering scheme. For instance, if you had a configuration which worked in real
|
numbering scheme. For instance, if you had a configuration which worked in real
|
||||||
@ -3965,12 +4045,12 @@ port is closed. Might prevent a few problems when using a GPS. </p>
|
|||||||
<p class=MsoNormal><b>Bug Fixes</b></p>
|
<p class=MsoNormal><b>Bug Fixes</b></p>
|
||||||
|
|
||||||
<p class=MsoNormal>Crashes caused in real time or Mixed Mode if the number of
|
<p class=MsoNormal>Crashes caused in real time or Mixed Mode if the number of
|
||||||
software channels exceeds the number of hydrophones configured in the array manager.
|
software channels exceeds the number of hydrophones configured in the array
|
||||||
It is of course illogical to have software channels which are not assigned to a
|
manager. It is of course illogical to have software channels which are not
|
||||||
hydrophone, so rather than entirely prevent PAMGUARD from crashing I have
|
assigned to a hydrophone, so rather than entirely prevent PAMGUARD from
|
||||||
inserted additional checks into the hydrophone array dialog which will prevent
|
crashing I have inserted additional checks into the hydrophone array dialog
|
||||||
the user from closing that dialog unless all software channels are assigned to
|
which will prevent the user from closing that dialog unless all software
|
||||||
a hydrophone. </p>
|
channels are assigned to a hydrophone. </p>
|
||||||
|
|
||||||
<h2><span style='font-weight:normal'>Version 1.8.01 Beta February 2010</span></h2>
|
<h2><span style='font-weight:normal'>Version 1.8.01 Beta February 2010</span></h2>
|
||||||
|
|
||||||
@ -4020,9 +4100,9 @@ Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif
|
|||||||
|
|
||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
|
||||||
Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>
|
Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>
|
||||||
</span>False buffer overflows at low sample rates stopped (size of data in individual
|
</span>False buffer overflows at low sample rates stopped (size of data in
|
||||||
data blocks had been increased at low sample rates, but when this exceeded 3s a
|
individual data blocks had been increased at low sample rates, but when this
|
||||||
false buffer overflow would occur).</p>
|
exceeded 3s a false buffer overflow would occur).</p>
|
||||||
|
|
||||||
<p class=MsoNormal> </p>
|
<p class=MsoNormal> </p>
|
||||||
|
|
||||||
@ -4036,8 +4116,8 @@ Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif
|
|||||||
|
|
||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
|
||||||
Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>
|
Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>
|
||||||
</span>This results in a major speed up of data exchange between modules and
|
</span>This results in a major speed up of data exchange between modules and can
|
||||||
can lead to a x4 improvement in overall performance. </p>
|
lead to a x4 improvement in overall performance. </p>
|
||||||
|
|
||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
|
||||||
Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>
|
Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>
|
||||||
@ -4072,8 +4152,8 @@ arrays to give two polar angle coordinates. this can be used to resolve left
|
|||||||
right ambiguity and is implemented for both the click and the whistle/moan
|
right ambiguity and is implemented for both the click and the whistle/moan
|
||||||
detectors. As a result, the click detector bearing time display can now be set
|
detectors. As a result, the click detector bearing time display can now be set
|
||||||
to go from -180 to 180 degrees rather than 0 - 180 degrees. In this case,
|
to go from -180 to 180 degrees rather than 0 - 180 degrees. In this case,
|
||||||
clicks in the upper half of the bearing display will be to port and clicks in the
|
clicks in the upper half of the bearing display will be to port and clicks in
|
||||||
right half will be to starboard. As you pass a whale which is to port, the
|
the right half will be to starboard. As you pass a whale which is to port, the
|
||||||
clicks will move UP the display. In the long term, I hope to turn this display
|
clicks will move UP the display. In the long term, I hope to turn this display
|
||||||
around so that time is up the screen rather than across. </p>
|
around so that time is up the screen rather than across. </p>
|
||||||
|
|
||||||
@ -4150,9 +4230,9 @@ Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif
|
|||||||
|
|
||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
|
||||||
Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>
|
Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>
|
||||||
</span>Channel lists in output data streams of Decimator and other modules
|
</span>Channel lists in output data streams of Decimator and other modules fixed,
|
||||||
fixed, so that when channel numbers change, downstream modules configurations
|
so that when channel numbers change, downstream modules configurations get the
|
||||||
get the correct list of available channels. </p>
|
correct list of available channels. </p>
|
||||||
|
|
||||||
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
|
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
|
||||||
Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>
|
Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>
|
||||||
@ -4364,8 +4444,8 @@ acquisition. </p>
|
|||||||
|
|
||||||
<p class=MsoNormal><b>Bug fixes</b></p>
|
<p class=MsoNormal><b>Bug fixes</b></p>
|
||||||
|
|
||||||
<p class=MsoNormal>Speed up of graphics, particularly regarding large quantities
|
<p class=MsoNormal>Speed up of graphics, particularly regarding large
|
||||||
of gps track data</p>
|
quantities of gps track data</p>
|
||||||
|
|
||||||
<p class=MsoNormal>National Instruments cards with names > 20 characters
|
<p class=MsoNormal>National Instruments cards with names > 20 characters
|
||||||
long are now correctly recognised. </p>
|
long are now correctly recognised. </p>
|
||||||
@ -4775,8 +4855,8 @@ Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif
|
|||||||
<p class=MsoNormal> </p>
|
<p class=MsoNormal> </p>
|
||||||
|
|
||||||
<p class=MsoNormal><a name="_Toc312065304"></a><a name="_Toc312063949"></a><span
|
<p class=MsoNormal><a name="_Toc312065304"></a><a name="_Toc312063949"></a><span
|
||||||
class=Heading2Char><span style='font-size:13.0pt'>1.0Beta 22 Jan 2008 -
|
class=Heading2Char><span style='font-size:13.0pt'>1.0Beta 22 Jan 2008 - Pamguard
|
||||||
Pamguard starts two releases, core and beta release</span></span>, </p>
|
starts two releases, core and beta release</span></span>, </p>
|
||||||
|
|
||||||
<p class=MsoNormal>this is the beta release</p>
|
<p class=MsoNormal>this is the beta release</p>
|
||||||
|
|
||||||
@ -4848,12 +4928,12 @@ and Ishmael-type detectors and localisers. </p>
|
|||||||
<p class=MsoNormal>Information from above modules can be displayed on
|
<p class=MsoNormal>Information from above modules can be displayed on
|
||||||
configurable user displays which support real time scrolling spectrograms and
|
configurable user displays which support real time scrolling spectrograms and
|
||||||
radar displays. Detection and localisation information can be optionally
|
radar displays. Detection and localisation information can be optionally
|
||||||
displayed on the map display.Map enhancements include improved scrolling whereby
|
displayed on the map display.Map enhancements include improved scrolling
|
||||||
the user can click and drag to pan the area. PamGuard can now interface with
|
whereby the user can click and drag to pan the area. PamGuard can now interface
|
||||||
MySQL database servers and users can easily select which information is logged.
|
with MySQL database servers and users can easily select which information is
|
||||||
(This replaces the previous 'flat-file' logging feature). A simulation module
|
logged. (This replaces the previous 'flat-file' logging feature). A simulation
|
||||||
allows virtual vocalising animals to be placed on the map to assist in training
|
module allows virtual vocalising animals to be placed on the map to assist in
|
||||||
and development. Extensive online user help has been added to PamGuard
|
training and development. Extensive online user help has been added to PamGuard
|
||||||
Application</p>
|
Application</p>
|
||||||
|
|
||||||
<h2>0.03b - first version used in a real 'at sea' environment.18/08/06</h2>
|
<h2>0.03b - first version used in a real 'at sea' environment.18/08/06</h2>
|
||||||
|
@ -1,6 +1,12 @@
|
|||||||
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
|
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
|
||||||
|
<<<<<<<< HEAD:repo/org/pamguard/x3/2.2.5/_remote.repositories
|
||||||
#Wed Aug 02 09:25:44 BST 2023
|
#Wed Aug 02 09:25:44 BST 2023
|
||||||
X3-2.2.5-sources.jar>=
|
X3-2.2.5-sources.jar>=
|
||||||
X3-2.2.5-javadoc.jar>=
|
X3-2.2.5-javadoc.jar>=
|
||||||
X3-2.2.5.jar>=
|
X3-2.2.5.jar>=
|
||||||
X3-2.2.5.pom>=
|
X3-2.2.5.pom>=
|
||||||
|
========
|
||||||
|
#Thu Dec 21 11:14:13 GMT 2023
|
||||||
|
nilus-3.0.pom>=
|
||||||
|
nilus-3.0.jar>=
|
||||||
|
>>>>>>>> upstream/main:repo/tethys/org/nilus/3.0/_remote.repositories
|
||||||
|
@ -1,4 +1,10 @@
|
|||||||
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
|
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
|
||||||
|
<<<<<<<< HEAD:repo/pamguard/org/x3/2.2.3/_remote.repositories
|
||||||
#Thu Oct 26 14:35:14 BST 2023
|
#Thu Oct 26 14:35:14 BST 2023
|
||||||
x3-2.2.3.jar>=
|
x3-2.2.3.jar>=
|
||||||
x3-2.2.3.pom>=
|
x3-2.2.3.pom>=
|
||||||
|
========
|
||||||
|
#Fri Jan 12 10:06:13 GMT 2024
|
||||||
|
x3-2.2.7.jar>=
|
||||||
|
x3-2.2.7.pom>=
|
||||||
|
>>>>>>>> upstream/main:repo/pamguard/org/x3/2.2.7/_remote.repositories
|
||||||
|
@ -1,12 +1,25 @@
|
|||||||
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
|
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
|
||||||
|
<<<<<<<< HEAD:repo/pamguard/org/x3/2.2.3/x3-2.2.3-javadoc.jar.lastUpdated
|
||||||
#Thu Oct 26 14:39:06 BST 2023
|
#Thu Oct 26 14:39:06 BST 2023
|
||||||
@default-talan-https\://nexus.talanlabs.com/content/repositories/releases/.lastUpdated=1698327545863
|
@default-talan-https\://nexus.talanlabs.com/content/repositories/releases/.lastUpdated=1698327545863
|
||||||
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardPAMGuard/repo/.lastUpdated=1698327544361
|
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardPAMGuard/repo/.lastUpdated=1698327544361
|
||||||
|
========
|
||||||
|
#Fri Jan 12 10:09:16 GMT 2024
|
||||||
|
@default-talan-https\://nexus.talanlabs.com/content/repositories/releases/.lastUpdated=1705054156080
|
||||||
|
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardPAMGuard/repo/.lastUpdated=1705054154613
|
||||||
|
>>>>>>>> upstream/main:repo/pamguard/org/x3/2.2.7/x3-2.2.7-javadoc.jar.lastUpdated
|
||||||
https\://repo1.maven.org/maven2/.error=
|
https\://repo1.maven.org/maven2/.error=
|
||||||
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardPAMGuard/repo/.error=
|
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardPAMGuard/repo/.error=
|
||||||
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.error=
|
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.error=
|
||||||
https\://nexus.bedatadriven.com/content/groups/public/.error=
|
https\://nexus.bedatadriven.com/content/groups/public/.error=
|
||||||
|
<<<<<<<< HEAD:repo/pamguard/org/x3/2.2.3/x3-2.2.3-javadoc.jar.lastUpdated
|
||||||
https\://nexus.bedatadriven.com/content/groups/public/.lastUpdated=1698327545797
|
https\://nexus.bedatadriven.com/content/groups/public/.lastUpdated=1698327545797
|
||||||
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.lastUpdated=1698327545616
|
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.lastUpdated=1698327545616
|
||||||
https\://repo1.maven.org/maven2/.lastUpdated=1698327546068
|
https\://repo1.maven.org/maven2/.lastUpdated=1698327546068
|
||||||
https\://nexus.talanlabs.com/content/repositories/releases/.error=Could not transfer artifact pamguard.org\:x3\:jar\:javadoc\:2.2.3 from/to talan (https\://nexus.talanlabs.com/content/repositories/releases/)\: nexus.talanlabs.com
|
https\://nexus.talanlabs.com/content/repositories/releases/.error=Could not transfer artifact pamguard.org\:x3\:jar\:javadoc\:2.2.3 from/to talan (https\://nexus.talanlabs.com/content/repositories/releases/)\: nexus.talanlabs.com
|
||||||
|
========
|
||||||
|
https\://nexus.bedatadriven.com/content/groups/public/.lastUpdated=1705054156060
|
||||||
|
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.lastUpdated=1705054155868
|
||||||
|
https\://repo1.maven.org/maven2/.lastUpdated=1705054156344
|
||||||
|
https\://nexus.talanlabs.com/content/repositories/releases/.error=Could not transfer artifact pamguard.org\:x3\:jar\:javadoc\:2.2.7 from/to talan (https\://nexus.talanlabs.com/content/repositories/releases/)\: nexus.talanlabs.com
|
||||||
|
>>>>>>>> upstream/main:repo/pamguard/org/x3/2.2.7/x3-2.2.7-javadoc.jar.lastUpdated
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
|
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
|
||||||
|
<<<<<<<< HEAD:repo/pamguard/org/x3/2.2.3/x3-2.2.3-sources.jar.lastUpdated
|
||||||
#Thu Oct 26 15:50:39 BST 2023
|
#Thu Oct 26 15:50:39 BST 2023
|
||||||
@default-talan-https\://nexus.talanlabs.com/content/repositories/releases/.lastUpdated=1698327461349
|
@default-talan-https\://nexus.talanlabs.com/content/repositories/releases/.lastUpdated=1698327461349
|
||||||
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardPAMGuard/repo/.lastUpdated=1698327459306
|
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardPAMGuard/repo/.lastUpdated=1698327459306
|
||||||
@ -12,3 +13,16 @@ https\://nexus.talanlabs.com/content/repositories/releases/.error=Could not tran
|
|||||||
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardDG/repo/.lastUpdated=1698331839687
|
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardDG/repo/.lastUpdated=1698331839687
|
||||||
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardPAMGuard/repo/.error=
|
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardPAMGuard/repo/.error=
|
||||||
https\://nexus.bedatadriven.com/content/groups/public/.lastUpdated=1698327461288
|
https\://nexus.bedatadriven.com/content/groups/public/.lastUpdated=1698327461288
|
||||||
|
========
|
||||||
|
#Fri Jan 12 10:06:49 GMT 2024
|
||||||
|
@default-talan-https\://nexus.talanlabs.com/content/repositories/releases/.lastUpdated=1705054009062
|
||||||
|
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardPAMGuard/repo/.lastUpdated=1705054007956
|
||||||
|
https\://repo1.maven.org/maven2/.error=
|
||||||
|
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardPAMGuard/repo/.error=
|
||||||
|
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.error=
|
||||||
|
https\://nexus.bedatadriven.com/content/groups/public/.error=
|
||||||
|
https\://nexus.bedatadriven.com/content/groups/public/.lastUpdated=1705054008945
|
||||||
|
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.lastUpdated=1705054008751
|
||||||
|
https\://repo1.maven.org/maven2/.lastUpdated=1705054009308
|
||||||
|
https\://nexus.talanlabs.com/content/repositories/releases/.error=Could not transfer artifact pamguard.org\:x3\:jar\:sources\:2.2.7 from/to talan (https\://nexus.talanlabs.com/content/repositories/releases/)\: nexus.talanlabs.com
|
||||||
|
>>>>>>>> upstream/main:repo/pamguard/org/x3/2.2.7/x3-2.2.7-sources.jar.lastUpdated
|
||||||
|
@ -4,6 +4,10 @@
|
|||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>pamguard.org</groupId>
|
<groupId>pamguard.org</groupId>
|
||||||
<artifactId>x3</artifactId>
|
<artifactId>x3</artifactId>
|
||||||
|
<<<<<<<< HEAD:repo/pamguard/org/x3/2.2.3/x3-2.2.3.pom
|
||||||
<version>2.2.3</version>
|
<version>2.2.3</version>
|
||||||
|
========
|
||||||
|
<version>2.2.7</version>
|
||||||
|
>>>>>>>> upstream/main:repo/pamguard/org/x3/2.2.7/x3-2.2.7.pom
|
||||||
<description>POM was created from install:install-file</description>
|
<description>POM was created from install:install-file</description>
|
||||||
</project>
|
</project>
|
||||||
|
10
repo/pamguard/org/x3/2.2.7/_remote.repositories
Normal file
10
repo/pamguard/org/x3/2.2.7/_remote.repositories
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
|
||||||
|
<<<<<<<< HEAD:repo/pamguard/org/x3/2.2.3/_remote.repositories
|
||||||
|
#Thu Oct 26 14:35:14 BST 2023
|
||||||
|
x3-2.2.3.jar>=
|
||||||
|
x3-2.2.3.pom>=
|
||||||
|
========
|
||||||
|
#Fri Jan 12 10:06:13 GMT 2024
|
||||||
|
x3-2.2.7.jar>=
|
||||||
|
x3-2.2.7.pom>=
|
||||||
|
>>>>>>>> upstream/main:repo/pamguard/org/x3/2.2.7/_remote.repositories
|
11
repo/pamguard/org/x3/2.2.7/m2e-lastUpdated.properties
Normal file
11
repo/pamguard/org/x3/2.2.7/m2e-lastUpdated.properties
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#Fri Jan 12 10:09:16 GMT 2024
|
||||||
|
bedatadriven|https\://nexus.bedatadriven.com/content/groups/public/|javadoc=1705054156349
|
||||||
|
repo|file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardPAMGuard/repo|sources=1705054009341
|
||||||
|
repo|file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardPAMGuard/repo|javadoc=1705054156349
|
||||||
|
talan|https\://nexus.talanlabs.com/content/repositories/releases/|javadoc=1705054156349
|
||||||
|
central|https\://repo1.maven.org/maven2|sources=1705054009341
|
||||||
|
unidata-all|https\://artifacts.unidata.ucar.edu/repository/unidata-all/|javadoc=1705054156349
|
||||||
|
talan|https\://nexus.talanlabs.com/content/repositories/releases/|sources=1705054009341
|
||||||
|
bedatadriven|https\://nexus.bedatadriven.com/content/groups/public/|sources=1705054009341
|
||||||
|
unidata-all|https\://artifacts.unidata.ucar.edu/repository/unidata-all/|sources=1705054009341
|
||||||
|
central|https\://repo1.maven.org/maven2|javadoc=1705054156349
|
25
repo/pamguard/org/x3/2.2.7/x3-2.2.7-javadoc.jar.lastUpdated
Normal file
25
repo/pamguard/org/x3/2.2.7/x3-2.2.7-javadoc.jar.lastUpdated
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
|
||||||
|
<<<<<<<< HEAD:repo/pamguard/org/x3/2.2.3/x3-2.2.3-javadoc.jar.lastUpdated
|
||||||
|
#Thu Oct 26 14:39:06 BST 2023
|
||||||
|
@default-talan-https\://nexus.talanlabs.com/content/repositories/releases/.lastUpdated=1698327545863
|
||||||
|
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardPAMGuard/repo/.lastUpdated=1698327544361
|
||||||
|
========
|
||||||
|
#Fri Jan 12 10:09:16 GMT 2024
|
||||||
|
@default-talan-https\://nexus.talanlabs.com/content/repositories/releases/.lastUpdated=1705054156080
|
||||||
|
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardPAMGuard/repo/.lastUpdated=1705054154613
|
||||||
|
>>>>>>>> upstream/main:repo/pamguard/org/x3/2.2.7/x3-2.2.7-javadoc.jar.lastUpdated
|
||||||
|
https\://repo1.maven.org/maven2/.error=
|
||||||
|
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardPAMGuard/repo/.error=
|
||||||
|
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.error=
|
||||||
|
https\://nexus.bedatadriven.com/content/groups/public/.error=
|
||||||
|
<<<<<<<< HEAD:repo/pamguard/org/x3/2.2.3/x3-2.2.3-javadoc.jar.lastUpdated
|
||||||
|
https\://nexus.bedatadriven.com/content/groups/public/.lastUpdated=1698327545797
|
||||||
|
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.lastUpdated=1698327545616
|
||||||
|
https\://repo1.maven.org/maven2/.lastUpdated=1698327546068
|
||||||
|
https\://nexus.talanlabs.com/content/repositories/releases/.error=Could not transfer artifact pamguard.org\:x3\:jar\:javadoc\:2.2.3 from/to talan (https\://nexus.talanlabs.com/content/repositories/releases/)\: nexus.talanlabs.com
|
||||||
|
========
|
||||||
|
https\://nexus.bedatadriven.com/content/groups/public/.lastUpdated=1705054156060
|
||||||
|
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.lastUpdated=1705054155868
|
||||||
|
https\://repo1.maven.org/maven2/.lastUpdated=1705054156344
|
||||||
|
https\://nexus.talanlabs.com/content/repositories/releases/.error=Could not transfer artifact pamguard.org\:x3\:jar\:javadoc\:2.2.7 from/to talan (https\://nexus.talanlabs.com/content/repositories/releases/)\: nexus.talanlabs.com
|
||||||
|
>>>>>>>> upstream/main:repo/pamguard/org/x3/2.2.7/x3-2.2.7-javadoc.jar.lastUpdated
|
28
repo/pamguard/org/x3/2.2.7/x3-2.2.7-sources.jar.lastUpdated
Normal file
28
repo/pamguard/org/x3/2.2.7/x3-2.2.7-sources.jar.lastUpdated
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
|
||||||
|
<<<<<<<< HEAD:repo/pamguard/org/x3/2.2.3/x3-2.2.3-sources.jar.lastUpdated
|
||||||
|
#Thu Oct 26 15:50:39 BST 2023
|
||||||
|
@default-talan-https\://nexus.talanlabs.com/content/repositories/releases/.lastUpdated=1698327461349
|
||||||
|
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardPAMGuard/repo/.lastUpdated=1698327459306
|
||||||
|
https\://repo1.maven.org/maven2/.error=
|
||||||
|
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardDG/repo/.error=
|
||||||
|
https\://nexus.bedatadriven.com/content/groups/public/.error=
|
||||||
|
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.error=
|
||||||
|
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.lastUpdated=1698327460817
|
||||||
|
https\://repo1.maven.org/maven2/.lastUpdated=1698327461652
|
||||||
|
https\://nexus.talanlabs.com/content/repositories/releases/.error=Could not transfer artifact pamguard.org\:x3\:jar\:sources\:2.2.3 from/to talan (https\://nexus.talanlabs.com/content/repositories/releases/)\: nexus.talanlabs.com
|
||||||
|
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardDG/repo/.lastUpdated=1698331839687
|
||||||
|
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardPAMGuard/repo/.error=
|
||||||
|
https\://nexus.bedatadriven.com/content/groups/public/.lastUpdated=1698327461288
|
||||||
|
========
|
||||||
|
#Fri Jan 12 10:06:49 GMT 2024
|
||||||
|
@default-talan-https\://nexus.talanlabs.com/content/repositories/releases/.lastUpdated=1705054009062
|
||||||
|
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardPAMGuard/repo/.lastUpdated=1705054007956
|
||||||
|
https\://repo1.maven.org/maven2/.error=
|
||||||
|
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardPAMGuard/repo/.error=
|
||||||
|
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.error=
|
||||||
|
https\://nexus.bedatadriven.com/content/groups/public/.error=
|
||||||
|
https\://nexus.bedatadriven.com/content/groups/public/.lastUpdated=1705054008945
|
||||||
|
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.lastUpdated=1705054008751
|
||||||
|
https\://repo1.maven.org/maven2/.lastUpdated=1705054009308
|
||||||
|
https\://nexus.talanlabs.com/content/repositories/releases/.error=Could not transfer artifact pamguard.org\:x3\:jar\:sources\:2.2.7 from/to talan (https\://nexus.talanlabs.com/content/repositories/releases/)\: nexus.talanlabs.com
|
||||||
|
>>>>>>>> upstream/main:repo/pamguard/org/x3/2.2.7/x3-2.2.7-sources.jar.lastUpdated
|
BIN
repo/pamguard/org/x3/2.2.7/x3-2.2.7.jar
Normal file
BIN
repo/pamguard/org/x3/2.2.7/x3-2.2.7.jar
Normal file
Binary file not shown.
13
repo/pamguard/org/x3/2.2.7/x3-2.2.7.pom
Normal file
13
repo/pamguard/org/x3/2.2.7/x3-2.2.7.pom
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>pamguard.org</groupId>
|
||||||
|
<artifactId>x3</artifactId>
|
||||||
|
<<<<<<<< HEAD:repo/pamguard/org/x3/2.2.3/x3-2.2.3.pom
|
||||||
|
<version>2.2.3</version>
|
||||||
|
========
|
||||||
|
<version>2.2.7</version>
|
||||||
|
>>>>>>>> upstream/main:repo/pamguard/org/x3/2.2.7/x3-2.2.7.pom
|
||||||
|
<description>POM was created from install:install-file</description>
|
||||||
|
</project>
|
4
repo/tethys/org/javaclient/3.0/_remote.repositories
Normal file
4
repo/tethys/org/javaclient/3.0/_remote.repositories
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.
|
||||||
|
#Thu Dec 21 11:13:37 GMT 2023
|
||||||
|
javaclient-3.0.jar>=
|
||||||
|
javaclient-3.0.pom>=
|
BIN
repo/tethys/org/javaclient/3.0/javaclient-3.0.jar
Normal file
BIN
repo/tethys/org/javaclient/3.0/javaclient-3.0.jar
Normal file
Binary file not shown.
9
repo/tethys/org/javaclient/3.0/javaclient-3.0.pom
Normal file
9
repo/tethys/org/javaclient/3.0/javaclient-3.0.pom
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>tethys.org</groupId>
|
||||||
|
<artifactId>javaclient</artifactId>
|
||||||
|
<version>3.0</version>
|
||||||
|
<description>POM was created from install:install-file</description>
|
||||||
|
</project>
|
12
repo/tethys/org/javaclient/maven-metadata-local.xml
Normal file
12
repo/tethys/org/javaclient/maven-metadata-local.xml
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<metadata>
|
||||||
|
<groupId>tethys.org</groupId>
|
||||||
|
<artifactId>javaclient</artifactId>
|
||||||
|
<versioning>
|
||||||
|
<release>3.0</release>
|
||||||
|
<versions>
|
||||||
|
<version>3.0</version>
|
||||||
|
</versions>
|
||||||
|
<lastUpdated>20231221111337</lastUpdated>
|
||||||
|
</versioning>
|
||||||
|
</metadata>
|
12
repo/tethys/org/nilus/3.0/_remote.repositories
Normal file
12
repo/tethys/org/nilus/3.0/_remote.repositories
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
|
||||||
|
<<<<<<<< HEAD:repo/org/pamguard/x3/2.2.5/_remote.repositories
|
||||||
|
#Wed Aug 02 09:25:44 BST 2023
|
||||||
|
X3-2.2.5-sources.jar>=
|
||||||
|
X3-2.2.5-javadoc.jar>=
|
||||||
|
X3-2.2.5.jar>=
|
||||||
|
X3-2.2.5.pom>=
|
||||||
|
========
|
||||||
|
#Thu Dec 21 11:14:13 GMT 2023
|
||||||
|
nilus-3.0.pom>=
|
||||||
|
nilus-3.0.jar>=
|
||||||
|
>>>>>>>> upstream/main:repo/tethys/org/nilus/3.0/_remote.repositories
|
11
repo/tethys/org/nilus/3.0/m2e-lastUpdated.properties
Normal file
11
repo/tethys/org/nilus/3.0/m2e-lastUpdated.properties
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#Thu Dec 21 16:45:12 GMT 2023
|
||||||
|
bedatadriven|https\://nexus.bedatadriven.com/content/groups/public/|javadoc=1703177112968
|
||||||
|
talan|https\://nexus.talanlabs.com/content/repositories/releases/|javadoc=1703177112968
|
||||||
|
repo|file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardDG_2/repo|javadoc=1703177112968
|
||||||
|
central|https\://repo1.maven.org/maven2|sources=1703157324238
|
||||||
|
unidata-all|https\://artifacts.unidata.ucar.edu/repository/unidata-all/|javadoc=1703177112968
|
||||||
|
repo|file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardDG_2/repo|sources=1703157324238
|
||||||
|
talan|https\://nexus.talanlabs.com/content/repositories/releases/|sources=1703157324238
|
||||||
|
bedatadriven|https\://nexus.bedatadriven.com/content/groups/public/|sources=1703157324238
|
||||||
|
unidata-all|https\://artifacts.unidata.ucar.edu/repository/unidata-all/|sources=1703157324238
|
||||||
|
central|https\://repo1.maven.org/maven2|javadoc=1703177112968
|
12
repo/tethys/org/nilus/3.0/nilus-3.0-javadoc.jar.lastUpdated
Normal file
12
repo/tethys/org/nilus/3.0/nilus-3.0-javadoc.jar.lastUpdated
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
|
||||||
|
#Thu Dec 21 16:45:12 GMT 2023
|
||||||
|
@default-talan-https\://nexus.talanlabs.com/content/repositories/releases/.lastUpdated=1703177112601
|
||||||
|
https\://repo1.maven.org/maven2/.error=
|
||||||
|
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardDG_2/repo/.error=
|
||||||
|
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardDG_2/repo/.lastUpdated=1703177110940
|
||||||
|
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.error=
|
||||||
|
https\://nexus.bedatadriven.com/content/groups/public/.error=
|
||||||
|
https\://nexus.bedatadriven.com/content/groups/public/.lastUpdated=1703177112519
|
||||||
|
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.lastUpdated=1703177112101
|
||||||
|
https\://repo1.maven.org/maven2/.lastUpdated=1703177112965
|
||||||
|
https\://nexus.talanlabs.com/content/repositories/releases/.error=Could not transfer artifact tethys.org\:nilus\:jar\:javadoc\:3.0 from/to talan (https\://nexus.talanlabs.com/content/repositories/releases/)\: nexus.talanlabs.com
|
12
repo/tethys/org/nilus/3.0/nilus-3.0-sources.jar.lastUpdated
Normal file
12
repo/tethys/org/nilus/3.0/nilus-3.0-sources.jar.lastUpdated
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
|
||||||
|
#Thu Dec 21 11:15:24 GMT 2023
|
||||||
|
@default-talan-https\://nexus.talanlabs.com/content/repositories/releases/.lastUpdated=1703157323819
|
||||||
|
https\://repo1.maven.org/maven2/.error=
|
||||||
|
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardDG_2/repo/.error=
|
||||||
|
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardDG_2/repo/.lastUpdated=1703157322932
|
||||||
|
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.error=
|
||||||
|
https\://nexus.bedatadriven.com/content/groups/public/.error=
|
||||||
|
https\://nexus.bedatadriven.com/content/groups/public/.lastUpdated=1703157323770
|
||||||
|
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.lastUpdated=1703157323508
|
||||||
|
https\://repo1.maven.org/maven2/.lastUpdated=1703157324237
|
||||||
|
https\://nexus.talanlabs.com/content/repositories/releases/.error=Could not transfer artifact tethys.org\:nilus\:jar\:sources\:3.0 from/to talan (https\://nexus.talanlabs.com/content/repositories/releases/)\: nexus.talanlabs.com
|
BIN
repo/tethys/org/nilus/3.0/nilus-3.0.jar
Normal file
BIN
repo/tethys/org/nilus/3.0/nilus-3.0.jar
Normal file
Binary file not shown.
9
repo/tethys/org/nilus/3.0/nilus-3.0.pom
Normal file
9
repo/tethys/org/nilus/3.0/nilus-3.0.pom
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>tethys.org</groupId>
|
||||||
|
<artifactId>nilus</artifactId>
|
||||||
|
<version>3.0</version>
|
||||||
|
<description>POM was created from install:install-file</description>
|
||||||
|
</project>
|
12
repo/tethys/org/nilus/maven-metadata-local.xml
Normal file
12
repo/tethys/org/nilus/maven-metadata-local.xml
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<metadata>
|
||||||
|
<groupId>tethys.org</groupId>
|
||||||
|
<artifactId>nilus</artifactId>
|
||||||
|
<versioning>
|
||||||
|
<release>3.0</release>
|
||||||
|
<versions>
|
||||||
|
<version>3.0</version>
|
||||||
|
</versions>
|
||||||
|
<lastUpdated>20231221111413</lastUpdated>
|
||||||
|
</versioning>
|
||||||
|
</metadata>
|
@ -5,6 +5,7 @@ import java.lang.reflect.Field;
|
|||||||
|
|
||||||
import PamModel.parametermanager.ManagedParameters;
|
import PamModel.parametermanager.ManagedParameters;
|
||||||
import PamModel.parametermanager.PamParameterSet;
|
import PamModel.parametermanager.PamParameterSet;
|
||||||
|
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||||
import PamModel.parametermanager.PrivatePamParameterData;
|
import PamModel.parametermanager.PrivatePamParameterData;
|
||||||
|
|
||||||
public class AISParameters implements Serializable, Cloneable, ManagedParameters {
|
public class AISParameters implements Serializable, Cloneable, ManagedParameters {
|
||||||
@ -51,7 +52,7 @@ public class AISParameters implements Serializable, Cloneable, ManagedParameters
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PamParameterSet getParameterSet() {
|
public PamParameterSet getParameterSet() {
|
||||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||||
try {
|
try {
|
||||||
Field field = this.getClass().getDeclaredField("nmeaSource");
|
Field field = this.getClass().getDeclaredField("nmeaSource");
|
||||||
ps.put(new PrivatePamParameterData(this, field) {
|
ps.put(new PrivatePamParameterData(this, field) {
|
||||||
|
@ -5,6 +5,7 @@ import java.io.Serializable;
|
|||||||
import NMEA.NMEABitArray;
|
import NMEA.NMEABitArray;
|
||||||
import PamModel.parametermanager.ManagedParameters;
|
import PamModel.parametermanager.ManagedParameters;
|
||||||
import PamModel.parametermanager.PamParameterSet;
|
import PamModel.parametermanager.PamParameterSet;
|
||||||
|
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||||
import PamUtils.LatLong;
|
import PamUtils.LatLong;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -160,7 +161,7 @@ sensor.
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PamParameterSet getParameterSet() {
|
public PamParameterSet getParameterSet() {
|
||||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DISPLAY);
|
||||||
return ps;
|
return ps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,6 +6,7 @@ import java.util.Calendar;
|
|||||||
import NMEA.NMEABitArray;
|
import NMEA.NMEABitArray;
|
||||||
import PamModel.parametermanager.ManagedParameters;
|
import PamModel.parametermanager.ManagedParameters;
|
||||||
import PamModel.parametermanager.PamParameterSet;
|
import PamModel.parametermanager.PamParameterSet;
|
||||||
|
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||||
import PamUtils.PamCalendar;
|
import PamUtils.PamCalendar;
|
||||||
|
|
||||||
public class AISStaticData extends AISReport implements Serializable, ManagedParameters{
|
public class AISStaticData extends AISReport implements Serializable, ManagedParameters{
|
||||||
@ -393,7 +394,7 @@ public class AISStaticData extends AISReport implements Serializable, ManagedPar
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PamParameterSet getParameterSet() {
|
public PamParameterSet getParameterSet() {
|
||||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DISPLAY);
|
||||||
return ps;
|
return ps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -283,6 +283,16 @@ public class AcquisitionControl extends RawInputControlledUnit implements PamSet
|
|||||||
return daqControllers;
|
return daqControllers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getDataLocation() {
|
||||||
|
if (offlineFileServer == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return offlineFileServer.getDataLocation();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public AcquisitionProcess getDaqProcess() {
|
public AcquisitionProcess getDaqProcess() {
|
||||||
return acquisitionProcess;
|
return acquisitionProcess;
|
||||||
}
|
}
|
||||||
|
@ -151,6 +151,7 @@ public class AcquisitionDialog extends PamDialog {
|
|||||||
acquisitionParameters = oldParams.clone();
|
acquisitionParameters = oldParams.clone();
|
||||||
|
|
||||||
acquisitionControl = daqControl;
|
acquisitionControl = daqControl;
|
||||||
|
// singleInstance = null;
|
||||||
|
|
||||||
if (singleInstance == null || singleInstance.getOwner() != parentFrame) {
|
if (singleInstance == null || singleInstance.getOwner() != parentFrame) {
|
||||||
singleInstance = new AcquisitionDialog(parentFrame);
|
singleInstance = new AcquisitionDialog(parentFrame);
|
||||||
|
@ -10,6 +10,7 @@ import Array.Preamplifier;
|
|||||||
import PamController.PamController;
|
import PamController.PamController;
|
||||||
import PamModel.parametermanager.ManagedParameters;
|
import PamModel.parametermanager.ManagedParameters;
|
||||||
import PamModel.parametermanager.PamParameterSet;
|
import PamModel.parametermanager.PamParameterSet;
|
||||||
|
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||||
import PamModel.parametermanager.PrivatePamParameterData;
|
import PamModel.parametermanager.PrivatePamParameterData;
|
||||||
import PamguardMVC.PamConstants;
|
import PamguardMVC.PamConstants;
|
||||||
|
|
||||||
@ -320,7 +321,7 @@ public class AcquisitionParameters implements Serializable, Cloneable, ManagedPa
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PamParameterSet getParameterSet() {
|
public PamParameterSet getParameterSet() {
|
||||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||||
try {
|
try {
|
||||||
Field field = this.getClass().getDeclaredField("channelList");
|
Field field = this.getClass().getDeclaredField("channelList");
|
||||||
ps.put(new PrivatePamParameterData(this, field) {
|
ps.put(new PrivatePamParameterData(this, field) {
|
||||||
|
@ -211,10 +211,10 @@ public class AcquisitionProcess extends PamProcess implements DataInputStore {
|
|||||||
|
|
||||||
if (systemPrepared == false) return;
|
if (systemPrepared == false) return;
|
||||||
|
|
||||||
|
newDataQueue.clearList(); // clear this first to make sure nothing new comes in.
|
||||||
|
|
||||||
// before starting, clear all old data
|
// before starting, clear all old data
|
||||||
rawDataBlock.clearAll();
|
rawDataBlock.clearAll();
|
||||||
|
|
||||||
newDataQueue.clearList();
|
|
||||||
|
|
||||||
sampleRateErrorFilter.prepareFilter();
|
sampleRateErrorFilter.prepareFilter();
|
||||||
totalExtraSamples = 0;
|
totalExtraSamples = 0;
|
||||||
@ -302,6 +302,7 @@ public class AcquisitionProcess extends PamProcess implements DataInputStore {
|
|||||||
// called by PamController.
|
// called by PamController.
|
||||||
// stop the running system - not the selected system since
|
// stop the running system - not the selected system since
|
||||||
// this may have changed
|
// this may have changed
|
||||||
|
|
||||||
restartTimer.stop();
|
restartTimer.stop();
|
||||||
// stallCheckTimer.stop();
|
// stallCheckTimer.stop();
|
||||||
pamStop("");
|
pamStop("");
|
||||||
@ -471,6 +472,9 @@ public class AcquisitionProcess extends PamProcess implements DataInputStore {
|
|||||||
* have been emptied and processing has stopped
|
* have been emptied and processing has stopped
|
||||||
*/
|
*/
|
||||||
protected void pamHasStopped() {
|
protected void pamHasStopped() {
|
||||||
|
|
||||||
|
newDataQueue.clearList(); // clear this first to make sure nothing new comes in.
|
||||||
|
|
||||||
if (runningSystem == null){
|
if (runningSystem == null){
|
||||||
runningSystem = acquisitionControl.findDaqSystem(null);
|
runningSystem = acquisitionControl.findDaqSystem(null);
|
||||||
}
|
}
|
||||||
@ -650,9 +654,10 @@ public class AcquisitionProcess extends PamProcess implements DataInputStore {
|
|||||||
|
|
||||||
restartTimer.stop();
|
restartTimer.stop();
|
||||||
|
|
||||||
PamController.getInstance().pamStop();
|
PamController.getInstance().restartPamguard();
|
||||||
|
// PamController.getInstance().pamStop();
|
||||||
PamController.getInstance().pamStart(false);
|
//
|
||||||
|
// PamController.getInstance().pamStart(false);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@ import java.lang.reflect.Field;
|
|||||||
|
|
||||||
import PamModel.parametermanager.ManagedParameters;
|
import PamModel.parametermanager.ManagedParameters;
|
||||||
import PamModel.parametermanager.PamParameterSet;
|
import PamModel.parametermanager.PamParameterSet;
|
||||||
|
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||||
import PamModel.parametermanager.PrivatePamParameterData;
|
import PamModel.parametermanager.PrivatePamParameterData;
|
||||||
import binaryFileStorage.BinaryHeader;
|
import binaryFileStorage.BinaryHeader;
|
||||||
import binaryFileStorage.BinaryObjectData;
|
import binaryFileStorage.BinaryObjectData;
|
||||||
@ -30,7 +31,7 @@ class DaqStatusModuleHeader extends ModuleHeader implements Serializable, Manage
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PamParameterSet getParameterSet() {
|
public PamParameterSet getParameterSet() {
|
||||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||||
try {
|
try {
|
||||||
Field field = this.getClass().getDeclaredField("daqName");
|
Field field = this.getClass().getDeclaredField("daqName");
|
||||||
ps.put(new PrivatePamParameterData(this, field) {
|
ps.put(new PrivatePamParameterData(this, field) {
|
||||||
|
@ -5,6 +5,7 @@ import java.util.ArrayList;
|
|||||||
|
|
||||||
import PamModel.parametermanager.ManagedParameters;
|
import PamModel.parametermanager.ManagedParameters;
|
||||||
import PamModel.parametermanager.PamParameterSet;
|
import PamModel.parametermanager.PamParameterSet;
|
||||||
|
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Used by FileInputSystem
|
* Used by FileInputSystem
|
||||||
@ -78,7 +79,7 @@ public class FileInputParameters implements Serializable, Cloneable, ManagedPara
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||||
return ps;
|
return ps;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -318,13 +318,12 @@ public class FolderInputSystem extends FileInputSystem implements PamSettings, D
|
|||||||
}
|
}
|
||||||
selection = folderInputParameters.getSelectedFiles();
|
selection = folderInputParameters.getSelectedFiles();
|
||||||
}
|
}
|
||||||
|
if (selection == null) {
|
||||||
if (selection!=null && selection.length > 0) {
|
return 0;
|
||||||
|
}
|
||||||
|
if (selection.length > 0) {
|
||||||
System.out.println("FolderInputSystem.makeSelFileList(): Searching for sound files in " + selection[0]);
|
System.out.println("FolderInputSystem.makeSelFileList(): Searching for sound files in " + selection[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (selection==null) return 0; //sometimes happens
|
|
||||||
|
|
||||||
return makeSelFileList(selection);
|
return makeSelFileList(selection);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -519,8 +518,8 @@ public class FolderInputSystem extends FileInputSystem implements PamSettings, D
|
|||||||
*/
|
*/
|
||||||
public void newFileList(FileListData<WavFileType> fileListData) {
|
public void newFileList(FileListData<WavFileType> fileListData) {
|
||||||
|
|
||||||
System.out.printf("Wav list recieved with %d files after %d millis\n",
|
// System.out.printf("Wav list recieved with %d files after %d millis\n",
|
||||||
fileListData.getFileCount(), System.currentTimeMillis() - wavListStart);
|
// fileListData.getFileCount(), System.currentTimeMillis() - wavListStart);
|
||||||
allFiles = fileListData.getListCopy();
|
allFiles = fileListData.getListCopy();
|
||||||
|
|
||||||
List<WavFileType> asList = allFiles;
|
List<WavFileType> asList = allFiles;
|
||||||
@ -539,8 +538,6 @@ public class FolderInputSystem extends FileInputSystem implements PamSettings, D
|
|||||||
if (file.isFile() && !file.isHidden() && acquisitionDialog != null) {
|
if (file.isFile() && !file.isHidden() && acquisitionDialog != null) {
|
||||||
//Hidden files should not be used in analysis...
|
//Hidden files should not be used in analysis...
|
||||||
try {
|
try {
|
||||||
|
|
||||||
System.out.println("FolderInputSystem - newFileList");
|
|
||||||
audioStream = PamAudioFileManager.getInstance().getAudioInputStream(file);
|
audioStream = PamAudioFileManager.getInstance().getAudioInputStream(file);
|
||||||
AudioFormat audioFormat = audioStream.getFormat();
|
AudioFormat audioFormat = audioStream.getFormat();
|
||||||
fileSamples = audioStream.getFrameLength();
|
fileSamples = audioStream.getFrameLength();
|
||||||
@ -703,7 +700,7 @@ public class FolderInputSystem extends FileInputSystem implements PamSettings, D
|
|||||||
if (currentFile > 0 && currentFile >= allFiles.size()) {
|
if (currentFile > 0 && currentFile >= allFiles.size()) {
|
||||||
fileListComplete();
|
fileListComplete();
|
||||||
}
|
}
|
||||||
// System.out.println("FolderinputSytem: daqHasEnded");
|
System.out.println("FolderinputSytem: daqHasEnded");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setFolderProgress() {
|
private void setFolderProgress() {
|
||||||
@ -923,7 +920,6 @@ public class FolderInputSystem extends FileInputSystem implements PamSettings, D
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
for (int i = 0; i < allFiles.size(); i++) {
|
for (int i = 0; i < allFiles.size(); i++) {
|
||||||
System.out.println("Get file start time");
|
|
||||||
long fileStart = getFileStartTime(allFiles.get(i).getAbsoluteFile());
|
long fileStart = getFileStartTime(allFiles.get(i).getAbsoluteFile());
|
||||||
if (fileStart >= startTime) {
|
if (fileStart >= startTime) {
|
||||||
currentFile = i;
|
currentFile = i;
|
||||||
|
@ -4,6 +4,7 @@ import java.io.Serializable;
|
|||||||
|
|
||||||
import PamModel.parametermanager.ManagedParameters;
|
import PamModel.parametermanager.ManagedParameters;
|
||||||
import PamModel.parametermanager.PamParameterSet;
|
import PamModel.parametermanager.PamParameterSet;
|
||||||
|
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||||
import simulatedAcquisition.SimProcess;
|
import simulatedAcquisition.SimProcess;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -47,7 +48,7 @@ public class SoundCardParameters implements Serializable, Cloneable, ManagedPara
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||||
return ps;
|
return ps;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@ import java.util.TimeZone;
|
|||||||
|
|
||||||
import PamModel.parametermanager.ManagedParameters;
|
import PamModel.parametermanager.ManagedParameters;
|
||||||
import PamModel.parametermanager.PamParameterSet;
|
import PamModel.parametermanager.PamParameterSet;
|
||||||
|
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||||
import soundtrap.STXMLFile;
|
import soundtrap.STXMLFile;
|
||||||
|
|
||||||
public class StandardFileDateSettings implements Serializable, Cloneable, ManagedParameters {
|
public class StandardFileDateSettings implements Serializable, Cloneable, ManagedParameters {
|
||||||
@ -150,7 +151,7 @@ public class StandardFileDateSettings implements Serializable, Cloneable, Manage
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PamParameterSet getParameterSet() {
|
public PamParameterSet getParameterSet() {
|
||||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DISPLAY);
|
||||||
return ps;
|
return ps;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@ import Acquisition.AcquisitionControl;
|
|||||||
import Acquisition.AcquisitionDialog;
|
import Acquisition.AcquisitionDialog;
|
||||||
import PamModel.parametermanager.ManagedParameters;
|
import PamModel.parametermanager.ManagedParameters;
|
||||||
import PamModel.parametermanager.PamParameterSet;
|
import PamModel.parametermanager.PamParameterSet;
|
||||||
|
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||||
|
|
||||||
public class PPSParameters implements Cloneable, Serializable, ManagedParameters {
|
public class PPSParameters implements Cloneable, Serializable, ManagedParameters {
|
||||||
|
|
||||||
@ -36,7 +37,7 @@ public class PPSParameters implements Cloneable, Serializable, ManagedParameters
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PamParameterSet getParameterSet() {
|
public PamParameterSet getParameterSet() {
|
||||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||||
return ps;
|
return ps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,6 +14,7 @@ import javax.sound.sampled.UnsupportedAudioFileException;
|
|||||||
import org.codehaus.plexus.util.FileUtils;
|
import org.codehaus.plexus.util.FileUtils;
|
||||||
import Acquisition.offlineFuncs.AquisitionLoadPoint;
|
import Acquisition.offlineFuncs.AquisitionLoadPoint;
|
||||||
import PamDetection.RawDataUnit;
|
import PamDetection.RawDataUnit;
|
||||||
|
import PamguardMVC.PamConstants;
|
||||||
//import PamUtils.CPUMonitor;
|
//import PamUtils.CPUMonitor;
|
||||||
import PamguardMVC.PamDataBlock;
|
import PamguardMVC.PamDataBlock;
|
||||||
import PamguardMVC.dataOffline.OfflineDataLoadInfo;
|
import PamguardMVC.dataOffline.OfflineDataLoadInfo;
|
||||||
@ -47,6 +48,8 @@ public class WavAudioFile implements PamAudioFileLoader {
|
|||||||
* Get the file extensions associated with loading these data.
|
* Get the file extensions associated with loading these data.
|
||||||
*/
|
*/
|
||||||
protected ArrayList<String> fileExtensions;
|
protected ArrayList<String> fileExtensions;
|
||||||
|
|
||||||
|
private double[] channelBackground = new double[PamConstants.MAX_CHANNELS];
|
||||||
|
|
||||||
public WavAudioFile() {
|
public WavAudioFile() {
|
||||||
fileExtensions = new ArrayList<String>(Arrays.asList(new String[]{".wav", ".aif", ".aiff"}));
|
fileExtensions = new ArrayList<String>(Arrays.asList(new String[]{".wav", ".aif", ".aiff"}));
|
||||||
@ -190,6 +193,9 @@ public class WavAudioFile implements PamAudioFileLoader {
|
|||||||
|
|
||||||
newDataUnit = new RawDataUnit(ms, 1 << ichan, totalSamples, newSamples);
|
newDataUnit = new RawDataUnit(ms, 1 << ichan, totalSamples, newSamples);
|
||||||
newDataUnit.setFileSamples(totalSamples + skipped / frameSize); //set the number samples into the wav file.
|
newDataUnit.setFileSamples(totalSamples + skipped / frameSize); //set the number samples into the wav file.
|
||||||
|
|
||||||
|
removeDCComponent(doubleData[ichan], ichan, audioFormat);
|
||||||
|
|
||||||
newDataUnit.setRawData(doubleData[ichan], true);
|
newDataUnit.setRawData(doubleData[ichan], true);
|
||||||
|
|
||||||
//System.out.println("New wav data: " + PamCalendar.formatDateTime(newDataUnit.getTimeMilliseconds()));
|
//System.out.println("New wav data: " + PamCalendar.formatDateTime(newDataUnit.getTimeMilliseconds()));
|
||||||
@ -211,6 +217,26 @@ public class WavAudioFile implements PamAudioFileLoader {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void removeDCComponent(double[] ds, int channel, AudioFormat audioFormat) {
|
||||||
|
/*
|
||||||
|
* do a simple background subtraction with about a 1s time constant.
|
||||||
|
* If the background is currently zero initialise it to the mean data value.
|
||||||
|
*/
|
||||||
|
double alpha = 1./audioFormat.getSampleRate();
|
||||||
|
double alpha_1 = 1.-alpha;
|
||||||
|
double bg = channelBackground[channel];
|
||||||
|
if (bg == 0.) {
|
||||||
|
for (int i = 0; i < ds.length; i++) {
|
||||||
|
bg += ds[i];
|
||||||
|
}
|
||||||
|
bg /= ds.length;
|
||||||
|
}
|
||||||
|
for (int i = 0; i < ds.length; i++) {
|
||||||
|
ds[i] -= bg;
|
||||||
|
bg = bg*alpha_1 + ds[i]*alpha;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Open a sound file.
|
* Open a sound file.
|
||||||
* @param soundFile
|
* @param soundFile
|
||||||
|
@ -6,6 +6,7 @@ import java.lang.reflect.Field;
|
|||||||
|
|
||||||
import PamModel.parametermanager.ManagedParameters;
|
import PamModel.parametermanager.ManagedParameters;
|
||||||
import PamModel.parametermanager.PamParameterSet;
|
import PamModel.parametermanager.PamParameterSet;
|
||||||
|
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||||
import PamModel.parametermanager.PrivatePamParameterData;
|
import PamModel.parametermanager.PrivatePamParameterData;
|
||||||
import PamUtils.LatLong;
|
import PamUtils.LatLong;
|
||||||
|
|
||||||
@ -95,7 +96,7 @@ public class AirgunParameters implements Serializable, Cloneable, ManagedParamet
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PamParameterSet getParameterSet() {
|
public PamParameterSet getParameterSet() {
|
||||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DISPLAY);
|
||||||
try {
|
try {
|
||||||
Field field = this.getClass().getDeclaredField("dimE");
|
Field field = this.getClass().getDeclaredField("dimE");
|
||||||
ps.put(new PrivatePamParameterData(this, field) {
|
ps.put(new PrivatePamParameterData(this, field) {
|
||||||
|
@ -44,6 +44,8 @@ public class ArrayDialog extends PamDialog implements ActionListener {
|
|||||||
private EnvironmentPanel environmentPanel;
|
private EnvironmentPanel environmentPanel;
|
||||||
|
|
||||||
private HydrophoneDiagram hydrophoneDiagram;
|
private HydrophoneDiagram hydrophoneDiagram;
|
||||||
|
|
||||||
|
private InstrumentIdentityPanel instrumentIdentityPanel;
|
||||||
|
|
||||||
private JButton okButton, cancelButton;
|
private JButton okButton, cancelButton;
|
||||||
|
|
||||||
@ -69,11 +71,14 @@ public class ArrayDialog extends PamDialog implements ActionListener {
|
|||||||
eastPanel.add(channelPanel.getChannelPanel());
|
eastPanel.add(channelPanel.getChannelPanel());
|
||||||
|
|
||||||
environmentPanel = new EnvironmentPanel(this);
|
environmentPanel = new EnvironmentPanel(this);
|
||||||
|
instrumentIdentityPanel = new InstrumentIdentityPanel();
|
||||||
|
// eastPanel.add(environmentPanel.getEnvironmentPanel());
|
||||||
|
|
||||||
hydrophoneDiagram = new HydrophoneDiagram(this);
|
hydrophoneDiagram = new HydrophoneDiagram(this);
|
||||||
JPanel westPanel = new JPanel(new BorderLayout());
|
JPanel westPanel = new JPanel(new BorderLayout());
|
||||||
westPanel.add(BorderLayout.CENTER, hydrophoneDiagram.getPlotPanel());
|
westPanel.add(BorderLayout.CENTER, hydrophoneDiagram.getPlotPanel());
|
||||||
westPanel.add(BorderLayout.SOUTH, environmentPanel.getEnvironmentPanel());
|
westPanel.add(BorderLayout.SOUTH, environmentPanel.getEnvironmentPanel());
|
||||||
|
westPanel.add(BorderLayout.NORTH, instrumentIdentityPanel.getComponent());
|
||||||
|
|
||||||
|
|
||||||
splitPanel.add(westPanel);
|
splitPanel.add(westPanel);
|
||||||
@ -144,6 +149,7 @@ public class ArrayDialog extends PamDialog implements ActionListener {
|
|||||||
hydrophoneDialogPanel.setParams(selArray);
|
hydrophoneDialogPanel.setParams(selArray);
|
||||||
channelPanel.setParams();
|
channelPanel.setParams();
|
||||||
hydrophoneDiagram.rePaint();
|
hydrophoneDiagram.rePaint();
|
||||||
|
instrumentIdentityPanel.setParams(selArray);
|
||||||
if (selArray != null) {
|
if (selArray != null) {
|
||||||
environmentPanel.setNewSpeed(selArray.getSpeedOfSound());
|
environmentPanel.setNewSpeed(selArray.getSpeedOfSound());
|
||||||
}
|
}
|
||||||
@ -171,6 +177,7 @@ public class ArrayDialog extends PamDialog implements ActionListener {
|
|||||||
array.setSpeedOfSound(environmentPanel.getNewSpeed());
|
array.setSpeedOfSound(environmentPanel.getNewSpeed());
|
||||||
array.setSpeedOfSoundError(environmentPanel.getNewError());
|
array.setSpeedOfSoundError(environmentPanel.getNewError());
|
||||||
hydrophoneDialogPanel.getParams();
|
hydrophoneDialogPanel.getParams();
|
||||||
|
instrumentIdentityPanel.getParams(array);
|
||||||
|
|
||||||
if (checkDaqChannels(array) == false) {
|
if (checkDaqChannels(array) == false) {
|
||||||
return false;
|
return false;
|
||||||
@ -250,6 +257,7 @@ public class ArrayDialog extends PamDialog implements ActionListener {
|
|||||||
environmentPanel.setNewSpeed(currentArray.getSpeedOfSound());
|
environmentPanel.setNewSpeed(currentArray.getSpeedOfSound());
|
||||||
environmentPanel.setNewError(currentArray.getSpeedOfSoundError());
|
environmentPanel.setNewError(currentArray.getSpeedOfSoundError());
|
||||||
}
|
}
|
||||||
|
instrumentIdentityPanel.setParams(currentArray);
|
||||||
}
|
}
|
||||||
|
|
||||||
void newChannelSelection() {
|
void newChannelSelection() {
|
||||||
|
@ -28,6 +28,7 @@ import java.util.Arrays;
|
|||||||
|
|
||||||
import PamModel.parametermanager.ManagedParameters;
|
import PamModel.parametermanager.ManagedParameters;
|
||||||
import PamModel.parametermanager.PamParameterSet;
|
import PamModel.parametermanager.PamParameterSet;
|
||||||
|
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||||
import PamModel.parametermanager.PrivatePamParameterData;
|
import PamModel.parametermanager.PrivatePamParameterData;
|
||||||
import pamMaths.PamVector;
|
import pamMaths.PamVector;
|
||||||
import PamView.PamSymbol;
|
import PamView.PamSymbol;
|
||||||
@ -333,7 +334,7 @@ public class Hydrophone implements Serializable, Cloneable, ManagedParameters {
|
|||||||
/**
|
/**
|
||||||
* @return Returns the coordinate.
|
* @return Returns the coordinate.
|
||||||
*/
|
*/
|
||||||
protected double[] getCoordinates() {
|
public double[] getCoordinates() {
|
||||||
return Arrays.copyOf(coordinate,3);
|
return Arrays.copyOf(coordinate,3);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -478,7 +479,7 @@ public class Hydrophone implements Serializable, Cloneable, ManagedParameters {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PamParameterSet getParameterSet() {
|
public PamParameterSet getParameterSet() {
|
||||||
PamParameterSet pps = PamParameterSet.autoGenerate(this);
|
PamParameterSet pps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||||
Field f;
|
Field f;
|
||||||
try {
|
try {
|
||||||
f = this.getClass().getDeclaredField("coordinate");
|
f = this.getClass().getDeclaredField("coordinate");
|
||||||
|
@ -54,7 +54,7 @@ public class HydrophoneDataBlock extends PamDataBlock<HydrophoneDataUnit> {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public int getNumRequiredBeforeLoadTime() {
|
public int getNumRequiredBeforeLoadTime() {
|
||||||
return ArrayManager.getArrayManager().getCurrentArray().getHydrophoneCount();
|
return ArrayManager.getArrayManager().getCurrentArray().getHydrophoneCount()*2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -7,6 +7,7 @@ import Array.streamerOrigin.StreamerDataIterator;
|
|||||||
import GPS.GpsData;
|
import GPS.GpsData;
|
||||||
import PamModel.parametermanager.ManagedParameters;
|
import PamModel.parametermanager.ManagedParameters;
|
||||||
import PamModel.parametermanager.PamParameterSet;
|
import PamModel.parametermanager.PamParameterSet;
|
||||||
|
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||||
import PamModel.parametermanager.PrivatePamParameterData;
|
import PamModel.parametermanager.PrivatePamParameterData;
|
||||||
import PamUtils.LatLong;
|
import PamUtils.LatLong;
|
||||||
import PamguardMVC.PamDataBlock;
|
import PamguardMVC.PamDataBlock;
|
||||||
@ -225,7 +226,7 @@ abstract public class HydrophoneLocator implements Serializable, Cloneable, Mana
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public PamParameterSet getParameterSet() {
|
public PamParameterSet getParameterSet() {
|
||||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||||
try {
|
try {
|
||||||
Field field = this.getClass().getDeclaredField("pamArray");
|
Field field = this.getClass().getDeclaredField("pamArray");
|
||||||
ps.put(new PrivatePamParameterData(this, field) {
|
ps.put(new PrivatePamParameterData(this, field) {
|
||||||
|
@ -3,152 +3,151 @@ package Array;
|
|||||||
import pamScrollSystem.AbstractScrollManager;
|
import pamScrollSystem.AbstractScrollManager;
|
||||||
import PamUtils.PamCalendar;
|
import PamUtils.PamCalendar;
|
||||||
import PamView.symbol.StandardSymbolManager;
|
import PamView.symbol.StandardSymbolManager;
|
||||||
|
import PamguardMVC.PamConstants;
|
||||||
import PamguardMVC.PamDataBlock;
|
import PamguardMVC.PamDataBlock;
|
||||||
import PamguardMVC.PamProcess;
|
import PamguardMVC.PamProcess;
|
||||||
|
|
||||||
public class HydrophoneProcess extends PamProcess{
|
public class HydrophoneProcess extends PamProcess{
|
||||||
|
|
||||||
|
private StreamerDataBlock streamerDataBlock;
|
||||||
|
private boolean arrayDataSaved;
|
||||||
|
private ArrayManager arrayManager;
|
||||||
|
private HydrophoneDataBlock hydrophoneDataBlock;
|
||||||
|
private HydrophoneSQLLogging hydrophoneSQLlogging;
|
||||||
|
|
||||||
|
public HydrophoneProcess(ArrayManager arrayManager) {
|
||||||
|
super(arrayManager, null);
|
||||||
|
this.arrayManager = arrayManager;
|
||||||
|
|
||||||
|
addOutputDataBlock(streamerDataBlock = new StreamerDataBlock(this));
|
||||||
|
streamerDataBlock.setOverlayDraw(new StreamerOverlayGraphics());
|
||||||
|
streamerDataBlock.setPamSymbolManager(new StandardSymbolManager(streamerDataBlock, StreamerOverlayGraphics.streamerSymbol, true));
|
||||||
|
streamerDataBlock.SetLogging(new StreamerLogging(this, streamerDataBlock));
|
||||||
|
|
||||||
private StreamerDataBlock streamerDataBlock;
|
hydrophoneDataBlock= new HydrophoneDataBlock("Hydrophone Data", this, 0xFFFFFFFF);
|
||||||
private boolean arrayDataSaved;
|
hydrophoneSQLlogging=new HydrophoneSQLLogging(hydrophoneDataBlock);
|
||||||
private ArrayManager arrayManager;
|
hydrophoneDataBlock.SetLogging(hydrophoneSQLlogging);
|
||||||
private HydrophoneDataBlock hydrophoneDataBlock;
|
addOutputDataBlock(hydrophoneDataBlock);
|
||||||
private HydrophoneSQLLogging hydrophoneSQLlogging;
|
|
||||||
|
streamerDataBlock.setMixedDirection(PamDataBlock.MIX_OUTOFDATABASE);
|
||||||
public HydrophoneProcess(ArrayManager arrayManager) {
|
hydrophoneDataBlock.setMixedDirection(PamDataBlock.MIX_OUTOFDATABASE);
|
||||||
super(arrayManager, null);
|
|
||||||
this.arrayManager = arrayManager;
|
|
||||||
|
|
||||||
addOutputDataBlock(streamerDataBlock = new StreamerDataBlock(this));
|
|
||||||
streamerDataBlock.setOverlayDraw(new StreamerOverlayGraphics());
|
|
||||||
streamerDataBlock.setPamSymbolManager(new StandardSymbolManager(streamerDataBlock, StreamerOverlayGraphics.streamerSymbol, true));
|
|
||||||
streamerDataBlock.SetLogging(new StreamerLogging(this, streamerDataBlock));
|
|
||||||
|
|
||||||
hydrophoneDataBlock= new HydrophoneDataBlock("Hydrophone Data", this, 0xFFFFFFFF);
|
|
||||||
hydrophoneSQLlogging=new HydrophoneSQLLogging(hydrophoneDataBlock);
|
|
||||||
hydrophoneDataBlock.SetLogging(hydrophoneSQLlogging);
|
|
||||||
addOutputDataBlock(hydrophoneDataBlock);
|
|
||||||
|
|
||||||
streamerDataBlock.setMixedDirection(PamDataBlock.MIX_OUTOFDATABASE);
|
|
||||||
hydrophoneDataBlock.setMixedDirection(PamDataBlock.MIX_OUTOFDATABASE);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void destroyProcess(){
|
|
||||||
for (int i=0; i<super.outputDataBlocks.size(); i++){
|
|
||||||
AbstractScrollManager.getScrollManager().removeFromSpecialDatablock(outputDataBlocks.get(i));
|
|
||||||
}
|
}
|
||||||
super.destroyProcess();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void destroyProcess(){
|
||||||
|
for (int i=0; i<super.outputDataBlocks.size(); i++){
|
||||||
|
AbstractScrollManager.getScrollManager().removeFromSpecialDatablock(outputDataBlocks.get(i));
|
||||||
|
}
|
||||||
|
super.destroyProcess();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addOutputDataBlock(PamDataBlock outputDataBlock){
|
||||||
|
AbstractScrollManager.getScrollManager().addToSpecialDatablock(outputDataBlock, 60000, 0);
|
||||||
|
super.addOutputDataBlock(outputDataBlock);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void pamStart() {
|
||||||
|
/*
|
||||||
|
* Not necessary to call this since the streamers will create a data unit, which get's
|
||||||
|
* saved to the database as soon as initialisation is complete.
|
||||||
|
*/
|
||||||
|
if (!arrayDataSaved) {
|
||||||
|
// saveArrayData();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void pamStop() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
/**
|
||||||
public void addOutputDataBlock(PamDataBlock outputDataBlock){
|
* @return the streamerDataBlock
|
||||||
AbstractScrollManager.getScrollManager().addToSpecialDatablock(outputDataBlock, 60000, 0);
|
|
||||||
super.addOutputDataBlock(outputDataBlock);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void pamStart() {
|
|
||||||
/*
|
|
||||||
* Not necessary to call this since the streamers will create a data unit, which get's
|
|
||||||
* saved to the database as soon as initialisation is complete.
|
|
||||||
*/
|
*/
|
||||||
if (!arrayDataSaved) {
|
protected StreamerDataBlock getStreamerDataBlock() {
|
||||||
// saveArrayData();
|
return streamerDataBlock;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
/**
|
||||||
public void pamStop() {
|
* Save all the array data to the database. This get's called when
|
||||||
// TODO Auto-generated method stub
|
* the array manager dialog has been called or when PAMGuard starts to ensure
|
||||||
|
* that there is a database record of how the hydrophones were arranged. <p>
|
||||||
|
* This may cause trouble in offline analysis if you want to make changes to the phone layout
|
||||||
|
* (for example changing a hydrophone separation).
|
||||||
|
*/
|
||||||
|
public void createArrayData() {
|
||||||
|
// DBControlUnit dbControl = DBControlUnit.findDatabaseControl();
|
||||||
|
// DBProcess dbProcess = null;
|
||||||
|
// if (dbControl != null) {
|
||||||
|
// dbProcess = dbControl.getDbProcess();
|
||||||
|
// }
|
||||||
|
|
||||||
|
long timeNow = PamCalendar.getTimeInMillis();
|
||||||
|
|
||||||
|
createDefaultStreamerUnits(timeNow);
|
||||||
|
createDefaultHydrophoneUnits(timeNow);
|
||||||
|
|
||||||
}
|
arrayDataSaved = true;
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the streamerDataBlock
|
|
||||||
*/
|
|
||||||
protected StreamerDataBlock getStreamerDataBlock() {
|
|
||||||
return streamerDataBlock;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Save all the array data to the database. This get's called when
|
|
||||||
* the array manager dialog has been called or when PAMGuard starts to ensure
|
|
||||||
* that there is a database record of how the hydrophones were arranged. <p>
|
|
||||||
* This may cause trouble in offline analysis if you want to make changes to the phone layout
|
|
||||||
* (for example changing a hydrophone separation).
|
|
||||||
*/
|
|
||||||
public void createArrayData() {
|
|
||||||
// DBControlUnit dbControl = DBControlUnit.findDatabaseControl();
|
|
||||||
// DBProcess dbProcess = null;
|
|
||||||
// if (dbControl != null) {
|
|
||||||
// dbProcess = dbControl.getDbProcess();
|
|
||||||
// }
|
|
||||||
|
|
||||||
long timeNow = PamCalendar.getTimeInMillis();
|
|
||||||
|
|
||||||
createDefaultStreamerUnits(timeNow);
|
|
||||||
createDefaultHydrophoneUnits(timeNow);
|
|
||||||
|
|
||||||
arrayDataSaved = true;
|
|
||||||
}
|
|
||||||
public int createDefaultStreamerUnits(long timeNow) {
|
|
||||||
|
|
||||||
PamArray currentArray = arrayManager.getCurrentArray();
|
|
||||||
if (currentArray == null) {
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
int n = currentArray.getNumStreamers();
|
public int createDefaultStreamerUnits(long timeNow) {
|
||||||
Streamer s;
|
|
||||||
StreamerDataUnit sdu;
|
PamArray currentArray = arrayManager.getCurrentArray();
|
||||||
StreamerDataBlock sdb = arrayManager.getStreamerDatabBlock();
|
if (currentArray == null) {
|
||||||
for (int i = 0; i < n; i++) {
|
return 0;
|
||||||
if (sdb.getPreceedingUnit(timeNow,1<<i)==null){
|
}
|
||||||
s = currentArray.getStreamer(i);
|
int n = currentArray.getNumStreamers();
|
||||||
sdu = new StreamerDataUnit(timeNow, s);
|
Streamer s;
|
||||||
|
StreamerDataUnit sdu;
|
||||||
|
StreamerDataBlock sdb = arrayManager.getStreamerDatabBlock();
|
||||||
|
for (int i = 0; i < n; i++) {
|
||||||
|
if (sdb.getPreceedingUnit(timeNow,1<<i)==null){
|
||||||
|
s = currentArray.getStreamer(i);
|
||||||
|
sdu = new StreamerDataUnit(timeNow, s);
|
||||||
|
if (getPamControlledUnit().isViewer()) {
|
||||||
|
// give it a face index to stop it saving every time viewere is opened.
|
||||||
|
sdu.setDatabaseIndex(-1);
|
||||||
|
}
|
||||||
|
streamerDataBlock.addPamData(sdu);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
public int createDefaultHydrophoneUnits(long timeNow) {
|
||||||
|
PamArray currentArray = arrayManager.getCurrentArray();
|
||||||
|
if (currentArray == null) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
int n = currentArray.getHydrophoneCount();
|
||||||
|
Hydrophone h;
|
||||||
|
HydrophoneDataUnit hdu;
|
||||||
|
for (int i = 0; i < n; i++) {
|
||||||
|
h = currentArray.getHydrophone(i);
|
||||||
|
hdu = new HydrophoneDataUnit(timeNow, h);
|
||||||
if (getPamControlledUnit().isViewer()) {
|
if (getPamControlledUnit().isViewer()) {
|
||||||
// give it a face index to stop it saving every time viewere is opened.
|
// give it a face index to stop it saving every time viewere is opened.
|
||||||
sdu.setDatabaseIndex(-1);
|
hdu.setDatabaseIndex(-1);
|
||||||
}
|
}
|
||||||
streamerDataBlock.addPamData(sdu);
|
hydrophoneDataBlock.addPamData(hdu);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return n;
|
return n;
|
||||||
}
|
|
||||||
public int createDefaultHydrophoneUnits(long timeNow) {
|
|
||||||
PamArray currentArray = arrayManager.getCurrentArray();
|
|
||||||
if (currentArray == null) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
int n = currentArray.getHydrophoneCount();
|
|
||||||
Hydrophone h;
|
|
||||||
HydrophoneDataUnit hdu;
|
|
||||||
for (int i = 0; i < n; i++) {
|
|
||||||
h = currentArray.getHydrophone(i);
|
|
||||||
hdu = new HydrophoneDataUnit(timeNow, h);
|
|
||||||
if (getPamControlledUnit().isViewer()) {
|
|
||||||
// give it a face index to stop it saving every time viewere is opened.
|
|
||||||
hdu.setDatabaseIndex(-1);
|
|
||||||
}
|
|
||||||
hydrophoneDataBlock.addPamData(hdu);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return n;
|
/**
|
||||||
}
|
* @return the hydrophoneDataBlock
|
||||||
|
*/
|
||||||
|
protected HydrophoneDataBlock getHydrophoneDataBlock() {
|
||||||
|
return hydrophoneDataBlock;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the hydrophoneDataBlock
|
* @return the hydrophoneSQLlogging
|
||||||
*/
|
*/
|
||||||
protected HydrophoneDataBlock getHydrophoneDataBlock() {
|
protected HydrophoneSQLLogging getHydrophoneSQLlogging() {
|
||||||
return hydrophoneDataBlock;
|
return hydrophoneSQLlogging;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the hydrophoneSQLlogging
|
|
||||||
*/
|
|
||||||
protected HydrophoneSQLLogging getHydrophoneSQLlogging() {
|
|
||||||
return hydrophoneSQLlogging;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
72
src/Array/InstrumentIdentityPanel.java
Normal file
72
src/Array/InstrumentIdentityPanel.java
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
package Array;
|
||||||
|
|
||||||
|
import java.awt.GridBagConstraints;
|
||||||
|
import java.awt.GridBagLayout;
|
||||||
|
|
||||||
|
import javax.swing.JComponent;
|
||||||
|
import javax.swing.JLabel;
|
||||||
|
import javax.swing.JPanel;
|
||||||
|
import javax.swing.JTextField;
|
||||||
|
import javax.swing.border.TitledBorder;
|
||||||
|
|
||||||
|
import PamView.dialog.PamGridBagContraints;
|
||||||
|
import PamView.panel.WestAlignedPanel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instrument identity panel, contrians additional fields required by Tethys.
|
||||||
|
* @author dg50
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class InstrumentIdentityPanel {
|
||||||
|
|
||||||
|
private JPanel mainPanel;
|
||||||
|
|
||||||
|
private JTextField instrumentId;
|
||||||
|
|
||||||
|
private JTextField instrumentType;
|
||||||
|
|
||||||
|
public InstrumentIdentityPanel() {
|
||||||
|
mainPanel = new WestAlignedPanel();
|
||||||
|
mainPanel.setBorder(new TitledBorder("Instrument information"));
|
||||||
|
mainPanel.setLayout(new GridBagLayout());
|
||||||
|
GridBagConstraints c = new PamGridBagContraints();
|
||||||
|
mainPanel.add(new JLabel("Instrument Type ", JLabel.RIGHT), c);
|
||||||
|
c.gridx++;
|
||||||
|
mainPanel.add(instrumentType = new JTextField(20), c);
|
||||||
|
c.gridx = 0;
|
||||||
|
c.gridy++;
|
||||||
|
mainPanel.add(new JLabel("Instrument Id ", JLabel.RIGHT), c);
|
||||||
|
c.gridx++;
|
||||||
|
mainPanel.add(instrumentId = new JTextField(20), c);
|
||||||
|
|
||||||
|
instrumentType.setToolTipText("Instrument type, e.g. Towed array, HARP, EAR, Popup, DMON, Rock Hopper, etc.");
|
||||||
|
instrumentId.setToolTipText("Instrument identifier, e.g. serial number");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public JComponent getComponent() {
|
||||||
|
return mainPanel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setParams(PamArray currentArray) {
|
||||||
|
if (currentArray == null) {
|
||||||
|
currentArray = ArrayManager.getArrayManager().getCurrentArray();
|
||||||
|
}
|
||||||
|
if (currentArray == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
instrumentType.setText(currentArray.getInstrumentType());
|
||||||
|
instrumentId.setText(currentArray.getInstrumentId());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void getParams(PamArray currentArray) {
|
||||||
|
if (currentArray == null) {
|
||||||
|
currentArray = ArrayManager.getArrayManager().getCurrentArray();
|
||||||
|
}
|
||||||
|
if (currentArray == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
currentArray.setInstrumentType(instrumentType.getText());
|
||||||
|
currentArray.setInstrumentId(instrumentId.getText());
|
||||||
|
}
|
||||||
|
}
|
@ -16,5 +16,10 @@ abstract public class MovingHydrophoneLocator extends SimpleHydrophoneLocator {
|
|||||||
super(pamArray, streamer);
|
super(pamArray, streamer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isChangeable() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -35,6 +35,7 @@ import Array.streamerOrigin.StreamerDataIterator;
|
|||||||
import GPS.GpsData;
|
import GPS.GpsData;
|
||||||
import PamModel.parametermanager.ManagedParameters;
|
import PamModel.parametermanager.ManagedParameters;
|
||||||
import PamModel.parametermanager.PamParameterSet;
|
import PamModel.parametermanager.PamParameterSet;
|
||||||
|
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||||
import PamModel.parametermanager.PrivatePamParameterData;
|
import PamModel.parametermanager.PrivatePamParameterData;
|
||||||
import PamUtils.LatLong;
|
import PamUtils.LatLong;
|
||||||
import PamUtils.PamArrayUtils;
|
import PamUtils.PamArrayUtils;
|
||||||
@ -91,6 +92,33 @@ public class PamArray implements Serializable, Cloneable, ManagedParameters {
|
|||||||
private String arrayName;
|
private String arrayName;
|
||||||
|
|
||||||
private String arrayFile;
|
private String arrayFile;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Type, used for Tethys and other meta data control
|
||||||
|
*/
|
||||||
|
private String instrumentType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Array Id. Can be anything. Compulsory for Tethys.
|
||||||
|
*/
|
||||||
|
private String instrumentId;
|
||||||
|
|
||||||
|
public String getInstrumentType() {
|
||||||
|
return instrumentType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setInstrumentType(String instrumentType) {
|
||||||
|
this.instrumentType = instrumentType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getInstrumentId() {
|
||||||
|
return instrumentId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setInstrumentId(String instrumentId) {
|
||||||
|
this.instrumentId = instrumentId;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// private int originInterpolation = ORIGIN_USE_LATEST;
|
// private int originInterpolation = ORIGIN_USE_LATEST;
|
||||||
private int originInterpolation = ORIGIN_USE_PRECEEDING;
|
private int originInterpolation = ORIGIN_USE_PRECEEDING;
|
||||||
@ -1578,7 +1606,7 @@ public class PamArray implements Serializable, Cloneable, ManagedParameters {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PamParameterSet getParameterSet() {
|
public PamParameterSet getParameterSet() {
|
||||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||||
try {
|
try {
|
||||||
Field field = this.getClass().getDeclaredField("streamers");
|
Field field = this.getClass().getDeclaredField("streamers");
|
||||||
ps.put(new PrivatePamParameterData(this, field) {
|
ps.put(new PrivatePamParameterData(this, field) {
|
||||||
|
@ -25,6 +25,7 @@ import java.io.Serializable;
|
|||||||
|
|
||||||
import PamModel.parametermanager.ManagedParameters;
|
import PamModel.parametermanager.ManagedParameters;
|
||||||
import PamModel.parametermanager.PamParameterSet;
|
import PamModel.parametermanager.PamParameterSet;
|
||||||
|
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@ -79,7 +80,7 @@ public class Preamplifier implements Serializable, Cloneable, ManagedParameters
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PamParameterSet getParameterSet() {
|
public PamParameterSet getParameterSet() {
|
||||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||||
return ps;
|
return ps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,6 +17,7 @@ import PamController.PamController;
|
|||||||
import PamController.masterReference.MasterReferencePoint;
|
import PamController.masterReference.MasterReferencePoint;
|
||||||
import PamModel.parametermanager.ManagedParameters;
|
import PamModel.parametermanager.ManagedParameters;
|
||||||
import PamModel.parametermanager.PamParameterSet;
|
import PamModel.parametermanager.PamParameterSet;
|
||||||
|
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||||
import PamModel.parametermanager.PrivatePamParameterData;
|
import PamModel.parametermanager.PrivatePamParameterData;
|
||||||
import PamUtils.LatLong;
|
import PamUtils.LatLong;
|
||||||
import PamUtils.PamCalendar;
|
import PamUtils.PamCalendar;
|
||||||
@ -767,7 +768,7 @@ public class Streamer implements Serializable, Cloneable, ManagedParameters {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PamParameterSet getParameterSet() {
|
public PamParameterSet getParameterSet() {
|
||||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||||
try {
|
try {
|
||||||
Field field = this.getClass().getDeclaredField("coordinate");
|
Field field = this.getClass().getDeclaredField("coordinate");
|
||||||
ps.put(new PrivatePamParameterData(this, field) {
|
ps.put(new PrivatePamParameterData(this, field) {
|
||||||
|
@ -259,6 +259,7 @@ public class StreamerDialog extends PamDialog {
|
|||||||
// }
|
// }
|
||||||
singleInstance.currentArray = currentArray;
|
singleInstance.currentArray = currentArray;
|
||||||
singleInstance.defaultStreamer = streamer;//.clone();
|
singleInstance.defaultStreamer = streamer;//.clone();
|
||||||
|
// singleInstance.st
|
||||||
singleInstance.setParams();
|
singleInstance.setParams();
|
||||||
singleInstance.setVisible(true);
|
singleInstance.setVisible(true);
|
||||||
return singleInstance.defaultStreamer;
|
return singleInstance.defaultStreamer;
|
||||||
@ -552,6 +553,17 @@ public class StreamerDialog extends PamDialog {
|
|||||||
pack();
|
pack();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
OriginSettings os = defaultStreamer.getOriginSettings(currentOriginMethod.getClass());
|
||||||
|
if (os != null) {
|
||||||
|
currentOriginMethod.setOriginSettings(os);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e) {
|
||||||
|
// will throw if it tries to set the wrong type of settings.
|
||||||
|
}
|
||||||
|
|
||||||
enableControls();
|
enableControls();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@ package Array.streamerOrigin;
|
|||||||
import PamController.SettingsObject;
|
import PamController.SettingsObject;
|
||||||
import PamModel.parametermanager.ManagedParameters;
|
import PamModel.parametermanager.ManagedParameters;
|
||||||
import PamModel.parametermanager.PamParameterSet;
|
import PamModel.parametermanager.PamParameterSet;
|
||||||
|
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class to hold settings for the different origin methods.
|
* Class to hold settings for the different origin methods.
|
||||||
@ -47,7 +48,7 @@ public abstract class OriginSettings implements SettingsObject, Cloneable, Manag
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PamParameterSet getParameterSet() {
|
public PamParameterSet getParameterSet() {
|
||||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||||
return ps;
|
return ps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@ import java.util.Arrays;
|
|||||||
|
|
||||||
import PamModel.parametermanager.ManagedParameters;
|
import PamModel.parametermanager.ManagedParameters;
|
||||||
import PamModel.parametermanager.PamParameterSet;
|
import PamModel.parametermanager.PamParameterSet;
|
||||||
|
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||||
import mcc.MccJniInterface;
|
import mcc.MccJniInterface;
|
||||||
import mcc.mccjna.MCCConstants;
|
import mcc.mccjna.MCCConstants;
|
||||||
|
|
||||||
@ -67,7 +68,7 @@ public class ArrayAccelParams implements Serializable, Cloneable, ManagedParamet
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PamParameterSet getParameterSet() {
|
public PamParameterSet getParameterSet() {
|
||||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||||
return ps;
|
return ps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@ import java.lang.reflect.Field;
|
|||||||
|
|
||||||
import PamModel.parametermanager.ManagedParameters;
|
import PamModel.parametermanager.ManagedParameters;
|
||||||
import PamModel.parametermanager.PamParameterSet;
|
import PamModel.parametermanager.PamParameterSet;
|
||||||
|
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||||
import PamModel.parametermanager.PrivatePamParameterData;
|
import PamModel.parametermanager.PrivatePamParameterData;
|
||||||
import PamView.GroupedSourceParameters;
|
import PamView.GroupedSourceParameters;
|
||||||
import PamguardMVC.PamConstants;
|
import PamguardMVC.PamConstants;
|
||||||
@ -44,7 +45,7 @@ public class AzigramParameters implements Serializable, ManagedParameters, Clone
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PamParameterSet getParameterSet() {
|
public PamParameterSet getParameterSet() {
|
||||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||||
try {
|
try {
|
||||||
Field field = this.getClass().getDeclaredField("name");
|
Field field = this.getClass().getDeclaredField("name");
|
||||||
ps.put(new PrivatePamParameterData(this, field) {
|
ps.put(new PrivatePamParameterData(this, field) {
|
||||||
|
@ -7,6 +7,7 @@ import org.w3c.dom.Element;
|
|||||||
|
|
||||||
import PamModel.parametermanager.ManagedParameters;
|
import PamModel.parametermanager.ManagedParameters;
|
||||||
import PamModel.parametermanager.PamParameterSet;
|
import PamModel.parametermanager.PamParameterSet;
|
||||||
|
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* FilterPArameters for use when the filter is on it's own (within a FilterController)
|
* FilterPArameters for use when the filter is on it's own (within a FilterController)
|
||||||
@ -39,7 +40,7 @@ public class FilterParameters_2 implements Serializable, Cloneable, ManagedParam
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PamParameterSet getParameterSet() {
|
public PamParameterSet getParameterSet() {
|
||||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||||
return ps;
|
return ps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -30,6 +30,7 @@ import org.w3c.dom.Element;
|
|||||||
import PamController.PamControlledUnit;
|
import PamController.PamControlledUnit;
|
||||||
import PamModel.parametermanager.ManagedParameters;
|
import PamModel.parametermanager.ManagedParameters;
|
||||||
import PamModel.parametermanager.PamParameterSet;
|
import PamModel.parametermanager.PamParameterSet;
|
||||||
|
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||||
import PamUtils.FrequencyFormat;
|
import PamUtils.FrequencyFormat;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -358,7 +359,7 @@ public class FilterParams implements Serializable, Cloneable, ManagedParameters
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PamParameterSet getParameterSet() {
|
public PamParameterSet getParameterSet() {
|
||||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||||
return ps;
|
return ps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@ import java.lang.reflect.Field;
|
|||||||
|
|
||||||
import PamModel.parametermanager.ManagedParameters;
|
import PamModel.parametermanager.ManagedParameters;
|
||||||
import PamModel.parametermanager.PamParameterSet;
|
import PamModel.parametermanager.PamParameterSet;
|
||||||
|
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||||
import PamModel.parametermanager.PrivatePamParameterData;
|
import PamModel.parametermanager.PrivatePamParameterData;
|
||||||
|
|
||||||
public class GPSParameters implements Serializable, Cloneable, ManagedParameters {
|
public class GPSParameters implements Serializable, Cloneable, ManagedParameters {
|
||||||
@ -175,7 +176,7 @@ public class GPSParameters implements Serializable, Cloneable, ManagedParameters
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PamParameterSet getParameterSet() {
|
public PamParameterSet getParameterSet() {
|
||||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||||
try {
|
try {
|
||||||
Field field = this.getClass().getDeclaredField("nmeaSource");
|
Field field = this.getClass().getDeclaredField("nmeaSource");
|
||||||
ps.put(new PrivatePamParameterData(this, field) {
|
ps.put(new PrivatePamParameterData(this, field) {
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package GPS;
|
package GPS;
|
||||||
|
|
||||||
|
import PamUtils.PamCalendar;
|
||||||
import PamguardMVC.PamDataUnit;
|
import PamguardMVC.PamDataUnit;
|
||||||
|
|
||||||
public class GpsDataUnit extends PamDataUnit {
|
public class GpsDataUnit extends PamDataUnit {
|
||||||
@ -52,12 +53,18 @@ public class GpsDataUnit extends PamDataUnit {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String getSummaryString() {
|
public String getSummaryString() {
|
||||||
// TODO Auto-generated method stub
|
// String str = super.getSummaryString();
|
||||||
String str = super.getSummaryString();
|
String str = String.format("<html>%s<br>UID:%d, Database: %d<br>%s<br>",
|
||||||
|
"GPS Data", getUID(), getDatabaseIndex(), PamCalendar.formatDBDateTime(getTimeMilliseconds(), true));
|
||||||
if (gpsData != null) {
|
if (gpsData != null) {
|
||||||
str += gpsData.summaryString();
|
str += gpsData.summaryString();
|
||||||
}
|
}
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double[] getFrequency() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -295,7 +295,8 @@ public class GpsLogger extends SQLLogging {
|
|||||||
* time from the UTC column which is NOT the GpsData time which was the real GPS time.
|
* time from the UTC column which is NOT the GpsData time which was the real GPS time.
|
||||||
*/
|
*/
|
||||||
int gpsIntTimeVal = gpsTime.getIntegerValue();
|
int gpsIntTimeVal = gpsTime.getIntegerValue();
|
||||||
Object ts = getTableDefinition().getTimeStampItem().getValue();
|
PamTableDefinition pamTableDef = (PamTableDefinition) getTableDefinition();
|
||||||
|
Object ts = pamTableDef.getTimeStampItem().getValue();
|
||||||
long gpsDate = sqlTypes.millisFromTimeStamp(ts);
|
long gpsDate = sqlTypes.millisFromTimeStamp(ts);
|
||||||
if (gpsDate%1000 == 0) {
|
if (gpsDate%1000 == 0) {
|
||||||
// some databases may have stored the milliseconds, in which
|
// some databases may have stored the milliseconds, in which
|
||||||
|
@ -17,6 +17,7 @@ import java.lang.reflect.Field;
|
|||||||
import PamModel.parametermanager.ManagedParameters;
|
import PamModel.parametermanager.ManagedParameters;
|
||||||
import PamModel.parametermanager.PamParameterSet;
|
import PamModel.parametermanager.PamParameterSet;
|
||||||
import PamModel.parametermanager.PrivatePamParameterData;
|
import PamModel.parametermanager.PrivatePamParameterData;
|
||||||
|
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||||
import PamView.GroupedSourceParameters;
|
import PamView.GroupedSourceParameters;
|
||||||
|
|
||||||
public class IshDetParams implements Serializable, Cloneable, ManagedParameters {
|
public class IshDetParams implements Serializable, Cloneable, ManagedParameters {
|
||||||
@ -96,7 +97,7 @@ public class IshDetParams implements Serializable, Cloneable, ManagedParameters
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PamParameterSet getParameterSet() {
|
public PamParameterSet getParameterSet() {
|
||||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||||
try {
|
try {
|
||||||
Field field = this.getClass().getDeclaredField("inputDataSource");
|
Field field = this.getClass().getDeclaredField("inputDataSource");
|
||||||
ps.put(new PrivatePamParameterData(this, field) {
|
ps.put(new PrivatePamParameterData(this, field) {
|
||||||
|
@ -4,6 +4,7 @@ import java.io.Serializable;
|
|||||||
|
|
||||||
import PamModel.parametermanager.ManagedParameters;
|
import PamModel.parametermanager.ManagedParameters;
|
||||||
import PamModel.parametermanager.PamParameterSet;
|
import PamModel.parametermanager.PamParameterSet;
|
||||||
|
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ishamel display parameters for the Spectrogram plug in.
|
* Ishamel display parameters for the Spectrogram plug in.
|
||||||
@ -42,7 +43,7 @@ public class IshDisplayParams implements Serializable, Cloneable, ManagedParamet
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PamParameterSet getParameterSet() {
|
public PamParameterSet getParameterSet() {
|
||||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DISPLAY);
|
||||||
return ps;
|
return ps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,14 +8,13 @@ import java.sql.Types;
|
|||||||
|
|
||||||
import PamguardMVC.PamDataBlock;
|
import PamguardMVC.PamDataBlock;
|
||||||
import PamguardMVC.PamDataUnit;
|
import PamguardMVC.PamDataUnit;
|
||||||
|
import generalDatabase.EmptyTableDefinition;
|
||||||
//import pamDatabase.SQLLogging;
|
//import pamDatabase.SQLLogging;
|
||||||
//import PamguardMVC.RecyclingDataBlock;
|
//import PamguardMVC.RecyclingDataBlock;
|
||||||
import generalDatabase.PamDetectionLogging;
|
import generalDatabase.PamDetectionLogging;
|
||||||
|
|
||||||
public class IshLogger extends PamDetectionLogging {
|
public class IshLogger extends PamDetectionLogging {
|
||||||
IshDetControl ishDetControl;
|
IshDetControl ishDetControl;
|
||||||
PamTableDefinition tableDefinition;
|
|
||||||
PamTableItem systemDate, durationSecs, secSinceStart, peakHeight;
|
PamTableItem systemDate, durationSecs, secSinceStart, peakHeight;
|
||||||
// Peak is more important than start time for matched filter & spectrogram correlation
|
// Peak is more important than start time for matched filter & spectrogram correlation
|
||||||
PamTableItem peakSample, peakDelaySecs;
|
PamTableItem peakSample, peakDelaySecs;
|
||||||
@ -25,7 +24,7 @@ public class IshLogger extends PamDetectionLogging {
|
|||||||
super(pamDataBlock, UPDATE_POLICY_WRITENEW);
|
super(pamDataBlock, UPDATE_POLICY_WRITENEW);
|
||||||
this.ishDetControl = ishDetControl;
|
this.ishDetControl = ishDetControl;
|
||||||
|
|
||||||
tableDefinition = getTableDefinition();
|
EmptyTableDefinition tableDefinition = getTableDefinition();
|
||||||
|
|
||||||
// PamTableItem tableItem;
|
// PamTableItem tableItem;
|
||||||
// setUpdatePolicy(UPDATE_POLICY_WRITENEW);
|
// setUpdatePolicy(UPDATE_POLICY_WRITENEW);
|
||||||
|
@ -14,14 +14,13 @@ import IshmaelDetector.IshDetection;
|
|||||||
import PamUtils.LatLong;
|
import PamUtils.LatLong;
|
||||||
import PamguardMVC.PamDataBlock;
|
import PamguardMVC.PamDataBlock;
|
||||||
import PamguardMVC.PamDataUnit;
|
import PamguardMVC.PamDataUnit;
|
||||||
|
import generalDatabase.EmptyTableDefinition;
|
||||||
//import pamDatabase.SQLLogging;
|
//import pamDatabase.SQLLogging;
|
||||||
//import PamguardMVC.RecyclingDataBlock;
|
//import PamguardMVC.RecyclingDataBlock;
|
||||||
import generalDatabase.PamDetectionLogging;
|
import generalDatabase.PamDetectionLogging;
|
||||||
|
|
||||||
public class IshLocSqlLogging extends PamDetectionLogging {
|
public class IshLocSqlLogging extends PamDetectionLogging {
|
||||||
IshLocControl ishLocControl;
|
IshLocControl ishLocControl;
|
||||||
PamTableDefinition tableDefinition;
|
|
||||||
PamTableItem systemDate, durationSecs, secSinceStart, peakHeight;
|
PamTableItem systemDate, durationSecs, secSinceStart, peakHeight;
|
||||||
private PamTableItem latitude, longitude, refLatitude, refLongitude, x, y, z;
|
private PamTableItem latitude, longitude, refLatitude, refLongitude, x, y, z;
|
||||||
|
|
||||||
@ -30,7 +29,7 @@ public class IshLocSqlLogging extends PamDetectionLogging {
|
|||||||
super(pamDataBlock, UPDATE_POLICY_WRITENEW);
|
super(pamDataBlock, UPDATE_POLICY_WRITENEW);
|
||||||
this.ishLocControl = ishDetControl;
|
this.ishLocControl = ishDetControl;
|
||||||
|
|
||||||
tableDefinition = getTableDefinition();
|
EmptyTableDefinition tableDefinition = getTableDefinition();
|
||||||
tableDefinition.addTableItem(latitude = new PamTableItem("Latitude", Types.DOUBLE));
|
tableDefinition.addTableItem(latitude = new PamTableItem("Latitude", Types.DOUBLE));
|
||||||
tableDefinition.addTableItem(longitude = new PamTableItem("Longitude", Types.DOUBLE));
|
tableDefinition.addTableItem(longitude = new PamTableItem("Longitude", Types.DOUBLE));
|
||||||
tableDefinition.addTableItem(refLatitude = new PamTableItem("ReferenceLatitude", Types.DOUBLE));
|
tableDefinition.addTableItem(refLatitude = new PamTableItem("ReferenceLatitude", Types.DOUBLE));
|
||||||
|
@ -4,6 +4,7 @@ import java.io.Serializable;
|
|||||||
|
|
||||||
import PamModel.parametermanager.ManagedParameters;
|
import PamModel.parametermanager.ManagedParameters;
|
||||||
import PamModel.parametermanager.PamParameterSet;
|
import PamModel.parametermanager.PamParameterSet;
|
||||||
|
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||||
|
|
||||||
public class KernelSmoothingParameters implements Serializable, Cloneable, ManagedParameters {
|
public class KernelSmoothingParameters implements Serializable, Cloneable, ManagedParameters {
|
||||||
|
|
||||||
@ -25,7 +26,7 @@ public class KernelSmoothingParameters implements Serializable, Cloneable, Manag
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PamParameterSet getParameterSet() {
|
public PamParameterSet getParameterSet() {
|
||||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||||
return ps;
|
return ps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,6 +4,7 @@ import java.io.Serializable;
|
|||||||
|
|
||||||
import PamModel.parametermanager.ManagedParameters;
|
import PamModel.parametermanager.ManagedParameters;
|
||||||
import PamModel.parametermanager.PamParameterSet;
|
import PamModel.parametermanager.PamParameterSet;
|
||||||
|
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||||
import fftFilter.FFTFilterParams;
|
import fftFilter.FFTFilterParams;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -157,7 +158,7 @@ public class DelayMeasurementParams implements Serializable, Cloneable, ManagedP
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PamParameterSet getParameterSet() {
|
public PamParameterSet getParameterSet() {
|
||||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||||
return ps;
|
return ps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,6 +4,7 @@ import java.io.Serializable;
|
|||||||
|
|
||||||
import PamModel.parametermanager.ManagedParameters;
|
import PamModel.parametermanager.ManagedParameters;
|
||||||
import PamModel.parametermanager.PamParameterSet;
|
import PamModel.parametermanager.PamParameterSet;
|
||||||
|
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Paramters for running a Marklov chain Monte Carlo algorithm.
|
* Paramters for running a Marklov chain Monte Carlo algorithm.
|
||||||
@ -141,7 +142,7 @@ public class MCMCParams2 implements Serializable, Cloneable, ManagedParameters
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PamParameterSet getParameterSet() {
|
public PamParameterSet getParameterSet() {
|
||||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||||
return ps;
|
return ps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,6 +4,7 @@ import java.io.Serializable;
|
|||||||
|
|
||||||
import PamModel.parametermanager.ManagedParameters;
|
import PamModel.parametermanager.ManagedParameters;
|
||||||
import PamModel.parametermanager.PamParameterSet;
|
import PamModel.parametermanager.PamParameterSet;
|
||||||
|
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||||
|
|
||||||
|
|
||||||
public class MCMCParams implements Serializable, Cloneable, ManagedParameters {
|
public class MCMCParams implements Serializable, Cloneable, ManagedParameters {
|
||||||
@ -64,7 +65,7 @@ public class MCMCParams implements Serializable, Cloneable, ManagedParameters {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PamParameterSet getParameterSet() {
|
public PamParameterSet getParameterSet() {
|
||||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||||
return ps;
|
return ps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,6 +4,7 @@ import java.io.Serializable;
|
|||||||
|
|
||||||
import PamModel.parametermanager.ManagedParameters;
|
import PamModel.parametermanager.ManagedParameters;
|
||||||
import PamModel.parametermanager.PamParameterSet;
|
import PamModel.parametermanager.PamParameterSet;
|
||||||
|
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -69,7 +70,7 @@ public class HyperbolicParams implements Serializable, Cloneable, ManagedParamet
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PamParameterSet getParameterSet() {
|
public PamParameterSet getParameterSet() {
|
||||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||||
return ps;
|
return ps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,6 +4,7 @@ import java.io.Serializable;
|
|||||||
|
|
||||||
import PamModel.parametermanager.ManagedParameters;
|
import PamModel.parametermanager.ManagedParameters;
|
||||||
import PamModel.parametermanager.PamParameterSet;
|
import PamModel.parametermanager.PamParameterSet;
|
||||||
|
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||||
import Spectrogram.WindowFunction;
|
import Spectrogram.WindowFunction;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -104,7 +105,7 @@ public class RawOrFFTParams implements Serializable, Cloneable, RawOrFFTParamsIn
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PamParameterSet getParameterSet() {
|
public PamParameterSet getParameterSet() {
|
||||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||||
return ps;
|
return ps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -85,7 +85,15 @@ public class GebcoMapFile implements MapFileManager {
|
|||||||
* @see Map.MapFile#readFileData(java.io.File)
|
* @see Map.MapFile#readFileData(java.io.File)
|
||||||
*/
|
*/
|
||||||
public boolean readFileData(File file) {
|
public boolean readFileData(File file) {
|
||||||
return readMapFile(file, true);
|
try {
|
||||||
|
return readMapFile(file, true);
|
||||||
|
}
|
||||||
|
catch (Exception e) {
|
||||||
|
// trap error someone reported at end November 22. Suspect it was their corrupt map file causing problems.
|
||||||
|
String err = String.format("Map file %s is missing or corrupt and cannot be loaded", file.getName());
|
||||||
|
WarnOnce.showWarning("Map File Error", err, WarnOnce.OK_OPTION);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean readMapFile(File gebcoFile, boolean readContours) {
|
private boolean readMapFile(File gebcoFile, boolean readContours) {
|
||||||
|
@ -7,6 +7,7 @@ import java.util.ListIterator;
|
|||||||
|
|
||||||
import PamModel.parametermanager.ManagedParameters;
|
import PamModel.parametermanager.ManagedParameters;
|
||||||
import PamModel.parametermanager.PamParameterSet;
|
import PamModel.parametermanager.PamParameterSet;
|
||||||
|
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PArameters for MapDetectionsManager which
|
* PArameters for MapDetectionsManager which
|
||||||
@ -65,7 +66,7 @@ public class MapDetectionsParameters implements Serializable, Cloneable, Managed
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PamParameterSet getParameterSet() {
|
public PamParameterSet getParameterSet() {
|
||||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DISPLAY);
|
||||||
return ps;
|
return ps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1096,6 +1096,7 @@ public class MapPanel extends JPanelWithPamKey implements PamObserver, ColorMana
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ds = dataBlock.getDataSelector(simpleMapRef.getUnitName(), false, DATASELECTNAME);
|
ds = dataBlock.getDataSelector(simpleMapRef.getUnitName(), false, DATASELECTNAME);
|
||||||
|
// ds = null;
|
||||||
ArrayList<PamDataUnit> dataCopy = dataBlock.getDataCopy(earliestToPlot, now, true, ds);
|
ArrayList<PamDataUnit> dataCopy = dataBlock.getDataCopy(earliestToPlot, now, true, ds);
|
||||||
duIterator = dataCopy.listIterator();
|
duIterator = dataCopy.listIterator();
|
||||||
while (duIterator.hasNext()) {
|
while (duIterator.hasNext()) {
|
||||||
|
@ -27,6 +27,7 @@ import java.lang.reflect.Field;
|
|||||||
import Array.Hydrophone;
|
import Array.Hydrophone;
|
||||||
import PamModel.parametermanager.ManagedParameters;
|
import PamModel.parametermanager.ManagedParameters;
|
||||||
import PamModel.parametermanager.PamParameterSet;
|
import PamModel.parametermanager.PamParameterSet;
|
||||||
|
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||||
import PamModel.parametermanager.PrivatePamParameterData;
|
import PamModel.parametermanager.PrivatePamParameterData;
|
||||||
|
|
||||||
public class MapParameters implements Serializable, Cloneable, ManagedParameters {
|
public class MapParameters implements Serializable, Cloneable, ManagedParameters {
|
||||||
@ -301,7 +302,7 @@ public class MapParameters implements Serializable, Cloneable, ManagedParameters
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PamParameterSet getParameterSet() {
|
public PamParameterSet getParameterSet() {
|
||||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DISPLAY);
|
||||||
return ps;
|
return ps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,9 +20,15 @@
|
|||||||
*/
|
*/
|
||||||
package Map;
|
package Map;
|
||||||
|
|
||||||
|
import java.awt.Point;
|
||||||
import java.awt.event.MouseMotionAdapter;
|
import java.awt.event.MouseMotionAdapter;
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
|
import java.util.ListIterator;
|
||||||
|
|
||||||
|
import GPS.GPSControl;
|
||||||
|
import GPS.GPSDataBlock;
|
||||||
|
import GPS.GpsDataUnit;
|
||||||
|
import PamController.PamController;
|
||||||
import PamUtils.Coordinate3d;
|
import PamUtils.Coordinate3d;
|
||||||
import PamUtils.LatLong;
|
import PamUtils.LatLong;
|
||||||
import PamUtils.PamCoordinate;
|
import PamUtils.PamCoordinate;
|
||||||
@ -385,6 +391,45 @@ public class MapRectProjector extends MapProjector {
|
|||||||
return xTrans;
|
return xTrans;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getHoverText(Point mousePoint, int ploNumberMatch) {
|
||||||
|
String text = super.getHoverText(mousePoint, ploNumberMatch);
|
||||||
|
if (text == null) {
|
||||||
|
return findGpsTrackText(mousePoint, ploNumberMatch);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String findGpsTrackText(Point mousePoint, int ploNumberMatch) {
|
||||||
|
GPSControl gpsControl = GPSControl.getGpsControl();
|
||||||
|
if (gpsControl == null || mousePoint == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
LatLong currentPos = getDataPosition(new Coordinate3d(mousePoint.x, mousePoint.y));
|
||||||
|
GPSDataBlock gpsDataBlock = gpsControl.getGpsDataBlock();
|
||||||
|
double dist = Double.MAX_VALUE;
|
||||||
|
GpsDataUnit closest = null;
|
||||||
|
ListIterator<GpsDataUnit> it = gpsDataBlock.getListIterator(0);
|
||||||
|
while (it.hasNext()) {
|
||||||
|
GpsDataUnit gpsUnit = it.next();
|
||||||
|
double r = gpsUnit.getGpsData().distanceToMetres(currentPos);
|
||||||
|
if (r < dist) {
|
||||||
|
dist = r;
|
||||||
|
closest = gpsUnit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (closest == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
double rPix = dist*this.pixelsPerMetre;
|
||||||
|
if (rPix > 20) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return closest.getSummaryString();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ import java.io.Serializable;
|
|||||||
|
|
||||||
import PamModel.parametermanager.ManagedParameters;
|
import PamModel.parametermanager.ManagedParameters;
|
||||||
import PamModel.parametermanager.PamParameterSet;
|
import PamModel.parametermanager.PamParameterSet;
|
||||||
|
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||||
|
|
||||||
public class GridbaseParameters implements Cloneable, Serializable, ManagedParameters {
|
public class GridbaseParameters implements Cloneable, Serializable, ManagedParameters {
|
||||||
|
|
||||||
@ -25,7 +26,7 @@ public class GridbaseParameters implements Cloneable, Serializable, ManagedParam
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PamParameterSet getParameterSet() {
|
public PamParameterSet getParameterSet() {
|
||||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DISPLAY);
|
||||||
return ps;
|
return ps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,6 +24,7 @@ import java.io.Serializable;
|
|||||||
|
|
||||||
import PamModel.parametermanager.ManagedParameters;
|
import PamModel.parametermanager.ManagedParameters;
|
||||||
import PamModel.parametermanager.PamParameterSet;
|
import PamModel.parametermanager.PamParameterSet;
|
||||||
|
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||||
import serialComms.jserialcomm.PJSerialComm;
|
import serialComms.jserialcomm.PJSerialComm;
|
||||||
|
|
||||||
public class NMEAParameters implements Serializable, Cloneable, ManagedParameters {
|
public class NMEAParameters implements Serializable, Cloneable, ManagedParameters {
|
||||||
@ -149,7 +150,7 @@ public class NMEAParameters implements Serializable, Cloneable, ManagedParameter
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PamParameterSet getParameterSet() {
|
public PamParameterSet getParameterSet() {
|
||||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||||
return ps;
|
return ps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,6 +33,13 @@ public interface OfflineDataStore {
|
|||||||
*/
|
*/
|
||||||
public String getDataSourceName();
|
public String getDataSourceName();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the data location. This may be a specific file, or might be a folder
|
||||||
|
* if data are in many files, a URI, etc.
|
||||||
|
* @return store locations
|
||||||
|
*/
|
||||||
|
public String getDataLocation();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load data for a given datablock between two time limits.
|
* Load data for a given datablock between two time limits.
|
||||||
* @param dataBlock datablock owner of the data
|
* @param dataBlock datablock owner of the data
|
||||||
|
@ -23,6 +23,7 @@ package PamController;
|
|||||||
import java.awt.Component;
|
import java.awt.Component;
|
||||||
import java.awt.Frame;
|
import java.awt.Frame;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import javax.swing.JFrame;
|
import javax.swing.JFrame;
|
||||||
import javax.swing.JMenu;
|
import javax.swing.JMenu;
|
||||||
@ -30,16 +31,14 @@ import javax.swing.JMenuBar;
|
|||||||
import javax.swing.JMenuItem;
|
import javax.swing.JMenuItem;
|
||||||
import javax.swing.JOptionPane;
|
import javax.swing.JOptionPane;
|
||||||
|
|
||||||
import offlineProcessing.OfflineTask;
|
|
||||||
import offlineProcessing.OfflineTaskGroup;
|
import offlineProcessing.OfflineTaskGroup;
|
||||||
|
|
||||||
import org.w3c.dom.Document;
|
|
||||||
import org.w3c.dom.Element;
|
|
||||||
|
|
||||||
import PamController.status.ModuleStatus;
|
import PamController.status.ModuleStatus;
|
||||||
import PamController.status.ModuleStatusManager;
|
import PamController.status.ModuleStatusManager;
|
||||||
import PamController.status.ProcessCheck;
|
import PamController.status.ProcessCheck;
|
||||||
|
import PamModel.PamModel;
|
||||||
import PamModel.PamModuleInfo;
|
import PamModel.PamModuleInfo;
|
||||||
|
import PamModel.PamPluginInterface;
|
||||||
import PamView.ClipboardCopier;
|
import PamView.ClipboardCopier;
|
||||||
import PamView.PamGui;
|
import PamView.PamGui;
|
||||||
import PamView.PamSidePanel;
|
import PamView.PamSidePanel;
|
||||||
@ -845,6 +844,16 @@ public abstract class PamControlledUnit implements SettingsNameProvider {
|
|||||||
}
|
}
|
||||||
return worstStatus;
|
return worstStatus;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the offline state of this module. This can generally
|
||||||
|
* be idle, but can be a higher state when map making at startup
|
||||||
|
* and when running an offline task.
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public int getOfflineState() {
|
||||||
|
return PamController.PAM_IDLE;
|
||||||
|
}
|
||||||
|
|
||||||
// /**
|
// /**
|
||||||
// * Get a list of available offline tasks for this module. This is mostly used for tasks that
|
// * Get a list of available offline tasks for this module. This is mostly used for tasks that
|
||||||
@ -880,6 +889,53 @@ public abstract class PamControlledUnit implements SettingsNameProvider {
|
|||||||
public int getInstanceIndex() {
|
public int getInstanceIndex() {
|
||||||
return instanceIndex;
|
return instanceIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get detail if this is a plugin.
|
||||||
|
* @return plugin detail, or null if it's not a plugin.
|
||||||
|
*/
|
||||||
|
public PamPluginInterface getPlugin() {
|
||||||
|
List<PamPluginInterface> pluginList = ((PamModel) PamController.getInstance().getModelInterface()).getPluginList();
|
||||||
|
if (pluginList == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
for (PamPluginInterface plugin : pluginList) {
|
||||||
|
if (plugin.getClassName().equals(this.getClass().getName())) {
|
||||||
|
return plugin;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The PamConfiguration holds the master list of modules which form part of a
|
||||||
|
* configuration. It should be accessed to find list of datablocks, etc. rather than
|
||||||
|
* doing everything through PAMController whenever possible.
|
||||||
|
* @return the pamConfiguration
|
||||||
|
*/
|
||||||
|
public PamConfiguration getPamConfiguration() {
|
||||||
|
if (pamConfiguration == null) {
|
||||||
|
pamConfiguration = PamController.getInstance().getPamConfiguration();
|
||||||
|
}
|
||||||
|
return pamConfiguration;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Is this module in the main configuration. If it isn't then it's probably a dummy config
|
||||||
|
* used in the batch processor or for importing / exporting configs, so it should be stopped from
|
||||||
|
* doing too much !
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public boolean isInMainConfiguration() {
|
||||||
|
return pamConfiguration == PamController.getInstance().getPamConfiguration();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param pamConfiguration the pamConfiguration to set
|
||||||
|
*/
|
||||||
|
public void setPamConfiguration(PamConfiguration pamConfiguration) {
|
||||||
|
this.pamConfiguration = pamConfiguration;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The PamConfiguration holds the master list of modules which form part of a
|
* The PamConfiguration holds the master list of modules which form part of a
|
||||||
|
@ -36,6 +36,7 @@ import org.apache.commons.io.input.ClassLoaderObjectInputStream;
|
|||||||
import PamModel.PamModel;
|
import PamModel.PamModel;
|
||||||
import PamModel.parametermanager.ManagedParameters;
|
import PamModel.parametermanager.ManagedParameters;
|
||||||
import PamModel.parametermanager.PamParameterSet;
|
import PamModel.parametermanager.PamParameterSet;
|
||||||
|
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||||
import PamView.dialog.warn.WarnOnce;
|
import PamView.dialog.warn.WarnOnce;
|
||||||
|
|
||||||
|
|
||||||
@ -398,8 +399,13 @@ public class PamControlledUnitSettings implements Serializable, ManagedParameter
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PamParameterSet getParameterSet() {
|
public PamParameterSet getParameterSet() {
|
||||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||||
return ps;
|
return ps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return String.format("Type %s; Name %s, Data ", getUnitType(), getUnitName()) + getSettings();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -37,6 +37,7 @@ import javax.swing.ToolTipManager;
|
|||||||
import com.jcraft.jsch.ConfigRepository.Config;
|
import com.jcraft.jsch.ConfigRepository.Config;
|
||||||
import com.sun.xml.bind.v2.TODO;
|
import com.sun.xml.bind.v2.TODO;
|
||||||
|
|
||||||
|
import Acquisition.AcquisitionControl;
|
||||||
import Acquisition.AcquisitionProcess;
|
import Acquisition.AcquisitionProcess;
|
||||||
|
|
||||||
//import com.sun.org.apache.xerces.internal.dom.DocumentImpl;
|
//import com.sun.org.apache.xerces.internal.dom.DocumentImpl;
|
||||||
@ -57,6 +58,7 @@ import fftManager.FFTDataUnit;
|
|||||||
import generalDatabase.DBControlUnit;
|
import generalDatabase.DBControlUnit;
|
||||||
import javafx.application.Platform;
|
import javafx.application.Platform;
|
||||||
import javafx.stage.Stage;
|
import javafx.stage.Stage;
|
||||||
|
import metadata.MetaDataContol;
|
||||||
import Array.ArrayManager;
|
import Array.ArrayManager;
|
||||||
import PamController.command.MulticastController;
|
import PamController.command.MulticastController;
|
||||||
import PamController.command.NetworkController;
|
import PamController.command.NetworkController;
|
||||||
@ -64,6 +66,7 @@ import PamController.command.TerminalController;
|
|||||||
import PamController.command.WatchdogComms;
|
import PamController.command.WatchdogComms;
|
||||||
import PamController.fileprocessing.ReprocessManager;
|
import PamController.fileprocessing.ReprocessManager;
|
||||||
import PamController.masterReference.MasterReferencePoint;
|
import PamController.masterReference.MasterReferencePoint;
|
||||||
|
import PamController.settings.BatchViewSettingsImport;
|
||||||
import PamController.settings.output.xml.PamguardXMLWriter;
|
import PamController.settings.output.xml.PamguardXMLWriter;
|
||||||
import PamController.settings.output.xml.XMLWriterDialog;
|
import PamController.settings.output.xml.XMLWriterDialog;
|
||||||
import PamController.soundMedium.GlobalMediumManager;
|
import PamController.soundMedium.GlobalMediumManager;
|
||||||
@ -123,6 +126,12 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
public static final int PAM_INITIALISING = 4;
|
public static final int PAM_INITIALISING = 4;
|
||||||
public static final int PAM_STOPPING = 5;
|
public static final int PAM_STOPPING = 5;
|
||||||
public static final int PAM_COMPLETE = 6;
|
public static final int PAM_COMPLETE = 6;
|
||||||
|
public static final int PAM_MAPMAKING = 7;
|
||||||
|
public static final int PAM_OFFLINETASK = 8;
|
||||||
|
|
||||||
|
public static final int BUTTON_START = 1;
|
||||||
|
public static final int BUTTON_STOP = 2;
|
||||||
|
private volatile int lastStartStopButton = 0;
|
||||||
|
|
||||||
// status' for RunMode = RUN_PAMVIEW
|
// status' for RunMode = RUN_PAMVIEW
|
||||||
public static final int PAM_LOADINGDATA = 2;
|
public static final int PAM_LOADINGDATA = 2;
|
||||||
@ -156,7 +165,7 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
/**
|
/**
|
||||||
* The current PAM status
|
* The current PAM status
|
||||||
*/
|
*/
|
||||||
private transient int pamStatus = PAM_IDLE;
|
private volatile int pamStatus = PAM_IDLE;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PamGuard view params.
|
* PamGuard view params.
|
||||||
@ -186,6 +195,8 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
private static PamController uniqueController;
|
private static PamController uniqueController;
|
||||||
|
|
||||||
private Timer diagnosticTimer;
|
private Timer diagnosticTimer;
|
||||||
|
|
||||||
|
private boolean debugDumpBufferAtRestart = false;
|
||||||
|
|
||||||
private NetworkController networkController;
|
private NetworkController networkController;
|
||||||
private int nNetPrepared;
|
private int nNetPrepared;
|
||||||
@ -234,6 +245,10 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
*/
|
*/
|
||||||
private Thread statusCheckThread;
|
private Thread statusCheckThread;
|
||||||
private WaitDetectorThread detectorEndThread;
|
private WaitDetectorThread detectorEndThread;
|
||||||
|
private boolean firstDataLoadComplete;
|
||||||
|
// keep a track of the total number of times PAMGuard is started for debug purposes.
|
||||||
|
private int nStarts;
|
||||||
|
private RestartRunnable restartRunnable;
|
||||||
|
|
||||||
|
|
||||||
private PamController(int runMode, Object object) {
|
private PamController(int runMode, Object object) {
|
||||||
@ -436,7 +451,7 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
// addModule(mi, "Temporary Database");
|
// addModule(mi, "Temporary Database");
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// Add a note to the putput console for the user to ignore the SLF4J warning (see http://www.slf4j.org/codes.html#StaticLoggerBinder
|
// Add a note to the output console for the user to ignore the SLF4J warning (see http://www.slf4j.org/codes.html#StaticLoggerBinder
|
||||||
// for details). I spent a few hours trying to get rid of this warning, but without any luck. If you do a google search
|
// for details). I spent a few hours trying to get rid of this warning, but without any luck. If you do a google search
|
||||||
// there are a lot of forum suggestions on how to fix, but none seemed to work for me. Added both slf4j-nop and
|
// there are a lot of forum suggestions on how to fix, but none seemed to work for me. Added both slf4j-nop and
|
||||||
// slf4j-simple to dependency list, neither made a difference. Changed order of dependencies, ran purges and updates,
|
// slf4j-simple to dependency list, neither made a difference. Changed order of dependencies, ran purges and updates,
|
||||||
@ -452,6 +467,7 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
System.out.println("");
|
System.out.println("");
|
||||||
System.out.println("Note - ignore the following SLF4J warn/error messages, they are not applicable to this application");
|
System.out.println("Note - ignore the following SLF4J warn/error messages, they are not applicable to this application");
|
||||||
ArrayManager.getArrayManager(); // create the array manager so that it get's it's settings
|
ArrayManager.getArrayManager(); // create the array manager so that it get's it's settings
|
||||||
|
MetaDataContol.getMetaDataControl();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check for archived files and unpack automatically.
|
* Check for archived files and unpack automatically.
|
||||||
@ -490,17 +506,31 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
addView(guiFrameManager.initPrimaryView(this, pamModelInterface));
|
addView(guiFrameManager.initPrimaryView(this, pamModelInterface));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calling this will cause a callback to this.restoreSettings which
|
||||||
|
* includes a list of modules which will then get created, and in turn
|
||||||
|
* load all of their own settings from the settings manager.
|
||||||
|
*/
|
||||||
PamSettingManager.getInstance().registerSettings(this);
|
PamSettingManager.getInstance().registerSettings(this);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* For offline batch processing a few funnies happen here. We'll be open
|
||||||
|
* in viewer mode, but it's likely a psf will have been passed as an input argument.
|
||||||
|
* We will therefore have to extract all the modules from that psfx as well and either
|
||||||
|
* add them as new modules, or get their settings and use those to update existing settings
|
||||||
|
* That should probably be done here before the final calls to setup processes, etc.
|
||||||
|
*/
|
||||||
|
if (getRunMode() == RUN_PAMVIEW && PamSettingManager.remote_psf != null) {
|
||||||
|
loadOtherSettings(PamSettingManager.remote_psf);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Get any other required modules for this run mode.
|
||||||
|
*/
|
||||||
pamModelInterface.startModel();
|
pamModelInterface.startModel();
|
||||||
|
|
||||||
setupProcesses();
|
setupProcesses();
|
||||||
|
|
||||||
// if (getRunMode() == RUN_PAMVIEW) {
|
|
||||||
// createViewerStatusBar();
|
|
||||||
// pamControlledUnits.add(new OfflineProcessingControlledUnit("OfflineProcessing"));
|
|
||||||
// }
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We are running as a remote application, start process straight away!
|
* We are running as a remote application, start process straight away!
|
||||||
*/
|
*/
|
||||||
@ -571,6 +601,7 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
// });
|
// });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Clear all data selectors and symbol managers. Required since some of these will have loaded as various modules were created,
|
* Clear all data selectors and symbol managers. Required since some of these will have loaded as various modules were created,
|
||||||
* but may also require additional data selectors and symbol managers from super detections which were not availble.
|
* but may also require additional data selectors and symbol managers from super detections which were not availble.
|
||||||
@ -583,6 +614,11 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This gets called after other data initialisation tasks (such as data mapping).
|
||||||
|
* @author dg50
|
||||||
|
*
|
||||||
|
*/
|
||||||
class DataInitialised implements Runnable {
|
class DataInitialised implements Runnable {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
@ -1018,8 +1054,45 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
*/
|
*/
|
||||||
public void restartPamguard() {
|
public void restartPamguard() {
|
||||||
pamStop();
|
pamStop();
|
||||||
startLater();
|
|
||||||
|
/*
|
||||||
|
* launch a restart thread, that won't do ANYTHING until
|
||||||
|
* PAMGuard is really idle and buffers are cleared. Can only
|
||||||
|
* have one of these at a time !
|
||||||
|
*/
|
||||||
|
if (restartRunnable != null) {
|
||||||
|
System.out.println("Warning !!!! PAMGuard is already trying to restart!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
restartRunnable = new RestartRunnable();
|
||||||
|
Thread restartThread = new Thread(restartRunnable, "RestartPAMGuard Thread");
|
||||||
|
restartThread.run();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private class RestartRunnable implements Runnable {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
long t1 = System.currentTimeMillis();
|
||||||
|
while (getPamStatus() != PAM_IDLE) {
|
||||||
|
try {
|
||||||
|
Thread.sleep(200);
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
long t2 = System.currentTimeMillis();
|
||||||
|
restartRunnable = null;
|
||||||
|
System.out.printf("PAMGuard safe to restart after %d milliseconds\n", t2-t1);
|
||||||
|
startLater(false);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* calls pamStart using the SwingUtilities
|
* calls pamStart using the SwingUtilities
|
||||||
* invokeLater command to start PAMGAURD
|
* invokeLater command to start PAMGAURD
|
||||||
@ -1051,7 +1124,13 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
pamStart(saveSettings);
|
/*
|
||||||
|
* do a final check that the stop button hasn't been pressed - can arrive a bit
|
||||||
|
* late if the system was continually restarting.
|
||||||
|
*/
|
||||||
|
if (lastStartStopButton != BUTTON_STOP) {
|
||||||
|
pamStart(saveSettings);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1076,6 +1155,26 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called from the start button. A little book keeping
|
||||||
|
* to distinguish this from automatic starts / restarts
|
||||||
|
* @return true if started.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public boolean manualStart() {
|
||||||
|
lastStartStopButton = BUTTON_START;
|
||||||
|
return pamStart();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called from the stop button. A little book keeping
|
||||||
|
* to distinguish this from automatic starts / restarts
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void manualStop() {
|
||||||
|
lastStartStopButton = BUTTON_STOP;
|
||||||
|
pamStop();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Start PAMGUARD. This function also gets called from the
|
* Start PAMGUARD. This function also gets called from the
|
||||||
@ -1161,9 +1260,17 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (saveSettings) {
|
if (saveSettings) {
|
||||||
|
startTime = PamCalendar.getSessionStartTime();
|
||||||
|
// System.out.printf("Saving settings for start time %s\n", PamCalendar.formatDBDateTime(startTime));
|
||||||
saveSettings(PamCalendar.getSessionStartTime());
|
saveSettings(PamCalendar.getSessionStartTime());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (++nStarts > 1 && debugDumpBufferAtRestart) {
|
||||||
|
// do this here - all processses should have reset buffers to start again by now.
|
||||||
|
String msg = String.format("Starting PAMGuard go %d", nStarts);
|
||||||
|
dumpBufferStatus(msg, false);
|
||||||
|
}
|
||||||
|
|
||||||
StorageOptions.getInstance().setBlockOptions();
|
StorageOptions.getInstance().setBlockOptions();
|
||||||
|
|
||||||
t1 = System.currentTimeMillis();
|
t1 = System.currentTimeMillis();
|
||||||
@ -1225,6 +1332,7 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dumpBufferStatus("In stopping", false);
|
||||||
/*
|
/*
|
||||||
* now launch another thread to wait for everything to have stopped, but
|
* now launch another thread to wait for everything to have stopped, but
|
||||||
* leave this function so that AWT is released and graphics can update, the
|
* leave this function so that AWT is released and graphics can update, the
|
||||||
@ -1252,9 +1360,11 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
long t2 = System.currentTimeMillis();
|
long t2 = System.currentTimeMillis();
|
||||||
if (t2 - t1 > 5000) {
|
if (t2 - t1 > 5000) {
|
||||||
System.out.printf("Stopping, but stuck in loop for CheckRunStatus for %3.1fs\n", (double) (t2-t1)/1000.);
|
System.out.printf("Stopping, but stuck in loop for CheckRunStatus for %3.1fs\n", (double) (t2-t1)/1000.);
|
||||||
|
dumpBufferStatus("Stopping stuck in loop", false);
|
||||||
|
break; // crap out anyway.
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
Thread.sleep(10);
|
Thread.sleep(100);
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
@ -1265,19 +1375,43 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Look in every data block, particularly threaded ones, and dump
|
||||||
|
* the buffer status. This will have to go via PamProcess so that
|
||||||
|
* additional information can be added from any processes that
|
||||||
|
* hold additional data in other internal buffers.
|
||||||
|
* @param message Message to print prior to dumping buffers for debug.
|
||||||
|
* @param sayEmpties dump info even if a buffer is empty (otherwise, only ones that have stuff still)
|
||||||
|
*/
|
||||||
|
public void dumpBufferStatus(String message, boolean sayEmpties) {
|
||||||
|
if (debugDumpBufferAtRestart == false) return;
|
||||||
|
|
||||||
|
System.out.println("**** Dumping process buffer status: " + message);
|
||||||
|
ArrayList<PamControlledUnit> pamControlledUnits = pamConfiguration.getPamControlledUnits();
|
||||||
|
for (PamControlledUnit aUnit : pamControlledUnits) {
|
||||||
|
int numProcesses = aUnit.getNumPamProcesses();
|
||||||
|
for (int i=0; i<numProcesses; i++) {
|
||||||
|
PamProcess aProcess = aUnit.getPamProcess(i);
|
||||||
|
aProcess.dumpBufferStatus(message, sayEmpties);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
System.out.println("**** End of process buffer dump: " + message);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called once the detectors have actually stopped and puts a few finalising
|
* Called once the detectors have actually stopped and puts a few finalising
|
||||||
* functions into the AWT thread.
|
* functions into the AWT thread.
|
||||||
*/
|
*/
|
||||||
private void finishStopping() {
|
private void finishStopping() {
|
||||||
detectorEndThread = null;
|
detectorEndThread = null;
|
||||||
SwingUtilities.invokeLater(new Runnable() {
|
// this was never getting invoked for some reason.
|
||||||
|
// SwingUtilities.invokeLater(new Runnable() {
|
||||||
@Override
|
//
|
||||||
public void run() {
|
// @Override
|
||||||
|
// public void run() {
|
||||||
pamStopped();
|
pamStopped();
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1291,6 +1425,8 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
* it is necessary to make sure that all internal datablock
|
* it is necessary to make sure that all internal datablock
|
||||||
* buffers have had time to empty.
|
* buffers have had time to empty.
|
||||||
*/
|
*/
|
||||||
|
System.out.println("Arrived in PamStopped() in thread " + Thread.currentThread().toString());
|
||||||
|
|
||||||
ArrayList<PamControlledUnit> pamControlledUnits = pamConfiguration.getPamControlledUnits();
|
ArrayList<PamControlledUnit> pamControlledUnits = pamConfiguration.getPamControlledUnits();
|
||||||
|
|
||||||
if (PamModel.getPamModel().isMultiThread()) {
|
if (PamModel.getPamModel().isMultiThread()) {
|
||||||
@ -1298,7 +1434,7 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
pamControlledUnits.get(iU).flushDataBlockBuffers(2000);
|
pamControlledUnits.get(iU).flushDataBlockBuffers(2000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
setPamStatus(PAM_IDLE);
|
dumpBufferStatus("In pamStopped, now idle", true);
|
||||||
|
|
||||||
// wait here until the status has changed to Pam_Idle, so that we know
|
// wait here until the status has changed to Pam_Idle, so that we know
|
||||||
// that we've really finished processing all data
|
// that we've really finished processing all data
|
||||||
@ -1319,6 +1455,11 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
}
|
}
|
||||||
guiFrameManager.pamEnded();
|
guiFrameManager.pamEnded();
|
||||||
|
|
||||||
|
long stopTime = PamCalendar.getTimeInMillis();
|
||||||
|
saveEndSettings(stopTime);
|
||||||
|
|
||||||
|
setPamStatus(PAM_IDLE);
|
||||||
|
|
||||||
// no good having this here since it get's called at the end of every file.
|
// no good having this here since it get's called at the end of every file.
|
||||||
// if (GlobalArguments.getParam(PamController.AUTOEXIT) != null) {
|
// if (GlobalArguments.getParam(PamController.AUTOEXIT) != null) {
|
||||||
//// can exit here, since we've auto started, can auto exit.
|
//// can exit here, since we've auto started, can auto exit.
|
||||||
@ -1437,6 +1578,26 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
pamConfiguration.saveSettings(timeNow);
|
pamConfiguration.saveSettings(timeNow);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets called in pamStart and may / will attempt to store all
|
||||||
|
* PAMGUARD settings via the database and binary storage modules.
|
||||||
|
*/
|
||||||
|
private void saveEndSettings(long timeNow) {
|
||||||
|
// System.out.printf("Updating settings with end time %s\n", PamCalendar.formatDBDateTime(timeNow));
|
||||||
|
ArrayList<PamControlledUnit> pamControlledUnits = pamConfiguration.getPamControlledUnits();
|
||||||
|
PamControlledUnit pcu;
|
||||||
|
PamSettingsSource settingsSource;
|
||||||
|
for (int iU = 0; iU < pamControlledUnits.size(); iU++) {
|
||||||
|
pcu = pamControlledUnits.get(iU);
|
||||||
|
if (PamSettingsSource.class.isAssignableFrom(pcu.getClass())) {
|
||||||
|
settingsSource = (PamSettingsSource) pcu;
|
||||||
|
settingsSource.saveEndSettings(timeNow);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Export configuration into an XML file
|
* Export configuration into an XML file
|
||||||
* @param parentFrame
|
* @param parentFrame
|
||||||
@ -1676,16 +1837,23 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
* Updates the entire datamap.
|
* Updates the entire datamap.
|
||||||
*/
|
*/
|
||||||
public void updateDataMap(){
|
public void updateDataMap(){
|
||||||
|
System.out.println("updateDataMap:");
|
||||||
|
|
||||||
if (DBControlUnit.findDatabaseControl()==null) return;
|
if (DBControlUnit.findDatabaseControl()==null) return;
|
||||||
|
|
||||||
|
System.out.println("updateDataMap: 1");
|
||||||
|
|
||||||
ArrayList<PamDataBlock> datablocks=getDataBlocks() ;
|
ArrayList<PamDataBlock> datablocks=getDataBlocks() ;
|
||||||
|
|
||||||
|
System.out.println("updateDataMap: 2");
|
||||||
|
|
||||||
DBControlUnit.findDatabaseControl().updateDataMap(datablocks);
|
DBControlUnit.findDatabaseControl().updateDataMap(datablocks);
|
||||||
|
|
||||||
if (BinaryStore.findBinaryStoreControl()!=null) {
|
System.out.println("updateDataMap: 3");
|
||||||
BinaryStore.findBinaryStoreControl().getDatagramManager().updateDatagrams();
|
|
||||||
}
|
BinaryStore.findBinaryStoreControl().getDatagramManager().updateDatagrams();
|
||||||
|
|
||||||
|
System.out.println("updateDataMap: 4");
|
||||||
|
|
||||||
notifyModelChanged(PamControllerInterface.EXTERNAL_DATA_IMPORTED);
|
notifyModelChanged(PamControllerInterface.EXTERNAL_DATA_IMPORTED);
|
||||||
}
|
}
|
||||||
@ -1758,6 +1926,10 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
if (moduleChange(changeType)) {
|
if (moduleChange(changeType)) {
|
||||||
clearSelectorsAndSymbols();
|
clearSelectorsAndSymbols();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (changeType == DATA_LOAD_COMPLETE) {
|
||||||
|
firstDataLoadComplete = true;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1894,12 +2066,78 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
|
|
||||||
public void setPamStatus(int pamStatus) {
|
public void setPamStatus(int pamStatus) {
|
||||||
this.pamStatus = pamStatus;
|
this.pamStatus = pamStatus;
|
||||||
|
/*
|
||||||
|
* This only get's called once when set idle at viewer mode startup.
|
||||||
|
*/
|
||||||
|
if (debugDumpBufferAtRestart) {
|
||||||
|
System.out.printf("******* PamController.setPamStatus to %d, real status is %d set in thread %s\n",
|
||||||
|
pamStatus, getRealStatus(), Thread.currentThread().toString());
|
||||||
|
}
|
||||||
if (getRunMode() != RUN_PAMVIEW) {
|
if (getRunMode() != RUN_PAMVIEW) {
|
||||||
TopToolBar.enableStartButton(pamStatus == PAM_IDLE);
|
TopToolBar.enableStartButton(pamStatus == PAM_IDLE);
|
||||||
TopToolBar.enableStopButton(pamStatus == PAM_RUNNING);
|
TopToolBar.enableStopButton(pamStatus == PAM_RUNNING);
|
||||||
}
|
}
|
||||||
showStatusWarning(pamStatus);
|
showStatusWarning(pamStatus);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This was within the StatusCommand class, but useful to have it here since it's needed
|
||||||
|
* in more than one place. In viewer mode at startup there are a number of things going on
|
||||||
|
* in different threads, such as the creation of datamaps, and this can (hopefully) handle those bespoke
|
||||||
|
* goings on.
|
||||||
|
* @return program status for multithreaded statup tasks.
|
||||||
|
*/
|
||||||
|
public int getRealStatus() {
|
||||||
|
PamController pamController = PamController.getInstance();
|
||||||
|
if (pamController.isInitializationComplete() == false) {
|
||||||
|
return PamController.PAM_INITIALISING;
|
||||||
|
}
|
||||||
|
int runMode = PamController.getInstance().getRunMode();
|
||||||
|
if (runMode == PamController.RUN_NETWORKRECEIVER) {
|
||||||
|
return PamController.PAM_RUNNING;
|
||||||
|
}
|
||||||
|
int status = pamController.getPamStatus();
|
||||||
|
if (status == PamController.PAM_IDLE) {
|
||||||
|
status = PamController.PAM_IDLE;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
ArrayList<PamControlledUnit> daqs = PamController.getInstance().findControlledUnits(AcquisitionControl.unitType);
|
||||||
|
if (daqs != null) for (int i = 0; i < daqs.size(); i++) {
|
||||||
|
try {
|
||||||
|
AcquisitionControl daq = (AcquisitionControl) daqs.get(i);
|
||||||
|
if (daq.isStalled()) {
|
||||||
|
status = PamController.PAM_STALLED;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
WatchdogComms watchdogComms = PamController.getInstance().getWatchdogComms();
|
||||||
|
status = watchdogComms.getModifiedWatchdogState(status);
|
||||||
|
/*
|
||||||
|
* This function is now being used in batch processing of offline data, where it may be necessary
|
||||||
|
* to get status information from many different modules, for example when executing offline tasks
|
||||||
|
* or just at startup while generating datamaps and datagrams.
|
||||||
|
* So go through all modules and get the highest state of any of them.
|
||||||
|
*/
|
||||||
|
if (getRunMode() == RUN_PAMVIEW) {
|
||||||
|
if (firstDataLoadComplete == false) {
|
||||||
|
status = PAM_INITIALISING;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
for (PamControlledUnit aUnit : pamConfiguration.getPamControlledUnits()) {
|
||||||
|
status = Math.max(status, aUnit.getOfflineState());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e) {
|
||||||
|
//just incase there is a concurrent modification at startup.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* show a warning when we're waiting for detectors to stop
|
* show a warning when we're waiting for detectors to stop
|
||||||
@ -1928,6 +2166,7 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
statusWarning.setWarningMessage(warningMessage);
|
statusWarning.setWarningMessage(warningMessage);
|
||||||
statusWarning.setWarnignLevel(1);
|
statusWarning.setWarnignLevel(1);
|
||||||
warningSystem.addWarning(statusWarning);
|
warningSystem.addWarning(statusWarning);
|
||||||
|
// System.out.println(warningMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2184,6 +2423,31 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
private boolean manualStop;
|
private boolean manualStop;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Used when in viewer mode and planning batch processing with a modified
|
||||||
|
* configuration, i.e. the command line has been supplied a normal viewer mode
|
||||||
|
* database and also a psfx file. The settings from the database will already have
|
||||||
|
* been loaded, this will load any modules that weren't there and will override all the
|
||||||
|
* settings in other modules with these ones (except some specials such as data storage locations)
|
||||||
|
* @param psfxFile Name of additional psfx file.
|
||||||
|
*/
|
||||||
|
private boolean loadOtherSettings(String psfxName) {
|
||||||
|
|
||||||
|
File psfxFile = new File(psfxName);
|
||||||
|
if (psfxFile.exists() == false) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
PamSettingsGroup settingsGroup = PSFXReadWriter.getInstance().loadFileSettings(psfxFile);
|
||||||
|
if (settingsGroup == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
BatchViewSettingsImport importer = new BatchViewSettingsImport(this, settingsGroup);
|
||||||
|
importer.importSettings();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called to load a specific set of PAMGUARD settings in
|
* Called to load a specific set of PAMGUARD settings in
|
||||||
* viewer mode, which were previously loaded in from a
|
* viewer mode, which were previously loaded in from a
|
||||||
@ -2400,7 +2664,7 @@ public class PamController implements PamControllerInterface, PamSettings {
|
|||||||
if (dbc == null) {
|
if (dbc == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return dbc.getDatabaseName();
|
return dbc.getLongDatabaseName();
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -458,6 +458,17 @@ public interface PamControllerInterface {
|
|||||||
* Close all modules and free up resources.
|
* Close all modules and free up resources.
|
||||||
*/
|
*/
|
||||||
public void pamClose();
|
public void pamClose();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Start function called from button to do a bit of extra book keeping
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public boolean manualStart();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Stop function called from button to do a bit of extra book keeping
|
||||||
|
*/
|
||||||
|
public void manualStop();
|
||||||
|
|
||||||
//public void controllerAddFileMenuItem();
|
//public void controllerAddFileMenuItem();
|
||||||
|
|
||||||
|
20
src/PamController/PamSensor.java
Normal file
20
src/PamController/PamSensor.java
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
package PamController;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Interface to define modules which can be considered as sensors of some sort.
|
||||||
|
* e.g. depth and orientation modules and the SoundTrap clickdetecotr
|
||||||
|
* @author dg50
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public interface PamSensor {
|
||||||
|
|
||||||
|
public String getUnitName();
|
||||||
|
|
||||||
|
public String getUnitType();
|
||||||
|
|
||||||
|
public String getSensorDescription();
|
||||||
|
|
||||||
|
public String getSensorId();
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -44,6 +44,7 @@ import javax.swing.plaf.FontUIResource;
|
|||||||
|
|
||||||
import pamViewFX.fxNodes.utilsFX.PamUtilsFX;
|
import pamViewFX.fxNodes.utilsFX.PamUtilsFX;
|
||||||
import pamViewFX.fxSettingsPanes.SettingsFileDialogFX;
|
import pamViewFX.fxSettingsPanes.SettingsFileDialogFX;
|
||||||
|
import pamguard.GlobalArguments;
|
||||||
|
|
||||||
//XMLSettings
|
//XMLSettings
|
||||||
//import org.jdom.Document;
|
//import org.jdom.Document;
|
||||||
@ -383,6 +384,8 @@ public class PamSettingManager {
|
|||||||
boolean[] usedSettings, PamSettings user) {
|
boolean[] usedSettings, PamSettings user) {
|
||||||
if (settingsList == null) return null;
|
if (settingsList == null) return null;
|
||||||
// go through the list and see if any match this module. Avoid repeats.
|
// go through the list and see if any match this module. Avoid repeats.
|
||||||
|
// String unitName = user.getUnitName();
|
||||||
|
// String unitType = user.getUnitType();
|
||||||
for (int i = 0; i < settingsList.size(); i++) {
|
for (int i = 0; i < settingsList.size(); i++) {
|
||||||
if (usedSettings != null && usedSettings[i]) continue;
|
if (usedSettings != null && usedSettings[i]) continue;
|
||||||
if (isSettingsUnit(user, settingsList.get(i))) {
|
if (isSettingsUnit(user, settingsList.get(i))) {
|
||||||
@ -392,6 +395,7 @@ public class PamSettingManager {
|
|||||||
return settingsList.get(i);
|
return settingsList.get(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* To improve complex module loading where settings may be saved by multiple sub-modules, in
|
* To improve complex module loading where settings may be saved by multiple sub-modules, in
|
||||||
* July 2015 many modules which had fixed settings had their settings names and types changed !
|
* July 2015 many modules which had fixed settings had their settings names and types changed !
|
||||||
@ -476,7 +480,7 @@ public class PamSettingManager {
|
|||||||
*/
|
*/
|
||||||
public PamSettings findSettingsOwner(String unitType, String unitName, String unitClassName) {
|
public PamSettings findSettingsOwner(String unitType, String unitName, String unitClassName) {
|
||||||
for (PamSettings owner:owners) {
|
for (PamSettings owner:owners) {
|
||||||
if (owner.getClass() != null) {
|
if (owner.getClass() != null && unitClassName != null) {
|
||||||
if (owner.getClass().getName().equals(unitClassName) == false) {
|
if (owner.getClass().getName().equals(unitClassName) == false) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -492,7 +496,7 @@ public class PamSettingManager {
|
|||||||
/**
|
/**
|
||||||
* Call just before PAMGUARD exits to save the settings
|
* Call just before PAMGUARD exits to save the settings
|
||||||
* either to psf and / or database tables.
|
* either to psf and / or database tables.
|
||||||
* @return true if settings saved sucessfully.
|
* @return true if settings saved successfully.
|
||||||
*/
|
*/
|
||||||
public boolean saveFinalSettings() {
|
public boolean saveFinalSettings() {
|
||||||
int runMode = PamController.getInstance().getRunMode();
|
int runMode = PamController.getInstance().getRunMode();
|
||||||
@ -1029,8 +1033,9 @@ public class PamSettingManager {
|
|||||||
loadingLocalSettings = true;
|
loadingLocalSettings = true;
|
||||||
|
|
||||||
loadSettingsFileData();
|
loadSettingsFileData();
|
||||||
|
|
||||||
|
|
||||||
if (PamSettingManager.RUN_REMOTE == false) {
|
if (PamSettingManager.RUN_REMOTE == false && GlobalArguments.isBatch() == false) {
|
||||||
if (settingsFileData != null) {
|
if (settingsFileData != null) {
|
||||||
TipOfTheDayManager.getInstance().setShowAtStart(settingsFileData.showTipAtStartup);
|
TipOfTheDayManager.getInstance().setShowAtStart(settingsFileData.showTipAtStartup);
|
||||||
if (settingsFileData.showTipAtStartup) {
|
if (settingsFileData.showTipAtStartup) {
|
||||||
@ -1480,11 +1485,20 @@ public class PamSettingManager {
|
|||||||
if (settings.getUnitName() == null || settingsUser.getUnitName() == null) return false;
|
if (settings.getUnitName() == null || settingsUser.getUnitName() == null) return false;
|
||||||
if (settings.getUnitType() == null || settingsUser.getUnitType() == null) return false;
|
if (settings.getUnitType() == null || settingsUser.getUnitType() == null) return false;
|
||||||
|
|
||||||
|
/*
|
||||||
if (settings.getUnitName().equals(settingsUser.getUnitName())
|
* some of the settings names used in Viewer mode have become too long, notably
|
||||||
&& settings.getUnitType().equals(settingsUser.getUnitType())
|
* in some data selectors which are using a datablocks long data name. This
|
||||||
&& settings.versionNo == settingsUser.getSettingsVersion()){
|
* screws things up, so moving to a begins with rather than equals for the name.
|
||||||
return true;
|
*/
|
||||||
|
String name = settingsUser.getUnitName();
|
||||||
|
String type = settingsUser.getUnitType();
|
||||||
|
long version = settingsUser.getSettingsVersion();
|
||||||
|
|
||||||
|
if (settings.getUnitType().equals(type)
|
||||||
|
&& settings.versionNo == version){
|
||||||
|
if (name.startsWith(settings.getUnitName())) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
@ -20,6 +20,14 @@ public interface PamSettingsSource {
|
|||||||
*/
|
*/
|
||||||
public boolean saveStartSettings(long timeNow);
|
public boolean saveStartSettings(long timeNow);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Save settings when processing ends.
|
||||||
|
* This may just be an update of the settings saves with saveStartSettings, e.g. an end time.
|
||||||
|
* @param timeNow
|
||||||
|
* @return true if saved correctly.
|
||||||
|
*/
|
||||||
|
public boolean saveEndSettings(long timeNow);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the number of different settings
|
* Get the number of different settings
|
||||||
* within the settings source.
|
* within the settings source.
|
||||||
|
@ -16,7 +16,7 @@ public class PamguardVersionInfo {
|
|||||||
* @return release type
|
* @return release type
|
||||||
*/
|
*/
|
||||||
static public ReleaseType getReleaseType() {
|
static public ReleaseType getReleaseType() {
|
||||||
return ReleaseType.CORE;
|
return ReleaseType.OTHER;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -31,12 +31,12 @@ public class PamguardVersionInfo {
|
|||||||
* Version number, major version.minorversion.sub-release.
|
* Version number, major version.minorversion.sub-release.
|
||||||
* Note: can't go higher than sub-release 'f'
|
* Note: can't go higher than sub-release 'f'
|
||||||
*/
|
*/
|
||||||
static public final String version = "2.02.11b";
|
static public final String version = "2.02.10b";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Release date
|
* Release date
|
||||||
*/
|
*/
|
||||||
static public final String date = "10 November 2023";
|
static public final String date = "2 March 2024";
|
||||||
|
|
||||||
// /**
|
// /**
|
||||||
// * Release type - Beta or Core
|
// * Release type - Beta or Core
|
||||||
|
@ -4,6 +4,7 @@ import java.io.Serializable;
|
|||||||
|
|
||||||
import PamModel.parametermanager.ManagedParameters;
|
import PamModel.parametermanager.ManagedParameters;
|
||||||
import PamModel.parametermanager.PamParameterSet;
|
import PamModel.parametermanager.PamParameterSet;
|
||||||
|
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Very simple class used in an ArrayList of used modules that
|
* Very simple class used in an ArrayList of used modules that
|
||||||
@ -54,8 +55,16 @@ public class UsedModuleInfo implements Serializable, ManagedParameters {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PamParameterSet getParameterSet() {
|
public PamParameterSet getParameterSet() {
|
||||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||||
return ps;
|
return ps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the unit name of the module being imported.
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public String getUnitName() {
|
||||||
|
return unitName;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ package PamController.command;
|
|||||||
|
|
||||||
import Acquisition.AcquisitionControl;
|
import Acquisition.AcquisitionControl;
|
||||||
import PamController.PamController;
|
import PamController.PamController;
|
||||||
|
import offlineProcessing.OfflineTaskManager;
|
||||||
import pamViewFX.PamControlledGUIFX;
|
import pamViewFX.PamControlledGUIFX;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -21,6 +22,19 @@ public class BatchStatusCommand extends ExtCommand {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String execute(String command) {
|
public String execute(String command) {
|
||||||
|
if (PamController.getInstance().getRunMode() == PamController.RUN_NORMAL) {
|
||||||
|
return getNormalModeStatus(command);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return getViewerModeStatus(command);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getViewerModeStatus(String command) {
|
||||||
|
return OfflineTaskManager.getManager().getBatchStatus();
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getNormalModeStatus(String command) {
|
||||||
AcquisitionControl daqControl = (AcquisitionControl) PamController.getInstance().findControlledUnit(AcquisitionControl.class, null);
|
AcquisitionControl daqControl = (AcquisitionControl) PamController.getInstance().findControlledUnit(AcquisitionControl.class, null);
|
||||||
if (daqControl == null) {
|
if (daqControl == null) {
|
||||||
return null;
|
return null;
|
||||||
|
@ -31,33 +31,7 @@ public class StatusCommand extends ExtCommand {
|
|||||||
|
|
||||||
private int getRealStatus() {
|
private int getRealStatus() {
|
||||||
PamController pamController = PamController.getInstance();
|
PamController pamController = PamController.getInstance();
|
||||||
if (pamController.isInitializationComplete() == false) {
|
return pamController.getRealStatus();
|
||||||
return PamController.PAM_INITIALISING;
|
|
||||||
}
|
|
||||||
int runMode = PamController.getInstance().getRunMode();
|
|
||||||
if (runMode == PamController.RUN_NETWORKRECEIVER) {
|
|
||||||
return PamController.PAM_RUNNING;
|
|
||||||
}
|
|
||||||
int status = pamController.getPamStatus();
|
|
||||||
if (status == PamController.PAM_IDLE) {
|
|
||||||
status = PamController.PAM_IDLE;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
ArrayList<PamControlledUnit> daqs = PamController.getInstance().findControlledUnits(AcquisitionControl.unitType);
|
|
||||||
if (daqs != null) for (int i = 0; i < daqs.size(); i++) {
|
|
||||||
try {
|
|
||||||
AcquisitionControl daq = (AcquisitionControl) daqs.get(i);
|
|
||||||
if (daq.isStalled()) {
|
|
||||||
status = PamController.PAM_STALLED;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
WatchdogComms watchdogComms = PamController.getInstance().getWatchdogComms();
|
|
||||||
return watchdogComms.getModifiedWatchdogState(status);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
155
src/PamController/settings/BatchViewSettingsImport.java
Normal file
155
src/PamController/settings/BatchViewSettingsImport.java
Normal file
@ -0,0 +1,155 @@
|
|||||||
|
package PamController.settings;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import PamController.DataInputStore;
|
||||||
|
import PamController.OfflineDataStore;
|
||||||
|
import PamController.OfflineFileDataStore;
|
||||||
|
import PamController.PamControlledUnit;
|
||||||
|
import PamController.PamControlledUnitSettings;
|
||||||
|
import PamController.PamController;
|
||||||
|
import PamController.PamSettingManager;
|
||||||
|
import PamController.PamSettings;
|
||||||
|
import PamController.PamSettingsGroup;
|
||||||
|
import PamController.UsedModuleInfo;
|
||||||
|
import PamModel.PamModuleInfo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A set of functions to handle importing and overriding settings imported from a psfx during
|
||||||
|
* batch mode processing in viewer mode. Some of this is quite similar to code in SettingsImport
|
||||||
|
* but different enough that it's easier to have in a separate set of functions.
|
||||||
|
* @author dg50
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class BatchViewSettingsImport {
|
||||||
|
|
||||||
|
private PamController pamController;
|
||||||
|
private PamSettingsGroup settingsGroup;
|
||||||
|
private SettingsImport settingsImport;
|
||||||
|
|
||||||
|
public BatchViewSettingsImport(PamController pamController, PamSettingsGroup settingsGroup) {
|
||||||
|
this.pamController = pamController;
|
||||||
|
this.settingsGroup = settingsGroup;
|
||||||
|
settingsImport = new SettingsImport(pamController);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean importSettings() {
|
||||||
|
|
||||||
|
// first organise by controlled unit
|
||||||
|
ArrayList<SettingsImportGroup> moduleGroups = settingsImport.organiseSettingsGroups(settingsGroup.getUnitSettings());
|
||||||
|
// can now go through those modules and see which exist and which need to be added. Not asking questions, just doing it!
|
||||||
|
for (SettingsImportGroup moduleGroup : moduleGroups) {
|
||||||
|
UsedModuleInfo moduleInfo = moduleGroup.getUsedModuleInfo();
|
||||||
|
PamControlledUnit exModule = pamController.findControlledUnit(moduleInfo.getUnitType(), moduleInfo.getUnitName());
|
||||||
|
boolean existingStore = false;
|
||||||
|
if (exModule != null) {
|
||||||
|
existingStore = isDataStore(exModule);
|
||||||
|
System.out.printf("Module %s:%s already exists in model (data store: %s)\n", moduleInfo.getUnitType(), moduleInfo.getUnitName(), Boolean.valueOf(existingStore));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
System.out.printf("Module %s:%s will be added to model\n", moduleInfo.getUnitType(), moduleInfo.getUnitName());
|
||||||
|
// add the module. No questions asked.
|
||||||
|
PamModuleInfo pamModuleInfo = moduleGroup.getPamModuleInfo();
|
||||||
|
if (pamModuleInfo == null) {
|
||||||
|
System.out.printf("Module %s:%s is not available to this PAMGuard installation\n", moduleInfo.getUnitType(), moduleInfo.getUnitName());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
exModule = pamController.addModule(pamModuleInfo, moduleInfo.getUnitName());
|
||||||
|
}
|
||||||
|
// set the settings for that module, but only if it's NOT a data storage module.
|
||||||
|
if (exModule == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// if (exModule.getUnitName().contains("Noise")) {
|
||||||
|
// System.out.printf("restoring settings for %s, %s\n", exModule.getUnitType(), exModule.getUnitName());
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
if (isDataStore(exModule)) {
|
||||||
|
System.out.printf("Skip restoring settings for %s, %s\n", exModule.getUnitType(), exModule.getUnitName());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
restoreSettings(moduleGroup.getMainSettings());
|
||||||
|
ArrayList<PamControlledUnitSettings> subSets = moduleGroup.getSubSettings();
|
||||||
|
if (subSets != null) {
|
||||||
|
for (PamControlledUnitSettings aSet : subSets) {
|
||||||
|
restoreSettings(aSet);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// exModule.notifyModelChanged(PamController.INITIALIZATION_COMPLETE);
|
||||||
|
// if (exModule.getTabPanel() != null) {
|
||||||
|
//// exModule.getTabPanel()
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
* Don't need to call this here since it get's called shortly
|
||||||
|
* from PAMController once all modules are in place.
|
||||||
|
*/
|
||||||
|
// pamController.notifyModelChanged(PamController.INITIALIZATION_COMPLETE);
|
||||||
|
|
||||||
|
// send out an initialisation complete to help restore settings
|
||||||
|
// ArrayList<PamControlledUnitSettings> allSettings = settingsGroup.getUnitSettings();
|
||||||
|
// for (PamControlledUnitSettings aSet : allSettings) {
|
||||||
|
// PamSettings owner = PamSettingManager.getInstance().findSettingsOwner(aSet.getUnitType(), aSet.getUnitName(), null);
|
||||||
|
// if (owner == null) {
|
||||||
|
// System.out.printf("Cannot find owner for %s, %s, %s\n", aSet.getUnitType(), aSet.getUnitName(), aSet.getOwnerClassName());
|
||||||
|
// }
|
||||||
|
// else {
|
||||||
|
// owner.restoreSettings(aSet);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find the owner of these settings and send it it's new settings.
|
||||||
|
* @param aSet
|
||||||
|
* @return true if found and set sucessfully.
|
||||||
|
*/
|
||||||
|
private boolean restoreSettings(PamControlledUnitSettings aSet) {
|
||||||
|
PamSettings owner = PamSettingManager.getInstance().findSettingsOwner(aSet.getUnitType(), aSet.getUnitName(), null);
|
||||||
|
if (owner == null) {
|
||||||
|
System.out.printf("Cannot find owner for %s, %s, %s\n", aSet.getUnitType(), aSet.getUnitName(), aSet.getOwnerClassName());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
try {
|
||||||
|
owner.restoreSettings(aSet);
|
||||||
|
}
|
||||||
|
catch (Exception e) {
|
||||||
|
System.out.printf("Exception restoring settings %s, %s, %s\n", aSet.getUnitType(), aSet.getUnitName(), aSet.getOwnerClassName());
|
||||||
|
e.printStackTrace();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Is the module a data store. If it is, we probably won't want to copy over it's settings.
|
||||||
|
* @param controlledUnit PAMGuard module
|
||||||
|
* @return true if it's data output or input.
|
||||||
|
*/
|
||||||
|
private boolean isDataStore(PamControlledUnit controlledUnit) {
|
||||||
|
return isDataStore(controlledUnit.getClass());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Is the class a data store. If it is, we probably won't want to copy over it's settings.
|
||||||
|
* @param moduleClass module class
|
||||||
|
* @return true if it's data output or input.
|
||||||
|
*/
|
||||||
|
private boolean isDataStore(Class<? extends PamControlledUnit> moduleClass) {
|
||||||
|
//OfflineFileDataStore, DataInputStore
|
||||||
|
if (OfflineDataStore.class.isAssignableFrom(moduleClass)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (DataInputStore.class.isAssignableFrom(moduleClass)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -29,7 +29,10 @@ import PamView.dialog.warn.WarnOnce;
|
|||||||
*/
|
*/
|
||||||
public class SettingsImport {
|
public class SettingsImport {
|
||||||
|
|
||||||
|
private PamController pamController;
|
||||||
|
|
||||||
public SettingsImport(PamController pamController) {
|
public SettingsImport(PamController pamController) {
|
||||||
|
this.pamController = pamController;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -116,14 +119,16 @@ public class SettingsImport {
|
|||||||
*/
|
*/
|
||||||
private PamControlledUnit importReplace(SettingsImportGroup importGroup, String replaceModule) {
|
private PamControlledUnit importReplace(SettingsImportGroup importGroup, String replaceModule) {
|
||||||
PamControlledUnitSettings mainSet = importGroup.getMainSettings();
|
PamControlledUnitSettings mainSet = importGroup.getMainSettings();
|
||||||
PamControlledUnit unit = PamController.getInstance().findControlledUnit(mainSet.getUnitType(), replaceModule);
|
UsedModuleInfo importInfo = importGroup.getUsedModuleInfo();
|
||||||
|
PamControlledUnit unit = PamController.getInstance().findControlledUnit(importInfo.getUnitType(), replaceModule);
|
||||||
if (unit == null) {
|
if (unit == null) {
|
||||||
System.out.println("Unable to find " + mainSet.getUnitType() + " " + mainSet.getUnitName() + " for settings replacement");
|
System.out.println("Unable to find " + importInfo.getUnitType() + " " + importInfo.getUnitName() + " for settings replacement");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
// check we can cast it to PamSettings
|
// check we can cast it to PamSettings
|
||||||
if (PamSettings.class.isAssignableFrom(unit.getClass())) {
|
if (PamSettings.class.isAssignableFrom(unit.getClass()) && mainSet != null) {
|
||||||
try {
|
try {
|
||||||
|
mainSet.setUnitName(replaceModule);
|
||||||
((PamSettings) unit).restoreSettings(mainSet);
|
((PamSettings) unit).restoreSettings(mainSet);
|
||||||
}
|
}
|
||||||
catch (Exception e) {
|
catch (Exception e) {
|
||||||
@ -132,7 +137,7 @@ public class SettingsImport {
|
|||||||
System.err.println(e.getMessage());
|
System.err.println(e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
loadSubUnitSettings(importGroup, mainSet.getUnitName());
|
loadSubUnitSettings(importGroup, replaceModule);
|
||||||
return unit;
|
return unit;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -149,7 +154,15 @@ public class SettingsImport {
|
|||||||
}
|
}
|
||||||
PamSettingManager setManager = PamSettingManager.getInstance();
|
PamSettingManager setManager = PamSettingManager.getInstance();
|
||||||
for (PamControlledUnitSettings pamSettings:subSets) {
|
for (PamControlledUnitSettings pamSettings:subSets) {
|
||||||
PamSettings owner = setManager.findSettingsOwner(pamSettings.getUnitType(), unitName, pamSettings.getOwnerClassName());
|
/*
|
||||||
|
* class name in pamSettings is no longer correct, so cannot use pamSettings.getOwnerClassName().
|
||||||
|
* but the classnames of all the sub modules are unknown (and will be different form the unit class name
|
||||||
|
* which can be got from importGroup.getPamModuleInfo().getClassName
|
||||||
|
* so will have to do this only on the unit type and name and hope for no conflicts (catch exception).
|
||||||
|
*/
|
||||||
|
// PamModuleInfo moduleInfo = importGroup.getPamModuleInfo();
|
||||||
|
// String className = moduleInfo.getClassName();
|
||||||
|
PamSettings owner = setManager.findSettingsOwner(pamSettings.getUnitType(), unitName, null);
|
||||||
if (owner == null) {
|
if (owner == null) {
|
||||||
System.out.println(String.format("Cannot find settings owner for %s %s in current model", pamSettings.getUnitType(), unitName));
|
System.out.println(String.format("Cannot find settings owner for %s %s in current model", pamSettings.getUnitType(), unitName));
|
||||||
continue;
|
continue;
|
||||||
@ -168,7 +181,8 @@ public class SettingsImport {
|
|||||||
|
|
||||||
private PamControlledUnit importNew(SettingsImportGroup importGroup) {
|
private PamControlledUnit importNew(SettingsImportGroup importGroup) {
|
||||||
PamControlledUnitSettings mainSet = importGroup.getMainSettings();
|
PamControlledUnitSettings mainSet = importGroup.getMainSettings();
|
||||||
String moduleName = mainSet.getUnitName();
|
UsedModuleInfo importInfo = importGroup.getUsedModuleInfo();
|
||||||
|
String moduleName = importInfo.unitName;
|
||||||
|
|
||||||
// check we've got a name that doesnt' exist and replace it if if does.
|
// check we've got a name that doesnt' exist and replace it if if does.
|
||||||
// int startChar = 0;
|
// int startChar = 0;
|
||||||
@ -199,11 +213,11 @@ public class SettingsImport {
|
|||||||
|
|
||||||
PamControlledUnit unit = PamController.getInstance().addModule(PamController.getMainFrame(), moduleInfo);
|
PamControlledUnit unit = PamController.getInstance().addModule(PamController.getMainFrame(), moduleInfo);
|
||||||
if (unit == null) {
|
if (unit == null) {
|
||||||
System.out.println("Unable to find " + mainSet.getUnitType() + " " + mainSet.getUnitName() + " for settings replacement");
|
System.out.println("Unable to find " + importInfo.getUnitType() + " " + importInfo.getUnitName() + " for settings replacement");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
// check we can cast it to PamSettings
|
// check we can cast it to PamSettings
|
||||||
if (PamSettings.class.isAssignableFrom(unit.getClass())) {
|
if (PamSettings.class.isAssignableFrom(unit.getClass()) && mainSet != null) {
|
||||||
try {
|
try {
|
||||||
mainSet.setUnitName(unit.getUnitName()); // need to force the unit name for some modules.
|
mainSet.setUnitName(unit.getUnitName()); // need to force the unit name for some modules.
|
||||||
((PamSettings) unit).restoreSettings(mainSet);
|
((PamSettings) unit).restoreSettings(mainSet);
|
||||||
@ -224,7 +238,7 @@ public class SettingsImport {
|
|||||||
* @param settings
|
* @param settings
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
ArrayList<SettingsImportGroup> organiseSettingsGroups(ArrayList<PamControlledUnitSettings> settings) {
|
public ArrayList<SettingsImportGroup> organiseSettingsGroups(ArrayList<PamControlledUnitSettings> settings) {
|
||||||
/**
|
/**
|
||||||
* this needs rewriting for psfx files which are organised differently. first we need to find
|
* this needs rewriting for psfx files which are organised differently. first we need to find
|
||||||
* a list of PAMGuard modules by finding the settings group of the PAMController.
|
* a list of PAMGuard modules by finding the settings group of the PAMController.
|
||||||
|
@ -195,12 +195,14 @@ public class SettingsImportDialog extends PamDialog {
|
|||||||
@Override
|
@Override
|
||||||
public Object getValueAt(int rowIndex, int columnIndex) {
|
public Object getValueAt(int rowIndex, int columnIndex) {
|
||||||
SettingsImportGroup set = groupedSettings.get(rowIndex);
|
SettingsImportGroup set = groupedSettings.get(rowIndex);
|
||||||
PamControlledUnitSettings mainSet = set.getMainSettings();
|
// PamControlledUnitSettings mainSet = set.getMainSettings();
|
||||||
switch (columnIndex) {
|
switch (columnIndex) {
|
||||||
case 0:
|
case 0:
|
||||||
return mainSet.getUnitType();
|
return set.getUsedModuleInfo().getUnitType();
|
||||||
|
// return mainSet.getUnitType();
|
||||||
case 1:
|
case 1:
|
||||||
return mainSet.getUnitName();
|
return set.getUsedModuleInfo().unitName;
|
||||||
|
// return mainSet.getUnitName();
|
||||||
case 2:
|
case 2:
|
||||||
// return choiceBoxes[rowIndex].getSelectedItem().toString();
|
// return choiceBoxes[rowIndex].getSelectedItem().toString();
|
||||||
return set.getImportChoice().toString();
|
return set.getImportChoice().toString();
|
||||||
|
@ -82,8 +82,10 @@ public class SettingsImportGroup {
|
|||||||
try {
|
try {
|
||||||
ownerClass = Class.forName(usedModuleInfo.className);
|
ownerClass = Class.forName(usedModuleInfo.className);
|
||||||
} catch (ClassNotFoundException e) {
|
} catch (ClassNotFoundException e) {
|
||||||
|
|
||||||
|
System.out.println("Unknown class in loaded settings: " + usedModuleInfo.className);
|
||||||
// TODO Auto-generated catch block
|
// TODO Auto-generated catch block
|
||||||
e.printStackTrace();
|
// e.printStackTrace();
|
||||||
}
|
}
|
||||||
ArrayList<PamControlledUnit> existingModules =
|
ArrayList<PamControlledUnit> existingModules =
|
||||||
PamController.getInstance().findControlledUnits(ownerClass);
|
PamController.getInstance().findControlledUnits(ownerClass);
|
||||||
|
@ -29,6 +29,7 @@ import javax.xml.transform.stream.StreamResult;
|
|||||||
|
|
||||||
import org.w3c.dom.Document;
|
import org.w3c.dom.Document;
|
||||||
import org.w3c.dom.Element;
|
import org.w3c.dom.Element;
|
||||||
|
import org.w3c.dom.NamedNodeMap;
|
||||||
|
|
||||||
import com.sun.javafx.runtime.VersionInfo;
|
import com.sun.javafx.runtime.VersionInfo;
|
||||||
|
|
||||||
@ -42,12 +43,14 @@ import PamController.PamguardVersionInfo;
|
|||||||
import PamModel.parametermanager.ManagedParameters;
|
import PamModel.parametermanager.ManagedParameters;
|
||||||
import PamModel.parametermanager.PamParameterData;
|
import PamModel.parametermanager.PamParameterData;
|
||||||
import PamModel.parametermanager.PamParameterSet;
|
import PamModel.parametermanager.PamParameterSet;
|
||||||
|
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||||
import PamUtils.PamCalendar;
|
import PamUtils.PamCalendar;
|
||||||
import PamUtils.XMLUtils;
|
import PamUtils.XMLUtils;
|
||||||
import PamguardMVC.PamDataBlock;
|
import PamguardMVC.PamDataBlock;
|
||||||
import PamguardMVC.PamDataUnit;
|
import PamguardMVC.PamDataUnit;
|
||||||
import PamguardMVC.PamProcess;
|
import PamguardMVC.PamProcess;
|
||||||
import binaryFileStorage.BinaryStore;
|
import binaryFileStorage.BinaryStore;
|
||||||
|
import tethys.TethysControl;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class for writing XML configuration output to a file.
|
* Class for writing XML configuration output to a file.
|
||||||
@ -62,6 +65,8 @@ public class PamguardXMLWriter implements PamSettings {
|
|||||||
private static final Set<Class<?>> WRAPPER_TYPES = getWrapperTypes();
|
private static final Set<Class<?>> WRAPPER_TYPES = getWrapperTypes();
|
||||||
|
|
||||||
private XMLWriterSettings writerSettings = new XMLWriterSettings();
|
private XMLWriterSettings writerSettings = new XMLWriterSettings();
|
||||||
|
private boolean excludeDisplaySettings;
|
||||||
|
// private String xmlNameSpace;
|
||||||
|
|
||||||
private static PamguardXMLWriter singleInstance;
|
private static PamguardXMLWriter singleInstance;
|
||||||
|
|
||||||
@ -83,6 +88,19 @@ public class PamguardXMLWriter implements PamSettings {
|
|||||||
}
|
}
|
||||||
return singleInstance;
|
return singleInstance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Recursively walk the tree and add a namespace to every
|
||||||
|
* single element.
|
||||||
|
* @param doc
|
||||||
|
* @param nameSpace
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public boolean addNameSpaceToElements(Document doc, Element el, String nameSpace) {
|
||||||
|
// el.setAttributeNS(nameSpace, nameSpace, nameSpace);
|
||||||
|
NamedNodeMap attributes = el.getAttributes();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Make a document with the options specified in writerSettings.
|
* Make a document with the options specified in writerSettings.
|
||||||
@ -371,6 +389,32 @@ public class PamguardXMLWriter implements PamSettings {
|
|||||||
* @return xml content as a a string.
|
* @return xml content as a a string.
|
||||||
*/
|
*/
|
||||||
public String getAsString(Document doc) {
|
public String getAsString(Document doc) {
|
||||||
|
return getAsString(doc, true);
|
||||||
|
// try {
|
||||||
|
// DOMSource domSource = new DOMSource(doc);
|
||||||
|
// StringWriter writer = new StringWriter();
|
||||||
|
// StreamResult result = new StreamResult(writer);
|
||||||
|
// TransformerFactory tf = TransformerFactory.newInstance();
|
||||||
|
// Transformer transformer = tf.newTransformer();
|
||||||
|
// transformer.setOutputProperty(OutputKeys.METHOD, "xml");
|
||||||
|
// transformer.setOutputProperty(OutputKeys.ENCODING, "ISO-8859-1");
|
||||||
|
//// transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
|
||||||
|
// transformer.setOutputProperty(OutputKeys.INDENT, "yes");
|
||||||
|
// transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
|
||||||
|
// transformer.transform(domSource, result);
|
||||||
|
// return writer.toString();
|
||||||
|
// } catch (TransformerException e) {
|
||||||
|
// e.printStackTrace();
|
||||||
|
// return null;
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Get the xml document as a String.
|
||||||
|
* @param doc xml document
|
||||||
|
* @param indent Indent / format the document.
|
||||||
|
* @return xml content as a a string.
|
||||||
|
*/
|
||||||
|
public String getAsString(Document doc, boolean indent) {
|
||||||
try {
|
try {
|
||||||
DOMSource domSource = new DOMSource(doc);
|
DOMSource domSource = new DOMSource(doc);
|
||||||
StringWriter writer = new StringWriter();
|
StringWriter writer = new StringWriter();
|
||||||
@ -380,7 +424,7 @@ public class PamguardXMLWriter implements PamSettings {
|
|||||||
transformer.setOutputProperty(OutputKeys.METHOD, "xml");
|
transformer.setOutputProperty(OutputKeys.METHOD, "xml");
|
||||||
transformer.setOutputProperty(OutputKeys.ENCODING, "ISO-8859-1");
|
transformer.setOutputProperty(OutputKeys.ENCODING, "ISO-8859-1");
|
||||||
// transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
|
// transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
|
||||||
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
|
transformer.setOutputProperty(OutputKeys.INDENT, indent ? "yes" : "no");
|
||||||
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
|
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
|
||||||
transformer.transform(domSource, result);
|
transformer.transform(domSource, result);
|
||||||
return writer.toString();
|
return writer.toString();
|
||||||
@ -411,8 +455,7 @@ public class PamguardXMLWriter implements PamSettings {
|
|||||||
* @param pamSettingsUnit
|
* @param pamSettingsUnit
|
||||||
* @return xml element
|
* @return xml element
|
||||||
*/
|
*/
|
||||||
private Element writeUnitSettings(Document doc, Element parent, PamSettings pamSettingsUnit) {
|
public Element writeUnitSettings(Document doc, Element parent, PamSettings pamSettingsUnit) {
|
||||||
|
|
||||||
int[] settingInds = findSettings(null, pamSettingsUnit.getUnitName());
|
int[] settingInds = findSettings(null, pamSettingsUnit.getUnitName());
|
||||||
PamSettings[] settingsObjects = null;
|
PamSettings[] settingsObjects = null;
|
||||||
if (settingInds != null) {
|
if (settingInds != null) {
|
||||||
@ -436,7 +479,7 @@ public class PamguardXMLWriter implements PamSettings {
|
|||||||
* can be temporary settings objects when writing temporary settings from dialogs.
|
* can be temporary settings objects when writing temporary settings from dialogs.
|
||||||
* @return new XML element.
|
* @return new XML element.
|
||||||
*/
|
*/
|
||||||
private Element writeUnitSettings(Document doc, Element parent, PamSettings pamSettingsUnit, PamSettings[] toWrite) {
|
public Element writeUnitSettings(Document doc, Element parent, PamSettings pamSettingsUnit, PamSettings[] toWrite) {
|
||||||
Element moduleData = doc.createElement("MODULE");
|
Element moduleData = doc.createElement("MODULE");
|
||||||
moduleData.setAttribute("Java.class", pamSettingsUnit.getClass().getName());
|
moduleData.setAttribute("Java.class", pamSettingsUnit.getClass().getName());
|
||||||
moduleData.setAttribute("UnitType", pamSettingsUnit.getUnitType());
|
moduleData.setAttribute("UnitType", pamSettingsUnit.getUnitType());
|
||||||
@ -457,6 +500,9 @@ public class PamguardXMLWriter implements PamSettings {
|
|||||||
Element settingEl = doc.createElement("CONFIGURATION");
|
Element settingEl = doc.createElement("CONFIGURATION");
|
||||||
moduleData.appendChild(settingEl);
|
moduleData.appendChild(settingEl);
|
||||||
for (int i = 0; i < toWrite.length; i++) {
|
for (int i = 0; i < toWrite.length; i++) {
|
||||||
|
if (wantObject(toWrite[i]) == false) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
Element setEl = writeSettings(doc, toWrite[i], new ArrayList<Object>());
|
Element setEl = writeSettings(doc, toWrite[i], new ArrayList<Object>());
|
||||||
if (setEl != null) {
|
if (setEl != null) {
|
||||||
settingEl.appendChild(setEl);
|
settingEl.appendChild(setEl);
|
||||||
@ -467,6 +513,32 @@ public class PamguardXMLWriter implements PamSettings {
|
|||||||
return moduleData;
|
return moduleData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* USed by the Tethys writer to avoid writing display settings.
|
||||||
|
* @param pamSettings
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private boolean wantObject(PamSettings pamSettings) {
|
||||||
|
if (excludeDisplaySettings == false) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
Object obj = pamSettings.getSettingsReference();
|
||||||
|
if (obj == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (obj instanceof ManagedParameters) {
|
||||||
|
ManagedParameters managedParams = (ManagedParameters) obj;
|
||||||
|
PamParameterSet paramSet = managedParams.getParameterSet();
|
||||||
|
if (paramSet == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (paramSet.getParameterSetType() == ParameterSetType.DISPLAY && excludeDisplaySettings) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Write settings for a settings object, using the standard retreived object
|
* Write settings for a settings object, using the standard retreived object
|
||||||
* from the settings.
|
* from the settings.
|
||||||
@ -478,6 +550,14 @@ public class PamguardXMLWriter implements PamSettings {
|
|||||||
private Element writeSettings(Document doc, PamSettings pamSettings, ArrayList<Object> objectHierarchy) {
|
private Element writeSettings(Document doc, PamSettings pamSettings, ArrayList<Object> objectHierarchy) {
|
||||||
return writeSettings(doc, pamSettings, pamSettings.getSettingsReference(), objectHierarchy);
|
return writeSettings(doc, pamSettings, pamSettings.getSettingsReference(), objectHierarchy);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Document writeOneObject(Object data) {
|
||||||
|
Document doc = XMLUtils.createBlankDoc();
|
||||||
|
Element el = doc.createElement("Settings");
|
||||||
|
Element newel = writeObjectData(doc, el, data, new ArrayList<Object>());
|
||||||
|
doc.appendChild(newel);
|
||||||
|
return doc;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Write settings using an object of choice instead of the standard one from PamSettings.
|
* Write settings using an object of choice instead of the standard one from PamSettings.
|
||||||
@ -489,6 +569,7 @@ public class PamguardXMLWriter implements PamSettings {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
private Element writeSettings(Document doc, PamSettings pamSettings, Object data, ArrayList<Object> objectHierarchy) {
|
private Element writeSettings(Document doc, PamSettings pamSettings, Object data, ArrayList<Object> objectHierarchy) {
|
||||||
|
|
||||||
Element el = doc.createElement("SETTINGS");
|
Element el = doc.createElement("SETTINGS");
|
||||||
el.setAttribute("Type", pamSettings.getUnitType());
|
el.setAttribute("Type", pamSettings.getUnitType());
|
||||||
el.setAttribute("Name", pamSettings.getUnitName());
|
el.setAttribute("Name", pamSettings.getUnitName());
|
||||||
@ -500,10 +581,13 @@ public class PamguardXMLWriter implements PamSettings {
|
|||||||
return el;
|
return el;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Element writeObjectData(Document doc, Element el, Object data, ArrayList<Object> objectHierarchy) {
|
public Element writeObjectData(Document doc, Element el, Object data, ArrayList<Object> objectHierarchy) {
|
||||||
if (data == null) {
|
if (data == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
if (objectHierarchy == null) {
|
||||||
|
objectHierarchy = new ArrayList<>();
|
||||||
|
}
|
||||||
if (objectHierarchy.contains(data)) {
|
if (objectHierarchy.contains(data)) {
|
||||||
// just write the reference, but nothing else or we'll end up in an infinite loop of objects.
|
// just write the reference, but nothing else or we'll end up in an infinite loop of objects.
|
||||||
Element e = doc.createElement("Object");
|
Element e = doc.createElement("Object");
|
||||||
@ -525,8 +609,10 @@ public class PamguardXMLWriter implements PamSettings {
|
|||||||
if (parameterSet == null) {
|
if (parameterSet == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
objectHierarchy.add(data);
|
if (objectHierarchy != null) {
|
||||||
|
objectHierarchy.add(data);
|
||||||
|
}
|
||||||
for (PamParameterData pamParam:parameterSet.getParameterCollection()) {
|
for (PamParameterData pamParam:parameterSet.getParameterCollection()) {
|
||||||
try {
|
try {
|
||||||
Object paramData = pamParam.getData();
|
Object paramData = pamParam.getData();
|
||||||
@ -765,9 +851,10 @@ public class PamguardXMLWriter implements PamSettings {
|
|||||||
processData.setAttribute("Name", process.getProcessName());
|
processData.setAttribute("Name", process.getProcessName());
|
||||||
PamDataBlock source = process.getParentDataBlock();
|
PamDataBlock source = process.getParentDataBlock();
|
||||||
if (source != null) {
|
if (source != null) {
|
||||||
Element inputEl = doc.createElement("Input");
|
Element inputEl = source.getDataBlockXML(doc);
|
||||||
inputEl.setAttribute("Name", source.getLongDataName());
|
// Element inputEl = doc.createElement("Input");
|
||||||
inputEl.setAttribute("Channels", String.format("0x%X", source.getChannelMap()));
|
// inputEl.setAttribute("Name", source.getLongDataName());
|
||||||
|
// inputEl.setAttribute("Channels", String.format("0x%X", source.getChannelMap()));
|
||||||
processData.appendChild(inputEl);
|
processData.appendChild(inputEl);
|
||||||
}
|
}
|
||||||
int nOut = process.getNumOutputDataBlocks();
|
int nOut = process.getNumOutputDataBlocks();
|
||||||
@ -798,7 +885,16 @@ public class PamguardXMLWriter implements PamSettings {
|
|||||||
*/
|
*/
|
||||||
private int[] findSettings(String type, String name) {
|
private int[] findSettings(String type, String name) {
|
||||||
if (settingsSets == null) {
|
if (settingsSets == null) {
|
||||||
return null;
|
makeSettingsList();
|
||||||
|
if (settingsSets == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (usedSettingsSets == null) {
|
||||||
|
usedSettingsSets = new boolean[settingsSets.size()];
|
||||||
|
}
|
||||||
|
else if (usedSettingsSets.length < settingsSets.size()) {
|
||||||
|
usedSettingsSets = Arrays.copyOf(usedSettingsSets, settingsSets.size());
|
||||||
}
|
}
|
||||||
int[] found = new int[settingsSets.size()];
|
int[] found = new int[settingsSets.size()];
|
||||||
int nFound = 0;
|
int nFound = 0;
|
||||||
@ -818,7 +914,7 @@ public class PamguardXMLWriter implements PamSettings {
|
|||||||
return Arrays.copyOf(found, nFound);
|
return Arrays.copyOf(found, nFound);
|
||||||
}
|
}
|
||||||
|
|
||||||
private ArrayList<PamSettings> makeSettingsList() {
|
public ArrayList<PamSettings> makeSettingsList() {
|
||||||
PamSettingManager settingsManager = PamSettingManager.getInstance();
|
PamSettingManager settingsManager = PamSettingManager.getInstance();
|
||||||
settingsSets = settingsManager.getOwners();
|
settingsSets = settingsManager.getOwners();
|
||||||
if (settingsSets == null) {
|
if (settingsSets == null) {
|
||||||
@ -850,6 +946,14 @@ public class PamguardXMLWriter implements PamSettings {
|
|||||||
return doc;
|
return doc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Is this element a writable type ? Basically, this means
|
||||||
|
* that it's a primitive of some sort. Otherwise it's
|
||||||
|
* probably an object and may even be a list in which case
|
||||||
|
* it will need treating differently.
|
||||||
|
* @param clazz
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
public static boolean isWritableType(Class<?> clazz)
|
public static boolean isWritableType(Class<?> clazz)
|
||||||
{
|
{
|
||||||
if (clazz.isEnum()) return true;
|
if (clazz.isEnum()) return true;
|
||||||
@ -940,5 +1044,23 @@ public class PamguardXMLWriter implements PamSettings {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the excludeDisplaySettings
|
||||||
|
*/
|
||||||
|
public boolean isExcludeDisplaySettings() {
|
||||||
|
return excludeDisplaySettings;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param excludeDisplaySettings the excludeDisplaySettings to set
|
||||||
|
*/
|
||||||
|
public void setExcludeDisplaySettings(boolean excludeDisplaySettings) {
|
||||||
|
this.excludeDisplaySettings = excludeDisplaySettings;
|
||||||
|
}
|
||||||
|
|
||||||
|
// public void setStaticNameSpace(String xmlNameSpace) {
|
||||||
|
// this.xmlNameSpace = xmlNameSpace;
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ import java.io.Serializable;
|
|||||||
|
|
||||||
import PamModel.parametermanager.ManagedParameters;
|
import PamModel.parametermanager.ManagedParameters;
|
||||||
import PamModel.parametermanager.PamParameterSet;
|
import PamModel.parametermanager.PamParameterSet;
|
||||||
|
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||||
|
|
||||||
public class XMLWriterSettings implements Serializable, Cloneable, ManagedParameters {
|
public class XMLWriterSettings implements Serializable, Cloneable, ManagedParameters {
|
||||||
|
|
||||||
@ -34,7 +35,7 @@ public class XMLWriterSettings implements Serializable, Cloneable, ManagedParame
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PamParameterSet getParameterSet() {
|
public PamParameterSet getParameterSet() {
|
||||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DISPLAY);
|
||||||
return ps;
|
return ps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@ import java.io.Serializable;
|
|||||||
import PamController.soundMedium.GlobalMedium.SoundMedium;
|
import PamController.soundMedium.GlobalMedium.SoundMedium;
|
||||||
import PamModel.parametermanager.ManagedParameters;
|
import PamModel.parametermanager.ManagedParameters;
|
||||||
import PamModel.parametermanager.PamParameterSet;
|
import PamModel.parametermanager.PamParameterSet;
|
||||||
|
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Stores parameters for the current medium.
|
* Stores parameters for the current medium.
|
||||||
@ -41,7 +42,7 @@ public class GlobalMediumParams implements Serializable, Cloneable, ManagedParam
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PamParameterSet getParameterSet() {
|
public PamParameterSet getParameterSet() {
|
||||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DISPLAY);
|
||||||
return ps;
|
return ps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,6 +23,7 @@ package PamModel;
|
|||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
import java.lang.reflect.Constructor;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.net.URLClassLoader;
|
import java.net.URLClassLoader;
|
||||||
@ -44,11 +45,15 @@ import whistlesAndMoans.AbstractWhistleDataUnit;
|
|||||||
import fftManager.FFTDataUnit;
|
import fftManager.FFTDataUnit;
|
||||||
import fftManager.PamFFTControl;
|
import fftManager.PamFFTControl;
|
||||||
import group3dlocaliser.Group3DLocaliserControl;
|
import group3dlocaliser.Group3DLocaliserControl;
|
||||||
|
import metadata.MetaDataContol;
|
||||||
import meygenturbine.MeygenTurbine;
|
import meygenturbine.MeygenTurbine;
|
||||||
import printscreen.PrintScreenControl;
|
import printscreen.PrintScreenControl;
|
||||||
import rockBlock.RockBlockControl;
|
import rockBlock.RockBlockControl;
|
||||||
|
import tethys.TethysControl;
|
||||||
import turbineops.TurbineOperationControl;
|
import turbineops.TurbineOperationControl;
|
||||||
import GPS.GpsDataUnit;
|
import GPS.GpsDataUnit;
|
||||||
|
import Map.MapController;
|
||||||
|
import Map.gridbaselayer.GridbaseControl;
|
||||||
import NMEA.NMEADataUnit;
|
import NMEA.NMEADataUnit;
|
||||||
import PamController.PamControlledUnitSettings;
|
import PamController.PamControlledUnitSettings;
|
||||||
import PamController.PamController;
|
import PamController.PamController;
|
||||||
@ -62,6 +67,7 @@ import PamguardMVC.PamDataBlock;
|
|||||||
import analogarraysensor.ArraySensorControl;
|
import analogarraysensor.ArraySensorControl;
|
||||||
import backupmanager.BackupManager;
|
import backupmanager.BackupManager;
|
||||||
import beamformer.continuous.BeamFormerControl;
|
import beamformer.continuous.BeamFormerControl;
|
||||||
|
import beamformer.localiser.BeamFormLocaliserControl;
|
||||||
import bearinglocaliser.BearingLocaliserControl;
|
import bearinglocaliser.BearingLocaliserControl;
|
||||||
import binaryFileStorage.SecondaryBinaryStore;
|
import binaryFileStorage.SecondaryBinaryStore;
|
||||||
import cepstrum.CepstrumControl;
|
import cepstrum.CepstrumControl;
|
||||||
@ -454,6 +460,20 @@ final public class PamModel implements PamSettings {
|
|||||||
mi.setToolTipText("Manage automated data backups");
|
mi.setToolTipText("Manage automated data backups");
|
||||||
mi.setModulesMenuGroup(utilitiesGroup);
|
mi.setModulesMenuGroup(utilitiesGroup);
|
||||||
mi.setMaxNumber(1);
|
mi.setMaxNumber(1);
|
||||||
|
|
||||||
|
|
||||||
|
// mi = PamModuleInfo.registerControlledUnit(MetaDataContol.class.getName(), MetaDataContol.unitType);
|
||||||
|
// mi.setToolTipText("Project Meta Data");
|
||||||
|
// mi.setModulesMenuGroup(utilitiesGroup);
|
||||||
|
// mi.setMaxNumber(1);
|
||||||
|
|
||||||
|
if (isViewer) {
|
||||||
|
mi = PamModuleInfo.registerControlledUnit(TethysControl.class.getName(), TethysControl.defaultName);
|
||||||
|
mi.setToolTipText("Interface to Tethys Database");
|
||||||
|
mi.setModulesMenuGroup(utilitiesGroup);
|
||||||
|
mi.setMaxNumber(1);
|
||||||
|
mi.setHidden(SMRUEnable.isEnable() == false);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ************* End Utilities Group *******************
|
* ************* End Utilities Group *******************
|
||||||
@ -928,14 +948,17 @@ final public class PamModel implements PamSettings {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @see PamModel.PamModelInterface#startModel()
|
|
||||||
|
/**
|
||||||
|
* Add any remaining REQUIRED modules.<br>
|
||||||
|
* this get's called after the PamController has loaded it's main settings.
|
||||||
|
* So at this point, go through all the PamModuleInfo's and check that
|
||||||
|
* all have at least the minimum number required
|
||||||
|
* @return true
|
||||||
*/
|
*/
|
||||||
public synchronized boolean startModel() {
|
public synchronized boolean startModel() {
|
||||||
/*
|
/*
|
||||||
* this get's called after the PamController has loaded it's main settings.
|
|
||||||
* So at this point, go through all the PamModuleInfo's and check that
|
|
||||||
* all have at least the minimum number required
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
PamSettingManager.getInstance().registerSettings(this);
|
PamSettingManager.getInstance().registerSettings(this);
|
||||||
@ -952,11 +975,11 @@ final public class PamModel implements PamSettings {
|
|||||||
|
|
||||||
// writeModuleList();
|
// writeModuleList();
|
||||||
|
|
||||||
return false;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Really just debu goutput to make a list of all modules ...
|
* Really just debug output to make a list of all modules ...
|
||||||
*/
|
*/
|
||||||
private void writeModuleList() {
|
private void writeModuleList() {
|
||||||
ArrayList<PamModuleInfo> moduleInfoList = PamModuleInfo.getModuleList();
|
ArrayList<PamModuleInfo> moduleInfoList = PamModuleInfo.getModuleList();
|
||||||
@ -1063,7 +1086,7 @@ final public class PamModel implements PamSettings {
|
|||||||
// clear the current list
|
// clear the current list
|
||||||
pluginList.clear();
|
pluginList.clear();
|
||||||
daqList.clear();
|
daqList.clear();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If developing a new PAMPlugin in eclipse, the easiest way to do it is to make a new
|
* If developing a new PAMPlugin in eclipse, the easiest way to do it is to make a new
|
||||||
* Eclipse project for your plugin code. Within that project, copy this PamModel class
|
* Eclipse project for your plugin code. Within that project, copy this PamModel class
|
||||||
@ -1078,6 +1101,8 @@ final public class PamModel implements PamSettings {
|
|||||||
* When you export the code for your plugin to a jar file, remember to NOT inlcude the copy of
|
* When you export the code for your plugin to a jar file, remember to NOT inlcude the copy of
|
||||||
* PamModel !
|
* PamModel !
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
// pluginList.add(new MorlaisWP1aPlugin());
|
||||||
|
|
||||||
// Load up whatever default classloader was used to create this class. Must use the same classloader
|
// Load up whatever default classloader was used to create this class. Must use the same classloader
|
||||||
// for all plugins, or else we will not be able to create proper dependencies between them or be able
|
// for all plugins, or else we will not be able to create proper dependencies between them or be able
|
||||||
@ -1145,11 +1170,30 @@ final public class PamModel implements PamSettings {
|
|||||||
// to add that URL to the default classloader path.
|
// to add that URL to the default classloader path.
|
||||||
URL newURL = jarList.get(i).toURI().toURL();
|
URL newURL = jarList.get(i).toURI().toURL();
|
||||||
|
|
||||||
|
// original method
|
||||||
|
// Method method = URLClassLoader.class.getDeclaredMethod("addURL", URL.class);
|
||||||
|
// method.setAccessible(true);
|
||||||
|
// method.invoke(cl, newURL);
|
||||||
|
|
||||||
|
// first fix attempt - create a brand new URLClassLoader. As expected, we get a ClassCastException when trying
|
||||||
|
// to load the parameters so we can't save params using this method
|
||||||
|
// URL[] newURLArray = new URL[1];
|
||||||
|
// newURLArray[0] = newURL;
|
||||||
|
// cl = new URLClassLoader(newURLArray);
|
||||||
|
|
||||||
// second attempt - custom class loader with the system app loader specified as the parent. Loads controlled unit, but
|
// second attempt - custom class loader with the system app loader specified as the parent. Loads controlled unit, but
|
||||||
// as before it doesn't load the parameters
|
// as before it doesn't load the parameters
|
||||||
classLoader.addURL(newURL);
|
classLoader.addURL(newURL);
|
||||||
|
|
||||||
|
// third attempt
|
||||||
|
// Class<?> genericClass = cl.getClass();
|
||||||
|
// Method method = genericClass.getSuperclass().getDeclaredMethod("addURL", new Class[] {URL.class});
|
||||||
|
// method.setAccessible(true);
|
||||||
|
// method.invoke(cl, new Object[] {newURL});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Save the name of the class to the global pluginBeingLoaded variable, and load the class.
|
// Save the name of the class to the global pluginBeingLoaded variable, and load the class.
|
||||||
this.setPluginBeingLoaded(className);
|
this.setPluginBeingLoaded(className);
|
||||||
// Class c = cl.loadClass(className);
|
// Class c = cl.loadClass(className);
|
||||||
@ -1171,13 +1215,15 @@ final public class PamModel implements PamSettings {
|
|||||||
if (intf[j].getName().equals("PamModel.PamPluginInterface")) {
|
if (intf[j].getName().equals("PamModel.PamPluginInterface")) {
|
||||||
|
|
||||||
// create an instance of the interface class.
|
// create an instance of the interface class.
|
||||||
PamPluginInterface pf = (PamPluginInterface) c.newInstance();
|
Constructor constructor = c.getDeclaredConstructor(null);
|
||||||
|
PamPluginInterface pf = (PamPluginInterface) constructor.newInstance(null);
|
||||||
if (getPluginBeingLoaded()==null) {
|
if (getPluginBeingLoaded()==null) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Let the user know which valid plugins have been found
|
// Let the user know which valid plugins have been found
|
||||||
System.out.println(" Creating instance of " + pf.getDefaultName() + ": " + pf.getClassName());
|
System.out.printf(" Loading plugin interface for %s : %s version %s\n",
|
||||||
|
pf.getDefaultName(), pf.getClassName(), pf.getVersion());
|
||||||
if (getPluginBeingLoaded()==null) {
|
if (getPluginBeingLoaded()==null) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -1193,7 +1239,7 @@ final public class PamModel implements PamSettings {
|
|||||||
|
|
||||||
pluginList.add(pf); // add it to the list
|
pluginList.add(pf); // add it to the list
|
||||||
} else {
|
} else {
|
||||||
System.out.println(" Error: "+pf.getDefaultName()+" cannot run in this mode. Skipping module.");
|
System.out.println(" Error: " + pf.getDefaultName()+" cannot run in this mode. Skipping module.");
|
||||||
}
|
}
|
||||||
if (getPluginBeingLoaded()==null) {
|
if (getPluginBeingLoaded()==null) {
|
||||||
continue;
|
continue;
|
||||||
@ -1202,12 +1248,16 @@ final public class PamModel implements PamSettings {
|
|||||||
|
|
||||||
// now check for interfaces that implement DaqSystemInterface
|
// now check for interfaces that implement DaqSystemInterface
|
||||||
if (intf[j].getName().equals("Acquisition.DaqSystemInterface")) {
|
if (intf[j].getName().equals("Acquisition.DaqSystemInterface")) {
|
||||||
DaqSystemInterface pf = (DaqSystemInterface) c.newInstance(); // create an instance of the interface class
|
Constructor constructor = c.getDeclaredConstructor(null);
|
||||||
|
DaqSystemInterface pf = (DaqSystemInterface) constructor.newInstance(null);
|
||||||
|
// DaqSystemInterface pf = (DaqSystemInterface) c.newInstance(); // create an instance of the interface class
|
||||||
if (getPluginBeingLoaded()==null) {
|
if (getPluginBeingLoaded()==null) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
System.out.println(" Creating instance of " + pf.getDefaultName() + ": " + className);
|
System.out.printf(" Loading daq plugin interface for %s version %s\n",
|
||||||
|
pf.getDefaultName(), pf.getVersion());
|
||||||
|
// System.out.println(" Creating instance of " + pf.getDefaultName() + ": " + className);
|
||||||
if (getPluginBeingLoaded()==null) {
|
if (getPluginBeingLoaded()==null) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -1230,8 +1280,9 @@ final public class PamModel implements PamSettings {
|
|||||||
"for help.<p>" +
|
"for help.<p>" +
|
||||||
"This plug-in will not be available for loading";
|
"This plug-in will not be available for loading";
|
||||||
String help = null;
|
String help = null;
|
||||||
int ans = WarnOnce.showWarning(PamController.getInstance().getGuiFrameManager().getFrame(0), title, msg, WarnOnce.WARNING_MESSAGE, help, e1);
|
int ans = WarnOnce.showWarning(PamController.getMainFrame(), title, msg, WarnOnce.WARNING_MESSAGE, help, e1);
|
||||||
System.err.println("Exception while loading " + className);
|
System.err.println("Exception while loading " + className);
|
||||||
|
System.err.println(e1.getMessage());
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1244,7 +1295,7 @@ final public class PamModel implements PamSettings {
|
|||||||
"for help.<p>" +
|
"for help.<p>" +
|
||||||
"This plug-in will not be available for loading";
|
"This plug-in will not be available for loading";
|
||||||
String help = null;
|
String help = null;
|
||||||
int ans = WarnOnce.showWarning(PamController.getInstance().getGuiFrameManager().getFrame(0), title, msg, WarnOnce.WARNING_MESSAGE, help, ex);
|
int ans = WarnOnce.showWarning(PamController.getMainFrame(), title, msg, WarnOnce.WARNING_MESSAGE, help, ex);
|
||||||
System.err.println("Exception while loading " + jarList.get(i).getName());
|
System.err.println("Exception while loading " + jarList.get(i).getName());
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -1269,7 +1320,7 @@ final public class PamModel implements PamSettings {
|
|||||||
|
|
||||||
// instantiate the plugin control class using the custom class loader
|
// instantiate the plugin control class using the custom class loader
|
||||||
try {
|
try {
|
||||||
// File classFile = new File(pf.getJarFile());
|
File classFile = new File(pf.getJarFile());
|
||||||
//URLClassLoader cl = new URLClassLoader(new URL[]{classFile.toURI().toURL()});
|
//URLClassLoader cl = new URLClassLoader(new URL[]{classFile.toURI().toURL()});
|
||||||
// mi = PamModuleInfo.registerControlledUnit(pf.getClassName(), pf.getDescription(),cl);
|
// mi = PamModuleInfo.registerControlledUnit(pf.getClassName(), pf.getDescription(),cl);
|
||||||
mi = PamModuleInfo.registerControlledUnit(pf.getClassName(), pf.getDescription(),classLoader);
|
mi = PamModuleInfo.registerControlledUnit(pf.getClassName(), pf.getDescription(),classLoader);
|
||||||
@ -1335,7 +1386,7 @@ final public class PamModel implements PamSettings {
|
|||||||
"for help.<p>" +
|
"for help.<p>" +
|
||||||
"This plug-in will not be available for loading";
|
"This plug-in will not be available for loading";
|
||||||
String help = null;
|
String help = null;
|
||||||
int ans = WarnOnce.showWarning(PamController.getInstance().getGuiFrameManager().getFrame(0), title, msg, WarnOnce.WARNING_MESSAGE, help, e1);
|
int ans = WarnOnce.showWarning(PamController.getMainFrame(), title, msg, WarnOnce.WARNING_MESSAGE, help, e1);
|
||||||
System.err.println("Exception while loading " + pf.getDefaultName());
|
System.err.println("Exception while loading " + pf.getDefaultName());
|
||||||
pluginList.remove(pf);
|
pluginList.remove(pf);
|
||||||
continue;
|
continue;
|
||||||
|
@ -4,6 +4,7 @@ import java.io.Serializable;
|
|||||||
|
|
||||||
import PamModel.parametermanager.ManagedParameters;
|
import PamModel.parametermanager.ManagedParameters;
|
||||||
import PamModel.parametermanager.PamParameterSet;
|
import PamModel.parametermanager.PamParameterSet;
|
||||||
|
import PamModel.parametermanager.PamParameterSet.ParameterSetType;
|
||||||
|
|
||||||
public class PamModelSettings implements Cloneable, Serializable, ManagedParameters {
|
public class PamModelSettings implements Cloneable, Serializable, ManagedParameters {
|
||||||
|
|
||||||
@ -74,7 +75,7 @@ public class PamModelSettings implements Cloneable, Serializable, ManagedParamet
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PamParameterSet getParameterSet() {
|
public PamParameterSet getParameterSet() {
|
||||||
PamParameterSet ps = PamParameterSet.autoGenerate(this);
|
PamParameterSet ps = PamParameterSet.autoGenerate(this, ParameterSetType.DETECTOR);
|
||||||
return ps;
|
return ps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,6 +34,11 @@ abstract public class PamParameterData {
|
|||||||
*/
|
*/
|
||||||
private String postTitle;
|
private String postTitle;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* field length for automatic dialogs.
|
||||||
|
*/
|
||||||
|
private int fieldLength;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param parentObject
|
* @param parentObject
|
||||||
@ -45,6 +50,21 @@ abstract public class PamParameterData {
|
|||||||
this.field = field;
|
this.field = field;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param parentObject
|
||||||
|
* @param field
|
||||||
|
* @param shortName
|
||||||
|
* @param toolTip
|
||||||
|
* @param fieldLength length of text in automatic dialogs.
|
||||||
|
*/
|
||||||
|
public PamParameterData(Object parentObject, Field field, String shortName, String toolTip, int fieldLength) {
|
||||||
|
super();
|
||||||
|
this.field = field;
|
||||||
|
this.shortName = shortName;
|
||||||
|
this.toolTip = toolTip;
|
||||||
|
this.fieldLength = fieldLength;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param parentObject
|
* @param parentObject
|
||||||
* @param field
|
* @param field
|
||||||
@ -58,7 +78,6 @@ abstract public class PamParameterData {
|
|||||||
this.toolTip = toolTip;
|
this.toolTip = toolTip;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param shortName the shortName to set
|
* @param shortName the shortName to set
|
||||||
*/
|
*/
|
||||||
@ -66,6 +85,20 @@ abstract public class PamParameterData {
|
|||||||
this.shortName = shortName;
|
this.shortName = shortName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set info about a parameter
|
||||||
|
* @param shortName short name, e.g. to use in a dialog
|
||||||
|
* @param postTitle post title, e.g. text coming after a data entry field in a dialog
|
||||||
|
* @param toolTip tool tip to display over the component in a dialog.
|
||||||
|
* @param fieldLength length of text in automatic dialogs.
|
||||||
|
*/
|
||||||
|
public void setInfo(String shortName, String postTitle, String toolTip, int fieldLength) {
|
||||||
|
this.shortName = shortName;
|
||||||
|
this.postTitle = postTitle;
|
||||||
|
this.toolTip = toolTip;
|
||||||
|
this.fieldLength = fieldLength;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set info about a parameter
|
* Set info about a parameter
|
||||||
* @param shortName short name, e.g. to use in a dialog
|
* @param shortName short name, e.g. to use in a dialog
|
||||||
@ -136,6 +169,9 @@ abstract public class PamParameterData {
|
|||||||
* @return a short name for the field, suitable for use in dialogs.
|
* @return a short name for the field, suitable for use in dialogs.
|
||||||
*/
|
*/
|
||||||
public String getShortName() {
|
public String getShortName() {
|
||||||
|
if (shortName == null) {
|
||||||
|
return getFieldName();
|
||||||
|
}
|
||||||
return shortName;
|
return shortName;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -166,5 +202,19 @@ abstract public class PamParameterData {
|
|||||||
return String.format("Param %s class %s", getFieldName(), getDataClass());
|
return String.format("Param %s class %s", getFieldName(), getDataClass());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the fieldLength
|
||||||
|
*/
|
||||||
|
public int getFieldLength() {
|
||||||
|
return fieldLength;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param fieldLength the fieldLength to set
|
||||||
|
*/
|
||||||
|
public void setFieldLength(int fieldLength) {
|
||||||
|
this.fieldLength = fieldLength;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -59,9 +59,12 @@ public class PamParameterDataGetter extends PrivatePamParameterData {
|
|||||||
if (setter == null) {
|
if (setter == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
// need to convert the type
|
||||||
|
Object convObj = convertStringType(data);
|
||||||
try {
|
try {
|
||||||
setter.invoke(getParentObject(), data);
|
Object parentObj = getParentObject();
|
||||||
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
|
setter.invoke(parentObj, convObj);
|
||||||
|
} catch (InvocationTargetException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,6 @@ import java.util.Collection;
|
|||||||
import java.util.Hashtable;
|
import java.util.Hashtable;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import binaryFileStorage.BinaryStoreSettings;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Description of the parameters within a class. Primarily holds a list
|
* Description of the parameters within a class. Primarily holds a list
|
||||||
@ -29,6 +28,9 @@ public class PamParameterSet {
|
|||||||
|
|
||||||
private static boolean printDebug = false;
|
private static boolean printDebug = false;
|
||||||
|
|
||||||
|
public enum ParameterSetType {DETECTOR, DISPLAY};
|
||||||
|
|
||||||
|
private ParameterSetType parameterSetType;
|
||||||
/**
|
/**
|
||||||
* Standard modifiers to exclude. This is important for many classes which will tend to
|
* Standard modifiers to exclude. This is important for many classes which will tend to
|
||||||
* do crazy things such as incorporate ALL of their final fields, e.g. when a Color
|
* do crazy things such as incorporate ALL of their final fields, e.g. when a Color
|
||||||
@ -55,8 +57,21 @@ public class PamParameterSet {
|
|||||||
* in the STANDARD_MODIFIER_EXCLUSIONS list (FINAL or STATIC).
|
* in the STANDARD_MODIFIER_EXCLUSIONS list (FINAL or STATIC).
|
||||||
* @return Created parameter set.
|
* @return Created parameter set.
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public static PamParameterSet autoGenerate(Object parentObject) {
|
public static PamParameterSet autoGenerate(Object parentObject) {
|
||||||
return autoGenerate(parentObject, STANDARD_MODIFIER_EXCLUSIONS);
|
return autoGenerate(parentObject, ParameterSetType.DETECTOR);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Automatically generate a parameter set for a class. Will include all public fields and
|
||||||
|
* any private or protected fields for which a getter can be found that has a similar enough name
|
||||||
|
* @param parentObject class to generate description for. Exception is anything that's listed
|
||||||
|
* in the STANDARD_MODIFIER_EXCLUSIONS list (FINAL or STATIC).
|
||||||
|
* @return Created parameter set.
|
||||||
|
*/
|
||||||
|
public static PamParameterSet autoGenerate(Object parentObject, ParameterSetType parameterSetType) {
|
||||||
|
PamParameterSet paramSet = autoGenerate(parentObject, STANDARD_MODIFIER_EXCLUSIONS);
|
||||||
|
paramSet.setParameterSetType(parameterSetType);
|
||||||
|
return paramSet;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -286,4 +301,19 @@ public class PamParameterSet {
|
|||||||
public PamParameterData removeParameterData(String paramName) {
|
public PamParameterData removeParameterData(String paramName) {
|
||||||
return parameterDatas.remove(paramName);
|
return parameterDatas.remove(paramName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the parameterSetType
|
||||||
|
*/
|
||||||
|
public ParameterSetType getParameterSetType() {
|
||||||
|
return parameterSetType;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param parameterSetType the parameterSetType to set
|
||||||
|
*/
|
||||||
|
public void setParameterSetType(ParameterSetType parameterSetType) {
|
||||||
|
this.parameterSetType = parameterSetType;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
73
src/PamModel/parametermanager/ParameterSetManager.java
Normal file
73
src/PamModel/parametermanager/ParameterSetManager.java
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
package PamModel.parametermanager;
|
||||||
|
|
||||||
|
import java.awt.Window;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
|
||||||
|
import javax.swing.JMenuItem;
|
||||||
|
|
||||||
|
import PamModel.parametermanager.swing.ManagedParameterDialog;
|
||||||
|
import generalDatabase.parameterstore.ParameterDatabaseStore;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Just about everything giving overall control of some managed parameters.
|
||||||
|
* May be a bit too specific on first cut and need to be abstracted.
|
||||||
|
* Testing on 'Deployment' data.
|
||||||
|
* @author dg50
|
||||||
|
*
|
||||||
|
* @param <T>
|
||||||
|
*/
|
||||||
|
public class ParameterSetManager<T extends ManagedParameters> {
|
||||||
|
|
||||||
|
private T managedParams;
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
public ParameterSetManager(T defaultParams, String name) {
|
||||||
|
setManagedParams(defaultParams);
|
||||||
|
this.name = name;
|
||||||
|
// if (managedParams == null) {
|
||||||
|
// managedParams = new T();
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the managedParams
|
||||||
|
*/
|
||||||
|
public T getManagedParams() {
|
||||||
|
return managedParams;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param managedParams the managedParams to set
|
||||||
|
*/
|
||||||
|
public void setManagedParams(T managedParams) {
|
||||||
|
this.managedParams = managedParams;
|
||||||
|
}
|
||||||
|
|
||||||
|
public JMenuItem getMenuItem(Window parent) {
|
||||||
|
if (managedParams == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
JMenuItem menuItem = new JMenuItem(name + " ...");
|
||||||
|
menuItem.addActionListener(new ActionListener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
showDialog(parent);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return menuItem;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void showDialog(Window parent) {
|
||||||
|
ManagedParameterDialog<T> dialog = new ManagedParameterDialog<T>(parent, name, managedParams);
|
||||||
|
T newParams = dialog.showDialog(parent, name, managedParams);
|
||||||
|
|
||||||
|
if (newParams != null) {
|
||||||
|
ParameterDatabaseStore paramDatabase = new ParameterDatabaseStore("MetaData");
|
||||||
|
paramDatabase.saveParameterSet(newParams);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user