package org.fluxtream.connectors.sms_backup; import org.fluxtream.core.connectors.annotations.ObjectTypeSpec; import org.fluxtream.core.domain.AbstractFacet; import org.hibernate.annotations.Index; import javax.persistence.Entity; import javax.persistence.Lob; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import java.io.Serializable; import java.util.Date; @SuppressWarnings("serial") @Entity(name="Facet_SmsEntry") @ObjectTypeSpec(name = "sms", value = 2, parallel=true, isImageType=true, prettyname = "Text Messages", extractor=SmsEntryFacetExtractor.class, photoFacetFinderStrategy=SmsBackupPhotoFacetFinderStrategy.class) @NamedQueries({ @NamedQuery(name = "sms_backup.sms.byEmailId", query = "SELECT facet FROM Facet_SmsEntry facet WHERE facet.apiKeyId=? AND facet.emailId=?") }) public class SmsEntryFacet extends AbstractFacet implements Serializable { private static final String UNKNOWN = "Unknown"; public SmsEntryFacet(){super();} public SmsEntryFacet(long apiKeyId){super(apiKeyId);} public static enum SmsType { INCOMING, OUTGOING } SmsType smsType; public String personName; public String personNumber; @Index(name="emailId") public String emailId; @Lob public String message; public Date dateReceived; transient public int startMinute; public Boolean hasAttachments; @Lob public String attachmentNames; public String attachmentMimeTypes; public String toString() { String s = "Sms "; switch(smsType) { case INCOMING: s += "from " + (personName.equals(UNKNOWN)?personNumber:personName) + ": " + message; break; case OUTGOING: s += "to " + (personName.equals(UNKNOWN)?personNumber:personName) + ": " + message; break; } return s; } @Override protected void makeFullTextIndexable() { this.fullTextDescription = personName + " " + personNumber + " " + message; } }