001package de.deepamehta.core.impl; 002 003import de.deepamehta.core.model.RelatedTopicModel; 004import de.deepamehta.core.model.TopicModel; 005import de.deepamehta.core.model.TopicReferenceModel; 006 007import java.util.List; 008 009 010 011class TopicReferenceModelImpl extends RelatedTopicModelImpl implements TopicReferenceModel { 012 013 // ---------------------------------------------------------------------------------------------------- Constructors 014 015 TopicReferenceModelImpl(RelatedTopicModelImpl relatedTopic) { 016 super(relatedTopic); 017 } 018 019 // -------------------------------------------------------------------------------------------------- Public Methods 020 021 @Override 022 public boolean isReferenceById() { 023 return getId() != -1; 024 } 025 026 @Override 027 public boolean isReferenceByUri() { 028 return getUri() != null && !getUri().equals(""); 029 } 030 031 // --- 032 033 @Override 034 public boolean isReferingTo(TopicModel topic) { 035 if (isReferenceById()) { 036 return getId() == topic.getId(); 037 } else if (isReferenceByUri()) { 038 return getUri().equals(topic.getUri()); 039 } else { 040 throw new RuntimeException("Invalid topic reference (" + this + ")"); 041 } 042 } 043 044 @Override 045 public RelatedTopicModelImpl findReferencedTopic(List<? extends RelatedTopicModel> topics) { 046 for (RelatedTopicModel topic : topics) { 047 if (isReferingTo(topic)) { 048 return (RelatedTopicModelImpl) topic; 049 } 050 } 051 return null; 052 } 053 054 // --- 055 056 @Override 057 public String toString() { 058 return "reference " + super.toString(); 059 } 060}