Author: scottbw
Date: Wed May 30 14:56:13 2012
New Revision: 1344290

URL: http://svn.apache.org/viewvc?rev=1344290&view=rev
Log:
Added "role" property to Participant to support getHost() and similar methods - 
see WOOKIE-66

Modified:
    incubator/wookie/trunk/etc/ddl-schema/wookie-schema.xml
    incubator/wookie/trunk/src/org/apache/wookie/beans/IParticipant.java
    incubator/wookie/trunk/src/org/apache/wookie/beans/SharedContext.java
    
incubator/wookie/trunk/src/org/apache/wookie/beans/jpa/impl/ParticipantImpl.java

Modified: incubator/wookie/trunk/etc/ddl-schema/wookie-schema.xml
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/etc/ddl-schema/wookie-schema.xml?rev=1344290&r1=1344289&r2=1344290&view=diff
==============================================================================
--- incubator/wookie/trunk/etc/ddl-schema/wookie-schema.xml (original)
+++ incubator/wookie/trunk/etc/ddl-schema/wookie-schema.xml Wed May 30 14:56:13 
2012
@@ -180,6 +180,7 @@
     <column name="participant_display_name" required="true" size="255" 
type="VARCHAR"/>
     <column name="participant_thumbnail_url" size="1024" type="VARCHAR"/>
     <column name="sharedDataKey" required="true" size="255" type="VARCHAR"/>
+    <column name="role" size="255" type="VARCHAR"/>
   </table>
 
   <table name="Preference">

Modified: incubator/wookie/trunk/src/org/apache/wookie/beans/IParticipant.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/beans/IParticipant.java?rev=1344290&r1=1344289&r2=1344290&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/beans/IParticipant.java 
(original)
+++ incubator/wookie/trunk/src/org/apache/wookie/beans/IParticipant.java Wed 
May 30 14:56:13 2012
@@ -23,6 +23,9 @@ package org.apache.wookie.beans;
  */
 public interface IParticipant extends IBean
 {
+       
+       public static final String HOST_ROLE = "host";
+       
     /**
      * Get widget shared data key.
      * 
@@ -78,4 +81,15 @@ public interface IParticipant extends IB
      * @param participantThumbnailUrl participant thumbnail URL
      */
     void setParticipantThumbnailUrl(String participantThumbnailUrl);
+    
+    /**
+     * @return get the role of the participant in the current context
+     */
+    String getRole();
+    
+    /**
+     * Set the role of the participant in the current context
+     * @param role
+     */
+    void setRole(String role);
 }

Modified: incubator/wookie/trunk/src/org/apache/wookie/beans/SharedContext.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/beans/SharedContext.java?rev=1344290&r1=1344289&r2=1344290&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/beans/SharedContext.java 
(original)
+++ incubator/wookie/trunk/src/org/apache/wookie/beans/SharedContext.java Wed 
May 30 14:56:13 2012
@@ -41,6 +41,7 @@ import org.apache.wookie.helpers.SharedD
 public class SharedContext {
   
   private String sharedDataKey;
+  private IWidgetInstance widgetInstance;
   
   public SharedContext(String sharedDataKey){
     this.sharedDataKey = sharedDataKey; 
@@ -51,6 +52,7 @@ public class SharedContext {
     // Use the internal shared data key of the instance
     //
     this.sharedDataKey = 
SharedDataHelper.getInternalSharedDataKey(widgetInstance);
+    this.widgetInstance = widgetInstance;
   }
   
   /**
@@ -190,7 +192,7 @@ public class SharedContext {
     IPersistenceManager persistenceManager = 
PersistenceManagerFactory.getPersistenceManager();
     return persistenceManager.findByValue(IParticipant.class, "sharedDataKey", 
this.sharedDataKey);
   }
-  
+
   /**
    * Add a participant to a shared context
    * @param participantId the id property of the participant to add
@@ -199,6 +201,17 @@ public class SharedContext {
    * @return true if the participant was successfully added, otherwise false
    */
   public boolean addParticipant(String participantId, String 
participantDisplayName, String participantThumbnailUrl) {
+         return addParticipant(participantId, participantDisplayName, 
participantThumbnailUrl, null);
+  }
+  
+  /**
+   * Add a participant to a shared context
+   * @param participantId the id property of the participant to add
+   * @param participantDisplayName the display name property of the 
participant to add
+   * @param participantThumbnailUrl the thumbnail url property of the 
participant to add
+   * @return true if the participant was successfully added, otherwise false
+   */
+  public boolean addParticipant(String participantId, String 
participantDisplayName, String participantThumbnailUrl, String role) {
 
     //
     // Does participant already exist?
@@ -214,6 +227,7 @@ public class SharedContext {
     participant.setParticipantId(participantId);
     participant.setParticipantDisplayName(participantDisplayName);
     participant.setParticipantThumbnailUrl(participantThumbnailUrl);
+    participant.setRole(role);
     participant.setSharedDataKey(this.sharedDataKey);
     persistenceManager.save(participant);
     return true;
@@ -280,4 +294,39 @@ public class SharedContext {
     if(participants != null && participants.length == 1) return 
participants[0];
     return null;
   }
+  
+  /**
+   * Get the participant associated with the widget instance as the viewer
+   * @param widgetInstance
+   * @return the IParticipant representing the viewer, or null if no match is 
found
+   */
+  public IParticipant getViewer(){
+    IPersistenceManager persistenceManager = 
PersistenceManagerFactory.getPersistenceManager();
+    Map<String, Object> map = new HashMap<String, Object>();
+    map.put("sharedDataKey", this.sharedDataKey);//$NON-NLS-1$
+    map.put("participantId", this.widgetInstance.getUserId());//$NON-NLS-1$
+    IParticipant [] participants = 
persistenceManager.findByValues(IParticipant.class, map);
+    if(participants != null && participants.length == 1) return 
participants[0];
+    return null;
+  }
+  
+  /**
+   * Get the participant designated as the host of the shared context. Note 
that
+   * if there are multiple hosts, only the first is returned.
+   * @return a participant designated the host, or null if no participant is 
host
+   */
+  public IParticipant getHost(){
+         for (IParticipant participant : this.getParticipants()){
+                 if (participant.getRole().equals(IParticipant.HOST_ROLE)) 
return participant;
+         }
+         return null;
+  }
+  
+  public IParticipant[] getHosts(){
+           IPersistenceManager persistenceManager = 
PersistenceManagerFactory.getPersistenceManager();
+           Map<String, Object> map = new HashMap<String, Object>();
+           map.put("sharedDataKey", this.sharedDataKey);//$NON-NLS-1$
+           map.put("role", IParticipant.HOST_ROLE); //$NON-NLS-1$
+           return persistenceManager.findByValues(IParticipant.class, map);
+  }
 }

Modified: 
incubator/wookie/trunk/src/org/apache/wookie/beans/jpa/impl/ParticipantImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/beans/jpa/impl/ParticipantImpl.java?rev=1344290&r1=1344289&r2=1344290&view=diff
==============================================================================
--- 
incubator/wookie/trunk/src/org/apache/wookie/beans/jpa/impl/ParticipantImpl.java
 (original)
+++ 
incubator/wookie/trunk/src/org/apache/wookie/beans/jpa/impl/ParticipantImpl.java
 Wed May 30 14:56:13 2012
@@ -25,6 +25,7 @@ import javax.persistence.NamedQuery;
 import javax.persistence.Table;
 import javax.persistence.Version;
 
+import org.apache.openjpa.persistence.Type;
 import org.apache.wookie.beans.IParticipant;
 
 /**
@@ -64,6 +65,11 @@ public class ParticipantImpl implements 
     @Basic(optional=false)
     @Column(name="sharedDataKey", nullable=false)
     private String sharedDataKey;
+    
+    @Basic
+    @Column(name="role", nullable=false)
+    @Type(String.class)
+    private String role;
 
     /* (non-Javadoc)
      * @see org.apache.wookie.beans.IBean#getId()
@@ -136,4 +142,19 @@ public class ParticipantImpl implements 
     {
         this.sharedDataKey = sharedDataKey;
     }
+
+       /* (non-Javadoc)
+        * @see org.apache.wookie.beans.IParticipant#getRole()
+        */
+       public String getRole() {
+               return role;
+       }
+
+       /* (non-Javadoc)
+        * @see org.apache.wookie.beans.IParticipant#setRole(java.lang.String)
+        */
+       public void setRole(String role) {
+               this.role = role;
+       }
+
 }


Reply via email to