Skip to content

Commit 39eef4d

Browse files
TRAX course replication
1 parent ed2dacf commit 39eef4d

3 files changed

Lines changed: 102 additions & 0 deletions

File tree

api/src/main/java/ca/bc/gov/educ/api/pen/replication/choreographer/ChoreographEventHandler.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,12 @@ public void handleEvent(@NonNull final Event event) {
9292
final EventService<GraduationStudentRecord> gradStudentCitzService = (EventService<GraduationStudentRecord>) this.eventServiceMap.get(UPDATE_GRAD_STUDENT_CITIZENSHIP.toString());
9393
gradStudentCitzService.processEvent(gradStudentRecordForCitz, event);
9494
break;
95+
case "UPDATE_SCHOOL_OF_RECORD":
96+
log.info("Processing UPDATE_SCHOOL_OF_RECORD event record :: {} ", event);
97+
val schoolOfRecordUpdate = JsonUtil.getJsonObjectFromString(StudentSchoolOfRecordUpdate.class, event.getEventPayload());
98+
final EventService<StudentSchoolOfRecordUpdate> schoolOfRecordUpdateEventService = (EventService<StudentSchoolOfRecordUpdate>) this.eventServiceMap.get(UPDATE_SCHOOL_OF_RECORD.toString());
99+
schoolOfRecordUpdateEventService.processEvent(schoolOfRecordUpdate, event);
100+
break;
95101
case "ADD_POSSIBLE_MATCH":
96102
final List<PossibleMatch> possibleMatchList = JsonUtil.objectMapper.readValue(event.getEventPayload(), new TypeReference<>() {
97103
});
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
package ca.bc.gov.educ.api.pen.replication.service;
2+
3+
import ca.bc.gov.educ.api.pen.replication.model.Event;
4+
import ca.bc.gov.educ.api.pen.replication.repository.EventRepository;
5+
import ca.bc.gov.educ.api.pen.replication.rest.RestUtils;
6+
import ca.bc.gov.educ.api.pen.replication.struct.GraduationStudentRecord;
7+
import ca.bc.gov.educ.api.pen.replication.struct.StudentSchoolOfRecordUpdate;
8+
import jakarta.persistence.EntityManager;
9+
import jakarta.persistence.EntityManagerFactory;
10+
import lombok.extern.slf4j.Slf4j;
11+
import lombok.val;
12+
import org.apache.commons.lang3.StringUtils;
13+
import org.springframework.stereotype.Service;
14+
15+
import static ca.bc.gov.educ.api.pen.replication.constants.EventType.UPDATE_GRAD_STUDENT_CITIZENSHIP;
16+
import static ca.bc.gov.educ.api.pen.replication.constants.EventType.UPDATE_SCHOOL_OF_RECORD;
17+
18+
@Service
19+
@Slf4j
20+
public class SchoolOfRecordUpdateService extends BaseService<StudentSchoolOfRecordUpdate> {
21+
22+
private final TraxStudentService traxStudentService;
23+
/**
24+
* The Rest utils.
25+
*/
26+
private final RestUtils restUtils;
27+
28+
public SchoolOfRecordUpdateService(final EntityManagerFactory emf, final EventRepository eventRepository, TraxStudentService traxStudentService, final RestUtils restUtils) {
29+
super(eventRepository, emf);
30+
this.traxStudentService = traxStudentService;
31+
this.restUtils = restUtils;
32+
}
33+
34+
/**
35+
* Process event.
36+
*
37+
* @param event the event
38+
*/
39+
@Override
40+
public void processEvent(final StudentSchoolOfRecordUpdate schoolOfRecordUpdate, final Event event) {
41+
var studentPEN = restUtils.getStudentPen(schoolOfRecordUpdate.getStudentID());
42+
val existingTraxStudentRecord = this.traxStudentService.findTraxStudentByPen(StringUtils.rightPad(studentPEN, 10));
43+
if (existingTraxStudentRecord.isPresent()) {
44+
val existingTraxStudent = existingTraxStudentRecord.get();
45+
var school = restUtils.getSchoolBySchoolID(schoolOfRecordUpdate.getSchoolOfRecordID());
46+
existingTraxStudent.setMincode(school.get().getMincode());
47+
48+
log.info("Processing choreography update event with ID {} :: payload is: {}", event.getEventId(), existingTraxStudent);
49+
this.traxStudentService.saveTraxStudent(existingTraxStudent);
50+
}
51+
this.updateEvent(event);
52+
}
53+
54+
55+
/**
56+
* Gets event type.
57+
*
58+
* @return the event type
59+
*/
60+
@Override
61+
public String getEventType() {
62+
return UPDATE_SCHOOL_OF_RECORD.toString();
63+
}
64+
65+
@Override
66+
protected void buildAndExecutePreparedStatements(final EntityManager em, final StudentSchoolOfRecordUpdate schoolOfRecordUpdate) {
67+
// Not required this child class use repository pattern of spring.
68+
}
69+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package ca.bc.gov.educ.api.pen.replication.struct;
2+
3+
import ca.bc.gov.educ.api.gradstudent.model.dto.BaseModel;
4+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
5+
import lombok.Data;
6+
import lombok.EqualsAndHashCode;
7+
import lombok.NoArgsConstructor;
8+
import lombok.ToString;
9+
import lombok.experimental.SuperBuilder;
10+
11+
import java.io.Serializable;
12+
13+
@Data
14+
@SuperBuilder
15+
@NoArgsConstructor
16+
@EqualsAndHashCode(callSuper = true)
17+
@JsonIgnoreProperties(ignoreUnknown = true)
18+
@ToString(callSuper = true)
19+
public class StudentSchoolOfRecordUpdate extends BaseRequest implements Serializable {
20+
21+
private static final long serialVersionUID = 1L;
22+
23+
private String studentID;
24+
25+
private String schoolOfRecordID;
26+
27+
}

0 commit comments

Comments
 (0)