Hi everyone, I have been going through PhotArk code lately and I have some questions about its design:
1. PhotArk architecture guide states that a gallery is: "a facade that enables application to interact with the different types of albums of a gallery" [1]. There are currently only two gallery implementations: filesystem and jcr. But actually there is no way I can have a gallery that supports multiple types of albums, e.g., one jcr and one filesystem album. Is that correct? 2. What exactly is the concept of an album? Architecture guide says: "abstracts the operations available for the different types of albums. This should be extensible to allow users/developers to plug support for other types of albums." [1]. It doesn't say "Album", but instead it says "Album Service", which for me shouldn't be considered the same thing, but based on the source code, Album interface holds operations used by an Album and what PhotArk guide calls Album Service. Well, for me, an ideal virtual album is something that aggregates a bunch of pictures, maybe specifying the order, and holds a bunch of information about that aggregation (description, cover picture, etc). I said "virtual", because virtual albums allow us to do some extra things as having different albums containing the same picture and pictures coming from different sources. E.g., in my gallery I could have a picture (hosted on flickr) from my vacation which was taken in 2008 and I could add it to two different albuns: "Vacation" and "2008 Pictures", I could also have another picture (hosted on picasa) from another vacation and added to the same album and under the same gallery. So I would say that an "Album Service", which I would like to call something like "ImageLoader Service", should only be responsible for loading an image from a specific source (jrc, filesystem, flickr, etc) and return it to the gallery. All the user would need is to add a picture to a gallery using a location string, and based on it, the gallery service would delegate the image loading to the corresponding ImageLoaderService when that picture is requested from the gallery. In the end, an Album (not album service) would only hold info about that album and a list of strings, which are location strings that point to the album's images. This design also centralizes the image add/deleting on the gallery side, allowing it to also delegate the event of add/deleting to extra pluggable components (like search) which would like to be notified when such events occurs. Hey! Comments, suggestions and questions will be very welcome :) Kind Regards, Phillipe Ramalho [1] - http://incubator.apache.org/photark/photark-architecture-guide.html
