PGRFANetwork.java

/*
 * Copyright 2019 Global Crop Diversity Trust
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * 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.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.genesys.server.model.impl;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.Lob;
import javax.persistence.ManyToMany;
import javax.persistence.OrderBy;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

import lombok.Getter;
import lombok.Setter;
import org.genesys.blocks.model.AuditedVersionedModel;
import org.hibernate.annotations.Type;

import com.fasterxml.jackson.annotation.JsonIgnore;

@Entity
@Table(name = "organization")
@Getter
@Setter
public class PGRFANetwork extends AuditedVersionedModel {

	private static final long serialVersionUID = 2710908645431936666L;

	@NotNull
	@Size(max = 150)
	@Column(nullable = false, length = 150, unique = true)
	private String slug;

	@Lob
	@Type(type = "org.hibernate.type.TextType")
	private String title;

	@JsonIgnore
	@ManyToMany(cascade = {}, fetch = FetchType.LAZY, targetEntity = FaoInstitute.class)
	@JoinTable(name = "organizationinstitute", joinColumns = @JoinColumn(name = "organizationId"), inverseJoinColumns = @JoinColumn(name = "instituteId"))
	@OrderBy("code")
	private List<FaoInstitute> members = new ArrayList<FaoInstitute>();

	@Column(name = "accessionFilter")
	private String accessionFilter;

	@Override
	public boolean canEqual(Object other) {
		return other instanceof PGRFANetwork;
	}
}