models.Job.java Source code

Java tutorial

Introduction

Here is the source code for models.Job.java

Source

/**
 * This document is a part of the source code and related artifacts
 * for GA2SA, an open source code for Google Analytics to 
 * Salesforce Analytics integration.
 *
 * Copyright  2015 Cervello Inc.,
 *
 *
 * 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.
 */

package models;

import java.sql.Timestamp;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;

import models.dao.GoogleAnalyticsProfileDAO;
import models.dao.SalesforceAnalyticsProfileDAO;

import org.apache.commons.lang3.StringEscapeUtils;
import org.hibernate.validator.constraints.NotEmpty;

import play.libs.Json;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.ga2sa.utils.ArrayToStringDeserializer;
import com.ga2sa.utils.JsonUtil;
import com.ga2sa.utils.StringToArraySerializer;
import com.ga2sa.utils.StringToBooleanDeserializer;

/**
 * The persistent class for the jobs database table.
 * @author Igor Ivarov
 * @editor Sergey Legostaev
 */
@Entity
@Table(name = "jobs")
@NamedQuery(name = "Job.findAll", query = "SELECT j FROM Job j ORDER BY j.created DESC")
@JsonIgnoreProperties(ignoreUnknown = true)
public class Job extends BaseEntity {
    private static final long serialVersionUID = 1L;

    @Column(name = "end_time")
    private Timestamp endTime;

    @NotEmpty
    @NotNull
    @Pattern(regexp = "^[a-zA-Z0-9]*$", message = "Not allow special characters, including spaces")
    private String name;

    @Column(name = "errors")
    private String messages;

    @Column(name = "google_analytics_properties")
    @Deprecated
    @JsonIgnore
    private String googleAnalyticsProperties;

    @Column(name = "ga_profile")
    @JsonProperty(value = "googleAnalyticsProperties_profile")
    public String gaProfile;

    @Column(name = "ga_dimensions")
    @JsonProperty(value = "googleAnalyticsProperties_dimensions")
    @JsonDeserialize(using = ArrayToStringDeserializer.class)
    @JsonSerialize(using = StringToArraySerializer.class)
    public String gaDimensions;

    @Column(name = "ga_metrics")
    @JsonProperty(value = "googleAnalyticsProperties_metrics")
    @JsonDeserialize(using = ArrayToStringDeserializer.class)
    @JsonSerialize(using = StringToArraySerializer.class)
    public String gaMetrics;

    @Column(name = "ga_start_date")
    @JsonProperty(value = "googleAnalyticsProperties_startDate")
    public String gaStartDate;

    @Column(name = "ga_end_date")
    @JsonProperty(value = "googleAnalyticsProperties_endDate")
    public String gaEndDate;

    @Column(name = "ga_sorting")
    @JsonProperty(value = "googleAnalyticsProperties_sorting")
    @JsonDeserialize(using = ArrayToStringDeserializer.class)
    @JsonSerialize(using = StringToArraySerializer.class)
    public String gaSorting;

    @Column(name = "start_time")
    private Timestamp startTime;

    @Column(name = "next_start_time")
    private Timestamp nextStartTime;

    @NotNull
    @Enumerated(EnumType.STRING)
    private JobStatus status;

    @Column(name = "repeat_period")
    private String repeatPeriod;

    @Column(name = "include_previous_data")
    @JsonDeserialize(using = StringToBooleanDeserializer.class)
    private Boolean includePreviousData;

    @NotNull
    @ManyToOne
    @JoinColumn(name = "google_analytics_profile_id")
    @JsonIgnore
    private GoogleAnalyticsProfile googleAnalyticsProfile;

    @NotNull
    @ManyToOne
    @JoinColumn(name = "salesforce_analytics_profile_id")
    @JsonIgnore
    private SalesforceAnalyticsProfile salesforceAnalyticsProfile;

    @NotNull
    @ManyToOne
    @JoinColumn(name = "executed_by")
    private User user;

    public Job() {
    }

    public Long getId() {
        return this.id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Timestamp getEndTime() {
        return this.endTime;
    }

    public void setEndTime(Timestamp endTime) {
        this.endTime = endTime;
    }

    public String getMessages() {
        return StringEscapeUtils.escapeHtml4(this.messages);
    }

    public void setMessages(String messages) {
        this.messages = messages;
    }

    public String getGoogleAnalyticsProperties() {
        return this.googleAnalyticsProperties;
    }

    public void setGoogleAnalyticsProperties(String googleAnalyticsProperties) {
        this.googleAnalyticsProperties = googleAnalyticsProperties;
    }

    public Timestamp getStartTime() {
        return this.startTime;
    }

    public void setStartTime(Timestamp startTime) {
        this.startTime = startTime;
    }

    public Timestamp getNextStartTime() {
        return nextStartTime;
    }

    public void setNextStartTime(Timestamp nextStartTime) {
        this.nextStartTime = nextStartTime;
    }

    public JobStatus getStatus() {
        return this.status;
    }

    public void setStatus(JobStatus status) {
        this.status = status;
    }

    public String getRepeatPeriod() {
        return repeatPeriod;
    }

    public void setRepeatPeriod(String repeatPeriod) {
        this.repeatPeriod = repeatPeriod;
    }

    public Boolean getIncludePreviousData() {
        return includePreviousData;
    }

    public void setIncludePreviousData(Boolean includePreviousData) {
        this.includePreviousData = includePreviousData;
    }

    public GoogleAnalyticsProfile getGoogleAnalyticsProfile() {
        return this.googleAnalyticsProfile;
    }

    public void setGoogleAnalyticsProfile(GoogleAnalyticsProfile googleAnalyticsProfile) {
        this.googleAnalyticsProfile = googleAnalyticsProfile;
    }

    public SalesforceAnalyticsProfile getSalesforceAnalyticsProfile() {
        return this.salesforceAnalyticsProfile;
    }

    public void setSalesforceAnalyticsProfile(SalesforceAnalyticsProfile salesforceAnalyticsProfile) {
        this.salesforceAnalyticsProfile = salesforceAnalyticsProfile;
    }

    public User getUser() {
        return this.user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    public Boolean isRepeated() {
        return this.getRepeatPeriod() != null;
    }

    public Boolean needIncludePreviousData() {
        return this.getIncludePreviousData();
    }

    @JsonProperty(value = "googleAnalyticsProfile")
    public JsonNode getGoogleProfileId() {
        return JsonUtil.excludeFields(Json.toJson(this.googleAnalyticsProfile),
                GoogleAnalyticsProfileDAO.privateFields);
    }

    @JsonProperty(value = "salesforceAnalyticsProfile")
    public JsonNode getSalesforceAnalyticsProfileId() {
        return JsonUtil.excludeFields(Json.toJson(this.salesforceAnalyticsProfile),
                SalesforceAnalyticsProfileDAO.privateFields);
    }

    @JsonProperty(value = "user")
    public String getUserId() {
        return this.user.username;
    }

}