package pl.edu.icm.saos.search.indexing;
import org.apache.solr.common.SolrInputDocument;
import org.springframework.stereotype.Service;
import pl.edu.icm.saos.persistence.model.ConstitutionalTribunalJudgment;
import pl.edu.icm.saos.persistence.model.ConstitutionalTribunalJudgmentDissentingOpinion;
import pl.edu.icm.saos.persistence.model.CourtType;
import pl.edu.icm.saos.search.config.model.JudgmentIndexField;
/**
* Fills {@link SolrInputDocument} with fields from
* {@link pl.edu.icm.saos.persistence.model.ConstitutionalTribunalJudgment ConstitutionalTribunalJudgment}
*
* @author madryk
*/
@Service
public class CtJudgmentIndexFieldsFiller extends JudgmentIndexFieldsFiller {
//------------------------ LOGIC --------------------------
@Override
public boolean isApplicable(CourtType courtType) {
return courtType == CourtType.CONSTITUTIONAL_TRIBUNAL;
}
@Override
public void fillFields(SolrInputDocument doc, JudgmentIndexingData judgmentData) {
super.fillFields(doc, judgmentData);
ConstitutionalTribunalJudgment ctJudgment = (ConstitutionalTribunalJudgment) judgmentData.getJudgment();
fillDissentingOpinions(doc, ctJudgment);
}
//------------------------ PRIVATE --------------------------
private void fillDissentingOpinions(SolrInputDocument doc, ConstitutionalTribunalJudgment judgment) {
for (ConstitutionalTribunalJudgmentDissentingOpinion dissentingOpinion : judgment.getDissentingOpinions()) {
fieldAdder.addField(doc, JudgmentIndexField.CT_DISSENTING_OPINION, dissentingOpinion.getTextContent());
for (String dissentingOpinionAuthor : dissentingOpinion.getAuthors()) {
fieldAdder.addField(doc, JudgmentIndexField.CT_DISSENTING_OPINION, dissentingOpinionAuthor);
fieldAdder.addField(doc, JudgmentIndexField.CT_DISSENTING_OPINION_AUTHOR, dissentingOpinionAuthor);
}
}
}
}