/*
* Copyright 2016 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.guvnor.structure.repositories;
import java.util.List;
import java.util.function.Predicate;
/**
* Represents information about a repository. It contains the origin name
* the forks it has, the repository name,
* and the list of pull request that repository has.
*/
public interface GitMetadata {
/**
* Returns repository name
* @return the repository name
*/
String getName();
/**
* Returns the list of forks names it has
* @return the list of forks names
*/
List<String> getForks();
/**
* The name of the its origin repository
* @return
*/
String getOrigin();
/**
* The complete list of pull requests. It does not filter by status.
* @return the list of pull requests.
*/
List<PullRequest> getPullRequests();
/**
* A filtered pull request list.
* @param filter the filter expression
* @return the filtered pull request list.
*/
List<PullRequest> getPullRequests( Predicate<? super PullRequest> filter );
/**
* Return a single pull request by id
* @param id the pull request id
* @return the pull request found
*/
PullRequest getPullRequest( long id );
/**
* Return if pull request already exists comparing
* branches name, repositories name and statuses
* but does not check pull request ID.
* @param pullRequest the pull request to check
* @return if pull request is present in metadata, returns true.
*/
boolean exists( PullRequest pullRequest );
}