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

Change-Id: I08b5ec1dbbf95d269c9f1ad7fb5e02a8a471b7ec

Former-commit-id: fe81181bf1 [formerly a656439fb2] [formerly 46f00786ed] [formerly fae5283358 [formerly 46f00786ed [formerly c03aacd100a73d84d96bfcd3db447597f478fcb7]]]
Former-commit-id: fae5283358
Former-commit-id: cc91b608d397b8f1c96faf04a7964719df9bec04 [formerly 151cb21153]
Former-commit-id: 4f4f4996be
This commit is contained in:
Ron Anderson 2014-01-15 16:16:44 -06:00
parent 472cf2905c
commit c2c4142235
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
* 04/8/08 #875 bphillip Added getter for Grid Parm Info dictionary
* 08/05/2013 #1571 randerso Made GridParmInfo a field in ParmStorageInfo
* Cloned ParmStorageInfo when requested so we have
* a unique instance per database.
*
* </pre>
*
@ -345,12 +347,12 @@ public class GridDbConfig {
*
* @param parmName
* @param level
* @return
* @return the ParmStorageInfo
*/
public ParmStorageInfo getParmStorageInfo(final String parmName,
final String level) {
String composite = parmName + "_" + level;
return _parmInfoDict.get(composite);
return _parmInfoDict.get(composite).clone();
}
@Override

View file

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

View file

@ -43,6 +43,7 @@ import javax.persistence.UniqueConstraint;
* Added GridParmInfo as a field.
* Added hibernate annotations
* 10/22/2013 #2361 njensen Remove ISerializableObject
* 01/15/2014 #1571 randerso Added clone method and copy constructor
*
* </pre>
*
@ -52,7 +53,7 @@ import javax.persistence.UniqueConstraint;
@Entity
@Table(name = "gfe_parminfo", uniqueConstraints = { @UniqueConstraint(columnNames = { "parmId_id" }) })
public class ParmStorageInfo {
public class ParmStorageInfo implements Cloneable {
/**
* Auto-generated surrogate key
@ -103,6 +104,29 @@ public class ParmStorageInfo {
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
*/