/******************************************************************************* * 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$ } }