Example usage for org.eclipse.jgit.revwalk.filter AndRevFilter create

List of usage examples for org.eclipse.jgit.revwalk.filter AndRevFilter create

Introduction

In this page you can find the example usage for org.eclipse.jgit.revwalk.filter AndRevFilter create.

Prototype

public static RevFilter create(Collection<RevFilter> list) 

Source Link

Document

Create a filter around many filters, all of which must match.

Usage

From source file:kr.re.ec.grigit.graph.ui.RevWalker.java

License:Eclipse Distribution License

public void init() throws Exception {

    logger = LoggerFactory.getLogger(RevWalker.class);

    db = CurrentRepository.getInstance().getRepository();

    walk = createWalk();/*ww w  .  j  a  v a 2  s  .  co  m*/
    for (final RevSort s : sorting)
        walk.sort(s, true);
    /*
    if (pathFilter == TreeFilter.ALL) {
       if (followPath != null)
    walk.setTreeFilter(FollowFilter.create(followPath, db
          .getConfig().get(DiffConfig.KEY)));
    } else if (pathFilter != TreeFilter.ALL) {
       walk.setTreeFilter(AndTreeFilter.create(pathFilter,
       TreeFilter.ANY_DIFF));
    }*/

    if (revLimiter.size() == 1)
        walk.setRevFilter(revLimiter.get(0));
    else if (revLimiter.size() > 1)
        walk.setRevFilter(AndRevFilter.create(revLimiter));

    if (all) {
        Map<String, Ref> refs = db.getRefDatabase().getRefs(RefDatabase.ALL);
        for (Ref a : refs.values()) {
            ObjectId oid = a.getPeeledObjectId();
            if (oid == null)
                oid = a.getObjectId();
            try {
                commits.add(walk.parseCommit(oid));
            } catch (IncorrectObjectTypeException e) {
                // Ignore all refs which are not commits
            }
        }
    }

    if (commits.isEmpty()) {
        final ObjectId head = db.resolve(Constants.HEAD);
        if (head == null)
            //logger.info(MessageFormat.format(CLIText.get().cannotResolve,
            //   Constants.HEAD));
            commits.add(walk.parseCommit(head));
    }
    for (final RevCommit c : commits) {
        final RevCommit real = argWalk == walk ? c : walk.parseCommit(c);
        if (c.has(RevFlag.UNINTERESTING))
            walk.markUninteresting(real);
        else
            walk.markStart(real);
    }

    //final long start = System.currentTimeMillis();
    //logger.info("i'm here1");
    final int n = walkLoop();
    //logger.info("i'm here2");
    if (count) {
        //final long end = System.currentTimeMillis();
        logger.info("" + n);
        logger.info(" ");
        //   logger.info(MessageFormat.format(CLIText.get().timeInMilliSeconds,
        //      Long.valueOf(end - start)));
    }
}

From source file:org.eclipse.orion.server.git.jobs.LogCommand.java

License:Eclipse Distribution License

/**
 * Executes the {@code Log} command with all the options and parameters collected by the setter methods (e.g. {@link #add(AnyObjectId)},
 * {@link #not(AnyObjectId)}, ..) of this class. Each instance of this class should only be used for one invocation of the command. Don't call this method
 * twice on an instance.//w w w.j  av a 2s .c  om
 *
 * @return an iteration over RevCommits
 * @throws NoHeadException
 *             of the references ref cannot be resolved
 */
@Override
public Iterable<RevCommit> call() throws GitAPIException, NoHeadException {
    checkCallable();
    ArrayList<RevFilter> filters = new ArrayList<RevFilter>();

    if (pathFilters.size() > 0)
        walk.setTreeFilter(AndTreeFilter.create(PathFilterGroup.create(pathFilters), TreeFilter.ANY_DIFF));

    if (msgFilter != null)
        filters.add(msgFilter);
    if (authorFilter != null)
        filters.add(authorFilter);
    if (committerFilter != null)
        filters.add(committerFilter);
    if (sha1Filter != null)
        filters.add(sha1Filter);
    if (dateFilter != null)
        filters.add(dateFilter);
    if (skip > -1)
        filters.add(SkipRevFilter.create(skip));
    if (maxCount > -1)
        filters.add(MaxCountRevFilter.create(maxCount));
    RevFilter filter = null;
    if (filters.size() > 1) {
        filter = AndRevFilter.create(filters);
    } else if (filters.size() == 1) {
        filter = filters.get(0);
    }

    if (filter != null)
        walk.setRevFilter(filter);

    if (!startSpecified) {
        try {
            ObjectId headId = repo.resolve(Constants.HEAD);
            if (headId == null)
                throw new NoHeadException(JGitText.get().noHEADExistsAndNoExplicitStartingRevisionWasSpecified);
            add(headId);
        } catch (IOException e) {
            // all exceptions thrown by add() shouldn't occur and represent
            // severe low-level exception which are therefore wrapped
            throw new JGitInternalException(JGitText.get().anExceptionOccurredWhileTryingToAddTheIdOfHEAD, e);
        }
    }
    setCallable(false);
    return walk;
}