/*******************************************************************************
* Copyright (c) 2011 GitHub Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Kevin Sawicki (GitHub Inc.) - initial API and implementation
*******************************************************************************/
package org.eclipse.egit.github.core;
import com.google.gson.annotations.SerializedName;
import java.io.Serializable;
import java.util.Date;
import org.eclipse.egit.github.core.util.DateUtils;
/**
* GitHub v2 repository model class.
*/
public class SearchRepository implements IRepositoryIdProvider, Serializable {
/** serialVersionUID */
private static final long serialVersionUID = 978627174722864632L;
private boolean fork;
private boolean hasDownloads;
private boolean hasIssues;
private boolean hasWiki;
@SerializedName("private")
private boolean isPrivate;
private Date createdAt;
private Date pushedAt;
private String description;
private String homepage;
private String language;
private String name;
private String owner;
private String url;
private int forks;
private int openIssues;
private int size;
private int watchers;
/**
* Create repository with owner and name
*
* @param owner
* @param name
*/
public SearchRepository(String owner, String name) {
if (owner == null)
throw new IllegalArgumentException("Owner cannot be null"); //$NON-NLS-1$
if (owner.length() == 0)
throw new IllegalArgumentException("Owner cannot be empty"); //$NON-NLS-1$
if (name == null)
throw new IllegalArgumentException("Name cannot be null"); //$NON-NLS-1$
if (name.length() == 0)
throw new IllegalArgumentException("Name cannot be empty"); //$NON-NLS-1$
this.owner = owner;
this.name = name;
}
/**
* Create repository
*/
SearchRepository() {
}
/**
* @see java.lang.Object#hashCode()
*/
public int hashCode() {
return getId().hashCode();
}
/**
* @see java.lang.Object#equals(java.lang.Object)
*/
public boolean equals(Object obj) {
if (obj == this)
return true;
else if (obj instanceof SearchRepository)
return getId().equals(((SearchRepository) obj).getId());
else
return false;
}
/**
* @see java.lang.Object#toString()
*/
public String toString() {
return getId();
}
/**
* Get unique identifier for repository
*
* @return id
*/
public String getId() {
return owner + '/' + name;
}
/**
* @return owner
*/
public String getOwner() {
return owner;
}
/**
* @return name
*/
public String getName() {
return name;
}
/**
* @return fork
*/
public boolean isFork() {
return fork;
}
/**
* @return hasDownloads
*/
public boolean isHasDownloads() {
return hasDownloads;
}
/**
* @return hasIssues
*/
public boolean isHasIssues() {
return hasIssues;
}
/**
* @return hasWiki
*/
public boolean isHasWiki() {
return hasWiki;
}
/**
* @return isPrivate
*/
public boolean isPrivate() {
return isPrivate;
}
/**
* @return createdAt
*/
public Date getCreatedAt() {
return DateUtils.clone(createdAt);
}
/**
* @return pushedAt
*/
public Date getPushedAt() {
return DateUtils.clone(pushedAt);
}
/**
* @return description
*/
public String getDescription() {
return description;
}
/**
* @return homepage
*/
public String getHomepage() {
return homepage;
}
/**
* @return language
*/
public String getLanguage() {
return language;
}
/**
* @return url
*/
public String getUrl() {
return url;
}
/**
* @return forks
*/
public int getForks() {
return forks;
}
/**
* @return openIssues
*/
public int getOpenIssues() {
return openIssues;
}
/**
* @return size
*/
public int getSize() {
return size;
}
/**
* @return watchers
*/
public int getWatchers() {
return watchers;
}
public String generateId() {
final String owner = this.owner;
if (owner == null || owner.length() == 0)
return null;
final String name = this.name;
if (name == null || name.length() == 0)
return null;
return owner + "/" + name; //$NON-NLS-1$
}
}