/**
* Copyright (c) 2011, SOCIETIES Consortium (WATERFORD INSTITUTE OF TECHNOLOGY (TSSG), HERIOT-WATT UNIVERSITY (HWU), SOLUTA.NET
* (SN), GERMAN AEROSPACE CENTRE (Deutsches Zentrum fuer Luft- und Raumfahrt e.V.) (DLR), Zavod za varnostne tehnologije
* informacijske družbe in elektronsko poslovanje (SETCCE), INSTITUTE OF COMMUNICATION AND COMPUTER SYSTEMS (ICCS), LAKE
* COMMUNICATIONS (LAKE), INTEL PERFORMANCE LEARNING SOLUTIONS LTD (INTEL), PORTUGAL TELECOM INOVA��O, SA (PTIN), IBM ISRAEL
* SCIENCE AND TECHNOLOGY LTD (IBM), INSTITUT TELECOM (ITSUD), AMITEC DIACHYTI EFYIA PLIROFORIKI KAI EPIKINONIES ETERIA
* PERIORISMENIS EFTHINIS (AMITEC), TELECOM ITALIA S.p.a.(TI), TRIALOG (TRIALOG), Stiftelsen SINTEF (SINTEF), NEC EUROPE LTD
* (NEC))
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following
* conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
* SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.societies.android.api.pubsub;
import org.societies.api.identity.IIdentity;
/**
* The Class Subscription.
*/
public class Subscription {
// TODO subId is ignored for equals and hash
/** The pubsub service. */
private IIdentity pubsubService;
/** The subscriber. */
private IIdentity subscriber;
/** The node. */
private String node;
/** The sub id. */
private String subId;
/**
* Instantiates a new subscription.
*
* @param pubsubService the pubsub service
* @param subscriber the subscriber
* @param node the node
* @param subId the sub id
*/
public Subscription(IIdentity pubsubService, IIdentity subscriber,
String node, String subId) {
super();
this.pubsubService = pubsubService;
this.subscriber = subscriber;
this.node = node;
this.subId = subId;
}
/**
* Gets the pubsub service.
*
* @return the pubsub service
*/
public IIdentity getPubsubService() {
return pubsubService;
}
/**
* Sets the pubsub service.
*
* @param pubsubService the new pubsub service
*/
public void setPubsubService(IIdentity pubsubService) {
this.pubsubService = pubsubService;
}
/**
* Gets the subscriber.
*
* @return the subscriber
*/
public IIdentity getSubscriber() {
return subscriber;
}
/**
* Sets the subscriber.
*
* @param subscriber the new subscriber
*/
public void setSubscriber(IIdentity subscriber) {
this.subscriber = subscriber;
}
/**
* Gets the node.
*
* @return the node
*/
public String getNode() {
return node;
}
/**
* Sets the node.
*
* @param node the new node
*/
public void setNode(String node) {
this.node = node;
}
/**
* Gets the sub id.
*
* @return the sub id
*/
public String getSubId() {
return subId;
}
/**
* Sets the sub id.
*
* @param subId the new sub id
*/
public void setSubId(String subId) {
this.subId = subId;
}
/**
* Generate a hash code representation.
*
* @return the int
*/
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((node == null) ? 0 : node.hashCode());
result = prime * result
+ ((pubsubService == null) ? 0 : pubsubService.hashCode());
result = prime * result
+ ((subscriber == null) ? 0 : subscriber.hashCode());
return result;
}
/**
* Equals.
*
* @param obj the object to compare
* @return true, if successful
*/
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Subscription other = (Subscription) obj;
if (node == null) {
if (other.node != null)
return false;
} else if (!node.equals(other.node))
return false;
if (pubsubService == null) {
if (other.pubsubService != null)
return false;
} else if (!pubsubService.equals(other.pubsubService))
return false;
if (subscriber == null) {
if (other.subscriber != null)
return false;
} else if (!subscriber.equals(other.subscriber))
return false;
return true;
}
}