Skip to content

Commit a893284

Browse files
Add TeamRepository saving functionality to RequestService
1 parent 7a6d364 commit a893284

File tree

5 files changed

+76
-2
lines changed

5 files changed

+76
-2
lines changed

src/main/java/de/tum/cit/aet/dataProcessing/service/RequestService.java

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,34 @@
11
package de.tum.cit.aet.dataProcessing.service;
22

33
import de.tum.cit.aet.core.dto.ArtemisCredentials;
4+
import de.tum.cit.aet.repositoryProcessing.domain.Student;
5+
import de.tum.cit.aet.repositoryProcessing.domain.TeamParticipation;
6+
import de.tum.cit.aet.repositoryProcessing.domain.TeamRepository;
7+
import de.tum.cit.aet.repositoryProcessing.domain.Tutor;
8+
import de.tum.cit.aet.repositoryProcessing.dto.ParticipantDTO;
9+
import de.tum.cit.aet.repositoryProcessing.dto.ParticipationDTO;
10+
import de.tum.cit.aet.repositoryProcessing.dto.TeamDTO;
411
import de.tum.cit.aet.repositoryProcessing.dto.TeamRepositoryDTO;
12+
import de.tum.cit.aet.repositoryProcessing.repository.TeamRepositoryRepository;
513
import de.tum.cit.aet.repositoryProcessing.service.RepositoryFetchingService;
614
import lombok.extern.slf4j.Slf4j;
715
import org.springframework.beans.factory.annotation.Autowired;
816
import org.springframework.stereotype.Service;
917

18+
import java.util.ArrayList;
1019
import java.util.List;
1120

1221
@Service
1322
@Slf4j
1423
public class RequestService {
1524

1625
private final RepositoryFetchingService repositoryFetchingService;
26+
private final TeamRepositoryRepository teamRepositoryRepository;
1727

1828
@Autowired
19-
public RequestService(RepositoryFetchingService repositoryFetchingService) {
29+
public RequestService(RepositoryFetchingService repositoryFetchingService, TeamRepositoryRepository teamRepositoryRepository) {
2030
this.repositoryFetchingService = repositoryFetchingService;
31+
this.teamRepositoryRepository = teamRepositoryRepository;
2132
}
2233

2334
/**
@@ -28,6 +39,32 @@ public RequestService(RepositoryFetchingService repositoryFetchingService) {
2839
*/
2940
public List<TeamRepositoryDTO> fetchAndCloneRepositories(ArtemisCredentials credentials) {
3041
log.info("RequestService: Initiating repository fetch and clone process");
31-
return repositoryFetchingService.fetchAndCloneRepositories(credentials);
42+
List<TeamRepositoryDTO> repositories = repositoryFetchingService.fetchAndCloneRepositories(credentials);
43+
saveResults(repositories);
44+
return repositories;
45+
}
46+
47+
48+
/**
49+
* Saves the fetched repository information into the database.
50+
*
51+
* @param repositories List of TeamRepositoryDTO to be saved
52+
*/
53+
public void saveResults(List<TeamRepositoryDTO> repositories)
54+
{
55+
for (TeamRepositoryDTO repo : repositories) {
56+
ParticipantDTO tut = repo.participation().team().owner();
57+
Tutor tutor = new Tutor(tut.id(), tut.login(), tut.name());
58+
ParticipationDTO participation = repo.participation();
59+
TeamDTO team = participation.team();
60+
TeamParticipation teamParticipation = new TeamParticipation(participation.id(), team.id(), tutor, team.name(), team.shortName(), participation.repositoryUri(), participation.submissionCount());
61+
List<Student> students = new ArrayList<>();
62+
for (ParticipantDTO student : repo.participation().team().students()) {
63+
students.add(new Student(student.id(), student.login(), student.name(), teamParticipation));
64+
}
65+
TeamRepository teamRepo = new TeamRepository(teamParticipation, repo.localPath(), repo.isCloned(), repo.error());
66+
teamRepositoryRepository.save(teamRepo);
67+
log.info("Processed repository for team: {}", team.name());
68+
}
3269
}
3370
}

src/main/java/de/tum/cit/aet/repositoryProcessing/domain/Student.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@
22

33
import jakarta.persistence.*;
44
import lombok.Getter;
5+
import lombok.NoArgsConstructor;
56
import lombok.Setter;
67

78
import java.util.UUID;
89

910
@Getter
1011
@Setter
1112
@Entity
13+
@NoArgsConstructor
1214
@Table(name = "students")
1315
public class Student {
1416

@@ -42,4 +44,10 @@ public class Student {
4244
@JoinColumn(name = "teamParticipation_id")
4345
private TeamParticipation team;
4446

47+
public Student(Long id, String login, String name, TeamParticipation teamParticipation) {
48+
this.id = id;
49+
this.login = login;
50+
this.name = name;
51+
this.team = teamParticipation;
52+
}
4553
}

src/main/java/de/tum/cit/aet/repositoryProcessing/domain/TeamParticipation.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@
22

33
import jakarta.persistence.*;
44
import lombok.Getter;
5+
import lombok.NoArgsConstructor;
56
import lombok.Setter;
67

78
import java.util.UUID;
89

910
@Getter
1011
@Setter
1112
@Entity
13+
@NoArgsConstructor
1214
@Table(name = "participations")
1315
public class TeamParticipation {
1416

@@ -38,4 +40,14 @@ public class TeamParticipation {
3840

3941
@Column(name = "submission_count")
4042
private Integer submissionCount;
43+
44+
public TeamParticipation(Long participation, Long team, Tutor tutor, String name, String shortName, String repositoryUrl, Integer submissionCount) {
45+
this.participation = participation;
46+
this.team = team;
47+
this.tutor = tutor;
48+
this.name = name;
49+
this.shortName = shortName;
50+
this.repositoryUrl = repositoryUrl;
51+
this.submissionCount = submissionCount;
52+
}
4153
}

src/main/java/de/tum/cit/aet/repositoryProcessing/domain/TeamRepository.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@
22

33
import jakarta.persistence.*;
44
import lombok.Getter;
5+
import lombok.NoArgsConstructor;
56
import lombok.Setter;
67

78
import java.util.UUID;
89

910
@Getter
1011
@Setter
1112
@Entity
13+
@NoArgsConstructor
1214
@Table(name = "teamrepository")
1315
public class TeamRepository {
1416

@@ -29,4 +31,11 @@ public class TeamRepository {
2931

3032
@Column(name = "error")
3133
private String error;
34+
35+
public TeamRepository(TeamParticipation teamParticipation, String localPath, Boolean isCloned, String error) {
36+
this.teamParticipation = teamParticipation;
37+
this.localPath = localPath;
38+
this.isCloned = isCloned;
39+
this.error = error;
40+
}
3241
}

src/main/java/de/tum/cit/aet/repositoryProcessing/domain/Tutor.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@
22

33
import jakarta.persistence.*;
44
import lombok.Getter;
5+
import lombok.NoArgsConstructor;
56
import lombok.Setter;
67

78
import java.util.UUID;
89

910
@Getter
1011
@Setter
1112
@Entity
13+
@NoArgsConstructor
1214
@Table(name = "tutors")
1315
public class Tutor {
1416

@@ -25,4 +27,10 @@ public class Tutor {
2527

2628
@Column(name = "name")
2729
private String name;
30+
31+
public Tutor(Long id, String login, String name) {
32+
this.id = id;
33+
this.login = login;
34+
this.name = name;
35+
}
2836
}

0 commit comments

Comments
 (0)