MediaGroupBean.java

package sk.iway.spirit.model;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.Table;
import javax.persistence.TableGenerator;
import javax.persistence.Transient;
import javax.validation.constraints.NotBlank;

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.DataTableColumnNested;

@Entity
@Table(name="media_groups")
@EntityListeners(sk.iway.iwcm.system.adminlog.AuditEntityListener.class)
@EntityListenersType(sk.iway.iwcm.Adminlog.TYPE_MEDIA_GROUP)
public class MediaGroupBean extends ActiveRecordRepository implements Serializable {

	private static final long serialVersionUID = -1L;

	public MediaGroupBean() {}

	@Id
	@GeneratedValue(generator="WJGen_MediaGroup")
	@TableGenerator(name="WJGen_MediaGroup",pkColumnValue="MediaGroup")
	@Column(name = "media_group_id")
	@DataTableColumn(inputType = DataTableColumnType.ID, renderFormat = "dt-format-selector", title = "editor.cell.id")
	private Long id;

	@NotBlank
	@Column(name = "media_group_name")
	@DataTableColumn(inputType = DataTableColumnType.OPEN_EDITOR, renderFormat = "dt-format-text", title = "editor.perex_group_name", editor = {
        @DataTableColumnEditor(type = "text") })
	private String mediaGroupName;

	@Column(name = "available_groups")
	private String availableGroups;

	@Transient
	@DataTableColumnNested
	private MediaGroupEditorFields editorFields = null;

	@Lob
	@Column(name = "related_pages")
	String relatedPages;

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

	public void setMediaGroupId(int mediaGroupId) {
		this.id = Long.valueOf(mediaGroupId);
	}

	public String getMediaGroupName() {
		return mediaGroupName;
	}

	public void setMediaGroupName(String mediaGroupName) {
		this.mediaGroupName = mediaGroupName;
	}


	public String getAvailableGroups() {
		return availableGroups;
	}

	public void setAvailableGroups(String availableGroups) {
		this.availableGroups = availableGroups;
	}

	public String getRelatedPages() {
		return relatedPages;
	}

	public void setRelatedPages(String relatedPages) {
		this.relatedPages = relatedPages;
	}

	public MediaGroupEditorFields getEditorFields() {
		if(editorFields == null) {
			//call fromMediaGroupBean to inicialize MediaGroupEditorFields.availableGroups
			editorFields = new MediaGroupEditorFields();
			editorFields.fromMediaGroupBean(this);
		}
		return editorFields;
	}

	public void setEditorFields(MediaGroupEditorFields editorFields) {
		if(editorFields != null) {
			//call toMediaGroupBean to return String of group id's, separeted by "," and set this AvailableGroups
			String newGroupIds = editorFields.toMediaGroupBean(this);
			this.setAvailableGroups(newGroupIds);
		}
		this.editorFields = editorFields;
	}

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

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