Java tutorial
/** * This file is part of D.A.L.G.S. * * D.A.L.G.S is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * D.A.L.G.S is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with D.A.L.G.S. If not, see <http://www.gnu.org/licenses/>. */ package es.ucm.fdi.dalgs.domain; import java.io.Serializable; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Embedded; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; import com.fasterxml.jackson.annotation.JsonBackReference; import es.ucm.fdi.dalgs.domain.info.LearningGoalInfo; @Entity @Table(name = "learninggoal") public class LearningGoal implements Cloneable, Copyable<LearningGoal>, Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "id_learninggoal") private Long id; @Embedded private LearningGoalInfo info; @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) @JoinColumn(name = "id_competence") @JsonBackReference private Competence competence; @Column(name = "isDeleted", nullable = false, columnDefinition = "boolean default false") private Boolean isDeleted; public LearningGoal() { super(); this.isDeleted = false; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public LearningGoalInfo getInfo() { return info; } public void setInfo(LearningGoalInfo info) { this.info = info; } public Competence getCompetence() { return competence; } public void setCompetence(Competence competence) { this.competence = competence; } public Boolean getIsDeleted() { return isDeleted; } public void setDeleted(boolean isDeleted) { this.isDeleted = isDeleted; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((info == null) ? 0 : info.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; LearningGoal other = (LearningGoal) obj; if (info == null) { if (other.info != null) return false; } else if (!info.equals(other.info)) return false; return true; } public LearningGoal depth_copy() { LearningGoal copy = this.shallow_copy(); copy.id = null; copy.isDeleted = false; LearningGoalInfo lgInfo = copy.info.depth_copy(); copy.info = lgInfo; return copy; } public LearningGoal shallow_copy() { try { return (LearningGoal) super.clone(); } catch (CloneNotSupportedException e) { throw new RuntimeException(e); } } }