Merge "Issue #2459 - Refactor the subscription status" into omaha_14.2.1

Former-commit-id: 61b073cef0bfe65634096221d8ee8aef37f9e1ed
This commit is contained in:
Nate Jensen 2014-01-15 17:36:30 -06:00 committed by Gerrit Code Review
commit ae10129713
14 changed files with 250 additions and 133 deletions

View file

@ -33,7 +33,6 @@ 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.Subscription.SubscriptionType;
import com.raytheon.uf.common.datadelivery.registry.Utils.SubscriptionStatus;
import com.raytheon.uf.common.datadelivery.registry.handlers.IAdhocSubscriptionHandler;
import com.raytheon.uf.common.datadelivery.registry.handlers.ISubscriptionHandler;
import com.raytheon.uf.common.dataquery.requests.RequestConstraint;
@ -74,6 +73,7 @@ import com.raytheon.viz.pointdata.util.PointDataInventory;
* Oct 13, 2013 2460 dhladky Added display of Adhoc subscriptions
* Nov 19, 2013 2458 mpduff Only pull subscriptions for the local site
* Nov 21, 2013 2554 dhladky Restored ADHOC's to working.
* Jan 14, 2014 2459 mpduff Change Subscription status code
*
* </pre>
*
@ -403,7 +403,7 @@ public class DataDeliveryProductBrowserDataDefinition
List<Subscription> subList = getSubscriptions();
for (Subscription s : subList) {
if (SubscriptionStatus.ACTIVE.toString().equals(s.getStatus())
if (s.isActive()
|| s.getSubscriptionType().equals(SubscriptionType.QUERY)) {
if (s.getDataSetType() == dataType) {
activeSubList.add(s);

View file

@ -72,7 +72,6 @@ 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.ebxml.DataSetQuery;
import com.raytheon.uf.common.datadelivery.registry.handlers.DataDeliveryHandlers;
import com.raytheon.uf.common.datadelivery.registry.handlers.IPendingSubscriptionHandler;
@ -144,6 +143,7 @@ import com.raytheon.viz.ui.presenter.components.ComboBoxConf;
* Oct 21, 2013 2292 mpduff Close dialog on OK.
* Nov 07, 2013 2291 skorolev Used showText() method for "Unable to Create Subscription" message.
* Nov 08, 2013 2506 bgonzale Removed send notification when a subscription is updated and created.
* Jan 14, 2014 2459 mpduff Change Subscription status code
*
* </pre>
*
@ -1088,14 +1088,11 @@ public class CreateSubscriptionDlg extends CaveSWTDialog {
.parse(endText);
subscription.setActivePeriodEnd(endPeriodDate);
}
subscription.setActive(true);
} catch (ParseException e) {
statusHandler.handle(Priority.PROBLEM, e.getLocalizedMessage(),
e);
}
} else {
subscription.setActive(true);
subscription.setActivePeriodStart(null);
subscription.setActivePeriodEnd(null);
}
@ -1635,8 +1632,7 @@ public class CreateSubscriptionDlg extends CaveSWTDialog {
// If currently in the window, assume starting from last year for
// the start date
if (subscription.getStatus().equals(
SubscriptionStatus.ACTIVE.toString())) {
if (subscription.isActive()) {
calendarYearToUse--;
}

View file

@ -147,6 +147,7 @@ import com.raytheon.viz.ui.presenter.IDisplay;
* Nov 08, 2013 2506 bgonzale Removed send notification when a subscription is deleted.
* Dec 05, 2013 2570 skorolev Show All subscriptions.
* Jan 08, 2014 2642 mpduff Update dialog for permissions, adding site to shared
* Jan 14, 2014 2459 mpduff Change Subscription status code
* </pre>
*
* @author mpduff
@ -1161,7 +1162,11 @@ public class SubscriptionManagerDlg extends CaveSWTDialog implements
.getSubscriptionData().getDataRow(idx);
Subscription sub = rowData.getSubscription();
sub.setActive(activate);
if (activate) {
sub.activate();
} else {
sub.deactivate();
}
try {
SubscriptionServiceResult response = subscriptionService

View file

@ -50,6 +50,7 @@ import com.raytheon.uf.viz.datadelivery.utils.DataDeliveryUtils.TABLE_TYPE;
* Jan 25, 2012 1528 djohnson Priorities no longer need incrementing for display.
* Apr 08, 2013 1826 djohnson Remove delivery options.
* May 15, 2013 1040 mpduff Change Office IDs to set.
* Jan 14, 2014 2459 mpduff Change Subscription status code
* </pre>
*
* @author mpduff
@ -472,8 +473,7 @@ public class SubscriptionManagerRowData implements
this.setPriority(subscription.getPriority().getPriorityValue());
this.setSubscriptionStart(subscription.getSubscriptionStart());
this.setSubscriptionEnd(subscription.getSubscriptionEnd());
this.setActive(subscription.isActive());
this.setStatus(subscription.getStatus());
this.setStatus(subscription.getStatus().toString());
}
/**

View file

@ -138,6 +138,7 @@ import com.raytheon.viz.ui.presenter.IDisplay;
* Oct 25, 2013 2292 mpduff Move overlap processing to edex.
* Nov 14, 2013 2538 mpduff Added check for duplicate subscription.
* Nov 14, 2013 2548 mpduff Set the subscription type (QUERY OR RECURRING)
* Jan 14, 2014 2459 mpduff Change Subscription status code
* </pre>
*
* @author mpduff
@ -603,7 +604,6 @@ public abstract class SubsetManagerDlg extends CaveSWTDialog implements
sub.setSubscriptionStart(this.subscription.getSubscriptionStart());
sub.setActivePeriodEnd(this.subscription.getActivePeriodEnd());
sub.setActivePeriodStart(this.subscription.getActivePeriodStart());
sub.setActive(this.subscription.isActive());
sub.setPriority(this.subscription.getPriority());
}

View file

@ -64,6 +64,7 @@ import com.raytheon.uf.common.time.util.TimeUtil;
* Oct 30, 2013 2448 dhladky Fixed pulling data before and after activePeriod starting and ending.
* Nov 14, 2013 2548 mpduff Add a subscription type slot.
* Jan 08, 2014 2615 bgonzale Implement calculate start and calculate end methods.
* Jan 14, 2014 2459 mpduff Add subscription state.
*
* </pre>
*
@ -95,7 +96,6 @@ public abstract class RecurringSubscription<T extends Time, C extends Coverage>
* New subscription name
*/
public RecurringSubscription(Subscription<T, C> sub, String name) {
this.setActive(sub.isActive());
this.setActivePeriodEnd(sub.getActivePeriodEnd());
this.setActivePeriodStart(sub.getActivePeriodStart());
this.setCoverage(sub.getCoverage());
@ -209,11 +209,6 @@ public abstract class RecurringSubscription<T extends Time, C extends Coverage>
@SlotAttribute(Subscription.DATA_SET_SLOT)
private String dataSetName;
@XmlAttribute
@DynamicSerializeElement
@SlotAttribute
private boolean active;
@XmlAttribute
@DynamicSerializeElement
@SlotAttribute
@ -267,6 +262,11 @@ public abstract class RecurringSubscription<T extends Time, C extends Coverage>
@SlotAttribute(Subscription.SUBSCRIPTION_TYPE_SLOT)
private SubscriptionType subscriptionType;
@XmlAttribute
@DynamicSerializeElement
@SlotAttribute(Subscription.SUBSCRIPTION_STATE_SLOT)
private SubscriptionState subscriptionState;
/**
* Get subscription name.
*
@ -454,8 +454,7 @@ public abstract class RecurringSubscription<T extends Time, C extends Coverage>
private Calendar getActivePeriodStart(Calendar base) {
// active period values are month and day of month only, use base
// Calendar for active period year
Calendar activePeriodStartCal = TimeUtil
.newCalendar(activePeriodStart);
Calendar activePeriodStartCal = TimeUtil.newCalendar(activePeriodStart);
TimeUtil.minCalendarFields(activePeriodStartCal, Calendar.MILLISECOND,
Calendar.SECOND, Calendar.MINUTE, Calendar.HOUR_OF_DAY);
activePeriodStartCal.set(Calendar.YEAR, base.get(Calendar.YEAR));
@ -484,8 +483,7 @@ public abstract class RecurringSubscription<T extends Time, C extends Coverage>
} else {
realStart = startConstraint;
}
return TimeUtil.newCalendar(TimeUtil.max(subscriptionStart,
realStart));
return TimeUtil.newCalendar(TimeUtil.max(subscriptionStart, realStart));
}
@Override
@ -704,18 +702,7 @@ public abstract class RecurringSubscription<T extends Time, C extends Coverage>
*/
@Override
public boolean isActive() {
return active;
}
/**
* Set the subscription status to active.
*
* @param active
* subscription active
*/
@Override
public void setActive(boolean active) {
this.active = active;
return getStatus() == SubscriptionStatus.ACTIVE;
}
/**
@ -727,6 +714,9 @@ public abstract class RecurringSubscription<T extends Time, C extends Coverage>
@Override
public void setValid(boolean valid) {
this.valid = valid;
if (!valid) {
subscriptionState = SubscriptionState.OFF;
}
}
/**
@ -892,14 +882,14 @@ public abstract class RecurringSubscription<T extends Time, C extends Coverage>
*
* @return true if status is expired
*/
@Override
public boolean isExpired() {
private boolean isExpired() {
Calendar cal = TimeUtil.newGmtCalendar();
Date today = cal.getTime();
boolean expired = false;
if (this.getSubscriptionEnd() != null
&& today.after(this.getSubscriptionEnd())) {
expired = true;
this.subscriptionState = SubscriptionState.OFF;
}
return expired;
@ -908,32 +898,40 @@ public abstract class RecurringSubscription<T extends Time, C extends Coverage>
/**
* Get the current subscription status.
*
* @return String value of SUBSCRIPTION_STATUS
* @return SUBSCRIPTION_STATUS
*/
@Override
public String getStatus() {
SubscriptionStatus status = SubscriptionStatus.INVALID;
if (isValid()) {
if (isExpired()) {
status = SubscriptionStatus.EXPIRED;
} else if (!isActive()) {
status = SubscriptionStatus.INACTIVE;
} else {
Calendar cal = TimeUtil.newGmtCalendar();
Date today = cal.getTime();
status = (inWindow(today)) ? SubscriptionStatus.ACTIVE
: SubscriptionStatus.INACTIVE;
if (status == SubscriptionStatus.ACTIVE && isUnscheduled()) {
status = SubscriptionStatus.UNSCHEDULED;
}
}
public SubscriptionStatus getStatus() {
if (!isValid()) {
return SubscriptionStatus.INVALID;
} else if (isExpired()) {
return SubscriptionStatus.EXPIRED;
} else if (subscriptionState == SubscriptionState.OFF) {
return SubscriptionStatus.DEACTIVATED;
}
return status.toString();
// At this point the subscription is in the ON state
Calendar cal = TimeUtil.newGmtCalendar();
Date today = cal.getTime();
if (unscheduled) {
return SubscriptionStatus.UNSCHEDULED;
} else if (inWindow(today)) {
return SubscriptionStatus.ACTIVE;
}
return SubscriptionStatus.INACTIVE;
}
/**
* Return true if this subscription should be scheduled. Scheduling is based
* on the status of the subscription. Returns false if the subscription is
* expired or deactivated.
*
* @return true if this subscription should be scheduled
*/
public boolean shouldSchedule() {
return subscriptionState == SubscriptionState.ON && !isExpired();
}
private boolean inWindow(Date checkDate) {
@ -1046,4 +1044,37 @@ public abstract class RecurringSubscription<T extends Time, C extends Coverage>
public void setSubscriptionType(SubscriptionType subscriptionType) {
this.subscriptionType = subscriptionType;
}
/**
* @return the subscriptionState
*/
public SubscriptionState getSubscriptionState() {
return subscriptionState;
}
/**
* @param subscriptionState
* the subscriptionState to set
*/
public void setSubscriptionState(SubscriptionState subscriptionState) {
this.subscriptionState = subscriptionState;
}
/**
* {@inheritDoc}
*/
@Override
public void activate() {
if (valid && !isExpired()) {
this.setSubscriptionState(SubscriptionState.ON);
}
}
/**
* {@inheritDoc}
*/
@Override
public void deactivate() {
this.setSubscriptionState(SubscriptionState.OFF);
}
}

View file

@ -27,6 +27,8 @@ import java.util.Set;
import javax.xml.bind.annotation.XmlEnum;
import javax.xml.bind.annotation.XmlEnumValue;
import com.raytheon.uf.common.datadelivery.registry.Utils.SubscriptionStatus;
/**
* Definition of a subscription.
*
@ -43,7 +45,8 @@ import javax.xml.bind.annotation.XmlEnumValue;
* Sept 30,2013 1797 dhladky Abstracted and genericized.
* Oct 23, 2013 2484 dhladky Unique ID for subscriptions updated.
* Nov 14, 2013 2548 mpduff Add a subscription type information.
* Jan 08, 2014 2615 bgonzale Added calculate start and calculate end methods.
* Jan 08, 2014 2615 bgonzale Added calculate start and calculate end methods.
* Jan 14, 2014 2459 mpduff Change Subscription status code
*
* </pre>
*
@ -58,6 +61,19 @@ public interface Subscription<T extends Time, C extends Coverage> {
QUERY, RECURRING;
}
/**
* State of the subscription.
*
* <pre>
* ON for Active, Inactive, Unscheduled status
* OFF for Expired, Deactivated, Invalid status
* </pre>
*/
@XmlEnum
public enum SubscriptionState {
ON, OFF;
}
/** Enumeration to use for subscription priorities */
@XmlEnum
public static enum SubscriptionPriority {
@ -157,6 +173,9 @@ public interface Subscription<T extends Time, C extends Coverage> {
/** Subscription type slot (query, recurring) */
String SUBSCRIPTION_TYPE_SLOT = "subscriptionType";
/** Subscription state slot (off or on) */
String SUBSCRIPTION_STATE_SLOT = "subscriptionState";
/**
* Get subscription name.
*
@ -458,20 +477,12 @@ public interface Subscription<T extends Time, C extends Coverage> {
void setDataSetName(String dataSetName);
/**
* isActive flag for subscription status.
* Check if status is SubscriptionStatus.ACTIVE
*
* @return boolean true if subscription is Active
*/
boolean isActive();
/**
* Set the subscription status to active.
*
* @param active
* subscription active
*/
void setActive(boolean active);
/**
* Set subscription valid.
*
@ -558,19 +569,12 @@ public interface Subscription<T extends Time, C extends Coverage> {
*/
void setId(String id);
/**
* Determine if subscription status is expired.
*
* @return true if status is expired
*/
boolean isExpired();
/**
* Get the current subscription status.
*
* @return String value of SUBSCRIPTION_STATUS
* @return SubscriptionStatus
*/
String getStatus();
SubscriptionStatus getStatus();
/**
* Get the route.
@ -679,4 +683,14 @@ public interface Subscription<T extends Time, C extends Coverage> {
* @param subType
*/
void setSubscriptionType(SubscriptionType subType);
/**
* Activate the subscription
*/
void activate();
/**
* Deactivate the subscription
*/
void deactivate();
}

View file

@ -21,7 +21,8 @@ import com.vividsolutions.jts.geom.Polygon;
* ------------ ---------- ----------- --------------------------
* Feb 20, 2011 218 dhladky Initial creation.
* Oct 1, 2012 1103 jpiatt Added invalid subscription status.
* Nov 20, 2012 1286 djohnson Add UNSCHEDULED.
* Nov 20, 2012 1286 djohnson Add UNSCHEDULED.
* Jan 14, 2014 2459 mpduff Change Subscription status code
*
* </pre>
*
@ -35,12 +36,11 @@ public class Utils {
* Get the geometry for a bounding box
*
* @param upperLeft
* upper left corner
* upper left corner
* @param LowerRight
* lower right corner
* lower right corner
*
* @return bounding box
* counding box coordinates
* @return bounding box bounding box coordinates
*/
public static Geometry getGeometry(Coordinate upperLeft,
Coordinate LowerRight) {
@ -65,12 +65,11 @@ public class Utils {
* Date conversion.
*
* @param format
* pass in date format
* pass in date format
* @param dateString
* date in string format
*
* @return Date
* converted date
* date in string format
*
* @return Date converted date
* @throws ParseException
*/
public static Date convertDate(String format, String dateString)
@ -82,19 +81,30 @@ public class Utils {
/**
* Subscription status options.
*
* <pre>
* Expired - Do not schedule
* Deactivated - Do not schedule
* Active - Currently scheduled
* Inactive - Not currently scheduled (outside of active period)
* Unscheduled - Not currently scheduled due to bandwidth limitations
* Invalid - Subscription does not match the available data set
* </pre>
*/
public static enum SubscriptionStatus {
/** Active Subscription Status */
ACTIVE("Active"),
ACTIVE("Active"),
/** Inactive Subscription Status */
INACTIVE("Inactive"),
INACTIVE("Inactive"),
/** Expired Subscription Status */
EXPIRED("Expired"),
/** Invalid Subscription Status */
INVALID("Invalid"),
EXPIRED("Expired"),
/** Unscheduled Subscription Status */
UNSCHEDULED("Unscheduled");
UNSCHEDULED("Unscheduled"),
/** Deactivated Subscription Status */
DEACTIVATED("Deactivated"),
/** Invalid Subscription Status */
INVALID("Invalid");
private final String status;

View file

@ -10,8 +10,8 @@ import javax.xml.bind.annotation.XmlAccessorType;
import com.raytheon.uf.common.datadelivery.registry.Network;
import com.raytheon.uf.common.datadelivery.registry.Subscription;
import com.raytheon.uf.common.datadelivery.registry.Subscription.SubscriptionState;
import com.raytheon.uf.common.registry.ebxml.AdhocRegistryQuery;
import com.raytheon.uf.common.registry.ebxml.BooleanAttribute;
import com.raytheon.uf.common.registry.ebxml.CalendarAttribute;
import com.raytheon.uf.common.registry.ebxml.StringAttribute;
import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
@ -36,6 +36,7 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerialize;
* Feb 20, 2013 1543 djohnson Add ability to filter on routes.
* May 28, 2013 1650 djohnson More information when failing to schedule.
* Sep 04, 2013 2330 bgonzale OfficeIds attribute is a collection.
* Jan 14, 2014 2459 mpduff Change to query for ON subscription state.
*
* </pre>
*
@ -48,11 +49,12 @@ public abstract class SubscriptionFilterableQuery<T> extends
AdhocRegistryQuery<T> {
/**
* A setter for the queryable attribute dataSetName equals a single String value.
* Using this setter will equate to an HQL "equals" query against the specified column name.
*
* A setter for the queryable attribute dataSetName equals a single String
* value. Using this setter will equate to an HQL "equals" query against the
* specified column name.
*
* @param collectionName
* The value of the dataSetName attribute to search for.
* The value of the dataSetName attribute to search for.
*/
public void setDataSetName(String dataSetName) {
setAttribute("dataSetName", new StringAttribute(dataSetName));
@ -60,10 +62,11 @@ public abstract class SubscriptionFilterableQuery<T> extends
/**
* A setter for the queryable attribute time equals a single String value.
* Using this setter will equate to an HQL "equals" query against the specified column name.
*
* Using this setter will equate to an HQL "equals" query against the
* specified column name.
*
* @param collectionName
* The value of the time attribute to search for.
* The value of the time attribute to search for.
*/
public void setMatureTime(Calendar matureTime) {
CalendarAttribute ca = new CalendarAttribute(matureTime);
@ -73,10 +76,11 @@ public abstract class SubscriptionFilterableQuery<T> extends
/**
* A setter for the queryable attribute name equals a single String value.
* Using this setter will equate to an HQL "equals" query against the specified column name.
*
* Using this setter will equate to an HQL "equals" query against the
* specified column name.
*
* @param collectionName
* The value of the name attribute to search for.
* The value of the name attribute to search for.
*/
public void setName(String name) {
setAttribute(Subscription.NAME_SLOT, new StringAttribute(name));
@ -109,10 +113,11 @@ public abstract class SubscriptionFilterableQuery<T> extends
/**
* A setter for the queryable attribute owner equals a single String value.
* Using this setter will equate to an HQL "equals" query against the specified column name.
*
* Using this setter will equate to an HQL "equals" query against the
* specified column name.
*
* @param collectionName
* The value of the owner attribute to search for.
* The value of the owner attribute to search for.
*/
public void setOwner(String owner) {
setAttribute("owner", new StringAttribute(owner));
@ -155,7 +160,8 @@ public abstract class SubscriptionFilterableQuery<T> extends
* The value of the active attribute to search for.
*/
public void setActive(boolean active) {
setAttribute("active", new BooleanAttribute(active));
setAttribute(Subscription.SUBSCRIPTION_STATE_SLOT, new StringAttribute(
SubscriptionState.ON.name()));
}
/**

View file

@ -19,6 +19,7 @@
**/
package com.raytheon.uf.common.datadelivery.registry.handlers;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
@ -26,6 +27,7 @@ import java.util.List;
import java.util.Set;
import com.raytheon.uf.common.datadelivery.registry.Network;
import com.raytheon.uf.common.datadelivery.registry.RecurringSubscription;
import com.raytheon.uf.common.datadelivery.registry.Subscription;
import com.raytheon.uf.common.datadelivery.registry.ebxml.SubscriptionDataSetNameQuery;
import com.raytheon.uf.common.datadelivery.registry.ebxml.SubscriptionFilterableQuery;
@ -50,6 +52,7 @@ import com.raytheon.uf.common.registry.handler.RegistryHandlerException;
* Jun 24, 2013 2106 djohnson Now composes a registryHandler.
* Jul 18, 2013 2193 mpduff Changes for SubscriptionDataSetNameQuery.
* Sep 11, 2013 2352 mpduff Add siteId to getSubscribedToDataSetNames method.
* Jan 14, 2014 2459 mpduff Validate subs should be scheduled before returning them.
*
* </pre>
*
@ -200,7 +203,12 @@ public abstract class BaseSubscriptionHandler<T extends Subscription, QUERY exte
checkResponse(response, "getActiveForRoutes");
return response.getResults();
List<T> returnList = new ArrayList<T>();
for (T sub : response.getResults()) {
if (((RecurringSubscription) sub).shouldSchedule()) {
returnList.add(sub);
}
}
return returnList;
}
}

View file

@ -40,6 +40,7 @@ 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.Utils.SubscriptionStatus;
import com.raytheon.uf.common.datadelivery.registry.handlers.DataDeliveryHandlers;
import com.raytheon.uf.common.event.EventBus;
import com.raytheon.uf.common.registry.handler.RegistryHandlerException;
@ -135,6 +136,7 @@ import com.raytheon.uf.edex.registry.ebxml.exception.EbxmlRegistryException;
* Jan 08, 2014 2615 bgonzale getMostRecent checks subscription time constraints before scheduling.
* handlePoint method now schedules most recent.
* Jan 14, 2014 2692 dhladky Bad Point scheduling final Empty list.
* Jan 14, 2014 2459 mpduff Change to subscription status.
*
* </pre>
*
@ -589,10 +591,10 @@ public abstract class BandwidthManager<T extends Time, C extends Coverage>
// If BandwidthManager does not know about the subscription, and
// it's active, attempt to add it..
if (bandwidthSubscriptions.isEmpty() && subscription.isActive()
&& !subscription.isUnscheduled()) {
if (bandwidthSubscriptions.isEmpty() && subscription.isActive()) {
return schedule(subscription);
} else if (!subscription.isActive() || subscription.isUnscheduled()) {
} else if (subscription.isUnscheduled()
|| subscription.getStatus() == SubscriptionStatus.DEACTIVATED) {
// See if the subscription was inactivated or unscheduled..
// Need to remove BandwidthReservations for this
// subscription.
@ -647,7 +649,7 @@ public abstract class BandwidthManager<T extends Time, C extends Coverage>
useMostRecentDataSetUpdate));
return unscheduled;
}
private List<BandwidthAllocation> getMostRecent(
Subscription<T, C> subscription, boolean useMostRecentDataSetUpdate) {
List<BandwidthAllocation> unscheduled = Collections.emptyList();
@ -667,7 +669,8 @@ public abstract class BandwidthManager<T extends Time, C extends Coverage>
+ "No adhoc requested.",
subscription.getName()));
} else {
RetrievalPlan plan = retrievalManager.getPlan(subscription.getRoute());
RetrievalPlan plan = retrievalManager.getPlan(subscription
.getRoute());
if (plan != null) {
Date subscriptionValidStart = subscription.calculateStart(
plan.getPlanStart()).getTime();

View file

@ -43,6 +43,7 @@ import com.raytheon.uf.common.time.util.TimeUtil;
* May 15, 2013 1040 mpduff Office Ids are now a list.
* Oct 2 2013 1797 dhladky subscription and time generics
* Oct 21, 2013 2292 mpduff Implement multiple data types
* Jan 14, 2014 2459 mpduff Change subscription status code
*
* </pre>
*
@ -77,7 +78,6 @@ public abstract class BaseSubscriptionFixture<M extends Subscription> {
public M getInstance(long seedValue, Random random, DataType dataType) {
M subscription = getSubscription();
subscription.setActive(random.nextBoolean());
subscription.setActivePeriodStart(TimeUtil.newDate());
subscription.setActivePeriodEnd(new Date(subscription
.getActivePeriodStart().getTime() + seedValue));

View file

@ -55,6 +55,7 @@ import com.raytheon.uf.common.time.util.TimeUtilTest;
* Mar 28, 2013 1841 djohnson Subscription is now UserSubscription.
* May 15, 2013 1040 mpduff Office Id now a set.
* Oct 21, 2013 2292 mpduff Implement multiple data types
* Jan 14, 2014 2459 mpduff Change Subscription status code
*
* </pre>
*
@ -134,7 +135,7 @@ public class SiteSubscriptionTest {
.withActivePeriodEnd(fiveDaysFromNow).build();
assertThat(subscription.getStatus(),
is(equalTo(SubscriptionStatus.ACTIVE.toString())));
is(equalTo(SubscriptionStatus.ACTIVE)));
}
@Test
@ -149,7 +150,7 @@ public class SiteSubscriptionTest {
.withActivePeriodEnd(yesterday).build();
assertThat(subscription.getStatus(),
is(equalTo(SubscriptionStatus.INACTIVE.toString())));
is(equalTo(SubscriptionStatus.INACTIVE)));
}
@Test
@ -166,7 +167,7 @@ public class SiteSubscriptionTest {
.withActivePeriodEnd(fiveDaysFromNow1970).build();
assertThat(subscription.getStatus(),
is(equalTo(SubscriptionStatus.ACTIVE.toString())));
is(equalTo(SubscriptionStatus.ACTIVE)));
}
@Test
@ -184,7 +185,7 @@ public class SiteSubscriptionTest {
.withActivePeriodEnd(yesterday1970).build();
assertThat(subscription.getStatus(),
is(equalTo(SubscriptionStatus.INACTIVE.toString())));
is(equalTo(SubscriptionStatus.INACTIVE)));
}
@Test
@ -203,7 +204,61 @@ public class SiteSubscriptionTest {
.withActivePeriodEnd(januaryFirst).build();
assertThat(subscription.getStatus(),
is(equalTo(SubscriptionStatus.ACTIVE.toString())));
is(equalTo(SubscriptionStatus.ACTIVE)));
}
@Test
public void testActivatedSubOutsideActivePeriodReturnsInactive() {
final Date fiveDaysAgo = new Date(TimeUtil.currentTimeMillis()
- (TimeUtil.MILLIS_PER_DAY * 5));
final Date yesterday = new Date(TimeUtil.currentTimeMillis()
- TimeUtil.MILLIS_PER_DAY);
Subscription sub = new SubscriptionBuilder()
.withActivePeriodStart(fiveDaysAgo)
.withActivePeriodEnd(yesterday).build();
sub.deactivate();
sub.activate();
assertThat(sub.getStatus(), is(equalTo(SubscriptionStatus.INACTIVE)));
}
@Test
public void testGetStatusOfDeactivatedSubReturnsDeactivatedStatus() {
Subscription sub = new SubscriptionBuilder().build();
sub.deactivate();
sub.getStatus();
assertThat(sub.getStatus(), is(equalTo(SubscriptionStatus.DEACTIVATED)));
}
@Test
public void testGetStatusOfReactivatedSubReturnsActive() {
Subscription sub = new SubscriptionBuilder().build();
sub.deactivate();
sub.activate();
assertThat(sub.getStatus(), is(equalTo(SubscriptionStatus.ACTIVE)));
}
@Test
public void testActivatingAnExpiredSubIsStillExpired() {
Subscription sub = new SubscriptionBuilder().build();
Calendar endTime = TimeUtil.newGmtCalendar();
endTime.add(Calendar.DAY_OF_MONTH, -30);
sub.setSubscriptionEnd(endTime.getTime());
// activate it
sub.activate();
assertThat(sub.getStatus(), is(equalTo(SubscriptionStatus.EXPIRED)));
}
@Test
public void testInvalidSubCannotBeActivated() {
SiteSubscription sub = new SubscriptionBuilder().build();
sub.setValid(false);
sub.activate();
assertThat(sub.getStatus(), is(equalTo(SubscriptionStatus.INVALID)));
}
@Test

View file

@ -40,6 +40,7 @@ import com.raytheon.uf.common.time.util.TimeUtil;
* Apr 08, 2013 1826 djohnson Remove delivery options.
* May 15, 2013 1040 mpduff Office Id now a set.
* Oct 21, 2013 2292 mpduff Implement multiple data types
* Jan 14, 2014 2459 mpduff Change Subscription status code
*
* </pre>
*
@ -51,8 +52,6 @@ public class SubscriptionBuilder {
private int latencyInMinutes = 0;
private boolean active = true;
private Date activePeriodStart;
private Date activePeriodEnd;
@ -98,7 +97,6 @@ public class SubscriptionBuilder {
public SiteSubscription build() {
SiteSubscription subscription = SiteSubscriptionFixture.INSTANCE
.get(dataType);
subscription.setActive(active);
subscription.setActivePeriodStart(activePeriodStart);
subscription.setActivePeriodEnd(activePeriodEnd);
subscription.setDataSetName(dataSetName);
@ -132,15 +130,6 @@ public class SubscriptionBuilder {
return this;
}
/**
* @param active
* the active to set
*/
public SubscriptionBuilder withActive(boolean active) {
this.active = active;
return this;
}
/**
* @param activePeriodStart
* the activePeriodStart to set