001 package de.deepamehta.core.model; 002 003 import org.codehaus.jettison.json.JSONArray; 004 import org.codehaus.jettison.json.JSONObject; 005 006 import java.util.HashMap; 007 import java.util.List; 008 import java.util.Map; 009 010 011 012 /** 013 * The role an association plays in an association. 014 * <p> 015 * A AssociationRoleModel object is a pair of an association ID and a role type URI. 016 * <p> 017 * Assertion: both, the association ID and the role type URI are set. 018 * <p> 019 * In the database a role type is represented by a topic of type "dm4.core.role_type". 020 */ 021 public class AssociationRoleModel extends RoleModel { 022 023 // ---------------------------------------------------------------------------------------------------- Constructors 024 025 public AssociationRoleModel(long assocId, String roleTypeUri) { 026 super(assocId, roleTypeUri); 027 } 028 029 public AssociationRoleModel(JSONObject assocRoleModel) { 030 try { 031 this.playerId = assocRoleModel.getLong("assoc_id"); 032 this.roleTypeUri = assocRoleModel.getString("role_type_uri"); 033 } catch (Exception e) { 034 throw new RuntimeException("Parsing AssociationRoleModel failed (JSONObject=" + assocRoleModel + ")", e); 035 } 036 } 037 038 // -------------------------------------------------------------------------------------------------- Public Methods 039 040 // === Implementation of abstract RoleModel methods === 041 042 @Override 043 public boolean refsSameObject(RoleModel model) { 044 if (model instanceof AssociationRoleModel) { 045 AssociationRoleModel assocRole = (AssociationRoleModel) model; 046 return assocRole.playerId == playerId; 047 } 048 return false; 049 } 050 051 @Override 052 public JSONObject toJSON() { 053 try { 054 JSONObject o = new JSONObject(); 055 o.put("assoc_id", playerId); 056 o.put("role_type_uri", roleTypeUri); 057 return o; 058 } catch (Exception e) { 059 throw new RuntimeException("Serialization failed (" + this + ")", e); 060 } 061 } 062 063 // === Java API === 064 065 @Override 066 public String toString() { 067 return "\n association role (roleTypeUri=\"" + roleTypeUri + "\", playerId=" + playerId + ")"; 068 } 069 }