package pl.edu.icm.saos.importer.notapi.nationalappealchamber.judgment.process; import java.util.List; import org.apache.commons.lang3.StringUtils; import org.joda.time.DateTime; import org.joda.time.LocalDate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import pl.edu.icm.saos.importer.common.JudgmentMeansOfAppealCreator; import pl.edu.icm.saos.importer.common.JudgmentResultCreator; import pl.edu.icm.saos.importer.common.converter.JudgmentDataExtractor; import pl.edu.icm.saos.importer.common.correction.ImportCorrectionList; import pl.edu.icm.saos.importer.notapi.common.SourceJudgeExtractorHelper; import pl.edu.icm.saos.importer.notapi.nationalappealchamber.judgment.json.SourceNacJudgment; import pl.edu.icm.saos.persistence.model.CourtCase; import pl.edu.icm.saos.persistence.model.Judge; import pl.edu.icm.saos.persistence.model.Judgment.JudgmentType; import pl.edu.icm.saos.persistence.model.CourtType; import pl.edu.icm.saos.persistence.model.JudgmentReferencedRegulation; import pl.edu.icm.saos.persistence.model.JudgmentResult; import pl.edu.icm.saos.persistence.model.JudgmentTextContent; import pl.edu.icm.saos.persistence.model.MeansOfAppeal; import pl.edu.icm.saos.persistence.model.NationalAppealChamberJudgment; import pl.edu.icm.saos.persistence.model.SourceCode; import com.google.common.collect.Lists; /** * @author madryk */ @Service("sourceNacJudgmentExtractor") public class SourceNacJudgmentExtractor implements JudgmentDataExtractor<NationalAppealChamberJudgment, SourceNacJudgment> { private JudgmentMeansOfAppealCreator judgmentMeansOfAppealCreator; private JudgmentResultCreator judgmentResultCreator; private SourceJudgeExtractorHelper sourceJudgeExtractorHelper; //------------------------ LOGIC -------------------------- @Override public NationalAppealChamberJudgment createNewJudgment() { return new NationalAppealChamberJudgment(); } @Override public List<CourtCase> extractCourtCases(SourceNacJudgment sourceJudgment, ImportCorrectionList correctionList) { List<CourtCase> courtCases = Lists.newArrayList(); sourceJudgment.getCaseNumbers().forEach(x -> courtCases.add(new CourtCase(x))); return courtCases; } @Override public JudgmentTextContent extractTextContent(SourceNacJudgment sourceJudgment, ImportCorrectionList correctionList) { JudgmentTextContent textContent = new JudgmentTextContent(); textContent.setRawTextContent(sourceJudgment.getTextContent()); return textContent; } @Override public DateTime extractPublicationDate(SourceNacJudgment sourceJudgment, ImportCorrectionList correctionList) { return null; } @Override public String extractPublisher(SourceNacJudgment sourceJudgment, ImportCorrectionList correctionList) { return null; } @Override public String extractReviser(SourceNacJudgment sourceJudgment, ImportCorrectionList correctionList) { return null; } @Override public List<Judge> extractJudges(SourceNacJudgment sourceJudgment, ImportCorrectionList correctionList) { return sourceJudgeExtractorHelper.extractJudges(sourceJudgment, correctionList); } @Override public List<JudgmentReferencedRegulation> extractReferencedRegulations( SourceNacJudgment sourceJudgment, ImportCorrectionList correctionList) { return Lists.newArrayList(); } @Override public JudgmentType extractJudgmentType(SourceNacJudgment sourceJudgment, ImportCorrectionList correctionList) { return JudgmentType.valueOf(sourceJudgment.getJudgmentType()); } @Override public List<String> extractLegalBases(SourceNacJudgment sourceJudgment, ImportCorrectionList correctionList) { return Lists.newArrayList(); } @Override public String extractSummary(SourceNacJudgment sourceJudgment, ImportCorrectionList correctionList) { return null; } @Override public String extractDecision(SourceNacJudgment sourceJudgment, ImportCorrectionList correctionList) { return null; } @Override public List<String> extractCourtReporters(SourceNacJudgment sourceJudgment, ImportCorrectionList correctionList) { return sourceJudgment.getCourtReporters(); } @Override public LocalDate extractJudgmentDate(SourceNacJudgment sourceJudgment, ImportCorrectionList correctionList) { return sourceJudgment.getJudgmentDate(); } @Override public LocalDate extractReceiptDate(SourceNacJudgment sourceJudgment, ImportCorrectionList correctionList) { return sourceJudgment.getReceiptDate(); } @Override public List<String> extractLowerCourtJudgments(SourceNacJudgment sourceJudgment, ImportCorrectionList correctionList) { return Lists.newArrayList(sourceJudgment.getLowerCourtJudgments()); } @Override public MeansOfAppeal extractMeansOfAppeal(SourceNacJudgment sourceJudgment, ImportCorrectionList correctionList) { if (StringUtils.isEmpty(sourceJudgment.getMeansOfAppeal())) { return null; } return judgmentMeansOfAppealCreator.fetchOrCreateMeansOfAppeal(CourtType.NATIONAL_APPEAL_CHAMBER, sourceJudgment.getMeansOfAppeal()); } @Override public JudgmentResult extractJudgmentResult(SourceNacJudgment sourceJudgment, ImportCorrectionList correctionList) { if (StringUtils.isEmpty(sourceJudgment.getJudgmentResult())) { return null; } return judgmentResultCreator.fetchOrCreateJudgmentResult(CourtType.NATIONAL_APPEAL_CHAMBER, sourceJudgment.getJudgmentResult()); } @Override public String extractSourceJudgmentId(SourceNacJudgment sourceJudgment, ImportCorrectionList correctionList) { return sourceJudgment.getSource().getSourceJudgmentId(); } @Override public String extractSourceJudgmentUrl(SourceNacJudgment sourceJudgment, ImportCorrectionList correctionList) { return sourceJudgment.getSource().getSourceJudgmentUrl(); } @Override public SourceCode getSourceCode() { return SourceCode.NATIONAL_APPEAL_CHAMBER; } @Override public void convertSpecific(NationalAppealChamberJudgment judgment, SourceNacJudgment sourceJudgment, ImportCorrectionList correctionList) { } //------------------------ SETTERS -------------------------- @Autowired public void setJudgmentMeansOfAppealCreator(JudgmentMeansOfAppealCreator judgmentMeansOfAppealCreator) { this.judgmentMeansOfAppealCreator = judgmentMeansOfAppealCreator; } @Autowired public void setJudgmentResultCreator(JudgmentResultCreator judgmentResultCreator) { this.judgmentResultCreator = judgmentResultCreator; } @Autowired public void setSourceJudgeExtractorHelper( SourceJudgeExtractorHelper sourceJudgeExtractorHelper) { this.sourceJudgeExtractorHelper = sourceJudgeExtractorHelper; } }