Commit 7dadd56a authored by tbilos's avatar tbilos
Browse files

Merge branch 'main' into...

Merge branch 'main' into 16-change-ownership-of-performanceevaluation-from-report-to-agentassignment-uml
parents 603229b3 56997395
Pipeline #123046 waiting for manual action with stage
package cz.fi.muni.pa165.seminar4.group7.secretservice.dao; package cz.fi.muni.pa165.seminar4.group7.secretservice.dao;
import cz.fi.muni.pa165.seminar4.group7.secretservice.entity.Agent; import cz.fi.muni.pa165.seminar4.group7.secretservice.entity.Agent;
import org.springframework.data.repository.CrudRepository;
import java.util.List; import java.util.List;
/** /**
* @author Juraj Fiala * @author Juraj Fiala
*/ */
public interface AgentDao { public interface AgentDao extends CrudRepository<Agent, Long> {
void create(Agent a);
List<Agent> findAll();
Agent findById(Long id);
void remove(Agent a);
} }
package cz.fi.muni.pa165.seminar4.group7.secretservice.dao;
import cz.fi.muni.pa165.seminar4.group7.secretservice.entity.Agent;
import org.springframework.stereotype.Repository;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import java.util.List;
/**
* @author Juraj Fiala
*/
@Repository
public class AgentDaoImpl implements AgentDao {
@PersistenceContext
private EntityManager em;
public AgentDaoImpl(EntityManager em) {
this.em = em;
}
@Override
public void create(Agent a) {
em.persist(a);
}
@Override
public List<Agent> findAll() {
return em.createQuery("select a from Agent a", Agent.class).getResultList();
}
@Override
public Agent findById(Long id) {
return em.find(Agent.class, id);
}
@Override
public void remove(Agent a) {
em.remove(a);
}
}
\ No newline at end of file
package cz.fi.muni.pa165.seminar4.group7.secretservice.dao; package cz.fi.muni.pa165.seminar4.group7.secretservice.dao;
import cz.fi.muni.pa165.seminar4.group7.secretservice.entity.AgentAssignment;
import cz.fi.muni.pa165.seminar4.group7.secretservice.entity.Report; import cz.fi.muni.pa165.seminar4.group7.secretservice.entity.Report;
import org.springframework.data.repository.CrudRepository;
import java.util.List; import java.util.List;
/** /**
* @author Jan Smejkal * @author Jan Smejkal
*/ */
public interface ReportDao { public interface ReportDao extends CrudRepository<Report, Long> {
void create(Report report);
List<Report> findAll();
Report findById(long id);
void remove(Report report);
} }
package cz.fi.muni.pa165.seminar4.group7.secretservice.dao;
import cz.fi.muni.pa165.seminar4.group7.secretservice.entity.Report;
import java.util.List;
import org.springframework.stereotype.Repository;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
/**
* @author Jan Smejkal
*/
@Repository
public class ReportDaoImpl implements ReportDao {
@PersistenceContext
private EntityManager em;
public ReportDaoImpl(EntityManager em) {
this.em = em;
}
@Override
public void create(Report report) {
em.persist(report);
}
@Override
public List<Report> findAll() {
return em.createQuery("select r from Report r", Report.class).getResultList();
}
@Override
public Report findById(long id) {
return em.find(Report.class, id);
}
@Override
public void remove(Report report) {
em.remove(report);
}
}
\ No newline at end of file
package cz.fi.muni.pa165.seminar4.group7.secretservice.entity; package cz.fi.muni.pa165.seminar4.group7.secretservice.entity;
import lombok.AccessLevel;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.experimental.Accessors;
import javax.persistence.*; import javax.persistence.*;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects;
/** /**
* @author Juraj Fiala * @author Juraj Fiala
*/ */
@Entity @Entity
@Getter
@Setter
@Accessors(chain = true)
public class Agent { public class Agent {
@Id @Id
@Getter
@Setter
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id; private Long id;
@OneToMany @OneToMany
@Getter @Setter(AccessLevel.NONE)
private List<Skill> skills = new ArrayList<>(); private List<Skill> skills = new ArrayList<>();
@Getter private String training = "";
@Setter
private String training;
@OneToMany @OneToMany
@Getter @Setter(AccessLevel.NONE)
private List<CodeName> codeNames; private List<CodeName> codeNames = new ArrayList<>();
@OneToMany(mappedBy = "agent") @OneToMany(mappedBy = "agent")
@Getter @Getter
...@@ -42,7 +44,28 @@ public class Agent { ...@@ -42,7 +44,28 @@ public class Agent {
codeNames.add(codeName); codeNames.add(codeName);
} }
public void removeCodeName(CodeName codeName) {
codeNames.remove(codeName);
}
public void addSkill(Skill skill) { public void addSkill(Skill skill) {
skills.add(skill); skills.add(skill);
} }
public void removeSkill(Skill skill) {
skills.remove(skill);
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Agent)) return false;
Agent agent = (Agent) o;
return Objects.equals(getSkills(), agent.getSkills()) && Objects.equals(getTraining(), agent.getTraining()) && Objects.equals(getCodeNames(), agent.getCodeNames());
}
@Override
public int hashCode() {
return Objects.hash(getSkills(), getTraining(), getCodeNames());
}
} }
package cz.fi.muni.pa165.seminar4.group7.secretservice.entity; package cz.fi.muni.pa165.seminar4.group7.secretservice.entity;
import lombok.AccessLevel;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.experimental.Accessors;
import javax.persistence.*; import javax.persistence.*;
import java.sql.Date; import java.sql.Date;
import java.util.HashSet;
import java.util.Set;
/** /**
* @author Tomáš Biloš * @author Tomáš Biloš
*
* Entity representing assignment of an agent in a mission. Contains report by agent participating in the mission and
* evaluation of his performance from his superiors.
*/ */
@Entity @Entity
@Getter
@Setter
@Accessors(chain = true)
public class AgentAssignment { public class AgentAssignment {
@Id @Id
@Column(name = "id", nullable = false) @Column(name = "id", nullable = false)
@Getter
@Setter
private Long id; private Long id;
@Getter
@Setter
private Date start; private Date start;
@Getter
@Setter
private int durationInDays; private int durationInDays;
@OneToOne @OneToOne
@JoinColumn(name = "report_id") @JoinColumn(name = "report_id")
@Getter
@Setter
private Report report; private Report report;
@ManyToOne @ManyToOne
@JoinColumn(name = "mission_id", referencedColumnName = "id") @JoinColumn(name = "mission_id", referencedColumnName = "id")
@Getter
@Setter
private Mission mission; private Mission mission;
@ManyToOne @ManyToOne
@Getter
@Setter
private Agent agent; private Agent agent;
public AgentAssignment() {} @OneToMany
@Setter(AccessLevel.NONE)
private Set<PerformanceEvaluation> performanceEvaluations = new HashSet<>();
public void addPerformanceEvaluation(PerformanceEvaluation performanceEvaluation) {
performanceEvaluations.add(performanceEvaluation);
}
public void removePerformanceEvaluation(PerformanceEvaluation performanceEvaluation) {
performanceEvaluations.remove(performanceEvaluation);
}
// TODO equal & hashcode
} }
...@@ -4,31 +4,37 @@ import lombok.Getter; ...@@ -4,31 +4,37 @@ import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import javax.persistence.*; import javax.persistence.*;
import java.util.Objects;
/** /**
* @author Juraj Fiala * @author Juraj Fiala
*/ */
@Entity @Entity
@Getter
@Setter
public class CodeName { public class CodeName {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
@Getter
@Setter
private Long id; private Long id;
@Getter
@Setter
private String codeName = ""; private String codeName = "";
@ManyToOne public CodeName(String codeName) {
@Getter
@Setter
private Agent agent;
public CodeName(Agent agent, String codeName) {
this.agent = agent;
this.codeName = codeName; this.codeName = codeName;
} }
public CodeName() { } public CodeName() { }
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof CodeName)) return false;
CodeName codeName1 = (CodeName) o;
return Objects.equals(getCodeName(), codeName1.getCodeName());
}
@Override
public int hashCode() {
return Objects.hash(getCodeName());
}
} }
\ No newline at end of file
package cz.fi.muni.pa165.seminar4.group7.secretservice.entity; package cz.fi.muni.pa165.seminar4.group7.secretservice.entity;
import com.sun.istack.NotNull; import com.sun.istack.NotNull;
import lombok.AccessLevel;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.experimental.Accessors;
import javax.persistence.*; import javax.persistence.*;
import java.util.List; import java.util.HashSet;
import java.util.Objects; import java.util.Objects;
import java.util.Set;
/** /**
* @author Milan Mozolak * @author Milan Mozolak
*/ */
@Entity @Entity
@Getter
@Setter
@Accessors(chain = true)
public class Country { public class Country {
@Id @Id
@Column(name = "id", nullable = false) @Column(name = "id", nullable = false)
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
@Getter
@Setter
private Long id; private Long id;
@NotNull @NotNull
@Column(nullable = false) @Column(nullable = false)
@Getter
@Setter
private String code; private String code;
@NotNull @NotNull
@Column(nullable = false) @Column(nullable = false)
@Getter
@Setter
private String name; private String name;
@NotNull @NotNull
@Column(nullable = false) @Column(nullable = false)
@Getter
@Setter
private String demographics; private String demographics;
@NotNull @NotNull
@Column(nullable = false) @Column(nullable = false)
@Getter
@Setter
private String geography; private String geography;
@NotNull @NotNull
@Column(nullable = false) @Column(nullable = false)
@Getter
@Setter
private String communications; private String communications;
@NotNull @NotNull
@Column(nullable = false) @Column(nullable = false)
@Getter
@Setter
private String government; private String government;
@NotNull @NotNull
@Column(nullable = false) @Column(nullable = false)
@Getter
@Setter
private String economy; private String economy;
@NotNull @NotNull
@Column(nullable = false) @Column(nullable = false)
@Getter
@Setter
private String military; private String military;
@Getter @Setter(AccessLevel.NONE)
@Setter
@OneToMany(mappedBy = "country") @OneToMany(mappedBy = "country")
private List<Mission> missions; private Set<Mission> missions = new HashSet<>();
public void addMission(Mission mission) {
missions.add(mission);
mission.setCountry(this);
}
public void removeMission(Mission mission) {
missions.remove(mission);
mission.setCountry(null);
}
@Override @Override
public boolean equals(Object o) { public boolean equals(Object o) {
if (this == o) return true; if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false; if (o == null || getClass() != o.getClass()) return false;
Country country = (Country) o; Country country = (Country) o;
return code.equals(country.code);
return id.equals(country.id) && code.equals(country.code);
} }
@Override @Override
public int hashCode() { public int hashCode() {
return Objects.hash(id, code); return Objects.hash(code);
} }
} }
...@@ -3,6 +3,7 @@ package cz.fi.muni.pa165.seminar4.group7.secretservice.entity; ...@@ -3,6 +3,7 @@ package cz.fi.muni.pa165.seminar4.group7.secretservice.entity;
import cz.fi.muni.pa165.seminar4.group7.secretservice.enums.LanguageCode; import cz.fi.muni.pa165.seminar4.group7.secretservice.enums.LanguageCode;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;