mirror of
https://github.com/PAMGuard/PAMGuard.git
synced 2024-11-21 22:52:22 +00:00
Merge branch 'main' into Tethys
This commit is contained in:
commit
b48c1e7574
@ -196,7 +196,7 @@ public class PamController implements PamControllerInterface, PamSettings {
|
||||
|
||||
private Timer diagnosticTimer;
|
||||
|
||||
private boolean debugDumpBufferAtRestart = true;
|
||||
private boolean debugDumpBufferAtRestart = false;
|
||||
|
||||
private NetworkController networkController;
|
||||
private int nNetPrepared;
|
||||
|
@ -16,7 +16,7 @@ public class PamguardVersionInfo {
|
||||
* @return release type
|
||||
*/
|
||||
static public ReleaseType getReleaseType() {
|
||||
return ReleaseType.OTHER;
|
||||
return ReleaseType.BETA;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -636,7 +636,7 @@ public class PamDataBlock<Tunit extends PamDataUnit> extends PamObservable {
|
||||
|
||||
/**
|
||||
* Find a dataunit based on it's database index. If there have been no updates,
|
||||
* then database indexes should be in order and a fast find canbe used. If
|
||||
* then database indexes should be in order and a fast find can be used. If
|
||||
* however, there have been updates, then things will not be in order so it's
|
||||
* necessary to go through everything from start to end.
|
||||
*
|
||||
|
@ -63,6 +63,13 @@ public class SubdetectionInfo<T extends PamDataUnit> implements Comparable<Subde
|
||||
*/
|
||||
private int childDatabaseIndex;
|
||||
|
||||
private int binaryFileIndex;
|
||||
|
||||
/**
|
||||
* Only exists for click data.
|
||||
*/
|
||||
private Integer clickNumber;
|
||||
|
||||
|
||||
/**
|
||||
* @param subDetection2
|
||||
@ -106,6 +113,7 @@ public class SubdetectionInfo<T extends PamDataUnit> implements Comparable<Subde
|
||||
binaryFilename = subTableData.getBinaryFilename();
|
||||
parentID = subTableData.getParentID();
|
||||
parentUID = subTableData.getParentUID();
|
||||
clickNumber = subTableData.getClickNumber();
|
||||
}
|
||||
|
||||
public T getSubDetection() {
|
||||
@ -210,4 +218,32 @@ public class SubdetectionInfo<T extends PamDataUnit> implements Comparable<Subde
|
||||
this.childDatabaseIndex = childDatabaseIndex;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the binaryFileIndex
|
||||
*/
|
||||
public int getBinaryFileIndex() {
|
||||
return binaryFileIndex;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param binaryFileIndex the binaryFileIndex to set
|
||||
*/
|
||||
public void setBinaryFileIndex(int binaryFileIndex) {
|
||||
this.binaryFileIndex = binaryFileIndex;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the clickNumber
|
||||
*/
|
||||
public Integer getClickNumber() {
|
||||
return clickNumber;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param childUID the childUID to set
|
||||
*/
|
||||
public void setChildUID(long childUID) {
|
||||
this.childUID = childUID;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package PamguardMVC.superdet;
|
||||
|
||||
import java.io.File;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
@ -15,6 +16,7 @@ import PamguardMVC.PamDataBlock;
|
||||
import PamguardMVC.PamDataUnit;
|
||||
import PamguardMVC.PamProcess;
|
||||
import PamguardMVC.debug.Debug;
|
||||
import binaryFileStorage.DataUnitFileInformation;
|
||||
import clickDetector.offlineFuncs.OfflineEventDataUnit;
|
||||
import generalDatabase.PamSubtableData;
|
||||
import generalDatabase.SQLLogging;
|
||||
@ -514,7 +516,46 @@ public class SuperDetDataBlock<Tunit extends SuperDetection, TSubDet extends Pam
|
||||
return Long.signum(comp);
|
||||
}
|
||||
comp = subTableData.getChildUID() - dataUnit.getUID();
|
||||
return Long.signum(comp);
|
||||
if (comp == 0) {
|
||||
return 0;
|
||||
}
|
||||
/**
|
||||
* Some problems in some datasets where the uid is corrupt. So also check
|
||||
* on binary file information. This is slower, but since we've already matched on
|
||||
* time, it doesn't get called very often.
|
||||
*/
|
||||
String dbBin = subTableData.getBinaryFilename();
|
||||
DataUnitFileInformation duFileInfo = dataUnit.getDataUnitFileInformation();
|
||||
if (dbBin == null || duFileInfo == null) {
|
||||
return Long.signum(comp);
|
||||
}
|
||||
// String duBin = duFileInfo.get
|
||||
/*
|
||||
* Note that some bin names are truncated, so need to match on startswith.
|
||||
*/
|
||||
File binFile = duFileInfo.getFile();
|
||||
if (binFile == null) {
|
||||
return Long.signum(comp);
|
||||
}
|
||||
String fName = binFile.getName();
|
||||
if (fName.startsWith(dbBin) == false) {
|
||||
return Long.signum(comp);
|
||||
}
|
||||
/*
|
||||
* hope for a non null click number. If there isn't onw, then we'll just have to
|
||||
* go with the bin file being the same and the millis being the same. It's important
|
||||
* for clicks though since there can be >1 in a millisecond.
|
||||
*/
|
||||
Integer clickNo = subTableData.getClickNumber();
|
||||
if (clickNo == null) {
|
||||
return 0;
|
||||
}
|
||||
else {
|
||||
subTableData.setChildUID(dataUnit.getUID());
|
||||
dataUnit.updateDataUnit(System.currentTimeMillis());
|
||||
return (int) (clickNo - duFileInfo.getIndexInFile());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -81,6 +81,11 @@ public class PamSubtableData {
|
||||
* subdetection table, and not the index from the Click_Detector_Clicks table)
|
||||
*/
|
||||
private long dbIndex;
|
||||
|
||||
/**
|
||||
* Click number. only exists for clicks table, but needed for corrupt database.
|
||||
*/
|
||||
private Integer clickNumber;
|
||||
|
||||
/**
|
||||
*
|
||||
@ -158,5 +163,18 @@ public class PamSubtableData {
|
||||
this.childUTC = childUTC;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the clickNumber
|
||||
*/
|
||||
public Integer getClickNumber() {
|
||||
return clickNumber;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param clickNumber the clickNumber to set
|
||||
*/
|
||||
public void setClickNumber(Integer clickNumber) {
|
||||
this.clickNumber = clickNumber;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -2077,8 +2077,9 @@ public abstract class SQLLogging {
|
||||
ArrayList<PamSubtableData> tableList = new ArrayList<PamSubtableData>();
|
||||
int n = 0;
|
||||
try {
|
||||
PamSubtableDefinition subtableTableDef = (PamSubtableDefinition) getTableDefinition();
|
||||
PamTableItem clickNoItem = subtableTableDef.findTableItem("ClickNo");
|
||||
while (subtableResults.next()) {
|
||||
PamSubtableDefinition subtableTableDef = (PamSubtableDefinition) getTableDefinition();
|
||||
PamTableItem tableItem;
|
||||
// transferDataFromResult(con.getSqlTypes(), subtableResults);
|
||||
for (int i = 0; i < subtableTableDef.getTableItemCount(); i++) {
|
||||
@ -2102,6 +2103,9 @@ public abstract class SQLLogging {
|
||||
subtableData.setLongName(subtableTableDef.getLongName().getStringValue());
|
||||
subtableData.setBinaryFilename(subtableTableDef.getBinaryfile().getStringValue());
|
||||
subtableData.setDbIndex(subtableTableDef.getIndexItem().getIntegerValue());
|
||||
if (clickNoItem != null) {
|
||||
subtableData.setClickNumber(clickNoItem.getIntegerValue());
|
||||
}
|
||||
try {
|
||||
subtableData.setChildUID(subtableTableDef.getUidItem().getLongObject());
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user