Merge "Issue #1513 Updated the way level lookups are created" into 13.2.1_delivery

Former-commit-id: 0918edc715 [formerly 5e15e3cdee] [formerly 2c7c1d84ca] [formerly 0918edc715 [formerly 5e15e3cdee] [formerly 2c7c1d84ca] [formerly 08c547c87b [formerly 2c7c1d84ca [formerly 28fb20a90b19d8d4b524f7ec2cf383b89d6eeaa2]]]]
Former-commit-id: 08c547c87b
Former-commit-id: 4b5ba259b1 [formerly 6678ed95c0] [formerly b51d9becf38fce521041d943230d87150a7f39b9 [formerly 9207221493]]
Former-commit-id: 9cb04e18c61e603580e5ef8f904b7ec80b242d0e [formerly c425cdce53]
Former-commit-id: 5629da04f7
This commit is contained in:
Dustin Johnson 2013-01-21 11:46:56 -06:00 committed by Gerrit Code Review
commit 86367b5706
20 changed files with 73 additions and 441 deletions

View file

@ -42,8 +42,10 @@ import com.raytheon.uf.common.serialization.SerializationUtil;
import com.raytheon.uf.common.status.IUFStatusHandler; import com.raytheon.uf.common.status.IUFStatusHandler;
import com.raytheon.uf.common.status.UFStatus; import com.raytheon.uf.common.status.UFStatus;
import com.raytheon.uf.common.status.UFStatus.Priority; import com.raytheon.uf.common.status.UFStatus.Priority;
import com.raytheon.uf.common.util.CollectionUtil;
import com.raytheon.uf.common.util.ServiceLoaderUtil; import com.raytheon.uf.common.util.ServiceLoaderUtil;
/** /**
* Lookup table manager * Lookup table manager
* *
@ -54,6 +56,7 @@ import com.raytheon.uf.common.util.ServiceLoaderUtil;
* ------------ ---------- ----------- -------------------------- * ------------ ---------- ----------- --------------------------
* Mar 7, 2011 357 dhladky Initial creation * Mar 7, 2011 357 dhladky Initial creation
* Oct 27, 2012 1163 dhladky Improved, dynamically create files, Added Units * Oct 27, 2012 1163 dhladky Improved, dynamically create files, Added Units
* Jan 18, 2013 1513 dhladky Level lookup refit.
* *
* </pre> * </pre>
* *
@ -381,10 +384,9 @@ public class LookupManager {
* @throws Exception * @throws Exception
*/ */
public void modifyLevelLookups(String modelName, double dz, float min, public void modifyLevelLookups(String modelName, double dz, float min,
float max) throws Exception { float max, List<Double> levs) throws Exception {
LevelLookup ll = null; LevelLookup ll = null;
List<Double> levs = null;
if (levelLookupExists(modelName)) { if (levelLookupExists(modelName)) {
ll = getLevelsFromFile(modelName); ll = getLevelsFromFile(modelName);
@ -397,25 +399,33 @@ public class LookupManager {
ll = new LevelLookup(); ll = new LevelLookup();
} }
if (levs == null) { boolean gen = false;
if (CollectionUtil.isNullOrEmpty(levs)) {
ll.setLevelXml(new ArrayList<Double>()); ll.setLevelXml(new ArrayList<Double>());
levs = ll.getLevelXml(); levs = ll.getLevelXml();
gen = true;
} else {
ll.setLevelXml(levs);
} }
int diff = (int) (max - min); if (gen) {
int total = (int) Math.abs((diff / dz)); int diff = (int) (max - min);
// These add simple place holder level int total = (int) Math.abs((diff / dz));
// identifiers. It is up to the admin // These add simple place holder level
// to add the real values // identifiers. It is up to the admin
if (diff < 0) { // to add the real values
for (int i = 0; i <= total; i++) { if (diff < 0) {
double lev = max + i * dz; for (int i = 0; i <= total; i++) {
levs.add(lev); double lev = max + i * dz;
} levs.add(lev);
} else { }
for (int i = 0; i <= total; i++) { } else {
double lev = min + i * dz; for (int i = 0; i <= total; i++) {
levs.add(lev); double lev = min + i * dz;
levs.add(lev);
}
} }
} }
@ -551,4 +561,6 @@ public class LookupManager {
return unitXml; return unitXml;
} }
} }

View file

@ -74,6 +74,7 @@
<constant name="RESOLUTION" value="resolution"/> <constant name="RESOLUTION" value="resolution"/>
<constant name="DATE_COMPARE_FORMAT" value="EEE MMM dd hhmmss zzz yyyy"/> <constant name="DATE_COMPARE_FORMAT" value="EEE MMM dd hhmmss zzz yyyy"/>
<constant name="META_DATA_SUFFIX" value=".info"/> <constant name="META_DATA_SUFFIX" value=".info"/>
<constant name="DATA_SUFFIX" value=".dods"/>
<constant name="FILL_VALUE" value="_FillValue"/> <constant name="FILL_VALUE" value="_FillValue"/>
<constant name="MAX_RETRIEVAL_SIZE" value="4500000" /> <constant name="MAX_RETRIEVAL_SIZE" value="4500000" />
<constant name="KELVIN" value="k" /> <constant name="KELVIN" value="k" />

View file

@ -1,13 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<LevelLookup>
<Level>1000.0</Level>
<Level>925.0</Level>
<Level>850.0</Level>
<Level>700.0</Level>
<Level>500.0</Level>
<Level>250.0</Level>
<Level>200.0</Level>
<Level>100.0</Level>
<Level>50.0</Level>
<Level>10.0</Level>
</LevelLookup>

View file

@ -1,13 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<LevelLookup>
<Level>1000.0</Level>
<Level>925.0</Level>
<Level>850.0</Level>
<Level>700.0</Level>
<Level>500.0</Level>
<Level>250.0</Level>
<Level>200.0</Level>
<Level>100.0</Level>
<Level>50.0</Level>
<Level>10.0</Level>
</LevelLookup>

View file

@ -1,29 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<LevelLookup>
<Level>1000.0</Level>
<Level>975.0</Level>
<Level>950.0</Level>
<Level>925.0</Level>
<Level>900.0</Level>
<Level>850.0</Level>
<Level>800.0</Level>
<Level>750.0</Level>
<Level>700.0</Level>
<Level>650.0</Level>
<Level>600.0</Level>
<Level>550.0</Level>
<Level>500.0</Level>
<Level>450.0</Level>
<Level>400.0</Level>
<Level>350.0</Level>
<Level>300.0</Level>
<Level>250.0</Level>
<Level>200.0</Level>
<Level>150.0</Level>
<Level>100.0</Level>
<Level>70.0</Level>
<Level>50.0</Level>
<Level>30.0</Level>
<Level>20.0</Level>
<Level>10.0</Level>
</LevelLookup>

View file

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<LevelLookup>
<Level>1000.0</Level>
<Level>925.0</Level>
<Level>850.0</Level>
<Level>600.0</Level>
<Level>500.0</Level>
<Level>250.0</Level>
<Level>200.0</Level>
</LevelLookup>

View file

@ -1,29 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<LevelLookup>
<Level>1000.0</Level>
<Level>975.0</Level>
<Level>950.0</Level>
<Level>925.0</Level>
<Level>900.0</Level>
<Level>850.0</Level>
<Level>800.0</Level>
<Level>750.0</Level>
<Level>700.0</Level>
<Level>650.0</Level>
<Level>600.0</Level>
<Level>550.0</Level>
<Level>500.0</Level>
<Level>450.0</Level>
<Level>400.0</Level>
<Level>350.0</Level>
<Level>300.0</Level>
<Level>250.0</Level>
<Level>200.0</Level>
<Level>150.0</Level>
<Level>100.0</Level>
<Level>70.0</Level>
<Level>50.0</Level>
<Level>30.0</Level>
<Level>20.0</Level>
<Level>10.0</Level>
</LevelLookup>

View file

@ -1,29 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<LevelLookup>
<Level>1000.0</Level>
<Level>975.0</Level>
<Level>950.0</Level>
<Level>925.0</Level>
<Level>900.0</Level>
<Level>850.0</Level>
<Level>800.0</Level>
<Level>750.0</Level>
<Level>700.0</Level>
<Level>650.0</Level>
<Level>600.0</Level>
<Level>550.0</Level>
<Level>500.0</Level>
<Level>450.0</Level>
<Level>400.0</Level>
<Level>350.0</Level>
<Level>300.0</Level>
<Level>250.0</Level>
<Level>200.0</Level>
<Level>150.0</Level>
<Level>100.0</Level>
<Level>70.0</Level>
<Level>50.0</Level>
<Level>30.0</Level>
<Level>20.0</Level>
<Level>10.0</Level>
</LevelLookup>

View file

@ -1,50 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<LevelLookup>
<Level>1000.0</Level>
<Level>975.0</Level>
<Level>950.0</Level>
<Level>925.0</Level>
<Level>900.0</Level>
<Level>875.0</Level>
<Level>850.0</Level>
<Level>825.0</Level>
<Level>800.0</Level>
<Level>775.0</Level>
<Level>750.0</Level>
<Level>725.0</Level>
<Level>700.0</Level>
<Level>675.0</Level>
<Level>650.0</Level>
<Level>625.0</Level>
<Level>600.0</Level>
<Level>575.0</Level>
<Level>550.0</Level>
<Level>525.0</Level>
<Level>500.0</Level>
<Level>475.0</Level>
<Level>450.0</Level>
<Level>425.0</Level>
<Level>400.0</Level>
<Level>375.0</Level>
<Level>350.0</Level>
<Level>325.0</Level>
<Level>300.0</Level>
<Level>275.0</Level>
<Level>250.0</Level>
<Level>225.0</Level>
<Level>200.0</Level>
<Level>175.0</Level>
<Level>150.0</Level>
<Level>125.0</Level>
<Level>100.0</Level>
<Level>70.0</Level>
<Level>50.0</Level>
<Level>30.0</Level>
<Level>20.0</Level>
<Level>10.0</Level>
<Level>7.0</Level>
<Level>5.0</Level>
<Level>3.0</Level>
<Level>2.0</Level>
<Level>1.0</Level>
</LevelLookup>

View file

@ -1,13 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<LevelLookup>
<Level>1000.0</Level>
<Level>925.0</Level>
<Level>850.0</Level>
<Level>700.0</Level>
<Level>600.0</Level>
<Level>500.0</Level>
<Level>400.0</Level>
<Level>300.0</Level>
<Level>250.0</Level>
<Level>200.0</Level>
</LevelLookup>

View file

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<LevelLookup>
<Level>1000.0</Level>
<Level>925.0</Level>
<Level>850.0</Level>
<Level>700.0</Level>
<Level>500.0</Level>
<Level>250.0</Level>
<Level>200.0</Level>
</LevelLookup>

View file

@ -1,45 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<LevelLookup>
<Level>1000.0</Level>
<Level>975.0</Level>
<Level>950.0</Level>
<Level>925.0</Level>
<Level>900.0</Level>
<Level>875.0</Level>
<Level>850.0</Level>
<Level>825.0</Level>
<Level>800.0</Level>
<Level>775.0</Level>
<Level>750.0</Level>
<Level>725.0</Level>
<Level>700.0</Level>
<Level>675.0</Level>
<Level>650.0</Level>
<Level>625.0</Level>
<Level>600.0</Level>
<Level>575.0</Level>
<Level>550.0</Level>
<Level>525.0</Level>
<Level>500.0</Level>
<Level>475.0</Level>
<Level>450.0</Level>
<Level>425.0</Level>
<Level>400.0</Level>
<Level>375.0</Level>
<Level>350.0</Level>
<Level>325.0</Level>
<Level>300.0</Level>
<Level>275.0</Level>
<Level>250.0</Level>
<Level>225.0</Level>
<Level>200.0</Level>
<Level>175.0</Level>
<Level>150.0</Level>
<Level>125.0</Level>
<Level>100.0</Level>
<Level>75.0</Level>
<Level>50.0</Level>
<Level>20.0</Level>
<Level>10.0</Level>
<Level>5.0</Level>
</LevelLookup>

View file

@ -1,43 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<LevelLookup>
<Level>6000.0</Level>
<Level>5500.0</Level>
<Level>5000.0</Level>
<Level>4500.0</Level>
<Level>4000.0</Level>
<Level>3500.0</Level>
<Level>3000.0</Level>
<Level>2500.0</Level>
<Level>2000.0</Level>
<Level>1500.0</Level>
<Level>1000.0</Level>
<Level>950.0</Level>
<Level>900.0</Level>
<Level>850.0</Level>
<Level>800.0</Level>
<Level>750.0</Level>
<Level>700.0</Level>
<Level>650.0</Level>
<Level>600.0</Level>
<Level>550.0</Level>
<Level>500.0</Level>
<Level>450.0</Level>
<Level>400.0</Level>
<Level>350.0</Level>
<Level>300.0</Level>
<Level>250.0</Level>
<Level>200.0</Level>
<Level>150.0</Level>
<Level>100.0</Level>
<Level>90.0</Level>
<Level>80.0</Level>
<Level>70.0</Level>
<Level>60.0</Level>
<Level>50.0</Level>
<Level>30.0</Level>
<Level>20.0</Level>
<Level>10.0</Level>
<Level>6.0</Level>
<Level>3.0</Level>
<Level>0.0</Level>
</LevelLookup>

View file

@ -1,40 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<LevelLookup>
<Level>1000.0</Level>
<Level>975.0</Level>
<Level>950.0</Level>
<Level>925.0</Level>
<Level>900.0</Level>
<Level>875.0</Level>
<Level>850.0</Level>
<Level>825.0</Level>
<Level>800.0</Level>
<Level>775.0</Level>
<Level>750.0</Level>
<Level>725.0</Level>
<Level>700.0</Level>
<Level>675.0</Level>
<Level>650.0</Level>
<Level>625.0</Level>
<Level>600.0</Level>
<Level>575.0</Level>
<Level>550.0</Level>
<Level>525.0</Level>
<Level>500.0</Level>
<Level>475.0</Level>
<Level>450.0</Level>
<Level>425.0</Level>
<Level>400.0</Level>
<Level>375.0</Level>
<Level>350.0</Level>
<Level>325.0</Level>
<Level>300.0</Level>
<Level>275.0</Level>
<Level>250.0</Level>
<Level>225.0</Level>
<Level>200.0</Level>
<Level>175.0</Level>
<Level>150.0</Level>
<Level>125.0</Level>
<Level>100.0</Level>
</LevelLookup>

View file

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<LevelLookup>
<Level>1.0</Level>
</LevelLookup>

View file

@ -1,40 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<LevelLookup>
<Level>1000.0</Level>
<Level>975.0</Level>
<Level>950.0</Level>
<Level>925.0</Level>
<Level>900.0</Level>
<Level>875.0</Level>
<Level>850.0</Level>
<Level>825.0</Level>
<Level>800.0</Level>
<Level>775.0</Level>
<Level>750.0</Level>
<Level>725.0</Level>
<Level>700.0</Level>
<Level>675.0</Level>
<Level>650.0</Level>
<Level>625.0</Level>
<Level>600.0</Level>
<Level>575.0</Level>
<Level>550.0</Level>
<Level>525.0</Level>
<Level>500.0</Level>
<Level>475.0</Level>
<Level>450.0</Level>
<Level>425.0</Level>
<Level>400.0</Level>
<Level>375.0</Level>
<Level>350.0</Level>
<Level>325.0</Level>
<Level>300.0</Level>
<Level>275.0</Level>
<Level>250.0</Level>
<Level>225.0</Level>
<Level>200.0</Level>
<Level>175.0</Level>
<Level>150.0</Level>
<Level>125.0</Level>
<Level>100.0</Level>
</LevelLookup>

View file

@ -1,42 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<LevelLookup>
<Level>1000.0</Level>
<Level>975.0</Level>
<Level>950.0</Level>
<Level>925.0</Level>
<Level>900.0</Level>
<Level>875.0</Level>
<Level>850.0</Level>
<Level>825.0</Level>
<Level>800.0</Level>
<Level>775.0</Level>
<Level>750.0</Level>
<Level>725.0</Level>
<Level>700.0</Level>
<Level>675.0</Level>
<Level>650.0</Level>
<Level>625.0</Level>
<Level>600.0</Level>
<Level>575.0</Level>
<Level>550.0</Level>
<Level>525.0</Level>
<Level>500.0</Level>
<Level>475.0</Level>
<Level>450.0</Level>
<Level>425.0</Level>
<Level>400.0</Level>
<Level>375.0</Level>
<Level>350.0</Level>
<Level>325.0</Level>
<Level>300.0</Level>
<Level>275.0</Level>
<Level>250.0</Level>
<Level>225.0</Level>
<Level>200.0</Level>
<Level>175.0</Level>
<Level>150.0</Level>
<Level>125.0</Level>
<Level>100.0</Level>
<Level>75.0</Level>
<Level>50.0</Level>
</LevelLookup>

View file

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<LevelLookup>
<Level>1000.0</Level>
<Level>850.0</Level>
<Level>700.0</Level>
<Level>500.0</Level>
<Level>250.0</Level>
</LevelLookup>

View file

@ -89,6 +89,7 @@ import dods.dap.DAS;
* Dec 12, 2012 supplement dhladky Restored operation of ensembles. * Dec 12, 2012 supplement dhladky Restored operation of ensembles.
* Dec 10, 2012 1259 bsteffen Switch Data Delivery from LatLon to referenced envelopes. * Dec 10, 2012 1259 bsteffen Switch Data Delivery from LatLon to referenced envelopes.
* Jan 08, 2013 dhladky Performance enhancements, specific model fixes. * Jan 08, 2013 dhladky Performance enhancements, specific model fixes.
* Jan 18, 2013 1513 dhladky Level look up improvements.
* *
* </pre> * </pre>
* *
@ -135,8 +136,10 @@ class OpenDAPMetaDataParser extends MetaDataParser {
// create new default lookups // create new default lookups
if (levelType.equals(LevelType.MB) if (levelType.equals(LevelType.MB)
|| levelType.equals(LevelType.SEAB)) { || levelType.equals(LevelType.SEAB)) {
List<Double> levelList = OpenDAPParseUtility.getInstance().parseLevels(gdsmd.getUrl(), serviceConfig.getConstantValue("LEV"));
LookupManager.getInstance().modifyLevelLookups( LookupManager.getInstance().modifyLevelLookups(
collectionName, dz, levMin, levMax); collectionName, dz, levMin, levMax, levelList);
} }
} }
@ -654,12 +657,12 @@ class OpenDAPMetaDataParser extends MetaDataParser {
} }
DAS das = (DAS) link.getLinks().get(DAP_TYPE.DAS.getDapType()); DAS das = (DAS) link.getLinks().get(DAP_TYPE.DAS.getDapType());
dataSet.setParameters(getParameters(das, dataSet, gdsmd, link, // set url first, used for level lookups
collection, dataDateFormat));
gdsmd.setUrl(link.getUrl().replace( gdsmd.setUrl(link.getUrl().replace(
serviceConfig.getConstantValue("META_DATA_SUFFIX"), serviceConfig.getConstantValue("META_DATA_SUFFIX"),
serviceConfig.getConstantValue("BLANK"))); serviceConfig.getConstantValue("BLANK")));
dataSet.setParameters(getParameters(das, dataSet, gdsmd, link,
collection, dataDateFormat));
Time dataSetTime = gdsmd.getTime(); Time dataSetTime = gdsmd.getTime();
if (dataSetTime == null) { if (dataSetTime == null) {
throw new IllegalStateException( throw new IllegalStateException(

View file

@ -21,8 +21,13 @@ import com.raytheon.uf.common.datadelivery.retrieval.xml.UnitLookup;
import com.raytheon.uf.common.status.IUFStatusHandler; import com.raytheon.uf.common.status.IUFStatusHandler;
import com.raytheon.uf.common.status.UFStatus; import com.raytheon.uf.common.status.UFStatus;
import com.raytheon.uf.common.status.UFStatus.Priority; import com.raytheon.uf.common.status.UFStatus.Priority;
import com.raytheon.uf.edex.datadelivery.retrieval.util.ConnectionUtil;
import dods.dap.AttributeTable; import dods.dap.AttributeTable;
import dods.dap.DArray;
import dods.dap.DConnect;
import dods.dap.DataDDS;
import dods.dap.PrimitiveVector;
/** /**
* Constants for working with OpenDAP. This class should remain package-private, * Constants for working with OpenDAP. This class should remain package-private,
@ -43,12 +48,13 @@ import dods.dap.AttributeTable;
* Nov 09, 2012 1163 dhladky Made pre-load for service config * Nov 09, 2012 1163 dhladky Made pre-load for service config
* Nov 19, 2012 1166 djohnson Clean up JAXB representation of registry objects. * Nov 19, 2012 1166 djohnson Clean up JAXB representation of registry objects.
* Jan 08, 2013 1466 dhladky NCOM dataset name parsing fix. * Jan 08, 2013 1466 dhladky NCOM dataset name parsing fix.
* Jan 18, 2013 1513 dhladky Level Lookup improvements.
* </pre> * </pre>
* *
* @author dhladky * @author dhladky
* @version 1.0 * @version 1.0
*/ */
final class OpenDAPParseUtility { public final class OpenDAPParseUtility {
private static final Pattern QUOTES_PATTERN = Pattern.compile("\""); private static final Pattern QUOTES_PATTERN = Pattern.compile("\"");
@ -336,7 +342,35 @@ final class OpenDAPParseUtility {
return QUOTES_PATTERN.matcher(val).replaceAll( return QUOTES_PATTERN.matcher(val).replaceAll(
serviceConfig.getConstantValue("BLANK")); serviceConfig.getConstantValue("BLANK"));
} }
/**
* Parse out the levels from the dods
* @param url
* @param lev
* @return
*/
public List<Double> parseLevels(String url, String lev) {
List<Double> levels = null;
try {
DConnect connect = ConnectionUtil.getDConnect(url + "?" + lev);
DataDDS data = connect.getData(null);
DArray array = (DArray) data.getVariable(lev);
PrimitiveVector pm = array.getPrimitiveVector();
double[] values = (double[]) pm.getInternalStorage();
levels = new ArrayList<Double>();
for (double value : values) {
levels.add(value);
}
} catch (Exception e) {
statusHandler.handle(Priority.PROBLEM, "Error downloading/parsing levels: "
+ url, e);
}
return levels;
}
} }