ProxyBean.java

package sk.iway.iwcm.components.proxy.jpa;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;

import lombok.Getter;
import lombok.Setter;
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;

@Entity
@Table(name = "proxy")
@Getter
@Setter
@EntityListeners(sk.iway.iwcm.system.adminlog.AuditEntityListener.class)
@EntityListenersType(sk.iway.iwcm.Adminlog.TYPE_PROXY_CREATE)
public class ProxyBean extends ActiveRecordRepository {

    @Id
    @Column(name = "proxy_id")
    @GeneratedValue(strategy = GenerationType.IDENTITY, generator = "S_proxy")
    @DataTableColumn(inputType = DataTableColumnType.ID, title="ID")
	private Long id;

    /*TAB BASIC*/
    @Column(name = "name")
    @DataTableColumn(
        inputType = DataTableColumnType.OPEN_EDITOR,
        title="components.proxy.name",
        tab = "basic"
    )
    @Size(max = 255)
    @NotBlank
    private String name;

    @Column(name = "local_url")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXTAREA,
        title="components.proxy.localUrl",
        tab = "basic"
    )
    @NotBlank
	private String localUrl;

    @Column(name = "remote_server")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title="components.proxy.remoteServer",
        tab = "basic"
    )
    @Size(max = 255)
    @NotBlank
	private String remoteServer;

    @Column(name = "remote_url")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title="components.proxy.remoteUrl",
        tab = "basic"
    )
    @Size(max = 255)
    @NotBlank
	private String remoteUrl;

    @Column(name = "remote_port")
    @DataTableColumn(
        inputType = DataTableColumnType.NUMBER,
        title="components.proxy.remotePort",
        tab = "basic"
    )
	private int remotePort;

    @Column(name = "encoding")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title="components.proxy.encoding",
        tab = "basic",
        visible = false
    )
    @Size(max = 16)
    @NotBlank
    private String encoding;

    @Column(name = "proxy_method")
    @DataTableColumn(
        inputType = DataTableColumnType.SELECT,
        title="components.proxy.proxyMethod",
        tab = "basic",
        visible = false,
        editor = {
			@DataTableColumnEditor(
				options = {
					@DataTableColumnEditorAttr(key = "ProxyByHttpClient4", value = "ProxyByHttpClient4"),
					@DataTableColumnEditorAttr(key = "ProxyBySocket", value = "ProxyBySocket")
				}
			)
		}
    )
    private String proxyMethod;

    @Column(name = "include_ext")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title="components.proxy.includeExt",
        tab = "basic",
        visible = false
    )
    @Size(max = 255)
    private String includeExt;

    @Column(name = "crop_start")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXTAREA,
        title="components.proxy.cropStart",
        tab = "basic",
        visible = false
    )
    @Size(max = 255)
	private String cropStart;

    @Column(name = "keep_crop_start")
    @DataTableColumn(
        inputType = DataTableColumnType.BOOLEAN,
        title="components.proxy.keepCropStart",
        tab = "basic",
        visible = false
    )
    private boolean keepCropStart;

    @Column(name = "crop_end")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXTAREA,
        title="components.proxy.cropEnd",
        tab = "basic",
        visible = false
    )
    @Size(max = 255)
	private String cropEnd;

    @Column(name = "keep_crop_end")
    @DataTableColumn(
        inputType = DataTableColumnType.BOOLEAN,
        title="components.proxy.keepCropEnd",
        tab = "basic",
        visible = false
    )
    private boolean keepCropEnd;


    /*TAB SECURITY*/
    @Column(name = "auth_method")
    @DataTableColumn(
        inputType = DataTableColumnType.SELECT,
        title="components.proxy.authMethod",
        tab = "security",
        visible = false,
        editor = {
			@DataTableColumnEditor(
				options = {
					@DataTableColumnEditorAttr(key = "", value = ""),
					@DataTableColumnEditorAttr(key = "NTLM", value = "ntlm"),
					@DataTableColumnEditorAttr(key = "Basic", value = "basic")
				},
                attr = {
                    @DataTableColumnEditorAttr(key = "data-dt-field-headline", value = "components.proxy.securityLogin")
                }
			)
		}
    )
    @Size(max = 16)
	private String authMethod;

    @Column(name = "auth_username")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title="components.proxy.authUsername",
        tab = "security",
        visible = false
    )
    @Size(max = 64)
	private String authUsername;

    @Column(name = "auth_password")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title="components.proxy.authPassword",
        tab = "security",
        visible = false
    )
    @Size(max = 64)
	private String authPassword;

    @Column(name = "auth_host")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title="components.proxy.authHost",
        tab = "security",
        visible = false
    )
    @Size(max = 64)
	private String authHost;

    @Column(name = "auth_domain")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title="components.proxy.authDomain",
        tab = "security",
        visible = false
    )
    @Size(max = 64)
	private String authDomain;

    @Column(name = "allowed_methods")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title="components.proxy.allowedMethods",
        tab = "security",
        visible = false
    )
    @Size(max = 64)
	private String allowedMethods;

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

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

	public int getProxyId() {
		if(id == null) return 0;
		return id.intValue();
	}

	public void setProxyId(int proxyId) {
		this.id = Long.valueOf(proxyId);
	}
}