package org.fluxtream.core.domain; import java.io.Serializable; import java.util.HashSet; import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.OneToMany; import org.fluxtream.core.Configuration; import org.hibernate.annotations.Index; /** * * @author Candide Kemmler (candide@fluxtream.com) */ @Entity(name = "TrustedBuddies") @NamedQueries({ @NamedQuery(name = "trustedBuddies.byGuestId", query = "SELECT buddy FROM TrustedBuddies buddy WHERE buddy.guestId=?"), @NamedQuery(name = "trustedBuddies.byBuddyId", query = "SELECT buddy FROM TrustedBuddies buddy WHERE buddy.buddyId=?"), @NamedQuery(name = "trustedBuddies.byGuestAndBuddyId", query = "SELECT buddy FROM TrustedBuddies buddy WHERE buddy.guestId=? AND buddy.buddyId=?"), @NamedQuery(name = "trustedBuddies.delete.all", query = "DELETE FROM TrustedBuddies buddy WHERE buddy.guestId=?") }) public class TrustedBuddy extends AbstractEntity implements Serializable { @Index(name = "guestId") public long guestId; @Index(name = "buddyId") public long buddyId; @OneToMany(mappedBy="buddy", fetch= FetchType.EAGER, cascade= CascadeType.ALL) public Set<SharedConnector> sharedConnectors = new HashSet<SharedConnector>(); public boolean hasAccessToConnector(String connectorName) { boolean access = false; for (SharedConnector sharedConnector : sharedConnectors) { if (sharedConnector.connectorName.equals(connectorName)) return true; } return access; } public boolean hasAccessToDevice(String deviceName, Configuration env) { String fluxtreamConnectorName = env.bodytrackToFluxtreamConnectorNames.get(deviceName); if (fluxtreamConnectorName==null) return true; return hasAccessToConnector(fluxtreamConnectorName); } public boolean equals(Object o) { if (!(o instanceof TrustedBuddy)) return false; TrustedBuddy buddy = (TrustedBuddy) o; return buddy.guestId == guestId && buddy.buddyId == buddyId; } }