
com.sap.cds.impl.parser.UpdateParser Maven / Gradle / Ivy
/*******************************************************************
* © 2019 SAP SE or an SAP affiliate company. All rights reserved. *
*******************************************************************/
package com.sap.cds.impl.parser;
import static com.sap.cds.impl.parser.JsonParser.list;
import static com.sap.cds.impl.parser.JsonParser.map;
import static com.sap.cds.impl.parser.JsonParser.parseJson;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import com.fasterxml.jackson.databind.JsonNode;
import com.sap.cds.ql.StructuredType;
import com.sap.cds.ql.Update;
import com.sap.cds.ql.cqn.CqnPredicate;
import com.sap.cds.ql.cqn.CqnStructuredTypeRef;
import com.sap.cds.ql.impl.UpdateBuilder;
public class UpdateParser {
private final JsonNode update;
private UpdateParser(JsonNode node) {
update = node.get("UPDATE");
}
public static UpdateParser of(String cqn) {
return new UpdateParser(parseJson(cqn));
}
public static Update> parse(String cqn) {
return of(cqn).parse();
}
public Update> parse() {
CqnStructuredTypeRef ref = TokenParser.ref(update.get("entity"));
UpdateBuilder> update = UpdateBuilder.entity(ref);
readData().ifPresent(update::data);
readEntries().ifPresent(update::entries);
return update.where(where());
}
private CqnPredicate where() {
JsonNode where = update.get("where");
return ExpressionParser.parsePredicate(where);
}
private Optional
© 2015 - 2025 Weber Informatics LLC | Privacy Policy