package com.robonobo.midas.model; import java.util.Date; import org.hibernate.search.annotations.DocumentId; import org.hibernate.search.annotations.Field; import org.hibernate.search.annotations.Indexed; import com.robonobo.core.api.model.Stream; import com.robonobo.core.api.model.StreamAttribute; import com.robonobo.core.api.proto.CoreApi.StreamMsg; @Indexed public class MidasStream extends com.robonobo.core.api.model.Stream { Date published; Date modified; public MidasStream() { } public MidasStream(StreamMsg msg) { super(msg); } public Date getPublished() { return published; } public void setPublished(Date published) { this.published = published; } public Date getModified() { return modified; } public void setModified(Date modified) { this.modified = modified; } public void copyFrom(Stream s) { if(s instanceof MidasStream) { MidasStream ms = (MidasStream) s; if(ms.getPublished() != null) setPublished(ms.getPublished()); if(ms.getModified() != null) setModified(ms.getModified()); } super.copyFrom(s); } public void setAttrValue(String key, String value) { if(attrMap.containsKey(key)) attrMap.get(key).setValue(value); else { StreamAttribute a = new MidasStreamAttribute(this, key, value); attributes.add(a); attrMap.put(key, a); } } // Redeclare these properties with annotations to make them indexed by lucene @Override @DocumentId public String getStreamId() { return super.getStreamId(); } @Override @Field public String getTitle() { return super.getTitle(); } @Override @Field public String getDescription() { return super.getDescription(); } }