com.orientechnologies.orient.core.sql.parser.OCreateFunctionStatement Maven / Gradle / Ivy
/* Generated By:JJTree: Do not edit this line. OCreateFunctionStatement.java Version 4.3 */
/* JavaCCOptions:MULTI=true,NODE_USES_PARSER=false,VISITOR=true,TRACK_TOKENS=true,NODE_PREFIX=O,NODE_EXTENDS=,NODE_FACTORY=,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */
package com.orientechnologies.orient.core.sql.parser;
import com.orientechnologies.orient.core.command.OCommandContext;
import com.orientechnologies.orient.core.db.ODatabaseSession;
import com.orientechnologies.orient.core.id.ORID;
import com.orientechnologies.orient.core.metadata.function.OFunction;
import com.orientechnologies.orient.core.sql.executor.OInternalResultSet;
import com.orientechnologies.orient.core.sql.executor.OResultInternal;
import com.orientechnologies.orient.core.sql.executor.OResultSet;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class OCreateFunctionStatement extends OSimpleExecStatement {
protected OIdentifier name;
protected String codeQuoted;
protected String code;
protected List parameters;
protected Boolean idempotent;
protected OIdentifier language;
public OCreateFunctionStatement(int id) {
super(id);
}
public OCreateFunctionStatement(OrientSql p, int id) {
super(p, id);
}
public void addParameter(OIdentifier parameter) {
if (this.parameters == null) {
this.parameters = new ArrayList<>();
}
this.parameters.add(parameter);
}
@Override
public OResultSet executeSimple(OCommandContext ctx) {
ODatabaseSession database = ctx.getDatabase();
final OFunction f =
database.getMetadata().getFunctionLibrary().createFunction(name.getStringValue());
f.setCode(code);
f.setIdempotent(Boolean.TRUE.equals(idempotent));
if (parameters != null)
f.setParameters(
parameters.stream().map(x -> x.getStringValue()).collect(Collectors.toList()));
if (language != null) f.setLanguage(language.getStringValue());
f.save();
ORID functionId = f.getId();
OResultInternal result = new OResultInternal();
result.setProperty("operation", "create function");
result.setProperty("functionName", name.getStringValue());
result.setProperty("finalId", functionId);
OInternalResultSet rs = new OInternalResultSet();
rs.add(result);
return rs;
}
@Override
public void toString(Map