/** * 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 Corp., * 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.api.privacytrust.privacy.model.privacypolicy; import java.io.Serializable; import java.util.Date; import javax.xml.datatype.XMLGregorianCalendar; import org.apache.commons.lang3.builder.EqualsBuilder; /** * The PrivacyPermission class represents complete response to a RequestItem, containing the obfuscation level * @author Olivier Maridat (Trialog) * */ public class PrivacyPermission extends ResponseItem implements Serializable { private static final long serialVersionUID = -1421702656801941310L; /** * Obfuscation level between 0 and 1. 0 means no obfuscation. */ protected double obfuscationLevel; /** * Creation data of this privacy permission */ protected Date creationDate; /** * Validity duration of this privacy permission */ protected long validityDuration; public PrivacyPermission(RequestItem requestItem, Decision decision, double obfuscationLevel, Date creationDate, long validityDuration) { super(requestItem, decision); this.obfuscationLevel = obfuscationLevel; this.creationDate = creationDate; this.validityDuration = validityDuration; } public PrivacyPermission(RequestItem requestItem, Decision decision, double obfuscationLevel, XMLGregorianCalendar creationDate, long validityDuration) { this(requestItem, decision, obfuscationLevel, creationDate.toGregorianCalendar().getTime(), validityDuration); } /** * To know if this privacy permission is still valid or not * @return True if the privacy permission is still valid */ public boolean isStillValid() { Date now = new Date(); return (now.getTime() > (creationDate.getTime()+validityDuration)); } /** * @return the obfuscationLevel */ public double getObfuscationLevel() { return obfuscationLevel; } /** * @param obfuscationLevel the obfuscationLevel to set */ public void setObfuscationLevel(double obfuscationLevel) { this.obfuscationLevel = obfuscationLevel; } /** * @return the creationDate */ public Date getCreationDate() { return creationDate; } /** * @param creationDate the creationDate to set */ public void setCreationDate(Date creationDate) { this.creationDate = creationDate; } /** * @return the validityDuration */ public long getValidityDuration() { return validityDuration; } /** * @param validityDuration the validityDuration to set */ public void setValidityDuration(long validityDuration) { this.validityDuration = validityDuration; } /* * (non-Javadoc) * @see org.societies.api.internal.privacytrust.privacyprotection.model.privacypolicy.ResponseItem#equals(java.lang.Object) */ @Override public boolean equals(Object obj) { // -- Verify reference equality if (obj == null) { return false; } if (obj == this) { return true; } if (obj.getClass() != getClass()) { return false; } // -- Verify obj type PrivacyPermission rhs = (PrivacyPermission) obj; return new EqualsBuilder() .append(this.getDecision().name(), rhs.getDecision().name()) .append(this.getRequestItem(), rhs.getRequestItem()) .append(this.obfuscationLevel, rhs.obfuscationLevel) .isEquals(); } }