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    }