Merge "Issue #2459 - Refactor the subscription status" into omaha_14.2.1
Former-commit-id:9d529b3b21
[formerly 61b073cef0bfe65634096221d8ee8aef37f9e1ed] Former-commit-id:ae10129713
This commit is contained in:
commit
9028260386
14 changed files with 250 additions and 133 deletions
|
@ -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);
|
||||
|
|
|
@ -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--;
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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()));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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));
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue