package pl.edu.icm.saos.enrichment.reference.refcases;
import java.util.List;
import pl.edu.icm.saos.enrichment.apply.refcases.ReferencedCourtCasesTagValueItem;
import pl.edu.icm.saos.enrichment.reference.TagModifyingJudgmentReferenceRemover;
import pl.edu.icm.saos.persistence.enrichment.model.EnrichmentTag;
import pl.edu.icm.saos.persistence.enrichment.model.EnrichmentTagTypes;
/**
* Remover of references to judgment from {@link EnrichmentTag} of
* {@link EnrichmentTagTypes#REFERENCED_COURT_CASES} type.
*
* @author madryk
*/
public class RefCourtCasesJudgmentReferenceRemover extends TagModifyingJudgmentReferenceRemover<ReferencedCourtCasesTagValueItem[]> {
//------------------------ LOGIC --------------------------
@Override
protected String buildSelectQuery() {
String selectQuery = "SELECT tag.*"
+ " FROM enrichment_tag tag"
+ " JOIN json_array_elements(tag.value) tagValue ON true"
+ " JOIN json_array_elements(tagValue->'judgmentIds') refId ON true"
+ " WHERE tag.tag_type = '" + EnrichmentTagTypes.REFERENCED_COURT_CASES + "'"
+ " AND refId\\:\\:text in :" + JUDGMENT_IDS_QUERY_PARAM_NAME
+ " GROUP BY tag.id;";
return selectQuery;
}
@Override
protected void removeReference(ReferencedCourtCasesTagValueItem[] items, List<Long> judgmentIds) {
for (ReferencedCourtCasesTagValueItem item : items) {
item.getJudgmentIds().removeAll(judgmentIds);
}
}
}