From dd0b4bae3d3b5f29bafb9378221db4a27f5a58ba Mon Sep 17 00:00:00 2001 From: Richard Peter Date: Mon, 15 Oct 2012 18:08:25 -0500 Subject: [PATCH] Issue #1257: Fix NSharp point retrieval Change-Id: I50e27a10c987dfb373c8431bff7a18f50563f4b4 Former-commit-id: ca878b536fc9dec13117b88432f562ca678015b7 [formerly 25fe0aef5b89e88fd4e34aebb6ebdf742f5c6bc3] [formerly ca878b536fc9dec13117b88432f562ca678015b7 [formerly 25fe0aef5b89e88fd4e34aebb6ebdf742f5c6bc3] [formerly 3fa2a8b894387e7ae60c61435c37bfb2e4455113 [formerly 3a6ee9b778035d62285be6d1e5ff08f240ba8c51]]] Former-commit-id: 3fa2a8b894387e7ae60c61435c37bfb2e4455113 Former-commit-id: 13bffbc2024a0a68ebd88259657040487e69bc79 [formerly d434d967dd89006ecdf4c0672eabb011cf9d431f] Former-commit-id: a8b4b8ac8be66ab03125c9f679e550c835025ac1 --- .../edex/uengine/tasks/profile/PointIn.java | 43 ++++++++++++------- 1 file changed, 27 insertions(+), 16 deletions(-) diff --git a/ncep/gov.noaa.nws.ncep.edex.uengine/src/gov/noaa/nws/ncep/edex/uengine/tasks/profile/PointIn.java b/ncep/gov.noaa.nws.ncep.edex.uengine/src/gov/noaa/nws/ncep/edex/uengine/tasks/profile/PointIn.java index 95c445317e..c6e367536f 100644 --- a/ncep/gov.noaa.nws.ncep.edex.uengine/src/gov/noaa/nws/ncep/edex/uengine/tasks/profile/PointIn.java +++ b/ncep/gov.noaa.nws.ncep.edex.uengine/src/gov/noaa/nws/ncep/edex/uengine/tasks/profile/PointIn.java @@ -22,6 +22,7 @@ package gov.noaa.nws.ncep.edex.uengine.tasks.profile; import java.awt.Point; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; 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 Map> dataStoreMap = dao .getDataStoreMap(objList); - int rvalIndex = 0; + int totalRec = 0; try { - // list for data records retrieved - List dataRecords = new ArrayList( - objects.length); + // map of IPersistable to its IDataRecord. Since objects not + // guaranteed to be in file order have to recreate order after + // retrievals done + Map dataRecords = new HashMap( + (int) (objects.length * 1.25) + 1); for (Map.Entry> entry : dataStoreMap .entrySet()) { @@ -229,8 +232,13 @@ public class PointIn {// extends ScriptTask { // retrieve data from this data store IDataRecord[] records = dataStore.retrieveGroups(groups, pointRequest); - for (IDataRecord rec : records) { - dataRecords.add(rec); + int index = 0; + 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; - for (IDataRecord record : dataRecords) { - float[] data = (float[]) record.getDataObject(); - // note; data.length should be the same as points.size() - // if(k==0) - // System.out.println("data[] szie="+data.length+ - // " parameter group size="+dr.length); - totalRec += data.length; - for (int pointIndex = 0; pointIndex < data.length; pointIndex++) { - float[] pData = rval.get(pointIndex); - pData[recordIndex] = data[pointIndex]; + for (IPersistable persist : objList) { + IDataRecord record = dataRecords.get(persist); + if (record != null) { + float[] data = (float[]) record.getDataObject(); + // note; data.length should be the same as points.size() + // if(k==0) + // System.out.println("data[] szie="+data.length+ + // " parameter group size="+dr.length); + totalRec += data.length; + for (int pointIndex = 0; pointIndex < data.length; pointIndex++) { + float[] pData = rval.get(pointIndex); + pData[recordIndex++] = data[pointIndex]; + } } } System.out.println("total points = " + points.size()