/**
*
*/
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.config.Properties;
import org.inbio.m3s.dao.core.MediaCategoryDAO;
import org.inbio.m3s.dao.core.MediaDAO;
import org.inbio.m3s.dto.lite.MediaLite;
import org.inbio.m3s.dto.message.MediaCategoryDTO;
import org.inbio.m3s.dto.taxonomy.TaxonLiteDTO;
import org.inbio.m3s.service.MessageManager;
import org.inbio.m3s.service.TaxonomyManager;
import org.inbio.m3s.util.ServiceUtil;
/**
* Dispatches information about the multimedia.
*
*
* @author jgutierrez
* @deprecated
*
*/
public class InfoDispatcher 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");
String taxonomy = req.getParameter("taxonomy");
String kingdomName = req.getParameter("kingdom");
TaxonomyManager taxonomyManager = (TaxonomyManager) ServiceUtil.appContext.getBean(Properties.TAXONOMY_MANAGER);
MediaDAO mDAO = (MediaDAO) ServiceUtil.appContext.getBean("mediaDAO");
MediaCategoryDAO mcDAO = (MediaCategoryDAO) ServiceUtil.appContext.getBean("mediaCategoryDAO");
TaxonLiteDTO tl = null;
List<MediaLite> mlList = new ArrayList<MediaLite>();
MediaCategoryDTO mcl = null;
try {
// buscar los valores reales;
if (kingdomName != null) {
tl = taxonomyManager.getTaxonLite(taxonomy, kingdomName);
mlList = mDAO.getMediaLiteForTaxonId(new Integer(tl.getTaxonKey()));
} else {// sin kigdom... no recomendado
List<MediaLite> mLiteList = null;
List<TaxonLiteDTO> tlDTOList = taxonomyManager.getTaxonLite(taxonomy);
for (TaxonLiteDTO tlDTO : tlDTOList) {
mLiteList = mDAO.getMediaLiteForTaxonId(new Integer(tlDTO.getTaxonKey()));
mlList.addAll(mLiteList);
}
}
} catch (IllegalArgumentException iae) {
mlList = new ArrayList<MediaLite>();
}
// writting the XML file
out.println("<?xml version=\"1.0\"?>");
out.println("<multimedia taxonomy=\"" + taxonomy + "\" kingdom=\"" + kingdomName + "\">");
for (MediaLite ml : mlList) {
mcl = mcDAO.getMediaCategoryLiteFromMediaType(ml.getMediaTypeId(), MessageManager.ENGLISH);
out.println("<media id=\"" + ml.getMediaId() + "\" category=\"" + mcl.getMediaCategoryKey() + "\"/>");
}
out.println("</multimedia>");
out.flush();
out.close();
}
}