package org.fluxtream.core.connectors.fluxtream_capture;
import java.awt.Dimension;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.SortedMap;
import java.util.TreeMap;
import org.fluxtream.core.OutsideTimeBoundariesException;
import org.fluxtream.core.TimeInterval;
import org.fluxtream.core.connectors.fluxtream_capture.FluxtreamCapturePhotoFacet;
import org.fluxtream.core.connectors.vos.AbstractPhotoFacetVO;
import org.fluxtream.core.domain.GuestSettings;
import org.fluxtream.core.images.ImageOrientation;
import org.fluxtream.core.mvc.models.DimensionModel;
/**
* @author Chris Bartley (bartley@cmu.edu)
*/
public class FluxtreamCapturePhotoFacetVO extends AbstractPhotoFacetVO<FluxtreamCapturePhotoFacet> {
public Map<Integer, String> thumbnailUrls = new HashMap<Integer, String>(FluxtreamCapturePhotoFacet.NUM_THUMBNAILS);
public SortedMap<Integer, Dimension> thumbnailSizes = new TreeMap<Integer, Dimension>();
public transient ImageOrientation imageOrientation;
public int orientation;
@Override
protected void fromFacet(final FluxtreamCapturePhotoFacet facet, final TimeInterval timeInterval, final GuestSettings settings)
throws OutsideTimeBoundariesException {
deviceName = "FluxtreamCapture";
channelName = "photo";
UID = facet.getId();
start = facet.start;
final String photoStoreKey = facet.getPhotoStoreKey();
photoUrl = "/api/v1/bodytrack/photo/" + photoStoreKey;
// build the Map of thumbnail URLS and the SortedMap of thumbnail sizes
for (int i = 0; i < FluxtreamCapturePhotoFacet.NUM_THUMBNAILS; i++) {
thumbnailUrls.put(i, "/api/v1/bodytrack/photoThumbnail/" + facet.getGuestId() + "/" + facet.getId() + "/" + i);
thumbnailSizes.put(i, facet.getThumbnailSize(i));
}
imageOrientation = facet.getOrientation();
orientation = imageOrientation.getId();
}
@Override
public String getPhotoUrl() {
return photoUrl;
}
@Override
public String getThumbnail(final int index) {
return thumbnailUrls.get(index);
}
@Override
public List<DimensionModel> getThumbnailSizes() {
List<DimensionModel> sizes = new ArrayList<DimensionModel>();
for (final Dimension dimension : thumbnailSizes.values()) {
sizes.add(new DimensionModel(dimension.width, dimension.height)); // create a copy so the caller can't modify this instance
}
return sizes;
}
@Override
public ImageOrientation getOrientation() {
return imageOrientation;
}
}