GalleryDimension.java

package sk.iway.iwcm.components.gallery;

import java.util.Date;

import javax.persistence.*;

import com.drew.lang.annotations.NotNull;
import com.fasterxml.jackson.annotation.JsonIgnore;

import sk.iway.iwcm.Tools;
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;
import sk.iway.iwcm.system.datatable.annotations.DataTableColumnNested;

@Entity
@EntityListeners(sk.iway.iwcm.system.adminlog.AuditEntityListener.class)
@EntityListenersType(sk.iway.iwcm.Adminlog.TYPE_GALLERY)
@Table(name = "gallery_dimension")
public class GalleryDimension {

    @Id
    @Column(name = "dimension_id")
    @GeneratedValue(strategy = GenerationType.IDENTITY, generator = "S_gallery_dimension")
    @DataTableColumn(inputType=DataTableColumnType.ID, title="editor.cell.id", renderFormat = "dt-format-selector")
    private Long id;


    //Tab zakladne - START
    @Column(name = "gallery_name")
    @DataTableColumn(
        inputType = DataTableColumnType.OPEN_EDITOR,
        title = "components.gallery.name",
        renderFormat = "dt-format-text",
        tab = "basic"
    )
    private String name = "";

    @Column(name = "gallery_perex")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXTAREA,
        title = "editor.tab.perex",
        renderFormat = "dt-format-textarea",
        tab = "basic"
    )
    private String perex = "";

    @Column(name = "author")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title = "components.gallery.author",
        renderFormat = "dt-format-text",
        tab = "basic"
    )
    private String author = "";

    @Column(name = "create_date")
    @Temporal(TemporalType.TIMESTAMP)
    @DataTableColumn(
        inputType = DataTableColumnType.DATETIME,
        title = "components.gallery.createDate",
        renderFormat = "dt-format-date-time",
        tab = "basic"
    )
    private Date date;
    //Tab zakladne - END



    //Tab rozmery - START
    @Column(name = "resize_mode")
    @DataTableColumn(
        inputType = DataTableColumnType.SELECT,
        title = "admin.gallery.resizeMode",
        tab = "sizes",
        editor = {
            @DataTableColumnEditor(
                options = {
                    @DataTableColumnEditorAttr(key = "admin.gallery.shrinkToFit", value = "S"),
                    @DataTableColumnEditorAttr(key = "admin.gallery.cropToFit", value = "C"),
                    @DataTableColumnEditorAttr(key = "admin.gallery.accurateWidthHeight", value = "A"),
                    @DataTableColumnEditorAttr(key = "admin.gallery.accurateWidth", value = "W"),
                    @DataTableColumnEditorAttr(key = "admin.gallery.accurateHeight", value = "H"),
                    @DataTableColumnEditorAttr(key = "admin.gallery.noMiniatures", value = "N")
                }
            )
        }
    )
    private String resizeMode;

    @Column(name = "image_width")
    @NotNull
    @DataTableColumn(
        inputType = DataTableColumnType.NUMBER,
        title = "gallery.image_width",
        renderFormat = "dt-format-number",
        tab = "sizes",
        editor = {
            @DataTableColumnEditor(
                attr = {
                    @DataTableColumnEditorAttr(key = "data-dt-field-hr", value = "before"),
                    @DataTableColumnEditorAttr(key = "data-dt-field-headline", value = "gallery.preview_size")
                }
            )
        }
    )
    private Integer imageWidth = 160;

    @Column(name = "image_height")
    @NotNull
    @DataTableColumn(
        inputType = DataTableColumnType.NUMBER,
        title = "gallery.image_height",
        renderFormat = "dt-format-number",
        tab = "sizes"
    )
    private Integer imageHeight = 120;

    @Column(name = "normal_width")
    @NotNull
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT_NUMBER,
        title = "gallery.image_width",
        renderFormat = "dt-format-number",
        tab = "sizes",
        editor = {
            @DataTableColumnEditor(
                attr = {
                    @DataTableColumnEditorAttr(key = "data-dt-field-hr", value = "before"),
                    @DataTableColumnEditorAttr(key = "data-dt-field-headline", value = "gallery.normal_size")
                }
            )
        }
    )
    private Integer normalWidth = 750;

    @Column(name = "normal_height")
    @NotNull
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT_NUMBER,
        title = "gallery.image_height",
        renderFormat = "dt-format-number",
        tab = "sizes"
    )
    private Integer normalHeight = 560;
    //Tab rozmery - END




    //Tab Vodotlac - START
    @Column(name = "watermark")
    @DataTableColumn(
        inputType = DataTableColumnType.ELFINDER,
        title = "components.gallery.watermark",
        tab = "watermark"
    )
    private String watermark;

    @Column(name = "watermark_placement")
    @DataTableColumn(
        inputType = DataTableColumnType.SELECT,
        title = "components.gallery.watermark_placement",
        tab = "watermark",
        editor = {
            @DataTableColumnEditor(
                options = {
                    @DataTableColumnEditorAttr(key = "components.custom_style.alignCenter", value = "Center"),
                    @DataTableColumnEditorAttr(key = "components.gallery.watermark.South", value = "South"),
                    @DataTableColumnEditorAttr(key = "components.gallery.watermark.SouthEast", value = "SouthEast"),
                    @DataTableColumnEditorAttr(key = "components.gallery.watermark.East", value = "East"),
                    @DataTableColumnEditorAttr(key = "components.gallery.watermark.NorthEast", value = "NorthEast"),
                    @DataTableColumnEditorAttr(key = "components.gallery.watermark.North", value = "North"),
                    @DataTableColumnEditorAttr(key = "components.gallery.watermark.NorthWest", value = "NorthWest"),
                    @DataTableColumnEditorAttr(key = "components.gallery.watermark.West", value = "West"),
                    @DataTableColumnEditorAttr(key = "components.gallery.watermark.SouthWest", value = "SouthWest")
                }
            )
        }
    )
    private String watermarkPlacement;

    @Column(name = "watermark_saturation")
    @DataTableColumn(
        inputType = DataTableColumnType.SELECT,
        title = "components.gallery.watermark_saturation",
        tab = "watermark",
        editor = {
            @DataTableColumnEditor(
                options = {
                    @DataTableColumnEditorAttr(key = "10%", value = "10"),
                    @DataTableColumnEditorAttr(key = "20%", value = "20"),
                    @DataTableColumnEditorAttr(key = "30%", value = "30"),
                    @DataTableColumnEditorAttr(key = "40%", value = "40"),
                    @DataTableColumnEditorAttr(key = "50%", value = "50"),
                    @DataTableColumnEditorAttr(key = "60%", value = "60"),
                    @DataTableColumnEditorAttr(key = "70%", value = "70"),
                    @DataTableColumnEditorAttr(key = "80%", value = "80"),
                    @DataTableColumnEditorAttr(key = "90%", value = "90"),
                    @DataTableColumnEditorAttr(key = "100%", value = "100")
                }
            )
        }
    )
    private Integer watermarkSaturation = 70;
    //Tab Vodotlac - END



    //Other columns
    @Column(name = "image_path")
    @DataTableColumn(
        inputType = DataTableColumnType.TEXT,
        title = "sync.path",
        tab = "basic",
        editor = {
            @DataTableColumnEditor(
                attr = {
                    @DataTableColumnEditorAttr(key = "disabled", value = "disabled")
                }
            )
        }
    )
    private String path;

    @Column(name = "views")
    private int views = 0;

    @Column(name = "domain_id")
    private Integer domainId;

    @Transient
    @DataTableColumnNested
    private GalleryDimensionEditorFields editorFields = null;

    public GalleryDimension() {}

    public Long getId() {
        return id;
    }

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

    public String getPath() {
        return path;
    }

    public void setPath(String path) {
        this.path = path;
    }

    @JsonIgnore
    public String getParentPath() {
        return path.substring(0, path.lastIndexOf("/"));
    }

    @JsonIgnore
    public String getNameFromPath() {
        String[] tokens = Tools.getTokens(path, "/");
        return tokens[tokens.length - 1];
    }

    public String getName() {
        return name;
    }

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

    public String getPerex() {
        return perex;
    }

    public void setPerex(String perex) {
        this.perex = perex;
    }

    public Date getDate() {
        return date;
    }

    public void setDate(Date date) {
        this.date = date;
    }

    public int getViews() {
        return views;
    }

    public void setViews(int views) {
        this.views = views;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public String getResizeMode() {
        return resizeMode;
    }

    public void setResizeMode(String resizeMode) {
        this.resizeMode = resizeMode;
    }

    public Integer getImageWidth() {
        return imageWidth;
    }

    public void setImageWidth(Integer imageWidth) {
        this.imageWidth = imageWidth;
    }

    public Integer getImageHeight() {
        return imageHeight;
    }

    public void setImageHeight(Integer imageHeight) {
        this.imageHeight = imageHeight;
    }

    public Integer getNormalWidth() {
        return normalWidth;
    }

    public void setNormalWidth(Integer normalWidth) {
        this.normalWidth = normalWidth;
    }

    public Integer getNormalHeight() {
        return normalHeight;
    }

    public void setNormalHeight(Integer normalHeight) {
        this.normalHeight = normalHeight;
    }

    public Integer getDomainId() {
        return domainId;
    }

    public void setDomainId(Integer domainId) {
        this.domainId = domainId;
    }

    public Integer getWatermarkSaturation() {
        return watermarkSaturation;
    }

    public void setWatermarkSaturation(Integer watermarkSaturation) {
        this.watermarkSaturation = watermarkSaturation;
    }

    public String getWatermark() {
        return watermark;
    }

    public void setWatermark(String watermark) {
        this.watermark = watermark;
    }

    public String getWatermarkPlacement() {
        return watermarkPlacement;
    }

    public void setWatermarkPlacement(String watermarkPlacement) {
        this.watermarkPlacement = watermarkPlacement;
    }

    public GalleryDimensionEditorFields getEditorFields() {
        return editorFields;
    }

    public void setEditorFields(GalleryDimensionEditorFields editorFields) {
        this.editorFields = editorFields;
    }
}