001    package de.deepamehta.core.model;
002    
003    import org.codehaus.jettison.json.JSONObject;
004    
005    
006    
007    public 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    }