UrlRedirectBean.java

package sk.iway.iwcm.system;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.TableGenerator;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

import com.fasterxml.jackson.annotation.JsonIgnore;

import sk.iway.iwcm.Tools;
import sk.iway.iwcm.database.ActiveRecordRepository;
import sk.iway.iwcm.system.adminlog.EntityListenersType;
import sk.iway.iwcm.system.datatable.DataTableColumnType;
import sk.iway.iwcm.system.datatable.annotations.DataTableColumn;
import sk.iway.iwcm.system.datatable.annotations.DataTableColumnEditor;
import sk.iway.iwcm.system.datatable.annotations.DataTableColumnEditorAttr;

/**
 *  UrlRedirectBean.java
 *
 *@Title        webjet7
 *@Company      Interway s.r.o. (www.interway.sk)
 *@Copyright    Interway s.r.o. (c) 2001-2010
 *@author       $Author: marosurbanec $
 *@version      $Revision: 1.3 $
 *@created      Date: 14.04.2010 16:43:36
 *@modified     $Date: 2004/08/16 06:26:11 $
 */
@Entity
@Table(name="url_redirect")
@EntityListeners(sk.iway.iwcm.system.adminlog.AuditEntityListener.class)
@EntityListenersType(sk.iway.iwcm.Adminlog.TYPE_REDIRECT_UPDATE)
public class UrlRedirectBean extends ActiveRecordRepository implements Serializable
{
	private static final long serialVersionUID = -1L;

	public UrlRedirectBean() {}

	public UrlRedirectBean(String oldUrl, String newUrl, Integer redirectCode, String domainName) {
		this.oldUrl = oldUrl;
		this.newUrl = newUrl;
		this.redirectCode = redirectCode;
		this.domainName = domainName;
	}

	@Id
	@GeneratedValue(generator="WJGen_url_redirect")
	@TableGenerator(name="WJGen_url_redirect",pkColumnValue="url_redirect")
	@Column(name="url_redirect_id")
    @DataTableColumn(
        inputType = DataTableColumnType.ID,
        title = "components.redirect.label.id"
    )
	private Long urlRedirectId;

	@Column(name="insert_date")
	@Temporal(TemporalType.TIMESTAMP)
    @DataTableColumn(
        inputType = DataTableColumnType.DATETIME,
        title ="components.redirect.admin_list.datum_vlozenia",
		sortAfter = "publishDate",
        editor = {
            @DataTableColumnEditor(
                attr = {
                    @DataTableColumnEditorAttr(key = "disabled", value = "disabled")
                }
            )
        }
    )
	Date insertDate;

	@Column(name="old_url")
	@NotBlank
	@Size(max=255)
    @DataTableColumn(
        inputType = DataTableColumnType.OPEN_EDITOR,
        title = "components.redirect.admin_list.stare_url",
		sortAfter = "urlRedirectId"
    )
	String oldUrl;

	@Column(name="redirect_code",nullable=false)
	@NotNull
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT_NUMBER,
        title = "components.redirect.admin_list.presmerovaci_kod",
		sortAfter = "newUrl",
		defaultValue = "302"
    )
	Integer redirectCode;

	@Column(name="domain_name")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title = "groupedit.domain",
        perms = "multiDomain",
		sortAfter = "redirectCode",
		defaultValue = "{currentDomain}"
    )
	String domainName;

	@Column(name="new_url")
	@NotBlank
	@Size(max=255)
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title = "components.redirect.admin_list.nove_url",
		sortAfter = "oldUrl"
    )
	String newUrl;

	@Column(name="publish_date")
	@Temporal(TemporalType.TIMESTAMP)
    @DataTableColumn(
        inputType = DataTableColumnType.DATETIME,
        title = "components.redirect.admin_list.publish_date",
		sortAfter = "domainName",
        editor = {
            @DataTableColumnEditor(
				message="components.redirect.publishDateNote"
			)
        }
    )
	Date publishDate;

	public Long getUrlRedirectId() {
		return urlRedirectId;
	}

	public void setUrlRedirectId(Long urlRedirectId) {
		this.urlRedirectId = urlRedirectId;
	}

	public Date getInsertDate()
	{
		return insertDate == null ? null : (Date) insertDate.clone();
	}

	public void setInsertDate(Date insertDate)
	{
		this.insertDate = insertDate == null ? null : (Date) insertDate.clone();
	}

	public String getOldUrl()
	{
		return oldUrl;
	}

	public void setOldUrl(String oldUrl)
	{
		this.oldUrl = oldUrl;
	}

	public Integer getRedirectCode()
	{
		return redirectCode;
	}

	public void setRedirectCode(Integer redirectCode)
	{
		this.redirectCode = redirectCode;
	}

	public String getDomainName()
	{
		return domainName;
	}

	public void setDomainName(String domainName)
	{
		this.domainName = domainName;
	}

	public String getNewUrl()
	{
		return newUrl;
	}

	public void setNewUrl(String newUrl)
	{
		this.newUrl = newUrl;
	}

	@Override
	public Long getId()
	{
		return getUrlRedirectId();
	}

	@Override
	public void setId(Long id)
	{
		setUrlRedirectId(id);
	}

	public Date getPublishDate() {
		return publishDate;
	}

	public void setPublishDate(Date publishDate) {
		this.publishDate = publishDate;
	}

	@JsonIgnore
	public String getPublishTime() {
		return Tools.formatTime(this.getPublishDate());
	}
}