/**
*
*/
package org.inbio.m3s.dispatchers;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.inbio.m3s.dao.core.MediaDAO;
import org.inbio.m3s.dto.lite.MediaLite;
import org.inbio.m3s.gwt.client.widgets.galleries.SearchCriteriaTriplet;
import org.inbio.m3s.manager.SearchManager;
import org.inbio.m3s.util.ServiceUtil;
/**
* Dispatches information about the multimedia.
*
*
* @author jgutierrez
*
*/
public class MultimediaInfoDispatcher extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 5706888888097730675L;
/**
* Returns an XML with the information request (only if the media is public!).
*
* The servlet receives a list of parameters in HttpServletRequest method
* parameter, the way each parameter is used will be explain here:
*
* @param taxonomy
* a string
* @param kingdom
* a string
*
* Example of use:
* http://localhost:8080/m3s/getInfo?taxonomy=Ara ambigua&kingdom=Animalia
*/
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
ServletOutputStream out = res.getOutputStream(); // binary output
res.setContentType("text/xml");
Integer searchFilterId = Integer.valueOf(req.getParameter("filter"));
Integer searchCriteriaId = Integer.valueOf(req.getParameter("criteria"));
String value = req.getParameter("value");
Integer first = Integer.valueOf(req.getParameter("first"));
Integer last = Integer.valueOf(req.getParameter("last"));
SearchCriteriaTriplet scTriplet = new SearchCriteriaTriplet(searchFilterId,searchCriteriaId,value);
List<SearchCriteriaTriplet> sctList = new ArrayList<SearchCriteriaTriplet>();
sctList.add(scTriplet);
int totalResults = SearchManager.getTotalResults(sctList);
List<Integer> mediaIdsList = SearchManager.getResults(sctList, 1, totalResults);
MediaDAO mDAO = (MediaDAO) ServiceUtil.appContext.getBean("mediaDAO");
MediaLite ml = null;
// writting the XML file
out.println("<?xml version=\"1.0\"?>");
out.println("<multimedia results=\"" + totalResults + "\" first=\"" + first + "\" last=\"" + last + "\">");
for (Integer mediaId : mediaIdsList) {
ml = mDAO.getMediaLite(mediaId);
out.println("<media url=\""+getImageURL("thumb", ml.getMediaId().toString())+"\" title=\"" + ml.getTitle() + "\" author=\"" + ml.getAuthorPersonId() + "\" usePolicy=\"" + ml.getUsePolicyId() + "\"/>");
}
out.println("</multimedia>");
out.flush();
out.close();
}
private String getImageURL(String imageSize, String imageId){
return "http://coffea:8686/m3sINBio/getImage?id="+imageId+"&size="+imageSize;
}
}