blob: 83979d8a9c5f41db07d6b12fd7150a91d67815dc [file] [log] [blame]
package de.ids_mannheim.korap.rewrite;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import de.ids_mannheim.korap.utils.JsonUtils;
public class KoralRewriteBuilder {
private List<KoralRewrite> rewrites;
public KoralRewriteBuilder () {
this.rewrites = new ArrayList<>();
}
@Deprecated
public KoralRewriteBuilder add (String op, Object scope) {
KoralRewrite rewrite = new KoralRewrite();
rewrite.setOperation(op);
if (scope != null) {
rewrite.setScope(scope.toString());
}
this.rewrites.add(rewrite);
return this;
}
public KoralRewriteBuilder add (String op, RewriteIdentifier ri) {
KoralRewrite rewrite = new KoralRewrite();
rewrite.setOperation(op);
if (ri.getScope() != null) {
rewrite.setScope(ri.getScope());
}
if (ri.getOriginal() != null) {
rewrite.setOriginal(ri.getOriginal());
}
if (ri.getComment() != null) {
rewrite.setComment(ri.getComment());
}
this.rewrites.add(rewrite);
return this;
}
public JsonNode build (JsonNode node) {
for (KoralRewrite rewrite : this.rewrites) {
if (rewrite.map.get("operation") == null)
throw new UnsupportedOperationException(
"operation not set properly");
if (node.has("rewrites")) {
ArrayNode n = (ArrayNode) node.path("rewrites");
n.add(JsonUtils.valueToTree(rewrite.map));
}
else if (node.isObject()) {
ObjectNode n = (ObjectNode) node;
List l = new LinkedList<>();
l.add(JsonUtils.valueToTree(rewrite.map));
n.put("rewrites", JsonUtils.valueToTree(l));
}
else {
//fixme: matches in result will land here. rewrites need to be placed under root node - though then there might be unclear where they belong to
}
}
this.rewrites.clear();
return node;
}
}