001 package de.deepamehta.core.impl; 002 003 import de.deepamehta.core.Association; 004 import de.deepamehta.core.Role; 005 import de.deepamehta.core.model.RoleModel; 006 007 import org.codehaus.jettison.json.JSONObject; 008 009 010 011 abstract class AttachedRole implements Role { 012 013 // ---------------------------------------------------------------------------------------------- Instance Variables 014 015 private RoleModel model; 016 private Association assoc; 017 018 protected final EmbeddedService dms; 019 020 // ---------------------------------------------------------------------------------------------------- Constructors 021 022 protected AttachedRole(RoleModel model, Association assoc, EmbeddedService dms) { 023 this.model = model; 024 this.assoc = assoc; 025 this.dms = dms; 026 } 027 028 // -------------------------------------------------------------------------------------------------- Public Methods 029 030 031 032 // === Role Implementation === 033 034 @Override 035 public long getPlayerId() { 036 return model.getPlayerId(); 037 } 038 039 @Override 040 public String getRoleTypeUri() { 041 return model.getRoleTypeUri(); 042 } 043 044 // --- 045 046 @Override 047 public void setRoleTypeUri(String roleTypeUri) { 048 // update memory 049 model.setRoleTypeUri(roleTypeUri); 050 // update DB 051 storeRoleTypeUri(); // abstract 052 } 053 054 // --- 055 056 @Override 057 public Association getAssociation() { 058 return assoc; 059 } 060 061 // --- 062 063 @Override 064 public RoleModel getModel() { 065 return model; 066 } 067 068 // --- 069 070 @Override 071 public JSONObject toJSON() { 072 return getModel().toJSON(); 073 } 074 075 // ----------------------------------------------------------------------------------------- Package Private Methods 076 077 abstract void storeRoleTypeUri(); 078 }