001package de.deepamehta.core.impl;
002
003import de.deepamehta.core.Association;
004import de.deepamehta.core.Role;
005import de.deepamehta.core.model.RoleModel;
006
007import org.codehaus.jettison.json.JSONObject;
008
009
010
011abstract class RoleImpl implements Role {
012
013    // ---------------------------------------------------------------------------------------------- Instance Variables
014
015    RoleModelImpl model;            // underlying model
016
017    AssociationModelImpl assoc;     // the association this role is involved in
018
019    PersistenceLayer pl;
020
021    // ---------------------------------------------------------------------------------------------------- Constructors
022
023    RoleImpl(RoleModelImpl model, AssociationModelImpl assoc, PersistenceLayer pl) {
024        this.model = model;
025        this.assoc = assoc;
026        this.pl = pl;
027    }
028
029    // -------------------------------------------------------------------------------------------------- Public Methods
030
031
032
033    // === Role Implementation ===
034
035    @Override
036    public String getRoleTypeUri() {
037        return model.getRoleTypeUri();
038    }
039
040    @Override
041    public long getPlayerId() {
042        return model.getPlayerId();
043    }
044
045    // Note: getPlayer() remains abstract
046
047    // ---
048
049    @Override
050    public void setRoleTypeUri(String roleTypeUri) {
051        assoc.updateRoleTypeUri(model, roleTypeUri);
052    }
053
054    // ---
055
056    @Override
057    public RoleModel getModel() {
058        return model;
059    }
060
061    // ---
062
063    @Override
064    public JSONObject toJSON() {
065        return model.toJSON();
066    }
067}