Package com.seyren.core.domain

Source Code of com.seyren.core.domain.Subscription

/**
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.seyren.core.domain;

import org.joda.time.DateTime;
import org.joda.time.LocalTime;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.seyren.core.util.datetime.LocalTimeDeserializer;
import com.seyren.core.util.datetime.LocalTimeSerializer;

/**
* This class represents something wanting to be notified of an alert
*
* @author mark
*
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public class Subscription {
   
    private String id;
    private String target;
    private SubscriptionType type;
    private boolean su, mo, tu, we, th, fr, sa;
    private boolean ignoreWarn, ignoreError, ignoreOk;
    private LocalTime fromTime;
    private LocalTime toTime;
    private boolean enabled;
   
    public String getId() {
        return id;
    }
   
    public void setId(String id) {
        this.id = id;
    }
   
    public Subscription withId(String id) {
        setId(id);
        return this;
    }
   
    public String getTarget() {
        return target;
    }
   
    public void setTarget(String target) {
        this.target = target;
    }
   
    public Subscription withTarget(String target) {
        setTarget(target);
        return this;
    }
   
    public SubscriptionType getType() {
        return type;
    }
   
    public void setType(SubscriptionType type) {
        this.type = type;
    }
   
    public Subscription withType(SubscriptionType type) {
        setType(type);
        return this;
    }
   
    public boolean isSu() {
        return su;
    }
   
    public void setSu(boolean su) {
        this.su = su;
    }
   
    public Subscription withSu(boolean su) {
        setSu(su);
        return this;
    }
   
    public boolean isMo() {
        return mo;
    }
   
    public void setMo(boolean mo) {
        this.mo = mo;
    }
   
    public Subscription withMo(boolean mo) {
        setMo(mo);
        return this;
    }
   
    public boolean isTu() {
        return tu;
    }
   
    public void setTu(boolean tu) {
        this.tu = tu;
    }
   
    public Subscription withTu(boolean tu) {
        setTu(tu);
        return this;
    }
   
    public boolean isWe() {
        return we;
    }
   
    public void setWe(boolean we) {
        this.we = we;
    }
   
    public Subscription withWe(boolean we) {
        setWe(we);
        return this;
    }
   
    public boolean isTh() {
        return th;
    }
   
    public void setTh(boolean th) {
        this.th = th;
    }
   
    public Subscription withTh(boolean th) {
        setTh(th);
        return this;
    }
   
    public boolean isFr() {
        return fr;
    }
   
    public void setFr(boolean fr) {
        this.fr = fr;
    }
   
    public Subscription withFr(boolean fr) {
        setFr(fr);
        return this;
    }
   
    public boolean isSa() {
        return sa;
    }
   
    public void setSa(boolean sa) {
        this.sa = sa;
    }
   
    public Subscription withSa(boolean sa) {
        setSa(sa);
        return this;
    }
   
    public boolean isIgnoreWarn() {
        return ignoreWarn;
    }
   
    public void setIgnoreWarn(boolean ignoreWarn) {
        this.ignoreWarn = ignoreWarn;
    }
   
    public Subscription withIgnoreWarn(boolean ignoreWarn) {
        setIgnoreWarn(ignoreWarn);
        return this;
    }
   
    public boolean isIgnoreError() {
        return ignoreError;
    }
   
    public void setIgnoreError(boolean ignoreError) {
        this.ignoreError = ignoreError;
    }
   
    public Subscription withIgnoreError(boolean ignoreError) {
        setIgnoreError(ignoreError);
        return this;
    }
   
    public boolean isIgnoreOk() {
        return ignoreOk;
    }
   
    public void setIgnoreOk(boolean ignoreOk) {
        this.ignoreOk = ignoreOk;
    }
   
    public Subscription withIgnoreOk(boolean ignoreOk) {
        setIgnoreOk(ignoreOk);
        return this;
    }
   
    @JsonSerialize(using = LocalTimeSerializer.class)
    public LocalTime getFromTime() {
        return fromTime;
    }
   
    @JsonDeserialize(using = LocalTimeDeserializer.class)
    public void setFromTime(LocalTime fromTime) {
        this.fromTime = fromTime;
    }
   
    public Subscription withFromTime(LocalTime fromTime) {
        setFromTime(fromTime);
        return this;
    }
   
    @JsonSerialize(using = LocalTimeSerializer.class)
    public LocalTime getToTime() {
        return toTime;
    }
   
    @JsonDeserialize(using = LocalTimeDeserializer.class)
    public void setToTime(LocalTime toTime) {
        this.toTime = toTime;
    }
   
    public Subscription withToTime(LocalTime toTime) {
        setToTime(toTime);
        return this;
    }
   
    public boolean isEnabled() {
        return enabled;
    }
   
    public void setEnabled(boolean enabled) {
        this.enabled = enabled;
    }
   
    public Subscription withEnabled(boolean enabled) {
        setEnabled(enabled);
        return this;
    }
   
    public boolean shouldNotify(DateTime time, AlertType alertType) {
        if (!isEnabled()) {
            return false;
        }
       
        boolean isTimeGood = isCorrectDayOfWeek(time) && isCorrectHourOfDay(time);
       
        if (!isTimeGood) {
            return false;
        }
       
        if (alertType == AlertType.ERROR && ignoreError) {
            return false;
        }
       
        if (alertType == AlertType.WARN && ignoreWarn) {
            return false;
        }
       
        if (alertType == AlertType.OK && ignoreOk) {
            return false;
        }
       
        return true;
    }
   
    private boolean isCorrectHourOfDay(DateTime time) {
        LocalTime alertTime = new LocalTime(time.getHourOfDay(), time.getMinuteOfHour());
        return alertTime.isAfter(getFromTime()) && alertTime.isBefore(getToTime());
    }
   
    private boolean isCorrectDayOfWeek(DateTime time) {
        int day = time.getDayOfWeek();
        if (day == 1 && isMo())
            return true;
        if (day == 2 && isTu())
            return true;
        if (day == 3 && isWe())
            return true;
        if (day == 4 && isTh())
            return true;
        if (day == 5 && isFr())
            return true;
        if (day == 6 && isSa())
            return true;
        if (day == 7 && isSu())
            return true;
        return false;
    }
   
}
TOP

Related Classes of com.seyren.core.domain.Subscription

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.