All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.oozie.SLAEventBean Maven / Gradle / Ivy

There is a newer version: 5.2.1
Show newest version
/**
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you 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 org.apache.oozie;

import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
import java.text.MessageFormat;
import java.util.Date;

import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;

import org.apache.hadoop.io.Writable;
import org.apache.oozie.client.rest.JsonSLAEvent;
import org.apache.oozie.util.DateUtils;
import org.apache.oozie.util.XLog;
import org.jdom.Element;

@Deprecated
@Entity
@NamedQueries({
        @NamedQuery(name = "GET_SLA_EVENT_NEWER_SEQ_LIMITED", query = "select OBJECT(w) from SLAEventBean w where w.event_id "
                + "> :id order by w.event_id"),
        @NamedQuery(name = "GET_SLA_EVENTS", query = "select OBJECT(w) from SLAEventBean w") })

public class SLAEventBean extends JsonSLAEvent implements Writable {

    @Basic
    @Column(name = "job_status")
    private String jobStatusStr = null;

    @Basic
    @Column(name = "app_type")
    private String appTypeStr = null;

    @Basic
    @Column(name = "expected_start")
    private java.sql.Timestamp expectedStartTS = null;

    @Basic
    @Column(name = "expected_end")
    private java.sql.Timestamp expectedEndTS = null;

    @Basic
    @Column(name = "status_timestamp")
    private java.sql.Timestamp statusTimestampTS = null;

    @Basic
    @Column(name = "event_type")
    private String eventType = null;

    public SLAEventBean() {

    }

    public String getJobStatusStr() {
        return jobStatusStr;
    }

    public void setJobStatusStr(String jobStatusStr) {
        this.jobStatusStr = jobStatusStr;
    }

    @Override
    public Status getJobStatus() {
        return Status.valueOf(this.jobStatusStr);
    }

    @Override
    public void setJobStatus(Status jobStatus) {
        super.setJobStatus(jobStatus);
        this.jobStatusStr = jobStatus.toString();
    }

    public String getAppTypeStr() {
        return appTypeStr;
    }

    public void setAppTypeStr(String appTypeStr) {
        this.appTypeStr = appTypeStr;
    }

    @Override
    public SlaAppType getAppType() {
        return SlaAppType.valueOf(appTypeStr);
    }

    @Override
    public void setAppType(SlaAppType appType) {
        super.setAppType(appType);
        this.appTypeStr = appType.toString();
    }

    public java.sql.Timestamp getExpectedStartTS() {
        return expectedStartTS;
    }

    @Override
    public Date getExpectedStart() {
        return DateUtils.toDate(expectedStartTS);
    }

    @Override
    public void setExpectedStart(Date expectedStart) {
        super.setExpectedStart(expectedStart);
        this.expectedStartTS = DateUtils.convertDateToTimestamp(expectedStart);
    }

    public java.sql.Timestamp getExpectedEndTS() {
        return expectedEndTS;
    }

    @Override
    public Date getExpectedEnd() {
        return DateUtils.toDate(expectedEndTS);
    }

    @Override
    public void setExpectedEnd(Date expectedEnd) {
        super.setExpectedEnd(expectedEnd);
        this.expectedEndTS = DateUtils.convertDateToTimestamp(expectedEnd);
    }

    public java.sql.Timestamp getStatusTimestampTS() {
        return statusTimestampTS;
    }

    @Override
    public Date getStatusTimestamp() {
        return DateUtils.toDate(statusTimestampTS);
    }

    @Override
    public void setStatusTimestamp(Date statusTimestamp) {
        super.setStatusTimestamp(statusTimestamp);
        this.statusTimestampTS = DateUtils.convertDateToTimestamp(statusTimestamp);
    }

    public String getEventType() {
        return eventType;
    }

    public void setEventType(String eventType) {
        this.eventType = eventType;
    }

    @Override
    public void readFields(DataInput arg0) throws IOException {
        // TODO Auto-generated method stub

    }

    @Override
    public void write(DataOutput arg0) throws IOException {
        // TODO Auto-generated method stub

    }

    @Override
    public String toString() {
        return MessageFormat.format("Event id[{0}] status[{1}]", getEvent_id(), getJobStatus());
    }

    public Element toXml() {
        Element retElem = null;
        if (getJobStatus() == Status.CREATED) {
            retElem = getRegistrationEvent("event");
        }
        else {
            retElem = getStatusEvent("event");
        }
        return retElem;
    }

    private Element getRegistrationEvent(String tag) {
        Element eReg = new Element(tag);
        eReg.addContent(createATagElement("sequence-id", String.valueOf(getEvent_id())));
        Element e = new Element("registration");
        e.addContent(createATagElement("sla-id", getSlaId()));
        e.addContent(createATagElement("app-type", getAppType().toString()));
        e.addContent(createATagElement("app-name", getAppName()));
        e.addContent(createATagElement("user", getUser()));
        e.addContent(createATagElement("group", getGroupName()));
        e.addContent(createATagElement("parent-sla-id", String
                .valueOf(getParentSlaId())));
        e.addContent(createATagElement("expected-start",
                                       getDateString(getExpectedStart())));
        e.addContent(createATagElement("expected-end",
                                       getDateString(getExpectedEnd())));
        e.addContent(createATagElement("status-timestamp",
                                       getDateString(getStatusTimestamp())));
        e.addContent(createATagElement("notification-msg", getNotificationMsg()));

        e.addContent(createATagElement("alert-contact", getAlertContact()));
        e.addContent(createATagElement("dev-contact", getDevContact()));
        e.addContent(createATagElement("qa-contact", getQaContact()));
        e.addContent(createATagElement("se-contact", getSeContact()));

        e.addContent(createATagElement("alert-percentage", getAlertPercentage()));
        e.addContent(createATagElement("alert-frequency", getAlertFrequency()));

        e.addContent(createATagElement("upstream-apps", getUpstreamApps()));
        e.addContent(createATagElement("job-status", getJobStatus().toString()));
        e.addContent(createATagElement("job-data", getJobData()));
        eReg.addContent(e);
        return eReg;
    }

    private Element getStatusEvent(String tag) {
        Element eStat = new Element(tag);
        eStat.addContent(createATagElement("sequence-id", String.valueOf(getEvent_id())));
        Element e = new Element("status");
        e.addContent(createATagElement("sla-id", getSlaId()));
        e.addContent(createATagElement("status-timestamp", getDateString(getStatusTimestamp())));
        e.addContent(createATagElement("job-status", getJobStatus().toString()));
        e.addContent(createATagElement("job-data", getJobData()));
        e.addContent(createATagElement("user", getUser()));
        e.addContent(createATagElement("group", getGroupName()));
        e.addContent(createATagElement("app-name", getAppName()));
        eStat.addContent(e);
        return eStat;
    }

    private Element createATagElement(String tag, String content) {
        if (content == null) {
            content = "";
        }
        Element e = new Element(tag);
        e.addContent(content);
        return e;
    }

    private String getDateString(Date d) {
        try {
            return DateUtils.formatDateOozieTZ(d);
        }
        catch (Exception e) {
            e.printStackTrace();
            XLog.getLog(getClass()).error("Date formatting error " + d, e);
            throw new RuntimeException("Date formatting error " + d + e);
        }
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy