001package de.deepamehta.core.impl; 002 003import de.deepamehta.core.Role; 004import de.deepamehta.core.model.AssociationModel; 005import de.deepamehta.core.model.DeepaMehtaObjectModel; 006import de.deepamehta.core.model.RoleModel; 007 008import org.codehaus.jettison.json.JSONObject; 009 010 011 012abstract class RoleModelImpl implements RoleModel { 013 014 // ---------------------------------------------------------------------------------------------- Instance Variables 015 016 long playerId; // id of the player (a topic, or an association) 017 String roleTypeUri; // is never null 018 019 PersistenceLayer pl; 020 021 // ---------------------------------------------------------------------------------------------------- Constructors 022 023 // ### TODO: drop this? 024 RoleModelImpl() { 025 } 026 027 RoleModelImpl(long playerId, String roleTypeUri, PersistenceLayer pl) { 028 setPlayerId(playerId); 029 setRoleTypeUri(roleTypeUri); 030 this.pl = pl; 031 } 032 033 // -------------------------------------------------------------------------------------------------- Public Methods 034 035 @Override 036 public long getPlayerId() { 037 return playerId; 038 } 039 040 @Override 041 public final String getRoleTypeUri() { 042 return roleTypeUri; 043 } 044 045 // --- 046 047 // ### TODO: to be dropped? 048 @Override 049 public void setPlayerId(long playerId) { 050 this.playerId = playerId; 051 } 052 053 @Override 054 public final void setRoleTypeUri(String roleTypeUri) { 055 if (roleTypeUri == null) { 056 throw new IllegalArgumentException("\"roleTypeUri\" must not be null"); 057 } 058 // 059 this.roleTypeUri = roleTypeUri; 060 } 061 062 // --- 063 064 // Note: refsSameObject() remain abstract 065 066 067 068 // === Java API === 069 070 @Override 071 public RoleModel clone() { 072 try { 073 return (RoleModel) super.clone(); 074 } catch (Exception e) { 075 throw new RuntimeException("Cloning a RoleModel failed", e); 076 } 077 } 078 079 // ----------------------------------------------------------------------------------------- Package Private Methods 080 081 abstract Role instantiate(AssociationModelImpl assoc); 082 083 abstract DeepaMehtaObjectModel getPlayer(); 084}