package hudson.plugins.git; import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.builder.HashCodeBuilder; import org.apache.commons.lang3.builder.EqualsBuilder; import org.eclipse.jgit.lib.Config; import org.eclipse.jgit.transport.RemoteConfig; /** * Git repository config. * <p/> * Date: 8/8/11 * * @author Nikita Levyankov */ public class GitRepository extends RemoteConfig { static final String REMOTE_SECTION = "remote"; static final String TARGET_DIR_KEY = "targetDir"; private static final String DEFAULT_TARGET_DIR = ""; private String relativeTargetDir; public GitRepository(Config config, String name) throws URISyntaxException { super(config, name); String val = config.getString(REMOTE_SECTION, name, TARGET_DIR_KEY); if (val == null) { val = DEFAULT_TARGET_DIR; } relativeTargetDir = val; } public static List<RemoteConfig> getAllGitRepositories(final Config rc) throws URISyntaxException { final List<String> names = new ArrayList<String>(rc.getSubsections(REMOTE_SECTION)); Collections.sort(names); final List<RemoteConfig> result = new ArrayList<RemoteConfig>(names.size()); for (final String name : names) { result.add(new GitRepository(rc, name)); } return result; } public String getRelativeTargetDir() { return relativeTargetDir; } @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } GitRepository that = (GitRepository) o; if (!CollectionUtils.isEqualCollection(this.getFetchRefSpecs(), that.getFetchRefSpecs())) { return false; } if (!CollectionUtils.isEqualCollection(this.getPushRefSpecs(), that.getPushRefSpecs())) { return false; } if (!CollectionUtils.isEqualCollection(this.getPushURIs(), that.getPushURIs())) { return false; } if (!CollectionUtils.isEqualCollection(this.getURIs(), that.getURIs())) { return false; } return new EqualsBuilder() .append(getName(), that.getName()) .append(getReceivePack(), that.getReceivePack()) .append(getTagOpt(), that.getTagOpt()) .append(getTimeout(), that.getTimeout()) .append(getUploadPack(), that.getUploadPack()) .append(isMirror(), that.isMirror()) .append(relativeTargetDir, that.relativeTargetDir) .isEquals(); } @Override public int hashCode() { return new HashCodeBuilder() .append(getFetchRefSpecs()) .append(getPushRefSpecs()) .append(getPushURIs()) .append(getURIs()) .append(getName()) .append(getReceivePack()) .append(getTagOpt()) .append(getTimeout()) .append(getUploadPack()) .append(isMirror()) .append(relativeTargetDir) .toHashCode(); } }