Search in sources :

Example 16 with Term

use of com.googlecode.prolog_cafe.lang.Term in project gerrit by GerritCodeReview.

the class PRED_commit_parent_count_1 method exec.

@Override
public Operation exec(Prolog engine) throws PrologException {
    engine.setB0();
    Term a1 = arg1.dereference();
    RevCommit commit = StoredValues.COMMIT.get(engine);
    if (!a1.unify(new IntegerTerm(commit.getParentCount()), engine.trail)) {
        return engine.fail();
    }
    return cont;
}
Also used : IntegerTerm(com.googlecode.prolog_cafe.lang.IntegerTerm) Term(com.googlecode.prolog_cafe.lang.Term) IntegerTerm(com.googlecode.prolog_cafe.lang.IntegerTerm) RevCommit(org.eclipse.jgit.revwalk.RevCommit)

Example 17 with Term

use of com.googlecode.prolog_cafe.lang.Term in project gerrit by GerritCodeReview.

the class PRED_unresolved_comments_count_1 method exec.

@Override
public Operation exec(Prolog engine) throws PrologException {
    engine.setB0();
    Term a1 = arg1.dereference();
    Integer count = StoredValues.CHANGE_DATA.get(engine).unresolvedCommentCount();
    if (!a1.unify(new IntegerTerm(count != null ? count : 0), engine.trail)) {
        return engine.fail();
    }
    return cont;
}
Also used : IntegerTerm(com.googlecode.prolog_cafe.lang.IntegerTerm) Term(com.googlecode.prolog_cafe.lang.Term) IntegerTerm(com.googlecode.prolog_cafe.lang.IntegerTerm)

Example 18 with Term

use of com.googlecode.prolog_cafe.lang.Term in project gerrit by GerritCodeReview.

the class PRED_commit_message_1 method exec.

@Override
public Operation exec(Prolog engine) throws PrologException {
    engine.setB0();
    Term a1 = arg1.dereference();
    RevCommit revCommit = StoredValues.COMMIT.get(engine);
    String commitMessage = revCommit.getFullMessage();
    SymbolTerm msg = SymbolTerm.create(commitMessage);
    if (!a1.unify(msg, engine.trail)) {
        return engine.fail();
    }
    return cont;
}
Also used : SymbolTerm(com.googlecode.prolog_cafe.lang.SymbolTerm) Term(com.googlecode.prolog_cafe.lang.Term) SymbolTerm(com.googlecode.prolog_cafe.lang.SymbolTerm) RevCommit(org.eclipse.jgit.revwalk.RevCommit)

Example 19 with Term

use of com.googlecode.prolog_cafe.lang.Term in project gerrit by GerritCodeReview.

the class PRED_commit_stats_3 method exec.

@Override
public Operation exec(Prolog engine) throws PrologException {
    engine.setB0();
    Term a1 = arg1.dereference();
    Term a2 = arg2.dereference();
    Term a3 = arg3.dereference();
    Map<String, FileDiffOutput> modifiedFiles = StoredValues.DIFF_LIST.get(engine);
    // Account for magic files
    if (!a1.unify(new IntegerTerm(modifiedFiles.size() - countMagicFiles(modifiedFiles.values())), engine.trail)) {
        return engine.fail();
    }
    Integer insertions = modifiedFiles.values().stream().map(FileDiffOutput::insertions).reduce(0, Integer::sum);
    Integer deletions = modifiedFiles.values().stream().map(FileDiffOutput::deletions).reduce(0, Integer::sum);
    if (!a2.unify(new IntegerTerm(insertions), engine.trail)) {
        return engine.fail();
    }
    if (!a3.unify(new IntegerTerm(deletions), engine.trail)) {
        return engine.fail();
    }
    return cont;
}
Also used : IntegerTerm(com.googlecode.prolog_cafe.lang.IntegerTerm) Term(com.googlecode.prolog_cafe.lang.Term) IntegerTerm(com.googlecode.prolog_cafe.lang.IntegerTerm) FileDiffOutput(com.google.gerrit.server.patch.filediff.FileDiffOutput)

Example 20 with Term

use of com.googlecode.prolog_cafe.lang.Term in project gerrit by GerritCodeReview.

the class PRED_get_legacy_label_types_1 method exec.

@Override
public Operation exec(Prolog engine) throws PrologException {
    engine.setB0();
    Term a1 = arg1.dereference();
    List<LabelType> list = StoredValues.CHANGE_DATA.get(engine).getLabelTypes().getLabelTypes();
    Term head = Prolog.Nil;
    for (int idx = list.size() - 1; 0 <= idx; idx--) {
        head = new ListTerm(export(list.get(idx)), head);
    }
    if (!a1.unify(head, engine.trail)) {
        return engine.fail();
    }
    return cont;
}
Also used : ListTerm(com.googlecode.prolog_cafe.lang.ListTerm) LabelType(com.google.gerrit.entities.LabelType) Term(com.googlecode.prolog_cafe.lang.Term) IntegerTerm(com.googlecode.prolog_cafe.lang.IntegerTerm) StructureTerm(com.googlecode.prolog_cafe.lang.StructureTerm) SymbolTerm(com.googlecode.prolog_cafe.lang.SymbolTerm) ListTerm(com.googlecode.prolog_cafe.lang.ListTerm)

Aggregations

Term (com.googlecode.prolog_cafe.lang.Term)43 SymbolTerm (com.googlecode.prolog_cafe.lang.SymbolTerm)37 StructureTerm (com.googlecode.prolog_cafe.lang.StructureTerm)30 IntegerTerm (com.googlecode.prolog_cafe.lang.IntegerTerm)27 VariableTerm (com.googlecode.prolog_cafe.lang.VariableTerm)20 ListTerm (com.googlecode.prolog_cafe.lang.ListTerm)17 JavaObjectTerm (com.googlecode.prolog_cafe.lang.JavaObjectTerm)13 ArrayList (java.util.ArrayList)6 SubmitRecord (com.google.gerrit.entities.SubmitRecord)4 CurrentUser (com.google.gerrit.server.CurrentUser)4 RuleEvalException (com.google.gerrit.server.project.RuleEvalException)4 ChangeData (com.google.gerrit.server.query.change.ChangeData)4 OrmException (com.google.gwtorm.server.OrmException)4 CompileException (com.googlecode.prolog_cafe.exceptions.CompileException)4 IllegalTypeException (com.googlecode.prolog_cafe.exceptions.IllegalTypeException)4 JavaException (com.googlecode.prolog_cafe.exceptions.JavaException)4 PInstantiationException (com.googlecode.prolog_cafe.exceptions.PInstantiationException)4 ReductionLimitException (com.googlecode.prolog_cafe.exceptions.ReductionLimitException)4 IOException (java.io.IOException)4 RevCommit (org.eclipse.jgit.revwalk.RevCommit)4