package org.dyndns.jkiddo.service.dpap.server; import java.sql.SQLException; import java.util.Map; import javax.inject.Inject; import javax.inject.Named; import org.dyndns.jkiddo.dmp.chunks.media.AuthenticationMethod.PasswordMethod; import org.dyndns.jkiddo.dmp.chunks.media.Listing; import org.dyndns.jkiddo.dmp.model.Library; import org.dyndns.jkiddo.dmp.model.MediaItem; import org.dyndns.jkiddo.logic.interfaces.IImageStoreReader; import org.dyndns.jkiddo.logic.interfaces.IImageStoreReader.IImageItem; import org.dyndns.jkiddo.service.dmap.IItemManager; import org.dyndns.jkiddo.service.dmap.Util; public class ImageItemManager implements IItemManager { private final Library library; private final IImageStoreReader reader; private final Map<MediaItem, IImageItem> itemToIImageItem; private PasswordMethod authentication; @Inject public ImageItemManager(@Named(Util.APPLICATION_NAME) String applicationName, final IImageStoreReader reader, final PasswordMethod authentication) throws Exception { library = null; itemToIImageItem = null; this.reader = null; /*this.authentication = authentication; this.reader = reader; this.itemToIImageItem = Maps.uniqueIndex(reader.readImages(), new Function<IImageItem, MediaItem>() { @Override public MediaItem apply(IImageItem iImageItem) { // dpap: // http://192.168.1.2dpap://192.168.1.2:8770/databases/1/containers/5292/items?session-id=1101478641&meta=dpap.aspectratio,dmap.itemid,dmap.itemname,dpap.imagefilename,dpap.imagefilesize,dpap.creationdate,dpap.imagepixelwidth,dpap.imagepixelheight,dpap.imageformat,dpap.imagerating,dpap.imagecomments,dpap.imagelargefilesize&type=photo MediaItem item = new MediaItem(new ItemKind(ItemKind.IMAGE)); item.addChunk(new AspectRatio(((double) iImageItem.getImageWidth() / iImageItem.getImageHeight()) + "")); item.addChunk(new CreationDate(iImageItem.getCreationDate().getTime())); item.addChunk(new ImageFilename(iImageItem.getImageFilename())); item.addChunk(new ItemName(iImageItem.getImageFilename())); item.addChunk(new ImageFileSize(iImageItem.getSize())); item.addChunk(new ImagePixelWidth(iImageItem.getImageWidth())); item.addChunk(new ImagePixelHeight(iImageItem.getImageHeight())); item.addChunk(new ImageFormat(iImageItem.getFormat())); item.addChunk(new ImageRating(iImageItem.getRating())); item.addChunk(new ImageLargeFileSize(iImageItem.getSize())); item.addChunk(new ImageComment("This photo is served by Jolivia")); // try // { // item.addChunk(new FileData(iImageItem.getImageThumb())); // } // catch(Exception e) // { // e.printStackTrace(); // } return item; } }); this.library = new Library(applicationName); Database database = new Database(this.library); database.addMediaItems(itemToIImageItem.keySet()); this.library.addDatabase(database);*/ } @Override public PasswordMethod getAuthenticationMethod() { return this.authentication; } @Override public long getSessionId(String remoteHost) { return 42; } @Override public void waitForUpdate() { try { Thread.sleep(100000000); } catch(InterruptedException ie) { ie.printStackTrace(); Thread.currentThread().interrupt(); } } @Override public long getRevision(String remoteHost, long sessionId) { return library.getRevision(); } /* @Override public Database getDatabase(long databaseId) { return library.getDatabase(databaseId); }*/ @Override public byte[] getItemAsByteArray(long databaseId, long itemId) { /*MediaItem image = library.getDatabase(databaseId).getMasterContainer().getItem(itemId); try { return DmapUtil.uriTobuffer(reader.getImage(itemToIImageItem.get(image))); } catch(Exception e) { throw new RuntimeException(e); }*/ return null; } public byte[] getThumb(long databaseId, long itemId) { /*MediaItem image = library.getDatabase(databaseId).getMasterContainer().getItem(itemId); try { return reader.getImageThumb(itemToIImageItem.get(image)); } catch(Exception e) { throw new RuntimeException(e); }*/ return null; } @Override public Listing getContainers(long databaseId, Iterable<String> parameters) { // TODO Auto-generated method stub return null; } @Override public Listing getMediaItems(long databaseId, long containerId, Iterable<String> parameters) { // TODO Auto-generated method stub return null; } @Override public Listing getMediaItems(long databaseId, Iterable<String> parameters) { // TODO Auto-generated method stub return null; } @Override public Listing getDatabases() throws SQLException { // TODO Auto-generated method stub return null; } }