001package de.deepamehta.core.model;
002
003import org.codehaus.jettison.json.JSONObject;
004
005
006
007public class TopicModel extends DeepaMehtaObjectModel {
008
009    // ---------------------------------------------------------------------------------------------------- Constructors
010
011    public TopicModel(ChildTopicsModel childTopics) {
012        super(childTopics);
013    }
014
015    public TopicModel(String typeUri) {
016        super(typeUri);
017    }
018
019    public TopicModel(String typeUri, SimpleValue value) {
020        super(typeUri, value);
021    }
022
023    public TopicModel(String typeUri, ChildTopicsModel childTopics) {
024        super(typeUri, childTopics);
025    }
026
027    public TopicModel(String uri, String typeUri) {
028        super(uri, typeUri);
029    }
030
031    public TopicModel(String uri, String typeUri, SimpleValue value) {
032        super(uri, typeUri, value);
033    }
034
035    public TopicModel(String uri, String typeUri, ChildTopicsModel childTopics) {
036        super(uri, typeUri, childTopics);
037    }
038
039    public TopicModel(long id) {
040        super(id);
041    }
042
043    public TopicModel(long id, String typeUri) {
044        super(id, typeUri);
045    }
046
047    public TopicModel(long id, ChildTopicsModel childTopics) {
048        super(id, childTopics);
049    }
050
051    /**
052     * @param   uri         If <code>null</code> an empty string is set. This is OK.
053     * @param   typeUri     Mandatory. Note: only the internal meta type topic (ID 0) has no type URI (null).
054     * @param   value       If <code>null</code> an empty string value is set. This is OK.
055     * @param   childTopics If <code>null</code> an empty composite is set. This is OK.
056     */
057    public TopicModel(long id, String uri, String typeUri, SimpleValue value, ChildTopicsModel childTopics) {
058        super(id, uri, typeUri, value, childTopics);
059    }
060
061    public TopicModel(TopicModel topic) {
062        super(topic);
063    }
064
065    public TopicModel(JSONObject topic) {
066        super(topic);
067    }
068
069    // -------------------------------------------------------------------------------------------------- Public Methods
070
071
072
073    // === Implementation of the abstract methods ===
074
075    @Override
076    public RoleModel createRoleModel(String roleTypeUri) {
077        return new TopicRoleModel(getId(), roleTypeUri);
078    }
079
080
081
082    // === Java API ===
083
084    @Override
085    public TopicModel clone() {
086        try {
087            return (TopicModel) super.clone();
088        } catch (Exception e) {
089            throw new RuntimeException("Cloning a TopicModel failed", e);
090        }
091    }
092
093    @Override
094    public String toString() {
095        return "topic (" + super.toString() + ")";
096    }
097}