001/* 002 * Copyright 2006 - 2013 003 * Stefan Balev <stefan.balev@graphstream-project.org> 004 * Julien Baudry <julien.baudry@graphstream-project.org> 005 * Antoine Dutot <antoine.dutot@graphstream-project.org> 006 * Yoann Pigné <yoann.pigne@graphstream-project.org> 007 * Guilhelm Savin <guilhelm.savin@graphstream-project.org> 008 * 009 * This file is part of GraphStream <http://graphstream-project.org>. 010 * 011 * GraphStream is a library whose purpose is to handle static or dynamic 012 * graph, create them from scratch, file or any source and display them. 013 * 014 * This program is free software distributed under the terms of two licenses, the 015 * CeCILL-C license that fits European law, and the GNU Lesser General Public 016 * License. You can use, modify and/ or redistribute the software under the terms 017 * of the CeCILL-C license as circulated by CEA, CNRS and INRIA at the following 018 * URL <http://www.cecill.info> or under the terms of the GNU LGPL as published by 019 * the Free Software Foundation, either version 3 of the License, or (at your 020 * option) any later version. 021 * 022 * This program is distributed in the hope that it will be useful, but WITHOUT ANY 023 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 024 * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. 025 * 026 * You should have received a copy of the GNU Lesser General Public License 027 * along with this program. If not, see <http://www.gnu.org/licenses/>. 028 * 029 * The fact that you are presently reading this means that you have had 030 * knowledge of the CeCILL-C and LGPL licenses and that you accept their terms. 031 */ 032package org.graphstream.algorithm.community; 033 034/** 035 * Basic community class. Ensures that each created community object has a 036 * unique identifier throughout the simulation. This class also allows 037 * comparison and easy stringification of communities. 038 * 039 * @author Guillaume-Jean Herbiet 040 * 041 */ 042public class Community implements Comparable<Community> { 043 /** 044 * Counter of the generated communities. Ensure the uniqueness of the 045 * identifiers of the generated communities. 046 */ 047 protected static Integer NEXT_COMMUNITY_ID = 0; 048 049 /** 050 * Id of the current community as an Integer. 051 */ 052 protected Integer id; 053 054 /** 055 * New community instance with unique identifier. 056 */ 057 public Community() { 058 this.id = NEXT_COMMUNITY_ID; 059 NEXT_COMMUNITY_ID++; 060 } 061 062 /** 063 * Return the community identifier. 064 * 065 * @return community identifier as an Integer 066 */ 067 public Integer id() { 068 return this.id; 069 } 070 071 /** 072 * Return the community identifier as a String. 073 * 074 * @return community identifier as a String 075 */ 076 public String getId() { 077 return this.id.toString(); 078 } 079 080 /** 081 * Tell if two Community objects are equal, based on their identifier. 082 * 083 * @param c 084 * The Community to compare to. 085 * @return True if the two communities are equal, false otherwise. 086 */ 087 public boolean equals(Community c) { 088 return this.id == c.id(); 089 } 090 091 /** 092 * Stringification method for Community object. 093 */ 094 @Override 095 public String toString() { 096 return getId(); 097 } 098 099 /** 100 * Comparison method for two Community objects, based on the value of their 101 * identfiers. 102 */ 103// @Override 104 public int compareTo(Community o) { 105 return this.id.compareTo(o.id()); 106 } 107}