Feat: Ajout des premières classes JPA (Session et Activite complètes, pas les autres)

This commit is contained in:
Amaël Kesteman
2026-01-05 12:32:30 +01:00
parent bf45847ab8
commit afb6b8c73e
6 changed files with 179 additions and 2 deletions

3
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,3 @@
{
"java.configuration.updateBuildConfiguration": "interactive"
}

View File

@@ -28,7 +28,7 @@
<url/>
</scm>
<properties>
<java.version>25</java.version>
<java.version>17</java.version>
</properties>
<dependencies>
<dependency>
@@ -97,7 +97,13 @@
<artifactId>spring-boot-starter-thymeleaf-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.32</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>

View File

@@ -0,0 +1,53 @@
package hackathon.FrisbYEE.jpa;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;
import jakarta.persistence.ManyToOne;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import jakarta.persistence.Access;
import jakarta.persistence.AccessType;
import jakarta.persistence.CascadeType;
import jakarta.persistence.ElementCollection;
import jakarta.persistence.Entity;
@Entity
@Getter @Setter @NoArgsConstructor
@Access(AccessType.FIELD)
public class Activite implements Serializable {
@Id
@GeneratedValue
private Long id;
private String name;
private String theme;
private Long duree;
@ElementCollection
private List<String> dataActivite = new ArrayList<>();
@ManyToOne(cascade = CascadeType.PERSIST)
private Session session;
public Activite(String name) {
this.name = name;
}
public Activite(String name, String theme, List<String> dataActivite, Long duree) {
this.name = name;
this.theme = theme;
this.duree = duree;
this.dataActivite = dataActivite;
}
@Override
public String toString() {
return "Activite [id=" + id + " , name=" + name + "]";
}
}

View File

@@ -0,0 +1,28 @@
package hackathon.FrisbYEE.jpa;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;
import jakarta.persistence.ManyToMany;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.OneToMany;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.time.LocalDateTime;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import jakarta.persistence.Access;
import jakarta.persistence.AccessType;
import jakarta.persistence.CascadeType;
import jakarta.persistence.ElementCollection;
import jakarta.persistence.Entity;
@Entity
@Getter @Setter @NoArgsConstructor
@Access(AccessType.FIELD)
public class Athlete {
}

View File

@@ -0,0 +1,28 @@
package hackathon.FrisbYEE.jpa;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;
import jakarta.persistence.ManyToMany;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.OneToMany;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.time.LocalDateTime;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import jakarta.persistence.Access;
import jakarta.persistence.AccessType;
import jakarta.persistence.CascadeType;
import jakarta.persistence.ElementCollection;
import jakarta.persistence.Entity;
@Entity
@Getter @Setter @NoArgsConstructor
@Access(AccessType.FIELD)
public class Coach {
}

View File

@@ -0,0 +1,59 @@
package hackathon.FrisbYEE.jpa;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;
import jakarta.persistence.ManyToMany;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.OneToMany;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import jakarta.persistence.Access;
import jakarta.persistence.AccessType;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Entity;
@Entity
@Getter @Setter @NoArgsConstructor
@Access(AccessType.FIELD)
public class Session {
@Id
@GeneratedValue
private Long id;
private String name;
private Boolean isRecurrent;
private LocalDateTime creneau;
private Long duree;
private String groupe;
@ManyToOne(cascade = CascadeType.PERSIST)
private Coach coach; // un coach par session
@ManyToMany(cascade = CascadeType.PERSIST)
private List<Athlete> athletes = new ArrayList<>(); // plusieurs athlètes par session
@OneToMany(mappedBy = "session", cascade = CascadeType.PERSIST)
private List<Activite> activites = new ArrayList<>(); // plusieurs activités par session
public Session(String name) {
this.name = name;
}
public Session(String name, Boolean isRecurrent, LocalDateTime creneau, Long duree, String groupe) {
this.name = name;
this.isRecurrent = isRecurrent;
this.creneau = creneau;
this.duree = duree;
this.groupe = groupe;
}
@Override
public String toString() {
return "Session [id=" + id + " , name=" + name + "]";
}
}