Issue #1571 Fix bug in GFE where DbId in ParmId did not match the Database.

Change-Id: I08b5ec1dbbf95d269c9f1ad7fb5e02a8a471b7ec

Former-commit-id: fae5283358 [formerly 46f00786ed [formerly c03aacd100a73d84d96bfcd3db447597f478fcb7]]
Former-commit-id: 46f00786ed
Former-commit-id: a656439fb2
This commit is contained in:
Ron Anderson 2014-01-15 16:16:44 -06:00
parent aa0639a878
commit fe81181bf1
3 changed files with 29 additions and 11 deletions

View file

@ -48,6 +48,8 @@ import com.raytheon.uf.common.dataplugin.gfe.weather.WxDefinition;
* 03/14/08 #1030 randerso Initial port * 03/14/08 #1030 randerso Initial port
* 04/8/08 #875 bphillip Added getter for Grid Parm Info dictionary * 04/8/08 #875 bphillip Added getter for Grid Parm Info dictionary
* 08/05/2013 #1571 randerso Made GridParmInfo a field in ParmStorageInfo * 08/05/2013 #1571 randerso Made GridParmInfo a field in ParmStorageInfo
* Cloned ParmStorageInfo when requested so we have
* a unique instance per database.
* *
* </pre> * </pre>
* *
@ -345,12 +347,12 @@ public class GridDbConfig {
* *
* @param parmName * @param parmName
* @param level * @param level
* @return * @return the ParmStorageInfo
*/ */
public ParmStorageInfo getParmStorageInfo(final String parmName, public ParmStorageInfo getParmStorageInfo(final String parmName,
final String level) { final String level) {
String composite = parmName + "_" + level; String composite = parmName + "_" + level;
return _parmInfoDict.get(composite); return _parmInfoDict.get(composite).clone();
} }
@Override @Override

View file

@ -578,7 +578,6 @@ public class IFPGridDatabase extends GridDatabase {
try { try {
// Remove the entire data structure for the parm // Remove the entire data structure for the parm
dao.removeParm(parmStorageInfo.get(item).getParmID()); dao.removeParm(parmStorageInfo.get(item).getParmID());
// parmIdMap.remove(item);
this.parmStorageInfo.remove(item); this.parmStorageInfo.remove(item);
} catch (DataAccessLayerException e) { } catch (DataAccessLayerException e) {
statusHandler.handle(Priority.PROBLEM, "Error removing: " statusHandler.handle(Priority.PROBLEM, "Error removing: "
@ -589,7 +588,6 @@ public class IFPGridDatabase extends GridDatabase {
@Override @Override
public ServerResponse<List<ParmID>> getParmList() { public ServerResponse<List<ParmID>> getParmList() {
// List<ParmID> parmIds = new ArrayList<ParmID>(parmIdMap.values());
List<ParmID> parmIds = new ArrayList<ParmID>(parmStorageInfo.size()); List<ParmID> parmIds = new ArrayList<ParmID>(parmStorageInfo.size());
for (ParmStorageInfo psi : parmStorageInfo.values()) { for (ParmStorageInfo psi : parmStorageInfo.values()) {
parmIds.add(psi.getParmID()); parmIds.add(psi.getParmID());
@ -1273,18 +1271,14 @@ public class IFPGridDatabase extends GridDatabase {
List<ParmStorageInfo> parmInfoList = dao.getParmStorageInfo(dbId); List<ParmStorageInfo> parmInfoList = dao.getParmStorageInfo(dbId);
parmStorageInfo = new HashMap<String, ParmStorageInfo>( parmStorageInfo = new HashMap<String, ParmStorageInfo>(
parmInfoList.size(), 1.0f); parmInfoList.size(), 1.0f);
// parmIdMap = new HashMap<String, ParmID>(parmInfoList.size(),
// 1.0f);
for (ParmStorageInfo psi : parmInfoList) { for (ParmStorageInfo psi : parmInfoList) {
ParmID pid = psi.getParmID(); ParmID pid = psi.getParmID();
String compositeName = pid.getCompositeName(); String compositeName = pid.getCompositeName();
// parmIdMap.put(compositeName, pid);
parmStorageInfo.put(compositeName, psi); parmStorageInfo.put(compositeName, psi);
} }
} catch (DataAccessLayerException e) { } catch (DataAccessLayerException e) {
parmStorageInfo = Collections.emptyMap(); parmStorageInfo = Collections.emptyMap();
// parmIdMap = Collections.emptyMap();
String msg = "Error retrieving parm info from Database: " String msg = "Error retrieving parm info from Database: "
+ e.getLocalizedMessage(); + e.getLocalizedMessage();
statusHandler.error(msg, e); statusHandler.error(msg, e);
@ -2152,7 +2146,6 @@ public class IFPGridDatabase extends GridDatabase {
*/ */
public ParmID getCachedParmID(String parmNameAndLevel) public ParmID getCachedParmID(String parmNameAndLevel)
throws UnknownParmIdException { throws UnknownParmIdException {
// ParmID rval = parmIdMap.get(parmNameAndLevel);
ParmID rval = this.parmStorageInfo.get(parmNameAndLevel).getParmID(); ParmID rval = this.parmStorageInfo.get(parmNameAndLevel).getParmID();
if (rval == null) { if (rval == null) {
@ -2165,7 +2158,6 @@ public class IFPGridDatabase extends GridDatabase {
@Override @Override
public ParmID getCachedParmID(ParmID parmId) throws UnknownParmIdException { public ParmID getCachedParmID(ParmID parmId) throws UnknownParmIdException {
// ParmID rval = parmIdMap.get(parmId.getCompositeName());
ParmID rval = this.parmStorageInfo.get(parmId.getCompositeName()) ParmID rval = this.parmStorageInfo.get(parmId.getCompositeName())
.getParmID(); .getParmID();

View file

@ -43,6 +43,7 @@ import javax.persistence.UniqueConstraint;
* Added GridParmInfo as a field. * Added GridParmInfo as a field.
* Added hibernate annotations * Added hibernate annotations
* 10/22/2013 #2361 njensen Remove ISerializableObject * 10/22/2013 #2361 njensen Remove ISerializableObject
* 01/15/2014 #1571 randerso Added clone method and copy constructor
* *
* </pre> * </pre>
* *
@ -52,7 +53,7 @@ import javax.persistence.UniqueConstraint;
@Entity @Entity
@Table(name = "gfe_parminfo", uniqueConstraints = { @UniqueConstraint(columnNames = { "parmId_id" }) }) @Table(name = "gfe_parminfo", uniqueConstraints = { @UniqueConstraint(columnNames = { "parmId_id" }) })
public class ParmStorageInfo { public class ParmStorageInfo implements Cloneable {
/** /**
* Auto-generated surrogate key * Auto-generated surrogate key
@ -103,6 +104,29 @@ public class ParmStorageInfo {
this.gridParmInfo = gridParmInfo; this.gridParmInfo = gridParmInfo;
} }
/**
* Copy constructor
*
* @param orig
*/
public ParmStorageInfo(final ParmStorageInfo orig) {
this.storageType = orig.storageType;
this.dataOffset = orig.dataOffset;
this.dataMultiplier = orig.dataMultiplier;
this.dataType = orig.dataType;
this.gridParmInfo = orig.gridParmInfo.clone();
}
/*
* (non-Javadoc)
*
* @see java.lang.Object#clone()
*/
@Override
public ParmStorageInfo clone() {
return new ParmStorageInfo(this);
}
/** /**
* @return the id * @return the id
*/ */