From b6fab0df3012787f08baf1267aa8d426c03ccfb9 Mon Sep 17 00:00:00 2001 From: Michael Gamazaychikov Date: Tue, 3 Mar 2015 09:37:39 -0500 Subject: [PATCH 1/2] ASM #629 - GFE: when runProcedure terminates unexpectedly locks remain in gfelocktable. Change-Id: I5772661758a26c47019c3939ceff73ca0eb6f50e Former-commit-id: 9db91abd8a0d41524dede341b3b55bc745a1136d [formerly ab0f7f0f627ab3926a219940f1267dc460e74e14] Former-commit-id: 6897cfd7b9fdba29a8149e78f5c52c9520704733 --- .../res/spring/gfe-request.xml | 1 - .../com.raytheon.edex.plugin.gfe.properties | 2 +- .../edex/plugin/gfe/db/dao/GFELockDao.java | 32 +-- .../server/lock/ClearGfeOrphanedLocks.java | 201 +++++++----------- .../plugin/gfe/server/lock/LockManager.java | 20 +- 5 files changed, 90 insertions(+), 166 deletions(-) diff --git a/edexOsgi/com.raytheon.edex.plugin.gfe/res/spring/gfe-request.xml b/edexOsgi/com.raytheon.edex.plugin.gfe/res/spring/gfe-request.xml index dc6937d1e8..40743f0f49 100644 --- a/edexOsgi/com.raytheon.edex.plugin.gfe/res/spring/gfe-request.xml +++ b/edexOsgi/com.raytheon.edex.plugin.gfe/res/spring/gfe-request.xml @@ -235,7 +235,6 @@ - diff --git a/edexOsgi/com.raytheon.edex.plugin.gfe/resources/com.raytheon.edex.plugin.gfe.properties b/edexOsgi/com.raytheon.edex.plugin.gfe/resources/com.raytheon.edex.plugin.gfe.properties index 2ffac760e6..d0872947f2 100644 --- a/edexOsgi/com.raytheon.edex.plugin.gfe/resources/com.raytheon.edex.plugin.gfe.properties +++ b/edexOsgi/com.raytheon.edex.plugin.gfe/resources/com.raytheon.edex.plugin.gfe.properties @@ -14,5 +14,5 @@ purge.svcbu.logs.cron=0+30+0+*+*+? purge.gfe.products.isc.cron=0+45+0+*+*+? purge.gfe.products.atbl.cron=0+50+0+*+*+? -# Interval at which the gfe orphaned locks are cleared +# Interval at which gfe orphaned locks are cleared clear.gfe.orphaned.locks.cron = 0+0/10+*+*+*+? diff --git a/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/db/dao/GFELockDao.java b/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/db/dao/GFELockDao.java index 03bf0a5808..a7b3cd2178 100644 --- a/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/db/dao/GFELockDao.java +++ b/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/db/dao/GFELockDao.java @@ -34,6 +34,7 @@ import org.hibernate.StatelessSession; import org.hibernate.Transaction; import com.raytheon.uf.common.dataplugin.gfe.db.objects.ParmID; +//import com.raytheon.uf.common.dataplugin.gfe.db.objects.DatabaseID; import com.raytheon.uf.common.dataplugin.gfe.server.lock.Lock; import com.raytheon.uf.common.dataplugin.gfe.server.lock.LockTable; import com.raytheon.uf.common.message.WsId; @@ -53,7 +54,7 @@ import com.raytheon.uf.edex.database.dao.DaoConfig; * 04/19/13 #1949 rjpeter Normalized GFE Database. * 06/20/13 #2127 rjpeter Set session to read only. * 10/16/2014 3454 bphillip Upgrading to Hibernate 4 - * 01/07/15 629 mgamazaychikov Add getAllLocks method. + * 03/03/15 629 mgamazaychikov Add getAllLocks method. * * * @author bphillip @@ -195,8 +196,8 @@ public class GFELockDao extends CoreDao { } @SuppressWarnings("unchecked") - public Map getAllLocks() throws DataAccessLayerException{ - Map lockMap = new HashMap(); + public List getAllLocks(final String siteId) + throws DataAccessLayerException { Session sess = null; Transaction tx = null; @@ -204,24 +205,12 @@ public class GFELockDao extends CoreDao { sess = getSession(); sess.setDefaultReadOnly(true); tx = sess.beginTransaction(); - Query query = sess - .createQuery("FROM Lock"); + .createQuery("FROM Lock WHERE parmId in (SELECT id FROM ParmID WHERE dbId in (SELECT id FROM DatabaseID WHERE siteId = ?))"); + query.setParameter(0, siteId); List locks = query.list(); tx.commit(); - - // populate Lock table - for (Lock lock : locks) { - WsId wid = lock.getWsId(); - ParmID pid = lock.getParmId(); - LockTable lockTable = lockMap.get(pid); - if (lockTable == null) { - lockTable = new LockTable(pid, new ArrayList(), wid); - lockMap.put(pid, lockTable); - } - lockTable.addLock(lock); - } - return lockMap; + return locks; } catch (Exception e) { if (tx != null) { try { @@ -230,16 +219,13 @@ public class GFELockDao extends CoreDao { logger.error("Error occurred rolling back transaction", e1); } } - - throw new DataAccessLayerException( - "Unable to look up locks ", e); + throw new DataAccessLayerException("Unable to look up locks for site " + siteId, e); } finally { if (sess != null) { try { sess.close(); } catch (Exception e) { - logger.error( - "Error occurred closing database session", e); + logger.error("Error occurred closing database session", e); } } } diff --git a/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/lock/ClearGfeOrphanedLocks.java b/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/lock/ClearGfeOrphanedLocks.java index af7d696396..85bbe5253c 100644 --- a/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/lock/ClearGfeOrphanedLocks.java +++ b/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/lock/ClearGfeOrphanedLocks.java @@ -22,21 +22,22 @@ package com.raytheon.edex.plugin.gfe.server.lock; import java.util.ArrayList; import java.util.Date; import java.util.HashSet; -import java.util.Iterator; import java.util.List; import java.util.Set; import com.raytheon.edex.plugin.gfe.server.IFPServer; -import com.raytheon.edex.plugin.gfe.server.lock.LockManager; +import com.raytheon.edex.plugin.gfe.util.SendNotifications; +import com.raytheon.uf.common.dataplugin.gfe.exception.GfeException; import com.raytheon.uf.common.dataplugin.gfe.server.lock.Lock; import com.raytheon.uf.common.dataplugin.gfe.server.lock.LockTable; import com.raytheon.uf.common.dataplugin.gfe.server.lock.LockTable.LockMode; +import com.raytheon.uf.common.dataplugin.gfe.server.message.ServerResponse; +import com.raytheon.uf.common.dataplugin.gfe.server.notify.GfeNotification; +import com.raytheon.uf.common.dataplugin.gfe.server.notify.LockNotification; import com.raytheon.uf.common.dataplugin.gfe.server.request.LockRequest; +import com.raytheon.uf.common.message.WsId; import com.raytheon.uf.common.status.IUFStatusHandler; import com.raytheon.uf.common.status.UFStatus; -import com.raytheon.uf.common.status.UFStatus.Priority; -import com.raytheon.uf.common.time.TimeRange; -import com.raytheon.uf.edex.core.EDEXUtil; import com.raytheon.uf.edex.esb.camel.jms.IBrokerConnectionsProvider; /** @@ -50,7 +51,7 @@ import com.raytheon.uf.edex.esb.camel.jms.IBrokerConnectionsProvider; * * Date Ticket# Engineer Description * ------------ ---------- ----------- -------------------------- - * Jan 07, 2015 629 mgamazaychikov Initial creation + * Mar 03, 2015 629 mgamazaychikov Initial creation * * * @@ -62,148 +63,90 @@ public class ClearGfeOrphanedLocks { private static IBrokerConnectionsProvider provider; private static final transient IUFStatusHandler statusHandler = UFStatus .getHandler(ClearGfeOrphanedLocks.class); - public final String CAVE = "CAVE"; public static void setProvider(IBrokerConnectionsProvider provider) { ClearGfeOrphanedLocks.provider = provider; } - private Set breakAllLocks(List lockTables, - LockManager lockMgr) { - Set inactives = new HashSet(); - for (LockTable lockTable : lockTables) { - for (Lock lock : lockTable.getLocks()) { - TimeRange tr = lock.getTimeRange(); - List lreq = new ArrayList(); - lreq.add(new LockRequest(lock.getParmId(), tr, + private void breakLocks(Set clients, List lockList, + LockManager lockMgr, String siteId) { + boolean foundOrpanedLocks = false; + List lreq = new ArrayList(); + StringBuilder sb = new StringBuilder(); + for (Lock lock : lockList) { + String lockWsid = lock.getWsId().toString(); + if (!clients.contains(lockWsid)) { + foundOrpanedLocks = true; + List lst = new ArrayList(); + lst.add(lock); + // Inactive clients found + lreq.add(new LockRequest(lock.getParmId(), lock.getTimeRange(), LockMode.BREAK_LOCK)); - lockMgr.requestLockChange(lreq, lock.getWsId()); - if (!inactives.contains(lock.getWsId().toPrettyString()) - && !inactives.contains(lock.getParmId().toString())) { - String message = " Breaking orphaned lock on " - + lock.getParmId().toString() + " owned by " - + lock.getWsId().toPrettyString() + "."; - inactives.add(message); - } + sb.append(" Breaking orphaned lock for site " + siteId + " on " + + lock.getParmId().toString() + " owned by " + + lock.getWsId().toPrettyString() + "."); } } - return inactives; - } - - private Set breakLocks(Set clients, - List lockTables, LockManager lockMgr) { - Set inactives = new HashSet(); - for (LockTable lockTable : lockTables) { - for (Lock lock : lockTable.getLocks()) { - String lockedWsid = lock.getWsId().toString(); - for (String client : clients) { - if (!lockedWsid.equals(client)) { - // Inactive CAVE clients found - break its lock - List lreq = new ArrayList(); - lreq.add(new LockRequest(lock.getParmId(), lock - .getTimeRange(), LockMode.BREAK_LOCK)); - lockMgr.requestLockChange(lreq, lock.getWsId()); - if (!inactives - .contains(lock.getWsId().toPrettyString()) - && !inactives.contains(lock.getParmId() - .toString())) { - String message = " Breaking orphaned lock on " - + lock.getParmId().toString() - + " owned by " - + lock.getWsId().toPrettyString() + "."; - inactives.add(message); - } + if (foundOrpanedLocks) { + statusHandler.info(sb.toString()); + WsId requestor = new WsId(null, null, "ClearGfeOrphanedLocks"); + ServerResponse> sr = lockMgr.requestLockChange( + lreq, requestor); + if (sr.isOkay()) { + try { + List lockTables = sr.getPayload(); + List notes = new ArrayList( + lockTables.size()); + for (LockTable table : lockTables) { + notes.add(new LockNotification(table, siteId)); } + ServerResponse notifyResponse = SendNotifications + .send(notes); + if (!notifyResponse.isOkay()) { + statusHandler.error(notifyResponse.message()); + } + + // send out grid update notifications + notifyResponse = SendNotifications.send(sr.getNotifications()); + if (!notifyResponse.isOkay()) { + statusHandler.error(notifyResponse.message()); + } + } catch (Exception e) { + statusHandler.error("Error sending lock notification", e); } - } + } else { + statusHandler.error(sr.message()); + } + return; + } else { + statusHandler.info(" No orphaned locks found for site " + siteId + + "."); + return; } - return inactives; } - @SuppressWarnings("unchecked") public void clearLocksCron() throws Exception { - - Date executionTime = new Date(System.currentTimeMillis()); - if (statusHandler.isPriorityEnabled(Priority.INFO)) { - String msg = "Started at " + executionTime; - statusHandler.info(msg); - } - + statusHandler + .info("Started at " + new Date(System.currentTimeMillis())); Set clients = new HashSet(provider.getConnections()); - Set inactives = new HashSet(); - - String siteId = EDEXUtil.getEdexSite(); - IFPServer ifpServer = IFPServer.getActiveServer(siteId); - if (ifpServer == null) { - if (statusHandler.isPriorityEnabled(Priority.INFO)) { - String msg = "No active IFPServer for site " + siteId; - statusHandler.info(msg); - return; - } + if (IFPServer.getActiveServers().size() == 0) { + statusHandler.info("No active IFPServer found."); + return; } - LockManager lockMgr = ifpServer.getLockMgr(); - - List lockTables = (List) lockMgr.getAllLocks() - .getPayload(); - - /* - * There are no locks in the db. - */ - if (lockTables.size() == 0) { - if (statusHandler.isPriorityEnabled(Priority.INFO)) { - String msg = "No locks found for site " + siteId; - statusHandler.info(msg); - return; - } - } - - /* - * Filter out non-CAVE clients. - */ - for (Iterator iterator = clients.iterator(); iterator.hasNext();) { - String client = iterator.next(); - if (!client.contains(CAVE)) { - iterator.remove(); - } - } - - /* - * If there are no active CAVE clients but the locks exist, they all - * must be orphaned -> break the locks. - */ - if (clients.isEmpty() && lockTables.size() > 0) { - inactives = breakAllLocks(lockTables, lockMgr); - if (statusHandler.isPriorityEnabled(Priority.INFO)) { - StringBuilder sb = new StringBuilder(); - for (String in : inactives) { - sb.append(in); - } - statusHandler.info(sb.toString()); - return; - } - } - - /* - * There are active CAVE clients, find orphaned locks and break the - * locks. - */ - inactives = breakLocks(clients, lockTables, lockMgr); - if (inactives.isEmpty()) { - if (statusHandler.isPriorityEnabled(Priority.INFO)) { - String msg = "No orphaned locks found for site " + siteId; - statusHandler.info(msg); - return; - } - } else { - if (statusHandler.isPriorityEnabled(Priority.INFO)) { - StringBuilder sb = new StringBuilder(); - for (String in : inactives) { - sb.append(in); - } - statusHandler.info(sb.toString()); + List ifpServers = IFPServer.getActiveServers(); + for (IFPServer ifps : ifpServers) { + LockManager lockMgr = ifps.getLockMgr(); + String siteId = ifps.getSiteId(); + List lockList; + try { + lockList = (List) lockMgr.getAllLocks(siteId); + // find orphaned locks and break them + breakLocks(clients, lockList, lockMgr, siteId); return; + } catch (GfeException e) { + statusHandler.error("Error retrieving all locks", e); } } } diff --git a/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/lock/LockManager.java b/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/lock/LockManager.java index 7234d37b40..23beafe4aa 100644 --- a/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/lock/LockManager.java +++ b/edexOsgi/com.raytheon.edex.plugin.gfe/src/com/raytheon/edex/plugin/gfe/server/lock/LockManager.java @@ -68,7 +68,7 @@ import com.raytheon.uf.edex.database.DataAccessLayerException; * 06/13/13 #2044 randerso Converted from singleton to instance per * site managed by IFPServer * 10/07/2014 #3684 randerso Restructured IFPServer start up - * 01/07/15 629 mgamazaychikov Add getAllLocks method. + * 03/03/15 629 mgamazaychikov Add getAllLocks method. * * * @author bphillip @@ -909,19 +909,15 @@ public class LockManager { } } - public ServerResponse getAllLocks() { - ServerResponse> sr = new ServerResponse>(); + public List getAllLocks(String siteId) throws GfeException { + List lt = new ArrayList(); try { - List payLoad = null; - Map lockMap = dao.getAllLocks(); - payLoad = new ArrayList(lockMap.size()); - payLoad.addAll(lockMap.values()); - sr.setPayload(payLoad); + lt = dao.getAllLocks(siteId); } catch (Exception e) { - sr.addMessage("Error getting lock tables for"); - sr.setPayload(new ArrayList(0)); + throw new GfeException("Error getting lock tables for site " + + this.siteId + ": " + e.getMessage()); } - - return sr; + return lt; } + } From 4dd189791e11c2fd9e353c66528a360349efadc3 Mon Sep 17 00:00:00 2001 From: "steve.naples" Date: Tue, 3 Mar 2015 21:02:54 +0000 Subject: [PATCH 2/2] ASM #15660 Fixed issues with saving disagg data. Change-Id: I6f0e8b02b7035e9d9614c52718026fce81b2e331 Former-commit-id: 31a79090851faf79c2eda2beda5eced325cbbb0e [formerly 4646f7396153651359624f3dd12660810fe2bf6e] Former-commit-id: 3ecaf0c63467256cf031fd849fa0fa80d5f4fcf4 --- .../viz/mpe/ui/actions/DrawDQCStations.java | 73 +-- .../mpe/ui/actions/OtherPrecipOptions.java | 514 +++++++++--------- .../viz/mpe/ui/actions/SaveLevel2Data.java | 7 +- .../ui/dialogs/EditPrecipStationsDialog.java | 223 ++++---- .../mpe/ui/mouse/MPELegendInputHandler.java | 2 +- .../mpe/ui/rsc/PointPrecipPlotResource.java | 39 +- .../viz/mpe/util/Compute1HrNeighborList.java | 117 ++-- .../raytheon/viz/mpe/util/DailyQcUtils.java | 16 +- .../viz/mpe/util/Delete1hrDisaggValues.java | 27 +- .../com/raytheon/viz/mpe/util/Disagg6Hr.java | 173 +++--- .../viz/mpe/util/DisaggPointMethod.java | 4 +- .../viz/mpe/util/InitPrecipClimo.java | 5 +- .../viz/mpe/util/MeanMonthlyPrecip.java | 4 +- .../viz/mpe/util/Write1hrVals6HrGages.java | 21 +- .../raytheon/viz/mpe/util/WriteQPFGrids.java | 10 +- 15 files changed, 605 insertions(+), 630 deletions(-) diff --git a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/DrawDQCStations.java b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/DrawDQCStations.java index 7b9f897daa..0a9e784fcb 100644 --- a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/DrawDQCStations.java +++ b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/DrawDQCStations.java @@ -64,6 +64,9 @@ import com.raytheon.viz.mpe.ui.rsc.PointPrecipResourceData; import com.raytheon.viz.mpe.ui.rsc.PointTempPlotResource; import com.raytheon.viz.mpe.ui.rsc.PointTempResourceData; import com.raytheon.viz.mpe.util.DailyQcUtils; +import com.raytheon.viz.mpe.util.DailyQcUtils.Pdata; +import com.raytheon.viz.mpe.util.DailyQcUtils.Tdata; +import com.raytheon.viz.mpe.util.DailyQcUtils.Zdata; /** * TODO Add Description @@ -121,13 +124,13 @@ public class DrawDQCStations { int pcpn_time = 0; -// Pdata pdata[] = dqc.pdata; + Pdata pdata[] = DailyQcUtils.pdata; int old_isom = 0; -// Tdata tdata[] = DailyQcUtils.tdata; + Tdata tdata[] = DailyQcUtils.tdata; -// Zdata zdata[] = DailyQcUtils.zdata; + Zdata zdata[] = DailyQcUtils.zdata; public static ColorMap colorMap = new ColorMap(); @@ -311,10 +314,10 @@ public class DrawDQCStations { grids_flag = DailyQcUtils.grids_flag; dflag = DailyQcUtils.dflag; pcpn_time = DailyQcUtils.pcpn_time; -// pdata = DailyQcUtils.pdata; + pdata = DailyQcUtils.pdata; old_isom = DailyQcUtils.old_isom; -// tdata = DailyQcUtils.tdata; -// zdata = DailyQcUtils.zdata; + tdata = DailyQcUtils.tdata; + zdata = DailyQcUtils.zdata; /* * get the token dqc_preprocessor_basetime, the default value is 12Z @@ -732,10 +735,10 @@ public class DrawDQCStations { /* Precipitation period is always 12z-12z. */ if ((pcpn_time < 2) && (pcpn_time_step == 0)) { - ltime.setTime(DailyQcUtils.pdata[pcpn_day].data_time); + ltime.setTime(pdata[pcpn_day].data_time); ltime.add(Calendar.SECOND, -86400); } else { - ltime.setTime(DailyQcUtils.pdata[pcpn_day].data_time); + ltime.setTime(pdata[pcpn_day].data_time); } tbuf.append("Precipitation "); @@ -785,18 +788,18 @@ public class DrawDQCStations { tbuf.append(" ending at 12z"); } - if (DailyQcUtils.pdata[pcpn_day].level == 1) { + if (pdata[pcpn_day].level == 1) { tbuf.append(" - Level 1"); - } else if (DailyQcUtils.pdata[pcpn_day].level == 2) { + } else if (pdata[pcpn_day].level == 2) { tbuf.append(" - Level 2"); } - if (DailyQcUtils.pdata[pcpn_day].used[ptime_pos] == 4) { + if (pdata[pcpn_day].used[ptime_pos] == 4) { tbuf.append(" Saved"); - } else if ((DailyQcUtils.pdata[pcpn_day].used[ptime_pos] == 3) - || (DailyQcUtils.pdata[pcpn_day].used[ptime_pos] == 2)) { + } else if ((pdata[pcpn_day].used[ptime_pos] == 3) + || (pdata[pcpn_day].used[ptime_pos] == 2)) { tbuf.append(" Modified"); - } else if (DailyQcUtils.pdata[pcpn_day].used[ptime_pos] == 1) { + } else if (pdata[pcpn_day].used[ptime_pos] == 1) { tbuf.append(" Not Modified"); } else { tbuf.append(" - No Data"); @@ -811,19 +814,19 @@ public class DrawDQCStations { if (dqcEndingObsTime == 12) { /* Times: 18, 00, 06, 12 */ if (pcpn_time < 1) { - ltime.setTime(DailyQcUtils.zdata[pcpn_day].data_time); + ltime.setTime(zdata[pcpn_day].data_time); ltime.add(Calendar.SECOND, -86400); } else { - ltime.setTime(DailyQcUtils.zdata[pcpn_day].data_time); + ltime.setTime(zdata[pcpn_day].data_time); } } else { /* Times 12, 18, 00, 06 */ if (pcpn_time < 2) { - ltime.setTime(DailyQcUtils.zdata[pcpn_day].data_time); + ltime.setTime(zdata[pcpn_day].data_time); ltime.add(Calendar.SECOND, -86400); } else { - ltime.setTime(DailyQcUtils.zdata[pcpn_day].data_time); + ltime.setTime(zdata[pcpn_day].data_time); } } @@ -883,20 +886,20 @@ public class DrawDQCStations { } - if (DailyQcUtils.zdata[pcpn_day].level[ptime_pos] == 1) { + if (zdata[pcpn_day].level[ptime_pos] == 1) { tbuf.append(" - Level 1"); - } else if (DailyQcUtils.zdata[pcpn_day].level[ptime_pos] == 2) { + } else if (zdata[pcpn_day].level[ptime_pos] == 2) { tbuf.append(" - Level 2"); } - if (DailyQcUtils.zdata[pcpn_day].used[ptime_pos] == 6) { + if (zdata[pcpn_day].used[ptime_pos] == 6) { tbuf.append(" Calculated"); - } else if (DailyQcUtils.zdata[pcpn_day].used[ptime_pos] == 4) { + } else if (zdata[pcpn_day].used[ptime_pos] == 4) { tbuf.append(" Saved"); - } else if ((DailyQcUtils.zdata[pcpn_day].used[ptime_pos] == 3) - || (DailyQcUtils.zdata[pcpn_day].used[ptime_pos] == 2)) { + } else if ((zdata[pcpn_day].used[ptime_pos] == 3) + || (zdata[pcpn_day].used[ptime_pos] == 2)) { tbuf.append(" Modified"); - } else if (DailyQcUtils.zdata[pcpn_day].used[ptime_pos] == 1) { + } else if (zdata[pcpn_day].used[ptime_pos] == 1) { tbuf.append(" Not Modified"); } else { tbuf.append(" - No Data"); @@ -916,18 +919,18 @@ public class DrawDQCStations { if (dqcEndingObsTime == 12) { if ((pcpn_time < 1) && (pcpn_time_step == 0)) { - ltime.setTime(DailyQcUtils.tdata[pcpn_day].data_time); + ltime.setTime(tdata[pcpn_day].data_time); ltime.add(Calendar.SECOND, -86400); } else { - ltime.setTime(DailyQcUtils.tdata[pcpn_day].data_time); + ltime.setTime(tdata[pcpn_day].data_time); } } else { if ((pcpn_time < 2) && (pcpn_time_step == 0)) { - ltime.setTime(DailyQcUtils.tdata[pcpn_day].data_time); + ltime.setTime(tdata[pcpn_day].data_time); ltime.add(Calendar.SECOND, -86400); } else { - ltime.setTime(DailyQcUtils.tdata[pcpn_day].data_time); + ltime.setTime(tdata[pcpn_day].data_time); } } @@ -995,18 +998,18 @@ public class DrawDQCStations { tbuf.append(" ending at 12z"); } - if (DailyQcUtils.tdata[pcpn_day].level[ptime_pos] == 1) { + if (tdata[pcpn_day].level[ptime_pos] == 1) { tbuf.append(" - Level 1"); - } else if (DailyQcUtils.tdata[pcpn_day].level[ptime_pos] == 2) { + } else if (tdata[pcpn_day].level[ptime_pos] == 2) { tbuf.append(" - Level 2"); } - if (DailyQcUtils.tdata[pcpn_day].used[ptime_pos] == 4) { + if (tdata[pcpn_day].used[ptime_pos] == 4) { tbuf.append(" Saved"); - } else if ((DailyQcUtils.tdata[pcpn_day].used[ptime_pos] == 3) - || (DailyQcUtils.tdata[pcpn_day].used[ptime_pos] == 2)) { + } else if ((tdata[pcpn_day].used[ptime_pos] == 3) + || (tdata[pcpn_day].used[ptime_pos] == 2)) { tbuf.append(" Modified"); - } else if (DailyQcUtils.tdata[pcpn_day].used[ptime_pos] == 1) { + } else if (tdata[pcpn_day].used[ptime_pos] == 1) { tbuf.append(" Not Modified"); } else { tbuf.append(" - No Data"); diff --git a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/OtherPrecipOptions.java b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/OtherPrecipOptions.java index 10d03622d9..dae2839263 100644 --- a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/OtherPrecipOptions.java +++ b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/OtherPrecipOptions.java @@ -125,14 +125,14 @@ public class OtherPrecipOptions { public void chg_precip_time(int data) { int i = 0; - int points_flag = dqc.points_flag; - int grids_flag = dqc.grids_flag; - int map_flag = dqc.map_flag; + int points_flag = DailyQcUtils.points_flag; + int grids_flag = DailyQcUtils.grids_flag; + int map_flag = DailyQcUtils.map_flag; /* 24 hour or 6 hour time step */ if (MPEDisplayManager.pcpn_time_step == 0) { - time_pos = dqc.pcpn_time; + time_pos = DailyQcUtils.pcpn_time; } else { time_pos = 4; } @@ -141,7 +141,7 @@ public class OtherPrecipOptions { return; } else if (data == 2 && MPEDisplayManager.pcpn_time_step == 1) { MPEDisplayManager.pcpn_time_step = 0; - dqc.pcp_flag = 3; + DailyQcUtils.pcp_flag = 3; } else if (data == 3 && MPEDisplayManager.pcpn_time_step == 1) { return; } else if (data == 3 && MPEDisplayManager.pcpn_time_step == 0) { @@ -149,7 +149,7 @@ public class OtherPrecipOptions { if (dqc.curHr18_00 == 1 || dqc.curHr00_06 == 1 || dqc.curHr06_12 == 1) { - dqc.pcp_flag = 0; + DailyQcUtils.pcp_flag = 0; } if (rsmode == 0) { @@ -167,38 +167,38 @@ public class OtherPrecipOptions { if (data == 0) { /* 6 hour precip time step mode. */ if (MPEDisplayManager.pcpn_time_step == 0) { - dqc.pcp_flag--; + DailyQcUtils.pcp_flag--; } else { /* 24 hour precip time step mode. */ - dqc.pcp_flag = dqc.pcp_flag - 4; + DailyQcUtils.pcp_flag = DailyQcUtils.pcp_flag - 4; } } else if (data == 1) { /* 6 hour precip time step mode. */ if (MPEDisplayManager.pcpn_time_step == 0) { - dqc.pcp_flag++; + DailyQcUtils.pcp_flag++; } else { /* 24 hour precip time step mode. */ - dqc.pcp_flag = dqc.pcp_flag + 4; + DailyQcUtils.pcp_flag = DailyQcUtils.pcp_flag + 4; } } - if (dqc.pcp_flag < 0) { - dqc.pcp_flag = 0; + if (DailyQcUtils.pcp_flag < 0) { + DailyQcUtils.pcp_flag = 0; } - if (dqc.pcp_flag >= (MAX_GAGEQC_DAYS * 4)) { - dqc.pcp_flag = ((MAX_GAGEQC_DAYS * 4) - 1); + if (DailyQcUtils.pcp_flag >= (MAX_GAGEQC_DAYS * 4)) { + DailyQcUtils.pcp_flag = ((MAX_GAGEQC_DAYS * 4) - 1); } - dqc.pcpn_day = dqc.pcp_flag / 4; + DailyQcUtils.pcpn_day = DailyQcUtils.pcp_flag / 4; - dqc.pcpn_time = 3 - (dqc.pcp_flag - dqc.pcpn_day * 4); + DailyQcUtils.pcpn_time = 3 - (DailyQcUtils.pcp_flag - DailyQcUtils.pcpn_day * 4); if (MPEDisplayManager.pcpn_time_step == 0) { - time_pos = dqc.pcp_flag; + time_pos = DailyQcUtils.pcp_flag; } else { - time_pos = 40 + dqc.pcpn_day; + time_pos = 40 + DailyQcUtils.pcpn_day; } QcPrecipOptionsDialog.dataSet.clear(); @@ -207,7 +207,7 @@ public class OtherPrecipOptions { QcPrecipOptionsDialog.setDataSetCombo(QcPrecipOptionsDialog.dataSet .toArray(a)); - if (dqc.pcp_in_use[time_pos] == -1) { + if (DailyQcUtils.pcp_in_use[time_pos] == -1) { QcPrecipOptionsDialog.dataSet.clear(); QcPrecipOptionsDialog.dataSet.add(0, QcPrecipOptionsDialog.dataType.get(0)); @@ -218,7 +218,7 @@ public class OtherPrecipOptions { .toArray(a)); } - if (points_flag == 1 && dqc.pcp_in_use[time_pos] == -1) { + if (points_flag == 1 && DailyQcUtils.pcp_in_use[time_pos] == -1) { i = 0; } else if (points_flag == 1 && grids_flag == -1 && map_flag == -1) { i = 0; @@ -236,9 +236,9 @@ public class OtherPrecipOptions { QcPrecipOptionsDialog.selectDataSetVal(i); - if (dqc.pdata[dqc.pcpn_day].stddev == 5.0) { + if (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stddev == 5.0) { i = 0; - } else if (dqc.pdata[dqc.pcpn_day].stddev == 3.0) { + } else if (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stddev == 3.0) { i = 1; } else { i = 2; @@ -246,14 +246,14 @@ public class OtherPrecipOptions { QcPrecipOptionsDialog.pntScnCbo.select(i); - if ((dqc.pcp_in_use[time_pos] == -1) - && ((((MPEDisplayManager.pcpn_time_step == 1) && (dqc.pdata[dqc.pcpn_day].used[4] != 0))) || ((MPEDisplayManager.pcpn_time_step == 0) && (dqc.pdata[dqc.pcpn_day].used[dqc.pcpn_time] != 0)))) { + if ((DailyQcUtils.pcp_in_use[time_pos] == -1) + && ((((MPEDisplayManager.pcpn_time_step == 1) && (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[4] != 0))) || ((MPEDisplayManager.pcpn_time_step == 0) && (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[DailyQcUtils.pcpn_time] != 0)))) { QcPrecipOptionsDialog.renderGridsBtn.setEnabled(true); } else { QcPrecipOptionsDialog.renderGridsBtn.setEnabled(false); } - time_pos = 100 + dqc.pcp_flag; + time_pos = 100 + DailyQcUtils.pcp_flag; if (MPEDisplayManager.pcpn_time_step == 1) { @@ -263,8 +263,8 @@ public class OtherPrecipOptions { QcPrecipOptionsDialog.pcpTypeCbo.select(1); } else { - if ((dqc.pcp_flag != 0 && (dqc.pcp_in_use[time_pos] == 1 || dqc.pcp_in_use[time_pos - 1] == 1)) - || (dqc.pcp_flag == 0 && dqc.pcp_in_use[time_pos] != -1)) { + if ((DailyQcUtils.pcp_flag != 0 && (DailyQcUtils.pcp_in_use[time_pos] == 1 || DailyQcUtils.pcp_in_use[time_pos - 1] == 1)) + || (DailyQcUtils.pcp_flag == 0 && DailyQcUtils.pcp_in_use[time_pos] != -1)) { for (i = 0; i < 1; i++) { QcPrecipOptionsDialog.pcpTypeCbo.setEnabled(true); @@ -286,10 +286,10 @@ public class OtherPrecipOptions { } Calendar tget = Calendar.getInstance(TimeZone.getTimeZone("GMT")); - long offset = (dqc.pcpn_day * 86400); + long offset = (DailyQcUtils.pcpn_day * 86400); tget.setTime(dqc.btime.getTime()); tget.add(Calendar.SECOND, (int) -offset); - dqc.isom = tget.get(Calendar.MONTH); + DailyQcUtils.isom = tget.get(Calendar.MONTH); /* * Set the sensitivity of the precipitation time step arrows based on @@ -301,8 +301,8 @@ public class OtherPrecipOptions { public void set_precip_arrow_sensitivity() { - int num_qc_days = dqc.qcDays; - int pcp_flag = dqc.pcp_flag; + int num_qc_days = DailyQcUtils.qcDays; + int pcp_flag = DailyQcUtils.pcp_flag; Button up_arrow = QcPrecipOptionsDialog.upTimeBtn; Button down_arrow = QcPrecipOptionsDialog.dnTimeBtn; @@ -352,8 +352,8 @@ public class OtherPrecipOptions { } Calendar currentTime = Calendar.getInstance(TimeZone.getTimeZone("GMT")); Calendar tmpDate = (Calendar) currentTime.clone(); - tmpDate.setTime(dqc.pdata[dqc.pcpn_day].data_time); - tmpDate.add(Calendar.HOUR_OF_DAY, (dqc.pcpn_time-3)*6); + tmpDate.setTime(DailyQcUtils.pdata[DailyQcUtils.pcpn_day].data_time); + tmpDate.add(Calendar.HOUR_OF_DAY, (DailyQcUtils.pcpn_time-3)*6); if (currentTime.before(tmpDate)){ up_arrow.setEnabled(false); @@ -390,36 +390,36 @@ public class OtherPrecipOptions { public void display_pcpn_options(int data) { /* Initialize the display flags. */ - dqc.points_flag = -1; - dqc.grids_flag = -1; - dqc.map_flag = -1; - dqc.contour_flag = -1; + DailyQcUtils.points_flag = -1; + DailyQcUtils.grids_flag = -1; + DailyQcUtils.map_flag = -1; + DailyQcUtils.contour_flag = -1; if (data == 0) { - dqc.points_flag = 1; + DailyQcUtils.points_flag = 1; } else if (data == 1) { - dqc.grids_flag = 1; + DailyQcUtils.grids_flag = 1; } else if (data == 2) { - dqc.map_flag = 1; + DailyQcUtils.map_flag = 1; } else if (data == 3) { - dqc.points_flag = 1; - dqc.grids_flag = 1; + DailyQcUtils.points_flag = 1; + DailyQcUtils.grids_flag = 1; } else if (data == 4) { - dqc.points_flag = 1; - dqc.map_flag = 1; + DailyQcUtils.points_flag = 1; + DailyQcUtils.map_flag = 1; } else if (data == 5) { - dqc.points_flag = -1; - dqc.contour_flag = 1; + DailyQcUtils.points_flag = -1; + DailyQcUtils.contour_flag = 1; } else if (data == 6) { - dqc.points_flag = 1; - dqc.contour_flag = 1; + DailyQcUtils.points_flag = 1; + DailyQcUtils.contour_flag = 1; } else if (data == 7) { - dqc.contour_flag = -1; - dqc.points_flag = -1; - dqc.grids_flag = -1; - dqc.map_flag = -1; + DailyQcUtils.contour_flag = -1; + DailyQcUtils.points_flag = -1; + DailyQcUtils.grids_flag = -1; + DailyQcUtils.map_flag = -1; } send_expose(); } @@ -442,7 +442,7 @@ public class OtherPrecipOptions { // Hrap_Grid hrap_grid = DailyQcUtils.getHrap_grid(); Calendar tmtime = Calendar.getInstance(TimeZone.getTimeZone("GMT")); // ReadPrecipStationList rp = new ReadPrecipStationList(); - int num_stations = dqc.precip_stations.size(); + int num_stations = DailyQcUtils.precip_stations.size(); String s = appsDefaults.getToken(dqc_ending_6hour_obstime_tok); int dqc_ending_6hour_obstime = ((!(null == s)) ? Integer.parseInt(s) : -1); @@ -463,34 +463,34 @@ public class OtherPrecipOptions { else if (clientdata == 0) { BadValues bv = new BadValues(); - bv.update_bad_values(dqc.pcpn_day); + bv.update_bad_values(DailyQcUtils.pcpn_day); /* * do not estimate daily and partial point precipitation from each * other if run DQC on partial time frame and pcpn_day=0 */ - if (dqc.pcpn_day == 0 + if (DailyQcUtils.pcpn_day == 0 && (dqc.curHr00_06 == 1 || dqc.curHr06_12 == 1 || dqc.curHr18_00 == 1)) { // don't estimate } else { EstDailyStations ed = new EstDailyStations(); - ed.estimate_daily_stations(dqc.pcpn_day, - dqc.precip_stations, num_stations); + ed.estimate_daily_stations(DailyQcUtils.pcpn_day, + DailyQcUtils.precip_stations, num_stations); EstPartStations ep = new EstPartStations(); - ep.estimate_partial_stations(dqc.pcpn_day, - dqc.precip_stations, num_stations); + ep.estimate_partial_stations(DailyQcUtils.pcpn_day, + DailyQcUtils.precip_stations, num_stations); } QCStations qs = new QCStations(); - qs.quality_control_stations(dqc.pcpn_day, - dqc.precip_stations, num_stations); + qs.quality_control_stations(DailyQcUtils.pcpn_day, + DailyQcUtils.precip_stations, num_stations); CheckConsistency cc = new CheckConsistency(); - cc.check_consistency(dqc.pcpn_day, - dqc.precip_stations, num_stations); + cc.check_consistency(DailyQcUtils.pcpn_day, + DailyQcUtils.precip_stations, num_stations); /* render Grids and MAP for 24 hr precipitation */ @@ -499,19 +499,19 @@ public class OtherPrecipOptions { * curHr06_12, for precipitation, do not display the 24 hr * precipiation if the pcpn_day=0 */ - if ((dqc.pcpn_day == 0) + if ((DailyQcUtils.pcpn_day == 0) && (dqc.curHr18_00 == 1 || dqc.curHr00_06 == 1 || dqc.curHr06_12 == 1)) { - dqc.pdata[dqc.pcpn_day].used[4] = 0; + DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[4] = 0; } - if (dqc.pdata[dqc.pcpn_day].used[4] != 0) { + if (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[4] != 0) { - rpc.render_pcp(dqc.pcpn_day, dqc.pcpn_time, - 1, num_stations, dqc.precip_stations, - dqc.getHrap_grid(), dqc.pdata, dqc.pcp_in_use); + rpc.render_pcp(DailyQcUtils.pcpn_day, DailyQcUtils.pcpn_time, + 1, num_stations, DailyQcUtils.precip_stations, + DailyQcUtils.getHrap_grid(), DailyQcUtils.pdata, DailyQcUtils.pcp_in_use); - old_time = dqc.pdata[dqc.pcpn_day].data_time; + old_time = DailyQcUtils.pdata[DailyQcUtils.pcpn_day].data_time; tmtime.setTime(old_time); dbuf = String.format("%s%s_%04d%02d%02d", @@ -535,7 +535,7 @@ public class OtherPrecipOptions { // write_dqc_netcdf_grids(dbuf, pdata[pcpn_day].data_time, // &begin_time, 1); // } - cm.create_map(40 + dqc.pcpn_day); + cm.create_map(40 + DailyQcUtils.pcpn_day); } /* render Grids and MAP for four 6hr precipitation */ @@ -544,35 +544,35 @@ public class OtherPrecipOptions { * 18-00, m=2 represents time frame 00-06Z */ - if (dqc.pcpn_day == 0 && dqc.curHr18_00 == 1) { - dqc.pdata[dqc.pcpn_day].used[1] = 0; - dqc.pdata[dqc.pcpn_day].used[2] = 0; - dqc.pdata[dqc.pcpn_day].used[3] = 0; - } else if (dqc.pcpn_day == 0 + if (DailyQcUtils.pcpn_day == 0 && dqc.curHr18_00 == 1) { + DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[1] = 0; + DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[2] = 0; + DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[3] = 0; + } else if (DailyQcUtils.pcpn_day == 0 && dqc.curHr00_06 == 1) { - dqc.pdata[dqc.pcpn_day].used[2] = 0; - dqc.pdata[dqc.pcpn_day].used[3] = 0; - } else if (dqc.pcpn_day == 0 + DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[2] = 0; + DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[3] = 0; + } else if (DailyQcUtils.pcpn_day == 0 && dqc.curHr06_12 == 1) { - dqc.pdata[dqc.pcpn_day].used[3] = 0; + DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[3] = 0; } for (int m = 0; m < 4; m++) { - if (dqc.pdata[dqc.pcpn_day].used[m] == 0) { + if (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[m] == 0) { continue; } - rpc.render_pcp(dqc.pcpn_day, m, 0, num_stations, - dqc.precip_stations, dqc.getHrap_grid(), - dqc.pdata, dqc.pcp_in_use); + rpc.render_pcp(DailyQcUtils.pcpn_day, m, 0, num_stations, + DailyQcUtils.precip_stations, DailyQcUtils.getHrap_grid(), + DailyQcUtils.pdata, DailyQcUtils.pcp_in_use); if (m < 2) { - old_time = dqc.pdata[dqc.pcpn_day].data_time; + old_time = DailyQcUtils.pdata[DailyQcUtils.pcpn_day].data_time; tmtime.setTime(old_time); tmtime.add(Calendar.SECOND, -86400); } else { - old_time = dqc.pdata[dqc.pcpn_day].data_time; + old_time = DailyQcUtils.pdata[DailyQcUtils.pcpn_day].data_time; tmtime.setTime(old_time); } @@ -596,28 +596,28 @@ public class OtherPrecipOptions { // write_dqc_netcdf_grids(dbuf, pdata[pcpn_day].data_time, // &begin_time, 1); // } - int num = 4 * dqc.pcpn_day + 3 - m; + int num = 4 * DailyQcUtils.pcpn_day + 3 - m; cm.create_map(num); - dqc.pdata[dqc.pcpn_day].used[m] = 3; + DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[m] = 3; } EstMissingStations ems = new EstMissingStations(); - ems.estimate_missing_stations(dqc.pcpn_day, - dqc.precip_stations, num_stations, - dqc.pdata); + ems.estimate_missing_stations(DailyQcUtils.pcpn_day, + DailyQcUtils.precip_stations, num_stations, + DailyQcUtils.pdata); - bv.restore_bad_values(dqc.pcpn_day, - dqc.precip_stations, num_stations); + bv.restore_bad_values(DailyQcUtils.pcpn_day, + DailyQcUtils.precip_stations, num_stations); - if ((dqc.pcpn_day == 0) + if ((DailyQcUtils.pcpn_day == 0) && (dqc.curHr18_00 == 1 || dqc.curHr00_06 == 1 || dqc.curHr06_12 == 1)) { - dqc.pdata[dqc.pcpn_day].used[4] = 0; + DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[4] = 0; } else { - dqc.pdata[dqc.pcpn_day].used[4] = 3; + DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[4] = 3; } QcPrecipOptionsDialog.dataSet.clear(); @@ -628,55 +628,55 @@ public class OtherPrecipOptions { .toArray(a)); if (MPEDisplayManager.pcpn_time_step == 0) { - time_pos = dqc.pcp_flag; + time_pos = DailyQcUtils.pcp_flag; } else { - time_pos = 40 + dqc.pcpn_day; + time_pos = 40 + DailyQcUtils.pcpn_day; } - if (dqc.points_flag == 1 - && dqc.pcp_in_use[time_pos] == -1) { + if (DailyQcUtils.points_flag == 1 + && DailyQcUtils.pcp_in_use[time_pos] == -1) { k = 0; - } else if (dqc.points_flag == 1 - && dqc.grids_flag == -1 - && dqc.map_flag == -1 - && dqc.contour_flag == -1) { + } else if (DailyQcUtils.points_flag == 1 + && DailyQcUtils.grids_flag == -1 + && DailyQcUtils.map_flag == -1 + && DailyQcUtils.contour_flag == -1) { // Points k = 0; - } else if (dqc.points_flag == -1 - && dqc.grids_flag == 1 - && dqc.map_flag == -1) { + } else if (DailyQcUtils.points_flag == -1 + && DailyQcUtils.grids_flag == 1 + && DailyQcUtils.map_flag == -1) { // Grids k = 1; - } else if (dqc.points_flag == -1 - && dqc.grids_flag == -1 - && dqc.map_flag == 1) { + } else if (DailyQcUtils.points_flag == -1 + && DailyQcUtils.grids_flag == -1 + && DailyQcUtils.map_flag == 1) { // MATs k = 2; - } else if (dqc.points_flag == 1 - && dqc.grids_flag == 1 - && dqc.map_flag == -1) { + } else if (DailyQcUtils.points_flag == 1 + && DailyQcUtils.grids_flag == 1 + && DailyQcUtils.map_flag == -1) { // Points & Grids k = 3; - } else if (dqc.points_flag == 1 - && dqc.grids_flag == -1 - && dqc.map_flag == 1) { + } else if (DailyQcUtils.points_flag == 1 + && DailyQcUtils.grids_flag == -1 + && DailyQcUtils.map_flag == 1) { // Points & MATs k = 4; - } else if (dqc.points_flag == -1 - && dqc.grids_flag == -1 - && dqc.map_flag == -1) { + } else if (DailyQcUtils.points_flag == -1 + && DailyQcUtils.grids_flag == -1 + && DailyQcUtils.map_flag == -1) { // Contours k = 5; - } else if (dqc.points_flag == 1 - && dqc.grids_flag == -1 - && dqc.map_flag == -1 - && dqc.contour_flag == 1) { + } else if (DailyQcUtils.points_flag == 1 + && DailyQcUtils.grids_flag == -1 + && DailyQcUtils.map_flag == -1 + && DailyQcUtils.contour_flag == 1) { // Points & Contours k = 6; - } else if (dqc.points_flag == -1 - && dqc.grids_flag == -1 - && dqc.map_flag == -1 - && dqc.contour_flag == -1) { + } else if (DailyQcUtils.points_flag == -1 + && DailyQcUtils.grids_flag == -1 + && DailyQcUtils.map_flag == -1 + && DailyQcUtils.contour_flag == -1) { // None k = 7; } @@ -698,25 +698,25 @@ public class OtherPrecipOptions { * 18-00, m=2 represents time frame 00-06Z */ - if (dqc.pcpn_day == 0 && dqc.curHr18_00 == 1) { - dqc.zdata[dqc.pcpn_day].used[1] = 0; - dqc.zdata[dqc.pcpn_day].used[2] = 0; - dqc.zdata[dqc.pcpn_day].used[3] = 0; - } else if (dqc.pcpn_day == 0 + if (DailyQcUtils.pcpn_day == 0 && dqc.curHr18_00 == 1) { + DailyQcUtils.zdata[DailyQcUtils.pcpn_day].used[1] = 0; + DailyQcUtils.zdata[DailyQcUtils.pcpn_day].used[2] = 0; + DailyQcUtils.zdata[DailyQcUtils.pcpn_day].used[3] = 0; + } else if (DailyQcUtils.pcpn_day == 0 && dqc.curHr00_06 == 1) { - dqc.zdata[dqc.pcpn_day].used[2] = 0; - dqc.zdata[dqc.pcpn_day].used[3] = 0; - } else if (dqc.pcpn_day == 0 + DailyQcUtils.zdata[DailyQcUtils.pcpn_day].used[2] = 0; + DailyQcUtils.zdata[DailyQcUtils.pcpn_day].used[3] = 0; + } else if (DailyQcUtils.pcpn_day == 0 && dqc.curHr06_12 == 1) { - dqc.zdata[dqc.pcpn_day].used[3] = 0; + DailyQcUtils.zdata[DailyQcUtils.pcpn_day].used[3] = 0; } for (m = 0; m < 4; m++) { - if (dqc.zdata[dqc.pcpn_day].used[m] == 0 - || dqc.zdata[dqc.pcpn_day].used[m] == 3 - || (dqc.zdata[dqc.pcpn_day].used[m] == 1 && dqc.zdata[dqc.pcpn_day].level[m] == 2) - || dqc.zdata[dqc.pcpn_day].used[m] == 4) { + if (DailyQcUtils.zdata[DailyQcUtils.pcpn_day].used[m] == 0 + || DailyQcUtils.zdata[DailyQcUtils.pcpn_day].used[m] == 3 + || (DailyQcUtils.zdata[DailyQcUtils.pcpn_day].used[m] == 1 && DailyQcUtils.zdata[DailyQcUtils.pcpn_day].level[m] == 2) + || DailyQcUtils.zdata[DailyQcUtils.pcpn_day].used[m] == 4) { /* * logMessage( * "\n in other pcpn zdata used = %d pcpn_dauy=%d m=%d\n" @@ -725,9 +725,9 @@ public class OtherPrecipOptions { continue; } - rz.render_z(dqc.pcpn_day, m, 0, num_zstations, - dqc.freezing_stations, dqc.getHrap_grid(), - dqc.zdata, dqc.pcp_in_use); + rz.render_z(DailyQcUtils.pcpn_day, m, 0, num_zstations, + DailyQcUtils.freezing_stations, DailyQcUtils.getHrap_grid(), + DailyQcUtils.zdata, DailyQcUtils.pcp_in_use); /* * dqcEndingObsTime is controlled by the * dqc_ending_6hour_obstime token. It should only be 06 or 12 @@ -737,20 +737,20 @@ public class OtherPrecipOptions { if (dqc.dqc_ending_6hour_obstime == 12) { if (m < 1) { - old_time = dqc.zdata[dqc.pcpn_day].data_time; + old_time = DailyQcUtils.zdata[DailyQcUtils.pcpn_day].data_time; tmtime.setTime(old_time); tmtime.add(Calendar.SECOND, -86400); } else { - old_time = dqc.zdata[dqc.pcpn_day].data_time; + old_time = DailyQcUtils.zdata[DailyQcUtils.pcpn_day].data_time; tmtime.setTime(old_time); } } else { if (m < 2) { - old_time = dqc.zdata[dqc.pcpn_day].data_time; + old_time = DailyQcUtils.zdata[DailyQcUtils.pcpn_day].data_time; tmtime.setTime(old_time); tmtime.add(Calendar.SECOND, -86400); } else { - old_time = dqc.zdata[dqc.pcpn_day].data_time; + old_time = DailyQcUtils.zdata[DailyQcUtils.pcpn_day].data_time; tmtime.setTime(old_time); } } @@ -763,9 +763,9 @@ public class OtherPrecipOptions { wq.write_qpf_grids(dbuf); - int num = 100 + 4 * dqc.pcpn_day + 3 - m; + int num = 100 + 4 * DailyQcUtils.pcpn_day + 3 - m; - dqc.zdata[dqc.pcpn_day].used[m] = 3; + DailyQcUtils.zdata[DailyQcUtils.pcpn_day].used[m] = 3; mr.make_rsel(num, num - 100); /* @@ -782,52 +782,52 @@ public class OtherPrecipOptions { QcFreezeOptionsDialog.dataDispCbo .setItems(QcFreezeOptionsDialog.dataSet.toArray(a)); - time_pos = 100 + dqc.pcp_flag; + time_pos = 100 + DailyQcUtils.pcp_flag; - if (dqc.points_flag == 1 - && dqc.pcp_in_use[time_pos] == -1) { + if (DailyQcUtils.points_flag == 1 + && DailyQcUtils.pcp_in_use[time_pos] == -1) { k = 0; - } else if (dqc.points_flag == 1 - && dqc.grids_flag == -1 - && dqc.map_flag == -1 - && dqc.contour_flag == -1) { + } else if (DailyQcUtils.points_flag == 1 + && DailyQcUtils.grids_flag == -1 + && DailyQcUtils.map_flag == -1 + && DailyQcUtils.contour_flag == -1) { // Points k = 0; - } else if (dqc.points_flag == -1 - && dqc.grids_flag == 1 - && dqc.map_flag == -1) { + } else if (DailyQcUtils.points_flag == -1 + && DailyQcUtils.grids_flag == 1 + && DailyQcUtils.map_flag == -1) { // Grids k = 1; - } else if (dqc.points_flag == -1 - && dqc.grids_flag == -1 - && dqc.map_flag == 1) { + } else if (DailyQcUtils.points_flag == -1 + && DailyQcUtils.grids_flag == -1 + && DailyQcUtils.map_flag == 1) { // MATs k = 2; - } else if (dqc.points_flag == 1 - && dqc.grids_flag == 1 - && dqc.map_flag == -1) { + } else if (DailyQcUtils.points_flag == 1 + && DailyQcUtils.grids_flag == 1 + && DailyQcUtils.map_flag == -1) { // Points & Grids k = 3; - } else if (dqc.points_flag == 1 - && dqc.grids_flag == -1 - && dqc.map_flag == 1) { + } else if (DailyQcUtils.points_flag == 1 + && DailyQcUtils.grids_flag == -1 + && DailyQcUtils.map_flag == 1) { // Points & MATs k = 4; - } else if (dqc.points_flag == -1 - && dqc.grids_flag == -1 - && dqc.map_flag == -1 - && dqc.contour_flag == 1) { + } else if (DailyQcUtils.points_flag == -1 + && DailyQcUtils.grids_flag == -1 + && DailyQcUtils.map_flag == -1 + && DailyQcUtils.contour_flag == 1) { // Contours k = 5; - } else if (dqc.points_flag == 1 - && dqc.grids_flag == -1 - && dqc.map_flag == -1 - && dqc.contour_flag == 1) { + } else if (DailyQcUtils.points_flag == 1 + && DailyQcUtils.grids_flag == -1 + && DailyQcUtils.map_flag == -1 + && DailyQcUtils.contour_flag == 1) { // Points & Contours - } else if (dqc.points_flag == -1 - && dqc.grids_flag == -1 - && dqc.map_flag == -1 - && dqc.contour_flag == -1) { + } else if (DailyQcUtils.points_flag == -1 + && DailyQcUtils.grids_flag == -1 + && DailyQcUtils.map_flag == -1 + && DailyQcUtils.contour_flag == -1) { // None k = 7; } @@ -840,50 +840,50 @@ public class OtherPrecipOptions { ReadTemperatureStationList rt = new ReadTemperatureStationList(); int num_tstations = rt.getNumTstations(); BadTValues bt = new BadTValues(); - bt.update_bad_tvalues(dqc.pcpn_day); + bt.update_bad_tvalues(DailyQcUtils.pcpn_day); /* * do not estimate daily and partial point precipitation from each * other if run DQC on partial time frame and pcpn_day=0 */ - if (dqc.pcpn_day == 0 + if (DailyQcUtils.pcpn_day == 0 && (dqc.curHr00_06 == 1 || dqc.curHr06_12 == 1 || dqc.curHr18_00 == 1)) { // do not run estimate on stations } else { EstDailyTStations edt = new EstDailyTStations(); - edt.estimate_daily_tstations(dqc.pcpn_day, - dqc.temperature_stations, num_tstations); + edt.estimate_daily_tstations(DailyQcUtils.pcpn_day, + DailyQcUtils.temperature_stations, num_tstations); } QCTStations qct = new QCTStations(); - qct.quality_control_tstations(dqc.pcpn_day, - dqc.temperature_stations, num_tstations); + qct.quality_control_tstations(DailyQcUtils.pcpn_day, + DailyQcUtils.temperature_stations, num_tstations); - if (dqc.pcpn_day == 0 && dqc.curHr18_00 == 1) { - dqc.tdata[dqc.pcpn_day].used[1] = 0; - dqc.tdata[dqc.pcpn_day].used[2] = 0; - dqc.tdata[dqc.pcpn_day].used[3] = 0; + if (DailyQcUtils.pcpn_day == 0 && dqc.curHr18_00 == 1) { + DailyQcUtils.tdata[DailyQcUtils.pcpn_day].used[1] = 0; + DailyQcUtils.tdata[DailyQcUtils.pcpn_day].used[2] = 0; + DailyQcUtils.tdata[DailyQcUtils.pcpn_day].used[3] = 0; - } else if (dqc.pcpn_day == 0 + } else if (DailyQcUtils.pcpn_day == 0 && dqc.curHr00_06 == 1) { - dqc.tdata[dqc.pcpn_day].used[2] = 0; - dqc.tdata[dqc.pcpn_day].used[3] = 0; + DailyQcUtils.tdata[DailyQcUtils.pcpn_day].used[2] = 0; + DailyQcUtils.tdata[DailyQcUtils.pcpn_day].used[3] = 0; - } else if (dqc.pcpn_day == 0 + } else if (DailyQcUtils.pcpn_day == 0 && dqc.curHr06_12 == 1) { - dqc.tdata[dqc.pcpn_day].used[3] = 0; + DailyQcUtils.tdata[DailyQcUtils.pcpn_day].used[3] = 0; } RenderT rent = new RenderT(); - if (dqc.tdata[dqc.pcpn_day].used[4] != 0) { + if (DailyQcUtils.tdata[DailyQcUtils.pcpn_day].used[4] != 0) { - rent.render_t(dqc.pcpn_day, dqc.pcpn_time, 1, - num_tstations, dqc.temperature_stations, - dqc.getHrap_grid(), dqc.tdata, dqc.pcp_in_use); + rent.render_t(DailyQcUtils.pcpn_day, DailyQcUtils.pcpn_time, 1, + num_tstations, DailyQcUtils.temperature_stations, + DailyQcUtils.getHrap_grid(), DailyQcUtils.tdata, DailyQcUtils.pcp_in_use); - old_time = dqc.tdata[dqc.pcpn_day].data_time; + old_time = DailyQcUtils.tdata[DailyQcUtils.pcpn_day].data_time; tmtime.setTime(old_time); dbuf = String.format("%s%s_%04d%02d%02d", @@ -895,17 +895,17 @@ public class OtherPrecipOptions { wq.write_qpf_grids(dbuf); - dqc.tdata[dqc.pcpn_day].used[4] = 3; + DailyQcUtils.tdata[DailyQcUtils.pcpn_day].used[4] = 3; } - if (dqc.tdata[dqc.pcpn_day].used[5] != 0) { + if (DailyQcUtils.tdata[DailyQcUtils.pcpn_day].used[5] != 0) { - rent.render_t(dqc.pcpn_day, dqc.pcpn_time, 2, - num_tstations, dqc.temperature_stations, - dqc.getHrap_grid(), dqc.tdata, dqc.pcp_in_use); + rent.render_t(DailyQcUtils.pcpn_day, DailyQcUtils.pcpn_time, 2, + num_tstations, DailyQcUtils.temperature_stations, + DailyQcUtils.getHrap_grid(), DailyQcUtils.tdata, DailyQcUtils.pcp_in_use); - old_time = dqc.tdata[dqc.pcpn_day].data_time; + old_time = DailyQcUtils.tdata[DailyQcUtils.pcpn_day].data_time; tmtime.setTime(old_time); @@ -918,23 +918,23 @@ public class OtherPrecipOptions { wq.write_qpf_grids(dbuf); - dqc.tdata[dqc.pcpn_day].used[5] = 3; + DailyQcUtils.tdata[DailyQcUtils.pcpn_day].used[5] = 3; } for (int m = 0; m < 4; m++) { - if (dqc.tdata[dqc.pcpn_day].used[m] == 0 - || dqc.tdata[dqc.pcpn_day].used[m] == 3 - || (dqc.tdata[dqc.pcpn_day].used[m] == 1 && dqc.tdata[dqc.pcpn_day].level[m] == 2) - || dqc.tdata[dqc.pcpn_day].used[m] == 4) { + if (DailyQcUtils.tdata[DailyQcUtils.pcpn_day].used[m] == 0 + || DailyQcUtils.tdata[DailyQcUtils.pcpn_day].used[m] == 3 + || (DailyQcUtils.tdata[DailyQcUtils.pcpn_day].used[m] == 1 && DailyQcUtils.tdata[DailyQcUtils.pcpn_day].level[m] == 2) + || DailyQcUtils.tdata[DailyQcUtils.pcpn_day].used[m] == 4) { continue; } RenderT6 rt6 = new RenderT6(); - rt6.render_t6(dqc.pcpn_day, m, 0, num_tstations, - dqc.temperature_stations, dqc.getHrap_grid(), - dqc.tdata, dqc.pcp_in_use); + rt6.render_t6(DailyQcUtils.pcpn_day, m, 0, num_tstations, + DailyQcUtils.temperature_stations, DailyQcUtils.getHrap_grid(), + DailyQcUtils.tdata, DailyQcUtils.pcp_in_use); /* * dqcEndingObsTime is controlled by the @@ -946,20 +946,20 @@ public class OtherPrecipOptions { if (dqc_ending_6hour_obstime == 12) { if (m < 1) { - old_time = dqc.tdata[dqc.pcpn_day].data_time; + old_time = DailyQcUtils.tdata[DailyQcUtils.pcpn_day].data_time; tmtime.setTime(old_time); tmtime.add(Calendar.SECOND, -86400); } else { - old_time = dqc.tdata[dqc.pcpn_day].data_time; + old_time = DailyQcUtils.tdata[DailyQcUtils.pcpn_day].data_time; tmtime.setTime(old_time); } } else { if (m < 2) { - old_time = dqc.tdata[dqc.pcpn_day].data_time; + old_time = DailyQcUtils.tdata[DailyQcUtils.pcpn_day].data_time; tmtime.setTime(old_time); tmtime.add(Calendar.SECOND, -86400); } else { - old_time = dqc.tdata[dqc.pcpn_day].data_time; + old_time = DailyQcUtils.tdata[DailyQcUtils.pcpn_day].data_time; tmtime.setTime(old_time); } } @@ -973,25 +973,25 @@ public class OtherPrecipOptions { wq.write_qpf_grids(dbuf); - int num = 150 + 4 * dqc.pcpn_day + 3 - m; + int num = 150 + 4 * DailyQcUtils.pcpn_day + 3 - m; - dqc.tdata[dqc.pcpn_day].used[m] = 3; + DailyQcUtils.tdata[DailyQcUtils.pcpn_day].used[m] = 3; MakeMat mmat = new MakeMat(); mmat.make_mat(num, num - 150); - dqc.tdata[dqc.pcpn_day].used[m] = 3; + DailyQcUtils.tdata[DailyQcUtils.pcpn_day].used[m] = 3; } EstMissingTStations emt = new EstMissingTStations(); - emt.estimate_missing_tstations(dqc.pcpn_day, - dqc.temperature_stations, num_tstations, - dqc.tdata); + emt.estimate_missing_tstations(DailyQcUtils.pcpn_day, + DailyQcUtils.temperature_stations, num_tstations, + DailyQcUtils.tdata); BadTValues btv = new BadTValues(); - btv.restore_bad_tvalues(dqc.pcpn_day, - dqc.temperature_stations, num_tstations); + btv.restore_bad_tvalues(DailyQcUtils.pcpn_day, + DailyQcUtils.temperature_stations, num_tstations); QcTempOptionsDialog.dataSet.clear(); QcTempOptionsDialog.dataSet.addAll(QcTempOptionsDialog.dataType); @@ -999,46 +999,46 @@ public class OtherPrecipOptions { QcTempOptionsDialog.dataDispCbo .setItems(QcTempOptionsDialog.dataSet.toArray(a)); - time_pos = 150 + dqc.pcp_flag; + time_pos = 150 + DailyQcUtils.pcp_flag; - if (dqc.points_flag == 1 - && dqc.pcp_in_use[time_pos] == -1) { + if (DailyQcUtils.points_flag == 1 + && DailyQcUtils.pcp_in_use[time_pos] == -1) { k = 0; // Points - } else if (dqc.points_flag == 1 - && dqc.grids_flag == -1 - && dqc.map_flag == -1 - && dqc.contour_flag == -1) { + } else if (DailyQcUtils.points_flag == 1 + && DailyQcUtils.grids_flag == -1 + && DailyQcUtils.map_flag == -1 + && DailyQcUtils.contour_flag == -1) { k = 0; // Points - } else if (dqc.points_flag == -1 - && dqc.grids_flag == 1 - && dqc.map_flag == -1) { + } else if (DailyQcUtils.points_flag == -1 + && DailyQcUtils.grids_flag == 1 + && DailyQcUtils.map_flag == -1) { k = 1; // Grids - } else if (dqc.points_flag == -1 - && dqc.grids_flag == -1 - && dqc.map_flag == 1) { + } else if (DailyQcUtils.points_flag == -1 + && DailyQcUtils.grids_flag == -1 + && DailyQcUtils.map_flag == 1) { k = 2; // MATs - } else if (dqc.points_flag == 1 - && dqc.grids_flag == 1 - && dqc.map_flag == -1) { + } else if (DailyQcUtils.points_flag == 1 + && DailyQcUtils.grids_flag == 1 + && DailyQcUtils.map_flag == -1) { k = 3; // Points + Grids - } else if (dqc.points_flag == 1 - && dqc.grids_flag == -1 - && dqc.map_flag == 1) { + } else if (DailyQcUtils.points_flag == 1 + && DailyQcUtils.grids_flag == -1 + && DailyQcUtils.map_flag == 1) { k = 4; // Points + MATs - } else if (dqc.points_flag == -1 - && dqc.grids_flag == -1 - && dqc.map_flag == -1 - && dqc.contour_flag == 1) { + } else if (DailyQcUtils.points_flag == -1 + && DailyQcUtils.grids_flag == -1 + && DailyQcUtils.map_flag == -1 + && DailyQcUtils.contour_flag == 1) { k = 5; // Contours - } else if (dqc.points_flag == 1 - && dqc.grids_flag == -1 - && dqc.map_flag == -1 - && dqc.contour_flag == 1) { + } else if (DailyQcUtils.points_flag == 1 + && DailyQcUtils.grids_flag == -1 + && DailyQcUtils.map_flag == -1 + && DailyQcUtils.contour_flag == 1) { k = 6; // Points + Contours - } else if (dqc.points_flag == -1 - && dqc.grids_flag == -1 - && dqc.map_flag == -1 - && dqc.contour_flag == -1) { + } else if (DailyQcUtils.points_flag == -1 + && DailyQcUtils.grids_flag == -1 + && DailyQcUtils.map_flag == -1 + && DailyQcUtils.contour_flag == -1) { k = 7; // None } diff --git a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/SaveLevel2Data.java b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/SaveLevel2Data.java index 17bc4fb92c..998eff8075 100644 --- a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/SaveLevel2Data.java +++ b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/SaveLevel2Data.java @@ -2503,7 +2503,12 @@ public class SaveLevel2Data { } Disagg6Hr d6h = new Disagg6Hr(); - d6h.disagg6hr(); + try { + d6h.disagg6hr(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } /* Free DailyQC resources. */ diff --git a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/EditPrecipStationsDialog.java b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/EditPrecipStationsDialog.java index d085318e9e..d27a5ebc62 100644 --- a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/EditPrecipStationsDialog.java +++ b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/EditPrecipStationsDialog.java @@ -23,6 +23,7 @@ import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -60,8 +61,10 @@ import com.raytheon.viz.mpe.ui.actions.OtherPrecipOptions; import com.raytheon.viz.mpe.util.BadValues; import com.raytheon.viz.mpe.util.CheckConsistency; import com.raytheon.viz.mpe.util.DailyQcUtils; +import com.raytheon.viz.mpe.util.DailyQcUtils.Pdata; import com.raytheon.viz.mpe.util.DailyQcUtils.Rain; import com.raytheon.viz.mpe.util.DailyQcUtils.Station; +import com.raytheon.viz.mpe.util.DailyQcUtils.Ts; import com.raytheon.viz.mpe.util.EstDailyStations; import com.raytheon.viz.mpe.util.EstPartStations; import com.raytheon.viz.mpe.util.QCStations; @@ -116,7 +119,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements private int pcpn_time_step = MPEDisplayManager.pcpn_time_step; - private int pcpn_time = dqc.pcpn_time; + private int pcpn_time = DailyQcUtils.pcpn_time; private Button applyBtn; @@ -216,29 +219,29 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements int tcmode = OtherPrecipOptions.tcmode; -// Ts ts[] = DailyQcUtils.ts; + Ts ts[] = DailyQcUtils.ts; - int tsmax = dqc.tsmax; + int tsmax = DailyQcUtils.tsmax; - int isom = dqc.isom; + int isom = DailyQcUtils.isom; - int gage_char[] = dqc.gage_char; + int gage_char[] = DailyQcUtils.gage_char; int method = dqc.method; - int qflag[] = dqc.qflag; + int qflag[] = DailyQcUtils.qflag; -// Pdata pdata[] = DailyQcUtils.pdata; + Pdata pdata[] = DailyQcUtils.pdata; - int dflag[] = dqc.dflag; + int dflag[] = DailyQcUtils.dflag; int naflag; -// ArrayList precipStationList = DailyQcUtils.precip_stations; + ArrayList precipStationList = DailyQcUtils.precip_stations; // ReadPrecipStationList rp = new ReadPrecipStationList(); - int max_stations = dqc.precip_stations.size(); + int max_stations = DailyQcUtils.precip_stations.size(); int i, m, x, y; @@ -248,7 +251,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements int[] allowedQualityCodes = dqc.func; - int pcpn_day = dqc.pcpn_day; + int pcpn_day = DailyQcUtils.pcpn_day; Coordinate coord = new Coordinate(); @@ -371,18 +374,18 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements ClosestStationFinder finder = new ClosestStationFinder(this); - isave = finder.findClosestStation(dqc.precip_stations, coord); + isave = finder.findClosestStation(precipStationList, coord); if (isave == -1) { return; } - Rain frain = dqc.pdata[pcpn_day].stn[isave].frain[time_pos]; + Rain frain = pdata[pcpn_day].stn[isave].frain[time_pos]; reset_value = 0; initial_qual = frain.qual; new_qual = initial_qual; - Rain srain = dqc.pdata[pcpn_day].stn[isave].srain[time_pos]; + Rain srain = pdata[pcpn_day].stn[isave].srain[time_pos]; if (srain.data > -98) { if (time_pos == HOURS_24 && srain.data >= 0) { @@ -413,7 +416,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements private void loadPrecipStationText(StringBuilder stationStringBuilder, Station selectedStation) { - Rain frain = dqc.pdata[pcpn_day].stn[isave].frain[time_pos]; + Rain frain = pdata[pcpn_day].stn[isave].frain[time_pos]; stationStringBuilder.append(selectedStation.hb5 + " " + selectedStation.parm + "\n" + selectedStation.name + "\n" @@ -440,13 +443,13 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements frain.stddev)); } - int frzlvl = dqc.pdata[pcpn_day].stn[isave].frzlvl[time_pos]; + int frzlvl = pdata[pcpn_day].stn[isave].frzlvl[time_pos]; if (selectedStation.tip == 0 && time_pos != HOURS_24 && frzlvl > -99) { stationStringBuilder.append(String.format("Freezing level %dft\n", frzlvl)); } - short snoflag = dqc.pdata[pcpn_day].stn[isave].snoflag[time_pos]; + short snoflag = pdata[pcpn_day].stn[isave].snoflag[time_pos]; if (snoflag > 0) { stationStringBuilder.append("SNOTEL error is "); @@ -469,7 +472,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements } - Rain srain = dqc.pdata[pcpn_day].stn[isave].srain[time_pos]; + Rain srain = pdata[pcpn_day].stn[isave].srain[time_pos]; if (srain.data > -98) { @@ -487,9 +490,9 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements double accumulatedAmount = get24HourPrecipTotal( dqc.QPEaccum24hr, selectedStation.hrap_x - - dqc.getHrap_grid().hrap_minx, + - DailyQcUtils.getHrap_grid().hrap_minx, selectedStation.hrap_y - - dqc.getHrap_grid().hrap_miny); + - DailyQcUtils.getHrap_grid().hrap_miny); stationStringBuilder.append(String.format( "accumulated amount %5.2f in.", accumulatedAmount)); @@ -522,9 +525,9 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements // -------------------------------------------------------- public boolean shouldFilterOut(int stationIndex) { boolean filteredOut = false; - Station station = dqc.precip_stations.get(stationIndex); + Station station = precipStationList.get(stationIndex); - Rain frain = dqc.pdata[pcpn_day].stn[stationIndex].frain[time_pos]; + Rain frain = pdata[pcpn_day].stn[stationIndex].frain[time_pos]; if ((frain.data > QcPrecipOptionsDialog.getPointFilterReverseValue()) && (frain.data < 20.00)) { @@ -532,7 +535,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements } if (station.elev > 0 - && station.elev < dqc.elevation_filter_value) { + && station.elev < DailyQcUtils.elevation_filter_value) { return true; } @@ -544,21 +547,21 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements return true; } - if (tcmode == 0 && dqc.pdata[pcpn_day].stn[stationIndex].tcons == -1) { + if (tcmode == 0 && pdata[pcpn_day].stn[stationIndex].tcons == -1) { return true; } - if (tcmode == 1 && dqc.pdata[pcpn_day].stn[stationIndex].tcons == 1) { + if (tcmode == 1 && pdata[pcpn_day].stn[stationIndex].tcons == 1) { return true; } if (dcmode == 0 - && dqc.pdata[pcpn_day].stn[stationIndex].scons[time_pos] == -1) { + && pdata[pcpn_day].stn[stationIndex].scons[time_pos] == -1) { return true; } if (dcmode == 1 - && dqc.pdata[pcpn_day].stn[stationIndex].scons[time_pos] == 1) { + && pdata[pcpn_day].stn[stationIndex].scons[time_pos] == 1) { return true; } @@ -574,7 +577,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements for (m = 0; m < tsmax; m++) { String kd = station.parm.substring(3, 5); - if ((kd.compareTo(dqc.ts[m].abr) == 0 && dflag[m + 1] == 1)) { + if ((kd.compareTo(ts[m].abr) == 0 && dflag[m + 1] == 1)) { break; } } @@ -613,7 +616,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements dataComp.setLayoutData(gd); StringBuilder stringBuilder = new StringBuilder(); - Station selectedStation = dqc.precip_stations.get(isave); + Station selectedStation = precipStationList.get(isave); loadPrecipStationText(stringBuilder, selectedStation); gd = new GridData(SWT.FILL, SWT.DEFAULT, false, false); @@ -628,8 +631,8 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements snotelButton.setText("Use SWD for PPD"); snotelButton.setLayoutData(gd); - Rain srain = dqc.pdata[pcpn_day].stn[isave].srain[time_pos]; - short sflag = dqc.pdata[pcpn_day].stn[isave].sflag[time_pos]; + Rain srain = pdata[pcpn_day].stn[isave].srain[time_pos]; + short sflag = pdata[pcpn_day].stn[isave].sflag[time_pos]; if (srain.data > -98) { if (time_pos == HOURS_24 && srain.data >= 0) { @@ -665,7 +668,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements stnQualComp.setLayoutData(gd); if (initial_qual < 0 - || dqc.pdata[pcpn_day].stn[isave].frain[time_pos].data < 0) { + || pdata[pcpn_day].stn[isave].frain[time_pos].data < 0) { naflag = 1; } else { naflag = 0; @@ -811,7 +814,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements */ private void createStnLocComp() { - Station selectedStation = dqc.precip_stations.get(isave); + Station selectedStation = precipStationList.get(isave); initial_pos = _textPosMgr.getTextPosition(selectedStation); Group stnLocGroup = new Group(shell, SWT.NONE); @@ -843,7 +846,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements b.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { - Station station = dqc.precip_stations.get(isave); + Station station = precipStationList.get(isave); int textPositionCode = (Integer) b.getData(); _textPosMgr .changeStationLocation(textPositionCode, station); @@ -884,12 +887,12 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements qualityCodeStatusLabelArray[i] = new Label(stnConComp, SWT.CENTER); - int qualityCode = dqc.pdata[pcpn_day].stn[isave].frain[i].qual; + int qualityCode = pdata[pcpn_day].stn[isave].frain[i].qual; String qualityText = getQualityTextFromCode(qualityCode); qualityCodeStatusLabelArray[i].setText(qualityText); - Rain frainI = dqc.pdata[pcpn_day].stn[isave].frain[i]; + Rain frainI = pdata[pcpn_day].stn[isave].frain[i]; precipValueTextArray[i].setEditable(true); if (frainI.data < 0) { @@ -983,8 +986,8 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements @Override public void widgetSelected(SelectionEvent e) { AppLauncherHandler alh = new AppLauncherHandler(); - String lid = dqc.precip_stations.get(isave).hb5; - String dataType = dqc.precip_stations.get(isave).parm; + String lid = precipStationList.get(isave).hb5; + String dataType = precipStationList.get(isave).parm; final String TSL_BUNDLE_LOC = "bundles/run-TimeSeriesLite.xml"; try { System.out @@ -1018,14 +1021,14 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements for (k = 0; k < 5; k++) { - dqc.pdata[pcpn_day].stn[isave].frain[k].qual = dqc.pdata[pcpn_day].stn[isave].rrain[k].qual; + pdata[pcpn_day].stn[isave].frain[k].qual = pdata[pcpn_day].stn[isave].rrain[k].qual; - dqc.pdata[pcpn_day].stn[isave].frain[k].data = dqc.pdata[pcpn_day].stn[isave].rrain[k].data; + pdata[pcpn_day].stn[isave].frain[k].data = pdata[pcpn_day].stn[isave].rrain[k].data; } reset_value = 1; - new_qual = dqc.pdata[pcpn_day].stn[isave].rrain[time_pos].qual; + new_qual = pdata[pcpn_day].stn[isave].rrain[time_pos].qual; } else { reset_value = 0; @@ -1043,7 +1046,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements } new_qual = allowedQualityCodes[data]; - dqc.pdata[pcpn_day].stn[isave].frain[time_pos].qual = (short) new_qual; + pdata[pcpn_day].stn[isave].frain[time_pos].qual = (short) new_qual; System.out.println(header + " new_qual = " + new_qual); } @@ -1051,7 +1054,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements String header = "EditPrecipStationsDialog.changeCustomFile(): "; - String pathName = getStationListPath(dqc.currentQcArea); + String pathName = getStationListPath(DailyQcUtils.currentQcArea); String station_list_custom_file = pathName + "_label_position"; int i; int time_pos; @@ -1065,10 +1068,10 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements Button rpbutton = QcPrecipOptionsDialog.renderGridsBtn; int tcmode = OtherPrecipOptions.tcmode; BufferedWriter out = null; - int pcp_flag = dqc.pcp_flag; - int grids_flag = dqc.grids_flag; - int points_flag = dqc.points_flag; - int map_flag = dqc.map_flag; + int pcp_flag = DailyQcUtils.pcp_flag; + int grids_flag = DailyQcUtils.grids_flag; + int points_flag = DailyQcUtils.points_flag; + int map_flag = DailyQcUtils.map_flag; File custom = new File(station_list_custom_file); custom.setReadable(true, false); custom.setWritable(true, false); @@ -1092,7 +1095,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements out = new BufferedWriter(new FileWriter(custom)); for (i = 0; i < max_stations; i++) { - Station station = dqc.precip_stations.get(i); + Station station = precipStationList.get(i); String rec = String.format("%s %s %d %d\n", station.hb5, station.parm, station.xadd, station.yadd); out.write(rec); @@ -1120,26 +1123,26 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements /* snotel path */ if (snow == true - && ((bval == true && dqc.pdata[pcpn_day].stn[isave].sflag[HOURS_24] == -1) || (bval == false && dqc.pdata[pcpn_day].stn[isave].sflag[HOURS_24] == 1))) { + && ((bval == true && pdata[pcpn_day].stn[isave].sflag[HOURS_24] == -1) || (bval == false && pdata[pcpn_day].stn[isave].sflag[HOURS_24] == 1))) { - dqc.pdata[pcpn_day].stn[isave].sflag[HOURS_24] = (short) -dqc.pdata[pcpn_day].stn[isave].sflag[HOURS_24]; + pdata[pcpn_day].stn[isave].sflag[HOURS_24] = (short) -pdata[pcpn_day].stn[isave].sflag[HOURS_24]; - if (dqc.pdata[pcpn_day].stn[isave].sflag[HOURS_24] == 1) { + if (pdata[pcpn_day].stn[isave].sflag[HOURS_24] == 1) { - dqc.pdata[pcpn_day].stn[isave].frain[HOURS_24].data = dqc.pdata[pcpn_day].stn[isave].srain[HOURS_24].data; - dqc.pdata[pcpn_day].stn[isave].frain[HOURS_24].qual = F_VERIFIED; + pdata[pcpn_day].stn[isave].frain[HOURS_24].data = pdata[pcpn_day].stn[isave].srain[HOURS_24].data; + pdata[pcpn_day].stn[isave].frain[HOURS_24].qual = F_VERIFIED; } else { - dqc.pdata[pcpn_day].stn[isave].frain[HOURS_24].data = dqc.pdata[pcpn_day].stn[isave].rrain[HOURS_24].data; - dqc.pdata[pcpn_day].stn[isave].frain[HOURS_24].qual = F_VERIFIED; + pdata[pcpn_day].stn[isave].frain[HOURS_24].data = pdata[pcpn_day].stn[isave].rrain[HOURS_24].data; + pdata[pcpn_day].stn[isave].frain[HOURS_24].qual = F_VERIFIED; } } else { boolean value_edit_flag = false; - val = dqc.pdata[pcpn_day].stn[isave].frain[time_pos].data; + val = pdata[pcpn_day].stn[isave].frain[time_pos].data; p = -1; // if (editVal != null) // null unless a value was edited // { @@ -1158,12 +1161,12 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements /* need to ensure consistency in 6 and 24 hour data??? */ fdif = Math.abs(val - - dqc.pdata[pcpn_day].stn[isave].frain[time_pos].data); + - pdata[pcpn_day].stn[isave].frain[time_pos].data); if (fdif > .005 && p == -1 && reset_value == 0) { - dqc.pdata[pcpn_day].stn[isave].frain[k].data = val; - dqc.pdata[pcpn_day].stn[isave].frain[k].qual = F_MANUAL; - dqc.pdata[pcpn_day].stn[isave].sflag[k] = -1; + pdata[pcpn_day].stn[isave].frain[k].data = val; + pdata[pcpn_day].stn[isave].frain[k].qual = F_MANUAL; + pdata[pcpn_day].stn[isave].sflag[k] = -1; value_edit_flag = true; } @@ -1172,9 +1175,9 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements rtotal = 0; for (m = 0; m < 4; m++) { - if (dqc.pdata[pcpn_day].stn[isave].frain[m].data >= 0) { + if (pdata[pcpn_day].stn[isave].frain[m].data >= 0) { rtotal = rtotal - + dqc.pdata[pcpn_day].stn[isave].frain[m].data; + + pdata[pcpn_day].stn[isave].frain[m].data; } } @@ -1184,17 +1187,17 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements */ if ((Math - .abs(dqc.pdata[pcpn_day].stn[isave].frain[HOURS_24].data - 0.0) < 0.001) + .abs(pdata[pcpn_day].stn[isave].frain[HOURS_24].data - 0.0) < 0.001) && (time_pos == HOURS_24)) { for (m = 0; m < 4; m++) { - dqc.pdata[pcpn_day].stn[isave].frain[m].data = 0; - dqc.pdata[pcpn_day].stn[isave].frain[m].qual = F_MANUAL; + pdata[pcpn_day].stn[isave].frain[m].data = 0; + pdata[pcpn_day].stn[isave].frain[m].qual = F_MANUAL; } rtotal = 0; } if (Math.abs(rtotal - - dqc.pdata[pcpn_day].stn[isave].frain[HOURS_24].data) > .005) { + - pdata[pcpn_day].stn[isave].frain[HOURS_24].data) > .005) { read_text(); return; @@ -1204,16 +1207,16 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements else { - dqc.pdata[pcpn_day].stn[isave].frain[time_pos].qual = (short) new_qual; + pdata[pcpn_day].stn[isave].frain[time_pos].qual = (short) new_qual; /* 24 hour data set bad/good then 6 hourly bad/good also */ if (new_qual == F_BAD && time_pos == HOURS_24 - && dqc.pdata[pcpn_day].stn[isave].sflag[time_pos] == 1) { + && pdata[pcpn_day].stn[isave].sflag[time_pos] == 1) { - dqc.pdata[pcpn_day].stn[isave].frain[time_pos].data = dqc.pdata[pcpn_day].stn[isave].rrain[time_pos].data; + pdata[pcpn_day].stn[isave].frain[time_pos].data = pdata[pcpn_day].stn[isave].rrain[time_pos].data; - dqc.pdata[pcpn_day].stn[isave].sflag[time_pos] = -1; + pdata[pcpn_day].stn[isave].sflag[time_pos] = -1; } @@ -1223,7 +1226,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements for (k = 0; k < 4; k++) { /* if(pdata[pcpn_day].stn[isave].frain[k].qual!=1) */ - dqc.pdata[pcpn_day].stn[isave].frain[k].qual = (short) new_qual; + pdata[pcpn_day].stn[isave].frain[k].qual = (short) new_qual; } } @@ -1239,13 +1242,13 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements if (time_pos != HOURS_24 && new_qual == F_BAD - && dqc.pdata[pcpn_day].stn[isave].frain[HOURS_24].qual != F_ESTIMATED - && dqc.pdata[pcpn_day].stn[isave].frain[HOURS_24].data >= 0) { + && pdata[pcpn_day].stn[isave].frain[HOURS_24].qual != F_ESTIMATED + && pdata[pcpn_day].stn[isave].frain[HOURS_24].data >= 0) { if (mpe_dqc_6hr_24hr_flag == 1) { System.out .println("6hr qual code set to Bad - 24hr qual code changed to Bad\n"); // frain24.qual = (short) new_qual; - dqc.pdata[pcpn_day].stn[isave].frain[HOURS_24].qual = (short) new_qual; + pdata[pcpn_day].stn[isave].frain[HOURS_24].qual = (short) new_qual; } } @@ -1254,12 +1257,12 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements * -- */ - if (dqc.pdata[pcpn_day].stn[isave].frain[4].qual == F_BAD - || dqc.pdata[pcpn_day].stn[isave].frain[4].data < 0) { + if (pdata[pcpn_day].stn[isave].frain[4].qual == F_BAD + || pdata[pcpn_day].stn[isave].frain[4].data < 0) { if (tcmode == 0) { - dqc.pdata[pcpn_day].stn[isave].tcons = 1; + pdata[pcpn_day].stn[isave].tcons = 1; } else { - dqc.pdata[pcpn_day].stn[isave].tcons = -1; + pdata[pcpn_day].stn[isave].tcons = -1; } } } // end else @@ -1275,8 +1278,8 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements // pcp_in_use[time_pos] = -1; - if (dqc.pdata[pcpn_day].used[k] != 0) { - dqc.pdata[pcpn_day].used[k] = 2; + if (pdata[pcpn_day].used[k] != 0) { + pdata[pcpn_day].used[k] = 2; } } @@ -1296,7 +1299,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements time_pos = 40 + pcpn_day; } - if (points_flag == 1 && dqc.pcp_in_use[time_pos] == -1) { + if (points_flag == 1 && DailyQcUtils.pcp_in_use[time_pos] == -1) { k = 0; } else if (points_flag == 1 && grids_flag == -1 && map_flag == -1) { k = 0; @@ -1310,7 +1313,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements k = 4; } else if (points_flag == -1 && grids_flag == -1 && map_flag == -1) { k = 5; - } else if (points_flag == 1 && dqc.contour_flag == 1) { + } else if (points_flag == 1 && DailyQcUtils.contour_flag == 1) { k = 6; } else if (points_flag == -1 && grids_flag == -1 && map_flag == -1) { k = 7; @@ -1334,21 +1337,21 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements // do nothing } else { EstDailyStations eds = new EstDailyStations(); - eds.estimate_daily_stations(pcpn_day, dqc.precip_stations, + eds.estimate_daily_stations(pcpn_day, precipStationList, max_stations); EstPartStations eps = new EstPartStations(); - eps.estimate_partial_stations(pcpn_day, dqc.precip_stations, + eps.estimate_partial_stations(pcpn_day, precipStationList, max_stations); } QCStations qcs = new QCStations(); - qcs.quality_control_stations(pcpn_day, dqc.precip_stations, max_stations); + qcs.quality_control_stations(pcpn_day, precipStationList, max_stations); CheckConsistency cc = new CheckConsistency(); - cc.check_consistency(pcpn_day, dqc.precip_stations, max_stations); + cc.check_consistency(pcpn_day, precipStationList, max_stations); - bv.restore_bad_values(pcpn_day, dqc.precip_stations, max_stations); + bv.restore_bad_values(pcpn_day, precipStationList, max_stations); // logMessage("new_qual again %d station qual %d\n", new_qual, // pdata[pcpn_day].stn[isave].frain[4].qual); @@ -1437,7 +1440,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements /* check if there is any change in the five partial values text fields */ for (k = 0; k < 5; k++) { - Rain frainK = dqc.pdata[pcpn_day].stn[isave].frain[k]; + Rain frainK = pdata[pcpn_day].stn[isave].frain[k]; cstr = precipValueStringArray[k]; p = cstr.indexOf('M'); @@ -1483,18 +1486,18 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements String cstr; float val, fdif; // int[] pcp_in_use = DailyQcUtils.pcp_in_use; - int pcp_flag = dqc.pcp_flag; + int pcp_flag = DailyQcUtils.pcp_flag; Button rpbutton = QcPrecipOptionsDialog.renderGridsBtn; - int grids_flag = dqc.grids_flag; - int points_flag = dqc.points_flag; - int map_flag = dqc.map_flag; - int contour_flag = dqc.contour_flag; + int grids_flag = DailyQcUtils.grids_flag; + int points_flag = DailyQcUtils.points_flag; + int map_flag = DailyQcUtils.map_flag; + int contour_flag = DailyQcUtils.contour_flag; - Rain frain24 = dqc.pdata[pcpn_day].stn[isave].frain[HOURS_24]; + Rain frain24 = pdata[pcpn_day].stn[isave].frain[HOURS_24]; for (k = 0; k < 5; k++) { - Rain frain = dqc.pdata[pcpn_day].stn[isave].frain[k]; + Rain frain = pdata[pcpn_day].stn[isave].frain[k]; cstr = precipValueStringArray[k]; val = 0; @@ -1506,13 +1509,13 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements fdif = Math.abs(val - frain.data); if (p != -1) { - dqc.pdata[pcpn_day].stn[isave].frain[k].data = -1; + pdata[pcpn_day].stn[isave].frain[k].data = -1; p = -1; } else if (fdif > .005 && p == -1) { - dqc.pdata[pcpn_day].stn[isave].frain[k].data = val; - dqc.pdata[pcpn_day].stn[isave].frain[k].qual = F_MANUAL; - dqc.pdata[pcpn_day].stn[isave].sflag[k] = -1; + pdata[pcpn_day].stn[isave].frain[k].data = val; + pdata[pcpn_day].stn[isave].frain[k].qual = F_MANUAL; + pdata[pcpn_day].stn[isave].sflag[k] = -1; } cstr = null; @@ -1525,7 +1528,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements if (Math.abs(frain24.data - 0.0) < 0.001) { for (k = 0; k < 4; k++) { - dqc.pdata[pcpn_day].stn[isave].frain[k].data = 0.0f; + pdata[pcpn_day].stn[isave].frain[k].data = 0.0f; } } @@ -1539,8 +1542,8 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements // pcp_in_use[time_pos] = -1; - if (dqc.pdata[pcpn_day].used[k] != 0) { - dqc.pdata[pcpn_day].used[k] = 2; + if (pdata[pcpn_day].used[k] != 0) { + pdata[pcpn_day].used[k] = 2; } } @@ -1557,7 +1560,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements time_pos = 40 + pcpn_day; } - if (points_flag == 1 && dqc.pcp_in_use[time_pos] == -1) { + if (points_flag == 1 && DailyQcUtils.pcp_in_use[time_pos] == -1) { k = 0; } else if (points_flag == 1 && grids_flag == -1 && map_flag == -1 && contour_flag == -1) { @@ -1597,24 +1600,24 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements } else { EstDailyStations eds = new EstDailyStations(); - eds.estimate_daily_stations(pcpn_day, dqc.precip_stations, + eds.estimate_daily_stations(pcpn_day, precipStationList, max_stations); EstPartStations eps = new EstPartStations(); - eps.estimate_partial_stations(pcpn_day, dqc.precip_stations, + eps.estimate_partial_stations(pcpn_day, precipStationList, max_stations); } QCStations qcs = new QCStations(); - qcs.quality_control_stations(pcpn_day, dqc.precip_stations, max_stations); + qcs.quality_control_stations(pcpn_day, precipStationList, max_stations); CheckConsistency cc = new CheckConsistency(); - cc.check_consistency(pcpn_day, dqc.precip_stations, max_stations); + cc.check_consistency(pcpn_day, precipStationList, max_stations); - bv.restore_bad_values(pcpn_day, dqc.precip_stations, max_stations); + bv.restore_bad_values(pcpn_day, precipStationList, max_stations); if (k == 1 || k == 3) { - dqc.grids_flag = 1; + DailyQcUtils.grids_flag = 1; } OtherPrecipOptions op = new OtherPrecipOptions(); @@ -1623,7 +1626,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements } private String getStationListPath(String qcArea) { - String station_dir = dqc.mpe_station_list_dir; + String station_dir = DailyQcUtils.mpe_station_list_dir; String dir; if (qcArea != null) { diff --git a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/mouse/MPELegendInputHandler.java b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/mouse/MPELegendInputHandler.java index 98730c14c6..968428aec5 100644 --- a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/mouse/MPELegendInputHandler.java +++ b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/mouse/MPELegendInputHandler.java @@ -68,7 +68,7 @@ public class MPELegendInputHandler extends InputAdapter { if ((mouseButton == 1 || mouseButton == 3) && (MPEDisplayManager.getCurrent().isGroupedt() == false) && pe.contains(v[0], v[1]) - && (DrawDQCStations.getInstance().grids_flag == 1 || DrawDQCStations.getInstance().map_flag == 1)) { + && (DrawDQCStations.grids_flag == 1 || DrawDQCStations.map_flag == 1)) { return execute(x, y, true); } diff --git a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/rsc/PointPrecipPlotResource.java b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/rsc/PointPrecipPlotResource.java index d504d251e7..fd001b3594 100644 --- a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/rsc/PointPrecipPlotResource.java +++ b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/rsc/PointPrecipPlotResource.java @@ -70,6 +70,7 @@ import com.raytheon.viz.mpe.ui.actions.DrawDQCStations; import com.raytheon.viz.mpe.ui.actions.OtherPrecipOptions; import com.raytheon.viz.mpe.ui.dialogs.QcPrecipOptionsDialog; import com.raytheon.viz.mpe.util.DailyQcUtils; +import com.raytheon.viz.mpe.util.DailyQcUtils.Pdata; import com.raytheon.viz.mpe.util.DailyQcUtils.Station; import com.raytheon.viz.mpe.util.DailyQcUtils.Stn; import com.vividsolutions.jts.geom.Coordinate; @@ -125,6 +126,10 @@ public class PointPrecipPlotResource extends "Blue", "Blue", "Yellow", "Yellow", "Yellow2", "VioletRed", "Red", "White" }; + Pdata pdata[]; + + ArrayList station; + private int time_pos = 0; private Hashtable pdataMap; @@ -148,6 +153,8 @@ public class PointPrecipPlotResource extends public PointPrecipPlotResource(PointPrecipResourceData resourceData, LoadProperties props) { super(resourceData, props); + pdata = DailyQcUtils.pdata; + station = DailyQcUtils.precip_stations; prevPcpnDay = 0; df.setMaximumFractionDigits(2); df.setMaximumIntegerDigits(4); @@ -172,9 +179,9 @@ public class PointPrecipPlotResource extends strTree = new STRtree(); gageData = dqc.new Station(); - if (!dqc.precip_stations.isEmpty()) { + if (!DailyQcUtils.precip_stations.isEmpty()) { int i = 0; - for (ListIterator it = dqc.precip_stations.listIterator(); it + for (ListIterator it = DailyQcUtils.precip_stations.listIterator(); it .hasNext();) { gageData = it.next(); Coordinate xy = new Coordinate(); @@ -188,7 +195,7 @@ public class PointPrecipPlotResource extends kv.append(pm); dataMap.put(kv.toString(), gageData); pdataMap.put(kv.toString(), - DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[i]); + pdata[DailyQcUtils.pcpn_day].stn[i]); /* Create a small envelope around the point */ Coordinate p1 = new Coordinate(xy.x + .02, xy.y + .02); @@ -199,7 +206,7 @@ public class PointPrecipPlotResource extends data.add("STATION: " + gageData.hb5 + " VALUE: " - + DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[i].frain[time_pos].data); + + pdata[DailyQcUtils.pcpn_day].stn[i].frain[time_pos].data); strTree.insert(env, data); i++; } @@ -276,9 +283,9 @@ public class PointPrecipPlotResource extends int dcmode = OtherPrecipOptions.dcmode; int tcmode = OtherPrecipOptions.tcmode; int dmvalue = dqc.dmvalue; - int tsmax = dqc.tsmax; + int tsmax = DailyQcUtils.tsmax; boolean frzlvl_flag = dqc.frzlvl_flag; - int gage_char[] = dqc.gage_char; + int gage_char[] = DailyQcUtils.gage_char; int find_station_flag = dqc.find_station_flag; String mbuf = ""; String tbuf = ""; @@ -304,7 +311,7 @@ public class PointPrecipPlotResource extends return; } if ((station.elev >= 0) - && (station.elev < dqc.elevation_filter_value)) { + && (station.elev < DailyQcUtils.elevation_filter_value)) { return; } @@ -334,7 +341,7 @@ public class PointPrecipPlotResource extends for (m = 0; m < tsmax; m++) { if (station.parm.substring(3, 5) - .equalsIgnoreCase(dqc.ts[m].abr) + .equalsIgnoreCase(DailyQcUtils.ts[m].abr) && (DailyQcUtils.dflag[m + 1] == 1)) { break; } @@ -347,9 +354,9 @@ public class PointPrecipPlotResource extends for (m = 0; m < 9; m++) { if ((m == pdataMap.get(key).frain[time_pos].qual) - && (dqc.qflag[m] == 1)) { + && (DailyQcUtils.qflag[m] == 1)) { break; - } else if ((m == 7) && (dqc.qflag[7] == 1) + } else if ((m == 7) && (DailyQcUtils.qflag[7] == 1) && (pdataMap.get(key).frain[time_pos].data == -99) && (pdataMap.get(key).frain[time_pos].qual == -99)) { break; @@ -363,8 +370,8 @@ public class PointPrecipPlotResource extends /* locate station in data stream */ if (((type == 4) || (type == 5)) - && (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[time_pos] == 0) - && (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].level == 0)) { + && (pdata[DailyQcUtils.pcpn_day].used[time_pos] == 0) + && (pdata[DailyQcUtils.pcpn_day].level == 0)) { return; } if (((type == 4) || (type == 5)) @@ -410,8 +417,8 @@ public class PointPrecipPlotResource extends tbuf = station.name; } else if (type == 4) { - if ((DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[time_pos] == 0) - && (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].level == 0)) { + if ((pdata[DailyQcUtils.pcpn_day].used[time_pos] == 0) + && (pdata[DailyQcUtils.pcpn_day].level == 0)) { return; } @@ -435,8 +442,8 @@ public class PointPrecipPlotResource extends tbuf = mbuf; } else if (type == 5) { - if ((DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[time_pos] == 0) - && (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].level == 0)) { + if ((pdata[DailyQcUtils.pcpn_day].used[time_pos] == 0) + && (pdata[DailyQcUtils.pcpn_day].level == 0)) { return; } diff --git a/cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/util/Compute1HrNeighborList.java b/cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/util/Compute1HrNeighborList.java index 99cef542c2..35540847ed 100644 --- a/cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/util/Compute1HrNeighborList.java +++ b/cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/util/Compute1HrNeighborList.java @@ -60,6 +60,7 @@ import com.vividsolutions.jts.geom.Coordinate; * Date Ticket# Engineer Description * ------------ ---------- ----------- -------------------------- * Apr 20, 2009 snaples Initial creation + * Mar 2, 2015 15660 snaples Fixed issues with the file writing and creating the new files. * * * @@ -107,19 +108,19 @@ public class Compute1HrNeighborList { DailyQcUtils dqc = DailyQcUtils.getInstance(); - Station[] disagg_station_6hr = Disagg6Hr.disagg_station_6hr; + Station[] disagg_station_6hr = null; - Dist[] dist_6hr_to_1hr = Disagg6Hr.dist_6hr_to_1hr; + Dist[] dist_6hr_to_1hr = null; public static Values_1hr[] valuesReadIn = null; BufferedWriter disagg_log_fd = Disagg6Hr.disagg_log_fd; - Date station_list_time_stamp_6hr; + Date station_list_time_stamp_6hr = new Date(); String disagg_1hr_neighbors_fd = Disagg6Hr.disagg_1hr_neighbors_fd; - String neighbor_list_file = Disagg6Hr.neighbor_list_file; + String neighbor_list_file = null; int ret_neighbors = Disagg6Hr.ret_neighbors; @@ -139,9 +140,7 @@ public class Compute1HrNeighborList { public static Station[] disagg_station_1hr; -// int num_days_to_qc = DailyQcUtils.qcDays; - -// static int mpe_dqc_max_precip_neighbors = DailyQcUtils.mpe_dqc_max_precip_neighbors; + int mpe_dqc_max_precip_neighbors = DailyQcUtils.mpe_dqc_max_precip_neighbors; public Compute1HrNeighborList() { // default constructor @@ -159,17 +158,20 @@ public class Compute1HrNeighborList { MeanMonthlyPrecip mmp = new MeanMonthlyPrecip(); Isoh isoh = mmp.getIsoh(); - int smonth = dqc.smonth; - int emonth = dqc.emonth; + int smonth = DailyQcUtils.smonth; + int emonth = DailyQcUtils.emonth; String hb5 = ""; double dist1, dist2, dist; - double[] sorted = new double[dqc.mpe_dqc_max_precip_neighbors]; + double[] sorted = new double[mpe_dqc_max_precip_neighbors]; int ind, h, i, ier, l, m, k; - char[] kbuf = new char[200]; QCHRAP hrap_point = new QCHRAP(); float lat, lon; double conv = .0174533; + disagg_station_6hr = Disagg6Hr.disagg_station_6hr; + dist_6hr_to_1hr = Disagg6Hr.dist_6hr_to_1hr; + neighbor_list_file = Disagg6Hr.neighbor_list_file; + int num_disagg_stations = Disagg6Hr.num_disagg_stations; int file_error = 0; String area_id; @@ -189,11 +191,10 @@ public class Compute1HrNeighborList { disagg_1hr_stations_dir = appsDefaults.getToken("mpe_station_list_dir"); area_id = appsDefaults.getToken("mpe_site_id"); BufferedReader in = null; - BufferedWriter out = disagg_log_fd; + BufferedWriter out = Disagg6Hr.getDisagg_log_fd(); BufferedWriter out2 = null; try { - // out = new BufferedWriter(new FileWriter(disagg_log_fd)); if (area_id.length() > 0) { disagg_1hr_stations_path = String.format("%s/%s%s", @@ -210,7 +211,8 @@ public class Compute1HrNeighborList { } /* Read the record containing the number of hourly stations. */ - int p = in.read(kbuf, 0, 200); + String hstat = in.readLine().trim(); + int p = hstat.length(); if (p == -1) { out.write("could not read number of hourly stations from file\n"); @@ -219,10 +221,9 @@ public class Compute1HrNeighborList { } - ier = Integer.parseInt(kbuf.toString()); - num_records = ier; + num_records = Integer.parseInt(hstat); - if (ier < 1) { + if (num_records < 1) { out.write("could not read number of hourly stations from file\n"); in.close(); return; @@ -249,7 +250,7 @@ public class Compute1HrNeighborList { /* Read the PPH stations. */ i = 0; for (ind = 0; ind < num_records; ++ind) { - String pp = in.readLine(); + String pp = in.readLine().trim(); if (pp == null) { out.write(String @@ -266,10 +267,10 @@ public class Compute1HrNeighborList { lon = s.nextFloat(); // ier=sscanf(kbuf,"%s %s %f %f ",hb5, temp_str, &lat, &lon); - + disagg_station_1hr[i] = new DailyQcUtils().new Station(); disagg_station_1hr[i].isoh = new float[24]; disagg_station_1hr[i].hb5 = ""; - disagg_station_1hr[i].index = new short[dqc.mpe_dqc_max_precip_neighbors]; + disagg_station_1hr[i].index = new short[DailyQcUtils.mpe_dqc_max_precip_neighbors]; disagg_station_1hr[i].parm = ""; disagg_station_1hr[i].cparm = ""; @@ -295,7 +296,11 @@ public class Compute1HrNeighborList { disagg_station_1hr[i].hb5 = hb5; disagg_station_1hr[i].lat = lat; - disagg_station_1hr[i].lon = lon; + float testlon = lon; + if (testlon > 0) { + testlon = testlon * -1; + } + disagg_station_1hr[i].lon = testlon; /* * Set elev to 1 ft. The value of 0 creates problems with @@ -345,10 +350,10 @@ public class Compute1HrNeighborList { } - if (((int) hrap_point.x - xor) < maxx - && ((int) hrap_point.y - yor) < maxy - && ((int) hrap_point.x - xor) >= 0 - && ((int) hrap_point.y - yor) >= 0) { + if (((int) hrap_point.x < maxx) + && ((int) hrap_point.y < maxy) + && ((int) hrap_point.x >= xor) + && ((int) hrap_point.y >=yor)) { disagg_station_1hr[i].isoh[k] = isoh.value[k][(int) hrap_point.y - yor][(int) hrap_point.x - xor]; @@ -357,7 +362,7 @@ public class Compute1HrNeighborList { } i++; - + s.close(); } num_records = num_distinct_1hrs; @@ -394,7 +399,7 @@ public class Compute1HrNeighborList { } - if (dqc.mpe_dqc_max_precip_neighbors != num_previous_neighbors + if (mpe_dqc_max_precip_neighbors != num_previous_neighbors || timestamp_previous_neighbors .before(station_list_time_stamp_6hr)) { generate = 1; @@ -402,11 +407,11 @@ public class Compute1HrNeighborList { } else { out.write(String.format( "Reading %d nearest neighbor 1hr stations\n", - dqc.mpe_dqc_max_precip_neighbors)); + mpe_dqc_max_precip_neighbors)); for (i = 0; i < Disagg6Hr.num_disagg_stations; i++) { lines = in.readLine(); - for (l = 0; l < dqc.mpe_dqc_max_precip_neighbors; l++) { + for (l = 0; l < mpe_dqc_max_precip_neighbors; l++) { // read from neighbor list file // read the 1hr station info for each 6hr station lines = in.readLine(); @@ -438,6 +443,7 @@ public class Compute1HrNeighborList { generate = 0; } + s.close(); } else { generate = 1; @@ -453,9 +459,9 @@ public class Compute1HrNeighborList { // --------------------------------------------------------------- out.write(String.format( "Generating %d nearest neighbor 1hr stations\n", - dqc.mpe_dqc_max_precip_neighbors)); + mpe_dqc_max_precip_neighbors)); for (i = 0; i < Disagg6Hr.num_disagg_stations; i++) { - for (l = 0; l < dqc.mpe_dqc_max_precip_neighbors; l++) { + for (l = 0; l < mpe_dqc_max_precip_neighbors; l++) { sorted[l] = 9999999; } @@ -482,9 +488,9 @@ public class Compute1HrNeighborList { // distance from the array. // Note that the 'sorted' array is sorted literally! - for (l = 0; l < dqc.mpe_dqc_max_precip_neighbors; l++) { + for (l = 0; l < mpe_dqc_max_precip_neighbors; l++) { if (dist < sorted[l]) { - for (h = dqc.mpe_dqc_max_precip_neighbors - 1; h > l; h--) { + for (h = mpe_dqc_max_precip_neighbors - 1; h > l; h--) { sorted[h] = sorted[h - 1]; disagg_station_6hr[i].index[h] = disagg_station_6hr[i].index[h - 1]; @@ -516,7 +522,7 @@ public class Compute1HrNeighborList { out2 = new BufferedWriter(new FileWriter(neighbor_list_file)); if (generate == 1) { in.close(); - out2.write(String.format("%d\n", dqc.mpe_dqc_max_precip_neighbors)); + out2.write(String.format("%d\n", mpe_dqc_max_precip_neighbors)); File nlf = new File(neighbor_list_file); station_list_time_stamp_6hr.setTime(nlf.lastModified()); out2.write(String.format("%d\n", @@ -525,17 +531,17 @@ public class Compute1HrNeighborList { } /* print out list of 1hr nearest neighbor stations */ - for (i = 0; i < Disagg6Hr.num_disagg_stations; i++) { + for (i = 0; i < num_disagg_stations; i++) { out.write(String .format("---%s---\n", disagg_station_6hr[i].hb5)); if (generate == 1) { out2.write(String.format("%s\n", disagg_station_6hr[i].hb5)); } - for (l = 0; l < dqc.mpe_dqc_max_precip_neighbors; l++) { + for (l = 0; l < mpe_dqc_max_precip_neighbors; l++) { temp_buf = String - .format("%d\t%s\t%5.2f\t%5.2f\t%6.2lf", + .format("%d\t%s\t%5.2f\t%5.2f\t%6.2f", disagg_station_6hr[i].index[l], disagg_station_1hr[disagg_station_6hr[i].index[l]].hb5, disagg_station_1hr[disagg_station_6hr[i].index[l]].lat, @@ -548,7 +554,6 @@ public class Compute1HrNeighborList { out.write(String.format("%s\n", temp_buf)); } } - out.close(); out2.close(); } catch (IOException e) { @@ -557,9 +562,6 @@ public class Compute1HrNeighborList { e.printStackTrace(); } finally { try { - if (out != null) { - out.close(); - } if (out2 != null) { out2.close(); } @@ -588,25 +590,25 @@ public class Compute1HrNeighborList { int day = 0; int i, j, k; int num_disagg_stations = Disagg6Hr.num_disagg_stations; - int[] temp = new int[num_disagg_stations * dqc.mpe_dqc_max_precip_neighbors]; - BufferedWriter out = disagg_log_fd; + int[] temp = new int[num_disagg_stations * mpe_dqc_max_precip_neighbors]; + BufferedWriter out = Disagg6Hr.getDisagg_log_fd(); + disagg_station_6hr = Disagg6Hr.disagg_station_6hr; + int qc_days = DailyQcUtils.qcDays; try { - // out = new BufferedWriter(new FileWriter(disagg_log_fd)); - out.write(" Reading 1hr Precip Gage Values \n"); sorted_list_1hr = new int[num_disagg_stations - * dqc.mpe_dqc_max_precip_neighbors]; + * mpe_dqc_max_precip_neighbors]; /* sorted_list_1hr array is array of indexes of 1hr gages */ /* defined in compute_1hr_station_list function */ - for (i = 0; i < num_disagg_stations * dqc.mpe_dqc_max_precip_neighbors; i++) { + for (i = 0; i < num_disagg_stations * mpe_dqc_max_precip_neighbors; i++) { sorted_list_1hr[i] = -1; } for (i = 0; i < num_disagg_stations; i++) { - for (j = 0; j < dqc.mpe_dqc_max_precip_neighbors; j++) { - sorted_list_1hr[dqc.mpe_dqc_max_precip_neighbors * i + j] = disagg_station_6hr[i].index[j]; + for (j = 0; j < mpe_dqc_max_precip_neighbors; j++) { + sorted_list_1hr[mpe_dqc_max_precip_neighbors * i + j] = disagg_station_6hr[i].index[j]; } } @@ -631,7 +633,7 @@ public class Compute1HrNeighborList { .format(" number of non-duplicate 1hr nearest-neighbor stations = %d\n", sorted_array_size)); - valuesReadIn = new Values_1hr[dqc.qcDays * sorted_array_size]; + valuesReadIn = new Values_1hr[qc_days * sorted_array_size]; out.write(String.format( "endtime_disagg = %10.0f starttime_disagg = %10.0f\n", @@ -665,7 +667,7 @@ public class Compute1HrNeighborList { .format("precip totalling routines found no data for gage %s and missing data substituted \n", disagg_station_1hr[sorted_list_1hr[i]].hb5)); end_time_temp = endtime_disagg; - for (k = 0; k < dqc.qcDays; k++) { + for (k = 0; k < qc_days; k++) { valuesReadIn[k * sorted_array_size + i].index_in_1hr_list = sorted_list_1hr[i]; valuesReadIn[k * sorted_array_size + i].ID = disagg_station_1hr[sorted_list_1hr[i]].hb5; for (j = 0; j < 24; j++) { @@ -691,7 +693,7 @@ public class Compute1HrNeighborList { end_time_temp = endtime_disagg; Calendar nt = Calendar.getInstance(TimeZone .getTimeZone("GMT")); - for (k = 0; k < dqc.qcDays; k++) { + for (k = 0; k < qc_days; k++) { valuesReadIn[k * sorted_array_size + i].ID = disagg_station_1hr[sorted_list_1hr[i]].hb5; for (j = 0; j < 24; j++) { @@ -720,17 +722,8 @@ public class Compute1HrNeighborList { } /* end for (i=0 ... */ out.flush(); - out.close(); } catch (IOException e) { return; - } finally { - try { - if (out != null) { - out.close(); - } - } catch (IOException e) { - e.printStackTrace(); - } - } + } } } diff --git a/cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/util/DailyQcUtils.java b/cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/util/DailyQcUtils.java index 01360606f9..2dc67e2220 100644 --- a/cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/util/DailyQcUtils.java +++ b/cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/util/DailyQcUtils.java @@ -91,7 +91,7 @@ public class DailyQcUtils { private Date selDate; - public int qcDays; + public static int qcDays; public int firstTok = 1; @@ -185,7 +185,7 @@ public class DailyQcUtils { private String mpe_dqc_warningpopup_val = ""; - public String mpe_gridmasks; + public static String mpe_gridmasks; public String mpe_rfc_name; @@ -225,15 +225,15 @@ public class DailyQcUtils { public String mpe_dev_temperature_dir; - public String mpe_station_list_dir; + public static String mpe_station_list_dir; public String mpe_climo_list_dir; public String mpe_prism_dir; - public int mpe_dqc_max_precip_neighbors; + public static int mpe_dqc_max_precip_neighbors; - public int mpe_dqc_max_temp_neighbors; + public static int mpe_dqc_max_temp_neighbors; public float mpe_dqc_precip_deviation; @@ -301,13 +301,13 @@ public class DailyQcUtils { public int pid = newPid(); - public int emonth; + public static int emonth; - public int smonth; + public static int smonth; private int max_basins; - public Calendar btime = Calendar.getInstance(TimeZone.getTimeZone("GMT")); + public static Calendar btime = Calendar.getInstance(TimeZone.getTimeZone("GMT")); /* Define timefile file extensions. */ public String timefile[][] = { diff --git a/cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/util/Delete1hrDisaggValues.java b/cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/util/Delete1hrDisaggValues.java index 728c930182..42dd577051 100644 --- a/cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/util/Delete1hrDisaggValues.java +++ b/cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/util/Delete1hrDisaggValues.java @@ -70,6 +70,7 @@ import com.raytheon.viz.mpe.util.Disagg6Hr.Values_6hr; * Date Ticket# Engineer Description * ------------ ---------- ----------- -------------------------- * Jun 1, 2011 snaples Initial creation + * Mar 2, 2015 15660 snaples Fixed issues with null pointer on writing to closed file. * * * @@ -79,15 +80,13 @@ import com.raytheon.viz.mpe.util.Disagg6Hr.Values_6hr; public class Delete1hrDisaggValues { - DailyQcUtils dqc = DailyQcUtils.getInstance(); - public void delete1hrDisaggValues() { Values_1hr[] disaggValues = Disagg6Hr.disaggValues; - BufferedWriter disagg_log_fd = Disagg6Hr.disagg_log_fd; + BufferedWriter disagg_log_fd = Disagg6Hr.getDisagg_log_fd(); String[] obsdate = Disagg6Hr.obsdate; Date[] obsdate_date_t = Disagg6Hr.obsdate_date_t; Values_6hr[] values6hr = Disagg6Hr.values6hr; -// int num_days_to_qc = dqc.qcDays; + int num_days_to_qc = DailyQcUtils.qcDays; int num_disagg_stations = Disagg6Hr.num_disagg_stations; String ts = ""; @@ -102,8 +101,6 @@ public class Delete1hrDisaggValues { ts = "PZ"; try { - // out = new BufferedWriter(new FileWriter(disagg_log_fd)); - /*-----------------------------------------*/ /* populate the HourlyPP structure */ /*-----------------------------------------*/ @@ -123,14 +120,14 @@ public class Delete1hrDisaggValues { out.write("\nIn delete1hrDisaggValues\n"); - for (j = 0; j < dqc.qcDays + 1; j++) { + for (j = 0; j < num_days_to_qc + 1; j++) { out.write("\n"); out.write(String.format(" \t Day %d\n", j)); hourlyPPId.setObsdate(obsdate_date_t[j]); jj = j; - if (j == dqc.qcDays) { + if (j == num_days_to_qc) { jj = jj - 1; } @@ -184,7 +181,6 @@ public class Delete1hrDisaggValues { out.write("\n"); /* update record */ - GagePPWrite.update_gage_rec(hourlyPP); } else if (j == jj) { @@ -230,7 +226,6 @@ public class Delete1hrDisaggValues { out.write("\n"); /* update record */ - GagePPWrite.update_gage_rec(hourlyPP); } @@ -240,18 +235,6 @@ public class Delete1hrDisaggValues { } catch (IOException e) { return; } - // finally { - // try { - // if (out != null) { - // out.close(); - // } - // - // } catch (IOException e) { - // e.printStackTrace(); - // } - // - // } - } public int deleteHourlyPP(String where) { diff --git a/cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/util/Disagg6Hr.java b/cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/util/Disagg6Hr.java index f7c337a984..97126c1e94 100644 --- a/cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/util/Disagg6Hr.java +++ b/cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/util/Disagg6Hr.java @@ -58,6 +58,7 @@ import com.vividsolutions.jts.geom.Coordinate; * Date Ticket# Engineer Description * ------------ ---------- ----------- -------------------------- * Apr 20, 2009 snaples Initial creation + * Mar 2, 2015 15660 snaples Fixed the disagg logging and corrected the procedure. * * * @@ -114,7 +115,7 @@ public class Disagg6Hr { public static int disagg_maxx, disagg_maxy; - Calendar station_list_time_stamp_6hr; + Date station_list_time_stamp_6hr; public static int ret_neighbors = -1; @@ -143,9 +144,9 @@ public class Disagg6Hr { public static Date end_time_temp; - // int num_days_to_qc; + int num_days_to_qc; - Date btim = dqc.btime.getTime(); + Date btim = DailyQcUtils.btime.getTime(); Values_1hr valuesReadIn; @@ -155,7 +156,7 @@ public class Disagg6Hr { static int first = 0; - int mpe_dqc_max_precip_neighbors = dqc.mpe_dqc_max_precip_neighbors; + int mpe_dqc_max_precip_neighbors = DailyQcUtils.mpe_dqc_max_precip_neighbors; DisaggGridMethod dgm = new DisaggGridMethod(); @@ -228,34 +229,36 @@ public class Disagg6Hr { } } - public void disagg6hr() { + public void disagg6hr() throws IOException { long start_time, end_time; String logdir; - String station_list_dir = dqc.mpe_station_list_dir; + String station_list_dir = DailyQcUtils.mpe_station_list_dir; String disagg_log_file; - String gridmask_dir = dqc.mpe_gridmasks; + String gridmask_dir = DailyQcUtils.mpe_gridmasks; String station_list_file; String mpe_disagg_execute; - // char buf[] = new char[10]; String buf = ""; String cval6hr = ""; + station_list_time_stamp_6hr = SimulatedTime.getSystemTime().getTime(); Date currentTime = SimulatedTime.getSystemTime().getTime(); String datestring = ""; final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); sdf.setTimeZone(TimeZone.getTimeZone("GMT")); final SimpleDateFormat ddf = new SimpleDateFormat("yyyyMMddHHMM"); ddf.setTimeZone(TimeZone.getTimeZone("GMT")); - int max_stations = dqc.precip_stations.size(); + int max_stations = DailyQcUtils.precip_stations.size(); ArrayList station = new ArrayList(); + station = DailyQcUtils.precip_stations; + num_days_to_qc = DailyQcUtils.qcDays; int ier, k = 0, j, i, ii; - int emonth = dqc.emonth; - int smonth = dqc.smonth; + int emonth = DailyQcUtils.emonth; + int smonth = DailyQcUtils.smonth; MeanMonthlyPrecip mmp = new MeanMonthlyPrecip(); Isoh isoh = mmp.getIsoh(); - String area_val_local = dqc.currentQcArea; - Pdata pdata[] = dqc.pdata; + String area_val_local = DailyQcUtils.currentQcArea; + Pdata pdata[] = DailyQcUtils.pdata; AppsDefaults appsDefaults = AppsDefaults.getInstance(); QCHRAP hrap_point = new QCHRAP(); @@ -265,9 +268,7 @@ public class Disagg6Hr { start_time = tt.getTime(); - // num_days_to_qc = DailyQcUtils.qcDays; - // station = DailyQcUtils.precip_stations; currentTime.getTime(); datestring = ddf.format(currentTime); @@ -281,6 +282,10 @@ public class Disagg6Hr { neighbor_list_file = String.format("%s/%s_disagg_1hr_neighbors", gridmask_dir, area_val_local); disagg_stations_fd = station_list_file; + BufferedReader in = null; + BufferedWriter out = null; + FileWriter fd_log = null; + /*---------------------------------------------*/ /* First time only: */ @@ -309,27 +314,43 @@ public class Disagg6Hr { disagg_log_file = String .format("%s/disagg_%sz", logdir, datestring); - // BufferedWriter disagg_log_fd = null; - BufferedReader in = null; try { in = new BufferedReader(new FileReader(disagg_stations_fd)); - disagg_log_fd = new BufferedWriter(new FileWriter( - disagg_log_file)); - + fd_log = new FileWriter(disagg_log_file); + out = new BufferedWriter(fd_log); + disagg_log_fd = out; disagg_log_fd.write("\t\t-- 6hr to 1hr Disaggregation -- \n"); disagg_log_fd.write("\t\t-- Version AWIPS II 11.9.0-1 -- \n"); disagg_log_fd.write("hydrologic day = 12z - 12z\n"); first = 1; - - disagg_method = appsDefaults.getToken("mpe_disagg_method"); + } catch (IOException e) { + statusHandler.handle(Priority.WARN, + "Warning: Could not open disagg log file...\n" + + "exiting from disagg routine..mpe_editor continuing...\n", + e); + e.printStackTrace(); + return; + } + } // first block + logdir = appsDefaults.getToken("mpe_editor_logs_dir"); + disagg_log_file = String.format("%s/disagg_%sz", logdir, datestring); + disagg_method = appsDefaults.getToken("mpe_disagg_method"); delete_values = appsDefaults.getToken("mpe_disagg_delete_1hr"); + if(delete_values == null){ + delete_values = "on"; + } - disagg_log_fd.write(String.format( - "6hr disagg station list file name: %s\n", - station_list_file)); + try { + disagg_log_fd.write(String.format( + "6hr disagg station list file name: %s\n", + station_list_file)); + } catch (IOException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } xor = (int) MPEDataManager.getInstance().getHRAPExtent() .getMinX(); @@ -345,15 +366,23 @@ public class Disagg6Hr { endtime_disagg = btim; Calendar nt = Calendar.getInstance(TimeZone.getTimeZone("GMT")); nt.setTime(endtime_disagg); - nt.add(Calendar.SECOND, -(dqc.qcDays * 86400)); + nt.add(Calendar.SECOND, -(num_days_to_qc * 86400)); starttime_disagg = nt.getTime(); end_time_temp = endtime_disagg; - disagg_log_fd.write(String.format( - " endtime = %10.0f starttime = %10.0f\n", - (float) endtime_disagg.getTime(), - (float) starttime_disagg.getTime())); + try { + disagg_log_fd.write(String.format( + " endtime = %10.0f starttime = %10.0f\n", + (float) endtime_disagg.getTime(), + (float) starttime_disagg.getTime())); + } catch (IOException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + if(in == null){ + in = new BufferedReader(new FileReader(disagg_stations_fd)); + } buf = in.readLine(); num_disagg_stations = Integer.parseInt(buf); if (num_disagg_stations <= 0) { @@ -363,11 +392,11 @@ public class Disagg6Hr { return; } - disagg_station_6hr = new Station[(dqc.qcDays * num_disagg_stations)]; - disaggValues = new Values_1hr[(dqc.qcDays * num_disagg_stations)]; - values6hr = new Values_6hr[(dqc.qcDays * num_disagg_stations)]; + disagg_station_6hr = new Station[(num_days_to_qc * num_disagg_stations)]; + disaggValues = new Values_1hr[(num_days_to_qc * num_disagg_stations)]; + values6hr = new Values_6hr[(num_days_to_qc * num_disagg_stations)]; - for (int z = 0; z < (dqc.qcDays * num_disagg_stations); z++) { + for (int z = 0; z < (num_days_to_qc * num_disagg_stations); z++) { disagg_station_6hr[z] = dqc.new Station(); disaggValues[z] = new Values_1hr(); values6hr[z] = new Values_6hr(); @@ -378,12 +407,12 @@ public class Disagg6Hr { dist_6hr_to_1hr[z] = new Dist(); } - obsdate = new String[(dqc.qcDays + 1)]; - obsdate_date_t = new Date[dqc.qcDays + 1]; + obsdate = new String[(num_days_to_qc + 1)]; + obsdate_date_t = new Date[num_days_to_qc + 1]; disagg_log_fd.write(" 6hr Disagg Station List\n"); - for (j = 0; j < dqc.qcDays; j++) { + for (j = 0; j < num_days_to_qc; j++) { for (i = 0; i < num_disagg_stations; i++) { index = (j * num_disagg_stations) + i; @@ -405,15 +434,9 @@ public class Disagg6Hr { disagg_station_6hr[index].parm = ""; disagg_station_6hr[index].cparm = ""; - // char[] kbuf = new char[200]; if (j == 0) { - // int p = in.read(kbuf, 0, 80); - // - // if (p <= 0) { if (in.ready()) { buf = in.readLine(); - // break; - // } } Scanner s = new Scanner(buf); @@ -432,7 +455,7 @@ public class Disagg6Hr { ll); Coordinate gridCell = null; try { - try { +// try { gridCell = rc .asGridCell( com.raytheon.uf.common.hydro.spatial.HRAP @@ -445,8 +468,7 @@ public class Disagg6Hr { } catch (FactoryException e) { // TODO Auto-generated catch block e.printStackTrace(); - } - } catch (Exception e) { + } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } @@ -476,17 +498,17 @@ public class Disagg6Hr { } - if ((((int) hrap_point.x - xor) < maxx) - && (((int) hrap_point.y - yor) < maxy) - && (((int) hrap_point.x - xor) >= 0) - && (((int) hrap_point.y - yor) >= 0)) { + if ((((int) hrap_point.x) < maxx) + && (((int) hrap_point.y) < maxy) + && (((int) hrap_point.x >= xor)) + && (((int) hrap_point.y >= yor))) { disagg_station_6hr[i].isoh[k] = isoh.value[k][(int) hrap_point.y - yor][(int) hrap_point.x - xor]; } } - + s.close(); } else { values6hr[index].hrapx_local = values6hr[i].hrapx_local; values6hr[index].hrapy_local = values6hr[i].hrapy_local; @@ -558,16 +580,16 @@ public class Disagg6Hr { } - obsdate[dqc.qcDays] = ""; + obsdate[num_days_to_qc] = ""; // note that end_time_temp is not being decremented // as in the above loop because it will be decremented // one extra time in the loop already. - obsdate[dqc.qcDays] = sdf.format(end_time_temp); + obsdate[num_days_to_qc] = sdf.format(end_time_temp); disagg_log_fd.write(String.format( - "datestring for disagg day %d = %s\n", dqc.qcDays, - obsdate[dqc.qcDays])); - obsdate_date_t[dqc.qcDays] = end_time_temp; + "datestring for disagg day %d = %s\n", num_days_to_qc, + obsdate[num_days_to_qc])); + obsdate_date_t[num_days_to_qc] = end_time_temp; /* print 6hr values to log */ disagg_log_fd.write("\n"); @@ -577,7 +599,7 @@ public class Disagg6Hr { index = -1; for (i = 0; i < num_disagg_stations; i++) { - for (j = 0; j < dqc.qcDays; j++) { + for (j = 0; j < num_days_to_qc; j++) { index = (j * num_disagg_stations) + i; if (values6hr[index].ID @@ -665,18 +687,13 @@ public class Disagg6Hr { long stm = st.lastModified(); Date std = SimulatedTime.getSystemTime().getTime(); std.setTime(stm); - station_list_time_stamp_6hr.setTime(std); + station_list_time_stamp_6hr.setTime(std.getTime()); st = new File(neighbor_list_file); ret_neighbors = (int) st.lastModified(); - // disagg_log_fd.close(); c1n.compute1hrStationList(); c1n.read1hrGageVals(); - } - // disagg_log_fd = new BufferedWriter(new FileWriter( - // disagg_log_file)); disagg_log_fd.write("---------------------\n"); - // disagg_log_fd.close(); /*---------------------------------------------*/ /* disagg 6hr to 1hr values */ @@ -727,31 +744,9 @@ public class Disagg6Hr { disagg_log_fd.close(); in.close(); - // return; - } catch (IOException e) { - statusHandler - .handle(Priority.WARN, - "Warning: Could not open disagg log file...\n" - + "exiting from disagg routine..mpe_editor continuing...\n", - e); - e.printStackTrace(); - return; - - } finally { - try { - if (disagg_log_fd != null) { - disagg_log_fd.close(); - } - if (in != null) { - in.close(); - } - - } catch (IOException e) { - e.printStackTrace(); - } - } - } - } - // here + } + public static BufferedWriter getDisagg_log_fd() { + return disagg_log_fd; + } // here } diff --git a/cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/util/DisaggPointMethod.java b/cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/util/DisaggPointMethod.java index 55cc7ecb88..511a10435a 100644 --- a/cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/util/DisaggPointMethod.java +++ b/cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/util/DisaggPointMethod.java @@ -71,7 +71,7 @@ public class DisaggPointMethod { double[][] totals_1hr; - int mpe_dqc_max_precip_neighbors = dqc.mpe_dqc_max_precip_neighbors; + int mpe_dqc_max_precip_neighbors = DailyQcUtils.mpe_dqc_max_precip_neighbors; Dist[] dist_6hr_to_1hr = Disagg6Hr.dist_6hr_to_1hr; @@ -99,7 +99,7 @@ public class DisaggPointMethod { float stotal = 0.f; int num_missing_periods = 0; int num_disagg_stations = Disagg6Hr.num_disagg_stations; - int num_days_to_qc = dqc.qcDays; + int num_days_to_qc = DailyQcUtils.qcDays; // int num_1hrs_reported = 0; boolean go_to_next_neighbor = false; boolean next_6hr_station = false; diff --git a/cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/util/InitPrecipClimo.java b/cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/util/InitPrecipClimo.java index 7bf9b41fcf..0ae1e18bf9 100644 --- a/cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/util/InitPrecipClimo.java +++ b/cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/util/InitPrecipClimo.java @@ -36,6 +36,7 @@ import com.raytheon.viz.mpe.util.DailyQcUtils.Station; * Date Ticket# Engineer Description * ------------ ---------- ----------- -------------------------- * Feb 23, 2009 snaples Initial creation + * Mar 2, 2015 15660 snaples Fixed issue with if statement testing CPARM and checking for both values to be true, broken logic. * * * @@ -133,8 +134,8 @@ public class InitPrecipClimo { continue; } - if (tokens[1].equalsIgnoreCase("PPMPBCM") - && tokens[1].equalsIgnoreCase("PPMRZCM")) { + if (!(tokens[1].equalsIgnoreCase("PPMPBCM")) + && !(tokens[1].equalsIgnoreCase("PPMRZCM"))) { line = in.readLine(); ++record_count; continue; diff --git a/cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/util/MeanMonthlyPrecip.java b/cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/util/MeanMonthlyPrecip.java index e204132de6..75a404f7cf 100644 --- a/cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/util/MeanMonthlyPrecip.java +++ b/cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/util/MeanMonthlyPrecip.java @@ -44,6 +44,7 @@ import com.raytheon.viz.mpe.core.MPEDataManager; * ------------ ---------- ----------- -------------------------- * Feb 24, 2009 snaples Initial creation * April , 2012 8672 lbousaidi fixed the reading of the PRISM data. + * Mar 2, 2015 15660 snaples Fixed problem with color scale using wrong values. Causing grids to be all zeros. * * * @author snaples @@ -90,9 +91,8 @@ public class MeanMonthlyPrecip { displayUnit = NonSI.INCH; dataUnit = SI.MILLIMETER; cmc.setDisplayUnit(displayUnit); - cmc.setColorMapUnit(SI.MILLIMETER); cmc.setDataUnit(dataUnit); - UnitConverter dataToImage = cmc.getColorMapToDisplayConverter();//cmc.getDataToImageConverter(); + UnitConverter dataToImage = cmc.getDataToImageConverter(); /* * Loop over the months. Determine for which months PRISM data are diff --git a/cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/util/Write1hrVals6HrGages.java b/cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/util/Write1hrVals6HrGages.java index 5e3ddb6640..3b299906f8 100644 --- a/cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/util/Write1hrVals6HrGages.java +++ b/cave/com.raytheon.viz.mpe/src/com/raytheon/viz/mpe/util/Write1hrVals6HrGages.java @@ -38,6 +38,7 @@ import com.raytheon.viz.mpe.util.Disagg6Hr.Values_6hr; * Date Ticket# Engineer Description * ------------ ---------- ----------- -------------------------- * Apr 22, 2009 snaples Initial creation + * Mar 2, 2015 15660 snaples Fixed issue with writing to file after stream was closed. * * * @@ -47,16 +48,14 @@ import com.raytheon.viz.mpe.util.Disagg6Hr.Values_6hr; public class Write1hrVals6HrGages { - private DailyQcUtils dqc = DailyQcUtils.getInstance(); - public void write1hrValuesFor6hrGages() { Values_1hr[] disaggValues = Disagg6Hr.disaggValues; - BufferedWriter disagg_log_fd = Disagg6Hr.disagg_log_fd; + BufferedWriter disagg_log_fd = Disagg6Hr.getDisagg_log_fd(); String[] obsdate = Disagg6Hr.obsdate; Date[] obsdate_date_t = Disagg6Hr.obsdate_date_t; Values_6hr[] values6hr = Disagg6Hr.values6hr; - int num_days_to_qc = dqc.qcDays; + int num_days_to_qc = DailyQcUtils.qcDays; int num_disagg_stations = Disagg6Hr.num_disagg_stations; String ts = ""; @@ -71,8 +70,6 @@ public class Write1hrVals6HrGages { ts = "PZ"; try { - // out = new BufferedWriter(new FileWriter(disagg_log_fd)); - /*-----------------------------------------*/ /* populate the HourlyPP structure */ /*-----------------------------------------*/ @@ -273,20 +270,8 @@ public class Write1hrVals6HrGages { } /* end for (i=0;ihrap_minx,hrap_grid->hrap_miny,hrap_grid->maxi // ,hrap_grid->maxj,iflag); StringBuffer sb = new StringBuffer(); - sb.append(String.format("%d %d %d %d %d", dqc.getHrap_grid().hrap_minx, - dqc.getHrap_grid().hrap_miny, dqc.getHrap_grid().maxi, dqc.getHrap_grid().maxj, iflag)); + sb.append(String.format("%d %d %d %d %d", DailyQcUtils.getHrap_grid().hrap_minx, + DailyQcUtils.getHrap_grid().hrap_miny, DailyQcUtils.getHrap_grid().maxi, DailyQcUtils.getHrap_grid().maxj, iflag)); out.write(sb.toString()); out.newLine(); // for (j = hrap_grid.maxj - hrap_grid.hrap_miny - 1; j >= 0; j--) { - for (i = 0; i < dqc.getHrap_grid().maxi; i++) { + for (i = 0; i < DailyQcUtils.getHrap_grid().maxi; i++) { sb.setLength(0); - for (j = 0; j < dqc.getHrap_grid().maxj; j++) { - sb.append(String.format(" %5d", dqc.pcp.value[i][j])); + for (j = 0; j < DailyQcUtils.getHrap_grid().maxj; j++) { + sb.append(String.format(" %5d", DailyQcUtils.pcp.value[i][j])); } out.write(sb.toString()); out.newLine();