Issue #1797 Separation of gridded time and abstract time object
Change-Id: I9d84942140e52ec0fded1a9150d7016dec8eaf63 Former-commit-id:7d43c5b7f9
[formerly4d4d93fc0a
] [formerlye0ec10d073
] [formerly7d43c5b7f9
[formerly4d4d93fc0a
] [formerlye0ec10d073
] [formerly1733834e74
[formerlye0ec10d073
[formerly cdf2b6dd5a5b4a12cf12e6d4d254b5e40acfcef5]]]] Former-commit-id:1733834e74
Former-commit-id:87574fd68a
[formerly21239525ea
] [formerly 965f4a1eb5886ed77447541de327726ef9ab34a7 [formerly89c341509c
]] Former-commit-id: b6b1dc8bacb08fc8a37391ca8c9d065363a89f96 [formerly3ba8fd56f7
] Former-commit-id:ab9c5af250
This commit is contained in:
parent
7f7309484a
commit
89e5b5116c
104 changed files with 1250 additions and 1320 deletions
|
@ -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;
|
||||
|
|
|
@ -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!");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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!");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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";
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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> {
|
||||
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
|
@ -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());
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
|
||||
}
|
||||
|
|
|
@ -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(),
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
||||
|
|
|
@ -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>();
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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> {
|
||||
}
|
||||
|
|
|
@ -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!",
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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>();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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> {
|
||||
|
||||
/**
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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));
|
|
@ -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());
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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>();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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>();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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>();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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>();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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>
|
||||
*
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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>();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
})));
|
||||
|
|
|
@ -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
Loading…
Add table
Reference in a new issue