package pl.edu.icm.saos.persistence.common;
import java.util.List;
import java.util.stream.Collectors;
import pl.edu.icm.saos.common.visitor.Visitor;
import pl.edu.icm.saos.persistence.model.Judgment;
import pl.edu.icm.saos.persistence.model.JudgmentReferencedRegulation;
import pl.edu.icm.saos.persistence.model.ReferencedCourtCase;
/**
* Visitor removing generated objects
* @author madryk
*/
public class UnenrichingVisitor implements Visitor {
//------------------------ LOGIC --------------------------
public void visit(DataObject dataObject) {
// do nothing
}
public void visit(Judgment judgment) {
removeGeneratedRefRegulations(judgment);
removeGeneratedRefCourtCases(judgment);
judgment.setMaxMoneyAmount(null);
}
//------------------------ PRIVATE --------------------------
private void removeGeneratedRefRegulations(Judgment judgment) {
for (JudgmentReferencedRegulation generatedRefRegulation : filterGenerated(judgment.getReferencedRegulations())) {
judgment.removeReferencedRegulation(generatedRefRegulation);
}
}
private void removeGeneratedRefCourtCases(Judgment judgment) {
for (ReferencedCourtCase generatedRefCourtCase : filterGenerated(judgment.getReferencedCourtCases())) {
judgment.removeReferencedCourtCase(generatedRefCourtCase);
}
}
private <T extends Generatable> List<T> filterGenerated(List<T> generatableObjects) {
return generatableObjects.stream().filter(o -> o.isGenerated()).collect(Collectors.toList());
}
}