package org.fluxtream.connectors.sms_backup;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import org.fluxtream.core.TimeInterval;
import org.fluxtream.core.connectors.vos.AbstractPhotoFacetVO;
import org.fluxtream.core.domain.GuestSettings;
import org.fluxtream.core.mvc.models.DimensionModel;
public class SmsEntryFacetVO extends AbstractPhotoFacetVO<SmsEntryFacet> {
private static transient int[] thumbnailSideLengths = new int[]{50,75,100,150,200,300};
public String personName;
public String personNumber;
public String message;
public String[] photoUrls;
public String[] audioUrls;
public Map<Integer, String> thumbnailUrls;
public Map<Integer, DimensionModel> thumbnailSizes;
public String smsType;
@Override
public void fromFacet(SmsEntryFacet sms, TimeInterval timeInterval, GuestSettings settings) {
this.personName = sms.personName;
this.smsType = sms.smsType.toString();
this.personNumber = sms.personNumber;
this.message = sms.message;
UID = sms.getId();
String homeBaseUrl = settings.config.get("homeBaseUrl");
if (sms.hasAttachments){
String[] fileNames = sms.attachmentNames.split(",");
String[] mimeTypes = sms.attachmentMimeTypes.split(",");
List<String> photoFiles = new LinkedList<String>();
List<String> audioFiles = new LinkedList<String>();
for (int i = 0; i < fileNames.length; i++){
String fileUrl = String.format("%ssmsBackup/attachment/%s/%s",homeBaseUrl,sms.apiKeyId,fileNames[i]);
if (mimeTypes[i].startsWith("image")){
photoFiles.add(fileUrl);
}
else if (mimeTypes[i].startsWith("audio")){
audioFiles.add(fileUrl);
}
}
if (photoFiles.size() > 0){
photoUrls = photoFiles.toArray(new String[]{});
photoUrl = photoUrls[0];
deviceName = "SMS_Backup";
channelName = "sms";
thumbnailUrls = new HashMap<Integer,String>();
thumbnailSizes = new HashMap<Integer,DimensionModel>();
for (int i = 0; i < thumbnailSideLengths.length; i++){
thumbnailUrls.put(i,photoUrl + "?s=" + thumbnailSideLengths[i]);
thumbnailSizes.put(i,new DimensionModel(thumbnailSideLengths[i],thumbnailSideLengths[i]));
}
}
if (audioFiles.size() > 0)
audioUrls = audioFiles.toArray(new String[]{});
}
}
@Override
public String getPhotoUrl() {
return this.photoUrl;
}
@Override
public String getThumbnail(final int index) {
return thumbnailUrls == null ? null : thumbnailUrls.get(index);
}
@Override
public List<DimensionModel> getThumbnailSizes() {
if (thumbnailSizes == null){
return null;
}
else{
List<DimensionModel> dimensionModels = new ArrayList<DimensionModel>();
for (int index : thumbnailSizes.keySet()){
dimensionModels.add(index,thumbnailSizes.get(index));
}
return dimensionModels;
}
}
}