Skip to content

Commit

Permalink
THE-1346 : Stockage préparation des personnes en mémoire
Browse files Browse the repository at this point in the history
  • Loading branch information
TristanReamot committed Sep 5, 2024
1 parent e0a4fb3 commit 9cf29f5
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,13 @@ public class PersonneCacheUtils {
private String tablePersonneName;
private String nomIndex;

public PersonneCacheUtils(JdbcTemplate jdbcTemplate, String tablePersonneName, String nomIndex) {
private List<PersonneModelES> personneCacheList;

public PersonneCacheUtils(JdbcTemplate jdbcTemplate, String tablePersonneName, String nomIndex, List<PersonneModelES> personneCacheList) {
this.jdbcTemplate = jdbcTemplate;
this.tablePersonneName = tablePersonneName;
this.nomIndex = nomIndex;
this.personneCacheList = personneCacheList;
}

public void initialisePersonneCacheBDD() {
Expand All @@ -52,6 +55,10 @@ public void ajoutPersonneDansBDD(Object personneModelES, String ppn) {
}
}

public void ajoutPersonneEnMemoire(PersonneModelES personneModelES) {
personneCacheList.add(personneModelES);
}

public PersonneModelES getPersonneModelBDD(String ppn) throws IOException {
try {

Expand Down Expand Up @@ -102,14 +109,21 @@ public List<RecherchePersonneModelES> getAllRecherchePersonneModelBDD() throws I
}

public boolean estPresentDansBDD(String ppn) throws IOException {
if (ppn != null && !ppn.equals("")) {
if (ppn != null && !ppn.isEmpty()) {
return jdbcTemplate.queryForList("select * from " + tablePersonneName + " where ppn = ? and nom_index = ?", ppn, nomIndex).size() > 0;
} else {
return false;
}

}

public boolean estPresentEnMemoire(String ppn) {
if (ppn != null && !ppn.isEmpty()) {
return personneCacheList.stream().anyMatch(personneModelES -> personneModelES.getPpn().equals(ppn));
}
return false;
}

public void updatePersonneDansBDD(PersonneModelES personneCourante) throws IOException, InterruptedException {

try {
Expand All @@ -132,6 +146,15 @@ public void updatePersonneDansBDD(PersonneModelES personneCourante) throws IOExc
//jdbcTemplate.update("commit");
}

public void updatePersonneEnMemoire(PersonneModelES personneCourante) {
PersonneModelES personnePresentEnMemoire =
personneCacheList.stream().filter(personneModelES -> personneModelES.getPpn().equals(personneCourante.getPpn())).findAny().get();

personnePresentEnMemoire.getTheses_id().addAll(personneCourante.getTheses_id());
personnePresentEnMemoire.getTheses().addAll(personneCourante.getTheses());
personnePresentEnMemoire.getRoles().addAll(personneCourante.getRoles());
}

public boolean deletePersonneBDD(String ppn) throws IOException {
try {
Object[] args = new Object[]{ppn};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;

Expand All @@ -36,6 +39,8 @@ public class PersonnesBDDWriter implements ItemWriter<TheseModel> {
private AtomicInteger nombreDePersonnesUpdated = new AtomicInteger(0);
private AtomicInteger nombreDePersonnesUpdatedDansCeChunk = new AtomicInteger(0);

private List<PersonneModelES> personneCacheList = Collections.synchronizedList(new ArrayList<>());

private PersonneCacheUtils personneCacheUtils;

private final JdbcTemplate jdbcTemplate;
Expand All @@ -57,7 +62,8 @@ public void write(List<? extends TheseModel> items) throws Exception {
this.personneCacheUtils = new PersonneCacheUtils(
jdbcTemplate,
tablePersonneName,
nomIndex
nomIndex,
personneCacheList
);

nombreDePersonnesUpdatedDansCeChunk.set(0);
Expand All @@ -69,14 +75,14 @@ public void write(List<? extends TheseModel> items) throws Exception {
nombreDePersonnes.incrementAndGet();
log.debug("ppn : " + personneModelES.getPpn());
log.debug("nom : " + personneModelES.getNom());
if (personneCacheUtils.estPresentDansBDD(personneModelES.getPpn())) {
if (personneCacheUtils.estPresentEnMemoire(personneModelES.getPpn())) {
log.debug("update");
personneCacheUtils.updatePersonneDansBDD(personneModelES);
personneCacheUtils.updatePersonneEnMemoire(personneModelES);
nombreDePersonnesUpdated.incrementAndGet();
nombreDePersonnesUpdatedDansCeChunk.incrementAndGet();
} else {
log.debug("ajout");
personneCacheUtils.ajoutPersonneDansBDD(personneModelES, personneModelES.getPpn());
personneCacheUtils.ajoutPersonneEnMemoire(personneModelES);
}
}
}
Expand Down

0 comments on commit 9cf29f5

Please sign in to comment.