Bonjour,

Avez-vous une idée pour factoriser ce code.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if (null != alertDTO.getCareerTypeId()) {
	mav.addObject("mainFamilies",
		jobService.findJobDTOs(getStrlLanguage(), alertDTO.getFunctionGroup(), alertDTO.getCareerTypeId(), null, null, null)
			.stream().collect(Collectors.toMap(JobDTO::getMainFamilyCode, JobDTO::getMainFamily, (oldValue, newValue) -> newValue, LinkedHashMap::new)));
}
 
if (null != alertDTO.getMainFamilyCode()) {
	mav.addObject("jobFamilies",
		jobService.findJobDTOs(getStrlLanguage(), alertDTO.getFunctionGroup(), alertDTO.getCareerTypeId(),alertDTO.getMainFamilyCode(), null, null)
			.stream().collect(Collectors.toMap(JobDTO::getFamilyCode, JobDTO::getFamily,(oldValue, newValue) -> newValue, LinkedHashMap::new)));
}
 
if (null != alertDTO.getFamilyCode()) {
	mav.addObject("jobs",
		jobService.findJobDTOs(getStrlLanguage(), alertDTO.getFunctionGroup(), alertDTO.getCareerTypeId(),alertDTO.getMainFamilyCode(), alertDTO.getFamilyCode(), null)
			.stream().collect(Collectors.toMap(JobDTO::getJobId, JobDTO::getJob, (oldValue, newValue) -> newValue, LinkedHashMap::new)));
}
J'ai pensé à mettre en place le Design strategy mais j'aurais toujours le même code à écrire. Y a-t-il un moyen de passer en paramètre les valeurs passées à Collectors.toMap comme ça je pourrais passer la liste retournée par findJobDTOs avec les 2 params de Collectors qui changes à chaque fois.

Si vous avez des remarque je suis preneur!

Merci d'avance,