package pl.edu.icm.saos.api.dump.judgment.mapping;
import org.springframework.stereotype.Service;
import pl.edu.icm.saos.api.dump.judgment.item.representation.SupremeCourtJudgmentItem;
import pl.edu.icm.saos.persistence.model.SupremeCourtChamber;
import pl.edu.icm.saos.persistence.model.SupremeCourtChamberDivision;
import pl.edu.icm.saos.persistence.model.SupremeCourtJudgment;
import pl.edu.icm.saos.persistence.model.SupremeCourtJudgmentForm;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
/**
* Provides functionality for mapping from {@link pl.edu.icm.saos.persistence.model.SupremeCourtJudgment SupremeCourtJudgment}
* into {@link pl.edu.icm.saos.api.dump.judgment.item.representation.SupremeCourtJudgmentItem SupremeCourtJudgmentItem}.
* @author pavtel
*/
@Service
public class DumpSupremeCourtJudgmentItemMapper {
//------------------------ LOGIC --------------------------
/**
* Fills item (only {@link pl.edu.icm.saos.persistence.model.SupremeCourtJudgment SupremeCourtJudgment} related
* fields) fields using {@link pl.edu.icm.saos.persistence.model.SupremeCourtJudgment SupremeCourtJudgment} fields.
* @param item representation.
* @param judgment to process.
*/
public void fillJudgmentsFieldsToItemRepresentation(SupremeCourtJudgmentItem item, SupremeCourtJudgment judgment){
item.setDivision(toDivision(judgment.getScChamberDivision()));
item.setPersonnelType(judgment.getPersonnelType());
item.setJudgmentForm(toForm(judgment.getScJudgmentForm()));
item.setChambers(toChambers(judgment.getScChambers()));
}
//------------------------ PRIVATE --------------------------
private SupremeCourtJudgmentItem.Division toDivision(SupremeCourtChamberDivision scChamberDivision) {
SupremeCourtJudgmentItem.Division view = new SupremeCourtJudgmentItem.Division();
view.setId(scChamberDivision.getId());
return view;
}
private SupremeCourtJudgmentItem.JudgmentForm toForm(SupremeCourtJudgmentForm scJudgmentForm) {
SupremeCourtJudgmentItem.JudgmentForm view = new SupremeCourtJudgmentItem.JudgmentForm();
view.setName(scJudgmentForm.getName());
return view;
}
private List<SupremeCourtJudgmentItem.Chamber> toChambers(List<SupremeCourtChamber> scChambers) {
if(scChambers == null){
scChambers = Collections.emptyList();
}
return scChambers.stream()
.map(chamber -> toChamberView(chamber))
.collect(Collectors.toList())
;
}
private SupremeCourtJudgmentItem.Chamber toChamberView(SupremeCourtChamber chamber) {
SupremeCourtJudgmentItem.Chamber view = new SupremeCourtJudgmentItem.Chamber();
view.setId(chamber.getId());
return view;
}
}