From c4212d6252e2d510cde1ad76b12d8d324bc5d02a Mon Sep 17 00:00:00 2001 From: Dave Hladky Date: Thu, 3 Apr 2014 16:55:12 -0500 Subject: [PATCH] Issue #2940 Better error message for bad XMRG config in FFMP Former-commit-id: a0a40854598336fe8de63f5a0b26c35cf4242f9d [formerly dc3b99cbf4aa7574cfa4b31bcd62cf4b6fb22c7e] [formerly 2f4c0cd3647476a642f85aae84a395de9d5cd363] [formerly 82be445e970d1b29d6504d1db6c9a4ba679cb5df [formerly 2f4c0cd3647476a642f85aae84a395de9d5cd363 [formerly dfa3f534b96852975afcd13a6bed653b0f3b8f40]]] Former-commit-id: 82be445e970d1b29d6504d1db6c9a4ba679cb5df Former-commit-id: 5da6cb0fddc03077fb72a39deee5bf043b26cdcb [formerly 3df985a26abe7e21ea580288ef08b600578ca48e] Former-commit-id: 0ea0313cb8a902b375c83e4f71d5eb7beaa79cd7 --- .../uf/edex/plugin/ffmp/FFMPGenerator.java | 5 +-- .../plugin/ffmp/common/FFMPProcessor.java | 32 +++++++++++++++---- 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/edexOsgi/com.raytheon.uf.edex.plugin.ffmp/src/com/raytheon/uf/edex/plugin/ffmp/FFMPGenerator.java b/edexOsgi/com.raytheon.uf.edex.plugin.ffmp/src/com/raytheon/uf/edex/plugin/ffmp/FFMPGenerator.java index 3d3fca512b..071eaebb8b 100644 --- a/edexOsgi/com.raytheon.uf.edex.plugin.ffmp/src/com/raytheon/uf/edex/plugin/ffmp/FFMPGenerator.java +++ b/edexOsgi/com.raytheon.uf.edex.plugin.ffmp/src/com/raytheon/uf/edex/plugin/ffmp/FFMPGenerator.java @@ -136,6 +136,7 @@ import com.raytheon.uf.edex.plugin.ffmp.common.FFTIRatioDiff; * re-query with every update. * Jul 15, 2013 2184 dhladky Remove all HUC's for storage except ALL * Aug 30, 2013 2298 rjpeter Make getPluginName abstract + * Apr 24, 2014 2940 dhladky Prevent storage of bad records. * * * @author dhladky @@ -697,10 +698,10 @@ public class FFMPGenerator extends CompositeProductGenerator implements FFMPProcessor ffmp = new FFMPProcessor(config, generator, ffmpRec, template); ffmpRec = ffmp.processFFMP(ffmpProduct); - ffmpRec.constructDataURI(); - + if (ffmpRec != null) { + ffmpRec.constructDataURI(); persistRecord(ffmpRec); processDataContainer(ffmpRec, siteKey); // Now that we have the data container, diff --git a/edexOsgi/com.raytheon.uf.edex.plugin.ffmp/src/com/raytheon/uf/edex/plugin/ffmp/common/FFMPProcessor.java b/edexOsgi/com.raytheon.uf.edex.plugin.ffmp/src/com/raytheon/uf/edex/plugin/ffmp/common/FFMPProcessor.java index c996d429b3..be1166159b 100644 --- a/edexOsgi/com.raytheon.uf.edex.plugin.ffmp/src/com/raytheon/uf/edex/plugin/ffmp/common/FFMPProcessor.java +++ b/edexOsgi/com.raytheon.uf.edex.plugin.ffmp/src/com/raytheon/uf/edex/plugin/ffmp/common/FFMPProcessor.java @@ -37,6 +37,7 @@ import org.opengis.referencing.crs.ProjectedCRS; import org.opengis.referencing.datum.PixelInCell; import org.opengis.referencing.operation.TransformException; +import com.raytheon.uf.common.dataplugin.exception.MalformedDataException; import com.raytheon.uf.common.dataplugin.ffmp.FFMPBasin; import com.raytheon.uf.common.dataplugin.ffmp.FFMPBasinData; import com.raytheon.uf.common.dataplugin.ffmp.FFMPDataContainer; @@ -260,9 +261,7 @@ public class FFMPProcessor { try { xmrg = (XmrgFile) config.getSourceData( source.getSourceName()).get(dataKey); - this.extent = getExtents(source.getHrapGridFactor()); - setHRAPSubGrid(extent, source.getHrapGridFactor()); - xmrgData = xmrg.getData(extent); + xmrgData = getXMRGData(); } catch (Exception e) { fireBadConfigMessage(type, e); return; @@ -610,6 +609,7 @@ public class FFMPProcessor { } catch (Exception e) { + ffmpRec = null; throw new Exception( "FFMPProcessor: Failed to process source domain: " + source.getSourceName() + ": " @@ -704,6 +704,7 @@ public class FFMPProcessor { } } catch (Exception e) { + ffmpRec = null; throw new Exception("FFMPProcessor: Failed to process source: " + source.getSourceName()); } @@ -735,9 +736,7 @@ public class FFMPProcessor { try { xmrg = (XmrgFile) config.getSourceData(source.getSourceName()).get( dataKey); - this.extent = getExtents(source.getHrapGridFactor()); - setHRAPSubGrid(extent, source.getHrapGridFactor()); - xmrgData = xmrg.getData(extent); + xmrgData = getXMRGData(); recdate = xmrg.getHeader().getValidDate(); } catch (Exception e) { fireBadConfigMessage(type, e); @@ -804,6 +803,7 @@ public class FFMPProcessor { } } catch (Exception e) { + ffmpRec = null; statusHandler.error("Unable to process VGB: "+type, e); } } @@ -1820,8 +1820,26 @@ public class FFMPProcessor { sb.append("Record: " + gribRec.getDataURI() + " \n"); } } - + // null out the record it is garbage. + ffmpRec = null; statusHandler.handle(Priority.ERROR, sb.toString(), e); } + /** + * Gets the XMRG data array + * + * @return + */ + private short[][] getXMRGData() throws Exception { + + this.extent = getExtents(source.getHrapGridFactor()); + setHRAPSubGrid(extent, source.getHrapGridFactor()); + if (xmrg.getHrapExtent() != null) { + xmrgData = xmrg.getData(extent); + } else { + throw new MalformedDataException("The XMRG data is malformed or the file is non-readable."); + } + + return xmrgData; + } }