Issue #1257: Fix NSharp point retrieval

Change-Id: I50e27a10c987dfb373c8431bff7a18f50563f4b4

Former-commit-id: 3a6ee9b778035d62285be6d1e5ff08f240ba8c51
This commit is contained in:
Richard Peter 2012-10-15 18:08:25 -05:00
parent f8f1c4b67a
commit 25fe0aef5b

View file

@ -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()