Issue #1257: Fix NSharp point retrieval
Change-Id: I50e27a10c987dfb373c8431bff7a18f50563f4b4 Former-commit-id: 3a6ee9b778035d62285be6d1e5ff08f240ba8c51
This commit is contained in:
parent
f8f1c4b67a
commit
25fe0aef5b
1 changed files with 27 additions and 16 deletions
|
@ -22,6 +22,7 @@ package gov.noaa.nws.ncep.edex.uengine.tasks.profile;
|
||||||
|
|
||||||
import java.awt.Point;
|
import java.awt.Point;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
@ -206,13 +207,15 @@ public class PointIn {// extends ScriptTask {
|
||||||
// arbitrary list of IPersistable could be in any number of data stores
|
// arbitrary list of IPersistable could be in any number of data stores
|
||||||
Map<IDataStore, List<IPersistable>> dataStoreMap = dao
|
Map<IDataStore, List<IPersistable>> dataStoreMap = dao
|
||||||
.getDataStoreMap(objList);
|
.getDataStoreMap(objList);
|
||||||
int rvalIndex = 0;
|
|
||||||
int totalRec = 0;
|
int totalRec = 0;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// list for data records retrieved
|
// map of IPersistable to its IDataRecord. Since objects not
|
||||||
List<IDataRecord> dataRecords = new ArrayList<IDataRecord>(
|
// guaranteed to be in file order have to recreate order after
|
||||||
objects.length);
|
// retrievals done
|
||||||
|
Map<IPersistable, IDataRecord> dataRecords = new HashMap<IPersistable, IDataRecord>(
|
||||||
|
(int) (objects.length * 1.25) + 1);
|
||||||
|
|
||||||
for (Map.Entry<IDataStore, List<IPersistable>> entry : dataStoreMap
|
for (Map.Entry<IDataStore, List<IPersistable>> entry : dataStoreMap
|
||||||
.entrySet()) {
|
.entrySet()) {
|
||||||
|
@ -229,8 +232,13 @@ public class PointIn {// extends ScriptTask {
|
||||||
// retrieve data from this data store
|
// retrieve data from this data store
|
||||||
IDataRecord[] records = dataStore.retrieveGroups(groups,
|
IDataRecord[] records = dataStore.retrieveGroups(groups,
|
||||||
pointRequest);
|
pointRequest);
|
||||||
for (IDataRecord rec : records) {
|
int index = 0;
|
||||||
dataRecords.add(rec);
|
for (IPersistable persist : persistList) {
|
||||||
|
if (index < records.length) {
|
||||||
|
dataRecords.put(persist, records[index++]);
|
||||||
|
} else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -240,16 +248,19 @@ public class PointIn {// extends ScriptTask {
|
||||||
}
|
}
|
||||||
|
|
||||||
int recordIndex = 0;
|
int recordIndex = 0;
|
||||||
for (IDataRecord record : dataRecords) {
|
for (IPersistable persist : objList) {
|
||||||
float[] data = (float[]) record.getDataObject();
|
IDataRecord record = dataRecords.get(persist);
|
||||||
// note; data.length should be the same as points.size()
|
if (record != null) {
|
||||||
// if(k==0)
|
float[] data = (float[]) record.getDataObject();
|
||||||
// System.out.println("data[] szie="+data.length+
|
// note; data.length should be the same as points.size()
|
||||||
// " parameter group size="+dr.length);
|
// if(k==0)
|
||||||
totalRec += data.length;
|
// System.out.println("data[] szie="+data.length+
|
||||||
for (int pointIndex = 0; pointIndex < data.length; pointIndex++) {
|
// " parameter group size="+dr.length);
|
||||||
float[] pData = rval.get(pointIndex);
|
totalRec += data.length;
|
||||||
pData[recordIndex] = data[pointIndex];
|
for (int pointIndex = 0; pointIndex < data.length; pointIndex++) {
|
||||||
|
float[] pData = rval.get(pointIndex);
|
||||||
|
pData[recordIndex++] = data[pointIndex];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
System.out.println("total points = " + points.size()
|
System.out.println("total points = " + points.size()
|
||||||
|
|
Loading…
Add table
Reference in a new issue