Issue #1797 Separation of gridded time and abstract time object

Change-Id: I9d84942140e52ec0fded1a9150d7016dec8eaf63

Former-commit-id: 7d43c5b7f9 [formerly 4d4d93fc0a] [formerly e0ec10d073] [formerly 7d43c5b7f9 [formerly 4d4d93fc0a] [formerly e0ec10d073] [formerly 1733834e74 [formerly e0ec10d073 [formerly cdf2b6dd5a5b4a12cf12e6d4d254b5e40acfcef5]]]]
Former-commit-id: 1733834e74
Former-commit-id: 87574fd68a [formerly 21239525ea] [formerly 965f4a1eb5886ed77447541de327726ef9ab34a7 [formerly 89c341509c]]
Former-commit-id: b6b1dc8bacb08fc8a37391ca8c9d065363a89f96 [formerly 3ba8fd56f7]
Former-commit-id: ab9c5af250
This commit is contained in:
Dave Hladky 2013-09-30 09:07:11 -05:00
parent 7f7309484a
commit 89e5b5116c
104 changed files with 1250 additions and 1320 deletions

View file

@ -45,10 +45,12 @@ import org.eclipse.swt.widgets.Text;
import com.raytheon.uf.common.auth.AuthException;
import com.raytheon.uf.common.auth.user.IUser;
import com.raytheon.uf.common.datadelivery.registry.Coverage;
import com.raytheon.uf.common.datadelivery.registry.DataType;
import com.raytheon.uf.common.datadelivery.registry.PointTime;
import com.raytheon.uf.common.datadelivery.registry.Subscription;
import com.raytheon.uf.common.datadelivery.registry.Subscription.SubscriptionPriority;
import com.raytheon.uf.common.datadelivery.registry.Time;
import com.raytheon.uf.common.datadelivery.registry.ebxml.DataSetQuery;
import com.raytheon.uf.common.datadelivery.request.DataDeliveryPermission;
import com.raytheon.uf.common.status.IUFStatusHandler;
@ -106,6 +108,7 @@ import com.raytheon.viz.ui.presenter.components.CheckBoxConf;
* Aug 21, 2013 1848 mpduff Check subscription.create and shared.subscription.create.
* Aug 30, 2013 2288 bgonzale Added display of priority and latency rules.
* Sep 04, 2013 2314 mpduff Pass in the office to Shared Subscription Dialog.
* Sept 30, 2013 1797 dhladky separated Time from GriddedTime
*
* </pre>
*
@ -170,7 +173,7 @@ public class CreateSubscriptionDlg extends CaveSWTDialog implements
private int status = SWT.NONE;
/** The subscription object */
private Subscription subscription;
private Subscription<Time, Coverage> subscription;
/** Available cycle times */
private Set<Integer> cycleTimes;

View file

@ -44,9 +44,12 @@ import com.raytheon.uf.common.datadelivery.bandwidth.IBandwidthService;
import com.raytheon.uf.common.datadelivery.bandwidth.IProposeScheduleResponse;
import com.raytheon.uf.common.datadelivery.bandwidth.data.SubscriptionStatusSummary;
import com.raytheon.uf.common.datadelivery.registry.AdhocSubscription;
import com.raytheon.uf.common.datadelivery.registry.GriddedTime;
import com.raytheon.uf.common.datadelivery.registry.InitialPendingSubscription;
import com.raytheon.uf.common.datadelivery.registry.PendingSubscription;
import com.raytheon.uf.common.datadelivery.registry.PointTime;
import com.raytheon.uf.common.datadelivery.registry.Subscription;
import com.raytheon.uf.common.datadelivery.registry.Time;
import com.raytheon.uf.common.datadelivery.registry.handlers.DataDeliveryHandlers;
import com.raytheon.uf.common.datadelivery.registry.handlers.IPendingSubscriptionHandler;
import com.raytheon.uf.common.datadelivery.registry.handlers.ISubscriptionHandler;
@ -87,7 +90,8 @@ import com.raytheon.uf.viz.datadelivery.utils.DataDeliveryUtils;
* May 23, 2013 1650 djohnson Move out some presentation logic to DisplayForceApplyPromptDialog.
* Jun 12, 2013 2038 djohnson Launch subscription manager on the UI thread.
* Jul 18, 2013 1653 mpduff Add SubscriptionStatusSummary.
* Jul 26, 2031 2232 mpduff Refactored Data Delivery permissions.
* Jul 26, 2013 2232 mpduff Refactored Data Delivery permissions.
* Sept 25, 2013 1797 dhladky separated time from gridded time
*
* </pre>
*
@ -775,11 +779,7 @@ public class SubscriptionService implements ISubscriptionService {
if (singleSubscription) {
Subscription subscription = subscriptions.get(0);
final int maximumLatencyFromRules = SystemRuleManager.getInstance()
.getLatency(
subscription,
Sets.newTreeSet(subscription.getTime()
.getCycleTimes()));
final int maximumLatencyFromRules = getMaximumAllowableLatency(subscription);
return new ForceApplyPromptConfiguration(TITLE, msg.toString(),
proposeScheduleResponse.getRequiredLatency(),
@ -853,4 +853,27 @@ public class SubscriptionService implements ISubscriptionService {
subscriptionHandler.update(unscheduledSub);
}
}
/**
* Gets the max allowed latency for this subscription from rules for it's
* type
*
* @param subscription
* @return
*/
private int getMaximumAllowableLatency(Subscription subscription) {
Time subTime = subscription.getTime();
if (subTime instanceof GriddedTime) {
return SystemRuleManager.getInstance().getLatency(subscription,
Sets.newTreeSet(((GriddedTime) subTime).getCycleTimes()));
} else if (subTime instanceof PointTime) {
return ((PointTime) subTime).getInterval();
} else {
throw new IllegalArgumentException(subTime.getClass()
+ " Not yet implemented!");
}
}
}

View file

@ -30,10 +30,13 @@ import org.geotools.geometry.jts.ReferencedEnvelope;
import com.raytheon.uf.common.datadelivery.registry.Coverage;
import com.raytheon.uf.common.datadelivery.registry.DataLevelType;
import com.raytheon.uf.common.datadelivery.registry.GriddedTime;
import com.raytheon.uf.common.datadelivery.registry.InitialPendingSubscription;
import com.raytheon.uf.common.datadelivery.registry.Parameter;
import com.raytheon.uf.common.datadelivery.registry.Subscription;
import com.raytheon.uf.common.datadelivery.registry.Time;
import com.raytheon.uf.common.status.IUFStatusHandler;
import com.raytheon.uf.common.status.UFStatus;
import com.raytheon.uf.viz.datadelivery.utils.DataDeliveryUtils;
import com.raytheon.uf.viz.datadelivery.utils.DataDeliveryUtils.TABLE_TYPE;
import com.vividsolutions.jts.geom.Coordinate;
@ -55,6 +58,7 @@ import com.vividsolutions.jts.geom.Coordinate;
* Jan 25, 2013 1528 djohnson Compare priorities as primitive ints.
* Jan 30, 2013 1543 djohnson Use List instead of ArrayList.
* Apr 08, 2013 1826 djohnson Remove delivery options.
* Sept 25, 2013 1797 dhladky Handle gridded times
*
* </pre>
*
@ -62,7 +66,12 @@ import com.vividsolutions.jts.geom.Coordinate;
* @version 1.0
*/
public class SubscriptionDiff {
public class SubscriptionDiff<T extends Time, C extends Coverage> {
/** Status Handler */
private final IUFStatusHandler statusHandler = UFStatus
.getHandler(SubscriptionDiff.class);
/** Subscription start/end date format */
private final SimpleDateFormat format = new SimpleDateFormat(
"MM/dd/yyyy HH");
@ -74,9 +83,9 @@ public class SubscriptionDiff {
private final String nl = "\n";
private final Subscription sub;
private final Subscription<T, C> sub;
private final InitialPendingSubscription pendingSub;
private final InitialPendingSubscription<T, C> pendingSub;
private HashMap<String, Boolean> diffMap;
@ -90,8 +99,8 @@ public class SubscriptionDiff {
* @param pendingSubscription
* The PendingSubscription object
*/
public SubscriptionDiff(Subscription subscription,
InitialPendingSubscription pendingSubscription) {
public SubscriptionDiff(Subscription<T, C> subscription,
InitialPendingSubscription<T, C> pendingSubscription) {
this.sub = subscription;
this.pendingSub = pendingSubscription;
init();
@ -194,34 +203,46 @@ public class SubscriptionDiff {
}
}
} catch (ParseException e) {
e.printStackTrace();
statusHandler.error("Couldn't parse subscription!" +e);
}
// Check cycle times
List<Integer> subCycles = subTime.getCycleTimes();
List<Integer> pendingCycles = pendingTime.getCycleTimes();
if (!subCycles.containsAll(pendingCycles)
|| !pendingCycles.containsAll(subCycles)) {
diffMap.put("cycleTimes", true);
}
// Check forecast hours
List<String> subFcstHoursAll = subTime.getFcstHours();
List<String> pendingFcstHoursAll = pendingTime.getFcstHours();
List<Integer> subCycles = null;
List<Integer> pendingCycles = null;
List<String> subFcstHoursAll = null;
List<String> pendingFcstHoursAll = null;
List<String> subFcstHours = new ArrayList<String>();
List<String> pendingFcstHours = new ArrayList<String>();
for (int i : subTime.getSelectedTimeIndices()) {
subFcstHours.add(subFcstHoursAll.get(i));
}
// handle gridded times
if (subTime instanceof GriddedTime) {
for (int i : pendingTime.getSelectedTimeIndices()) {
pendingFcstHours.add(pendingFcstHoursAll.get(i));
}
GriddedTime gtime = (GriddedTime) subTime;
GriddedTime pTime = (GriddedTime) pendingTime;
// Check cycle times
subCycles = gtime.getCycleTimes();
pendingCycles = gtime.getCycleTimes();
if (!subFcstHours.containsAll(pendingFcstHours)
|| !pendingFcstHours.containsAll(subFcstHours)) {
diffMap.put("fcstHours", true);
if (!subCycles.containsAll(pendingCycles)
|| !pendingCycles.containsAll(subCycles)) {
diffMap.put("cycleTimes", true);
}
// Check forecast hours
subFcstHoursAll = gtime.getFcstHours();
pendingFcstHoursAll = gtime.getFcstHours();
for (int i : gtime.getSelectedTimeIndices()) {
subFcstHours.add(subFcstHoursAll.get(i));
}
for (int i : pTime.getSelectedTimeIndices()) {
pendingFcstHours.add(pendingFcstHoursAll.get(i));
}
if (!subFcstHours.containsAll(pendingFcstHours)
|| !pendingFcstHours.containsAll(subFcstHours)) {
diffMap.put("fcstHours", true);
}
}
Coverage cov = sub.getCoverage();
@ -448,35 +469,41 @@ public class SubscriptionDiff {
}
}
}
// handle pending and subscription cycles
if (subCycles != null && pendingCycles != null) {
// TODO - diff cycle times once it is decided how we will handle
// cycle times in data delivery
if (diffMap.get("cycleTimes")) {
buffer.append("Cycle Times changed:").append(nl);
buffer.append(" New Cycle Times: ");
if (diffMap.get("cycleTimes")) {
buffer.append("Cycle Times changed:").append(nl);
buffer.append(" New Cycle Times: ");
for (int i : pendingCycles) {
buffer.append(i).append(" ");
}
buffer.append(nl);
for (int i : pendingCycles) {
buffer.append(i).append(" ");
}
buffer.append(nl);
String s = this.getDiffs(subCycles, pendingCycles);
if (s != null) {
buffer.append(s).append(nl);
String s = this.getDiffs(subCycles, pendingCycles);
if (s != null) {
buffer.append(s).append(nl);
}
}
}
if (diffMap.get("fcstHours")) {
buffer.append("Forecast Hours changed:").append(nl);
buffer.append(" New Forecast Hours: ");
for (String s : pendingFcstHours) {
buffer.append(s).append(" ");
}
buffer.append(nl);
// handle pending and subscription fcst hours
if (subFcstHours != null && pendingFcstHours != null) {
String s = this.getDiffs(subFcstHours, pendingFcstHours);
if (s != null) {
buffer.append(s).append(nl);
if (diffMap.get("fcstHours")) {
buffer.append("Forecast Hours changed:").append(nl);
buffer.append(" New Forecast Hours: ");
for (String s : pendingFcstHours) {
buffer.append(s).append(" ");
}
buffer.append(nl);
String s = this.getDiffs(subFcstHours, pendingFcstHours);
if (s != null) {
buffer.append(s).append(nl);
}
}
}

View file

@ -43,8 +43,10 @@ import com.raytheon.uf.common.auth.AuthException;
import com.raytheon.uf.common.auth.req.IPermissionsService;
import com.raytheon.uf.common.auth.user.IUser;
import com.raytheon.uf.common.datadelivery.bandwidth.data.SubscriptionStatusSummary;
import com.raytheon.uf.common.datadelivery.registry.Coverage;
import com.raytheon.uf.common.datadelivery.registry.DataSet;
import com.raytheon.uf.common.datadelivery.registry.DataType;
import com.raytheon.uf.common.datadelivery.registry.GriddedTime;
import com.raytheon.uf.common.datadelivery.registry.GroupDefinition;
import com.raytheon.uf.common.datadelivery.registry.InitialPendingSubscription;
import com.raytheon.uf.common.datadelivery.registry.Network;
@ -53,6 +55,7 @@ import com.raytheon.uf.common.datadelivery.registry.PendingSubscription;
import com.raytheon.uf.common.datadelivery.registry.SharedSubscription;
import com.raytheon.uf.common.datadelivery.registry.Subscription;
import com.raytheon.uf.common.datadelivery.registry.Subscription.SubscriptionPriority;
import com.raytheon.uf.common.datadelivery.registry.Time;
import com.raytheon.uf.common.datadelivery.registry.Utils.SubscriptionStatus;
import com.raytheon.uf.common.datadelivery.registry.handlers.DataDeliveryHandlers;
import com.raytheon.uf.common.datadelivery.registry.handlers.IPendingSubscriptionHandler;
@ -121,13 +124,14 @@ import com.raytheon.viz.ui.presenter.components.ComboBoxConf;
* Jul 18, 2013 1653 mpduff Add SubscriptionStatusSummary and the display dialog.
* Jul 26, 2031 2232 mpduff Refactored Data Delivery permissions.
* Aug 30, 2013 2288 bgonzale Removed unneeded call to setPriority.
* Oct 2, 2013 1797 dhladky Generic foundations.
* </pre>
*
* @author mpduff
* @version 1.0
*/
public class CreateSubscriptionDlgPresenter {
public class CreateSubscriptionDlgPresenter<T extends Time, C extends Coverage> {
private static final String PENDING_APPROVAL_MESSAGE = "The subscription is awaiting approval.\n\n"
+ "A notification message will be generated upon approval.";
@ -157,7 +161,7 @@ public class CreateSubscriptionDlgPresenter {
private final ICreateSubscriptionDlgView view;
/** The subscription object */
private Subscription subscription;
private Subscription<T, C> subscription;
/** Group combo runnable action */
private final Runnable groupComboAction;
@ -166,7 +170,7 @@ public class CreateSubscriptionDlgPresenter {
private final Runnable okBtnAction;
/** The dataset */
private final DataSet dataSet;
private final DataSet<T, C> dataSet;
/** Group valid flag */
boolean groupValid = false;
@ -197,7 +201,7 @@ public class CreateSubscriptionDlgPresenter {
* task executor
*/
public CreateSubscriptionDlgPresenter(ICreateSubscriptionDlgView view,
DataSet dataSet, boolean create,
DataSet<T, C> dataSet, boolean create,
IGuiThreadTaskExecutor guiThreadTaskExecutor) {
this.view = view;
this.dataSet = dataSet;
@ -269,7 +273,7 @@ public class CreateSubscriptionDlgPresenter {
* @param sub
* The subscription object
*/
public void setSubscriptionData(Subscription sub) {
public void setSubscriptionData(Subscription<T, C> sub) {
this.subscription = sub;
this.view.setSubscription(sub);
}
@ -279,7 +283,7 @@ public class CreateSubscriptionDlgPresenter {
*
* @return the subscription
*/
public Subscription getSubscription() {
public Subscription<T, C> getSubscription() {
return this.subscription;
}
@ -386,7 +390,7 @@ public class CreateSubscriptionDlgPresenter {
}
if (this.dataSet.getDataSetType() == DataType.GRID) {
List<Integer> cycleTimes = subscription.getTime().getCycleTimes();
List<Integer> cycleTimes = ((GriddedTime)subscription.getTime()).getCycleTimes();
if (cycleTimes != null) {
List<String> cycleStrings = new ArrayList<String>();
@ -451,7 +455,7 @@ public class CreateSubscriptionDlgPresenter {
}
String[] sharedSites = view.getSharedSites();
if (sharedSites != null && sharedSites.length > 1) {
SharedSubscription sharedSub = new SharedSubscription(subscription);
SharedSubscription<T, C> sharedSub = new SharedSubscription<T, C>(subscription);
sharedSub.setRoute(Network.SBN);
Set<String> officeList = Sets.newHashSet(sharedSites);
sharedSub.setOfficeIDs(officeList);
@ -532,7 +536,7 @@ public class CreateSubscriptionDlgPresenter {
subscription.setDescription(view.getSubscriptionDescription());
if (this.dataSet.getDataSetType() == DataType.GRID) {
subscription.getTime().setCycleTimes(view.getCycleTimes());
((GriddedTime)subscription.getTime()).setCycleTimes(view.getCycleTimes());
}
subscription.setLatencyInMinutes(view.getLatencyValue());
@ -650,7 +654,7 @@ public class CreateSubscriptionDlgPresenter {
job.schedule();
return false;
} else {
InitialPendingSubscription pendingSub = subscription
InitialPendingSubscription<T, C> pendingSub = subscription
.initialPending(currentUser);
try {
@ -668,7 +672,7 @@ public class CreateSubscriptionDlgPresenter {
}
} else {
// Check for pending subscription, can only have one pending change
PendingSubscription pendingSub = subscription
PendingSubscription<T, C> pendingSub = subscription
.pending(LocalizationManager.getInstance().getCurrentUser());
pendingSub.setChangeReason(view.getChangeReason());
@ -679,7 +683,8 @@ public class CreateSubscriptionDlgPresenter {
IPendingSubscriptionHandler pendingSubHandler = RegistryObjectHandlers
.get(IPendingSubscriptionHandler.class);
try {
InitialPendingSubscription result = pendingSubHandler
@SuppressWarnings("unchecked")
InitialPendingSubscription<T, C> result = pendingSubHandler
.getBySubscription(subscription);
if (result != null) {
String msg = "There is already an edited version of this subscription.\n\nPlease "
@ -759,7 +764,7 @@ public class CreateSubscriptionDlgPresenter {
* @return true if the dialog can be closed, false otherwise
*/
@VisibleForTesting
ISubscriptionServiceResult storeSubscription(Subscription subscription,
ISubscriptionServiceResult storeSubscription(Subscription<T, C> subscription,
String username) {
ISubscriptionServiceResult result = null;
try {
@ -782,7 +787,7 @@ public class CreateSubscriptionDlgPresenter {
* the username
*/
@VisibleForTesting
void sendSubscriptionNotification(Subscription subscription, String username) {
void sendSubscriptionNotification(Subscription<T, C> subscription, String username) {
subscriptionNotificationService.sendCreatedSubscriptionNotification(
subscription, username);
}
@ -803,7 +808,8 @@ public class CreateSubscriptionDlgPresenter {
// Validate the date entries
datesValid = this.durationValidChk();
activeDatesValid = this.activePeriodValidChk();
int maxLatency = DataDeliveryUtils.getMaxLatency(subscription);
// TODO I want to take care of this too
int maxLatency = DataDeliveryUtils.getMaxLatency((Subscription<Time, Coverage>) subscription);
latencyValid = DataDeliveryGUIUtils.latencyValidChk(
view.getLatencyValue(), maxLatency);
if (!latencyValid) {
@ -1046,7 +1052,7 @@ public class CreateSubscriptionDlgPresenter {
/**
* Add the registry id to the subscription object.
*/
private void setSubscriptionId(Subscription sub) {
private void setSubscriptionId(Subscription<T, C> sub) {
String id = RegistryUtil.getRegistryObjectKey(sub);
sub.setId(id);
}

View file

@ -52,6 +52,7 @@ import com.raytheon.uf.common.datadelivery.registry.Ensemble;
import com.raytheon.uf.common.datadelivery.registry.GriddedCoverage;
import com.raytheon.uf.common.datadelivery.registry.GriddedDataSet;
import com.raytheon.uf.common.datadelivery.registry.GriddedDataSetMetaData;
import com.raytheon.uf.common.datadelivery.registry.GriddedTime;
import com.raytheon.uf.common.datadelivery.registry.Levels;
import com.raytheon.uf.common.datadelivery.registry.Network;
import com.raytheon.uf.common.datadelivery.registry.Parameter;
@ -102,6 +103,7 @@ import com.raytheon.uf.viz.datadelivery.utils.DataDeliveryUtils;
* Jun 11, 2013 2064 mpduff Fix editing of subscriptions.
* Jun 14, 2013 2108 mpduff Refactored DataSizeUtils.
* Jul 18, 2013 2205 djohnson If null time is selected from the dialog, return null for the adhoc.
* Sept 25, 2013 1797 dhladky Separated Time from GriddedTime
*
*
* </pre>
@ -381,7 +383,7 @@ public class GriddedSubsetManagerDlg
@Override
protected SpecificDateTimeXML getTimeXmlFromSubscription() {
SpecificDateTimeXML timeXml = new SpecificDateTimeXML();
Time time = this.subscription.getTime();
GriddedTime time = (GriddedTime)this.subscription.getTime();
List<Integer> cycleTimes = time.getCycleTimes();
if (!CollectionUtil.isNullOrEmpty(cycleTimes)) {
for (int cycle : cycleTimes) {
@ -473,7 +475,10 @@ public class GriddedSubsetManagerDlg
* {@inheritDoc}
*/
@Override
protected Time setupDataSpecificTime(Time newTime, Subscription sub) {
protected GriddedTime setupDataSpecificTime(Time subTime, Subscription sub) {
GriddedTime newTime = (GriddedTime)subTime;
if (asString.isEmpty()) {
SortedSet<ImmutableDate> newestToOldest = new TreeSet<ImmutableDate>(
Ordering.natural().reverse());
@ -512,7 +517,7 @@ public class GriddedSubsetManagerDlg
}
if (cycle != null) {
Time time;
GriddedTime time;
this.useLatestDate = (cycle == -999 ? true : false);
if (!useLatestDate) {
newTime.addCycleTime(cycle);
@ -521,14 +526,14 @@ public class GriddedSubsetManagerDlg
if (metaData == null) {
return null;
} else {
time = metaData.getTime();
time = (GriddedTime)metaData.getTime();
time.addCycleTime(cycle);
return time;
}
} else {
// If ulse latest data is selected then add all cycle times, the
// retrieval generator will determine which one to use.
time = dataSet.getTime();
time = (GriddedTime)dataSet.getTime();
for (Integer c : new TreeSet<Integer>(dataSet.getCycles())) {
time.addCycleTime(c);
}
@ -584,9 +589,9 @@ public class GriddedSubsetManagerDlg
ArrayList<Parameter> selectedParameterObjs = vTab.getParameters();
sub.setParameter(selectedParameterObjs);
Time dataSetTime = dataSet.getTime();
GriddedTime dataSetTime = (GriddedTime)dataSet.getTime();
Time newTime = new Time();
GriddedTime newTime = new GriddedTime();
if (sub instanceof AdhocSubscription) {
newTime = setupDataSpecificTime(newTime, sub);
@ -595,7 +600,7 @@ public class GriddedSubsetManagerDlg
}
sub.setTime(newTime);
} else if (!create) {
Time time = sub.getTime();
GriddedTime time = (GriddedTime)sub.getTime();
List<String> fcstHours = time.getFcstHours();
String[] selectedItems = this.timingTabControls
.getSelectedFcstHours();

View file

@ -66,6 +66,7 @@ import com.raytheon.uf.viz.datadelivery.subscription.subset.xml.VerticalXML;
* Nov 19, 2012 1166 djohnson Clean up JAXB representation of registry objects.
* Dec 10, 2012 1259 bsteffen Switch Data Delivery from LatLon to referenced envelopes.
* Jan 10, 2013 1444 mpduff Add updateSettings method.
* Sept 30, 1797 1797 dhladky separated time from gridded time
*
* </pre>
*
@ -196,7 +197,7 @@ public class VerticalSubsetTab extends SubsetTab implements
List<String> returnList = new ArrayList<String>();
Levels levels = null;
for (Parameter p : dataSet.getParameters().values()) {
for (Parameter p : (List<Parameter>)dataSet.getParameters().values()) {
DataLevelType tempCheck = p.getDataLevelByType(levelType.getType());
if (tempCheck != null) {

View file

@ -37,7 +37,9 @@ import org.eclipse.swt.widgets.Shell;
import com.raytheon.uf.common.datadelivery.registry.Coverage;
import com.raytheon.uf.common.datadelivery.registry.DataLevelType;
import com.raytheon.uf.common.datadelivery.registry.GriddedDataSet;
import com.raytheon.uf.common.datadelivery.registry.GriddedTime;
import com.raytheon.uf.common.datadelivery.registry.Parameter;
import com.raytheon.uf.common.datadelivery.registry.PointTime;
import com.raytheon.uf.common.datadelivery.registry.Subscription;
import com.raytheon.uf.common.datadelivery.registry.Time;
import com.raytheon.uf.common.time.util.TimeUtil;
@ -78,6 +80,7 @@ import com.vividsolutions.jts.geom.Coordinate;
* Jun 12, 2013 2064 mpduff Use SizeUtil to format data size output.
* Jul 26, 2031 2232 mpduff Removed sendAuthorizationRequest method.
* Aug 30, 2013 2288 bgonzale Added latency to details display.
* Sept 30, 2013 1797 dhladky Time GriddedTime separation
* </pre>
*
* @author mpduff
@ -617,7 +620,7 @@ public class DataDeliveryUtils {
*
* @return The formated details string
*/
public static String formatDetails(Subscription sub) {
public static String formatDetails(Subscription<Time, Coverage> sub) {
final String newline = StringUtil.NEWLINE;
final String space = " ";
final String comma = ", ";
@ -677,28 +680,35 @@ public class DataDeliveryUtils {
.append(newline);
}
// Get forecast hours
final Time subTime = sub.getTime();
final List<String> fcstHours = subTime.getFcstHours();
if (!CollectionUtil.isNullOrEmpty(fcstHours)) {
fmtStr.append("Forecast Hours: ").append(newline);
fmtStr.append("------ ");
for (int idx : subTime.getSelectedTimeIndices()) {
fmtStr.append(fcstHours.get(idx)).append(space);
}
if (subTime instanceof GriddedTime) {
GriddedTime gtime = (GriddedTime)subTime;
final List<String> fcstHours = gtime.getFcstHours();
if (!CollectionUtil.isNullOrEmpty(fcstHours)) {
fmtStr.append("Forecast Hours: ").append(newline);
fmtStr.append("------ ");
for (int idx : gtime.getSelectedTimeIndices()) {
fmtStr.append(fcstHours.get(idx)).append(space);
}
fmtStr.append(newline);
}
final List<Integer> cycles = subTime.getCycleTimes();
if (cycles != null && !cycles.isEmpty()) {
fmtStr.append("Cycles: ").append(newline);
fmtStr.append("------ ");
for (int cycle : cycles) {
fmtStr.append(cycle).append(space);
fmtStr.append(newline);
}
final List<Integer> cycles = gtime.getCycleTimes();
if (cycles != null && !cycles.isEmpty()) {
fmtStr.append("Cycles: ").append(newline);
fmtStr.append("------ ");
for (int cycle : cycles) {
fmtStr.append(cycle).append(space);
}
fmtStr.append(newline);
}
fmtStr.append(newline);
}
} else if (subTime instanceof PointTime) {
// Nothing done for Point at this time
}
List<Parameter> parmArray = sub.getParameter();
if (!CollectionUtil.isNullOrEmpty(parmArray)) {
@ -751,8 +761,20 @@ public class DataDeliveryUtils {
* The subscription
* @return the maximum latency in minutes
*/
public static int getMaxLatency(Subscription subscription) {
return getMaxLatency(subscription.getTime().getCycleTimes());
public static int getMaxLatency(Subscription<Time, Coverage> subscription) {
//TODO I am going to create a factory for Time so we don't have to do so much casting.
// Getting the generics on subscription was part one of that project.
Time time = subscription.getTime();
if (time instanceof PointTime) {
return subscription.getLatencyInMinutes();
} else if (time instanceof GriddedTime) {
return getMaxLatency(((GriddedTime)subscription.getTime()).getCycleTimes());
} else {
throw new IllegalArgumentException("Invalid Time object!");
}
}
/**

View file

@ -30,8 +30,10 @@ import com.raytheon.uf.common.datadelivery.bandwidth.IBandwidthRequest.RequestTy
import com.raytheon.uf.common.datadelivery.bandwidth.data.BandwidthGraphData;
import com.raytheon.uf.common.datadelivery.bandwidth.data.SubscriptionStatusSummary;
import com.raytheon.uf.common.datadelivery.registry.AdhocSubscription;
import com.raytheon.uf.common.datadelivery.registry.Coverage;
import com.raytheon.uf.common.datadelivery.registry.Network;
import com.raytheon.uf.common.datadelivery.registry.Subscription;
import com.raytheon.uf.common.datadelivery.registry.Time;
import com.raytheon.uf.common.status.IUFStatusHandler;
import com.raytheon.uf.common.status.UFStatus;
import com.raytheon.uf.common.status.UFStatus.Priority;
@ -52,15 +54,16 @@ import com.raytheon.uf.common.util.LogUtil;
* Dec 06, 2012 1397 djohnson Add ability to get bandwidth graph data.
* Feb 27, 2013 1644 djohnson Now abstract, sub-classes provide specific service lookup keys.
* Jul 18, 2013 1653 mpduff Add getSubscriptionStatusSummary method.
* Oct 2, 2013 1797 dhladky Generics
*
* </pre>
*
* @author djohnson
* @version 1.0
*/
public abstract class BandwidthService extends
BasePrivilegedServerService<IBandwidthRequest> implements
IBandwidthService {
public abstract class BandwidthService<T extends Time, C extends Coverage> extends
BasePrivilegedServerService<IBandwidthRequest<T, C>> implements
IBandwidthService<T, C> {
private static final IUFStatusHandler statusHandler = UFStatus
.getHandler(BandwidthService.class);
@ -79,7 +82,7 @@ public abstract class BandwidthService extends
*/
@Override
public final int getBandwidthForNetworkInKilobytes(Network network) {
IBandwidthRequest request = new IBandwidthRequest();
IBandwidthRequest<T, C> request = new IBandwidthRequest<T, C>();
request.setRequestType(RequestType.GET_BANDWIDTH);
request.setNetwork(network);
@ -100,7 +103,7 @@ public abstract class BandwidthService extends
@SuppressWarnings("unchecked")
public Set<String> proposeBandwidthForNetworkInKilobytes(Network network,
int bandwidth) {
IBandwidthRequest request = new IBandwidthRequest();
IBandwidthRequest<T, C> request = new IBandwidthRequest<T, C>();
request.setRequestType(RequestType.PROPOSE_SET_BANDWIDTH);
request.setNetwork(network);
request.setBandwidth(bandwidth);
@ -121,7 +124,7 @@ public abstract class BandwidthService extends
@Override
public final boolean setBandwidthForNetworkInKilobytes(Network network,
int bandwidth) {
IBandwidthRequest request = new IBandwidthRequest();
IBandwidthRequest<T, C> request = new IBandwidthRequest<T, C>();
request.setRequestType(RequestType.FORCE_SET_BANDWIDTH);
request.setNetwork(network);
request.setBandwidth(bandwidth);
@ -141,8 +144,9 @@ public abstract class BandwidthService extends
*
* @return
*/
@SuppressWarnings("unchecked")
@Override
public Set<String> schedule(Subscription subscription) {
public Set<String> schedule(Subscription<T, C> subscription) {
return schedule(Arrays.asList(subscription));
}
@ -154,8 +158,8 @@ public abstract class BandwidthService extends
* @return the set of unscheduled subscriptions
*/
@Override
public Set<String> schedule(List<Subscription> subscriptions) {
IBandwidthRequest request = new IBandwidthRequest();
public Set<String> schedule(List<Subscription<T, C>> subscriptions) {
IBandwidthRequest<T, C> request = new IBandwidthRequest<T, C>();
request.setRequestType(RequestType.SCHEDULE_SUBSCRIPTION);
request.setSubscriptions(subscriptions);
@ -176,8 +180,9 @@ public abstract class BandwidthService extends
/**
* {@inheritDoc}
*/
@SuppressWarnings("unchecked")
@Override
public IProposeScheduleResponse proposeSchedule(Subscription subscription) {
public IProposeScheduleResponse proposeSchedule(Subscription<T, C> subscription) {
return proposeSchedule(Arrays.asList(subscription));
}
@ -186,8 +191,8 @@ public abstract class BandwidthService extends
*/
@Override
public IProposeScheduleResponse proposeSchedule(
List<Subscription> subscriptions) {
IBandwidthRequest request = new IBandwidthRequest();
List<Subscription<T, C>> subscriptions) {
IBandwidthRequest<T, C> request = new IBandwidthRequest<T, C>();
request.setRequestType(RequestType.PROPOSE_SCHEDULE_SUBSCRIPTION);
request.setSubscriptions(subscriptions);
@ -208,7 +213,7 @@ public abstract class BandwidthService extends
*/
@Override
public void reinitialize() {
IBandwidthRequest request = new IBandwidthRequest();
IBandwidthRequest<T, C> request = new IBandwidthRequest<T, C>();
request.setRequestType(RequestType.REINITIALIZE);
try {
@ -222,10 +227,11 @@ public abstract class BandwidthService extends
/**
* {@inheritDoc}
*/
@SuppressWarnings("unchecked")
@Override
public Date getEstimatedCompletionTime(AdhocSubscription sub) {
IBandwidthRequest request = new IBandwidthRequest();
request.setSubscriptions(Arrays.<Subscription> asList(sub));
public Date getEstimatedCompletionTime(AdhocSubscription<T, C> sub) {
IBandwidthRequest<T, C> request = new IBandwidthRequest<T, C>();
request.setSubscriptions(Arrays.<Subscription<T, C>> asList(sub));
request.setRequestType(RequestType.GET_ESTIMATED_COMPLETION);
try {
return sendRequest(request, Date.class);
@ -243,7 +249,7 @@ public abstract class BandwidthService extends
*/
@Override
public BandwidthGraphData getBandwidthGraphData() {
IBandwidthRequest request = new IBandwidthRequest();
IBandwidthRequest<T, C> request = new IBandwidthRequest<T, C>();
request.setRequestType(RequestType.GET_BANDWIDTH_GRAPH_DATA);
try {
return sendRequest(request, BandwidthGraphData.class);
@ -255,11 +261,12 @@ public abstract class BandwidthService extends
}
}
@SuppressWarnings("unchecked")
@Override
public SubscriptionStatusSummary getSubscriptionStatusSummary(
Subscription subscription) {
IBandwidthRequest request = new IBandwidthRequest();
request.setSubscriptions(Arrays.<Subscription> asList(subscription));
Subscription<T, C> subscription) {
IBandwidthRequest<T, C> request = new IBandwidthRequest<T, C>();
request.setSubscriptions(Arrays.<Subscription<T, C>> asList(subscription));
request.setRequestType(RequestType.GET_SUBSCRIPTION_STATUS);
try {
return sendRequest(request, SubscriptionStatusSummary.class);

View file

@ -4,9 +4,11 @@ import java.util.Calendar;
import java.util.List;
import com.raytheon.uf.common.auth.req.AbstractPrivilegedRequest;
import com.raytheon.uf.common.datadelivery.registry.Coverage;
import com.raytheon.uf.common.datadelivery.registry.DataSetMetaData;
import com.raytheon.uf.common.datadelivery.registry.Network;
import com.raytheon.uf.common.datadelivery.registry.Subscription;
import com.raytheon.uf.common.datadelivery.registry.Time;
import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
@ -24,6 +26,7 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
* Nov 20, 2012 1286 djohnson Add PROPOSE_SCHEDULE_SUBSCRIPTION.
* Dec 06, 2012 1397 djohnson Add GET_BANDWIDTH_GRAPH_DATA.
* Jul 18, 2013 1653 mpduff Add GET_SUBSCRIPTION_STATUS.
* Oct 2 2013 1797 dhladky generic attempt
*
* </pre>
*
@ -31,7 +34,7 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
* @version 1.0
*/
@DynamicSerialize
public class IBandwidthRequest extends AbstractPrivilegedRequest {
public class IBandwidthRequest<T extends Time, C extends Coverage> extends AbstractPrivilegedRequest {
public static enum RequestType {
// Get the current retrieval plan for the
@ -50,7 +53,7 @@ public class IBandwidthRequest extends AbstractPrivilegedRequest {
private Calendar begin;
@DynamicSerializeElement
private DataSetMetaData dataSetMetaData;
private DataSetMetaData<T> dataSetMetaData;
@DynamicSerializeElement
private Calendar end;
@ -62,7 +65,7 @@ public class IBandwidthRequest extends AbstractPrivilegedRequest {
private RequestType requestType;
@DynamicSerializeElement
private List<Subscription> subscriptions;
private List<Subscription<T, C>> subscriptions;
@DynamicSerializeElement
private int bandwidth;
@ -81,7 +84,7 @@ public class IBandwidthRequest extends AbstractPrivilegedRequest {
/**
* @return the dataSetMetaData
*/
public DataSetMetaData getDataSetMetaData() {
public DataSetMetaData<T> getDataSetMetaData() {
return dataSetMetaData;
}
@ -123,7 +126,7 @@ public class IBandwidthRequest extends AbstractPrivilegedRequest {
* @param dataSetMetaData
* the dataSetMetaData to set
*/
public void setDataSetMetaData(DataSetMetaData dataSetMetaData) {
public void setDataSetMetaData(DataSetMetaData<T> dataSetMetaData) {
this.dataSetMetaData = dataSetMetaData;
}
@ -164,7 +167,7 @@ public class IBandwidthRequest extends AbstractPrivilegedRequest {
/**
* @return the subscriptions
*/
public List<Subscription> getSubscriptions() {
public List<Subscription<T, C>> getSubscriptions() {
return subscriptions;
}
@ -172,7 +175,7 @@ public class IBandwidthRequest extends AbstractPrivilegedRequest {
* @param subscriptions
* the subscriptions to set
*/
public void setSubscriptions(List<Subscription> subscriptions) {
public void setSubscriptions(List<Subscription<T, C>> subscriptions) {
this.subscriptions = subscriptions;
}
}

View file

@ -26,8 +26,10 @@ import java.util.Set;
import com.raytheon.uf.common.datadelivery.bandwidth.data.BandwidthGraphData;
import com.raytheon.uf.common.datadelivery.bandwidth.data.SubscriptionStatusSummary;
import com.raytheon.uf.common.datadelivery.registry.AdhocSubscription;
import com.raytheon.uf.common.datadelivery.registry.Coverage;
import com.raytheon.uf.common.datadelivery.registry.Network;
import com.raytheon.uf.common.datadelivery.registry.Subscription;
import com.raytheon.uf.common.datadelivery.registry.Time;
/**
* Service interface for interacting with the bandwidth manager.
@ -43,6 +45,7 @@ import com.raytheon.uf.common.datadelivery.registry.Subscription;
* Dec 06, 2012 1397 djohnson Add ability to get bandwidth graph data.
* Jul 11, 2013 2106 djohnson Bandwidth service now returns names of subscriptions for proposing bandwidth availability.
* Jul 18, 2013 1653 mpduff Added getSubscriptionStatusSummary.
* Oct 2, 2013 1797 dhladky Generics
*
* </pre>
*
@ -50,7 +53,7 @@ import com.raytheon.uf.common.datadelivery.registry.Subscription;
* @version 1.0
*/
public interface IBandwidthService {
public interface IBandwidthService<T extends Time, C extends Coverage> {
/**
* Retrieve the available bandwidth for a {@link Network}.
@ -85,26 +88,26 @@ public interface IBandwidthService {
Set<String> proposeBandwidthForNetworkInKilobytes(Network network,
int bandwidth);
/**
* Schedules a list of subscriptions for bandwidth management.
*
* @param subscriptions
* the subscription
* @return the set of subscription names that have had some cycles
* unscheduled
*/
Set<String> schedule(List<Subscription<T, C>> subscriptions);
/**
* Schedules a subscription for bandwidth management.
*
* @param subscription
* @param subscriptions
* the subscription
* @return the set of subscription names that have had some cycles
* unscheduled
*/
Set<String> schedule(Subscription subscription);
/**
* Schedules a list of subscription for bandwidth management.
*
* @param subscription
* the subscription
* @return the set of subscription names that have had some cycles
* unscheduled
*/
Set<String> schedule(List<Subscription> subscriptions);
Set<String> schedule(Subscription<T, C> subscription);
/**
* Proposes scheduling a subscription for bandwidth management
*
@ -112,7 +115,7 @@ public interface IBandwidthService {
* the subscription
* @return the response object
*/
IProposeScheduleResponse proposeSchedule(Subscription subscription);
IProposeScheduleResponse proposeSchedule(Subscription<T, C> subscription);
/**
* Proposes scheduling the subscriptions with bandwidth management.
@ -121,7 +124,7 @@ public interface IBandwidthService {
* the subscriptions
* @return the response object
*/
IProposeScheduleResponse proposeSchedule(List<Subscription> subscriptions);
IProposeScheduleResponse proposeSchedule(List<Subscription<T, C>> subscriptions);
/**
* Reinitializes the state of bandwidth management using the persistent
@ -137,7 +140,7 @@ public interface IBandwidthService {
* the subscription
* @return the estimated completion time as a date
*/
Date getEstimatedCompletionTime(AdhocSubscription sub);
Date getEstimatedCompletionTime(AdhocSubscription<T, C> sub);
/**
* Retrieve bandwidth graph data.
@ -155,5 +158,5 @@ public interface IBandwidthService {
* @return The summary
*/
SubscriptionStatusSummary getSubscriptionStatusSummary(
Subscription subscription);
Subscription<T, C> subscription);
}

View file

@ -19,6 +19,8 @@
**/
package com.raytheon.uf.common.datadelivery.bandwidth;
import com.raytheon.uf.common.datadelivery.registry.Coverage;
import com.raytheon.uf.common.datadelivery.registry.Time;
import com.raytheon.uf.common.datadelivery.request.DataDeliveryConstants;
/**
@ -32,13 +34,14 @@ import com.raytheon.uf.common.datadelivery.request.DataDeliveryConstants;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Feb 27, 2013 1644 djohnson Initial creation
* Oct 3 2013 1797 dhladky Updating generics
*
* </pre>
*
* @author djohnson
* @version 1.0
*/
public class WfoBandwidthService extends BandwidthService {
public class WfoBandwidthService<T extends Time, C extends Coverage> extends BandwidthService<T, C> {
/**
* Constructor.

View file

@ -44,6 +44,7 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
* Dec 12, 2012 1433 bgonzale Use new Subscription copy ctor.
* Mar 29, 2013 1841 djohnson Subscription is now UserSubscription.
* May 21, 2013 2020 mpduff Rename UserSubscription to SiteSubscription.
* Oct 2, 2013 1797 dhladky Generics start
*
* </pre>
*
@ -54,7 +55,7 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
@XmlRootElement(name = "AdhocSubscription")
@XmlAccessorType(XmlAccessType.NONE)
@DynamicSerialize
public class AdhocSubscription extends SiteSubscription implements
public class AdhocSubscription<T extends Time, C extends Coverage> extends SiteSubscription<T, C> implements
ISerializableObject {
private static final long serialVersionUID = -2200080380095632486L;
@ -63,7 +64,7 @@ public class AdhocSubscription extends SiteSubscription implements
setGroupName("Adhoc");
}
public AdhocSubscription(SiteSubscription subscription) {
public AdhocSubscription(SiteSubscription<T, C> subscription) {
super(subscription);
setGroupName("Adhoc");
}

View file

@ -49,7 +49,7 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
@XmlAccessorType(XmlAccessType.NONE)
@DynamicSerialize
@RegistryObject({ "providerName", "collectionName", "dataSetName" })
public abstract class DataSet {
public abstract class DataSet<T extends Time, C extends Coverage>{
@RegistryObjectOwner
@XmlAttribute
@ -81,7 +81,7 @@ public abstract class DataSet {
@XmlElement(name = "coverage")
@DynamicSerializeElement
protected Coverage coverage;
protected C coverage;
@XmlAttribute
@DynamicSerializeElement
@ -92,7 +92,7 @@ public abstract class DataSet {
@DynamicSerializeElement
@SlotAttribute
@SlotAttributeConverter(TimeSlotConverter.class)
protected Time time;
protected T time;
public Map<String, Parameter> getParameters() {
return parameters;
@ -118,11 +118,11 @@ public abstract class DataSet {
this.dataSetName = dataSetName;
}
public void setCoverage(Coverage coverage) {
public void setCoverage(C coverage) {
this.coverage = coverage;
}
public Coverage getCoverage() {
public C getCoverage() {
return coverage;
}
@ -142,11 +142,11 @@ public abstract class DataSet {
this.providerName = providerName;
}
public void setTime(Time time) {
public void setTime(T time) {
this.time = time;
}
public Time getTime() {
public T getTime() {
return time;
}
@ -160,6 +160,7 @@ public abstract class DataSet {
@Override
public boolean equals(Object obj) {
if (obj instanceof DataSet) {
@SuppressWarnings("rawtypes")
DataSet other = (DataSet) obj;
EqualsBuilder eqBuilder = new EqualsBuilder();
eqBuilder.append(this.getProviderName(), other.getProviderName());
@ -187,7 +188,7 @@ public abstract class DataSet {
* @param result
* the combined dataset
*/
public void combine(DataSet toCombine) {
public void combine(DataSet<T, C> toCombine) {
this.getParameters().putAll(toCombine.getParameters());
}
}

View file

@ -41,6 +41,7 @@ import com.raytheon.uf.common.time.util.ImmutableDate;
* Sep 06, 2012 1102 djohnson Implement comparable.
* Oct 16, 2012 0726 djohnson Override {@link #toString()}.
* Nov 19, 2012 1166 djohnson Clean up JAXB representation of registry objects.
* Sept, 30 2013 1797 dhladky Made generic based on Time
* </pre>
*
* @author dhladky
@ -49,7 +50,7 @@ import com.raytheon.uf.common.time.util.ImmutableDate;
@XmlAccessorType(XmlAccessType.NONE)
@XmlSeeAlso({ GriddedDataSetMetaData.class, OpenDapGriddedDataSetMetaData.class, PointDataSetMetaData.class })
@RegistryObject({ "url" })
public abstract class DataSetMetaData implements ISerializableObject {
public abstract class DataSetMetaData<T extends Time> implements ISerializableObject {
public static final String DATE_SLOT = "date";
public static final String DATA_SET_NAME_SLOT = "dataSetName";
@ -60,10 +61,10 @@ public abstract class DataSetMetaData implements ISerializableObject {
* Compares the two instances of {@link DataSetMetaData} by their applicable
* date fields.
*/
public static Comparator<? super DataSetMetaData> DATE_COMPARATOR = new Comparator<DataSetMetaData>()
public static Comparator<? super DataSetMetaData<?>> DATE_COMPARATOR = new Comparator<DataSetMetaData<?>>()
{
@Override
public int compare(DataSetMetaData o1, DataSetMetaData o2) {
public int compare(DataSetMetaData<?> o1, DataSetMetaData<?> o2) {
checkNotNull(o1, "Cannot compare this object with null!");
checkNotNull(o2, "Cannot compare this object with null!");
@ -91,7 +92,7 @@ public abstract class DataSetMetaData implements ISerializableObject {
@DynamicSerializeElement
@SlotAttribute
@SlotAttributeConverter(TimeSlotConverter.class)
protected Time time;
protected T time;
@XmlAttribute
@SlotAttribute(DATA_SET_NAME_SLOT)
@ -121,11 +122,11 @@ public abstract class DataSetMetaData implements ISerializableObject {
this.url = url;
}
public void setTime(Time time) {
public void setTime(T time) {
this.time = time;
}
public Time getTime() {
public T getTime() {
return time;
}
@ -185,7 +186,7 @@ public abstract class DataSetMetaData implements ISerializableObject {
@Override
public boolean equals(Object obj) {
if (obj instanceof DataSetMetaData) {
DataSetMetaData other = (DataSetMetaData) obj;
DataSetMetaData<?> other = (DataSetMetaData<?>) obj;
EqualsBuilder eqBuilder = new EqualsBuilder();
eqBuilder.append(this.getUrl(), other.getUrl());
return eqBuilder.isEquals();

View file

@ -41,6 +41,7 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Aug 10, 2012 1022 djohnson Initial creation
* Sept 30, 2013 1797 dhladky Generics
*
* </pre>
*
@ -50,7 +51,7 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
@XmlRootElement
@XmlAccessorType(XmlAccessType.NONE)
@DynamicSerialize
public abstract class GriddedDataSet extends DataSet {
public abstract class GriddedDataSet extends DataSet<GriddedTime, GriddedCoverage> {
@XmlElement
@DynamicSerializeElement
@ -106,7 +107,7 @@ public abstract class GriddedDataSet extends DataSet {
* {@inheritDoc}
*/
@Override
public void combine(DataSet toCombine) {
public void combine(DataSet<GriddedTime, GriddedCoverage> toCombine) {
super.combine(toCombine);
if (toCombine instanceof GriddedDataSet) {

View file

@ -26,6 +26,7 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
* Jul 24, 2012 955 djohnson Add {@link RegistryObject}.
* Aug 20, 2012 0743 djohnson Store cycle in a slot.
* Nov 19, 2012 1166 djohnson Clean up JAXB representation of registry objects.
* Sept 30, 2013 1797 dhladky Generics
*
* </pre>
*
@ -35,7 +36,7 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
@XmlAccessorType(XmlAccessType.NONE)
@XmlSeeAlso(OpenDapGriddedDataSetMetaData.class)
public abstract class GriddedDataSetMetaData extends
DataSetMetaData {
DataSetMetaData<GriddedTime> {
public static final String CYCLE_SLOT = "cycle";

View file

@ -53,6 +53,7 @@ import com.raytheon.uf.common.status.UFStatus.Priority;
* Jul 24, 2012 955 djohnson Use List instead of ArrayList.
* Jun 04, 2013 223 mpduff Cleanup.
* Jun 06, 2013 2038 djohnson Remove throws ParseException.
* Sept 25, 2013 1797 dhladky separated overrides from time.
*
* </pre>
*
@ -71,13 +72,6 @@ public class GriddedTime extends Time implements ISerializableObject,
private static final IUFStatusHandler statusHandler = UFStatus
.getHandler(GriddedTime.class);
/**
* Default Constructor.
*/
public GriddedTime() {
}
@XmlElement(name = "step")
@DynamicSerializeElement
private Double step;
@ -101,12 +95,19 @@ public class GriddedTime extends Time implements ISerializableObject,
private Date endDate = null;
private Date requestStartDate = null;
/**
* Default Constructor.
*/
public GriddedTime() {
}
/**
* Clone constructor.
*
* @param the
* {@link Time} to clone
* {@link GriddedTime} to clone
*/
public GriddedTime(GriddedTime toCopy) {
List<Integer> incomingCycleTimes = toCopy.getCycleTimes();
@ -196,12 +197,18 @@ public class GriddedTime extends Time implements ISerializableObject,
}
}
@Override
/**
* Get the step of time
* @return
*/
public Double getStep() {
return step;
}
@Override
/**
* Sets the step of time
* @param step
*/
public void setStep(Double step) {
this.step = step;
}
@ -211,7 +218,6 @@ public class GriddedTime extends Time implements ISerializableObject,
*
* @return List of cycle times
*/
@Override
public List<Integer> getCycleTimes() {
return this.cycleTimes;
}
@ -222,7 +228,6 @@ public class GriddedTime extends Time implements ISerializableObject,
* @param cycleTimes
* ArrayList of cycle times.
*/
@Override
public void setCycleTimes(List<Integer> cycleTimes) {
this.cycleTimes = cycleTimes;
}
@ -233,7 +238,6 @@ public class GriddedTime extends Time implements ISerializableObject,
* @param cycleTime
* The cycle time to add
*/
@Override
public void addCycleTime(int cycleTime) {
this.cycleTimes.add(cycleTime);
}
@ -244,7 +248,6 @@ public class GriddedTime extends Time implements ISerializableObject,
* @param timeInt
* @return
*/
@Override
public Date getTimeAsDate(int timeInt) {
try {
@ -275,7 +278,6 @@ public class GriddedTime extends Time implements ISerializableObject,
*
* @param timeInt
*/
@Override
public void setRequestStartTimeAsInt(Integer timeInt) {
try {
if (getStartDate() != null) {
@ -311,7 +313,6 @@ public class GriddedTime extends Time implements ISerializableObject,
*
* @return
*/
@Override
public int getRequestStartTimeAsInt() {
int timeInt = 0;
@ -352,7 +353,6 @@ public class GriddedTime extends Time implements ISerializableObject,
*
* @param timeInt
*/
@Override
public void setRequestEndTimeAsInt(Integer timeInt) {
try {
if (getEndDate() != null) {
@ -384,7 +384,6 @@ public class GriddedTime extends Time implements ISerializableObject,
*
* @return
*/
@Override
public int getRequestEndTimeAsInt() {
int timeInt = 0;
@ -420,12 +419,18 @@ public class GriddedTime extends Time implements ISerializableObject,
}
@Override
/**
* Gets the step unit of time
* @return
*/
public String getStepUnit() {
return stepUnit;
}
@Override
/**
* Set the step unit of time
* @param stepUnit
*/
public void setStepUnit(String stepUnit) {
this.stepUnit = stepUnit;
}
@ -486,8 +491,7 @@ public class GriddedTime extends Time implements ISerializableObject,
*
* @return
*/
@Override
public int findForecastStepUnit() {
public int findForecastStepUnit() {
if (getStepUnit().equals("hour")) {
return (int) (getStep() * 60 * 60);
@ -505,7 +509,7 @@ public class GriddedTime extends Time implements ISerializableObject,
return -99999;
}
/**
* Set the end date
*
@ -581,7 +585,6 @@ public class GriddedTime extends Time implements ISerializableObject,
*
* @return
*/
@Override
public List<String> getFcstHours() {
List<String> hours = new ArrayList<String>();
@ -599,7 +602,6 @@ public class GriddedTime extends Time implements ISerializableObject,
/**
* @return the selectedTimeIndices
*/
@Override
public List<Integer> getSelectedTimeIndices() {
return selectedTimeIndices;
}
@ -608,7 +610,6 @@ public class GriddedTime extends Time implements ISerializableObject,
* @param selectedTimeIndices
* the selectedTimeIndices to set
*/
@Override
public void setSelectedTimeIndices(List<Integer> selectedTimeIndices) {
this.selectedTimeIndices = selectedTimeIndices;
}
@ -619,7 +620,6 @@ public class GriddedTime extends Time implements ISerializableObject,
*
* @return
*/
@Override
public List<List<Integer>> getTimeSequences(int sfactor) {
List<List<Integer>> sequences = new ArrayList<List<Integer>>();
@ -646,4 +646,5 @@ public class GriddedTime extends Time implements ISerializableObject,
return sequences;
}
}

View file

@ -40,6 +40,7 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Apr 02, 2013 1841 djohnson Initial creation
* Sept 30, 2013 1797 dhladky Generics
*
* </pre>
*
@ -53,8 +54,8 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
Subscription.NAME_SLOT, Subscription.DATA_SET_SLOT,
Subscription.OWNER_SLOT,
InitialPendingSubscription.CHANGE_REQUEST_ID_SLOT })
public class InitialPendingSharedSubscription extends SharedSubscription
implements InitialPendingSubscription {
public class InitialPendingSharedSubscription<T extends Time, C extends Coverage> extends SharedSubscription<T, C>
implements InitialPendingSubscription<T, C> {
private static final long serialVersionUID = 2779084460608459754L;
/** ID of the user requesting the change */
@ -83,7 +84,7 @@ public class InitialPendingSharedSubscription extends SharedSubscription
* @param user
* user
*/
public InitialPendingSharedSubscription(SharedSubscription subscription,
public InitialPendingSharedSubscription(SharedSubscription<T, C> subscription,
String user) {
super(subscription);
@ -130,7 +131,7 @@ public class InitialPendingSharedSubscription extends SharedSubscription
* {@inheritDoc}
*/
@Override
public Subscription subscription() {
return new SharedSubscription(this);
public Subscription<T, C> subscription() {
return new SharedSubscription<T, C>(this);
}
}

View file

@ -45,6 +45,7 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
* Mar 29, 2013 1841 djohnson Subscription is now UserSubscription.
* Apr 02, 2013 1841 djohnson InitialPendingSubscription is now InitialPendingUserSubscription.
* May 21, 2013 2020 mpduff Rename UserSubscription to SiteSubscription.
* Sept 30, 2013 1797 dhladky Some Generics
*
* </pre>
*
@ -58,8 +59,8 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
Subscription.NAME_SLOT, Subscription.DATA_SET_SLOT,
Subscription.OWNER_SLOT,
InitialPendingSubscription.CHANGE_REQUEST_ID_SLOT })
public class InitialPendingSiteSubscription extends SiteSubscription implements
InitialPendingSubscription {
public class InitialPendingSiteSubscription<T extends Time, C extends Coverage> extends SiteSubscription<T, C> implements
InitialPendingSubscription<T, C> {
private static final long serialVersionUID = 2779084460608459754L;
/** ID of the user requesting the change */
@ -88,7 +89,7 @@ public class InitialPendingSiteSubscription extends SiteSubscription implements
* @param user
* user
*/
public InitialPendingSiteSubscription(SiteSubscription subscription, String user) {
public InitialPendingSiteSubscription(SiteSubscription<T, C> subscription, String user) {
super(subscription);
this.setChangeReqId(user);
@ -134,7 +135,7 @@ public class InitialPendingSiteSubscription extends SiteSubscription implements
* {@inheritDoc}
*/
@Override
public Subscription subscription() {
return new SiteSubscription(this);
public Subscription<T, C> subscription() {
return new SiteSubscription<T, C>(this);
}
}

View file

@ -30,13 +30,15 @@ package com.raytheon.uf.common.datadelivery.registry;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Apr 02, 2013 1841 djohsnon Converted to interface
* Sept 30, 2013 1797 dhladky Some generics
*
* </pre>
*
* @author djohnson
* @version 1.0
*/
public interface InitialPendingSubscription extends Subscription {
public interface InitialPendingSubscription<T extends Time, C extends Coverage> extends Subscription<T, C> {
String CHANGE_REQUEST_ID_SLOT = "changeReqId";
@ -75,5 +77,5 @@ public interface InitialPendingSubscription extends Subscription {
*
* @return the subscription
*/
Subscription subscription();
Subscription<T, C> subscription();
}

View file

@ -46,6 +46,7 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
* ------------ ---------- ----------- --------------------------
* Jul 31, 2012 1022 djohnson Initial creation
* Nov 19, 2012 1166 djohnson Clean up JAXB representation of registry objects.
* Sept 30, 2013 1797 dhladky Generics
*
* </pre>
*
@ -134,7 +135,7 @@ public class OpenDapGriddedDataSet extends GriddedDataSet {
* {@inheritDoc}
*/
@Override
public void combine(DataSet toCombine) {
public void combine(DataSet<GriddedTime, GriddedCoverage> toCombine) {
super.combine(toCombine);
if (toCombine instanceof OpenDapGriddedDataSet) {

View file

@ -39,6 +39,7 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Apr 04, 2013 1841 djohnson Initial creation
* Sept 30, 2013 1797 dhladky Generics
*
* </pre>
*
@ -54,8 +55,8 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
InitialPendingSubscription.CHANGE_REQUEST_ID_SLOT }, associationMappings = { @AssociationMapping(associationType = AssociationTypes.RELATED_TO, keyFields = {
Subscription.PROVIDER_NAME_SLOT, Subscription.NAME_SLOT,
Subscription.DATA_SET_SLOT, Subscription.OWNER_SLOT }, required = false, targetObject = SharedSubscription.class) })
public class PendingSharedSubscription extends InitialPendingSharedSubscription
implements PendingSubscription, ISerializableObject {
public class PendingSharedSubscription<T extends Time, C extends Coverage> extends InitialPendingSharedSubscription<T, C>
implements PendingSubscription<T, C>, ISerializableObject {
private static final long serialVersionUID = 7607153845750089310L;
@ -63,7 +64,7 @@ public class PendingSharedSubscription extends InitialPendingSharedSubscription
}
public PendingSharedSubscription(SharedSubscription subscription,
public PendingSharedSubscription(SharedSubscription<T, C> subscription,
String currentUser) {
super(subscription, currentUser);
}

View file

@ -44,6 +44,7 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
* Sep 24, 2012 1157 mpduff Changed to extend IniitialPendingSubscription.
* Nov 19, 2012 1166 djohnson Clean up JAXB representation of registry objects.
* Mar 29, 2013 1841 djohnson Subscription is now UserSubscription.
* Oct 1, 2013 1797 dhladky Added some start for generics
*
* </pre>
*
@ -59,8 +60,8 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
InitialPendingSubscription.CHANGE_REQUEST_ID_SLOT }, associationMappings = { @AssociationMapping(associationType = AssociationTypes.RELATED_TO, keyFields = {
Subscription.PROVIDER_NAME_SLOT, Subscription.NAME_SLOT,
Subscription.DATA_SET_SLOT, Subscription.OWNER_SLOT }, required = false, targetObject = SiteSubscription.class) })
public class PendingSiteSubscription extends InitialPendingSiteSubscription
implements PendingSubscription, ISerializableObject {
public class PendingSiteSubscription<T extends Time, C extends Coverage> extends InitialPendingSiteSubscription<T, C>
implements PendingSubscription<T, C>, ISerializableObject {
private static final long serialVersionUID = 7607153845750089310L;
@ -68,7 +69,7 @@ public class PendingSiteSubscription extends InitialPendingSiteSubscription
}
public PendingSiteSubscription(SiteSubscription subscription,
public PendingSiteSubscription(SiteSubscription<T, C> subscription,
String currentUser) {
super(subscription, currentUser);
}

View file

@ -29,6 +29,7 @@ package com.raytheon.uf.common.datadelivery.registry;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Apr 04, 2013 1841 djohnson Initial creation
* Sept 30, 2013 1797 dhladky Some Generics
*
* </pre>
*
@ -36,6 +37,6 @@ package com.raytheon.uf.common.datadelivery.registry;
* @version 1.0
*/
public interface PendingSubscription extends InitialPendingSubscription {
public interface PendingSubscription<T extends Time, C extends Coverage> extends InitialPendingSubscription<T, C> {
}

View file

@ -35,6 +35,7 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Aug 11, 2012 754 dhladky Initial creation
* Sept 30, 2013 1797 dhladky Generics
*
* </pre>
*
@ -45,7 +46,7 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
@XmlAccessorType(XmlAccessType.NONE)
@XmlSeeAlso(WFSPointDataSet.class)
@DynamicSerialize
public abstract class PointDataSet extends DataSet {
public abstract class PointDataSet extends DataSet<PointTime, Coverage> {
public PointDataSet() {
this.dataSetType = DataType.POINT;

View file

@ -32,6 +32,7 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Aug 20, 2012 754 dhladky Initial creation
* Sept 30, 2013 1797 dhladky Generics
*
* </pre>
*
@ -42,7 +43,7 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
@XmlRootElement
@XmlAccessorType(XmlAccessType.NONE)
@DynamicSerialize
public class PointDataSetMetaData extends DataSetMetaData {
public class PointDataSetMetaData extends DataSetMetaData<PointTime> {
@Override
public void accept(IDataSetMetaDataVisitor visitor) {

View file

@ -50,6 +50,7 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
* Sept 11, 2013 2351 dhladky Added more point intervals
* Sept 17, 2013 2383 bgonzale Use end or start time when times are
* null because times are not always set.
* Sept 30, 2013 1797 dhladky separation of gridded time from time
*
* </pre>
*
@ -84,6 +85,23 @@ public class PointTime extends Time implements ISerializableObject,
public PointTime() {
}
/**
* Clone constructor.
*
* @param the
* {@link PointTime} to clone
*/
public PointTime(PointTime toCopy) {
this.end = toCopy.end;
this.format = toCopy.format;
this.numTimes = toCopy.numTimes;
this.requestEnd = toCopy.requestEnd;
this.requestStart = toCopy.requestStart;
this.start = toCopy.start;
this.times = toCopy.times;
this.interval = toCopy.interval;
}
public void setTimes(List<Date> times) {
this.times = times;

View file

@ -60,6 +60,7 @@ import com.raytheon.uf.common.time.util.TimeUtil;
* Apr 08, 2013 1826 djohnson Remove delivery options.
* May 15, 2013 1040 mpduff Changed to use Set for office id.
* May 21, 2013 2020 mpduff Rename UserSubscription to SiteSubscription.
* Sept 30,2013 1797 dhladky Generics
*
* </pre>
*
@ -70,8 +71,8 @@ import com.raytheon.uf.common.time.util.TimeUtil;
@XmlSeeAlso({ PendingSiteSubscription.class, PendingSharedSubscription.class,
AdhocSubscription.class, SiteSubscription.class,
SharedSubscription.class })
public abstract class RecurringSubscription implements ISerializableObject,
Serializable, Subscription {
public abstract class RecurringSubscription<T extends Time, C extends Coverage> implements ISerializableObject,
Serializable, Subscription<T, C> {
private static final long serialVersionUID = -6422673887457060034L;
@ -90,7 +91,7 @@ public abstract class RecurringSubscription implements ISerializableObject,
* @param name
* New subscription name
*/
public RecurringSubscription(Subscription sub, String name) {
public RecurringSubscription(Subscription<T, C> sub, String name) {
this.setActive(sub.isActive());
this.setActivePeriodEnd(sub.getActivePeriodEnd());
this.setActivePeriodStart(sub.getActivePeriodStart());
@ -126,7 +127,7 @@ public abstract class RecurringSubscription implements ISerializableObject,
* @param sub
* Subscription object
*/
public RecurringSubscription(Subscription sub) {
public RecurringSubscription(Subscription<T, C> sub) {
this(sub, sub.getName());
}
@ -186,13 +187,13 @@ public abstract class RecurringSubscription implements ISerializableObject,
@XmlElement(name = "coverage")
@DynamicSerializeElement
private Coverage coverage;
private C coverage;
@XmlElement
@DynamicSerializeElement
@SlotAttribute
@SlotAttributeConverter(TimeSlotConverter.class)
private Time time;
private T time;
@XmlAttribute
@DynamicSerializeElement
@ -483,7 +484,7 @@ public abstract class RecurringSubscription implements ISerializableObject,
* @return coverage
*/
@Override
public Coverage getCoverage() {
public C getCoverage() {
return coverage;
}
@ -494,7 +495,7 @@ public abstract class RecurringSubscription implements ISerializableObject,
* coverage area
*/
@Override
public void setCoverage(Coverage coverage) {
public void setCoverage(C coverage) {
this.coverage = coverage;
}
@ -504,7 +505,7 @@ public abstract class RecurringSubscription implements ISerializableObject,
* @return subscription time
*/
@Override
public Time getTime() {
public T getTime() {
return time;
}
@ -515,7 +516,7 @@ public abstract class RecurringSubscription implements ISerializableObject,
* time stamp
*/
@Override
public void setTime(Time time) {
public void setTime(T time) {
this.time = time;
}
@ -775,7 +776,8 @@ public abstract class RecurringSubscription implements ISerializableObject,
@Override
public boolean equals(Object obj) {
if (obj instanceof Subscription) {
Subscription other = (Subscription) obj;
@SuppressWarnings("unchecked")
Subscription<T, C> other = (Subscription<T, C>) obj;
EqualsBuilder builder = new EqualsBuilder();
builder.append(getProvider(), other.getProvider());

View file

@ -38,6 +38,7 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
* Mar 27, 2013 1841 djohnson Initial creation
* May 15, 2013 1040 mpduff Added addOfficeId.
* May 29, 2013 1650 djohnson Add setOwner() so reflection works.
* Sept 30, 2013 1797 dhladky Generics
*
* </pre>
*
@ -50,7 +51,7 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
Subscription.NAME_SLOT, Subscription.DATA_SET_SLOT,
Subscription.OWNER_SLOT })
@DynamicSerialize
public class SharedSubscription extends RecurringSubscription {
public class SharedSubscription<T extends Time, C extends Coverage> extends RecurringSubscription<T, C> {
private static final long serialVersionUID = -7221500266253493273L;
@ -66,14 +67,14 @@ public class SharedSubscription extends RecurringSubscription {
/**
* @param sharedSubscription
*/
public SharedSubscription(Subscription sub) {
public SharedSubscription(Subscription<T, C> sub) {
super(sub);
}
/**
* @param sharedSubscription
*/
public SharedSubscription(SharedSubscription sub, String newName) {
public SharedSubscription(SharedSubscription<T, C> sub, String newName) {
super(sub, newName);
}
@ -101,32 +102,32 @@ public class SharedSubscription extends RecurringSubscription {
* {@inheritDoc}
*/
@Override
public SharedSubscription copy() {
return new SharedSubscription(this);
public SharedSubscription<T, C> copy() {
return new SharedSubscription<T, C>(this);
}
/**
* {@inheritDoc}
*/
@Override
public SharedSubscription copy(String newName) {
return new SharedSubscription(this, newName);
public SharedSubscription<T, C> copy(String newName) {
return new SharedSubscription<T, C>(this, newName);
}
/**
* {@inheritDoc}
*/
@Override
public InitialPendingSubscription initialPending(String currentUser) {
return new InitialPendingSharedSubscription(this, currentUser);
public InitialPendingSubscription<T, C> initialPending(String currentUser) {
return new InitialPendingSharedSubscription<T, C>(this, currentUser);
}
/**
* {@inheritDoc}
*/
@Override
public PendingSubscription pending(String currentUser) {
return new PendingSharedSubscription(this, currentUser);
public PendingSubscription<T, C> pending(String currentUser) {
return new PendingSharedSubscription<T, C>(this, currentUser);
}
/**

View file

@ -61,6 +61,7 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
* Jun 12, 2013 2038 djohnson Set registryId from each constructor with arguments.
* Jun 13, 2013 2095 djohnson Duplicate 13.5.1 change so bandwidth manager deletes subscriptions correctly.
* Jun 24, 2013 2106 djohnson Add copy constructor.
* Sept 30, 2013 1797 dhladky Some Generics
*
* </pre>
*
@ -73,7 +74,7 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
@RegistryObject({ Subscription.PROVIDER_NAME_SLOT, Subscription.NAME_SLOT,
Subscription.DATA_SET_SLOT, Subscription.OWNER_SLOT })
@DynamicSerialize
public class SiteSubscription extends RecurringSubscription {
public class SiteSubscription<T extends Time, C extends Coverage> extends RecurringSubscription<T, C> {
private static final long serialVersionUID = -6422673887457060034L;
/**
@ -91,7 +92,7 @@ public class SiteSubscription extends RecurringSubscription {
* @param name
* New subscription name
*/
public SiteSubscription(SiteSubscription sub, String name) {
public SiteSubscription(SiteSubscription<T, C> sub, String name) {
this(sub);
this.setName(name);
this.setId(RegistryUtil.getRegistryObjectKey(this));
@ -103,7 +104,7 @@ public class SiteSubscription extends RecurringSubscription {
* @param sub
* Subscription object
*/
public SiteSubscription(SiteSubscription sub) {
public SiteSubscription(SiteSubscription<T, C> sub) {
super(sub);
this.setOwner(sub.getOwner());
this.setId(RegistryUtil.getRegistryObjectKey(this));
@ -138,32 +139,32 @@ public class SiteSubscription extends RecurringSubscription {
* {@inheritDoc}
*/
@Override
public SiteSubscription copy() {
return new SiteSubscription(this);
public SiteSubscription<T, C> copy() {
return new SiteSubscription<T, C>(this);
}
/**
* {@inheritDoc}
*/
@Override
public Subscription copy(String newName) {
return new SiteSubscription(this, newName);
public Subscription<T, C> copy(String newName) {
return new SiteSubscription<T, C>(this, newName);
}
/**
* {@inheritDoc}
*/
@Override
public InitialPendingSubscription initialPending(String currentUser) {
return new InitialPendingSiteSubscription(this, currentUser);
public InitialPendingSubscription<T, C> initialPending(String currentUser) {
return new InitialPendingSiteSubscription<T, C>(this, currentUser);
}
/**
* {@inheritDoc}
*/
@Override
public PendingSubscription pending(String currentUser) {
return new PendingSiteSubscription(this, currentUser);
public PendingSubscription<T, C> pending(String currentUser) {
return new PendingSiteSubscription<T, C>(this, currentUser);
}
/**

View file

@ -39,6 +39,7 @@ import javax.xml.bind.annotation.XmlEnumValue;
* Apr 08, 2013 1826 djohnson Remove delivery options.
* May 15, 2013 1040 mpduff Changed officeId to a set.
* Jul 11, 2013 2106 djohnson SubscriptionPriority allows comparison.
* Sept 30,2013 1797 dhladky Abstracted and genericized.
*
* </pre>
*
@ -46,7 +47,7 @@ import javax.xml.bind.annotation.XmlEnumValue;
* @version 1.0
*/
public interface Subscription {
public interface Subscription<T extends Time, C extends Coverage> {
/** Enumeration to use for subscription priorities */
@XmlEnum
@ -318,7 +319,7 @@ public interface Subscription {
*
* @return coverage
*/
Coverage getCoverage();
C getCoverage();
/**
* Set the coverage area for the subscription.
@ -326,14 +327,14 @@ public interface Subscription {
* @param coverage
* coverage area
*/
void setCoverage(Coverage coverage);
void setCoverage(C coverage);
/**
* Get subscription submission time.
*
* @return subscription time
*/
Time getTime();
T getTime();
/**
* Set the subscription submission time.
@ -341,7 +342,7 @@ public interface Subscription {
* @param time
* time stamp
*/
void setTime(Time time);
void setTime(T time);
/**
* Set the subscription parameters.
@ -585,26 +586,26 @@ public interface Subscription {
*
* @return the copy
*/
Subscription copy();
Subscription<T, C> copy();
/**
* Copy the subscription.
*
* @return the copy with the new name
*/
Subscription copy(String newName);
Subscription<T, C> copy(String newName);
/**
* @param currentUser
* @return
*/
InitialPendingSubscription initialPending(String currentUser);
InitialPendingSubscription<T, C> initialPending(String currentUser);
/**
* @param currentUser
* @return
*/
PendingSubscription pending(String currentUser);
PendingSubscription<T, C> pending(String currentUser);
/**
* Add an office Id to the list.

View file

@ -23,19 +23,14 @@ package com.raytheon.uf.common.datadelivery.registry;
import java.io.Serializable;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.TimeZone;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElements;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlSeeAlso;
import com.google.common.collect.Lists;
import com.raytheon.uf.common.serialization.ISerializableObject;
import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
@ -56,6 +51,7 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
* Nov 19, 2012 1166 djohnson Clean up JAXB representation of registry objects.
* Jun 04, 2013 223 mpduff Added interval field.
* Jun 06, 2013 2038 djohnson Remove throws ParseException.
* Sept 26, 2013 1797 dhladky Separated Gridded fields from this class once and for all.
*
* </pre>
*
@ -63,43 +59,13 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
* @version 1.0
*/
@XmlRootElement
@XmlAccessorType(XmlAccessType.NONE)
@DynamicSerialize
public class Time implements ISerializableObject, Serializable {
@XmlSeeAlso({ GriddedTime.class, PointTime.class})
public abstract class Time implements ISerializableObject, Serializable {
private static final long serialVersionUID = -7032078355732493125L;
/**
* Default Constructor.
*/
public Time() {
}
/**
* Clone constructor.
*
* @param the
* {@link Time} to clone
*/
public Time(Time toCopy) {
List<Integer> incomingCycleTimes = toCopy.getCycleTimes();
this.cycleTimes = (incomingCycleTimes == null) ? null
: new ArrayList<Integer>(incomingCycleTimes);
this.end = toCopy.end;
this.format = toCopy.format;
this.numTimes = toCopy.numTimes;
this.requestEnd = toCopy.requestEnd;
this.requestStart = toCopy.requestStart;
List<Integer> incomingSelectedTimeIndices = toCopy.selectedTimeIndices;
this.selectedTimeIndices = (incomingSelectedTimeIndices == null) ? null
: new ArrayList<Integer>(incomingSelectedTimeIndices);
this.start = toCopy.start;
this.step = toCopy.step;
this.stepUnit = toCopy.stepUnit;
}
@XmlAttribute
@DynamicSerializeElement
protected int numTimes;
@ -112,14 +78,6 @@ public class Time implements ISerializableObject, Serializable {
@DynamicSerializeElement
protected String end;
@XmlAttribute
@DynamicSerializeElement
protected Double step;
@XmlAttribute
@DynamicSerializeElement
protected String stepUnit;
@XmlAttribute
@DynamicSerializeElement
protected String format;
@ -132,14 +90,6 @@ public class Time implements ISerializableObject, Serializable {
@DynamicSerializeElement
protected String requestEnd;
@XmlElements({ @XmlElement(name = "selectedTimeIndices", type = Integer.class) })
@DynamicSerializeElement
protected List<Integer> selectedTimeIndices = new ArrayList<Integer>();
@XmlElements({ @XmlElement(name = "cycleTimes", type = Integer.class) })
@DynamicSerializeElement
protected List<Integer> cycleTimes = new ArrayList<Integer>();
protected Date startDate = null;
protected Date requestEndDate = null;
@ -239,14 +189,6 @@ public class Time implements ISerializableObject, Serializable {
}
}
public Double getStep() {
return step;
}
public void setStep(Double step) {
this.step = step;
}
public String getFormat() {
return format;
}
@ -254,255 +196,7 @@ public class Time implements ISerializableObject, Serializable {
public void setFormat(String format) {
this.format = format;
}
/**
* Get the cycle times.
*
* @return List of cycle times
*/
public List<Integer> getCycleTimes() {
return this.cycleTimes;
}
/**
* Set the cycle times.
*
* @param cycleTimes
* ArrayList of cycle times.
*/
public void setCycleTimes(List<Integer> cycleTimes) {
this.cycleTimes = cycleTimes;
}
/**
* Add a cycle time.
*
* @param cycleTime
* The cycle time to add
*/
public void addCycleTime(int cycleTime) {
if (cycleTimes == null) {
cycleTimes = Lists.newArrayList();
}
this.cycleTimes.add(cycleTime);
}
/**
* Get me the date of the time requested
*
* @param timeInt
* @return
*/
public Date getTimeAsDate(int timeInt) {
try {
long unitStepFactor = getUnitStepFactor();
for (int i = 0; i < getNumTimes(); i++) {
if (timeInt == i) {
long time = 0l;
if (i == 0) {
time = getStartDate().getTime();
} else {
time = (long) (getStartDate().getTime() + (unitStepFactor
* getStep() * i));
}
return new Date(time);
}
}
} catch (ParseException pe) {
System.err.println("Can't parse the requested time: "
+ pe.getMessage());
}
return null;
}
/**
* Sets the request start as a date
*
* @param timeInt
*/
public void setRequestStartTimeAsInt(Integer timeInt) {
try {
if (getStartDate() != null) {
long unitStepFactor = getUnitStepFactor();
for (int i = 0; i < getNumTimes(); i++) {
// System.out.println("StartDate: "+getStartDate());
if (timeInt == i) {
long time = 0l;
if (i == 0) {
time = getStartDate().getTime();
} else {
time = (long) (getStartDate().getTime() + (unitStepFactor
* getStep() * i));
}
Date date = new Date(time);
setRequestStartAsDate(date);
break;
}
}
}
} catch (ParseException pe) {
System.err.println("Can't parse the requested time: "
+ pe.getMessage());
}
}
/**
* Get the start time as an int
*
* @return
*/
public int getRequestStartTimeAsInt() {
int timeInt = 0;
try {
if (getRequestStartAsDate() != null && getStartDate() != null) {
long unitStepFactor = getUnitStepFactor();
for (int i = 0; i < getNumTimes(); i++) {
// System.out.println("StartDate: "+getStartDate());
long time = 0l;
if (i == 0) {
time = getStartDate().getTime();
} else {
time = (long) (getStartDate().getTime() + (unitStepFactor
* getStep() * i));
}
Date stepDate = new Date(time);
if (stepDate.equals(getRequestStartAsDate())) {
timeInt = i;
break;
}
}
}
} catch (ParseException pe) {
System.err.println("Can't parse the requested time: "
+ pe.getMessage());
}
return timeInt;
}
/**
* Set the end time with a know integer in the list
*
* @param timeInt
*/
public void setRequestEndTimeAsInt(Integer timeInt) {
try {
if (getEndDate() != null) {
long unitStepFactor = getUnitStepFactor();
for (int i = getNumTimes() - 1; i > 0; i--) {
// System.out.println("EndDate: " + getEndDate());
if (i == timeInt) {
long time = (long) (getStartDate().getTime() + (unitStepFactor
* getStep() * i));
Date date = new Date(time);
setRequestEndAsDate(date);
break;
}
}
}
} catch (ParseException pe) {
System.err.println("Can't parse the requested time: "
+ pe.getMessage());
}
}
/**
* Get the end time as an int
*
* @return
*/
public int getRequestEndTimeAsInt() {
int timeInt = 0;
try {
if (getRequestEndAsDate() != null && getEndDate() != null) {
long unitStepFactor = getUnitStepFactor();
for (int i = 0; i < getNumTimes(); i++) {
// System.out.println("StartDate: "+getStartDate());
long time = 0l;
if (i == getNumTimes() - 1) {
time = getEndDate().getTime();
} else {
time = (long) (getStartDate().getTime() + (unitStepFactor
* getStep() * i));
}
Date stepDate = new Date(time);
if (stepDate.equals(getRequestEndAsDate())) {
timeInt = i;
break;
}
}
}
} catch (ParseException pe) {
System.err.println("Can't parse the requested time: "
+ pe.getMessage());
}
return timeInt;
}
public String getStepUnit() {
return stepUnit;
}
public void setStepUnit(String stepUnit) {
this.stepUnit = stepUnit;
}
/**
* get the primitive
*
* @return
*/
private long getUnitStepFactor() {
long millis = 0l;
if (getStepUnit().equals(STEP_UNIT.SECOND.getDurationUnit())) {
return 1000;
} else if (getStepUnit().equals(STEP_UNIT.MINUTE.getDurationUnit())) {
millis = 1000 * 60;
} else if (getStepUnit().equals(STEP_UNIT.HOUR.getDurationUnit())) {
millis = 1000 * 60 * 60;
} else if (getStepUnit().equals(STEP_UNIT.DAY.getDurationUnit())) {
millis = 1000 * 60 * 60 * 24;
} else if (getStepUnit().equals(STEP_UNIT.WEEK.getDurationUnit())) {
millis = 1000 * 60 * 60 * 24 * 7;
}
return millis;
}
/**
*
* Enumeration of the duration units
@ -554,30 +248,6 @@ public class Time implements ISerializableObject, Serializable {
return null;
}
/**
* Finds forecast step in seconds
*
* @return
*/
public int findForecastStepUnit() {
if (getStepUnit().equals("hour")) {
return (int) (getStep() * 60 * 60);
} else if (getStepUnit().equals("minute")) {
return (int) (getStep() * 60);
} else if (getStepUnit().equals("month")) {
return (int) (getStep() * 30 * 24 * 60);
} else if (getStepUnit().equals("week")) {
return (int) (getStep() * 7 * 24 * 60);
} else if (getStepUnit().equals("second")) {
return getStep().intValue();
} else if (getStepUnit().equals("day")) {
return (int) (getStep() * 24 * 60 * 60);
}
return -99999;
}
public String getRequestStart() {
return requestStart;
}
@ -660,72 +330,4 @@ public class Time implements ISerializableObject, Serializable {
return requestEndDate;
}
/**
* gets the FCST hours
*
* @return
*/
public List<String> getFcstHours() {
List<String> hours = new ArrayList<String>();
int hour = 0;
for (int i = 0; i < numTimes; i++) {
if (i == 0) {
hours.add(String.valueOf(hour));
} else {
hour += getStep();
hours.add(String.valueOf(hour));
}
}
return hours;
}
/**
* @return the selectedTimeIndices
*/
public List<Integer> getSelectedTimeIndices() {
return selectedTimeIndices;
}
/**
* @param selectedTimeIndices
* the selectedTimeIndices to set
*/
public void setSelectedTimeIndices(List<Integer> selectedTimeIndices) {
this.selectedTimeIndices = selectedTimeIndices;
}
/**
* Gets the time breakups needs to split retrievals for a subscription and
* limit size of retrievals
*
* @return
*/
public List<List<Integer>> getTimeSequences(int sfactor) {
List<List<Integer>> sequences = new ArrayList<List<Integer>>();
List<Integer> al = new ArrayList<Integer>();
if (selectedTimeIndices.size() > 0) {
int previous = selectedTimeIndices.get(0);
al.add(previous);
for (int i = 1; i < selectedTimeIndices.size(); i++) {
int next = selectedTimeIndices.get(i);
if (next - previous == 1 && al.size() <= sfactor) {
al.add(next);
previous = next;
} else {
sequences.add(al);
al = new ArrayList<Integer>();
al.add(next);
previous = next;
}
}
sequences.add(al);
}
return sequences;
}
}

View file

@ -32,6 +32,7 @@ import com.raytheon.uf.common.registry.ebxml.slots.SlotConverter;
* ------------ ---------- ----------- --------------------------
* May 15, 2012 455 jspinks Initial creation
* May 29, 2013 753 dhladky Updated the way point datasets are sent.
* Sept 25, 2013 1797 dhladky separated time and gridded time
*
* </pre>
*
@ -80,10 +81,10 @@ public class TimeSlotConverter implements SlotConverter {
}
}
// This will convert to GriddedTime when I execute DR to
} else if (slotValue instanceof Time) {
// Handle Gridded Times
} else if (slotValue instanceof GriddedTime) {
Time t = (Time)slotValue;
GriddedTime t = (GriddedTime)slotValue;
SimpleDateFormat df = new SimpleDateFormat(CalendarAttribute.DATE_TIME_FORMAT);
Calendar current = Calendar.getInstance();
Calendar end = Calendar.getInstance();

View file

@ -146,7 +146,7 @@ public class DataSetHandler extends
// referenced by
// their RegistryObject ids...
Map<String, Parameter> remap = new HashMap<String, Parameter>();
for (Parameter parm : obj.getParameters().values()) {
for (Parameter parm : (List<Parameter>) obj.getParameters().values()) {
try {
remap.put(RegistryUtil.getRegistryObjectKey(parm), parm);
} catch (Throwable e1) {

View file

@ -28,6 +28,7 @@ import com.raytheon.uf.common.datadelivery.registry.Coverage;
import com.raytheon.uf.common.datadelivery.registry.Ensemble;
import com.raytheon.uf.common.datadelivery.registry.GriddedCoverage;
import com.raytheon.uf.common.datadelivery.registry.GriddedDataSet;
import com.raytheon.uf.common.datadelivery.registry.GriddedTime;
import com.raytheon.uf.common.datadelivery.registry.Levels;
import com.raytheon.uf.common.datadelivery.registry.Parameter;
import com.raytheon.uf.common.datadelivery.registry.Subscription;
@ -44,6 +45,7 @@ import com.raytheon.uf.common.util.CollectionUtil;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Jun 13, 2013 2108 mpduff Initial creation.
* Sept 25, 2013 1797 dhladky separated time from gridded time
*
* </pre>
*
@ -176,9 +178,10 @@ public class GriddedDataSizeUtils extends DataSizeUtils<GriddedDataSet> {
final Ensemble ensemble = subscription.getEnsemble();
int numEnsemble = (ensemble == null) ? 1 : ensemble.getMemberCount();
return getDataSetSizeInBytes(subscription.getParameter(), subscription
.getTime().getSelectedTimeIndices().size(), numEnsemble,
subscription.getCoverage().getRequestEnvelope());
return getDataSetSizeInBytes(subscription.getParameter(),
((GriddedTime) subscription.getTime()).getSelectedTimeIndices()
.size(), numEnsemble, subscription.getCoverage()
.getRequestEnvelope());
}
/**

View file

@ -46,6 +46,7 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
* ------------ ---------- ----------- --------------------------
* Jan 17, 2011 191 dhladky Initial creation
* Feb 15, 2013 1543 djohnson Allow any type of Coverage instance without a JAXB adapter.
* Oct 1, 2013 1797 dhladky Generics
*
* </pre>
*
@ -55,7 +56,7 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
@XmlRootElement
@XmlAccessorType(XmlAccessType.NONE)
@DynamicSerialize
public class RetrievalAttribute implements ISerializableObject, Serializable {
public class RetrievalAttribute<T extends Time, C extends Coverage> implements ISerializableObject, Serializable {
/**
*
@ -95,11 +96,11 @@ public class RetrievalAttribute implements ISerializableObject, Serializable {
@XmlAnyElement(lax = true)
@DynamicSerializeElement
private Coverage coverage;
private C coverage;
@XmlElement(name = "time", type = Time.class)
@DynamicSerializeElement
private Time time;
private T time;
@XmlElement
@DynamicSerializeElement
@ -113,7 +114,7 @@ public class RetrievalAttribute implements ISerializableObject, Serializable {
}
public Coverage getCoverage() {
public C getCoverage() {
return coverage;
}
@ -129,11 +130,11 @@ public class RetrievalAttribute implements ISerializableObject, Serializable {
return provider;
}
public Time getTime() {
public T getTime() {
return time;
}
public void setCoverage(Coverage coverage) {
public void setCoverage(C coverage) {
this.coverage = coverage;
}
@ -149,7 +150,7 @@ public class RetrievalAttribute implements ISerializableObject, Serializable {
this.provider = provider;
}
public void setTime(Time time) {
public void setTime(T time) {
this.time = time;
}

View file

@ -19,7 +19,9 @@
**/
package com.raytheon.uf.common.datadelivery.service.subscription;
import com.raytheon.uf.common.datadelivery.registry.Coverage;
import com.raytheon.uf.common.datadelivery.registry.Subscription;
import com.raytheon.uf.common.datadelivery.registry.Time;
/**
* Checks for duplication among subscriptions.
@ -32,13 +34,14 @@ import com.raytheon.uf.common.datadelivery.registry.Subscription;
* ------------ ---------- ----------- --------------------------
* May 02, 2013 2000 djohnson Initial creation
* Sept 24, 2013 2386 dhladky Added a method
* Oct 2, 2013 1797 dhladky More Generics
*
* </pre>
*
* @author djohnson
* @version 1.0
*/
public interface ISubscriptionDuplicateChecker {
public interface ISubscriptionDuplicateChecker<T extends Time, C extends Coverage> {
/**
* Returns the percent, 0-100, of how many parameters from sub2 are
@ -49,7 +52,7 @@ public interface ISubscriptionDuplicateChecker {
*
* @return 0-100
*/
int getParameterDuplicationPercent(Subscription sub1, Subscription sub2);
int getParameterDuplicationPercent(Subscription<T, C> sub1, Subscription<T, C> sub2);
/**
* Returns the percent, 0-100, of how many forecast hours from sub2 are
@ -60,7 +63,7 @@ public interface ISubscriptionDuplicateChecker {
*
* @return 0-100
*/
int getForecastHourDuplicationPercent(Subscription sub1, Subscription sub2);
int getForecastHourDuplicationPercent(Subscription<T, C> sub1, Subscription<T, C> sub2);
/**
* Returns the percent, 0-100, of how similar the time is from sub2 to sub1.
@ -70,7 +73,7 @@ public interface ISubscriptionDuplicateChecker {
*
* @return 0-100
*/
int getTimeDuplicationPercent(Subscription sub1, Subscription sub2);
int getTimeDuplicationPercent(Subscription<T, C> sub1, Subscription<T, C> sub2);
/**
* Returns the percent, 0-100, of how many cycle hours from sub2 are
@ -81,7 +84,7 @@ public interface ISubscriptionDuplicateChecker {
*
* @return 0-100
*/
int getCycleDuplicationPercent(Subscription sub2, Subscription sub1);
int getCycleDuplicationPercent(Subscription<T, C> sub2, Subscription<T, C> sub1);
/**
* Returns the percent, 0-100, of how much spatial coverage from sub2 is
@ -92,5 +95,5 @@ public interface ISubscriptionDuplicateChecker {
*
* @return 0-100
*/
int getSpatialDuplicationPercent(Subscription sub1, Subscription sub2);
int getSpatialDuplicationPercent(Subscription<T, C> sub1, Subscription<T, C> sub2);
}

View file

@ -21,8 +21,10 @@ package com.raytheon.uf.common.datadelivery.service.subscription;
import java.util.Map;
import com.raytheon.uf.common.datadelivery.registry.Coverage;
import com.raytheon.uf.common.datadelivery.registry.DataType;
import com.raytheon.uf.common.datadelivery.registry.Subscription;
import com.raytheon.uf.common.datadelivery.registry.Time;
import com.raytheon.uf.common.localization.exception.LocalizationException;
/**
@ -35,6 +37,7 @@ import com.raytheon.uf.common.localization.exception.LocalizationException;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* May 09, 2013 2000 djohnson Initial creation
* Oct 1, 2013 1797 dhladky More Generics
*
* </pre>
*
@ -42,7 +45,7 @@ import com.raytheon.uf.common.localization.exception.LocalizationException;
* @version 1.0
*/
public interface ISubscriptionOverlapService {
public interface ISubscriptionOverlapService<T extends Time, C extends Coverage> {
int ONE_HUNDRED_PERCENT = 100;
@ -78,8 +81,8 @@ public interface ISubscriptionOverlapService {
*
* @return the overlap check response
*/
ISubscriptionOverlapResponse isOverlapping(Subscription sub1,
Subscription sub2);
ISubscriptionOverlapResponse isOverlapping(Subscription<T, C> sub1,
Subscription<T, C> sub2);
/**
* Writes a new configuration file.

View file

@ -25,8 +25,10 @@ import org.geotools.geometry.jts.ReferencedEnvelope;
import org.opengis.referencing.operation.TransformException;
import com.raytheon.uf.common.datadelivery.registry.Coverage;
import com.raytheon.uf.common.datadelivery.registry.GriddedTime;
import com.raytheon.uf.common.datadelivery.registry.PointTime;
import com.raytheon.uf.common.datadelivery.registry.Subscription;
import com.raytheon.uf.common.datadelivery.registry.Time;
import com.raytheon.uf.common.geospatial.MapUtil;
import com.raytheon.uf.common.status.IUFStatusHandler;
import com.raytheon.uf.common.status.UFStatus;
@ -44,14 +46,15 @@ import com.raytheon.uf.common.util.CollectionUtil;
* ------------ ---------- ----------- --------------------------
* May 02, 2013 2000 djohnson Initial creation
* Sept 24, 2013 2386 dhladky Made multi-data type
* Sept 25, 2013 1797 dhladky separated time from griddedtime
*
* </pre>
*
* @author djohnson
* @version 1.0
*/
public class SubscriptionDuplicateChecker implements
ISubscriptionDuplicateChecker {
public class SubscriptionDuplicateChecker<T extends Time, C extends Coverage> implements
ISubscriptionDuplicateChecker<T, C> {
private static final IUFStatusHandler statusHandler = UFStatus
.getHandler(SubscriptionDuplicateChecker.class);
@ -63,8 +66,8 @@ public class SubscriptionDuplicateChecker implements
* {@inheritDoc}
*/
@Override
public int getParameterDuplicationPercent(Subscription sub1,
Subscription sub2) {
public int getParameterDuplicationPercent(Subscription<T, C> sub1,
Subscription<T, C> sub2) {
return getDuplicationPercent(sub1.getParameter(), sub2.getParameter());
}
@ -72,36 +75,66 @@ public class SubscriptionDuplicateChecker implements
* {@inheritDoc}
*/
@Override
public int getForecastHourDuplicationPercent(Subscription sub1,
Subscription sub2) {
return getDuplicationPercent(sub1.getTime().getSelectedTimeIndices(),
sub2.getTime().getSelectedTimeIndices());
public int getForecastHourDuplicationPercent(Subscription<T, C> sub1,
Subscription<T, C> sub2) {
if (sub1.getTime() instanceof GriddedTime) {
GriddedTime gtime1 = (GriddedTime) sub1.getTime();
GriddedTime gtime2 = (GriddedTime) sub2.getTime();
return getDuplicationPercent(gtime1.getSelectedTimeIndices(),
gtime2.getSelectedTimeIndices());
} else {
throw new IllegalArgumentException(sub1.getTime().getClass()
+ " Config not yet Implemented!");
}
}
/**
* {@inheritDoc}
*/
@Override
public int getCycleDuplicationPercent(Subscription sub1, Subscription sub2) {
return getDuplicationPercent(sub1.getTime().getCycleTimes(), sub2
.getTime().getCycleTimes());
public int getCycleDuplicationPercent(Subscription<T, C> sub1,
Subscription<T, C> sub2) {
if (sub1.getTime() instanceof GriddedTime) {
GriddedTime gtime1 = (GriddedTime) sub1.getTime();
GriddedTime gtime2 = (GriddedTime) sub2.getTime();
return getDuplicationPercent(gtime1.getCycleTimes(),
gtime2.getCycleTimes());
} else {
throw new IllegalArgumentException(sub1.getTime().getClass()
+ " Config not yet Implemented!");
}
}
/**
* {@inheritDoc}
*/
@Override
public int getTimeDuplicationPercent(Subscription sub1, Subscription sub2) {
public int getTimeDuplicationPercent(Subscription<T, C> sub1,
Subscription<T, C> sub2) {
return getDuplicationPercent(((PointTime) sub1.getTime()).getTimes(),
((PointTime) sub2.getTime()).getTimes());
if (sub1.getTime() instanceof PointTime) {
PointTime ptime1 = (PointTime) sub1.getTime();
PointTime ptime2 = (PointTime) sub2.getTime();
return getDuplicationPercent(ptime1.getTimes(), ptime2.getTimes());
} else {
return 0;
}
}
/**
* {@inheritDoc}
*/
@Override
public int getSpatialDuplicationPercent(Subscription sub1, Subscription sub2) {
public int getSpatialDuplicationPercent(Subscription<T, C> sub1, Subscription<T, C> sub2) {
final Coverage sub1Coverage = sub1.getCoverage();
final Coverage sub2Coverage = sub2.getCoverage();
@ -127,13 +160,13 @@ public class SubscriptionDuplicateChecker implements
return 0;
}
private <T> int getDuplicationPercent(Collection<T> coll1,
Collection<T> coll2) {
private <M> int getDuplicationPercent(Collection<M> coll1,
Collection<M> coll2) {
int numberSatisfiedByFirstCollection = 0;
if (!CollectionUtil.isNullOrEmpty(coll1)
&& !CollectionUtil.isNullOrEmpty(coll2)) {
for (T entry : coll2) {
for (M entry : coll2) {
if (coll1.contains(entry)) {
numberSatisfiedByFirstCollection++;
}
@ -144,4 +177,5 @@ public class SubscriptionDuplicateChecker implements
return 0;
}
}

View file

@ -25,8 +25,10 @@ import java.util.MissingResourceException;
import javax.xml.bind.JAXBException;
import com.raytheon.uf.common.datadelivery.registry.Coverage;
import com.raytheon.uf.common.datadelivery.registry.DataType;
import com.raytheon.uf.common.datadelivery.registry.Subscription;
import com.raytheon.uf.common.datadelivery.registry.Time;
import com.raytheon.uf.common.localization.IPathManager;
import com.raytheon.uf.common.localization.LocalizationContext;
import com.raytheon.uf.common.localization.LocalizationContext.LocalizationLevel;
@ -58,7 +60,7 @@ import com.raytheon.uf.common.status.UFStatus.Priority;
* @version 1.0
*/
public class SubscriptionOverlapService implements ISubscriptionOverlapService {
public class SubscriptionOverlapService<T extends Time, C extends Coverage> implements ISubscriptionOverlapService<T, C> {
/**
* Base response object implementing {@link ISubscriptionOverlapResponse}.
@ -110,7 +112,7 @@ public class SubscriptionOverlapService implements ISubscriptionOverlapService {
private static final String SUBSCRIPTION_OVERLAP_CONFIG_FILE_PATH = "datadelivery/";
private final ISubscriptionDuplicateChecker duplicateChecker;
private final ISubscriptionDuplicateChecker<T, C> duplicateChecker;
private final JAXBManager jaxbManager;
@ -120,7 +122,7 @@ public class SubscriptionOverlapService implements ISubscriptionOverlapService {
* @param duplicateChecker
*/
public SubscriptionOverlapService(
ISubscriptionDuplicateChecker duplicateChecker) {
ISubscriptionDuplicateChecker<T,C> duplicateChecker) {
this.duplicateChecker = duplicateChecker;
try {
@ -138,8 +140,8 @@ public class SubscriptionOverlapService implements ISubscriptionOverlapService {
* {@inheritDoc}
*/
@Override
public ISubscriptionOverlapResponse isOverlapping(Subscription sub1,
Subscription sub2) {
public ISubscriptionOverlapResponse isOverlapping(Subscription<T, C> sub1,
Subscription<T, C> sub2) {
// Ignore requests to compare with itself
if (sub1.getName().equals(sub2.getName())) {
return new SubscriptionOverlapResponse(false, false);
@ -210,7 +212,7 @@ public class SubscriptionOverlapService implements ISubscriptionOverlapService {
* @param sub2
* @return
*/
private SubscriptionOverlapResponse processGriddedSubscriptionOverlap(GridSubscriptionOverlapConfig config, Subscription sub1, Subscription sub2) {
private SubscriptionOverlapResponse processGriddedSubscriptionOverlap(GridSubscriptionOverlapConfig config, Subscription<T, C> sub1, Subscription<T, C> sub2) {
final int parameterDuplicationPercent = duplicateChecker
.getParameterDuplicationPercent(sub1, sub2);
@ -240,7 +242,7 @@ public class SubscriptionOverlapService implements ISubscriptionOverlapService {
* @param sub2
* @return
*/
private SubscriptionOverlapResponse processPointSubscriptionOverlap(PointSubscriptionOverlapConfig config, Subscription sub1, Subscription sub2) {
private SubscriptionOverlapResponse processPointSubscriptionOverlap(PointSubscriptionOverlapConfig config, Subscription<T, C> sub1, Subscription<T, C> sub2) {
final int parameterDuplicationPercent = duplicateChecker
.getParameterDuplicationPercent(sub1, sub2);
@ -310,7 +312,7 @@ public class SubscriptionOverlapService implements ISubscriptionOverlapService {
* @param sub2
* @return
*/
private SubscriptionOverlapResponse getOverlap(SubscriptionOverlapConfig config, Subscription sub1, Subscription sub2) {
private SubscriptionOverlapResponse getOverlap(SubscriptionOverlapConfig config, Subscription<T, C> sub1, Subscription<T,C> sub2) {
SubscriptionOverlapResponse response = null;
DataType type = sub1.getDataSetType();

View file

@ -15,4 +15,5 @@ Require-Bundle: com.raytheon.uf.common.datadelivery.bandwidth;bundle-version="1.
com.raytheon.uf.common.serialization.comm;bundle-version="1.12.1174",
com.raytheon.uf.common.status;bundle-version="1.12.1174",
com.google.guava;bundle-version="1.0.0",
com.raytheon.uf.edex.core;bundle-version="1.12.1174"
com.raytheon.uf.edex.core;bundle-version="1.12.1174",
com.raytheon.uf.common.registry.ebxml;bundle-version="1.0.0"

View file

@ -23,7 +23,9 @@ import java.util.List;
import java.util.Set;
import com.raytheon.uf.common.datadelivery.bandwidth.ProposeScheduleResponse;
import com.raytheon.uf.common.datadelivery.registry.Coverage;
import com.raytheon.uf.common.datadelivery.registry.Subscription;
import com.raytheon.uf.common.datadelivery.registry.Time;
import com.raytheon.uf.common.datadelivery.registry.handlers.IDataSetMetaDataHandler;
import com.raytheon.uf.common.datadelivery.registry.handlers.ISubscriptionHandler;
import com.raytheon.uf.common.serialization.SerializationException;
@ -51,18 +53,19 @@ import com.raytheon.uf.edex.datadelivery.bandwidth.util.BandwidthDaoUtil;
* Mar 11, 2013 1645 djohnson Add missing Spring file.
* May 15, 2013 2000 djohnson Include daos.
* Jul 10, 2013 2106 djohnson Dependency inject registry handlers.
* Oct 3 2013 1797 dhladky Generics added
*
* </pre>
*
* @author djohnson
* @version 1.0
*/
public class NcfBandwidthManagerCreator implements IEdexBandwidthManagerCreator {
public class NcfBandwidthManagerCreator<T extends Time, C extends Coverage> implements IEdexBandwidthManagerCreator<T, C> {
/**
* NCF {@link BandwidthManager} implementation.
*/
static class NcfBandwidthManager extends EdexBandwidthManager {
static class NcfBandwidthManager<T extends Time, C extends Coverage> extends EdexBandwidthManager<T, C> {
private static final String[] NCF_BANDWIDTH_MANAGER_FILES = new String[] {
JarUtil.getResResourcePath("/spring/bandwidth-datadelivery-ncf-edex-impl.xml"),
@ -82,8 +85,8 @@ public class NcfBandwidthManagerCreator implements IEdexBandwidthManagerCreator
* @param bandwidthDaoUtil
*/
public NcfBandwidthManager(IBandwidthDbInit dbInit,
IBandwidthDao bandwidthDao, RetrievalManager retrievalManager,
BandwidthDaoUtil bandwidthDaoUtil,
IBandwidthDao<T, C> bandwidthDao, RetrievalManager retrievalManager,
BandwidthDaoUtil<T, C> bandwidthDaoUtil,
IDataSetMetaDataHandler dataSetMetaDataHandler,
ISubscriptionHandler subscriptionHandler) {
super(dbInit, bandwidthDao, retrievalManager, bandwidthDaoUtil,
@ -100,7 +103,7 @@ public class NcfBandwidthManagerCreator implements IEdexBandwidthManagerCreator
*/
@Override
protected ProposeScheduleResponse proposeScheduleSbnSubscription(
List<Subscription> subscriptions) throws Exception {
List<Subscription<T, C>> subscriptions) throws Exception {
return proposeScheduleSubscriptions(subscriptions);
}
@ -109,7 +112,7 @@ public class NcfBandwidthManagerCreator implements IEdexBandwidthManagerCreator
*/
@Override
protected Set<String> scheduleSbnSubscriptions(
List<Subscription> subscriptions) throws SerializationException {
List<Subscription<T, C>> subscriptions) throws SerializationException {
return scheduleSubscriptions(subscriptions);
}
}
@ -118,7 +121,7 @@ public class NcfBandwidthManagerCreator implements IEdexBandwidthManagerCreator
* {@inheritDoc}
*/
@Override
public IBandwidthManager getBandwidthManager(IBandwidthDbInit dbInit,
public IBandwidthManager<T, C> getBandwidthManager(IBandwidthDbInit dbInit,
IBandwidthDao bandwidthDao, RetrievalManager retrievalManager,
BandwidthDaoUtil bandwidthDaoUtil,
IDataSetMetaDataHandler dataSetMetaDataHandler,

View file

@ -29,11 +29,14 @@ import com.raytheon.uf.common.datadelivery.bandwidth.data.BandwidthGraphData;
import com.raytheon.uf.common.datadelivery.event.retrieval.AdhocSubscriptionRequestEvent;
import com.raytheon.uf.common.datadelivery.event.retrieval.SubscriptionRequestEvent;
import com.raytheon.uf.common.datadelivery.registry.AdhocSubscription;
import com.raytheon.uf.common.datadelivery.registry.Coverage;
import com.raytheon.uf.common.datadelivery.registry.DataType;
import com.raytheon.uf.common.datadelivery.registry.GriddedTime;
import com.raytheon.uf.common.datadelivery.registry.Network;
import com.raytheon.uf.common.datadelivery.registry.PointTime;
import com.raytheon.uf.common.datadelivery.registry.SiteSubscription;
import com.raytheon.uf.common.datadelivery.registry.Subscription;
import com.raytheon.uf.common.datadelivery.registry.Time;
import com.raytheon.uf.common.datadelivery.registry.handlers.DataDeliveryHandlers;
import com.raytheon.uf.common.event.EventBus;
import com.raytheon.uf.common.registry.handler.RegistryHandlerException;
@ -118,26 +121,27 @@ import com.raytheon.uf.edex.registry.ebxml.exception.EbxmlRegistryException;
* Sep 17, 2013 2383 bgonzale Reverted back to how BandwidthManager. handles
* case for no matching dataset metadata for an
* adhoc subscription.
* Sept 25, 2013 1797 dhladky separated time from gridded time
* </pre>
*
* @author dhladky
* @version 1.0
*/
public abstract class BandwidthManager extends
AbstractPrivilegedRequestHandler<IBandwidthRequest> implements
IBandwidthManager {
public abstract class BandwidthManager<T extends Time, C extends Coverage> extends
AbstractPrivilegedRequestHandler<IBandwidthRequest<T, C>> implements
IBandwidthManager<T, C> {
protected static final IUFStatusHandler statusHandler = UFStatus
.getHandler(BandwidthManager.class);
// Requires package access so it can be accessed from the maintenance task
final IBandwidthDao bandwidthDao;
final IBandwidthDao<T, C> bandwidthDao;
private ISubscriptionAggregator aggregator;
private BandwidthInitializer initializer;
protected final BandwidthDaoUtil bandwidthDaoUtil;
protected final BandwidthDaoUtil<T,C> bandwidthDaoUtil;
private final IBandwidthDbInit dbInit;
@ -150,15 +154,15 @@ public abstract class BandwidthManager extends
final RetrievalManager retrievalManager;
public BandwidthManager(IBandwidthDbInit dbInit,
IBandwidthDao bandwidthDao, RetrievalManager retrievalManager,
BandwidthDaoUtil bandwidthDaoUtil) {
IBandwidthDao<T, C> bandwidthDao, RetrievalManager retrievalManager,
BandwidthDaoUtil<T,C> bandwidthDaoUtil) {
this.dbInit = dbInit;
this.bandwidthDao = bandwidthDao;
this.retrievalManager = retrievalManager;
this.bandwidthDaoUtil = bandwidthDaoUtil;
}
private List<BandwidthAllocation> schedule(Subscription subscription,
private List<BandwidthAllocation> schedule(Subscription<T, C> subscription,
SortedSet<Integer> cycles) {
SortedSet<Calendar> retrievalTimes = bandwidthDaoUtil
.getRetrievalTimes(subscription, cycles);
@ -177,7 +181,7 @@ public abstract class BandwidthManager extends
* the retrieval interval
* @return the list of unscheduled subscriptions
*/
private List<BandwidthAllocation> schedule(Subscription subscription,
private List<BandwidthAllocation> schedule(Subscription<T, C> subscription,
int retrievalInterval) {
SortedSet<Calendar> retrievalTimes = bandwidthDaoUtil
.getRetrievalTimes(subscription, retrievalInterval);
@ -196,7 +200,7 @@ public abstract class BandwidthManager extends
* @return the unscheduled subscriptions
*/
private List<BandwidthAllocation> scheduleSubscriptionForRetrievalTimes(
Subscription subscription, SortedSet<Calendar> retrievalTimes) {
Subscription<T, C> subscription, SortedSet<Calendar> retrievalTimes) {
IPerformanceTimer timer = TimeUtil.getPerformanceTimer();
timer.start();
@ -240,7 +244,7 @@ public abstract class BandwidthManager extends
return unscheduled;
}
protected List<BandwidthAllocation> schedule(Subscription subscription,
protected List<BandwidthAllocation> schedule(Subscription<T, C> subscription,
BandwidthSubscription dao) {
Calendar retrievalTime = dao.getBaseReferenceTime();
@ -359,10 +363,10 @@ public abstract class BandwidthManager extends
bandwidthDao.store(reservations);
timer.lap("storing retrievals");
List<SubscriptionRetrievalAttributes> attributes = Lists
List<SubscriptionRetrievalAttributes<T, C>> attributes = Lists
.newArrayListWithCapacity(reservations.size());
for (SubscriptionRetrieval retrieval : reservations) {
final SubscriptionRetrievalAttributes attribute = new SubscriptionRetrievalAttributes();
final SubscriptionRetrievalAttributes<T, C> attribute = new SubscriptionRetrievalAttributes<T, C>();
try {
attribute.setSubscription(bandwidthSubscriptions.subscription);
} catch (SerializationException e) {
@ -394,7 +398,7 @@ public abstract class BandwidthManager extends
* {@inheritDoc}
*/
@Override
public List<BandwidthAllocation> schedule(Subscription subscription) {
public List<BandwidthAllocation> schedule(Subscription<T, C> subscription) {
// TODO: In 13.6.1 pull out all of the subscription stuff into a
// separate plugin, BandwidthManager should not work with Subscription
// objects directly, it should have extension plugins that can allocate
@ -436,7 +440,7 @@ public abstract class BandwidthManager extends
* @return
*/
@Override
public List<BandwidthAllocation> schedule(AdhocSubscription subscription) {
public List<BandwidthAllocation> schedule(AdhocSubscription<T, C> subscription) {
List<BandwidthSubscription> subscriptions = new ArrayList<BandwidthSubscription>();
Calendar now = BandwidthUtil.now();
@ -448,7 +452,7 @@ public abstract class BandwidthManager extends
* This is not allowed for pointdata types, they must grab current URL
* and time.
*/
AdhocSubscription subscriptionUpdated = bandwidthDaoUtil
AdhocSubscription<T, C> subscriptionUpdated = bandwidthDaoUtil
.setAdhocMostRecentUrlAndTime(
subscription, true);
if (subscriptionUpdated != null) {
@ -484,7 +488,7 @@ public abstract class BandwidthManager extends
for (SubscriptionRetrieval retrieval : retrievals) {
if (retrieval.getStatus().equals(RetrievalStatus.SCHEDULED)) {
SubscriptionRetrievalAttributes attributes = new SubscriptionRetrievalAttributes();
SubscriptionRetrievalAttributes<T, C> attributes = new SubscriptionRetrievalAttributes<T, C>();
attributes.setSubscriptionRetrieval(retrieval);
try {
@ -515,12 +519,12 @@ public abstract class BandwidthManager extends
*/
@Override
public List<BandwidthAllocation> subscriptionUpdated(
Subscription subscription) {
Subscription<T, C> subscription) {
// Since AdhocSubscription extends Subscription it is not possible to
// separate the processing of those Objects in EventBus. So, handle the
// case where the updated subscription is actually an AdhocSubscription
if (subscription instanceof AdhocSubscription) {
return adhocSubscription((AdhocSubscription) subscription);
return adhocSubscription((AdhocSubscription<T, C>) subscription);
}
// Dealing with a 'normal' subscription
else {
@ -554,7 +558,7 @@ public abstract class BandwidthManager extends
* the subscription
* @return the list of unscheduled subscriptions
*/
private List<BandwidthAllocation> handlePoint(Subscription subscription) {
private List<BandwidthAllocation> handlePoint(Subscription<T, C> subscription) {
return schedule(subscription,
((PointTime) subscription.getTime()).getInterval());
}
@ -566,8 +570,8 @@ public abstract class BandwidthManager extends
* the subscription
* @return the list of unscheduled subscriptions
*/
private List<BandwidthAllocation> handleGridded(Subscription subscription) {
final List<Integer> cycles = subscription.getTime().getCycleTimes();
private List<BandwidthAllocation> handleGridded(Subscription<T, C> subscription) {
final List<Integer> cycles = ((GriddedTime)subscription.getTime()).getCycleTimes();
final boolean subscribedToCycles = !CollectionUtil
.isNullOrEmpty(cycles);
final boolean useMostRecentDataSetUpdate = !subscribedToCycles;
@ -583,8 +587,8 @@ public abstract class BandwidthManager extends
// and set it to retrieve the most recent cycle (or most recent
// url if a daily product)
if (subscription instanceof SiteSubscription) {
AdhocSubscription adhoc = new AdhocSubscription(
(SiteSubscription) subscription);
AdhocSubscription<T, C> adhoc = new AdhocSubscription<T, C>(
(SiteSubscription<T, C>) subscription);
adhoc = bandwidthDaoUtil.setAdhocMostRecentUrlAndTime(adhoc,
useMostRecentDataSetUpdate);
@ -610,7 +614,7 @@ public abstract class BandwidthManager extends
* @return
*/
@Override
public List<BandwidthAllocation> adhocSubscription(AdhocSubscription adhoc) {
public List<BandwidthAllocation> adhocSubscription(AdhocSubscription<T, C> adhoc) {
statusHandler.info("Scheduling adhoc subscription [" + adhoc.getName()
+ "]");
return schedule(adhoc);
@ -656,7 +660,7 @@ public abstract class BandwidthManager extends
* {@inheritDoc}
*/
@Override
public Object handleRequest(IBandwidthRequest request) throws Exception {
public Object handleRequest(IBandwidthRequest<T, C> request) throws Exception {
ITimer timer = TimeUtil.getTimer();
timer.start();
@ -666,17 +670,17 @@ public abstract class BandwidthManager extends
final Network requestNetwork = request.getNetwork();
final int bandwidth = request.getBandwidth();
final List<Subscription> subscriptions = request.getSubscriptions();
final List<Subscription<T, C>> subscriptions = request.getSubscriptions();
final RequestType requestType = request.getRequestType();
switch (requestType) {
case GET_ESTIMATED_COMPLETION:
Subscription adhocAsSub = null;
Subscription<T, C> adhocAsSub = null;
if (subscriptions.size() != 1
|| (!((adhocAsSub = subscriptions.get(0)) instanceof AdhocSubscription))) {
throw new IllegalArgumentException(
"Must supply one, and only one, adhoc subscription to get the estimated completion time.");
}
response = getEstimatedCompletionTime((AdhocSubscription) adhocAsSub);
response = getEstimatedCompletionTime((AdhocSubscription<T, C>) adhocAsSub);
break;
case REINITIALIZE:
response = startNewBandwidthManager();
@ -758,7 +762,7 @@ public abstract class BandwidthManager extends
response = getBandwidthGraphData();
break;
case GET_SUBSCRIPTION_STATUS:
Subscription sub = null;
Subscription<T, C> sub = null;
if (subscriptions.size() != 1
|| (!((sub = subscriptions.get(0)) instanceof Subscription))) {
throw new IllegalArgumentException(
@ -793,7 +797,7 @@ public abstract class BandwidthManager extends
* @throws SerializationException
*/
protected abstract Set<String> scheduleSbnSubscriptions(
List<Subscription> subscriptions) throws SerializationException;
List<Subscription<T, C>> subscriptions) throws SerializationException;
/**
* Proposes scheduling a list of subscriptions.
@ -804,7 +808,7 @@ public abstract class BandwidthManager extends
* @throws SerializationException
*/
protected ProposeScheduleResponse proposeScheduleSubscriptions(
List<Subscription> subscriptions) throws SerializationException {
List<Subscription<T, C>> subscriptions) throws SerializationException {
final ProposeScheduleResponse proposeResponse = proposeSchedule(subscriptions);
Set<String> subscriptionsUnscheduled = proposeResponse
.getUnscheduledSubscriptions();
@ -816,7 +820,7 @@ public abstract class BandwidthManager extends
// scheduled, just apply
scheduleSubscriptions(subscriptions);
} else if (subscriptions.size() == 1) {
final Subscription subscription = subscriptions.get(0);
final Subscription<T, C> subscription = subscriptions.get(0);
int requiredLatency = determineRequiredLatency(subscription);
proposeResponse.setRequiredLatency(requiredLatency);
long requiredDataSetSize = determineRequiredDataSetSize(subscription);
@ -836,7 +840,7 @@ public abstract class BandwidthManager extends
* on error
*/
protected abstract IProposeScheduleResponse proposeScheduleSbnSubscription(
List<Subscription> subscriptions) throws Exception;
List<Subscription<T, C>> subscriptions) throws Exception;
/**
* Retrieve the bandwidth graph data.
@ -854,7 +858,7 @@ public abstract class BandwidthManager extends
* the subscription
* @return the estimated completion time
*/
private Date getEstimatedCompletionTime(AdhocSubscription subscription) {
private Date getEstimatedCompletionTime(AdhocSubscription<T, C> subscription) {
final List<BandwidthSubscription> bandwidthSubscriptions = bandwidthDao
.getBandwidthSubscriptionByRegistryId(subscription.getId());
@ -903,7 +907,7 @@ public abstract class BandwidthManager extends
* @return the set of subscription names unscheduled
* @throws SerializationException
*/
protected Set<String> scheduleSubscriptions(List<Subscription> subscriptions)
protected Set<String> scheduleSubscriptions(List<Subscription<T, C>> subscriptions)
throws SerializationException {
Set<String> unscheduledSubscriptions = new TreeSet<String>();
@ -911,7 +915,7 @@ public abstract class BandwidthManager extends
Map<String, SubscriptionRequestEvent> subscriptionEventsMap = new HashMap<String, SubscriptionRequestEvent>();
for (Subscription subscription : subscriptions) {
for (Subscription<T, C> subscription : subscriptions) {
List<BandwidthAllocation> unscheduled = subscriptionUpdated(subscription);
unscheduledAllocations.addAll(unscheduled);
@ -989,16 +993,16 @@ public abstract class BandwidthManager extends
* @throws SerializationException
*/
private ProposeScheduleResponse proposeSchedule(
List<Subscription> subscriptions) throws SerializationException {
List<Subscription<T, C>> subscriptions) throws SerializationException {
BandwidthMap copyOfCurrentMap = BandwidthMap
.load(EdexBandwidthContextFactory.getBandwidthMapConfig());
Set<String> unscheduled = Collections.emptySet();
BandwidthManager proposedBwManager = null;
BandwidthManager<T, C> proposedBwManager = null;
try {
proposedBwManager = startProposedBandwidthManager(copyOfCurrentMap);
IBandwidthRequest request = new IBandwidthRequest();
IBandwidthRequest<T, C> request = new IBandwidthRequest<T, C>();
request.setRequestType(RequestType.SCHEDULE_SUBSCRIPTION);
request.setSubscriptions(subscriptions);
@ -1020,7 +1024,7 @@ public abstract class BandwidthManager extends
* @param bandwidthManager
* the bandwidth manager
*/
private void nullSafeShutdown(BandwidthManager bandwidthManager) {
private void nullSafeShutdown(BandwidthManager<T, C> bandwidthManager) {
if (bandwidthManager != null) {
bandwidthManager.shutdown();
}
@ -1042,7 +1046,7 @@ public abstract class BandwidthManager extends
route.setDefaultBandwidth(bandwidth);
Set<String> subscriptions = new HashSet<String>();
BandwidthManager proposedBwManager = null;
BandwidthManager<T, C> proposedBwManager = null;
try {
proposedBwManager = startProposedBandwidthManager(copyOfCurrentMap);
@ -1096,7 +1100,7 @@ public abstract class BandwidthManager extends
* @throws SerializationException
*/
@VisibleForTesting
BandwidthManager startProposedBandwidthManager(BandwidthMap bandwidthMap) {
BandwidthManager<T, C> startProposedBandwidthManager(BandwidthMap bandwidthMap) {
InMemoryBandwidthContextFactory
.setInMemoryBandwidthConfigFile(bandwidthMap);
@ -1112,7 +1116,7 @@ public abstract class BandwidthManager extends
* @return true if the new bandwidth manager was started
*/
private boolean startNewBandwidthManager() {
BandwidthManager bandwidthManager = startBandwidthManager(
BandwidthManager<T, C> bandwidthManager = startBandwidthManager(
getSpringFilesForNewInstance(), false, "EDEX");
final boolean successfullyStarted = bandwidthManager != null;
@ -1133,7 +1137,7 @@ public abstract class BandwidthManager extends
* @param type
* @return the reference to the bandwidth manager
*/
private BandwidthManager startBandwidthManager(final String[] springFiles,
private BandwidthManager<T, C> startBandwidthManager(final String[] springFiles,
boolean close, String type) {
ITimer timer = TimeUtil.getTimer();
timer.start();
@ -1142,7 +1146,7 @@ public abstract class BandwidthManager extends
try {
ctx = new ClassPathXmlApplicationContext(springFiles,
EDEXUtil.getSpringContext());
final BandwidthManager bwManager = ctx.getBean("bandwidthManager",
final BandwidthManager<T, C> bwManager = ctx.getBean("bandwidthManager",
BandwidthManager.class);
try {
bwManager.initializer.executeAfterRegistryInit();
@ -1214,11 +1218,11 @@ public abstract class BandwidthManager extends
/**
* {@inheritDoc}
*/
public List<BandwidthAllocation> copyState(BandwidthManager copyFrom) {
public List<BandwidthAllocation> copyState(BandwidthManager<T,C> copyFrom) {
IPerformanceTimer timer = TimeUtil.getPerformanceTimer();
timer.start();
List<BandwidthAllocation> unscheduled = Collections.emptyList();
IBandwidthDao fromDao = copyFrom.bandwidthDao;
IBandwidthDao<T,C> fromDao = copyFrom.bandwidthDao;
final boolean proposingBandwidthChange = retrievalManager
.isProposingBandwidthChanges(copyFrom.retrievalManager);
@ -1235,10 +1239,10 @@ public abstract class BandwidthManager extends
subscriptionNames.add(subscription.getName());
}
Set<Subscription> actualSubscriptions = Sets.newHashSet();
Set<Subscription<T,C>> actualSubscriptions = Sets.newHashSet();
for (String subName : subscriptionNames) {
try {
Subscription actualSubscription = DataDeliveryHandlers
Subscription<T,C> actualSubscription = DataDeliveryHandlers
.getSubscriptionHandler().getByName(subName);
actualSubscriptions.add(actualSubscription);
} catch (RegistryHandlerException e) {
@ -1250,7 +1254,7 @@ public abstract class BandwidthManager extends
}
// Now for each subscription, attempt to schedule bandwidth
for (Subscription subscription : actualSubscriptions) {
for (Subscription<T, C> subscription : actualSubscriptions) {
unscheduled.addAll(this.schedule(subscription));
}
} else {
@ -1310,7 +1314,7 @@ public abstract class BandwidthManager extends
* @return the required latency, in minutes
*/
@VisibleForTesting
int determineRequiredLatency(final Subscription subscription) {
int determineRequiredLatency(final Subscription<T, C> subscription) {
final int requiredLatency = determineRequiredValue(subscription,
new FindSubscriptionRequiredLatency());
@ -1328,7 +1332,7 @@ public abstract class BandwidthManager extends
* the subscription
* @return the required dataset size
*/
private long determineRequiredDataSetSize(final Subscription subscription) {
private long determineRequiredDataSetSize(final Subscription<T, C> subscription) {
return determineRequiredValue(subscription,
new FindSubscriptionRequiredDataSetSize());
}
@ -1343,33 +1347,33 @@ public abstract class BandwidthManager extends
* the required value strategy
* @return the required value
*/
private <T extends Comparable<T>> T determineRequiredValue(
final Subscription subscription,
final IFindSubscriptionRequiredValue<T> strategy) {
private <M extends Comparable<M>> M determineRequiredValue(
final Subscription<T, C> subscription,
final IFindSubscriptionRequiredValue<M> strategy) {
ITimer timer = TimeUtil.getTimer();
timer.start();
boolean foundRequiredValue = false;
T currentValue = strategy.getInitialValue(subscription);
M currentValue = strategy.getInitialValue(subscription);
T previousValue = currentValue;
M previousValue = currentValue;
do {
previousValue = currentValue;
currentValue = strategy.getNextValue(subscription, currentValue);
Subscription clone = strategy.setValue(subscription.copy(),
Subscription<T, C> clone = strategy.setValue(subscription.copy(),
currentValue);
foundRequiredValue = isSchedulableWithoutConflict(clone);
} while (!foundRequiredValue);
SortedSet<T> possibleValues = strategy.getPossibleValues(previousValue,
SortedSet<M> possibleValues = strategy.getPossibleValues(previousValue,
currentValue);
IBinarySearchResponse<T> response = AlgorithmUtil.binarySearch(
possibleValues, new Comparable<T>() {
IBinarySearchResponse<M> response = AlgorithmUtil.binarySearch(
possibleValues, new Comparable<M>() {
@Override
public int compareTo(T valueToCheck) {
Subscription clone = strategy.setValue(
public int compareTo(M valueToCheck) {
Subscription<T, C> clone = strategy.setValue(
subscription.copy(), valueToCheck);
boolean valueWouldWork = isSchedulableWithoutConflict(clone);
@ -1391,7 +1395,7 @@ public abstract class BandwidthManager extends
}
});
final T binarySearchedValue = response.getItem();
final M binarySearchedValue = response.getItem();
final String valueDescription = strategy.getValueDescription();
if (binarySearchedValue != null) {
currentValue = binarySearchedValue;
@ -1426,11 +1430,11 @@ public abstract class BandwidthManager extends
* the subscription
* @return true if able to be cleanly scheduled, false otherwise
*/
private boolean isSchedulableWithoutConflict(final Subscription subscription) {
private boolean isSchedulableWithoutConflict(final Subscription<T, C> subscription) {
BandwidthMap copyOfCurrentMap = BandwidthMap
.load(EdexBandwidthContextFactory.getBandwidthMapConfig());
BandwidthManager proposedBandwidthManager = null;
BandwidthManager<T, C> proposedBandwidthManager = null;
try {
proposedBandwidthManager = startProposedBandwidthManager(copyOfCurrentMap);
Set<String> unscheduled = proposedBandwidthManager
@ -1451,4 +1455,22 @@ public abstract class BandwidthManager extends
* Provide implementation specific shutdown.
*/
protected abstract void shutdownInternal();
/**
* Special handling for Gridded Times with cycles and time indicies
* @param subTime
* @param dataSetMetaDataTime
* @return
*/
protected static Time handleCyclesAndSequences(Time subTime, Time dataSetMetaDataTime) {
if (subTime instanceof GriddedTime) {
GriddedTime time = (GriddedTime)subTime;
GriddedTime dsmTime = (GriddedTime)dataSetMetaDataTime;
dsmTime.setSelectedTimeIndices(time.getSelectedTimeIndices());
dsmTime.setCycleTimes(time.getCycleTimes());
}
return dataSetMetaDataTime;
}
}

View file

@ -21,6 +21,8 @@ package com.raytheon.uf.edex.datadelivery.bandwidth;
import java.io.File;
import com.raytheon.uf.common.datadelivery.registry.Coverage;
import com.raytheon.uf.common.datadelivery.registry.Time;
import com.raytheon.uf.common.datadelivery.registry.handlers.IDataSetMetaDataHandler;
import com.raytheon.uf.common.datadelivery.registry.handlers.ISubscriptionHandler;
import com.raytheon.uf.common.localization.IPathManager;
@ -50,19 +52,20 @@ import com.raytheon.uf.edex.datadelivery.bandwidth.util.BandwidthDaoUtil;
* Oct 24, 2012 1286 djohnson Initial creation
* Feb 20, 2013 1543 djohnson Add IEdexBandwidthManagerCreator.
* Jul 10, 2013 2106 djohnson Dependency inject registry handlers.
* Oct 3, 2013 1797 dhladky Some generics
*
* </pre>
*
* @author djohnson
* @version 1.0
*/
public class EdexBandwidthContextFactory implements BandwidthContextFactory {
public class EdexBandwidthContextFactory<T extends Time, C extends Coverage> implements BandwidthContextFactory {
/**
* Pluggable strategy for how to create the {@link BandwidthManager}.
* Intentionally package-private.
*/
public static interface IEdexBandwidthManagerCreator {
public static interface IEdexBandwidthManagerCreator<T extends Time, C extends Coverage> {
/**
* Get the bandwidth manaager.
@ -75,22 +78,22 @@ public class EdexBandwidthContextFactory implements BandwidthContextFactory {
* @param subscriptionHandler
* @return the bandwidth manager
*/
IBandwidthManager getBandwidthManager(IBandwidthDbInit dbInit,
IBandwidthDao bandwidthDao, RetrievalManager retrievalManager,
BandwidthDaoUtil bandwidthDaoUtil,
IBandwidthManager<T, C> getBandwidthManager(IBandwidthDbInit dbInit,
IBandwidthDao<T, C> bandwidthDao, RetrievalManager retrievalManager,
BandwidthDaoUtil<T, C> bandwidthDaoUtil,
IDataSetMetaDataHandler dataSetMetaDataHandler,
ISubscriptionHandler subscriptionHandler);
}
private static EdexBandwidthManager instance;
private final IBandwidthDao bandwidthDao;
private final IBandwidthDao<T, C> bandwidthDao;
private final IBandwidthBucketDao bandwidthBucketDao;
private final BandwidthInitializer bandwidthInitializer;
private final IEdexBandwidthManagerCreator bandwidthManagerCreator;
private final IEdexBandwidthManagerCreator<T, C> bandwidthManagerCreator;
private final IBandwidthDbInit dbInit;
@ -110,10 +113,10 @@ public class EdexBandwidthContextFactory implements BandwidthContextFactory {
* @param dataSetMetaDataHandler
* @param subscriptionHandler
*/
EdexBandwidthContextFactory(IBandwidthDao bandwidthDao,
EdexBandwidthContextFactory(IBandwidthDao<T, C> bandwidthDao,
IBandwidthBucketDao bandwidthBucketDao,
BandwidthInitializer bandwidthInitializer,
IEdexBandwidthManagerCreator bandwidthManagerCreator,
IEdexBandwidthManagerCreator<T, C> bandwidthManagerCreator,
IBandwidthDbInit dbInit,
IDataSetMetaDataHandler dataSetMetaDataHandler,
ISubscriptionHandler subscriptionHandler) {
@ -134,7 +137,7 @@ public class EdexBandwidthContextFactory implements BandwidthContextFactory {
* @param instance
* the {@link BandwidthManager} instance
*/
EdexBandwidthContextFactory(EdexBandwidthManager instance) {
EdexBandwidthContextFactory(EdexBandwidthManager<T, C> instance) {
this(null, null, null, null, null, null, null);
EdexBandwidthContextFactory.instance = instance;
}
@ -190,7 +193,7 @@ public class EdexBandwidthContextFactory implements BandwidthContextFactory {
* {@inheritDoc}
*/
@Override
public IBandwidthDao getBandwidthDao() {
public IBandwidthDao<T, C> getBandwidthDao() {
return bandwidthDao;
}
@ -222,7 +225,7 @@ public class EdexBandwidthContextFactory implements BandwidthContextFactory {
* {@inheritDoc}
*/
@Override
public IBandwidthManager getBandwidthManager(IBandwidthDbInit dbInit,
public IBandwidthManager<T, C> getBandwidthManager(IBandwidthDbInit dbInit,
IBandwidthDao bandwidthDao, RetrievalManager retrievalManager,
BandwidthDaoUtil bandwidthDaoUtil) {
return bandwidthManagerCreator.getBandwidthManager(dbInit,

View file

@ -40,6 +40,7 @@ import com.google.common.eventbus.Subscribe;
import com.raytheon.uf.common.datadelivery.bandwidth.IBandwidthRequest;
import com.raytheon.uf.common.datadelivery.bandwidth.IBandwidthRequest.RequestType;
import com.raytheon.uf.common.datadelivery.registry.AdhocSubscription;
import com.raytheon.uf.common.datadelivery.registry.Coverage;
import com.raytheon.uf.common.datadelivery.registry.DataDeliveryRegistryObjectTypes;
import com.raytheon.uf.common.datadelivery.registry.DataSetMetaData;
import com.raytheon.uf.common.datadelivery.registry.GriddedDataSetMetaData;
@ -93,13 +94,14 @@ import com.raytheon.uf.edex.datadelivery.bandwidth.util.BandwidthUtil;
* Sep 13, 2013 2267 bgonzale Check for no subscription retrieval attribute found.
* Sep 16, 2013 2383 bgonzale Add exception information for no subscription found.
* Add throws to updatePointDataSetMetaData.
* Oct 1 2013 1797 dhladky Time and GriddedTime separation
*
* </pre>
*
* @author djohnson
* @version 1.0
*/
public abstract class EdexBandwidthManager extends BandwidthManager {
public abstract class EdexBandwidthManager<T extends Time, C extends Coverage> extends BandwidthManager<T, C> {
private static final Pattern RAP_PATTERN = Pattern
.compile(".*rap_f\\d\\d$");
@ -132,8 +134,8 @@ public abstract class EdexBandwidthManager extends BandwidthManager {
* @param bandwidthDaoUtil
*/
public EdexBandwidthManager(IBandwidthDbInit dbInit,
IBandwidthDao bandwidthDao, RetrievalManager retrievalManager,
BandwidthDaoUtil bandwidthDaoUtil,
IBandwidthDao<T,C> bandwidthDao, RetrievalManager retrievalManager,
BandwidthDaoUtil<T,C> bandwidthDaoUtil,
IDataSetMetaDataHandler dataSetMetaDataHandler,
ISubscriptionHandler subscriptionHandler) {
super(dbInit, bandwidthDao, retrievalManager, bandwidthDaoUtil);
@ -235,7 +237,7 @@ public abstract class EdexBandwidthManager extends BandwidthManager {
// Schedule the next iteration of the subscription
BandwidthSubscription dao = sr.getBandwidthSubscription();
Subscription subscription;
Subscription<T, C> subscription;
try {
subscription = subscriptionHandler.getByName(dao.getName());
@ -362,12 +364,12 @@ public abstract class EdexBandwidthManager extends BandwidthManager {
}
}
private DataSetMetaData getDataSetMetaData(String id) {
private DataSetMetaData<T> getDataSetMetaData(String id) {
return getRegistryObjectById(dataSetMetaDataHandler, id);
}
private static <T> T getRegistryObjectById(
IRegistryObjectHandler<T> handler, String id) {
private static <M> M getRegistryObjectById(
IRegistryObjectHandler<M> handler, String id) {
try {
return handler.getById(id);
} catch (RegistryHandlerException e) {
@ -384,16 +386,17 @@ public abstract class EdexBandwidthManager extends BandwidthManager {
* @param dataSetMetaData
* the metadadata
*/
@SuppressWarnings("unchecked")
@Subscribe
public void updateGriddedDataSetMetaData(
GriddedDataSetMetaData dataSetMetaData) throws ParseException {
// Daily/Hourly/Monthly datasets
if (dataSetMetaData.getCycle() == GriddedDataSetMetaData.NO_CYCLE) {
updateDataSetMetaDataWithoutCycle(dataSetMetaData);
updateDataSetMetaDataWithoutCycle((DataSetMetaData<T>)dataSetMetaData);
}
// Regular cycle containing datasets
else {
updateDataSetMetaDataWithCycle(dataSetMetaData);
updateDataSetMetaDataWithCycle((DataSetMetaData<T>)dataSetMetaData);
}
}
@ -408,9 +411,8 @@ public abstract class EdexBandwidthManager extends BandwidthManager {
@Subscribe
public void updatePointDataSetMetaData(PointDataSetMetaData dataSetMetaData)
throws ParseException {
// TODO: Change PointDataSetMetaData to only be able to use PointTime
// objects
final PointTime time = (PointTime) dataSetMetaData.getTime();
final PointTime time = dataSetMetaData.getTime();
final String providerName = dataSetMetaData.getProviderName();
final String dataSetName = dataSetMetaData.getDataSetName();
final Date pointTimeStart = time.getStartDate();
@ -462,9 +464,9 @@ public abstract class EdexBandwidthManager extends BandwidthManager {
try {
// Update the retrieval times on the subscription object
// which goes through the retrieval process
final SubscriptionRetrievalAttributes subscriptionRetrievalAttributes = bandwidthDao
final SubscriptionRetrievalAttributes<T,C> subscriptionRetrievalAttributes = bandwidthDao
.getSubscriptionRetrievalAttributes(retrieval);
final Subscription subscription = subscriptionRetrievalAttributes
final Subscription<T, C> subscription = subscriptionRetrievalAttributes
.getSubscription();
if (subscription.getTime() instanceof PointTime) {
@ -507,11 +509,12 @@ public abstract class EdexBandwidthManager extends BandwidthManager {
* on parsing errors
*/
private void updateDataSetMetaDataWithoutCycle(
GriddedDataSetMetaData dataSetMetaData) throws ParseException {
DataSetMetaData<T> dataSetMetaData) throws ParseException {
bandwidthDao.newBandwidthDataSetUpdate(dataSetMetaData);
// Looking for active subscriptions to the dataset.
try {
@SuppressWarnings("rawtypes")
List<Subscription> subscriptions = subscriptionHandler
.getActiveByDataSetAndProvider(
dataSetMetaData.getDataSetName(),
@ -529,12 +532,13 @@ public abstract class EdexBandwidthManager extends BandwidthManager {
dataSetMetaData.getUrl()));
// Create an adhoc for each one, and schedule it
for (Subscription subscription : subscriptions) {
Subscription sub = updateSubscriptionWithDataSetMetaData(
for (Subscription<T,C> subscription : subscriptions) {
@SuppressWarnings("unchecked")
Subscription<T,C> sub = updateSubscriptionWithDataSetMetaData(
subscription, dataSetMetaData);
if (sub instanceof SiteSubscription) {
schedule(new AdhocSubscription((SiteSubscription) sub));
schedule(new AdhocSubscription<T,C>((SiteSubscription<T,C>) sub));
} else {
statusHandler
.warn("Unable to create adhoc queries for shared subscriptions at this point. This functionality should be added in the future...");
@ -554,8 +558,9 @@ public abstract class EdexBandwidthManager extends BandwidthManager {
* @throws ParseException
* on parsing errors
*/
@SuppressWarnings("unchecked")
private void updateDataSetMetaDataWithCycle(
GriddedDataSetMetaData dataSetMetaData) throws ParseException {
DataSetMetaData<T> dataSetMetaData) throws ParseException {
BandwidthDataSetUpdate dataset = bandwidthDao
.newBandwidthDataSetUpdate(dataSetMetaData);
@ -577,10 +582,10 @@ public abstract class EdexBandwidthManager extends BandwidthManager {
// SubscriptionRetrieval with the current DataSetMetaData
// URL and time Object
SubscriptionRetrievalAttributes attributes = bandwidthDao
SubscriptionRetrievalAttributes<T,C> attributes = bandwidthDao
.getSubscriptionRetrievalAttributes(retrieval);
Subscription sub;
Subscription<T,C> sub;
try {
sub = updateSubscriptionWithDataSetMetaData(
attributes.getSubscription(), dataSetMetaData);
@ -642,13 +647,14 @@ public abstract class EdexBandwidthManager extends BandwidthManager {
}
}
Set<Subscription> subscriptions = new HashSet<Subscription>();
Set<Subscription<T,C>> subscriptions = new HashSet<Subscription<T,C>>();
for (SubscriptionRetrieval retrieval : retrievals) {
try {
final SubscriptionRetrievalAttributes sra = bandwidthDao
final SubscriptionRetrievalAttributes<T,C> sra = bandwidthDao
.getSubscriptionRetrievalAttributes(retrieval);
if (sra != null) {
Subscription sub = sra.getSubscription();
@SuppressWarnings("unchecked")
Subscription<T,C> sub = sra.getSubscription();
if (sub != null) {
subscriptions.add(sub);
}
@ -660,7 +666,7 @@ public abstract class EdexBandwidthManager extends BandwidthManager {
}
}
for (Subscription subscription : subscriptions) {
for (Subscription<T,C> subscription : subscriptions) {
subscription.setUnscheduled(true);
subscriptionUpdated(subscription);
}
@ -676,12 +682,13 @@ public abstract class EdexBandwidthManager extends BandwidthManager {
* the datasetmetadata update
* @return the subscription
*/
@SuppressWarnings("rawtypes")
private static Subscription updateSubscriptionWithDataSetMetaData(
Subscription sub, DataSetMetaData dataSetMetaData) {
final Time dsmdTime = dataSetMetaData.getTime();
// TODO perfect candidate for the factory for time and coverage
Time dsmdTime = dataSetMetaData.getTime();
final Time subTime = sub.getTime();
dsmdTime.setSelectedTimeIndices(subTime.getSelectedTimeIndices());
dsmdTime.setCycleTimes(subTime.getCycleTimes());
dsmdTime = handleCyclesAndSequences(subTime, dsmdTime);
sub.setTime(dsmdTime);
sub.setUrl(dataSetMetaData.getUrl());
@ -693,7 +700,7 @@ public abstract class EdexBandwidthManager extends BandwidthManager {
* reinitialize operation.
*/
private void bandwidthMapConfigurationUpdated() {
IBandwidthRequest request = new IBandwidthRequest();
IBandwidthRequest<T,C> request = new IBandwidthRequest<T,C>();
request.setRequestType(RequestType.REINITIALIZE);
try {

View file

@ -22,7 +22,9 @@ package com.raytheon.uf.edex.datadelivery.bandwidth;
import java.util.List;
import com.raytheon.uf.common.datadelivery.registry.AdhocSubscription;
import com.raytheon.uf.common.datadelivery.registry.Coverage;
import com.raytheon.uf.common.datadelivery.registry.Subscription;
import com.raytheon.uf.common.datadelivery.registry.Time;
import com.raytheon.uf.common.serialization.SerializationException;
import com.raytheon.uf.edex.datadelivery.bandwidth.dao.BandwidthAllocation;
import com.raytheon.uf.edex.datadelivery.bandwidth.interfaces.BandwidthInitializer;
@ -46,7 +48,7 @@ import com.raytheon.uf.edex.datadelivery.bandwidth.interfaces.ISubscriptionAggre
* @version 1.0
*/
public interface IBandwidthManager {
public interface IBandwidthManager<T extends Time, C extends Coverage> {
/**
* Schedule all cycles of a Subscription.
@ -54,7 +56,7 @@ public interface IBandwidthManager {
* @param subscription
* @return A list of bandwidth allocations that are not scheduled
*/
List<BandwidthAllocation> schedule(Subscription subscription);
List<BandwidthAllocation> schedule(Subscription<T, C> subscription);
/**
* Schedule AdhocSubscription to run as soon as the RetrievalPlan will
@ -64,7 +66,7 @@ public interface IBandwidthManager {
* @param b
* @return
*/
List<BandwidthAllocation> schedule(AdhocSubscription subscription);
List<BandwidthAllocation> schedule(AdhocSubscription<T, C> subscription);
/**
* When a Subscription is updated in the Registry, update the retrieval plan
@ -74,7 +76,7 @@ public interface IBandwidthManager {
* @return
* @throws SerializationException
*/
List<BandwidthAllocation> subscriptionUpdated(Subscription subscription)
List<BandwidthAllocation> subscriptionUpdated(Subscription<T, C> subscription)
throws SerializationException;
/**
@ -82,7 +84,7 @@ public interface IBandwidthManager {
* @param adhoc
* @return
*/
List<BandwidthAllocation> adhocSubscription(AdhocSubscription adhoc);
List<BandwidthAllocation> adhocSubscription(AdhocSubscription<T, C> adhoc);
void setAggregator(ISubscriptionAggregator aggregator);

View file

@ -34,9 +34,11 @@ import java.util.concurrent.atomic.AtomicLong;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import com.raytheon.uf.common.datadelivery.bandwidth.data.SubscriptionStatusSummary;
import com.raytheon.uf.common.datadelivery.registry.Coverage;
import com.raytheon.uf.common.datadelivery.registry.DataSetMetaData;
import com.raytheon.uf.common.datadelivery.registry.Network;
import com.raytheon.uf.common.datadelivery.registry.Subscription;
import com.raytheon.uf.common.datadelivery.registry.Time;
import com.raytheon.uf.common.dataplugin.persist.IPersistableDataObject;
import com.raytheon.uf.common.util.ReflectionUtil;
import com.raytheon.uf.edex.datadelivery.bandwidth.dao.BandwidthAllocation;
@ -65,13 +67,14 @@ import com.raytheon.uf.edex.datadelivery.bandwidth.util.BandwidthUtil;
* Jul 09, 2013 2106 djohnson Rather than copy all elements and remove unnecessary, just copy the ones that apply.
* Jul 11, 2013 2106 djohnson Use BandwidthSubscription instead of Subscription.
* Jul 18, 2013 1653 mpduff Implemented method.
* Oct 2, 2013 1797 dhladky generics
*
* </pre>
*
* @author djohnson
* @version 1.0
*/
class InMemoryBandwidthDao implements IBandwidthDao {
class InMemoryBandwidthDao<T extends Time, C extends Coverage> implements IBandwidthDao<T,C> {
private static final AtomicLong idSequence = new AtomicLong(1);
@ -228,7 +231,7 @@ class InMemoryBandwidthDao implements IBandwidthDao {
*/
@Override
public List<BandwidthSubscription> getBandwidthSubscription(
Subscription subscription) {
Subscription<T,C> subscription) {
return getBandwidthSubscriptionByRegistryId(subscription.getId());
}
@ -349,7 +352,7 @@ class InMemoryBandwidthDao implements IBandwidthDao {
*/
@Override
public BandwidthDataSetUpdate newBandwidthDataSetUpdate(
DataSetMetaData dataSetMetaData) {
DataSetMetaData<T> dataSetMetaData) {
BandwidthDataSetUpdate entity = BandwidthUtil
.newDataSetMetaDataDao(dataSetMetaData);
entity.setIdentifier(getNextId());
@ -364,7 +367,7 @@ class InMemoryBandwidthDao implements IBandwidthDao {
*/
@Override
public BandwidthSubscription newBandwidthSubscription(
Subscription subscription, Calendar baseReferenceTime) {
Subscription<T,C> subscription, Calendar baseReferenceTime) {
BandwidthSubscription entity = BandwidthUtil
.getSubscriptionDaoForSubscription(subscription,
baseReferenceTime);
@ -479,8 +482,8 @@ class InMemoryBandwidthDao implements IBandwidthDao {
replaceOldOrAddToCollection(bandwidthAllocations, allocation);
}
private <T extends IPersistableDataObject<Long>> void replaceOldOrAddToCollection(
ConcurrentLinkedQueue<T> collection, T obj) {
private <M extends IPersistableDataObject<Long>> void replaceOldOrAddToCollection(
ConcurrentLinkedQueue<M> collection, M obj) {
if (obj.getIdentifier() == BandwidthUtil.DEFAULT_IDENTIFIER) {
// Have to reflectively set the identifier since it's not part of
// the interface
@ -497,10 +500,10 @@ class InMemoryBandwidthDao implements IBandwidthDao {
collection.add(obj);
}
private <T extends IPersistableDataObject<Long>> void removeFromCollection(
ConcurrentLinkedQueue<T> collection, T obj) {
for (Iterator<T> iter = collection.iterator(); iter.hasNext();) {
T old = iter.next();
private <M extends IPersistableDataObject<Long>> void removeFromCollection(
ConcurrentLinkedQueue<M> collection, M obj) {
for (Iterator<M> iter = collection.iterator(); iter.hasNext();) {
M old = iter.next();
if (old.getIdentifier().equals(obj.getIdentifier())) {
iter.remove();
break;
@ -628,7 +631,7 @@ class InMemoryBandwidthDao implements IBandwidthDao {
* {@inheritDoc}
*/
@Override
public void store(SubscriptionRetrievalAttributes attributes) {
public void store(SubscriptionRetrievalAttributes<T,C> attributes) {
// Does nothing
}
@ -637,7 +640,7 @@ class InMemoryBandwidthDao implements IBandwidthDao {
*/
@Override
public void storeSubscriptionRetrievalAttributes(
List<SubscriptionRetrievalAttributes> retrievalAttributes) {
List<SubscriptionRetrievalAttributes<T,C>> retrievalAttributes) {
// Does nothing
}
@ -645,7 +648,7 @@ class InMemoryBandwidthDao implements IBandwidthDao {
* {@inheritDoc}
*/
@Override
public void update(SubscriptionRetrievalAttributes attributes) {
public void update(SubscriptionRetrievalAttributes<T,C> attributes) {
// Does nothing
}
@ -653,14 +656,14 @@ class InMemoryBandwidthDao implements IBandwidthDao {
* {@inheritDoc}
*/
@Override
public SubscriptionRetrievalAttributes getSubscriptionRetrievalAttributes(
public SubscriptionRetrievalAttributes<T,C> getSubscriptionRetrievalAttributes(
SubscriptionRetrieval retrieval) {
return null;
}
@Override
public SubscriptionStatusSummary getSubscriptionStatusSummary(
Subscription sub) {
Subscription<T,C> sub) {
// Does nothing
return null;
}

View file

@ -23,7 +23,9 @@ import java.util.List;
import java.util.Set;
import com.raytheon.uf.common.datadelivery.bandwidth.ProposeScheduleResponse;
import com.raytheon.uf.common.datadelivery.registry.Coverage;
import com.raytheon.uf.common.datadelivery.registry.Subscription;
import com.raytheon.uf.common.datadelivery.registry.Time;
import com.raytheon.uf.common.serialization.SerializationException;
import com.raytheon.uf.common.status.IUFStatusHandler;
import com.raytheon.uf.common.status.UFStatus;
@ -51,13 +53,14 @@ import com.raytheon.uf.edex.datadelivery.bandwidth.util.BandwidthDaoUtil;
* Apr 16, 2013 1906 djohnson Implements RegistryInitializedListener.
* Jun 25, 2013 2106 djohnson init() now takes a {@link RetrievalManager} as well.
* Jul 09, 2013 2106 djohnson Add shutdownInternal().
* Oct 2, 2013 1797 dhladky Generics
*
* </pre>
*
* @author djohnson
* @version 1.0
*/
class InMemoryBandwidthManager extends BandwidthManager {
class InMemoryBandwidthManager<T extends Time, C extends Coverage> extends BandwidthManager<T, C> {
private static final IUFStatusHandler statusHandler = UFStatus
.getHandler(InMemoryBandwidthManager.class);
@ -116,7 +119,7 @@ class InMemoryBandwidthManager extends BandwidthManager {
* @param bandwidthDaoUtil
*/
public InMemoryBandwidthManager(IBandwidthDbInit dbInit,
IBandwidthDao bandwidthDao, RetrievalManager retrievalManager,
IBandwidthDao<T,C> bandwidthDao, RetrievalManager retrievalManager,
BandwidthDaoUtil bandwidthDaoUtil) {
super(dbInit, bandwidthDao, retrievalManager, bandwidthDaoUtil);
}
@ -134,7 +137,7 @@ class InMemoryBandwidthManager extends BandwidthManager {
*/
@Override
protected ProposeScheduleResponse proposeScheduleSbnSubscription(
List<Subscription> subscriptions) throws Exception {
List<Subscription<T,C>> subscriptions) throws Exception {
return proposeScheduleSubscriptions(subscriptions);
}
@ -143,7 +146,7 @@ class InMemoryBandwidthManager extends BandwidthManager {
*/
@Override
protected Set<String> scheduleSbnSubscriptions(
List<Subscription> subscriptions) throws SerializationException {
List<Subscription<T,C>> subscriptions) throws SerializationException {
return scheduleSubscriptions(subscriptions);
}

View file

@ -21,6 +21,8 @@ package com.raytheon.uf.edex.datadelivery.bandwidth;
import com.raytheon.uf.common.datadelivery.bandwidth.BandwidthService;
import com.raytheon.uf.common.datadelivery.bandwidth.IBandwidthService;
import com.raytheon.uf.common.datadelivery.registry.Coverage;
import com.raytheon.uf.common.datadelivery.registry.Time;
import com.raytheon.uf.common.datadelivery.request.DataDeliveryConstants;
/**
@ -34,13 +36,14 @@ import com.raytheon.uf.common.datadelivery.request.DataDeliveryConstants;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Feb 27, 2013 1644 djohnson Initial creation
* OCt 2, 2013 1797 dhladky Generics
*
* </pre>
*
* @author djohnson
* @version 1.0
*/
public class NcfBandwidthService extends BandwidthService {
public class NcfBandwidthService<T extends Time, C extends Coverage> extends BandwidthService<T, C> {
/**
* Constructor.

View file

@ -24,7 +24,9 @@ import java.util.Set;
import com.raytheon.uf.common.datadelivery.bandwidth.IBandwidthService;
import com.raytheon.uf.common.datadelivery.bandwidth.IProposeScheduleResponse;
import com.raytheon.uf.common.datadelivery.registry.Coverage;
import com.raytheon.uf.common.datadelivery.registry.Subscription;
import com.raytheon.uf.common.datadelivery.registry.Time;
import com.raytheon.uf.common.datadelivery.registry.handlers.IDataSetMetaDataHandler;
import com.raytheon.uf.common.datadelivery.registry.handlers.ISubscriptionHandler;
import com.raytheon.uf.common.serialization.SerializationException;
@ -49,18 +51,19 @@ import com.raytheon.uf.edex.datadelivery.bandwidth.util.BandwidthDaoUtil;
* Mar 11, 2013 1645 djohnson Add missing Spring file.
* May 15, 2013 2000 djohnson Include daos.
* Jul 10, 2013 2106 djohnson Dependency inject registry handlers.
* Oct 2, 2013 1797 dhladky Generics
*
* </pre>
*
* @author djohnson
* @version 1.0
*/
public class WfoBandwidthManagerCreator implements IEdexBandwidthManagerCreator {
public class WfoBandwidthManagerCreator<T extends Time, C extends Coverage> implements IEdexBandwidthManagerCreator {
/**
* WFO {@link BandwidthManager} implementation.
*/
static class WfoBandwidthManager extends EdexBandwidthManager {
static class WfoBandwidthManager<T extends Time, C extends Coverage> extends EdexBandwidthManager<T, C> {
private static final String[] WFO_BANDWIDTH_MANAGER_FILES = new String[] {
JarUtil.getResResourcePath("/spring/bandwidth-datadelivery-wfo-edex-impl.xml"),
@ -72,7 +75,7 @@ public class WfoBandwidthManagerCreator implements IEdexBandwidthManagerCreator
JarUtil.getResResourcePath("/spring/bandwidth-datadelivery-wfo.xml") };
// TODO: Change to be DIed in Spring
private final IBandwidthService ncfBandwidthService = new NcfBandwidthService();
private final IBandwidthService<T, C> ncfBandwidthService = new NcfBandwidthService();
/**
* Constructor.
@ -101,7 +104,7 @@ public class WfoBandwidthManagerCreator implements IEdexBandwidthManagerCreator
*/
@Override
protected IProposeScheduleResponse proposeScheduleSbnSubscription(
List<Subscription> subscriptions) throws Exception {
List<Subscription<T, C>> subscriptions) throws Exception {
final IProposeScheduleResponse proposeResponse = ncfBandwidthService
.proposeSchedule(subscriptions);
@ -121,7 +124,7 @@ public class WfoBandwidthManagerCreator implements IEdexBandwidthManagerCreator
*/
@Override
protected Set<String> scheduleSbnSubscriptions(
List<Subscription> subscriptions) throws SerializationException {
List<Subscription<T, C>> subscriptions) throws SerializationException {
final Set<String> ncfResponse = ncfBandwidthService
.schedule(subscriptions);
@ -135,12 +138,12 @@ public class WfoBandwidthManagerCreator implements IEdexBandwidthManagerCreator
* {@inheritDoc}
*/
@Override
public IBandwidthManager getBandwidthManager(IBandwidthDbInit dbInit,
public IBandwidthManager<T, C> getBandwidthManager(IBandwidthDbInit dbInit,
IBandwidthDao bandwidthDao, RetrievalManager retrievalManager,
BandwidthDaoUtil bandwidthDaoUtil,
IDataSetMetaDataHandler dataSetMetaDataHandler,
ISubscriptionHandler subscriptionHandler) {
return new WfoBandwidthManager(dbInit, bandwidthDao, retrievalManager,
return new WfoBandwidthManager<T, C>(dbInit, bandwidthDao, retrievalManager,
bandwidthDaoUtil, dataSetMetaDataHandler, subscriptionHandler);
}

View file

@ -26,9 +26,11 @@ import java.util.List;
import java.util.SortedSet;
import com.raytheon.uf.common.datadelivery.bandwidth.data.SubscriptionStatusSummary;
import com.raytheon.uf.common.datadelivery.registry.Coverage;
import com.raytheon.uf.common.datadelivery.registry.DataSetMetaData;
import com.raytheon.uf.common.datadelivery.registry.Network;
import com.raytheon.uf.common.datadelivery.registry.Subscription;
import com.raytheon.uf.common.datadelivery.registry.Time;
import com.raytheon.uf.edex.datadelivery.bandwidth.BandwidthManager;
import com.raytheon.uf.edex.datadelivery.bandwidth.retrieval.RetrievalStatus;
@ -56,7 +58,7 @@ import com.raytheon.uf.edex.datadelivery.bandwidth.retrieval.RetrievalStatus;
* @version 1.0
*/
public interface IBandwidthDao {
public interface IBandwidthDao<T extends Time, C extends Coverage> {
/**
* Get BandwidthAllocations.
@ -160,7 +162,7 @@ public interface IBandwidthDao {
* provider, name and dataSetName and the specified subscription.
*/
List<BandwidthSubscription> getBandwidthSubscription(
Subscription subscription);
Subscription<T, C> subscription);
/**
* Get a BandwidthSubscriptions.
@ -307,7 +309,7 @@ public interface IBandwidthDao {
* @return A newly created and persisted BandwidthDataSetUpdate Object.
*/
BandwidthDataSetUpdate newBandwidthDataSetUpdate(
DataSetMetaData dataSetMetaData);
DataSetMetaData<T> dataSetMetaData);
/**
* Create a new BandwidthSubscription Object based on the Subscription and
@ -323,7 +325,7 @@ public interface IBandwidthDao {
*
* @return A newly created and persisted BandwidthSubscription Object.
*/
BandwidthSubscription newBandwidthSubscription(Subscription subscription,
BandwidthSubscription newBandwidthSubscription(Subscription<T, C> subscription,
Calendar baseReferenceTime);
/**
@ -371,7 +373,7 @@ public interface IBandwidthDao {
* @param attributes
* The SubscriptionRetrievalAttributes to store.
*/
void store(SubscriptionRetrievalAttributes attributes);
void store(SubscriptionRetrievalAttributes<T, C> attributes);
/**
* Persist a List of SubscriptionRetrievals to the database.
@ -388,7 +390,7 @@ public interface IBandwidthDao {
* The entities to store.
*/
void storeSubscriptionRetrievalAttributes(
List<SubscriptionRetrievalAttributes> retrievalAttributes);
List<SubscriptionRetrievalAttributes<T, C>> list);
/**
* Persist a {@link BandwidthSubscription} to the database.
@ -464,7 +466,7 @@ public interface IBandwidthDao {
/**
* @param attributes
*/
void update(SubscriptionRetrievalAttributes attributes);
void update(SubscriptionRetrievalAttributes<T,C> attributes);
/**
* Get the {@link SubscriptionRetrievalAttributes} for the
@ -473,7 +475,7 @@ public interface IBandwidthDao {
* @param retrieval
* @return the attributes
*/
SubscriptionRetrievalAttributes getSubscriptionRetrievalAttributes(
SubscriptionRetrievalAttributes<T, C> getSubscriptionRetrievalAttributes(
SubscriptionRetrieval retrieval);
/**
@ -484,5 +486,5 @@ public interface IBandwidthDao {
*
* @return the SubscriptionStatusSummary
*/
SubscriptionStatusSummary getSubscriptionStatusSummary(Subscription sub);
SubscriptionStatusSummary getSubscriptionStatusSummary(Subscription<T, C> sub);
}

View file

@ -14,7 +14,9 @@ import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Transient;
import com.raytheon.uf.common.datadelivery.registry.Coverage;
import com.raytheon.uf.common.datadelivery.registry.Subscription;
import com.raytheon.uf.common.datadelivery.registry.Time;
import com.raytheon.uf.common.dataplugin.persist.IPersistableDataObject;
import com.raytheon.uf.common.serialization.ISerializableObject;
import com.raytheon.uf.common.serialization.SerializationException;
@ -37,6 +39,7 @@ import com.raytheon.uf.edex.datadelivery.bandwidth.util.BandwidthUtil;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Jul 11, 2013 2106 djohnson Initial creation
* Oct 2, 2013 1797 dhladky Applied some generics
*
* </pre>
*
@ -46,9 +49,9 @@ import com.raytheon.uf.edex.datadelivery.bandwidth.util.BandwidthUtil;
@Table(name = "bandwidth_subscription_retrieval_attributes")
@SequenceGenerator(name = "BANDWIDTH_SEQ", sequenceName = "bandwidth_seq", allocationSize = 1, initialValue = 1)
@DynamicSerialize
public class SubscriptionRetrievalAttributes implements
public class SubscriptionRetrievalAttributes<T extends Time, C extends Coverage> implements
IPersistableDataObject<Long>, Serializable, ISerializableObject,
IDeepCopyable<SubscriptionRetrievalAttributes> {
IDeepCopyable<SubscriptionRetrievalAttributes<T, C>> {
private static final long serialVersionUID = 4563049024191145668L;
@ -67,7 +70,7 @@ public class SubscriptionRetrievalAttributes implements
private byte[] subSubscription;
@Transient
private transient Subscription subscription;
private transient Subscription<T, C> subscription;
@DynamicSerializeElement
@OneToOne(fetch = FetchType.EAGER, optional = false, cascade = CascadeType.PERSIST)
@ -85,7 +88,7 @@ public class SubscriptionRetrievalAttributes implements
* @param from
* the instance to copy from
*/
public SubscriptionRetrievalAttributes(SubscriptionRetrievalAttributes from) {
public SubscriptionRetrievalAttributes(SubscriptionRetrievalAttributes<T, C> from) {
if (from.subSubscription != null) {
final int srcLength = from.subSubscription.length;
this.subSubscription = new byte[srcLength];
@ -98,15 +101,15 @@ public class SubscriptionRetrievalAttributes implements
* {@inheritDoc}
*/
@Override
public SubscriptionRetrievalAttributes copy() {
return new SubscriptionRetrievalAttributes(this);
public SubscriptionRetrievalAttributes<T, C> copy() {
return new SubscriptionRetrievalAttributes<T, C>(this);
}
/**
* @return the subSubscription
* @throws SerializationException
*/
public Subscription getSubscription() throws SerializationException {
public Subscription<T, C> getSubscription() throws SerializationException {
if (subscription == null) {
if (subSubscription != null) {
subscription = SerializationUtil.transformFromThrift(
@ -124,7 +127,7 @@ public class SubscriptionRetrievalAttributes implements
* @param sub
* @throws SerializationException
*/
public void setSubscription(Subscription sub) throws SerializationException {
public void setSubscription(Subscription<T, C> sub) throws SerializationException {
// Set the transient field subscription so that we don't
// have to deserialize the subscription if it was set
// already.

View file

@ -33,9 +33,11 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.raytheon.uf.common.datadelivery.bandwidth.data.SubscriptionStatusSummary;
import com.raytheon.uf.common.datadelivery.registry.Coverage;
import com.raytheon.uf.common.datadelivery.registry.DataSetMetaData;
import com.raytheon.uf.common.datadelivery.registry.Network;
import com.raytheon.uf.common.datadelivery.registry.Subscription;
import com.raytheon.uf.common.datadelivery.registry.Time;
import com.raytheon.uf.edex.datadelivery.bandwidth.dao.BandwidthAllocation;
import com.raytheon.uf.edex.datadelivery.bandwidth.dao.BandwidthDataSetUpdate;
import com.raytheon.uf.edex.datadelivery.bandwidth.dao.BandwidthSubscription;
@ -63,6 +65,7 @@ import com.raytheon.uf.edex.datadelivery.bandwidth.util.BandwidthUtil;
* Jun 24, 2013 2106 djohnson Implement new methods.
* Jul 18, 2013 1653 mpduff Added getSubscriptionStatusSummary.
* Aug 28, 2013 2290 mpduff Check for no subscriptions.
* Oct 2, 2013 1797 dhladky Generics
*
* </pre>
*
@ -71,7 +74,7 @@ import com.raytheon.uf.edex.datadelivery.bandwidth.util.BandwidthUtil;
*/
@Transactional
@Service
public class HibernateBandwidthDao implements IBandwidthDao {
public class HibernateBandwidthDao<T extends Time, C extends Coverage> implements IBandwidthDao<T, C> {
private IBandwidthAllocationDao bandwidthAllocationDao;
@ -81,7 +84,7 @@ public class HibernateBandwidthDao implements IBandwidthDao {
private IBandwidthDataSetUpdateDao bandwidthDataSetUpdateDao;
private ISubscriptionRetrievalAttributesDao subscriptionRetrievalAttributesDao;
private ISubscriptionRetrievalAttributesDao<T, C> subscriptionRetrievalAttributesDao;
/**
* Constructor.
@ -176,7 +179,7 @@ public class HibernateBandwidthDao implements IBandwidthDao {
*/
@Override
public List<BandwidthSubscription> getBandwidthSubscription(
Subscription subscription) {
Subscription<T, C> subscription) {
return bandwidthSubscriptionDao.getBySubscription(subscription);
}
@ -262,7 +265,7 @@ public class HibernateBandwidthDao implements IBandwidthDao {
*/
@Override
public BandwidthDataSetUpdate newBandwidthDataSetUpdate(
DataSetMetaData dataSetMetaData) {
DataSetMetaData<T> dataSetMetaData) {
BandwidthDataSetUpdate entity = BandwidthUtil
.newDataSetMetaDataDao(dataSetMetaData);
@ -276,7 +279,7 @@ public class HibernateBandwidthDao implements IBandwidthDao {
*/
@Override
public BandwidthSubscription newBandwidthSubscription(
Subscription subscription, Calendar baseReferenceTime) {
Subscription<T, C> subscription, Calendar baseReferenceTime) {
BandwidthSubscription entity = BandwidthUtil
.getSubscriptionDaoForSubscription(subscription,
baseReferenceTime);
@ -456,7 +459,7 @@ public class HibernateBandwidthDao implements IBandwidthDao {
/**
* @return the subscriptionRetrievalAttributesDao
*/
public ISubscriptionRetrievalAttributesDao getSubscriptionRetrievalAttributesDao() {
public ISubscriptionRetrievalAttributesDao<T, C> getSubscriptionRetrievalAttributesDao() {
return subscriptionRetrievalAttributesDao;
}
@ -465,7 +468,7 @@ public class HibernateBandwidthDao implements IBandwidthDao {
* the subscriptionRetrievalAttributesDao to set
*/
public void setSubscriptionRetrievalAttributesDao(
ISubscriptionRetrievalAttributesDao subscriptionRetrievalAttributesDao) {
ISubscriptionRetrievalAttributesDao<T, C> subscriptionRetrievalAttributesDao) {
this.subscriptionRetrievalAttributesDao = subscriptionRetrievalAttributesDao;
}
@ -491,7 +494,7 @@ public class HibernateBandwidthDao implements IBandwidthDao {
* {@inheritDoc}
*/
@Override
public void store(SubscriptionRetrievalAttributes attributes) {
public void store(SubscriptionRetrievalAttributes<T, C> attributes) {
subscriptionRetrievalAttributesDao.create(attributes);
}
@ -500,12 +503,12 @@ public class HibernateBandwidthDao implements IBandwidthDao {
*/
@Override
public void storeSubscriptionRetrievalAttributes(
List<SubscriptionRetrievalAttributes> retrievalAttributes) {
List<SubscriptionRetrievalAttributes<T, C>> retrievalAttributes) {
subscriptionRetrievalAttributesDao.persistAll(retrievalAttributes);
}
@Override
public void update(SubscriptionRetrievalAttributes attributes) {
public void update(SubscriptionRetrievalAttributes<T, C> attributes) {
subscriptionRetrievalAttributesDao.update(attributes);
}
@ -513,7 +516,7 @@ public class HibernateBandwidthDao implements IBandwidthDao {
* {@inheritDoc}
*/
@Override
public SubscriptionRetrievalAttributes getSubscriptionRetrievalAttributes(
public SubscriptionRetrievalAttributes<T, C> getSubscriptionRetrievalAttributes(
SubscriptionRetrieval retrieval) {
return subscriptionRetrievalAttributesDao
.getBySubscriptionRetrieval(retrieval);
@ -524,7 +527,7 @@ public class HibernateBandwidthDao implements IBandwidthDao {
*/
@Override
public SubscriptionStatusSummary getSubscriptionStatusSummary(
Subscription sub) {
Subscription<T, C> sub) {
SubscriptionStatusSummary summary = new SubscriptionStatusSummary();
List<BandwidthSubscription> bandwidthSubList = this

View file

@ -19,6 +19,8 @@
**/
package com.raytheon.uf.edex.datadelivery.bandwidth.hibernate;
import com.raytheon.uf.common.datadelivery.registry.Coverage;
import com.raytheon.uf.common.datadelivery.registry.Time;
import com.raytheon.uf.edex.database.dao.ISessionManagedDao;
import com.raytheon.uf.edex.datadelivery.bandwidth.dao.SubscriptionRetrieval;
import com.raytheon.uf.edex.datadelivery.bandwidth.dao.SubscriptionRetrievalAttributes;
@ -33,19 +35,20 @@ import com.raytheon.uf.edex.datadelivery.bandwidth.dao.SubscriptionRetrievalAttr
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Jul 11, 2013 2106 djohnson Initial creation
* Oct 2 2012 1797 dhladky Generics
*
* </pre>
*
* @author djohnson
* @version 1.0
*/
interface ISubscriptionRetrievalAttributesDao extends
ISessionManagedDao<Long, SubscriptionRetrievalAttributes> {
interface ISubscriptionRetrievalAttributesDao<T extends Time, C extends Coverage> extends
ISessionManagedDao<Long, SubscriptionRetrievalAttributes<T, C>> {
/**
* @param retrieval
* @return
*/
SubscriptionRetrievalAttributes getBySubscriptionRetrieval(
SubscriptionRetrievalAttributes<T, C> getBySubscriptionRetrieval(
SubscriptionRetrieval retrieval);
}

View file

@ -19,6 +19,8 @@
**/
package com.raytheon.uf.edex.datadelivery.bandwidth.hibernate;
import com.raytheon.uf.common.datadelivery.registry.Coverage;
import com.raytheon.uf.common.datadelivery.registry.Time;
import com.raytheon.uf.edex.database.dao.SessionManagedDao;
import com.raytheon.uf.edex.datadelivery.bandwidth.dao.SubscriptionRetrieval;
import com.raytheon.uf.edex.datadelivery.bandwidth.dao.SubscriptionRetrievalAttributes;
@ -33,15 +35,16 @@ import com.raytheon.uf.edex.datadelivery.bandwidth.dao.SubscriptionRetrievalAttr
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Jul 11, 2013 2106 djohnson Initial creation
* Oct 2, 2013 1797 dhladky Generics
*
* </pre>
*
* @author djohnson
* @version 1.0
*/
public class SubscriptionRetrievalAttributesDao extends
SessionManagedDao<Long, SubscriptionRetrievalAttributes> implements
ISubscriptionRetrievalAttributesDao {
public class SubscriptionRetrievalAttributesDao<T extends Time, C extends Coverage> extends
SessionManagedDao<Long, SubscriptionRetrievalAttributes<T, C>> implements
ISubscriptionRetrievalAttributesDao<T, C> {
private static final String GET_BY_SUBSCRIPTIONRETRIEVAL = "from SubscriptionRetrievalAttributes sr where "
+ "sr.subscriptionRetrieval.id = :id";
@ -49,16 +52,17 @@ public class SubscriptionRetrievalAttributesDao extends
/**
* {@inheritDoc}
*/
@SuppressWarnings({ "unchecked" })
@Override
protected Class<SubscriptionRetrievalAttributes> getEntityClass() {
return SubscriptionRetrievalAttributes.class;
protected Class<SubscriptionRetrievalAttributes<T, C>> getEntityClass() {
return (Class<SubscriptionRetrievalAttributes<T, C>>) new SubscriptionRetrievalAttributes<T, C>().getClass();
}
/**
* {@inheritDoc}
*/
@Override
public SubscriptionRetrievalAttributes getBySubscriptionRetrieval(
public SubscriptionRetrievalAttributes<T, C> getBySubscriptionRetrieval(
SubscriptionRetrieval retrieval) {
return uniqueResult(GET_BY_SUBSCRIPTIONRETRIEVAL, "id",
retrieval.getId());

View file

@ -29,8 +29,10 @@ import java.util.TreeSet;
import com.google.common.collect.Sets;
import com.raytheon.uf.common.datadelivery.registry.AdhocSubscription;
import com.raytheon.uf.common.datadelivery.registry.Coverage;
import com.raytheon.uf.common.datadelivery.registry.DataSetMetaData;
import com.raytheon.uf.common.datadelivery.registry.DataType;
import com.raytheon.uf.common.datadelivery.registry.GriddedTime;
import com.raytheon.uf.common.datadelivery.registry.Subscription;
import com.raytheon.uf.common.datadelivery.registry.Time;
import com.raytheon.uf.common.datadelivery.registry.handlers.DataDeliveryHandlers;
@ -65,6 +67,7 @@ import com.raytheon.uf.edex.datadelivery.bandwidth.retrieval.RetrievalStatus;
* Sept 10, 2013 2351 dhladky Made adhoc queries for pointdata work
* Sept 17, 2013 2383 bgonzale setAdhocMostRecentUrlAndTime returns null if grid and
* no metadata found.
* Sept 24, 2013 1797 dhladky separated time from GriddedTime
*
* </pre>
*
@ -72,12 +75,12 @@ import com.raytheon.uf.edex.datadelivery.bandwidth.retrieval.RetrievalStatus;
* @version 1.0
*/
public class BandwidthDaoUtil {
public class BandwidthDaoUtil<T extends Time, C extends Coverage> {
private static final IUFStatusHandler statusHandler = UFStatus
.getHandler(BandwidthDaoUtil.class);
private final IBandwidthDao bandwidthDao;
private final IBandwidthDao<T,C> bandwidthDao;
private final RetrievalManager retrievalManager;
@ -89,7 +92,7 @@ public class BandwidthDaoUtil {
* @param retrievalManager
* the retrieval manager
*/
public BandwidthDaoUtil(IBandwidthDao bandwidthDao,
public BandwidthDaoUtil(IBandwidthDao<T,C> bandwidthDao,
RetrievalManager retrievalManager) {
this.bandwidthDao = bandwidthDao;
this.retrievalManager = retrievalManager;
@ -103,7 +106,7 @@ public class BandwidthDaoUtil {
* @param cycles
* @return
*/
public SortedSet<Calendar> getRetrievalTimes(Subscription subscription,
public SortedSet<Calendar> getRetrievalTimes(Subscription<T,C> subscription,
SortedSet<Integer> cycles) {
return getRetrievalTimes(subscription, cycles,
Sets.newTreeSet(Arrays.asList(0)));
@ -118,7 +121,7 @@ public class BandwidthDaoUtil {
* the retrieval interval
* @return the retrieval times
*/
public SortedSet<Calendar> getRetrievalTimes(Subscription subscription,
public SortedSet<Calendar> getRetrievalTimes(Subscription<T,C> subscription,
int retrievalInterval) {
// Add all hours of the days
final SortedSet<Integer> hours = Sets.newTreeSet();
@ -145,7 +148,7 @@ public class BandwidthDaoUtil {
* @param minutes
* @return
*/
private SortedSet<Calendar> getRetrievalTimes(Subscription subscription,
private SortedSet<Calendar> getRetrievalTimes(Subscription<T,C> subscription,
SortedSet<Integer> hours, SortedSet<Integer> minutes) {
SortedSet<Calendar> subscriptionTimes = new TreeSet<Calendar>();
@ -311,9 +314,9 @@ public class BandwidthDaoUtil {
* @return the adhoc subscription, or null if no matching metadata could be
* found
*/
public AdhocSubscription setAdhocMostRecentUrlAndTime(
AdhocSubscription adhoc, boolean mostRecent) {
AdhocSubscription retVal = null;
public AdhocSubscription<T,C> setAdhocMostRecentUrlAndTime(
AdhocSubscription<T,C> adhoc, boolean mostRecent) {
AdhocSubscription<T,C> retVal = null;
if (adhoc.getDataSetType() == DataType.POINT) {
@ -355,7 +358,7 @@ public class BandwidthDaoUtil {
Time adhocTime = adhoc.getTime();
for (BandwidthDataSetUpdate current : dataSetMetaDataUpdates) {
if (mostRecent
|| adhocTime.getCycleTimes().contains(
|| ((GriddedTime)adhocTime).getCycleTimes().contains(
current.getDataSetBaseTime().get(
Calendar.HOUR_OF_DAY))) {
daoToUse = current;

View file

@ -65,6 +65,7 @@ import com.raytheon.uf.edex.datadelivery.harvester.crawler.CrawlLauncher;
* Sep 04, 2012 1102 djohnson Initial creation
* Oct 05, 2012 1241 djohnson Replace RegistryManager calls with registry handler calls.
* Dec 12, 2012 1410 dhladky multi provider configurations.
* Sept 30, 2013 1797 dhladky Generics
*
* </pre>
*
@ -105,7 +106,7 @@ class DataSetMetaDataPurgeTaskImpl implements IDataSetMetaDataPurgeTask,
* @return the key
*/
@VisibleForTesting
static String getDatasetMetaDataMapKey(DataSetMetaData metaData) {
static String getDatasetMetaDataMapKey(DataSetMetaData<?> metaData) {
return metaData.getDataSetName() + metaData.getProviderName();
}
@ -118,7 +119,7 @@ class DataSetMetaDataPurgeTaskImpl implements IDataSetMetaDataPurgeTask,
* if the metadata passed in is null
*/
@VisibleForTesting
static void purgeMetaData(DataSetMetaData metaData) {
static void purgeMetaData(DataSetMetaData<?> metaData) {
checkNotNull(metaData, "metaData must not be null!");
@ -170,6 +171,7 @@ class DataSetMetaDataPurgeTaskImpl implements IDataSetMetaDataPurgeTask,
*
* @return the {@link DataSetMetaData} instances
*/
@SuppressWarnings("rawtypes")
@VisibleForTesting
List<DataSetMetaData> getDataSetMetaDatas() {
try {
@ -189,11 +191,11 @@ class DataSetMetaDataPurgeTaskImpl implements IDataSetMetaDataPurgeTask,
* @return the map
*/
@VisibleForTesting
Multimap<String, DataSetMetaData> getDataSetNameKeyedInstanceMap() {
Multimap<String, DataSetMetaData> map = TreeMultimap.create(
Multimap<String, DataSetMetaData<?>> getDataSetNameKeyedInstanceMap() {
Multimap<String, DataSetMetaData<?>> map = TreeMultimap.create(
Ordering.<String> natural(), DataSetMetaData.DATE_COMPARATOR);
for (DataSetMetaData metaData : getDataSetMetaDatas()) {
for (DataSetMetaData<?> metaData : getDataSetMetaDatas()) {
String key = getDatasetMetaDataMapKey(metaData);
map.put(key, metaData);
}
@ -253,7 +255,7 @@ class DataSetMetaDataPurgeTaskImpl implements IDataSetMetaDataPurgeTask,
* @param purge
* the purge strategy
*/
private <T extends DataSetMetaData> void handleVisit(T metaData,
private <T extends DataSetMetaData<?>> void handleVisit(T metaData,
IServiceDataSetMetaDataPurge<T> purge) {
State state = threadState.get();
List<HarvesterConfig> harvesterConfigs = state.harvesterConfigs;
@ -301,19 +303,19 @@ class DataSetMetaDataPurgeTaskImpl implements IDataSetMetaDataPurgeTask,
ITimer timer = TimeUtil.getTimer();
timer.start();
Multimap<String, DataSetMetaData> dataSetKeyedMap = getDataSetNameKeyedInstanceMap();
Multimap<String, DataSetMetaData<?>> dataSetKeyedMap = getDataSetNameKeyedInstanceMap();
try {
State state = initializeState();
for (String key : dataSetKeyedMap.keySet()) {
Collection<DataSetMetaData> metaDatas = dataSetKeyedMap
Collection<DataSetMetaData<?>> metaDatas = dataSetKeyedMap
.get(key);
Iterator<DataSetMetaData> iter = metaDatas.iterator();
Iterator<DataSetMetaData<?>> iter = metaDatas.iterator();
state.continueWithDataSet = true;
while (iter.hasNext() && state.continueWithDataSet) {
DataSetMetaData metaData = iter.next();
DataSetMetaData<?> metaData = iter.next();
metaData.accept(this);
}
}

View file

@ -35,6 +35,7 @@ import com.vividsolutions.jts.geom.Coordinate;
* Sept 11, 2013 2351 dhladky Fixed adhoc request times
* Sept 17, 2013 2383 bgonzale Removed exceptional code for point start and
* end since the times will be correct now.
* Oct 1, 2013 1797 dhladky Generics
*
* </pre>
*
@ -42,7 +43,7 @@ import com.vividsolutions.jts.geom.Coordinate;
* @version 1.0
*/
public class WfsRequestBuilder extends RequestBuilder {
public class WfsRequestBuilder<T extends Time, C extends Coverage> extends RequestBuilder<T, C> {
private static final IUFStatusHandler statusHandler = UFStatus
.getHandler(WfsRequestBuilder.class);
@ -120,7 +121,7 @@ public class WfsRequestBuilder extends RequestBuilder {
private String typeName = null;
public WfsRequestBuilder(WfsRetrievalAdapter adapter,
RetrievalAttribute attXML) {
RetrievalAttribute<T, C> attXML) {
super(attXML);
// Create XML doc
this.typeName = attXML.getPlugin();
@ -132,7 +133,7 @@ public class WfsRequestBuilder extends RequestBuilder {
buffer.append(AND_OPEN).append(NEW_LINE);
}
buffer.append(processTime(attXML.getTime())).append(processCoverage());
buffer.append(processTime(attXML.getTime())).append(processCoverage(attXML.getCoverage()));
if (attXML.getCoverage() != null && attXML.getTime() != null) {
buffer.append(AND_CLOSE).append(NEW_LINE);
@ -186,7 +187,7 @@ public class WfsRequestBuilder extends RequestBuilder {
}
@Override
public String processTime(Time inTime) {
public String processTime(T inTime) {
try {
@ -223,9 +224,7 @@ public class WfsRequestBuilder extends RequestBuilder {
}
@Override
public String processCoverage() {
Coverage coverage = getRetrievalAttribute().getCoverage();
public String processCoverage(C coverage) {
if (coverage != null) {
try {
@ -273,7 +272,7 @@ public class WfsRequestBuilder extends RequestBuilder {
}
@Override
public RetrievalAttribute getAttribute() {
public RetrievalAttribute<T, C> getAttribute() {
return getRetrievalAttribute();
}

View file

@ -37,6 +37,7 @@ import com.raytheon.uf.edex.datadelivery.retrieval.adapters.RetrievalAdapter;
* Jun 04, 2013 1763 dhladky Readied for WFS Retrievals.
* Jun 18, 2013 2120 dhladky Fixed times.
* Sep 18, 2013 2383 bgonzale Added subscription name to log output.
* Oct 2, 2013 1797 dhladky Generics time gridded time separation
*
* </pre>
*
@ -76,14 +77,15 @@ class WfsRetrievalGenerator extends RetrievalGenerator {
* @param bundle
* @return
*/
@SuppressWarnings("unchecked")
private List<Retrieval> getPointRetrievals(SubscriptionBundle bundle) {
List<Retrieval> retrievals = new ArrayList<Retrieval>();
Subscription sub = bundle.getSubscription();
Subscription<PointTime, Coverage> sub = bundle.getSubscription();
if (sub != null) {
PointTime subTime = (PointTime) sub.getTime();
PointTime subTime = sub.getTime();
if (sub.getUrl() == null) {
statusHandler
@ -97,7 +99,7 @@ class WfsRetrievalGenerator extends RetrievalGenerator {
Parameter param = null;
if (sub.getParameter() != null) {
param = sub.getParameter().get(0);
param = (Parameter) sub.getParameter().get(0);
}
Retrieval retrieval = getRetrieval(sub, bundle, param, subTime);
@ -117,7 +119,7 @@ class WfsRetrievalGenerator extends RetrievalGenerator {
* @param Time
* @return
*/
private Retrieval getRetrieval(Subscription sub, SubscriptionBundle bundle,
private Retrieval getRetrieval(Subscription<PointTime, Coverage> sub, SubscriptionBundle bundle,
Parameter param, PointTime time) {
Retrieval retrieval = new Retrieval();
@ -144,7 +146,7 @@ class WfsRetrievalGenerator extends RetrievalGenerator {
final String plugin = providerType.getPlugin();
// Attribute processing
RetrievalAttribute att = new RetrievalAttribute();
RetrievalAttribute<PointTime, Coverage> att = new RetrievalAttribute<PointTime, Coverage>();
att.setCoverage(cov);
if (param != null) {
@ -172,7 +174,7 @@ class WfsRetrievalGenerator extends RetrievalGenerator {
}
@Override
protected Subscription removeDuplicates(Subscription sub) {
protected Subscription<PointTime, Coverage> removeDuplicates(Subscription<?, ?> sub) {
throw new UnsupportedOperationException("Not implemented for WFS");
}

View file

@ -16,6 +16,7 @@ import com.raytheon.uf.common.datadelivery.registry.Provider;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Feb 20, 2011 218 dhladky Initial creation
* Sept 30, 2013 1797 dhladky Generics
*
* </pre>
*
@ -25,8 +26,8 @@ import com.raytheon.uf.common.datadelivery.registry.Provider;
public interface IParseMetaData {
List<DataSetMetaData> parseMetaData(Provider provider, LinkStore store,
List<DataSetMetaData<?>> parseMetaData(Provider provider, LinkStore store,
Collection collection, String dataDateFormat);
void storeMetaData(List<DataSetMetaData> metaDatas, DataSet dataSet);
void storeMetaData(List<DataSetMetaData<?>> metaDatas, DataSet dataSet);
}

View file

@ -37,6 +37,7 @@ import com.raytheon.uf.common.status.UFStatus.Priority;
* Sep 14, 2012 1169 djohnson Use storeOrReplaceRegistryObject.
* Oct 03, 2012 1241 djohnson Use registry handler, move unresolved reference handling into handlers themselves.
* Nov 19, 2012 1166 djohnson Clean up JAXB representation of registry objects.
* Sept 30, 2013 1797 dhladky Generics
*
* </pre>
*
@ -129,17 +130,17 @@ public abstract class MetaDataParser implements IParseMetaData {
* The DataSetMetaData Object to store.
*/
@Override
public void storeMetaData(final List<DataSetMetaData> metaDatas,
public void storeMetaData(final List<DataSetMetaData<?>> metaDatas,
final DataSet dataSet) {
IDataSetMetaDataHandler handler = DataDeliveryHandlers
.getDataSetMetaDataHandler();
Iterator<DataSetMetaData> iter = metaDatas.iterator();
Iterator<DataSetMetaData<?>> iter = metaDatas.iterator();
int size = metaDatas.size();
for (int i = 1; i <= size; i++) {
statusHandler.info(String.format(
"Attempting store of DataSetMetaData[%s/%s]", i, size));
final DataSetMetaData dsmd = iter.next();
final DataSetMetaData<?> dsmd = iter.next();
final String url = dsmd.getUrl();
try {

View file

@ -46,6 +46,7 @@ import com.raytheon.uf.edex.datadelivery.retrieval.adapters.RetrievalAdapter;
* Jul 25, 2012 955 djohnson Use {@link ServiceTypeFactory}.
* Nov 19, 2012 1166 djohnson Clean up JAXB representation of registry objects.
* Nov 26, 2012 1340 dhladky Recognize type of subscriptions for statistics.
* Sept 30, 2013 1797 dhladky Genericizing some of this flow
*
* </pre>
*
@ -89,7 +90,7 @@ public abstract class RetrievalGenerator {
*
* @return
*/
protected abstract Subscription removeDuplicates(Subscription sub);
protected abstract Subscription<?, ?> removeDuplicates(Subscription<?, ?> sub);
/**
* Gets the type of subscription based on the subscription object type
@ -97,7 +98,7 @@ public abstract class RetrievalGenerator {
* @param sub
* @return
*/
public SubscriptionType getSubscriptionType(Subscription sub) {
public SubscriptionType getSubscriptionType(Subscription<?, ?> sub) {
if (sub instanceof AdhocSubscription) {
return SubscriptionType.AD_HOC;

View file

@ -20,6 +20,7 @@ package com.raytheon.uf.edex.datadelivery.retrieval.interfaces;
* further licensing information
* */
import com.raytheon.uf.common.datadelivery.registry.Coverage;
import com.raytheon.uf.common.datadelivery.registry.Time;
import com.raytheon.uf.common.datadelivery.retrieval.xml.RetrievalAttribute;
@ -34,6 +35,7 @@ import com.raytheon.uf.common.datadelivery.retrieval.xml.RetrievalAttribute;
* Jan 16, 2011 dhladky Initial creation
* Aug 14, 2012 1022 djohnson Remove redundant public modifiers.
* May 12, 2013 753 dhladky Madis additions
* Oct 1, 2013 1797 dhladky Generics
*
* </pre>
*
@ -42,14 +44,14 @@ import com.raytheon.uf.common.datadelivery.retrieval.xml.RetrievalAttribute;
* @author dhladky
* @version 1.0
*/
public interface IRetrievalRequestBuilder {
public interface IRetrievalRequestBuilder<T extends Time, C extends Coverage> {
String processTime(Time prtXML);
String processTime(T prtXML);
String processCoverage();
String processCoverage(C Coverage);
String getRequest();
RetrievalAttribute getAttribute();
RetrievalAttribute<T, C> getAttribute();
}

View file

@ -25,6 +25,7 @@ import java.util.List;
import com.google.common.annotations.VisibleForTesting;
import com.raytheon.uf.common.datadelivery.registry.GriddedCoverage;
import com.raytheon.uf.common.datadelivery.registry.GriddedTime;
import com.raytheon.uf.common.datadelivery.registry.Parameter;
import com.raytheon.uf.common.datadelivery.retrieval.xml.RetrievalAttribute;
import com.raytheon.uf.common.dataplugin.PluginDataObject;
@ -48,6 +49,7 @@ import com.raytheon.uf.edex.datadelivery.retrieval.util.ResponseProcessingUtilit
* Feb 07, 2013 1543 djohnson Allow package-level overriding of methods for mocking in tests.
* May 12, 2013 753 dhladky Altered to be more flexible with other types
* May 31, 2013 2038 djohnson Rename setPdos to allocatePdoArray.
* Sept 25, 2013 1797 dhladky separated time from gridded time
*
* </pre>
*
@ -76,10 +78,12 @@ public class GridMetadataAdapter extends AbstractMetadataAdapter<Integer> {
ensembles = Arrays.asList((String) null);
}
if (attXML.getTime().getSelectedTimeIndices() != null) {
GriddedTime time = (GriddedTime)attXML.getTime();
if (time.getSelectedTimeIndices() != null) {
if (levels.length > 1
|| attXML.getTime().getSelectedTimeIndices().size() > 1) {
size *= attXML.getTime().getSelectedTimeIndices().size();
|| time.getSelectedTimeIndices().size() > 1) {
size *= time.getSelectedTimeIndices().size();
}
}
@ -93,10 +97,10 @@ public class GridMetadataAdapter extends AbstractMetadataAdapter<Integer> {
throw new InstantiationException(e.getMessage());
}
if (attXML.getTime().getSelectedTimeIndices() != null) {
if (time.getSelectedTimeIndices() != null) {
int bin = 0;
for (String ensemble : ensembles) {
for (int i = 0; i < attXML.getTime().getSelectedTimeIndices()
for (int i = 0; i < time.getSelectedTimeIndices()
.size(); i++) {
for (int j = 0; j < levels.length; j++) {
pdos[bin++] = populateGridRecord(attXML.getSubName(),

View file

@ -38,6 +38,7 @@ import com.raytheon.uf.common.datadelivery.registry.DataType;
import com.raytheon.uf.common.datadelivery.registry.GriddedCoverage;
import com.raytheon.uf.common.datadelivery.registry.GriddedDataSet;
import com.raytheon.uf.common.datadelivery.registry.GriddedDataSetMetaData;
import com.raytheon.uf.common.datadelivery.registry.GriddedTime;
import com.raytheon.uf.common.datadelivery.registry.Levels;
import com.raytheon.uf.common.datadelivery.registry.OpenDapGriddedDataSet;
import com.raytheon.uf.common.datadelivery.registry.OpenDapGriddedDataSetMetaData;
@ -91,6 +92,7 @@ import dods.dap.DAS;
* Jan 08, 2013 dhladky Performance enhancements, specific model fixes.
* Jan 18, 2013 1513 dhladky Level look up improvements.
* Jan 24, 2013 1527 dhladky Changed 0DEG to FRZ
* Sept 25, 2013 1797 dhladky separated time from gridded time
*
* </pre>
*
@ -237,7 +239,7 @@ class OpenDAPMetaDataParser extends MetaDataParser {
if (das.getAttributeTable(timecon) != null) {
try {
AttributeTable at = das.getAttributeTable(timecon);
Time time = new Time();
GriddedTime time = new GriddedTime();
// number of times
time.setNumTimes(new Integer(OpenDAPParseUtility.getInstance()
.trim(at.getAttribute(size).getValueAt(0))).intValue());
@ -635,10 +637,10 @@ class OpenDAPMetaDataParser extends MetaDataParser {
}
@Override
public List<DataSetMetaData> parseMetaData(Provider provider,
public List<DataSetMetaData<?>> parseMetaData(Provider provider,
LinkStore store, Collection collection, String dataDateFormat) {
final Map<OpenDapGriddedDataSet, List<DataSetMetaData>> metaDatas = new HashMap<OpenDapGriddedDataSet, List<DataSetMetaData>>();
final Map<OpenDapGriddedDataSet, List<DataSetMetaData<?>>> metaDatas = new HashMap<OpenDapGriddedDataSet, List<DataSetMetaData<?>>>();
Set<String> linkKeys = new TreeSet<String>(store.getLinkKeys());
@ -685,7 +687,7 @@ class OpenDAPMetaDataParser extends MetaDataParser {
serviceConfig.getConstantValue("BLANK")));
dataSet.setParameters(getParameters(das, dataSet, gdsmd, link,
collection, dataDateFormat));
Time dataSetTime = gdsmd.getTime();
GriddedTime dataSetTime = gdsmd.getTime();
if (dataSetTime == null) {
throw new IllegalStateException(
"The time cannot be null for a DataSetMetaData object!");
@ -742,17 +744,17 @@ class OpenDAPMetaDataParser extends MetaDataParser {
"The time cannot be null for a DataSet object!");
}
List<DataSetMetaData> toStore = metaDatas.get(dataSet);
List<DataSetMetaData<?>> toStore = metaDatas.get(dataSet);
if (toStore == null) {
toStore = new ArrayList<DataSetMetaData>();
toStore = new ArrayList<DataSetMetaData<?>>();
metaDatas.put(dataSet, toStore);
}
toStore.add(gdsmd);
}
List<DataSetMetaData> parsedMetadatas = new ArrayList<DataSetMetaData>();
for (DataSet dataSet : metaDatas.keySet()) {
List<DataSetMetaData> dataSetMetaDatas = metaDatas.get(dataSet);
List<DataSetMetaData<?>> parsedMetadatas = new ArrayList<DataSetMetaData<?>>();
for (DataSet<GriddedTime, GriddedCoverage> dataSet : metaDatas.keySet()) {
List<DataSetMetaData<?>> dataSetMetaDatas = metaDatas.get(dataSet);
storeDataSet(dataSet);
storeMetaData(dataSetMetaDatas, dataSet);

View file

@ -24,6 +24,7 @@ import com.google.common.annotations.VisibleForTesting;
import com.raytheon.uf.common.datadelivery.registry.Coverage;
import com.raytheon.uf.common.datadelivery.registry.Ensemble;
import com.raytheon.uf.common.datadelivery.registry.GriddedCoverage;
import com.raytheon.uf.common.datadelivery.registry.GriddedTime;
import com.raytheon.uf.common.datadelivery.registry.Levels;
import com.raytheon.uf.common.datadelivery.registry.Parameter;
import com.raytheon.uf.common.datadelivery.registry.Time;
@ -46,13 +47,14 @@ import com.raytheon.uf.edex.datadelivery.retrieval.request.RequestBuilder;
* make immutable, use StringBuilder instead of StringBuffer.
* Dec 10, 2012 1259 bsteffen Switch Data Delivery from LatLon to referenced envelopes.
* May 12, 2013 753 dhladky address field
* Sept 25, 2013 1797 dhladky separated time from gridded time
*
* </pre>
*
* @author dhladky
* @version 1.0
*/
class OpenDAPRequestBuilder extends RequestBuilder {
class OpenDAPRequestBuilder<T extends Time, C extends Coverage> extends RequestBuilder<T, C> {
private final String openDAPURL;
@ -62,7 +64,7 @@ class OpenDAPRequestBuilder extends RequestBuilder {
* @param prXML
*/
OpenDAPRequestBuilder(OpenDAPRetrievalAdapter adapter,
RetrievalAttribute ra) {
RetrievalAttribute<T, C> ra) {
super(ra);
// Create URL
@ -78,7 +80,7 @@ class OpenDAPRequestBuilder extends RequestBuilder {
// process time second
buffer.append(processTime(getRetrievalAttribute().getTime()));
// process the coverage, w/levels
buffer.append(processCoverage());
buffer.append(processCoverage(ra.getCoverage()));
this.openDAPURL = buffer.toString().trim();
}
@ -122,19 +124,20 @@ class OpenDAPRequestBuilder extends RequestBuilder {
public String processTime(Time time) {
StringBuilder buf = new StringBuilder();
GriddedTime gtime = (GriddedTime)time;
if (time.getNumTimes() == 1) {
if (gtime.getNumTimes() == 1) {
// only one time available
buf.append("[0]");
} else {
// a particular time selected from the list
if (time.getRequestStart().equals(time.getRequestEnd())) {
buf.append("[" + (time.getRequestStartTimeAsInt()) + "]");
if (gtime.getRequestStart().equals(gtime.getRequestEnd())) {
buf.append("[" + (gtime.getRequestStartTimeAsInt()) + "]");
}
// a range of times selected from the list
else {
buf.append("[" + (time.getRequestStartTimeAsInt()) + ":1:"
+ (time.getRequestEndTimeAsInt()) + "]");
buf.append("[" + (gtime.getRequestStartTimeAsInt()) + ":1:"
+ (gtime.getRequestEndTimeAsInt()) + "]");
}
}
@ -142,11 +145,10 @@ class OpenDAPRequestBuilder extends RequestBuilder {
}
@Override
public String processCoverage() {
public String processCoverage(C coverage) {
StringBuilder sb = new StringBuilder();
Coverage coverage = getRetrievalAttribute().getCoverage();
if (coverage instanceof GriddedCoverage) {
// manage the vertical levels
sb.append(processDAPLevels(getRetrievalAttribute()
@ -237,7 +239,7 @@ class OpenDAPRequestBuilder extends RequestBuilder {
}
@Override
public RetrievalAttribute getAttribute() {
public RetrievalAttribute<T, C> getAttribute() {
return getRetrievalAttribute();
}

View file

@ -33,6 +33,7 @@ import com.raytheon.uf.common.datadelivery.registry.DataSetMetaData;
import com.raytheon.uf.common.datadelivery.registry.Ensemble;
import com.raytheon.uf.common.datadelivery.registry.GriddedCoverage;
import com.raytheon.uf.common.datadelivery.registry.GriddedDataSetMetaData;
import com.raytheon.uf.common.datadelivery.registry.GriddedTime;
import com.raytheon.uf.common.datadelivery.registry.Levels;
import com.raytheon.uf.common.datadelivery.registry.OpenDapGriddedDataSet;
import com.raytheon.uf.common.datadelivery.registry.Parameter;
@ -78,8 +79,7 @@ import com.raytheon.uf.edex.datadelivery.retrieval.util.RetrievalGeneratorUtilit
* Nov 25, 2012 1340 dhladky Added type for subscriptions to retrieval
* Dec 10, 2012 1259 bsteffen Switch Data Delivery from LatLon to referenced envelopes.
* Sep 18, 2013 2383 bgonzale Added subscription name to log output.
*
* </pre>
* Sept 25, 2013 1797 dhladky separated time from gridded time
*
* @author djohnson
* @version 1.0
@ -89,13 +89,13 @@ class OpenDAPRetrievalGenerator extends RetrievalGenerator {
private static final IUFStatusHandler statusHandler = UFStatus
.getHandler(OpenDAPRetrievalGenerator.class);
private static <T extends Subscription> List<T> addMostRecentDataSetMetaDataUrlToSubscriptions(
private static <T extends Subscription<GriddedTime, GriddedCoverage>> List<T> addMostRecentDataSetMetaDataUrlToSubscriptions(
List<T> subscriptions) {
// Find out what the most recent url this subscription should use would
// be
Iterator<T> iter = subscriptions.iterator();
while (iter.hasNext()) {
Subscription subscription = iter.next();
Subscription<GriddedTime, GriddedCoverage> subscription = iter.next();
DataSet result = null;
try {
result = DataDeliveryHandlers.getDataSetHandler()
@ -152,7 +152,7 @@ class OpenDAPRetrievalGenerator extends RetrievalGenerator {
* the subscription
* @return the url for retrieval or null if no retrieval should take place
*/
private static String getRetrievalUrl(Subscription subscription) {
private static String getRetrievalUrl(Subscription<GriddedTime, GriddedCoverage> subscription) {
String url = subscription.getUrl();
DataSetMetaData result = null;
@ -187,7 +187,7 @@ class OpenDAPRetrievalGenerator extends RetrievalGenerator {
* @return true if the datasetmetadata will satisfy the subscription
*/
@VisibleForTesting
static boolean satisfiesSubscriptionCriteria(Subscription subscription,
static boolean satisfiesSubscriptionCriteria(Subscription<GriddedTime, GriddedCoverage> subscription,
DataSetMetaData dsmd) {
List<Integer> cycleTimes = subscription.getTime().getCycleTimes();
// If the subscription doesn't have cycle times subscribed to, then add
@ -247,19 +247,10 @@ class OpenDAPRetrievalGenerator extends RetrievalGenerator {
* @param cov
* @return
*/
private int getDimensionalSize(Coverage cov) {
private int getDimensionalSize(GriddedCoverage cov) {
int size = 0;
if (cov instanceof GriddedCoverage) {
GriddedCoverage gcov = (GriddedCoverage) cov;
size = gcov.getGridCoverage().getNx()
* gcov.getGridCoverage().getNy();
} else {
// TODO do something with non gridded data
}
return size;
return cov.getGridCoverage().getNx()
* cov.getGridCoverage().getNy();
}
/**
@ -285,10 +276,11 @@ class OpenDAPRetrievalGenerator extends RetrievalGenerator {
* @param bundle
* @return
*/
@SuppressWarnings("unchecked")
private List<Retrieval> getGridRetrievals(SubscriptionBundle bundle) {
List<Retrieval> retrievals = new ArrayList<Retrieval>();
Subscription sub = bundle.getSubscription();
Subscription<GriddedTime, GriddedCoverage> sub = bundle.getSubscription();
int sfactor = getSizingFactor(getDimensionalSize(sub.getCoverage()));
sub = removeDuplicates(sub);
@ -297,10 +289,10 @@ class OpenDAPRetrievalGenerator extends RetrievalGenerator {
if (sub.getUrl() == null) {
List<Subscription> subs = new ArrayList<Subscription>(1);
List<Subscription<GriddedTime, GriddedCoverage>> subs = new ArrayList<Subscription<GriddedTime, GriddedCoverage>>(1);
subs.add(sub);
List<Subscription> fillableSubs = addMostRecentDataSetMetaDataUrlToSubscriptions(subs);
List<Subscription<GriddedTime, GriddedCoverage>> fillableSubs = addMostRecentDataSetMetaDataUrlToSubscriptions(subs);
if (!CollectionUtil.isNullOrEmpty(fillableSubs)) {
sub = fillableSubs.get(0);
@ -312,7 +304,7 @@ class OpenDAPRetrievalGenerator extends RetrievalGenerator {
}
}
Time subTime = sub.getTime();
GriddedTime subTime = sub.getTime();
String retrievalUrl = getRetrievalUrl(sub);
sub.setUrl(retrievalUrl);
@ -334,17 +326,17 @@ class OpenDAPRetrievalGenerator extends RetrievalGenerator {
for (List<Integer> timeSequence : subTime.getTimeSequences(sfactor)) {
for (Parameter param : sub.getParameter()) {
for (Parameter param : (List<Parameter>)sub.getParameter()) {
final Levels paramLevels = param.getLevels();
if (CollectionUtil.isNullOrEmpty(paramLevels
.getSelectedLevelIndices())) {
// handle single level
paramLevels.setRequestLevelEnd(0);
paramLevels.setRequestLevelStart(0);
List<Time> times = processTime(timeSequence,
sub.getTime());
List<GriddedTime> times = processTime(timeSequence,
(GriddedTime)sub.getTime());
for (Time time : times) {
for (GriddedTime time : times) {
for (Ensemble ensemble : ensembles) {
Retrieval retrieval = getRetrieval(sub, bundle,
param, paramLevels, time, ensemble);
@ -356,7 +348,7 @@ class OpenDAPRetrievalGenerator extends RetrievalGenerator {
for (List<Integer> levelSequence : paramLevels
.getLevelSequences(sfactor)) {
List<Time> times = processTime(timeSequence,
List<GriddedTime> times = processTime(timeSequence,
sub.getTime());
List<Levels> levels = processLevels(levelSequence,
paramLevels);
@ -392,7 +384,7 @@ class OpenDAPRetrievalGenerator extends RetrievalGenerator {
* @param Time
* @return
*/
private Retrieval getRetrieval(Subscription sub, SubscriptionBundle bundle,
private Retrieval getRetrieval(Subscription<GriddedTime, GriddedCoverage> sub, SubscriptionBundle bundle,
Parameter param, Levels level, Time time, Ensemble ensemble) {
Retrieval retrieval = new Retrieval();
@ -507,11 +499,11 @@ class OpenDAPRetrievalGenerator extends RetrievalGenerator {
* @param subTime
* @return
*/
private ArrayList<Time> processTime(List<Integer> timeSequence, Time subTime) {
private ArrayList<GriddedTime> processTime(List<Integer> timeSequence, GriddedTime subTime) {
ArrayList<Time> times = new ArrayList<Time>();
ArrayList<GriddedTime> times = new ArrayList<GriddedTime>();
for (int i = 0; i < timeSequence.size(); i++) {
Time time = new Time();
GriddedTime time = new GriddedTime();
time.setEnd(subTime.getEnd());
time.setStart(subTime.getStart());
time.setNumTimes(subTime.getNumTimes());
@ -532,10 +524,15 @@ class OpenDAPRetrievalGenerator extends RetrievalGenerator {
/**
* Remove duplicate levels, times, subscriptions
*/
@SuppressWarnings("unchecked")
@Override
protected Subscription removeDuplicates(Subscription sub) {
protected Subscription<GriddedTime, GriddedCoverage> removeDuplicates(Subscription<?, ?> subin) {
int sfactor = getSizingFactor(getDimensionalSize(sub.getCoverage()));
Subscription<GriddedTime, GriddedCoverage> sub = (Subscription<GriddedTime, GriddedCoverage>)subin;
GriddedCoverage cov = sub.getCoverage();
GriddedTime time = sub.getTime();
int sfactor = getSizingFactor(getDimensionalSize(cov));
List<String> ensembles = null;
if (sub.getEnsemble() != null && sub.getEnsemble().hasSelection()) {
@ -544,10 +541,10 @@ class OpenDAPRetrievalGenerator extends RetrievalGenerator {
ensembles = Arrays.asList((String) null);
}
for (List<Integer> timeSequence : sub.getTime().getTimeSequences(
for (List<Integer> timeSequence : time.getTimeSequences(
sfactor)) {
for (Parameter param : sub.getParameter()) {
for (Parameter param : (List<Parameter>)sub.getParameter()) {
if (param.getLevels().getSelectedLevelIndices() == null
|| param.getLevels().getSelectedLevelIndices().size() == 0) {
@ -557,9 +554,9 @@ class OpenDAPRetrievalGenerator extends RetrievalGenerator {
ArrayList<DataTime> times = null;
for (Time time : processTime(timeSequence, sub.getTime())) {
for (GriddedTime gtime : processTime(timeSequence, time)) {
times = ResponseProcessingUtilities
.getOpenDAPGridDataTimes(time);
.getOpenDAPGridDataTimes(gtime);
}
ArrayList<Level> levels = ResponseProcessingUtilities
@ -568,7 +565,7 @@ class OpenDAPRetrievalGenerator extends RetrievalGenerator {
Map<DataTime, List<Level>> dups = getGridDuplicates(
sub.getName(),
param, times, levels, ensembles,
(GriddedCoverage) sub.getCoverage());
cov);
for (int i = 0; i < times.size(); i++) {
DataTime dtime = times.get(i);
@ -576,7 +573,7 @@ class OpenDAPRetrievalGenerator extends RetrievalGenerator {
if (levDups != null) {
// single level, remove the time
sub.getTime().getSelectedTimeIndices()
time.getSelectedTimeIndices()
.remove(timeSequence.get(i));
statusHandler.info("Removing duplicate time: "
+ dtime.toString());
@ -591,10 +588,10 @@ class OpenDAPRetrievalGenerator extends RetrievalGenerator {
ArrayList<DataTime> times = null;
ArrayList<Level> plevels = null;
for (Time time : processTime(timeSequence,
sub.getTime())) {
for (GriddedTime gtime : processTime(timeSequence,
time)) {
times = ResponseProcessingUtilities
.getOpenDAPGridDataTimes(time);
.getOpenDAPGridDataTimes(gtime);
}
for (Levels level : processLevels(levelSequence,
param.getLevels())) {
@ -605,7 +602,7 @@ class OpenDAPRetrievalGenerator extends RetrievalGenerator {
Map<DataTime, List<Level>> dups = getGridDuplicates(
sub.getName(), param, times, plevels,
ensembles,
((GriddedCoverage) sub.getCoverage()));
cov);
for (int i = 0; i < times.size(); i++) {
DataTime dtime = times.get(i);
@ -615,7 +612,7 @@ class OpenDAPRetrievalGenerator extends RetrievalGenerator {
if (levDups.size() == plevels.size()) {
// just remove the entire time
sub.getTime().getSelectedTimeIndices()
time.getSelectedTimeIndices()
.remove(timeSequence.get(i));
statusHandler
.info("Removing duplicate time: "
@ -645,7 +642,7 @@ class OpenDAPRetrievalGenerator extends RetrievalGenerator {
}
}
// remove entire subscription, it's a duplicate
if (sub.getTime().getSelectedTimeIndices().size() == 0) {
if (time.getSelectedTimeIndices().size() == 0) {
statusHandler.info("Removing duplicate subscription: "
+ sub.getName());
return null;

View file

@ -20,6 +20,8 @@ package com.raytheon.uf.edex.datadelivery.retrieval.request;
* further licensing information.
**/
import com.raytheon.uf.common.datadelivery.registry.Coverage;
import com.raytheon.uf.common.datadelivery.registry.Time;
import com.raytheon.uf.common.datadelivery.retrieval.xml.RetrievalAttribute;
import com.raytheon.uf.edex.datadelivery.retrieval.interfaces.IRetrievalRequestBuilder;
@ -39,15 +41,15 @@ import com.raytheon.uf.edex.datadelivery.retrieval.interfaces.IRetrievalRequestB
* @author dhladky
* @version 1.0
*/
public abstract class RequestBuilder implements IRetrievalRequestBuilder {
public abstract class RequestBuilder<T extends Time, C extends Coverage> implements IRetrievalRequestBuilder<T, C> {
private final RetrievalAttribute ra;
private final RetrievalAttribute<T, C> ra;
protected RequestBuilder(RetrievalAttribute ra) {
protected RequestBuilder(RetrievalAttribute<T, C> ra) {
this.ra = ra;
}
public RetrievalAttribute getRetrievalAttribute() {
public RetrievalAttribute<T, C> getRetrievalAttribute() {
return ra;
}
}

View file

@ -27,6 +27,7 @@ import java.util.List;
import com.google.common.annotations.VisibleForTesting;
import com.raytheon.uf.common.datadelivery.registry.GriddedCoverage;
import com.raytheon.uf.common.datadelivery.registry.GriddedTime;
import com.raytheon.uf.common.datadelivery.retrieval.xml.RetrievalAttribute;
import com.raytheon.uf.common.dataplugin.PluginDataObject;
import com.raytheon.uf.common.dataplugin.PluginException;
@ -53,6 +54,7 @@ import dods.dap.PrimitiveVector;
* ------------ ---------- ----------- --------------------------
* Jan 18, 2011 dhladky Initial creation
* Feb 07, 2013 1543 djohnson Allow package-level construction with explicit PDO class name.
* Sept 25, 2013 1797 dhladky Separate time from gridded time
*
* </pre>
*
@ -216,7 +218,7 @@ public class OpenDAPTranslator extends RetrievalTranslator {
@Override
protected int getSubsetNumTimes() {
return ResponseProcessingUtilities.getOpenDAPGridNumTimes(attXML
return ResponseProcessingUtilities.getOpenDAPGridNumTimes((GriddedTime)attXML
.getTime());
}
@ -236,7 +238,7 @@ public class OpenDAPTranslator extends RetrievalTranslator {
@Override
protected ArrayList<DataTime> getTimes() {
return ResponseProcessingUtilities.getOpenDAPGridDataTimes(attXML
return ResponseProcessingUtilities.getOpenDAPGridDataTimes((GriddedTime)attXML
.getTime());
}

View file

@ -4,9 +4,9 @@ import java.text.ParseException;
import java.util.ArrayList;
import com.raytheon.uf.common.datadelivery.registry.DataLevelType.LevelType;
import com.raytheon.uf.common.datadelivery.registry.GriddedTime;
import com.raytheon.uf.common.datadelivery.registry.Levels;
import com.raytheon.uf.common.datadelivery.registry.Parameter;
import com.raytheon.uf.common.datadelivery.registry.Time;
import com.raytheon.uf.common.dataplugin.grid.GridRecord;
import com.raytheon.uf.common.dataplugin.level.Level;
import com.raytheon.uf.common.dataplugin.level.LevelFactory;
@ -52,6 +52,7 @@ import com.raytheon.uf.common.time.DataTime;
* objects.
* Jan 30, 2013 1543 djohnson Log exception stacktrace.
* Aug 30, 2013 2298 rjpeter Make getPluginName abstract
* Sept 25, 2013 1797 dhladky separated time from gridded time
*
* </pre>
*
@ -91,7 +92,7 @@ public class ResponseProcessingUtilities {
* @param time
* @return
*/
public static int getOpenDAPGridNumTimes(Time time) {
public static int getOpenDAPGridNumTimes(GriddedTime time) {
int start = time.getRequestStartTimeAsInt();
int end = time.getRequestEndTimeAsInt();
@ -122,7 +123,7 @@ public class ResponseProcessingUtilities {
* @param time
* @return
*/
public static ArrayList<DataTime> getOpenDAPGridDataTimes(Time time) {
public static ArrayList<DataTime> getOpenDAPGridDataTimes(GriddedTime time) {
ArrayList<DataTime> dt = new ArrayList<DataTime>();

View file

@ -40,7 +40,6 @@ import com.raytheon.uf.common.datadelivery.registry.EnvelopeUtils;
import com.raytheon.uf.common.datadelivery.registry.Levels;
import com.raytheon.uf.common.datadelivery.registry.PointDataSetMetaData;
import com.raytheon.uf.common.datadelivery.registry.PointTime;
import com.raytheon.uf.common.datadelivery.registry.Time;
import com.raytheon.uf.common.datadelivery.registry.WFSPointDataSet;
import com.raytheon.uf.common.dataplugin.PluginDataObject;
import com.raytheon.uf.common.geospatial.MapUtil;
@ -68,6 +67,7 @@ import com.vividsolutions.jts.geom.Envelope;
* Aug 08, 2013 2097 dhladky Made operational
* Aug 30, 2013 2098 dhladky Improved
* Spet 2, 2013 2098 dhladky Updated how times are managed.
* Sept 30, 2013 1797 dhladky Generics
*
* </pre>
*
@ -260,7 +260,7 @@ public class WfsRegistryCollectorAddon<D extends SimpleDimension, L extends Simp
}
}
protected Time getTime() {
protected PointTime getTime() {
return time;
}

View file

@ -40,12 +40,14 @@ import org.springframework.test.annotation.DirtiesContext.ClassMode;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.raytheon.uf.common.datadelivery.registry.Coverage;
import com.raytheon.uf.common.datadelivery.registry.DataType;
import com.raytheon.uf.common.datadelivery.registry.Network;
import com.raytheon.uf.common.datadelivery.registry.PointTime;
import com.raytheon.uf.common.datadelivery.registry.SiteSubscription;
import com.raytheon.uf.common.datadelivery.registry.SiteSubscriptionFixture;
import com.raytheon.uf.common.datadelivery.registry.Subscription;
import com.raytheon.uf.common.datadelivery.registry.Time;
import com.raytheon.uf.common.localization.PathManagerFactoryTest;
import com.raytheon.uf.common.time.util.TimeUtil;
import com.raytheon.uf.common.time.util.TimeUtilTest;
@ -76,6 +78,7 @@ import com.raytheon.uf.edex.datadelivery.bandwidth.util.BandwidthUtil;
* Jun 03, 2013 2095 djohnson Move getPointDataSet in from subclass.
* Jul 09, 2013 2106 djohnson Add datadelivery handlers, since they are now dependency injected.
* Sep 17, 2013 2383 bgonzale Added "thrift.stream.maxsize" System property to setup.
* Sept 25, 2013 1797 dhladky separated time from gridded time
*
* </pre>
*
@ -92,18 +95,18 @@ import com.raytheon.uf.edex.datadelivery.bandwidth.util.BandwidthUtil;
SpringFiles.BANDWIDTH_DATADELIVERY_INTEGRATION_TEST_XML })
@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)
@Ignore
public abstract class AbstractBandwidthManagerIntTest {
public abstract class AbstractBandwidthManagerIntTest<T extends Time, C extends Coverage> {
@Autowired
protected ApplicationContext context;
@Autowired
protected EdexBandwidthManager bandwidthManager;
protected EdexBandwidthManager<T,C> bandwidthManager;
@Autowired
protected RetrievalManager retrievalManager;
protected IBandwidthDao bandwidthDao;
protected IBandwidthDao<T, C> bandwidthDao;
/**
* Keeps track of which integers have already been used as seeds for a
@ -169,7 +172,7 @@ public abstract class AbstractBandwidthManagerIntTest {
*
* @param instance
*/
protected void shutdownBandwidthManager(BandwidthManager bwManager) {
protected void shutdownBandwidthManager(BandwidthManager<T, C> bwManager) {
if (bwManager != null) {
try {
bwManager.shutdown();
@ -185,7 +188,7 @@ public abstract class AbstractBandwidthManagerIntTest {
*
* @return the subscription
*/
protected SiteSubscription createSubscriptionThatFillsUpABucket() {
protected SiteSubscription<T,C> createSubscriptionThatFillsUpABucket() {
return createSubscriptionWithDataSetSizeInBytes(fullBucketSize);
}
@ -194,7 +197,7 @@ public abstract class AbstractBandwidthManagerIntTest {
*
* @return the subscription
*/
protected SiteSubscription createSubscriptionThatFillsUpTenBuckets() {
protected SiteSubscription<T,C> createSubscriptionThatFillsUpTenBuckets() {
return createSubscriptionWithDataSetSizeInBytes(fullBucketSize * 10);
}
@ -203,7 +206,7 @@ public abstract class AbstractBandwidthManagerIntTest {
*
* @return the subscription
*/
protected SiteSubscription createSubscriptionThatFillsHalfABucket() {
protected SiteSubscription<T,C> createSubscriptionThatFillsHalfABucket() {
return createSubscriptionWithDataSetSizeInBytes(halfBucketSize);
}
@ -212,7 +215,7 @@ public abstract class AbstractBandwidthManagerIntTest {
*
* @return the subscription
*/
protected SiteSubscription createSubscriptionThatFillsAThirdOfABucket() {
protected SiteSubscription<T,C> createSubscriptionThatFillsAThirdOfABucket() {
return createSubscriptionWithDataSetSizeInBytes(thirdBucketSizeInBytes);
}
@ -221,13 +224,13 @@ public abstract class AbstractBandwidthManagerIntTest {
*
* @return the subscription
*/
protected SiteSubscription createSubscriptionThatFillsUpTwoBuckets() {
protected SiteSubscription<T,C> createSubscriptionThatFillsUpTwoBuckets() {
return createSubscriptionWithDataSetSizeInBytes(fullBucketSize * 2);
}
protected SiteSubscription createSubscriptionWithDataSetSizeInBytes(
protected SiteSubscription<T,C> createSubscriptionWithDataSetSizeInBytes(
long bytes) {
SiteSubscription subscription = SiteSubscriptionFixture.INSTANCE
SiteSubscription<T,C> subscription = SiteSubscriptionFixture.INSTANCE
.get(subscriptionSeed++);
subscription.setDataSetSize(BandwidthUtil
.convertBytesToKilobytes(bytes));
@ -242,15 +245,15 @@ public abstract class AbstractBandwidthManagerIntTest {
* the retrieval interval
* @return
*/
protected Subscription getPointDataSubscription(int retrievalInterval) {
protected Subscription<T,C> getPointDataSubscription(int retrievalInterval) {
final PointTime pointTime = new PointTime();
pointTime.setInterval(retrievalInterval);
Subscription subscription = SiteSubscriptionFixture.INSTANCE.get();
Subscription<PointTime,Coverage> subscription = SiteSubscriptionFixture.INSTANCE.get();
subscription.setTime(pointTime);
subscription.setDataSetType(DataType.POINT);
subscription.setLatencyInMinutes(retrievalInterval);
return subscription;
return (Subscription<T, C>) subscription;
}
/**

View file

@ -22,6 +22,8 @@ package com.raytheon.uf.edex.datadelivery.bandwidth;
import org.junit.Ignore;
import org.springframework.test.context.ContextConfiguration;
import com.raytheon.uf.common.datadelivery.registry.Coverage;
import com.raytheon.uf.common.datadelivery.registry.Time;
import com.raytheon.uf.common.util.SpringFiles;
/**
@ -44,6 +46,6 @@ import com.raytheon.uf.common.util.SpringFiles;
SpringFiles.BANDWIDTH_DATADELIVERY_WFO_XML,
SpringFiles.BANDWIDTH_DATADELIVERY_INTEGRATION_TEST_WFO_XML })
@Ignore
public abstract class AbstractWfoBandwidthManagerIntTest extends
AbstractBandwidthManagerIntTest {
public abstract class AbstractWfoBandwidthManagerIntTest<T extends Time, C extends Coverage> extends
AbstractBandwidthManagerIntTest<T, C> {
}

View file

@ -48,6 +48,7 @@ import org.junit.Test;
import com.raytheon.uf.common.datadelivery.registry.DataDeliveryRegistryObjectTypes;
import com.raytheon.uf.common.datadelivery.registry.GriddedDataSetMetaData;
import com.raytheon.uf.common.datadelivery.registry.GriddedTime;
import com.raytheon.uf.common.datadelivery.registry.Network;
import com.raytheon.uf.common.datadelivery.registry.OpenDapGriddedDataSetMetaData;
import com.raytheon.uf.common.datadelivery.registry.OpenDapGriddedDataSetMetaDataFixture;
@ -102,6 +103,7 @@ import com.raytheon.uf.edex.datadelivery.retrieval.RetrievalManagerNotifyEvent;
* Jun 25, 2013 2106 djohnson Set subscription latency, access bucket allocations through RetrievalPlan.
* Jul 09, 2013 2106 djohnson InMemoryBandwidthManager no longer receives updates from the EventBus.
* Jul 11, 2013 2106 djohnson Use SubscriptionPriority enum.
* Sept 25, 2013 1797 dhladky separated time from gridded time
*
* </pre>
*
@ -307,7 +309,7 @@ public class BandwidthManagerIntTest extends AbstractWfoBandwidthManagerIntTest
throws RegistryHandlerException, ParseException {
// Store the original subscription
Subscription subscription = SiteSubscriptionFixture.INSTANCE.get();
subscription.getTime().setCycleTimes(Collections.<Integer> emptyList());
((GriddedTime)subscription.getTime()).setCycleTimes(Collections.<Integer> emptyList());
subscription.setLatencyInMinutes(3);
DataDeliveryHandlers.getSubscriptionHandler().store(subscription);
@ -375,9 +377,9 @@ public class BandwidthManagerIntTest extends AbstractWfoBandwidthManagerIntTest
Subscription subscription2 = createSubscriptionThatFillsUpABucket();
// subscription2 will not be able to schedule for cycle hour 8
subscription.getTime().setCycleTimes(
((GriddedTime)subscription.getTime()).setCycleTimes(
Arrays.asList(Integer.valueOf(6), Integer.valueOf(8)));
subscription2.getTime().setCycleTimes(
((GriddedTime)subscription2.getTime()).setCycleTimes(
Arrays.asList(Integer.valueOf(3), Integer.valueOf(8)));
List<BandwidthAllocation> unscheduled = bandwidthManager
@ -422,9 +424,9 @@ public class BandwidthManagerIntTest extends AbstractWfoBandwidthManagerIntTest
subscription2.setPriority(SubscriptionPriority.HIGH);
// they conflict for cycle hour 8
subscription.getTime().setCycleTimes(
((GriddedTime)subscription.getTime()).setCycleTimes(
Arrays.asList(Integer.valueOf(6), Integer.valueOf(8)));
subscription2.getTime().setCycleTimes(
((GriddedTime)subscription2.getTime()).setCycleTimes(
Arrays.asList(Integer.valueOf(3), Integer.valueOf(8)));
List<BandwidthAllocation> unscheduled = bandwidthManager
@ -460,9 +462,9 @@ public class BandwidthManagerIntTest extends AbstractWfoBandwidthManagerIntTest
subscription2.setPriority(SubscriptionPriority.HIGH);
// they conflict for cycle hour 8
subscription.getTime().setCycleTimes(
((GriddedTime)subscription.getTime()).setCycleTimes(
Arrays.asList(Integer.valueOf(6), Integer.valueOf(8)));
subscription2.getTime().setCycleTimes(
((GriddedTime)subscription2.getTime()).setCycleTimes(
Arrays.asList(Integer.valueOf(3), Integer.valueOf(8)));
bandwidthManager.schedule(subscription);
@ -556,9 +558,9 @@ public class BandwidthManagerIntTest extends AbstractWfoBandwidthManagerIntTest
subscription2.setPriority(SubscriptionPriority.HIGH);
// they conflict for cycle hour 8
subscription.getTime().setCycleTimes(
((GriddedTime)subscription.getTime()).setCycleTimes(
Arrays.asList(Integer.valueOf(6), Integer.valueOf(8)));
subscription2.getTime().setCycleTimes(
((GriddedTime)subscription2.getTime()).setCycleTimes(
Arrays.asList(Integer.valueOf(3), Integer.valueOf(8)));
List<BandwidthAllocation> unscheduled = bandwidthManager
@ -593,9 +595,9 @@ public class BandwidthManagerIntTest extends AbstractWfoBandwidthManagerIntTest
subscription2.setPriority(SubscriptionPriority.HIGH);
// they conflict for cycle hour 8
subscription.getTime().setCycleTimes(
((GriddedTime)subscription.getTime()).setCycleTimes(
Arrays.asList(Integer.valueOf(6), Integer.valueOf(8)));
subscription2.getTime().setCycleTimes(
((GriddedTime)subscription2.getTime()).setCycleTimes(
Arrays.asList(Integer.valueOf(3), Integer.valueOf(8)));
bandwidthManager.schedule(subscription);
@ -620,7 +622,7 @@ public class BandwidthManagerIntTest extends AbstractWfoBandwidthManagerIntTest
// Subscription starts out too big
Subscription subscription = createSubscriptionThatFillsUpTwoBuckets();
subscription.getTime().setCycleTimes(Arrays.asList(Integer.valueOf(6)));
((GriddedTime)subscription.getTime()).setCycleTimes(Arrays.asList(Integer.valueOf(6)));
List<BandwidthAllocation> unscheduled = bandwidthManager
.subscriptionUpdated(subscription);
@ -657,7 +659,7 @@ public class BandwidthManagerIntTest extends AbstractWfoBandwidthManagerIntTest
throws SerializationException {
Subscription subscription = createSubscriptionThatFillsUpTenBuckets();
subscription.getTime().setCycleTimes(Arrays.asList(Integer.valueOf(0)));
((GriddedTime)subscription.getTime()).setCycleTimes(Arrays.asList(Integer.valueOf(0)));
subscription.setLatencyInMinutes(0);
int requiredLatency = bandwidthManager
@ -682,7 +684,7 @@ public class BandwidthManagerIntTest extends AbstractWfoBandwidthManagerIntTest
// Subscription starts out too big
Subscription subscription = createSubscriptionThatFillsUpABucket();
subscription.getTime().setCycleTimes(Arrays.asList(Integer.valueOf(0)));
((GriddedTime)subscription.getTime()).setCycleTimes(Arrays.asList(Integer.valueOf(0)));
subscription.setLatencyInMinutes(0);
bandwidthManager.subscriptionUpdated(subscription);
@ -721,7 +723,7 @@ public class BandwidthManagerIntTest extends AbstractWfoBandwidthManagerIntTest
throws Exception {
Subscription subscription = createSubscriptionThatFillsUpABucket();
subscription.getTime().setCycleTimes(Arrays.asList(0, 12));
((GriddedTime)subscription.getTime()).setCycleTimes(Arrays.asList(0, 12));
bandwidthManager.schedule(subscription);
@ -750,7 +752,7 @@ public class BandwidthManagerIntTest extends AbstractWfoBandwidthManagerIntTest
throws Exception {
Subscription subscription = createSubscriptionThatFillsUpABucket();
subscription.getTime().setCycleTimes(Arrays.asList(0, 12));
((GriddedTime)subscription.getTime()).setCycleTimes(Arrays.asList(0, 12));
bandwidthManager.schedule(subscription);
@ -791,7 +793,7 @@ public class BandwidthManagerIntTest extends AbstractWfoBandwidthManagerIntTest
.getDataSetSize()
/ numberOfSubscriptionsWithSameProviderDataSet);
templateSubscription.getTime().setCycleTimes(Arrays.asList(0, 12));
((GriddedTime)templateSubscription.getTime()).setCycleTimes(Arrays.asList(0, 12));
int lastKnownNumberOfBandwidthAllocations = 0;
final Subscription[] subscriptions = new Subscription[numberOfSubscriptionsWithSameProviderDataSet];
@ -857,7 +859,7 @@ public class BandwidthManagerIntTest extends AbstractWfoBandwidthManagerIntTest
throws Exception {
Subscription subscription = createSubscriptionThatFillsUpABucket();
subscription.getTime().setCycleTimes(Arrays.asList(0, 12));
((GriddedTime)subscription.getTime()).setCycleTimes(Arrays.asList(0, 12));
final Network network = subscription.getRoute();
final List<BandwidthAllocation> bandwidthAllocationsOrig = getRetrievalManagerAllocationsForNetwork(network);
@ -889,7 +891,7 @@ public class BandwidthManagerIntTest extends AbstractWfoBandwidthManagerIntTest
throws Exception {
Subscription subscription = createSubscriptionThatFillsUpTwoBuckets();
subscription.getTime().setCycleTimes(Arrays.asList(0, 12));
((GriddedTime)subscription.getTime()).setCycleTimes(Arrays.asList(0, 12));
subscription.setLatencyInMinutes(0);
final List<BandwidthAllocation> unableToSchedule = bandwidthManager
@ -922,7 +924,7 @@ public class BandwidthManagerIntTest extends AbstractWfoBandwidthManagerIntTest
throws Exception {
Subscription subscription = createSubscriptionThatFillsUpTwoBuckets();
subscription.getTime().setCycleTimes(Arrays.asList(0, 12));
((GriddedTime)subscription.getTime()).setCycleTimes(Arrays.asList(0, 12));
subscription.setLatencyInMinutes(0);
final List<BandwidthAllocation> unableToSchedule = bandwidthManager
@ -967,7 +969,7 @@ public class BandwidthManagerIntTest extends AbstractWfoBandwidthManagerIntTest
private void testSubscriptionCyclesAreAllocatedOncePerCyclePerPlanDay(
List<Integer> cycles) throws SerializationException {
Subscription subscription = SiteSubscriptionFixture.INSTANCE.get();
subscription.getTime().setCycleTimes(cycles);
((GriddedTime)subscription.getTime()).setCycleTimes(cycles);
bandwidthManager.subscriptionUpdated(subscription);
assertEquals("Incorrect number of bandwidth allocations made!",

View file

@ -48,9 +48,12 @@ import com.raytheon.uf.common.datadelivery.bandwidth.data.SubscriptionStatusSumm
import com.raytheon.uf.common.datadelivery.bandwidth.data.TimeWindowData;
import com.raytheon.uf.common.datadelivery.registry.AdhocSubscription;
import com.raytheon.uf.common.datadelivery.registry.AdhocSubscriptionFixture;
import com.raytheon.uf.common.datadelivery.registry.Coverage;
import com.raytheon.uf.common.datadelivery.registry.GriddedTime;
import com.raytheon.uf.common.datadelivery.registry.Network;
import com.raytheon.uf.common.datadelivery.registry.Subscription;
import com.raytheon.uf.common.datadelivery.registry.Subscription.SubscriptionPriority;
import com.raytheon.uf.common.datadelivery.registry.Time;
import com.raytheon.uf.common.datadelivery.registry.handlers.DataDeliveryHandlers;
import com.raytheon.uf.common.datadelivery.registry.handlers.ISubscriptionHandler;
import com.raytheon.uf.common.registry.handler.RegistryHandlerException;
@ -83,18 +86,19 @@ import com.raytheon.uf.edex.datadelivery.bandwidth.util.BandwidthUtil;
* Jun 25, 2013 2106 djohnson BandwidthBucket is a big boy class now.
* Jul 11, 2013 2106 djohnson Use SubscriptionPriority enum.
* Jul 18, 2013 1653 mpduff Added test for sub status summary.
* Sept 25, 2013 1797 dhladky separated time from gridded time
* </pre>
*
* @author djohnson
* @version 1.0
*/
public class BandwidthServiceIntTest extends AbstractWfoBandwidthManagerIntTest {
public class BandwidthServiceIntTest<T extends Time, C extends Coverage> extends AbstractWfoBandwidthManagerIntTest<T, C> {
private static final int ONE_HUNDRED = 100;
private final BandwidthService service = new WfoBandwidthService() {
private final BandwidthService<T, C> service = new WfoBandwidthService<T, C>() {
@Override
protected Object getResponseFromServer(IBandwidthRequest request)
protected Object getResponseFromServer(IBandwidthRequest<T, C> request)
throws Exception {
// Serialize and deserialize each call, this makes sure the dynamic
// serialize annotations are correct as well
@ -118,8 +122,8 @@ public class BandwidthServiceIntTest extends AbstractWfoBandwidthManagerIntTest
throws RegistryHandlerException {
// Two subscriptions that will fill up a bucket exactly
Subscription subscription = createSubscriptionThatFillsHalfABucket();
Subscription subscription2 = createSubscriptionThatFillsHalfABucket();
Subscription<T, C> subscription = createSubscriptionThatFillsHalfABucket();
Subscription<T, C> subscription2 = createSubscriptionThatFillsHalfABucket();
final ISubscriptionHandler subscriptionHandler = DataDeliveryHandlers
.getSubscriptionHandler();
@ -144,8 +148,8 @@ public class BandwidthServiceIntTest extends AbstractWfoBandwidthManagerIntTest
throws RegistryHandlerException {
// Two subscriptions that will fill up only a third of a bucket
Subscription subscription = createSubscriptionThatFillsAThirdOfABucket();
Subscription subscription2 = createSubscriptionThatFillsAThirdOfABucket();
Subscription<T, C> subscription = createSubscriptionThatFillsAThirdOfABucket();
Subscription<T, C> subscription2 = createSubscriptionThatFillsAThirdOfABucket();
ISubscriptionHandler subscriptionHandler = DataDeliveryHandlers
.getSubscriptionHandler();
@ -208,15 +212,16 @@ public class BandwidthServiceIntTest extends AbstractWfoBandwidthManagerIntTest
@Test
public void testScheduleTwoSubscriptionsThatFitReturnsEmptyList() {
// Two subscriptions, the sum of which will fill up a bucket exactly
Subscription subscription = createSubscriptionThatFillsHalfABucket();
Subscription subscription2 = createSubscriptionThatFillsHalfABucket();
Subscription<T, C> subscription = createSubscriptionThatFillsHalfABucket();
Subscription<T, C> subscription2 = createSubscriptionThatFillsHalfABucket();
// subscription2 will not be able to schedule for cycle hour 8
subscription.getTime().setCycleTimes(
((GriddedTime)subscription.getTime()).setCycleTimes(
Arrays.asList(Integer.valueOf(6), Integer.valueOf(8)));
subscription2.getTime().setCycleTimes(
((GriddedTime)subscription2.getTime()).setCycleTimes(
Arrays.asList(Integer.valueOf(6), Integer.valueOf(8)));
@SuppressWarnings("unchecked")
Set<String> unscheduledSubscriptions = service.schedule(Arrays.asList(
subscription, subscription2));
verifyNoSubscriptionsWereUnscheduled(unscheduledSubscriptions);
@ -224,17 +229,18 @@ public class BandwidthServiceIntTest extends AbstractWfoBandwidthManagerIntTest
@Test
public void testScheduleTwoSubscriptionsSecondDoesNotFitReturnsSecondsName() {
Subscription subscription = createSubscriptionThatFillsHalfABucket();
Subscription<T, C> subscription = createSubscriptionThatFillsHalfABucket();
// Requires its own full bucket, so cycle hour 3 will succeed and cycle
// hour 8 will not
Subscription subscription2 = createSubscriptionThatFillsUpABucket();
Subscription<T, C> subscription2 = createSubscriptionThatFillsUpABucket();
// subscription2 will not be able to schedule for cycle hour 8
subscription.getTime().setCycleTimes(
((GriddedTime)subscription.getTime()).setCycleTimes(
Arrays.asList(Integer.valueOf(6), Integer.valueOf(8)));
subscription2.getTime().setCycleTimes(
((GriddedTime)subscription2.getTime()).setCycleTimes(
Arrays.asList(Integer.valueOf(3), Integer.valueOf(8)));
@SuppressWarnings("unchecked")
Set<String> unscheduledSubscriptions = service.schedule(Arrays.asList(
subscription, subscription2));
verifySubscriptionWasNotAbleToBeFullyScheduled(
@ -244,13 +250,13 @@ public class BandwidthServiceIntTest extends AbstractWfoBandwidthManagerIntTest
@Test
public void testScheduleSubscriptionReturnsNamesOfUnscheduledSubscriptions() {
Subscription subscription = createSubscriptionThatFillsUpABucket();
Subscription subscription2 = createSubscriptionThatFillsUpABucket();
Subscription<T, C> subscription = createSubscriptionThatFillsUpABucket();
Subscription<T, C> subscription2 = createSubscriptionThatFillsUpABucket();
// subscription2 will not be able to schedule for cycle hour 8
subscription.getTime().setCycleTimes(
((GriddedTime)subscription.getTime()).setCycleTimes(
Arrays.asList(Integer.valueOf(6), Integer.valueOf(8)));
subscription2.getTime().setCycleTimes(
((GriddedTime)subscription2.getTime()).setCycleTimes(
Arrays.asList(Integer.valueOf(3), Integer.valueOf(8)));
Set<String> unscheduledSubscriptions = service.schedule(subscription);
@ -265,15 +271,16 @@ public class BandwidthServiceIntTest extends AbstractWfoBandwidthManagerIntTest
public void testProposeScheduleTwoSubscriptionsThatFitReturnsEmptyList() {
// Two subscriptions, the sum of which will fill up a bucket exactly
Subscription subscription = createSubscriptionThatFillsHalfABucket();
Subscription subscription2 = createSubscriptionThatFillsHalfABucket();
Subscription<T, C> subscription = createSubscriptionThatFillsHalfABucket();
Subscription<T, C> subscription2 = createSubscriptionThatFillsHalfABucket();
// subscription2 will not be able to schedule for cycle hour 8
subscription.getTime().setCycleTimes(
((GriddedTime)subscription.getTime()).setCycleTimes(
Arrays.asList(Integer.valueOf(6), Integer.valueOf(8)));
subscription2.getTime().setCycleTimes(
((GriddedTime)subscription2.getTime()).setCycleTimes(
Arrays.asList(Integer.valueOf(6), Integer.valueOf(8)));
@SuppressWarnings("unchecked")
IProposeScheduleResponse response = service.proposeSchedule(Arrays
.asList(subscription, subscription2));
Set<String> unscheduledSubscriptions = response
@ -285,14 +292,15 @@ public class BandwidthServiceIntTest extends AbstractWfoBandwidthManagerIntTest
public void testProposeScheduleTwoSubscriptionsThatFitReturnsNotSetRequiredLatency() {
// Two subscriptions, the sum of which will fill up a bucket exactly
Subscription subscription = createSubscriptionThatFillsHalfABucket();
Subscription subscription2 = createSubscriptionThatFillsHalfABucket();
Subscription<T, C> subscription = createSubscriptionThatFillsHalfABucket();
Subscription<T, C> subscription2 = createSubscriptionThatFillsHalfABucket();
subscription.getTime().setCycleTimes(
((GriddedTime)subscription.getTime()).setCycleTimes(
Arrays.asList(Integer.valueOf(6), Integer.valueOf(8)));
subscription2.getTime().setCycleTimes(
((GriddedTime)subscription2.getTime()).setCycleTimes(
Arrays.asList(Integer.valueOf(6), Integer.valueOf(8)));
@SuppressWarnings("unchecked")
IProposeScheduleResponse response = service.proposeSchedule(Arrays
.asList(subscription, subscription2));
assertEquals(
@ -305,14 +313,15 @@ public class BandwidthServiceIntTest extends AbstractWfoBandwidthManagerIntTest
public void testProposeScheduleTwoSubscriptionsThatFitReturnsNotSetRequiredDataSetSize() {
// Two subscriptions, the sum of which will fill up a bucket exactly
Subscription subscription = createSubscriptionThatFillsHalfABucket();
Subscription subscription2 = createSubscriptionThatFillsHalfABucket();
Subscription<T, C> subscription = createSubscriptionThatFillsHalfABucket();
Subscription<T, C> subscription2 = createSubscriptionThatFillsHalfABucket();
subscription.getTime().setCycleTimes(
((GriddedTime)subscription.getTime()).setCycleTimes(
Arrays.asList(Integer.valueOf(6), Integer.valueOf(8)));
subscription2.getTime().setCycleTimes(
((GriddedTime)subscription2.getTime()).setCycleTimes(
Arrays.asList(Integer.valueOf(6), Integer.valueOf(8)));
@SuppressWarnings("unchecked")
IProposeScheduleResponse response = service.proposeSchedule(Arrays
.asList(subscription, subscription2));
assertEquals(
@ -325,17 +334,18 @@ public class BandwidthServiceIntTest extends AbstractWfoBandwidthManagerIntTest
public void testProposeScheduleTwoSubscriptionsSecondDoesNotFitReturnsSecondsName() {
// Two subscriptions, the sum of which will fill up a bucket exactly
Subscription subscription = createSubscriptionThatFillsHalfABucket();
Subscription<T, C> subscription = createSubscriptionThatFillsHalfABucket();
// Requires its own full bucket, so cycle hour 3 will succeed and cycle
// hour 8 will not
Subscription subscription2 = createSubscriptionThatFillsUpABucket();
Subscription<T, C> subscription2 = createSubscriptionThatFillsUpABucket();
// subscription2 will not be able to schedule for cycle hour 8
subscription.getTime().setCycleTimes(
((GriddedTime)subscription.getTime()).setCycleTimes(
Arrays.asList(Integer.valueOf(6), Integer.valueOf(8)));
subscription2.getTime().setCycleTimes(
((GriddedTime)subscription2.getTime()).setCycleTimes(
Arrays.asList(Integer.valueOf(3), Integer.valueOf(8)));
@SuppressWarnings("unchecked")
Set<String> unscheduledSubscriptions = service.proposeSchedule(
Arrays.asList(subscription, subscription2))
.getUnscheduledSubscriptions();
@ -346,13 +356,13 @@ public class BandwidthServiceIntTest extends AbstractWfoBandwidthManagerIntTest
@Test
public void testProposeScheduleSubscriptionReturnsNamesOfUnscheduledSubscriptions() {
Subscription subscription = createSubscriptionThatFillsUpABucket();
Subscription subscription2 = createSubscriptionThatFillsUpABucket();
Subscription<T, C> subscription = createSubscriptionThatFillsUpABucket();
Subscription<T, C> subscription2 = createSubscriptionThatFillsUpABucket();
// subscription2 will not be able to schedule for cycle hour 8
subscription.getTime().setCycleTimes(
((GriddedTime)subscription.getTime()).setCycleTimes(
Arrays.asList(Integer.valueOf(6), Integer.valueOf(8)));
subscription2.getTime().setCycleTimes(
((GriddedTime)subscription2.getTime()).setCycleTimes(
Arrays.asList(Integer.valueOf(3), Integer.valueOf(8)));
Set<String> unscheduledSubscriptions = service.schedule(subscription);
@ -368,13 +378,13 @@ public class BandwidthServiceIntTest extends AbstractWfoBandwidthManagerIntTest
public void testProposeScheduleSubscriptionsSecondDoesntFitReturnsRequiredLatency() {
// Two subscriptions that will fill up a bucket exactly
Subscription subscription = createSubscriptionThatFillsUpABucket();
Subscription subscription2 = createSubscriptionThatFillsUpABucket();
Subscription<T, C> subscription = createSubscriptionThatFillsUpABucket();
Subscription<T, C> subscription2 = createSubscriptionThatFillsUpABucket();
// subscription2 will not be able to schedule for cycle hour 8
subscription.getTime().setCycleTimes(
((GriddedTime)subscription.getTime()).setCycleTimes(
Arrays.asList(Integer.valueOf(6), Integer.valueOf(8)));
subscription2.getTime().setCycleTimes(
((GriddedTime)subscription2.getTime()).setCycleTimes(
Arrays.asList(Integer.valueOf(3), Integer.valueOf(8)));
Set<String> unscheduledSubscriptions = service.schedule(subscription);
@ -390,13 +400,13 @@ public class BandwidthServiceIntTest extends AbstractWfoBandwidthManagerIntTest
@Test
public void testProposeScheduleSubscriptionsSecondDoesntFitReturnsRequiredSize() {
Subscription subscription = createSubscriptionThatFillsHalfABucket();
Subscription subscription2 = createSubscriptionThatFillsUpTenBuckets();
Subscription<T, C> subscription = createSubscriptionThatFillsHalfABucket();
Subscription<T, C> subscription2 = createSubscriptionThatFillsUpTenBuckets();
// subscription2 will not be able to schedule for cycle hour 8
subscription.getTime().setCycleTimes(
((GriddedTime)subscription.getTime()).setCycleTimes(
Arrays.asList(Integer.valueOf(6), Integer.valueOf(8)));
subscription2.getTime().setCycleTimes(
((GriddedTime)subscription2.getTime()).setCycleTimes(
Arrays.asList(Integer.valueOf(3), Integer.valueOf(8)));
Set<String> unscheduledSubscriptions = service.schedule(subscription);
@ -415,8 +425,8 @@ public class BandwidthServiceIntTest extends AbstractWfoBandwidthManagerIntTest
@Test
public void testProposeScheduleSubscriptionsSecondDoesntFitReturnsRequiredSizeForSubscriptionUpdate() {
Subscription subscription = createSubscriptionThatFillsHalfABucket();
subscription.getTime().setCycleTimes(
Subscription<T, C> subscription = createSubscriptionThatFillsHalfABucket();
((GriddedTime)subscription.getTime()).setCycleTimes(
Arrays.asList(Integer.valueOf(6), Integer.valueOf(8)));
Set<String> unscheduledSubscriptions = service.schedule(subscription);
@ -440,13 +450,13 @@ public class BandwidthServiceIntTest extends AbstractWfoBandwidthManagerIntTest
@Test
public void testDetermineRequiredSizeReturnsZeroIfUnableToFitAtAll() {
Subscription subscription = createSubscriptionThatFillsUpABucket();
Subscription subscription2 = createSubscriptionThatFillsUpABucket();
Subscription<T, C> subscription = createSubscriptionThatFillsUpABucket();
Subscription<T, C> subscription2 = createSubscriptionThatFillsUpABucket();
// subscription2 will not be able to schedule for cycle hour 8
subscription.getTime().setCycleTimes(
((GriddedTime)subscription.getTime()).setCycleTimes(
Arrays.asList(Integer.valueOf(6), Integer.valueOf(8)));
subscription2.getTime().setCycleTimes(
((GriddedTime)subscription2.getTime()).setCycleTimes(
Arrays.asList(Integer.valueOf(3), Integer.valueOf(8)));
Set<String> unscheduledSubscriptions = service.schedule(subscription);
@ -463,7 +473,7 @@ public class BandwidthServiceIntTest extends AbstractWfoBandwidthManagerIntTest
@Test
public void testReinitializeStartsNewBandwidthManager() {
BandwidthManager originalBandwidthManager = BandwidthServiceIntTest.this.bandwidthManager;
BandwidthManager<T, C> originalBandwidthManager = BandwidthServiceIntTest.this.bandwidthManager;
service.reinitialize();
@ -476,9 +486,10 @@ public class BandwidthServiceIntTest extends AbstractWfoBandwidthManagerIntTest
@Test
public void testGetEstimatedCompletionTimeReturnsLastBucketTimeForSubscription() {
AdhocSubscription subscription = AdhocSubscriptionFixture.INSTANCE
@SuppressWarnings("unchecked")
AdhocSubscription<T, C> subscription = (AdhocSubscription<T, C>) AdhocSubscriptionFixture.INSTANCE
.get();
subscription.getTime().setCycleTimes(Arrays.asList(Integer.valueOf(0)));
((GriddedTime)subscription.getTime()).setCycleTimes(Arrays.asList(Integer.valueOf(0)));
subscription.setDataSetSize(createSubscriptionThatFillsUpABucket()
.getDataSetSize());
@ -496,13 +507,13 @@ public class BandwidthServiceIntTest extends AbstractWfoBandwidthManagerIntTest
public void testGetBandwidthGraphDataReturnsCorrectNumberOfSubscriptionNames() {
// Two subscriptions that will fill up a bucket exactly
Subscription subscription = createSubscriptionThatFillsUpABucket();
Subscription subscription2 = createSubscriptionThatFillsUpABucket();
Subscription<T, C> subscription = createSubscriptionThatFillsUpABucket();
Subscription<T, C> subscription2 = createSubscriptionThatFillsUpABucket();
// subscription2 will not be able to schedule for cycle hour 8
subscription.getTime().setCycleTimes(
((GriddedTime)subscription.getTime()).setCycleTimes(
Arrays.asList(Integer.valueOf(6), Integer.valueOf(8)));
subscription2.getTime()
((GriddedTime)subscription2.getTime())
.setCycleTimes(Arrays.asList(Integer.valueOf(3)));
service.schedule(subscription);
@ -518,13 +529,13 @@ public class BandwidthServiceIntTest extends AbstractWfoBandwidthManagerIntTest
public void testGetBandwidthGraphDataReturnsCorrectBinMinutes() {
// Two subscriptions that will fill up a bucket exactly
Subscription subscription = createSubscriptionThatFillsUpABucket();
Subscription subscription2 = createSubscriptionThatFillsUpABucket();
Subscription<T, C> subscription = createSubscriptionThatFillsUpABucket();
Subscription<T, C> subscription2 = createSubscriptionThatFillsUpABucket();
// subscription2 will not be able to schedule for cycle hour 8
subscription.getTime().setCycleTimes(
((GriddedTime)subscription.getTime()).setCycleTimes(
Arrays.asList(Integer.valueOf(6), Integer.valueOf(8)));
subscription2.getTime()
((GriddedTime)subscription2.getTime())
.setCycleTimes(Arrays.asList(Integer.valueOf(3)));
service.schedule(subscription);
@ -548,7 +559,7 @@ public class BandwidthServiceIntTest extends AbstractWfoBandwidthManagerIntTest
@Test
public void testGetBandwidthGraphDataForFragmentedSubscription() {
Subscription subscription = createSubscriptionThatFillsUpTwoBuckets();
Subscription<T, C> subscription = createSubscriptionThatFillsUpTwoBuckets();
subscription.setLatencyInMinutes(6);
subscription.setPriority(SubscriptionPriority.HIGH);
@ -629,13 +640,13 @@ public class BandwidthServiceIntTest extends AbstractWfoBandwidthManagerIntTest
public void testGetBandwidthGraphDataReturnsCorrectTimeWindowsForSubscriptions() {
// Two subscriptions that will fill up a bucket exactly
Subscription subscription = createSubscriptionThatFillsUpABucket();
Subscription subscription2 = createSubscriptionThatFillsUpABucket();
Subscription<T, C> subscription = createSubscriptionThatFillsUpABucket();
Subscription<T, C> subscription2 = createSubscriptionThatFillsUpABucket();
// subscription2 will not be able to schedule for cycle hour 8
subscription.getTime().setCycleTimes(
((GriddedTime)subscription.getTime()).setCycleTimes(
Arrays.asList(Integer.valueOf(6), Integer.valueOf(8)));
subscription2.getTime()
((GriddedTime)subscription2.getTime())
.setCycleTimes(Arrays.asList(Integer.valueOf(3)));
service.schedule(subscription);
@ -662,15 +673,15 @@ public class BandwidthServiceIntTest extends AbstractWfoBandwidthManagerIntTest
public void testGetBandwidthGraphDataReturnsCorrectPrioritiesForSubscriptions() {
// Two subscriptions that will fill up a bucket exactly
Subscription subscription = createSubscriptionThatFillsUpABucket();
Subscription<T, C> subscription = createSubscriptionThatFillsUpABucket();
subscription.setPriority(SubscriptionPriority.NORMAL);
Subscription subscription2 = createSubscriptionThatFillsUpABucket();
Subscription<T, C> subscription2 = createSubscriptionThatFillsUpABucket();
subscription.setPriority(SubscriptionPriority.HIGH);
// subscription2 will not be able to schedule for cycle hour 8
subscription.getTime().setCycleTimes(
((GriddedTime)subscription.getTime()).setCycleTimes(
Arrays.asList(Integer.valueOf(6), Integer.valueOf(8)));
subscription2.getTime()
((GriddedTime)subscription2.getTime())
.setCycleTimes(Arrays.asList(Integer.valueOf(3)));
service.schedule(subscription);
@ -689,9 +700,9 @@ public class BandwidthServiceIntTest extends AbstractWfoBandwidthManagerIntTest
@Test
public void testProposeScheduleSubscriptionsReturnsStatusSummary() {
Subscription subscription = createSubscriptionThatFillsUpTwoBuckets();
Subscription<T, C> subscription = createSubscriptionThatFillsUpTwoBuckets();
subscription.getTime().setCycleTimes(
((GriddedTime)subscription.getTime()).setCycleTimes(
Arrays.asList(Integer.valueOf(6), Integer.valueOf(8)));
subscription.setLatencyInMinutes(3);
@ -719,7 +730,7 @@ public class BandwidthServiceIntTest extends AbstractWfoBandwidthManagerIntTest
@Test
public void testProposeScheduleFragmentedSubscriptionReturnsStatusSummary() {
Subscription subscription = createSubscriptionThatFillsUpTwoBuckets();
Subscription<T, C> subscription = createSubscriptionThatFillsUpTwoBuckets();
subscription.setLatencyInMinutes(6);
subscription.setPriority(SubscriptionPriority.HIGH);
@ -766,7 +777,7 @@ public class BandwidthServiceIntTest extends AbstractWfoBandwidthManagerIntTest
* @return the allocation
*/
private BandwidthAllocation createAllocationToReserveMiddleBucket(
Subscription subscription) {
Subscription<T, C> subscription) {
Calendar cal = TimeUtil.newCalendar();
cal.set(Calendar.YEAR, 1970);
cal.set(Calendar.MONTH, Calendar.JANUARY);
@ -809,7 +820,7 @@ public class BandwidthServiceIntTest extends AbstractWfoBandwidthManagerIntTest
* the subscription
*/
private static void verifySubscriptionWasNotAbleToBeFullyScheduled(
Set<String> unscheduledSubscriptions, Subscription subscription) {
Set<String> unscheduledSubscriptions, @SuppressWarnings("rawtypes") Subscription subscription) {
assertEquals(
"One and only one subscription should not have been able to fully schedule",
1, unscheduledSubscriptions.size());

View file

@ -45,6 +45,7 @@ import com.raytheon.uf.common.datadelivery.registry.Encryption;
import com.raytheon.uf.common.datadelivery.registry.Encryption.Algorithim;
import com.raytheon.uf.common.datadelivery.registry.Encryption.Padding;
import com.raytheon.uf.common.datadelivery.registry.EnvelopeUtils;
import com.raytheon.uf.common.datadelivery.registry.PointTime;
import com.raytheon.uf.common.datadelivery.registry.Projection;
import com.raytheon.uf.common.datadelivery.registry.Provider;
import com.raytheon.uf.common.datadelivery.registry.Provider.ServiceType;
@ -68,6 +69,7 @@ import com.vividsolutions.jts.geom.Coordinate;
* Jun 17, 2013 2106 djohnson Use unencrypted password getter.
* July15, 2103 2180 dhladky Updated encryption
* Aug 08, 2013 2097 dhladky updated for WFS 2.0 and HTTP POST
* Sept 30, 2013 1797 dhladky separated gridded time from time
*
* </pre>
*
@ -244,7 +246,7 @@ public class HttpProxiedValidClientCredentialsTest {
String startDateString = "2013-08-30T12:40:00.000";
String endDateString = "2013-08-30T14:15:00.000";
Time time = new Time();
PointTime time = new PointTime();
time.setFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
time.setRequestStart(startDateString);
time.setStart(startDateString);

View file

@ -31,6 +31,7 @@ import com.raytheon.uf.common.util.AbstractFixture;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Nov 7, 2012 1286 djohnson Initial creation
* Oct 2, 2013 1797 dhladky Generics
*
* </pre>
*
@ -39,7 +40,7 @@ import com.raytheon.uf.common.util.AbstractFixture;
*/
public class AdhocSubscriptionFixture extends
BaseSiteSubscriptionFixture<AdhocSubscription> {
BaseSiteSubscriptionFixture<AdhocSubscription<Time, Coverage>> {
public static final AdhocSubscriptionFixture INSTANCE = new AdhocSubscriptionFixture();
@ -53,8 +54,8 @@ public class AdhocSubscriptionFixture extends
* {@inheritDoc}
*/
@Override
protected AdhocSubscription getSubscription() {
return new AdhocSubscription();
protected AdhocSubscription<Time, Coverage> getSubscription() {
return new AdhocSubscription<Time, Coverage>();
}
}

View file

@ -33,6 +33,7 @@ import com.raytheon.uf.common.registry.ebxml.RegistryUtil;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* May 29, 2013 1650 djohnson Initial creation
* Oct 1, 2013 1797 dhladky Updated to work with generic changes
*
* </pre>
*
@ -40,7 +41,7 @@ import com.raytheon.uf.common.registry.ebxml.RegistryUtil;
* @version 1.0
*/
public abstract class BaseSharedSubscriptionFixture<T extends SharedSubscription>
public abstract class BaseSharedSubscriptionFixture<T extends SharedSubscription<Time, Coverage>>
extends BaseSubscriptionFixture<T> {
/**

View file

@ -33,6 +33,7 @@ import com.raytheon.uf.common.registry.ebxml.RegistryUtil;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Mar 29, 2013 1841 djohnson Initial creation
* Oct 2, 2013 1797 dhladky Updated to work with generics
*
* </pre>
*
@ -40,15 +41,15 @@ import com.raytheon.uf.common.registry.ebxml.RegistryUtil;
* @version 1.0
*/
public abstract class BaseSiteSubscriptionFixture<T extends SiteSubscription>
extends BaseSubscriptionFixture<T> {
public abstract class BaseSiteSubscriptionFixture<M extends SiteSubscription>
extends BaseSubscriptionFixture<M> {
/**
* {@inheritDoc}
*/
@Override
public T getInstance(long seedValue, Random random) {
T subscription = super.getInstance(seedValue, random);
public M getInstance(long seedValue, Random random) {
M subscription = super.getInstance(seedValue, random);
subscription.setOwner("owner" + random.nextInt());
subscription.setId(RegistryUtil.getRegistryObjectKey(subscription));
@ -60,5 +61,5 @@ public abstract class BaseSiteSubscriptionFixture<T extends SiteSubscription>
* @return
*/
@Override
protected abstract T getSubscription();
protected abstract M getSubscription();
}

View file

@ -42,6 +42,7 @@ import com.raytheon.uf.common.util.AbstractFixture;
* Mar 28, 2013 1841 djohnson Subscription is now UserSubscription.
* Apr 08, 2013 1826 djohnson Remove delivery options.
* May 15, 2013 1040 mpduff Office Ids are now a list.
* Oct 2 2013 1797 dhladky subscription and time generics
*
* </pre>
*
@ -49,15 +50,15 @@ import com.raytheon.uf.common.util.AbstractFixture;
* @version 1.0
*/
public abstract class BaseSubscriptionFixture<T extends Subscription> extends
AbstractFixture<T> {
public abstract class BaseSubscriptionFixture<M extends Subscription> extends
AbstractFixture<M> {
/**
* {@inheritDoc}
*/
@Override
public T getInstance(long seedValue, Random random) {
T subscription = getSubscription();
public M getInstance(long seedValue, Random random) {
M subscription = getSubscription();
subscription.setActive(random.nextBoolean());
subscription.setActivePeriodStart(TimeUtil.newDate());
subscription.setActivePeriodEnd(new Date(subscription
@ -84,7 +85,7 @@ public abstract class BaseSubscriptionFixture<T extends Subscription> extends
subscription.setSubscriptionStart(subscription.getActivePeriodStart());
subscription.setSubscriptionEnd(null);
subscription.setSubscriptionId("subscriptionId" + random.nextInt());
subscription.setTime(TimeFixture.INSTANCE.get(seedValue));
subscription.setTime(GriddedTimeFixture.INSTANCE.get(seedValue));
subscription.setUrl("http://someurl/" + random.nextInt());
subscription.setId(RegistryUtil.getRegistryObjectKey(subscription));
@ -95,5 +96,5 @@ public abstract class BaseSubscriptionFixture<T extends Subscription> extends
/**
* @return
*/
protected abstract T getSubscription();
protected abstract M getSubscription();
}

View file

@ -40,6 +40,7 @@ import com.raytheon.uf.common.util.AbstractFixture;
* Sep 28, 2012 1187 djohnson Initial creation
* Oct 16, 2012 0726 djohnson Use {@link TimeUtil}.
* Feb 07, 2013 1543 djohnson Set request start/end dates.
* Sept 30, 2013 1797 dhladky Generics
*
* </pre>
*
@ -47,14 +48,14 @@ import com.raytheon.uf.common.util.AbstractFixture;
* @version 1.0
*/
public class TimeFixture extends AbstractFixture<Time> {
public class GriddedTimeFixture extends AbstractFixture<GriddedTime> {
public static final TimeFixture INSTANCE = new TimeFixture();
public static final GriddedTimeFixture INSTANCE = new GriddedTimeFixture();
/**
* Disabled.
*/
private TimeFixture() {
private GriddedTimeFixture() {
}
@ -62,8 +63,8 @@ public class TimeFixture extends AbstractFixture<Time> {
* {@inheritDoc}
*/
@Override
public Time getInstance(long seedValue, Random random) {
Time time = new Time();
public GriddedTime getInstance(long seedValue, Random random) {
GriddedTime time = new GriddedTime();
time.setFormat("HHddMMMyyyy");
time.setCycleTimes(Arrays.<Integer> asList(getCycleForSeed(seedValue)));
time.setStep((double) (seedValue + 1));

View file

@ -40,6 +40,7 @@ import com.raytheon.uf.common.util.CollectionUtil;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Dec 07, 2012 1104 djohnson Initial creation
* Sept 30, 2013 1797 dhladky Generics
*
* </pre>
*
@ -67,7 +68,7 @@ public class OpenDapGriddedDataSetFixture extends
obj.setCollectionName("collectionName-" + seedValue);
// TODO: CoverageFixture
// obj.setCoverage(CoverageFixture.INSTANCE.get(seedValue));
obj.setCycles(new TreeSet<Integer>(Arrays.asList(TimeFixture.getCycleForSeed(seedValue))));
obj.setCycles(new TreeSet<Integer>(Arrays.asList(GriddedTimeFixture.getCycleForSeed(seedValue))));
Map<Integer, String> cyclesToUrls = new HashMap<Integer, String>();
for (Integer cycle : obj.getCycles()) {
cyclesToUrls.put(cycle, "http://someurl");
@ -77,7 +78,7 @@ public class OpenDapGriddedDataSetFixture extends
obj.setDataSetName("dataSetName" + seedValue);
obj.setDataSetType(DataType.GRID);
obj.setForecastHours(CollectionUtil.asSet(0));
obj.setTime(TimeFixture.INSTANCE.get(seedValue));
obj.setTime(GriddedTimeFixture.INSTANCE.get(seedValue));
// TODO: ParameterFixture
obj.setParameters(Collections.<String, Parameter> emptyMap());
obj.setProviderName(ProviderFixture.INSTANCE.get(seedValue).getName());

View file

@ -37,6 +37,7 @@ import com.raytheon.uf.common.util.AbstractFixture;
* ------------ ---------- ----------- --------------------------
* Sep 05, 2012 1102 djohnson Initial creation
* Oct 16, 2012 0726 djohnson Always use OpenDAP service type, use TimeFixture.
* Oct 2, 2013 1797 dhladky Some generics
*
* </pre>
*
@ -60,12 +61,12 @@ public class OpenDapGriddedDataSetMetaDataFixture extends
*/
@Override
public OpenDapGriddedDataSetMetaData getInstance(long seedValue, Random random) {
final Time time = TimeFixture.INSTANCE.get(seedValue);
final GriddedTime time = GriddedTimeFixture.INSTANCE.get(seedValue);
final OpenDapGriddedDataSet dataSet = OpenDapGriddedDataSetFixture.INSTANCE
.get(seedValue);
OpenDapGriddedDataSetMetaData obj = new OpenDapGriddedDataSetMetaData();
obj.setCycle(TimeFixture.getCycleForSeed(seedValue));
obj.setCycle(GriddedTimeFixture.getCycleForSeed(seedValue));
obj.setDataSetDescription("description" + seedValue);
obj.setDataSetName(dataSet.getDataSetName());
try {

View file

@ -32,6 +32,7 @@ import java.util.Random;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* May 29, 2013 1650 djohnson Initial creation
* oct 2, 2013 1797 dhladky Updated to work with generics
*
* </pre>
*
@ -40,7 +41,7 @@ import java.util.Random;
*/
public class PendingSharedSubscriptionFixture extends
BaseSharedSubscriptionFixture<PendingSharedSubscription> {
BaseSharedSubscriptionFixture<PendingSharedSubscription<Time, Coverage>> {
public static final PendingSharedSubscriptionFixture INSTANCE = new PendingSharedSubscriptionFixture();
@ -54,8 +55,8 @@ public class PendingSharedSubscriptionFixture extends
* {@inheritDoc}
*/
@Override
public PendingSharedSubscription getInstance(long seedValue, Random random) {
PendingSharedSubscription sub = super.getInstance(seedValue, random);
public PendingSharedSubscription<Time, Coverage> getInstance(long seedValue, Random random) {
PendingSharedSubscription<Time, Coverage> sub = super.getInstance(seedValue, random);
sub.setChangeReqId("change" + seedValue);
return sub;
@ -65,8 +66,8 @@ public class PendingSharedSubscriptionFixture extends
* {@inheritDoc}
*/
@Override
protected PendingSharedSubscription getSubscription() {
return new PendingSharedSubscription();
protected PendingSharedSubscription<Time, Coverage> getSubscription() {
return new PendingSharedSubscription<Time, Coverage>();
}
}

View file

@ -34,6 +34,7 @@ import com.raytheon.uf.common.util.AbstractFixture;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Sep 28, 2012 1187 djohnson Initial creation
* Oct 2, 2013 1797 dhladky Generics
*
* </pre>
*
@ -42,7 +43,7 @@ import com.raytheon.uf.common.util.AbstractFixture;
*/
public class PendingSiteSubscriptionFixture extends
BaseSiteSubscriptionFixture<PendingSiteSubscription> {
BaseSiteSubscriptionFixture<PendingSiteSubscription<Time, Coverage>> {
public static final PendingSiteSubscriptionFixture INSTANCE = new PendingSiteSubscriptionFixture();
@ -56,8 +57,8 @@ public class PendingSiteSubscriptionFixture extends
* {@inheritDoc}
*/
@Override
public PendingSiteSubscription getInstance(long seedValue, Random random) {
PendingSiteSubscription sub = super.getInstance(seedValue, random);
public PendingSiteSubscription<Time, Coverage> getInstance(long seedValue, Random random) {
PendingSiteSubscription<Time, Coverage> sub = super.getInstance(seedValue, random);
sub.setChangeReqId("change" + seedValue);
return sub;
@ -67,8 +68,8 @@ public class PendingSiteSubscriptionFixture extends
* {@inheritDoc}
*/
@Override
protected PendingSiteSubscription getSubscription() {
return new PendingSiteSubscription();
protected PendingSiteSubscription<Time, Coverage> getSubscription() {
return new PendingSiteSubscription<Time, Coverage>();
}
}

View file

@ -36,6 +36,7 @@ import com.raytheon.uf.common.util.AbstractFixture;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Jun 05, 2013 2038 djohnson Initial creation
* Oct 3, 2013 1797 dhladky generics
*
* </pre>
*
@ -67,7 +68,7 @@ public class PointDataSetMetaDataFixture extends
obj.setDataSetDescription("description" + seedValue);
obj.setDataSetName(dataSet.getDataSetName());
try {
obj.setDate(new ImmutableDate(TimeFixture.INSTANCE.get(seedValue)
obj.setDate(new ImmutableDate(GriddedTimeFixture.INSTANCE.get(seedValue)
.getStartDate()));
} catch (ParseException e) {
throw new RuntimeException(e);

View file

@ -38,7 +38,7 @@ package com.raytheon.uf.common.datadelivery.registry;
*/
public class SharedSubscriptionFixture extends
BaseSharedSubscriptionFixture<SharedSubscription> {
BaseSharedSubscriptionFixture<SharedSubscription<Time, Coverage>> {
public static final SharedSubscriptionFixture INSTANCE = new SharedSubscriptionFixture();
@ -53,8 +53,8 @@ public class SharedSubscriptionFixture extends
* {@inheritDoc}
*/
@Override
protected SharedSubscription getSubscription() {
return new SharedSubscription();
protected SharedSubscription<Time, Coverage> getSubscription() {
return new SharedSubscription<Time, Coverage>();
}
}

View file

@ -33,6 +33,7 @@ import com.raytheon.uf.common.util.AbstractFixture;
* Aug 27, 2012 0743 djohnson Initial creation
* Sep 28, 2012 1187 djohnson Move reusable code to {@link BaseSubscriptionFixture}.
* Mar 28, 2013 1841 djohnson Subscription is now UserSubscription.
* Oct 2, 2013 1797 dhladky Generics
*
* </pre>
*
@ -55,7 +56,7 @@ public class SiteSubscriptionFixture extends
* {@inheritDoc}
*/
@Override
protected SiteSubscription getSubscription() {
return new SiteSubscription();
protected SiteSubscription<Time, Coverage> getSubscription() {
return new SiteSubscription<Time, Coverage>();
}
}

View file

@ -30,6 +30,8 @@ import org.junit.Before;
import org.junit.Test;
import org.opengis.referencing.operation.TransformException;
import com.raytheon.uf.common.datadelivery.registry.GriddedCoverage;
import com.raytheon.uf.common.datadelivery.registry.GriddedTime;
import com.raytheon.uf.common.datadelivery.registry.Subscription;
import com.raytheon.uf.common.datadelivery.registry.SiteSubscriptionFixture;
import com.raytheon.uf.common.localization.PathManagerFactoryTest;
@ -45,6 +47,7 @@ import com.raytheon.uf.common.localization.exception.LocalizationException;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* May 07, 2013 2000 djohnson Initial creation
* Oct 2, 2013 1797 dhladky Some generics
*
* </pre>
*
@ -60,14 +63,14 @@ public class GridSubscriptionOverlapServiceTest {
private static final SubscriptionOverlapConfig ALL_MUST_EXCEED_65_PERCENT = new GridSubscriptionOverlapConfig(
65, 65, 65, 65, MATCH_ALL);
private final ISubscriptionDuplicateChecker duplicateChecker = mock(ISubscriptionDuplicateChecker.class);
private final ISubscriptionDuplicateChecker<GriddedTime, GriddedCoverage> duplicateChecker = mock(ISubscriptionDuplicateChecker.class);
private final SubscriptionOverlapService service = new SubscriptionOverlapService(
private final SubscriptionOverlapService<GriddedTime, GriddedCoverage> service = new SubscriptionOverlapService<GriddedTime, GriddedCoverage>(
duplicateChecker);
private final Subscription sub1 = SiteSubscriptionFixture.INSTANCE.get(1);
private final Subscription<GriddedTime, GriddedCoverage> sub1 = SiteSubscriptionFixture.INSTANCE.get(1);
private final Subscription sub2 = SiteSubscriptionFixture.INSTANCE.get(2);
private final Subscription<GriddedTime, GriddedCoverage> sub2 = SiteSubscriptionFixture.INSTANCE.get(2);
@Before
public void setUp() {

View file

@ -38,6 +38,7 @@ import org.junit.Test;
* ------------ ---------- ----------- --------------------------
* May 14, 2013 2000 djohnson Initial creation
* Sept 24, 2012 2386 dhladky Made point specific
* Sept 25, 2013 1797 dhladky fixed test
*
*
* </pre>
@ -57,8 +58,6 @@ public class PointSubscriptionOverlapMatchStrategyTest {
45, 45), is(true));
assertThat(MATCH_ANY.isOverlapping(MUST_EXCEED_FIFTY_PERCENT, 45, 55,
45, 45), is(true));
assertThat(MATCH_ANY.isOverlapping(MUST_EXCEED_FIFTY_PERCENT, 45, 45,
55, 45), is(true));
assertThat(MATCH_ANY.isOverlapping(MUST_EXCEED_FIFTY_PERCENT, 45, 45,
45, 55), is(true));
}
@ -118,8 +117,6 @@ public class PointSubscriptionOverlapMatchStrategyTest {
@Test
public void atLeastHalfReturnsFalseIfLessThanHalfExceedMaxAllowed() {
assertThat(AT_LEAST_HALF.isOverlapping(MUST_EXCEED_FIFTY_PERCENT, 45,
45, 45, 55), is(false));
assertThat(AT_LEAST_HALF.isOverlapping(MUST_EXCEED_FIFTY_PERCENT, 45,
45, 55, 45), is(false));
assertThat(AT_LEAST_HALF.isOverlapping(MUST_EXCEED_FIFTY_PERCENT, 45,

View file

@ -30,8 +30,8 @@ import org.junit.Before;
import org.junit.Test;
import org.opengis.referencing.operation.TransformException;
import com.raytheon.uf.common.datadelivery.registry.Subscription;
import com.raytheon.uf.common.datadelivery.registry.SiteSubscriptionFixture;
import com.raytheon.uf.common.datadelivery.registry.Subscription;
import com.raytheon.uf.common.localization.PathManagerFactoryTest;
import com.raytheon.uf.common.localization.exception.LocalizationException;
@ -46,6 +46,7 @@ import com.raytheon.uf.common.localization.exception.LocalizationException;
* ------------ ---------- ----------- --------------------------
* May 07, 2013 2000 djohnson Initial creation
* Sept, 24 2013 2386 dhladky Made point specific
* Sept 25, 2013 1797 dhladky fixed tests
*
* </pre>
*
@ -92,32 +93,16 @@ public class PointSubscriptionOverlapServiceTest {
}
@Test
public void moreForecastHoursInCommonThanAllowedOverlaps() {
when(duplicateChecker.getForecastHourDuplicationPercent(sub1, sub2))
public void moreTimeInCommonThanAllowedOverlaps() {
when(duplicateChecker.getTimeDuplicationPercent(sub1, sub2))
.thenReturn(66);
assertThat(service.isOverlapping(sub1, sub2).isOverlapping(), is(true));
}
@Test
public void lessForecastHoursInCommonThanAllowedDoesNotOverlap() {
when(duplicateChecker.getForecastHourDuplicationPercent(sub1, sub2))
.thenReturn(64);
assertThat(service.isOverlapping(sub1, sub2).isOverlapping(), is(false));
}
@Test
public void moreCyclesInCommonThanAllowedOverlaps() {
when(duplicateChecker.getCycleDuplicationPercent(sub1, sub2))
.thenReturn(66);
assertThat(service.isOverlapping(sub1, sub2).isOverlapping(), is(true));
}
@Test
public void lessCyclesInCommonThanAllowedDoesNotOverlap() {
when(duplicateChecker.getCycleDuplicationPercent(sub1, sub2))
public void lessTimeInCommonThanAllowedDoesNotOverlap() {
when(duplicateChecker.getTimeDuplicationPercent(sub1, sub2))
.thenReturn(64);
assertThat(service.isOverlapping(sub1, sub2).isOverlapping(), is(false));
@ -168,9 +153,7 @@ public class PointSubscriptionOverlapServiceTest {
throws LocalizationException, TransformException {
service.writeConfig(ANY_MUST_EXCEED_65_PERCENT);
when(duplicateChecker.getCycleDuplicationPercent(sub1, sub2))
.thenReturn(66);
when(duplicateChecker.getForecastHourDuplicationPercent(sub1, sub2))
when(duplicateChecker.getTimeDuplicationPercent(sub1, sub2))
.thenReturn(66);
when(duplicateChecker.getParameterDuplicationPercent(sub1, sub2))
.thenReturn(66);
@ -185,9 +168,7 @@ public class PointSubscriptionOverlapServiceTest {
throws LocalizationException, TransformException {
service.writeConfig(ALL_MUST_EXCEED_65_PERCENT);
when(duplicateChecker.getCycleDuplicationPercent(sub1, sub2))
.thenReturn(66);
when(duplicateChecker.getForecastHourDuplicationPercent(sub1, sub2))
when(duplicateChecker.getTimeDuplicationPercent(sub1, sub2))
.thenReturn(66);
when(duplicateChecker.getParameterDuplicationPercent(sub1, sub2))
.thenReturn(66);
@ -200,9 +181,7 @@ public class PointSubscriptionOverlapServiceTest {
@Test
public void whenAllComparisonsReturnOneHundredPercentReturnsDuplicate()
throws LocalizationException, TransformException {
when(duplicateChecker.getCycleDuplicationPercent(sub1, sub2))
.thenReturn(100);
when(duplicateChecker.getForecastHourDuplicationPercent(sub1, sub2))
when(duplicateChecker.getTimeDuplicationPercent(sub1, sub2))
.thenReturn(100);
when(duplicateChecker.getParameterDuplicationPercent(sub1, sub2))
.thenReturn(100);
@ -215,9 +194,7 @@ public class PointSubscriptionOverlapServiceTest {
@Test
public void whenAllComparisonsDontReturnOneHundredPercentReturnsNotDuplicate()
throws LocalizationException, TransformException {
when(duplicateChecker.getCycleDuplicationPercent(sub1, sub2))
.thenReturn(100);
when(duplicateChecker.getForecastHourDuplicationPercent(sub1, sub2))
when(duplicateChecker.getTimeDuplicationPercent(sub1, sub2))
.thenReturn(100);
when(duplicateChecker.getParameterDuplicationPercent(sub1, sub2))
.thenReturn(100);

View file

@ -31,10 +31,11 @@ import org.junit.Test;
import org.opengis.referencing.operation.TransformException;
import com.raytheon.uf.common.datadelivery.registry.GriddedCoverage;
import com.raytheon.uf.common.datadelivery.registry.GriddedTime;
import com.raytheon.uf.common.datadelivery.registry.Parameter;
import com.raytheon.uf.common.datadelivery.registry.ParameterFixture;
import com.raytheon.uf.common.datadelivery.registry.SiteSubscriptionFixture;
import com.raytheon.uf.common.datadelivery.registry.SiteSubscription;
import com.raytheon.uf.common.datadelivery.registry.SiteSubscriptionFixture;
import com.raytheon.uf.common.geospatial.MapUtil;
import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.Envelope;
@ -49,6 +50,7 @@ import com.vividsolutions.jts.geom.Envelope;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* May 02, 2013 2000 djohnson Initial creation
* Sept 25, 2013 1979 dhladky separated time from gridded time
*
* </pre>
*
@ -57,18 +59,18 @@ import com.vividsolutions.jts.geom.Envelope;
*/
public class SubscriptionDuplicateCheckerTest {
private static final ISubscriptionDuplicateChecker dupeChecker = new SubscriptionDuplicateChecker();
private static final ISubscriptionDuplicateChecker<GriddedTime, GriddedCoverage> dupeChecker = new SubscriptionDuplicateChecker<GriddedTime, GriddedCoverage>();
@Test
public void returnsPercentOfParametersThatAreTheSame() {
final SiteSubscription sub1 = SiteSubscriptionFixture.INSTANCE.get(1);
final SiteSubscription sub2 = SiteSubscriptionFixture.INSTANCE.get(2);
final SiteSubscription<GriddedTime, GriddedCoverage> sub1 = SiteSubscriptionFixture.INSTANCE.get(1);
final SiteSubscription<GriddedTime, GriddedCoverage> sub2 = SiteSubscriptionFixture.INSTANCE.get(2);
sub1.getParameter().clear();
sub1.addParameter(ParameterFixture.INSTANCE.get(1));
sub2.getParameter().clear();
sub2.addParameter(sub1.getParameter().iterator().next());
sub2.addParameter((Parameter)sub1.getParameter().iterator().next());
sub2.addParameter(ParameterFixture.INSTANCE.get(2));
assertThat(dupeChecker.getParameterDuplicationPercent(sub1, sub2),
@ -77,6 +79,7 @@ public class SubscriptionDuplicateCheckerTest {
is(100));
}
@SuppressWarnings("unchecked")
@Test
public void returnsZeroPercentOfParametersForNullsOrEmpties() {
final SiteSubscription sub1 = SiteSubscriptionFixture.INSTANCE.get(1);
@ -105,31 +108,31 @@ public class SubscriptionDuplicateCheckerTest {
final SiteSubscription sub2 = SiteSubscriptionFixture.INSTANCE.get(2);
final List<Integer> sub1SelectedTimes = Arrays.asList(0, 1);
sub1.getTime().setSelectedTimeIndices(sub1SelectedTimes);
((GriddedTime)sub1.getTime()).setSelectedTimeIndices(sub1SelectedTimes);
final List<Integer> sub2SelectedTimes = Arrays.asList(0, 3, 4);
sub2.getTime().setSelectedTimeIndices(sub2SelectedTimes);
((GriddedTime)sub2.getTime()).setSelectedTimeIndices(sub2SelectedTimes);
assertThat(dupeChecker.getForecastHourDuplicationPercent(sub1, sub2),
assertThat(dupeChecker.getTimeDuplicationPercent(sub1, sub2),
is(33));
assertThat(dupeChecker.getForecastHourDuplicationPercent(sub2, sub1),
assertThat(dupeChecker.getTimeDuplicationPercent(sub2, sub1),
is(50));
}
@Test
public void returnsZeroPercentOfForecastHoursForNullsOrEmpties() {
final SiteSubscription sub1 = SiteSubscriptionFixture.INSTANCE.get(1);
final SiteSubscription sub2 = SiteSubscriptionFixture.INSTANCE.get(2);
final SiteSubscription<GriddedTime, GriddedCoverage> sub1 = SiteSubscriptionFixture.INSTANCE.get(1);
final SiteSubscription<GriddedTime, GriddedCoverage> sub2 = SiteSubscriptionFixture.INSTANCE.get(2);
sub1.getTime().setSelectedTimeIndices(null);
((GriddedTime)sub1.getTime()).setSelectedTimeIndices(null);
final List<Integer> sub2SelectedTimes = Arrays.asList(0, 3, 4);
sub2.getTime().setSelectedTimeIndices(sub2SelectedTimes);
((GriddedTime)sub2.getTime()).setSelectedTimeIndices(sub2SelectedTimes);
assertThat(dupeChecker.getForecastHourDuplicationPercent(sub1, sub2),
is(0));
assertThat(dupeChecker.getForecastHourDuplicationPercent(sub2, sub1),
is(0));
sub1.getTime()
((GriddedTime)sub1.getTime())
.setSelectedTimeIndices(Collections.<Integer> emptyList());
assertThat(dupeChecker.getForecastHourDuplicationPercent(sub1, sub2),
is(0));
@ -139,13 +142,13 @@ public class SubscriptionDuplicateCheckerTest {
@Test
public void returnsPercentOfCyclesThatAreTheSame() {
final SiteSubscription sub1 = SiteSubscriptionFixture.INSTANCE.get(1);
final SiteSubscription sub2 = SiteSubscriptionFixture.INSTANCE.get(2);
final SiteSubscription<GriddedTime, GriddedCoverage> sub1 = SiteSubscriptionFixture.INSTANCE.get(1);
final SiteSubscription<GriddedTime, GriddedCoverage> sub2 = SiteSubscriptionFixture.INSTANCE.get(2);
final List<Integer> sub1CycleTimes = Arrays.asList(0, 6);
sub1.getTime().setCycleTimes(sub1CycleTimes);
((GriddedTime)sub1.getTime()).setCycleTimes(sub1CycleTimes);
final List<Integer> sub2CycleTimes = Arrays.asList(0, 12, 18);
sub2.getTime().setCycleTimes(sub2CycleTimes);
((GriddedTime)sub2.getTime()).setCycleTimes(sub2CycleTimes);
assertThat(dupeChecker.getCycleDuplicationPercent(sub1, sub2),
is(33));
@ -155,17 +158,17 @@ public class SubscriptionDuplicateCheckerTest {
@Test
public void returnsZeroPercentOfCyclesForNullsOrEmpties() {
final SiteSubscription sub1 = SiteSubscriptionFixture.INSTANCE.get(1);
final SiteSubscription sub2 = SiteSubscriptionFixture.INSTANCE.get(2);
final SiteSubscription<GriddedTime, GriddedCoverage> sub1 = SiteSubscriptionFixture.INSTANCE.get(1);
final SiteSubscription<GriddedTime, GriddedCoverage> sub2 = SiteSubscriptionFixture.INSTANCE.get(2);
sub1.getTime().setCycleTimes(null);
((GriddedTime)sub1.getTime()).setCycleTimes(null);
final List<Integer> cycleTimes = Arrays.asList(0, 3, 4);
sub2.getTime().setCycleTimes(cycleTimes);
((GriddedTime)sub2.getTime()).setCycleTimes(cycleTimes);
assertThat(dupeChecker.getCycleDuplicationPercent(sub1, sub2), is(0));
assertThat(dupeChecker.getCycleDuplicationPercent(sub2, sub1), is(0));
sub1.getTime().setCycleTimes(Collections.<Integer> emptyList());
((GriddedTime)sub1.getTime()).setCycleTimes(Collections.<Integer> emptyList());
assertThat(dupeChecker.getCycleDuplicationPercent(sub1, sub2), is(0));
assertThat(dupeChecker.getCycleDuplicationPercent(sub2, sub1), is(0));
}
@ -173,8 +176,8 @@ public class SubscriptionDuplicateCheckerTest {
@Test
public void returnsPercentOfSpatialThatIsTheSame()
throws TransformException {
final SiteSubscription sub1 = SiteSubscriptionFixture.INSTANCE.get(1);
final SiteSubscription sub2 = SiteSubscriptionFixture.INSTANCE.get(2);
final SiteSubscription<GriddedTime, GriddedCoverage> sub1 = SiteSubscriptionFixture.INSTANCE.get(1);
final SiteSubscription<GriddedTime, GriddedCoverage> sub2 = SiteSubscriptionFixture.INSTANCE.get(2);
ReferencedEnvelope envelope1 = new ReferencedEnvelope(new Envelope(
new Coordinate(-5, 0), new Coordinate(0, 5)),
@ -198,8 +201,8 @@ public class SubscriptionDuplicateCheckerTest {
@Test
public void returnsZeroPercentOfSpatialWhenNoOverlap()
throws TransformException {
final SiteSubscription sub1 = SiteSubscriptionFixture.INSTANCE.get(1);
final SiteSubscription sub2 = SiteSubscriptionFixture.INSTANCE.get(2);
final SiteSubscription<GriddedTime, GriddedCoverage> sub1 = SiteSubscriptionFixture.INSTANCE.get(1);
final SiteSubscription<GriddedTime, GriddedCoverage> sub2 = SiteSubscriptionFixture.INSTANCE.get(2);
ReferencedEnvelope envelope1 = new ReferencedEnvelope(new Envelope(
new Coordinate(-5, 0), new Coordinate(0, 5)),
@ -217,8 +220,8 @@ public class SubscriptionDuplicateCheckerTest {
@Test
public void returnsZeroPercentOfSpatialForNulls() throws TransformException {
final SiteSubscription sub1 = SiteSubscriptionFixture.INSTANCE.get(1);
final SiteSubscription sub2 = SiteSubscriptionFixture.INSTANCE.get(2);
final SiteSubscription<GriddedTime, GriddedCoverage> sub1 = SiteSubscriptionFixture.INSTANCE.get(1);
final SiteSubscription<GriddedTime, GriddedCoverage> sub2 = SiteSubscriptionFixture.INSTANCE.get(2);
sub1.setCoverage(null);

View file

@ -21,6 +21,8 @@ package com.raytheon.uf.common.util;
import java.util.Random;
import com.raytheon.uf.common.datadelivery.registry.DataType;
/**
* A fixture class creates a domain object based on a seed value. Provided the
* same seed value, two instances retrieved from the fixture will be
@ -33,6 +35,7 @@ import java.util.Random;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Aug 27, 2012 0743 djohnson Initial creation
* Sept 25, 2013 1797 dhladky Separated Time from GriddedTime
*
* </pre>
*

View file

@ -40,11 +40,14 @@ import org.junit.Ignore;
import org.junit.Test;
import com.google.common.collect.Lists;
import com.raytheon.uf.common.datadelivery.registry.Coverage;
import com.raytheon.uf.common.datadelivery.registry.DataSetMetaData;
import com.raytheon.uf.common.datadelivery.registry.Network;
import com.raytheon.uf.common.datadelivery.registry.OpenDapGriddedDataSetMetaData;
import com.raytheon.uf.common.datadelivery.registry.OpenDapGriddedDataSetMetaDataFixture;
import com.raytheon.uf.common.datadelivery.registry.SiteSubscriptionFixture;
import com.raytheon.uf.common.datadelivery.registry.Subscription;
import com.raytheon.uf.common.datadelivery.registry.Time;
import com.raytheon.uf.common.serialization.SerializationException;
import com.raytheon.uf.common.time.util.ImmutableDate;
import com.raytheon.uf.common.time.util.TimeUtil;
@ -79,9 +82,9 @@ import com.raytheon.uf.edex.datadelivery.bandwidth.util.BandwidthUtil;
* @version 1.0
*/
@Ignore
public abstract class AbstractBandwidthDaoTest<T extends IBandwidthDao> {
public abstract class AbstractBandwidthDaoTest<T extends Time, C extends Coverage, M extends IBandwidthDao<T, C>> {
private T dao;
private M dao;
@Before
public void setUp() {
@ -94,7 +97,7 @@ public abstract class AbstractBandwidthDaoTest<T extends IBandwidthDao> {
*
* @return the dao
*/
protected abstract T getDao();
protected abstract M getDao();
@Test
public void testGetBandwidthAllocationForNetworkReturnsThoseWithSameNetwork() {
@ -177,6 +180,7 @@ public abstract class AbstractBandwidthDaoTest<T extends IBandwidthDao> {
assertNotSame(ret2, result);
}
@SuppressWarnings("unchecked")
@Test
public void testGetDataSetMetaDataDaoReturnsThoseWithSameDataSet() {
OpenDapGriddedDataSetMetaData metaData = OpenDapGriddedDataSetMetaDataFixture.INSTANCE
@ -184,8 +188,8 @@ public abstract class AbstractBandwidthDaoTest<T extends IBandwidthDao> {
OpenDapGriddedDataSetMetaData metaData2 = OpenDapGriddedDataSetMetaDataFixture.INSTANCE
.get(2);
BandwidthDataSetUpdate metaDataDao = dao
.newBandwidthDataSetUpdate(metaData);
dao.newBandwidthDataSetUpdate(metaData2);
.newBandwidthDataSetUpdate((DataSetMetaData<T>) metaData);
dao.newBandwidthDataSetUpdate((DataSetMetaData<T>) metaData2);
final List<BandwidthDataSetUpdate> results = dao
.getBandwidthDataSetUpdate(metaData.getProviderName(),
@ -196,6 +200,7 @@ public abstract class AbstractBandwidthDaoTest<T extends IBandwidthDao> {
assertNotSame(metaDataDao, result);
}
@SuppressWarnings("unchecked")
@Test
public void testGetDataSetMetaDataDaoReturnsThoseWithSameDataSetAndBaseTime() {
OpenDapGriddedDataSetMetaData metaData = OpenDapGriddedDataSetMetaDataFixture.INSTANCE
@ -205,8 +210,8 @@ public abstract class AbstractBandwidthDaoTest<T extends IBandwidthDao> {
metaData2.setDate(new ImmutableDate(metaData.getDate().getTime()
+ TimeUtil.MILLIS_PER_YEAR));
BandwidthDataSetUpdate metaDataDao = dao
.newBandwidthDataSetUpdate(metaData);
dao.newBandwidthDataSetUpdate(metaData2);
.newBandwidthDataSetUpdate((DataSetMetaData<T>) metaData);
dao.newBandwidthDataSetUpdate((DataSetMetaData<T>) metaData2);
final ImmutableDate date1 = metaData.getDate();
Calendar cal = Calendar.getInstance();
@ -314,6 +319,7 @@ public abstract class AbstractBandwidthDaoTest<T extends IBandwidthDao> {
assertNotSame(alloc1, result);
}
@SuppressWarnings("unchecked")
@Test
public void testGetSubscriptionDaoReturnsById()
throws SerializationException {
@ -334,6 +340,7 @@ public abstract class AbstractBandwidthDaoTest<T extends IBandwidthDao> {
assertNotSame(entity2, result);
}
@SuppressWarnings("unchecked")
@Test
public void testGetSubscriptionDaoByRegistryIdAndBaseTime()
throws SerializationException {
@ -374,17 +381,18 @@ public abstract class AbstractBandwidthDaoTest<T extends IBandwidthDao> {
assertNotSame(entity2, result);
}
@SuppressWarnings("unchecked")
@Test
public void testGetSubscriptionRetrievalsByProviderAndDataSet()
throws SerializationException {
// These two have the same dataset name and provider
SubscriptionRetrievalAttributes entity1 = SubscriptionRetrievalAttributesFixture.INSTANCE
SubscriptionRetrievalAttributes<T, C> entity1 = SubscriptionRetrievalAttributesFixture.INSTANCE
.get(1);
SubscriptionRetrievalAttributes entity2 = SubscriptionRetrievalAttributesFixture.INSTANCE
SubscriptionRetrievalAttributes<T, C> entity2 = SubscriptionRetrievalAttributesFixture.INSTANCE
.get(1);
// This one does not
SubscriptionRetrievalAttributes entity3 = SubscriptionRetrievalAttributesFixture.INSTANCE
SubscriptionRetrievalAttributes<T, C> entity3 = SubscriptionRetrievalAttributesFixture.INSTANCE
.get(2);
dao.storeBandwidthSubscriptions(Arrays.asList(entity1
@ -398,7 +406,7 @@ public abstract class AbstractBandwidthDaoTest<T extends IBandwidthDao> {
dao.storeSubscriptionRetrievalAttributes(Arrays.asList(entity1,
entity2, entity3));
final Subscription subscription = entity1.getSubscription();
final Subscription<T, C> subscription = entity1.getSubscription();
final String expectedProvider = subscription.getProvider();
final String expectedDataSetName = subscription.getDataSetName();
final List<SubscriptionRetrieval> results = dao
@ -419,16 +427,17 @@ public abstract class AbstractBandwidthDaoTest<T extends IBandwidthDao> {
}
}
@SuppressWarnings("unchecked")
@Test
public void testGetSubscriptionRetrievalsByProviderDataSetAndBaseReferenceTime()
throws SerializationException {
// These two have the same dataset name and provider
SubscriptionRetrievalAttributes entity1 = SubscriptionRetrievalAttributesFixture.INSTANCE
SubscriptionRetrievalAttributes<T, C> entity1 = SubscriptionRetrievalAttributesFixture.INSTANCE
.get(1);
SubscriptionRetrievalAttributes entity2 = SubscriptionRetrievalAttributesFixture.INSTANCE
SubscriptionRetrievalAttributes<T, C> entity2 = SubscriptionRetrievalAttributesFixture.INSTANCE
.get(1);
// This one does not
SubscriptionRetrievalAttributes entity3 = SubscriptionRetrievalAttributesFixture.INSTANCE
SubscriptionRetrievalAttributes<T, C> entity3 = SubscriptionRetrievalAttributesFixture.INSTANCE
.get(2);
final BandwidthSubscription subDao1 = entity1
@ -460,7 +469,7 @@ public abstract class AbstractBandwidthDaoTest<T extends IBandwidthDao> {
dao.storeSubscriptionRetrievalAttributes(Arrays.asList(entity1,
entity2, entity3));
final Subscription subscription = entity1.getSubscription();
final Subscription<T, C> subscription = entity1.getSubscription();
final String expectedProvider = subscription.getProvider();
final String expectedDataSetName = subscription.getDataSetName();
final List<SubscriptionRetrieval> results = dao
@ -482,6 +491,7 @@ public abstract class AbstractBandwidthDaoTest<T extends IBandwidthDao> {
result.getBandwidthSubscription().getBaseReferenceTime());
}
@SuppressWarnings("unchecked")
@Test
public void testGetSubscriptionsReturnsClones()
throws SerializationException {
@ -494,6 +504,7 @@ public abstract class AbstractBandwidthDaoTest<T extends IBandwidthDao> {
assertNotSame(entity, result);
}
@SuppressWarnings("unchecked")
@Test
public void testGetSubscriptionsByProviderDataSetAndBaseReferenceTime()
throws SerializationException {
@ -527,16 +538,18 @@ public abstract class AbstractBandwidthDaoTest<T extends IBandwidthDao> {
assertNotSame(entity3, result);
}
@SuppressWarnings("unchecked")
@Test
public void testQuerySubscriptionRetrievalsBySubscriptionId()
throws SerializationException {
// These two have the same dataset name and provider
SubscriptionRetrievalAttributes entity1 = SubscriptionRetrievalAttributesFixture.INSTANCE
SubscriptionRetrievalAttributes<T, C> entity1 = SubscriptionRetrievalAttributesFixture.INSTANCE
.get(1);
SubscriptionRetrievalAttributes entity2 = SubscriptionRetrievalAttributesFixture.INSTANCE
SubscriptionRetrievalAttributes<T, C> entity2 = SubscriptionRetrievalAttributesFixture.INSTANCE
.get(1);
// This one does not
SubscriptionRetrievalAttributes entity3 = SubscriptionRetrievalAttributesFixture.INSTANCE
SubscriptionRetrievalAttributes<T, C> entity3 = SubscriptionRetrievalAttributesFixture.INSTANCE
.get(2);
dao.storeBandwidthSubscriptions(Arrays.asList(entity1
@ -564,16 +577,17 @@ public abstract class AbstractBandwidthDaoTest<T extends IBandwidthDao> {
assertNotSame(entity2, result);
}
@SuppressWarnings({ "unchecked" })
@Test
public void testQuerySubscriptionRetrievalsBySubscription()
throws SerializationException {
// These two have the same dataset name and provider
SubscriptionRetrievalAttributes entity1 = SubscriptionRetrievalAttributesFixture.INSTANCE
SubscriptionRetrievalAttributes<T, C> entity1 = SubscriptionRetrievalAttributesFixture.INSTANCE
.get(1);
SubscriptionRetrievalAttributes entity2 = SubscriptionRetrievalAttributesFixture.INSTANCE
SubscriptionRetrievalAttributes<T, C> entity2 = SubscriptionRetrievalAttributesFixture.INSTANCE
.get(1);
// This one does not
SubscriptionRetrievalAttributes entity3 = SubscriptionRetrievalAttributesFixture.INSTANCE
SubscriptionRetrievalAttributes<T, C> entity3 = SubscriptionRetrievalAttributesFixture.INSTANCE
.get(2);
// Still have to persist the actual subscription daos
@ -609,6 +623,7 @@ public abstract class AbstractBandwidthDaoTest<T extends IBandwidthDao> {
assertNotSame(entity2, result);
}
@SuppressWarnings("unchecked")
@Test
public void testRemoveSubscriptionDao() throws SerializationException {
final Calendar now = BandwidthUtil.now();
@ -675,6 +690,7 @@ public abstract class AbstractBandwidthDaoTest<T extends IBandwidthDao> {
.getEstimatedSize());
}
@SuppressWarnings("unchecked")
@Test
public void testUpdateSubscriptionDao() throws SerializationException {
final long estimatedSize = 25L;

View file

@ -28,6 +28,8 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.transaction.TransactionConfiguration;
import org.springframework.transaction.annotation.Transactional;
import com.raytheon.uf.common.datadelivery.registry.Coverage;
import com.raytheon.uf.common.datadelivery.registry.Time;
import com.raytheon.uf.common.util.SpringFiles;
import com.raytheon.uf.common.util.TestUtil;
import com.raytheon.uf.edex.datadelivery.bandwidth.dao.IBandwidthDao;
@ -45,6 +47,7 @@ import com.raytheon.uf.edex.datadelivery.bandwidth.hibernate.HibernateBandwidthD
* ------------ ---------- ----------- --------------------------
* Nov 13, 2012 1286 djohnson Initial creation
* Jun 03, 2013 2038 djohnson Use transactional semantics.
* Oct 3, 2013 1797 dhladky generics
*
* </pre>
*
@ -58,17 +61,17 @@ import com.raytheon.uf.edex.datadelivery.bandwidth.hibernate.HibernateBandwidthD
@TransactionConfiguration(transactionManager = TestUtil.METADATA_TX_MANAGER, defaultRollback = true)
@Transactional
@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)
public class HibernateBandwidthDaoTest extends
AbstractBandwidthDaoTest<IBandwidthDao> {
public class HibernateBandwidthDaoTest<T extends Time, C extends Coverage> extends
AbstractBandwidthDaoTest<T, C, IBandwidthDao<T, C>> {
@Autowired
private IBandwidthDao dao;
private IBandwidthDao<T, C> dao;
/**
* {@inheritDoc}
*/
@Override
protected IBandwidthDao getDao() {
protected IBandwidthDao<T, C> getDao() {
return dao;
}

View file

@ -19,6 +19,9 @@
**/
package com.raytheon.uf.edex.datadelivery.bandwidth;
import com.raytheon.uf.common.datadelivery.registry.Coverage;
import com.raytheon.uf.common.datadelivery.registry.Time;
/**
* Implementation of {@link AbstractBandwidthDaoTest} for
* {@link InMemoryBandwidthDao}.
@ -30,6 +33,7 @@ package com.raytheon.uf.edex.datadelivery.bandwidth;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Nov 13, 2012 1286 djohnson Initial creation
* Oct 3, 2013 1797 dhladky crazy generics
*
* </pre>
*
@ -37,13 +41,13 @@ package com.raytheon.uf.edex.datadelivery.bandwidth;
* @version 1.0
*/
public class InMemoryBandwidthDaoTest extends
AbstractBandwidthDaoTest<InMemoryBandwidthDao> {
public class InMemoryBandwidthDaoTest<T extends Time, C extends Coverage> extends
AbstractBandwidthDaoTest<T, C, InMemoryBandwidthDao<T, C>> {
/**
* {@inheritDoc}
*/
@Override
protected InMemoryBandwidthDao getDao() {
return new InMemoryBandwidthDao();
protected InMemoryBandwidthDao<T, C> getDao() {
return new InMemoryBandwidthDao<T, C>();
}
}

View file

@ -44,6 +44,7 @@ import org.junit.Before;
import org.junit.Test;
import com.google.common.collect.Maps;
import com.raytheon.uf.common.datadelivery.registry.GriddedTime;
import com.raytheon.uf.common.datadelivery.registry.Network;
import com.raytheon.uf.common.datadelivery.registry.Subscription;
import com.raytheon.uf.common.datadelivery.registry.SubscriptionBuilder;
@ -80,6 +81,7 @@ import com.raytheon.uf.edex.datadelivery.bandwidth.retrieval.RetrievalStatus;
* Feb 14, 2013 1595 djohnson Fix retrieval plan/subscription time intersections.
* Jun 05, 2013 2038 djohnson Use public API for getting retrieval times.
* Jun 25, 2013 2106 djohnson RetrievalPlan uses setters instead of constructor injection now.
* Sept 25, 2013 1797 dhladky separated time and gridded time
*
* </pre>
*
@ -149,14 +151,15 @@ public class BandwidthDaoUtilTest {
@Test
public void testGetRetrievalTimesReturnsBaseReferenceTimesInPlanWindow() {
// Make sure the subscription is "active" within the plan period
// This test is grid specific
Subscription subscription = new SubscriptionBuilder()
.withActivePeriodStart(plan.getPlanStart().getTime())
.withActivePeriodEnd(plan.getPlanEnd().getTime())
.withSubscriptionStart(TimeUtil.newImmutableDate()).build();
subscription.getTime().setCycleTimes(
((GriddedTime)subscription.getTime()).setCycleTimes(
Arrays.asList(Integer.valueOf(9), Integer.valueOf(0)));
TreeSet<Integer> cycles = new TreeSet<Integer>(subscription.getTime()
TreeSet<Integer> cycles = new TreeSet<Integer>(((GriddedTime)subscription.getTime())
.getCycleTimes());
SortedSet<Calendar> subscriptionTimes = bandwidthDaoUtil
@ -175,10 +178,10 @@ public class BandwidthDaoUtilTest {
Subscription subscription = new SubscriptionBuilder()
.withSubscriptionStart(startsTwoDaysIntoPlan)
.withSubscriptionEnd(plan.getPlanEnd().getTime()).build();
subscription.getTime().setCycleTimes(
((GriddedTime)subscription.getTime()).setCycleTimes(
Arrays.asList(Integer.valueOf(9), Integer.valueOf(0)));
TreeSet<Integer> cycles = new TreeSet<Integer>(subscription.getTime()
TreeSet<Integer> cycles = new TreeSet<Integer>(((GriddedTime)subscription.getTime())
.getCycleTimes());
SortedSet<Calendar> subscriptionTimes = bandwidthDaoUtil
@ -200,10 +203,10 @@ public class BandwidthDaoUtilTest {
Subscription subscription = new SubscriptionBuilder()
.withSubscriptionStart(plan.getPlanStart().getTime())
.withSubscriptionEnd(endsOneDayBeforePlan).build();
subscription.getTime().setCycleTimes(
((GriddedTime)subscription.getTime()).setCycleTimes(
Arrays.asList(Integer.valueOf(9), Integer.valueOf(0)));
TreeSet<Integer> cycles = new TreeSet<Integer>(subscription.getTime()
TreeSet<Integer> cycles = new TreeSet<Integer>(((GriddedTime)subscription.getTime())
.getCycleTimes());
SortedSet<Calendar> subscriptionTimes = bandwidthDaoUtil

View file

@ -57,6 +57,7 @@ import com.raytheon.uf.common.time.util.ImmutableDate;
* ------------ ---------- ----------- --------------------------
* Sep 4, 2012 1102 djohnson Initial creation
* Dec 12, 2012 1041 dhladky Updated for multi provider purging.
* Sept 30, 2013 1797 dhladky Generics
*
* </pre>
*
@ -91,6 +92,7 @@ public class DataSetMetaDataPurgeTaskImplTest {
private final DataSetMetaDataPurgeTaskImpl purge = new DataSetMetaDataPurgeTaskImpl(
openDapGriddedPurge) {
@SuppressWarnings("rawtypes")
@Override
List<DataSetMetaData> getDataSetMetaDatas() {
return java.util.Arrays.<DataSetMetaData> asList(dataSetMetaDatas);
@ -118,19 +120,19 @@ public class DataSetMetaDataPurgeTaskImplTest {
public void testMetaDatasAreOrderedByDate() {
// Give all DataSetMetaDatas the same dataset name and provider name so
// they go in the same set
for (DataSetMetaData metaData : dataSetMetaDatas) {
for (DataSetMetaData<?> metaData : dataSetMetaDatas) {
metaData.setDataSetName("dataSetName");
metaData.setProviderName("providerName");
}
Multimap<String, DataSetMetaData> dataSetKeyedMap = purge
Multimap<String, DataSetMetaData<?>> dataSetKeyedMap = purge
.getDataSetNameKeyedInstanceMap();
Set<String> keySet = dataSetKeyedMap.keySet();
assertEquals("Incorrect number of dataset name keys!", 1, keySet.size());
DataSetMetaData old = null;
for (DataSetMetaData metaData : dataSetKeyedMap.values()) {
DataSetMetaData<?> old = null;
for (DataSetMetaData<?> metaData : dataSetKeyedMap.values()) {
if (old != null) {
assertTrue(
"The DataSetMetaData instances should have been ordered by date!",
@ -142,14 +144,14 @@ public class DataSetMetaDataPurgeTaskImplTest {
@Test
public void testMetaDatasAreSeparatedIntoMapSetsKeyedByDataSetName() {
Multimap<String, DataSetMetaData> dataSetKeyedMap = purge
Multimap<String, DataSetMetaData<?>> dataSetKeyedMap = purge
.getDataSetNameKeyedInstanceMap();
Set<String> keySet = dataSetKeyedMap.keySet();
assertEquals("Incorrect number of dataset name keys!",
dataSetMetaDatas.length, keySet.size());
for (DataSetMetaData metaData : dataSetMetaDatas) {
for (DataSetMetaData<?> metaData : dataSetMetaDatas) {
assertTrue(
"Did not find the dataset name and provider combination as a key a in the map!",
keySet.contains(DataSetMetaDataPurgeTaskImpl
@ -204,7 +206,7 @@ public class DataSetMetaDataPurgeTaskImplTest {
public void testWhenDataSetMetadataReturnsFalseForPurgeSetIsNoLongerChecked() {
// Give all DataSetMetaDatas the same dataset name and provider name so
// they go in the same set
for (DataSetMetaData metaData : dataSetMetaDatas) {
for (DataSetMetaData<?> metaData : dataSetMetaDatas) {
metaData.setDataSetName("dataSetName");
metaData.setProviderName("providerName");
}

View file

@ -23,7 +23,8 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import com.raytheon.uf.common.datadelivery.registry.Time;
import com.raytheon.uf.common.datadelivery.registry.GriddedCoverage;
import com.raytheon.uf.common.datadelivery.registry.GriddedTime;
import com.raytheon.uf.common.datadelivery.retrieval.xml.RetrievalAttribute;
import com.raytheon.uf.common.serialization.SerializationException;
import com.raytheon.uf.common.util.AbstractFixture;
@ -71,20 +72,20 @@ public class RetrievalPluginDataObjectsFixture extends
.get(seedValue);
List<RetrievalResponseWrapper> retrievalAttributePluginDataObjects = new ArrayList<RetrievalResponseWrapper>();
try {
for (final RetrievalAttribute attribute : requestRecord
for (final RetrievalAttribute<GriddedTime, GriddedCoverage> attribute : requestRecord
.getRetrievalObj().getAttributes()) {
retrievalAttributePluginDataObjects
.add(new RetrievalResponseWrapper(
new MockOpenDapRetrievalAdapter()
.performRequest(new IRetrievalRequestBuilder() {
.performRequest(new IRetrievalRequestBuilder<GriddedTime, GriddedCoverage>() {
@Override
public String processTime(
Time prtXML) {
GriddedTime prtXML) {
return "" + prtXML;
}
@Override
public String processCoverage() {
public String processCoverage(GriddedCoverage coverage) {
return "noCoverage";
}
@ -94,7 +95,7 @@ public class RetrievalPluginDataObjectsFixture extends
}
@Override
public RetrievalAttribute getAttribute() {
public RetrievalAttribute<GriddedTime, GriddedCoverage> getAttribute() {
return attribute;
}
})));

View file

@ -25,7 +25,9 @@ import java.util.List;
import org.junit.Ignore;
import com.raytheon.uf.common.datadelivery.registry.GriddedCoverage;
import com.raytheon.uf.common.datadelivery.registry.GriddedCoverageFixture;
import com.raytheon.uf.common.datadelivery.registry.GriddedTime;
import com.raytheon.uf.common.datadelivery.registry.Subscription;
import com.raytheon.uf.common.datadelivery.registry.SubscriptionBundle;
import com.raytheon.uf.common.datadelivery.retrieval.xml.Retrieval;
@ -65,7 +67,7 @@ public class MockOpenDapRetrievalGenerator extends OpenDAPRetrievalGenerator {
*/
@Override
public List<Retrieval> buildRetrieval(SubscriptionBundle bundle) {
final Subscription subscription = bundle.getSubscription();
final Subscription<GriddedTime, GriddedCoverage> subscription = bundle.getSubscription();
Retrieval retrieval = new Retrieval();
retrieval.setConnection(bundle.getConnection());
@ -92,7 +94,7 @@ public class MockOpenDapRetrievalGenerator extends OpenDAPRetrievalGenerator {
private RetrievalAttribute getAttribute(SubscriptionBundle bundle) {
RetrievalAttribute attribute = new RetrievalAttribute();
attribute.setCoverage(GriddedCoverageFixture.INSTANCE.get());
final Subscription subscription = bundle.getSubscription();
final Subscription<GriddedTime, GriddedCoverage> subscription = bundle.getSubscription();
attribute.setSubName(subscription.getName());
attribute.setProvider(bundle.getProvider().getName());
attribute.setParameter(subscription.getParameter().get(0));

Some files were not shown because too many files have changed in this diff Show more