📄 solutionew.java
字号:
ewOr.dErLat = this.errorHoriz.floatValue();
else
ewOr.dErLat = this.errorLat.floatValue();
if(Float.isNaN(this.errorLon.floatValue()))
ewOr.dErLon = this.errorHoriz.floatValue();
else
ewOr.dErLon = this.errorLon.floatValue();
ewOr.dErZ = this.errorVert.floatValue();
ewOr.sSource = this.source.toString(); // DK Cleanup this is probably sHumanReadable
ewOr.iGap = this.gap.intValue();
ewOr.dRMS = this.rms.floatValue();
ewOr.iUsedPh = this.usedReadings.intValue();
return(true);
}
protected static SolutionEW EWSol2SolEW(EWSolution ewSol)
{
SolutionEW solEW = new SolutionEW();
solEW.lat = new DataDouble(ewSol.dLat);
solEW.lon = new DataDouble(ewSol.dLon);
solEW.depth = new DataDouble(ewSol.dDepth);
solEW.id = new DataLong(ewSol.idEvent);
solEW.idOrigin = ewSol.idOrigin;
solEW.datetime = new DataDouble(ewSol.tOrigin);
solEW.magnitude = Magnitude.create();
solEW.magnitude.value = new DataDouble(ewSol.dPrefMag);
solEW.magnitude.sol = solEW;
solEW.authority = new DataString(ewSol.sHumanReadable); // DK CLEANUP
solEW.dummyFlag = new DataLong((ewSol.iDubiocity != 0)?1:0);
solEW.source = new DataString(ewSol.sHumanReadable);
solEW.eventSource = new DataString(ewSol.sHumanReadable);
solEW.sOriginSource = ewSol.sSource;
solEW.eventType = new DataString(org.trinet.jasi.EventTypeMap.get(ewSol.tiEventType)); // DK CLEANUP
solEW.externalId = new DataString(ewSol.sSourceEventID);
if(ewSol.sHumanReadable != null)
{
if(ewSol.sHumanReadable.charAt(3) == '-')
{
// we have a standardized author string
solEW.eventAuthority = new DataString(ewSol.sHumanReadable.substring(0,2));
if(ewSol.sHumanReadable.indexOf("Automatic") != -1)
solEW.processingState = new DataString(org.trinet.jasi.ProcessingState.getLabel(solEW.STATE_AUTOMATIC));
else if(ewSol.sHumanReadable.indexOf("Reviewed") != -1)
solEW.processingState = new DataString(org.trinet.jasi.ProcessingState.getLabel(solEW.STATE_HUMAN));
else
solEW.processingState = new DataString(org.trinet.jasi.ProcessingState.getLabel(solEW.STATE_NONE));
}
else
{
solEW.authority = new DataString(ewSol.sHumanReadable);
solEW.processingState = new DataString(org.trinet.jasi.ProcessingState.getLabel(solEW.STATE_NONE));
}
}
if(ewSol.bArchived != 0)
solEW.processingState = new DataString(org.trinet.jasi.ProcessingState.getLabel(solEW.STATE_FINAL));
solEW.validFlag = new DataLong((ewSol.iDubiocity == 0)?1:0);
if(ewSol.ewOrigin != null)
{
solEW.comment = new DataString(ewSol.ewOrigin.sComment);
solEW.datetime = new DataDouble(ewSol.ewOrigin.tOrigin);
solEW.depth = new DataDouble(ewSol.ewOrigin.dDepth);
solEW.depthFixed = new DataBoolean((ewSol.ewOrigin.iFixedDepth != 0)?true:false);
solEW.distance = new DataDouble(ewSol.ewOrigin.dDmin);
//solEW.errorHoriz = new DataDouble(ewSol.ewOrigin.dEr?);
solEW.errorLat = new DataDouble(ewSol.ewOrigin.dErLat);
solEW.errorLon = new DataDouble(ewSol.ewOrigin.dErLon);
solEW.errorVert = new DataDouble(ewSol.ewOrigin.dErZ);
// ? solEW.errorTime = new DataDouble(ewSol.ewOrigin.dRMS);
if(ewSol.ewOrigin.sHumanReadable.charAt(3) == '-')
{
// we have a standardized author string
solEW.authority = new DataString(ewSol.ewOrigin.sHumanReadable.substring(0,2));
if(solEW.eventAuthority == null)
solEW.eventAuthority = new DataString(ewSol.sHumanReadable.substring(0,2));
if(solEW.processingState == null)
{
if(ewSol.ewOrigin.sHumanReadable.indexOf("Automatic") != -1)
solEW.processingState = new DataString(org.trinet.jasi.ProcessingState.getLabel(solEW.STATE_AUTOMATIC));
else if(ewSol.ewOrigin.sHumanReadable.indexOf("Reviewed") != -1)
solEW.processingState = new DataString(org.trinet.jasi.ProcessingState.getLabel(solEW.STATE_HUMAN));
else
solEW.processingState = new DataString(org.trinet.jasi.ProcessingState.getLabel(solEW.STATE_NONE));
}
}
else
{
if(solEW.eventAuthority == null)
solEW.eventAuthority = new DataString(ewSol.sHumanReadable.substring(0,2));
solEW.authority = new DataString(ewSol.ewOrigin.sHumanReadable);
if(solEW.processingState == null)
solEW.processingState = new DataString(org.trinet.jasi.ProcessingState.getLabel(solEW.STATE_NONE));
}
solEW.source = new DataString(ewSol.ewOrigin.sHumanReadable);
solEW.gap = new DataDouble(ewSol.ewOrigin.iGap);
solEW.lat = new DataDouble(ewSol.ewOrigin.dLat);
solEW.lon = new DataDouble(ewSol.ewOrigin.dLon);
solEW.magnitude = MagnitudeEW.EWMag2MagEW(ewSol.ewOrigin.ewMagnitude);
solEW.rms = new DataDouble(ewSol.ewOrigin.dRMS);
solEW.type = new DataString("H");
solEW.usedReadings = new DataLong(ewSol.ewOrigin.iUsedPh);
solEW.vertDatum = new DataString("km");
solEW.comment = new DataString(ewSol.ewOrigin.sComment);
} // end if ewSol.ewOrigin != null
solEW.ewsSolution = ewSol;
return(solEW);
}
protected Vector EWSolutionList2SolutionEWList(Vector vEWSolutionList)
{
Vector vSolutionEWList = new Vector(vEWSolutionList.size());
int iDebugTotal; // DK CLEANUP WE ARE USING THIS TO LIMIT THE NUMBER
// OF EVENTS IN LIST TO 200.
iDebugTotal = (vEWSolutionList.size() < 200)?vEWSolutionList.size():200;
for(int i=0; i < iDebugTotal; i++)
{
vSolutionEWList.addElement((Object)EWSol2SolEW((EWSolution)vEWSolutionList.get(i)));
}
return(vSolutionEWList);
}
protected Solution[] getByCriteria(double start, double stop, int iValidFlag, int iEventType,
int iProcessingState, Connection IN_conn)
{
// Create a temporary EWSolution object for use in retrieving the list
EWSolution tempEWS = new EWSolution();
if(IN_conn != null)
tempEWS.SetConnection(IN_conn);
// Declare a Vector pointer to hold the list
Vector vEWSolutionList;
// Set the criteria params
tempEWS.starttime = (int)start;
tempEWS.endtime = (int)stop;
if(iEventType != -1)
tempEWS.eventtype = iEventType;
// fetch the data
vEWSolutionList = tempEWS.ReadList();
if(vEWSolutionList == null || vEWSolutionList.size() == 0)
return(null);
else
{
Vector vSolutionEWList = EWSolutionList2SolutionEWList(vEWSolutionList);
// Filter out events based upon validity(if the appropriate flag is set)
if(iValidFlag != -1)
{
for(int i=0; i < vSolutionEWList.size(); i++)
{
if(((SolutionEW) vSolutionEWList.get(i)).validFlag.longValue() != iValidFlag)
{
vSolutionEWList.remove(i);
i--;
}
}
}
// Filter out events based upon processing state(if the appropriate flag is set)
if(iProcessingState != -1)
{
for(int i=0; i < vSolutionEWList.size(); i++)
{
if( (ProcessingState.getIndexOfLabel(((SolutionEW) vSolutionEWList.get(i)).processingState.toString()))
!= iProcessingState)
{
vSolutionEWList.remove(i);
i--;
}
}
}
Solution[] SolutionArray = new Solution[vSolutionEWList.size()];
System.arraycopy(vSolutionEWList.toArray(), 0, SolutionArray, 0, vSolutionEWList.size());
return(SolutionArray);
}
} // end protected SolutionEW::getByCriteria()
protected Solution getById(Connection IN_conn, long id, int iValidEvent)
{
// Create a temporary EWSolution object for use in retrieving the solution
EWSolution tempEWS = new EWSolution();
if(IN_conn != null)
tempEWS.SetConnection(IN_conn);
// Set the idEvent, used to retrieve the Event
tempEWS.idEvent = id;
// Grab the Event
tempEWS.Read();
if(iValidEvent == EW_FLAG_EVENTS_VALID_ONLY)
if(tempEWS.iDubiocity != 0)
{
// Event is not valid, and VALID-ONLY was requested
return(null);
}
else if(iValidEvent == EW_FLAG_EVENTS_INVALID_ONLY)
if(tempEWS.iDubiocity == 0)
{
// Event is valid, and INVALID-ONLY was requested
return(null);
}
// Get the preferred info (origin,mag,mech)
tempEWS.ReadPreferred();
// Get the preferred origin info
if(tempEWS.idOrigin > 0)
{
tempEWS.ewOrigin = new EWOrigin();
tempEWS.ewOrigin.idOrigin = tempEWS.idOrigin;
tempEWS.ewOrigin.Read();
// Get the list of Origins for this event
tempEWS.ewOrigin.idEvent = id;
tempEWS.vOriginList = tempEWS.ewOrigin.ReadList();
// Get the list of Magnitudes for the preferred origin
tempEWS.ewOrigin.ewMagnitude = new EWMagnitude();
tempEWS.ewOrigin.ewMagnitude.idMag = tempEWS.idMag;
tempEWS.ewOrigin.ewMagnitude.Read();
tempEWS.ewOrigin.ewMagnitude.idOrigin = tempEWS.idOrigin;
tempEWS.ewOrigin.vMagList = tempEWS.ewOrigin.ewMagnitude.ReadList();
// DK DEBUG Shouldn't we be grabbing the preferred mag info somewhere here??
}
return((Solution)EWSol2SolEW(tempEWS));
} // end protected SolutionEW::getById()
public Solution[] getByProperties (Connection conn,
EventSelectionProperties props)
{
// Derived from the SolutionTN::getByProperties() function
int iValidFlag = EW_FLAG_EVENTS_ALL;
int iEventType = EventTypeMapEW.EW_FLAG_ET_ALL;
int iProcessingState = EW_FLAG_P_STATE_ALL;
String str;
// Get time from properties. This will handle both "absolute" and "relative"
// time definitions
org.trinet.util.TimeSpan span = props.getTimeSpan();
double start = span.getStart();
double stop = span.getEnd();
// validFlag
str = props.getProperty("validFlag");
if (str != null)
{
if(str.equalsIgnoreCase("TRUE"))
iValidFlag = EW_FLAG_EVENTS_VALID_ONLY;
else
iValidFlag = EW_FLAG_EVENTS_INVALID_ONLY;
}
// dummyFlag
str = props.getProperty("dummyFlag");
if (str != null)
{
if (props.getProperty("dummyFlag").equalsIgnoreCase("TRUE"))
iValidFlag = 0;
else
iValidFlag = 1;
}
// Event types (e.g. "local", "sonic", etc.) - these must be OR'ed
// These properties have the form: SelectAttribute_trigger = FALSE
// There may not be a property for each type, thus the check for != null.
String typeChoice[] = EventTypeMap.getEventTypeArray();
for (int i = 0; i< typeChoice.length; i++)
{
str = props.getProperty(EventSelectionProperties.prefix+typeChoice[i]);
if (str != null && str.equalsIgnoreCase("TRUE"))
{
iEventType = EventTypeMapEW.EWEventTypes[i];
break;
}
}
// Processing States
String label[] = ProcessingState.getLabelArray();
for (int i = 0; i< label.length; i++)
{
str = props.getProperty(EventSelectionProperties.prefix+label[i]);
if (str != null && str.equalsIgnoreCase("TRUE"))
{
iProcessingState = i;
break;
}
}
return(getByCriteria(start, stop, iValidFlag, iEventType,
iProcessingState, null));
} // end SolutionEW::getByProperties()
long GetidOrigin()
{
return(idOrigin);
}
public void clearLocationAttributes ()
{
// reset idOrigin since this is a new solution
this.idOrigin = 0;
super.clearLocationAttributes();
}
public boolean equals(Object obj)
{
if(obj instanceof SolutionEW)
{
return(this.id == ((SolutionEW)obj).id);
}
else
{
return(super.equals(obj));
}
}
public long getNextID()
{
return(-1); // DK Not implemented
// TN version should look like:
// return(SeqIds.getNextSeq(CONNECTION, "EVSEQ"));
}
} // end SolutionEW
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -