[opencms] [opencms-dev] Create a scheduled job from jsp

Luis Rodriguez Fernandez luis.rodriguez at fundacionctic.org
Wed Sep 7 08:44:32 CEST 2005


Good morning Jorge. At first thanks for your answer.

I´m using jsp`s for making the news because I think is the most useful and comfortable way to separate the presentation (the view) of the content. I mean that I could have a few jsp pages for making the head of the newsletter, another few for making the body, maybe another few for the foot (if it was required).

I know that I can use CmsResource to get structured contents, even I had a pair of classes that did it in this way:

public List getContenidosEstructurados() throws BusinessException,
			CmsDataAccessException, CmsException {
			
//		 now collect the resources
I_CmsResourceCollector collector = OpenCms.getResourceManager()
				.getContentCollector(nombreCollector);

List m_collectorResult = collector.getResults(cms, nombreCollector,
				carpeta);
Iterator iter = m_collectorResult.iterator();
CmsResource e = null;
CmsFile f = null;
List delete = new ArrayList();
while (iter.hasNext()) {
	e = (CmsResource) iter.next();
	f = CmsFile.upgrade(e, cms);

	A_CmsXmlDocument contenidoEstructurado = CmsXmlContentFactory
			.unmarshal(cms, f);

	if (!contentDateCheckValue(contenidoEstructurado)) {
		delete.add(e);
	}
}
m_collectorResult.removeAll(delete);
CmsContentInfoBean contentInfoBean = new CmsContentInfoBean();
contentInfoBean.setResultSize(m_collectorResult.size());
contentInfoBean.initResultIndex();
contentInfoBean.initPageNavIndexes();
return m_collectorResult;
}

/**
* @return
*/
private boolean contentDateCheckValue(A_CmsXmlDocument content) {
	String stringDate = content.getStringValue(cms, discriminante, 	locale);
Long l = new Long(stringDate);
Date dPublicacion = new Date(l.longValue());
Date d = new Date();

if (periodicidad.equals(NewsLetterOpenCmsService.PERIODICIDAD_DIARIA)) {
	if ((d.getDate() == dPublicacion.getDate())
		&& (d.getMonth() == dPublicacion.getMonth())
		&& (d.getYear() == dPublicacion.getYear())) {
		return true;
	} else {
		return false;
	}
}
if (periodicidad.equals(NewsLetterOpenCmsService.PERIODICIDAD_SEMANAL)) {
	long diferenciaEnMilisegundos = 7 * 1000 * 60 * 60 * 24;
	if ((d.getTime() - dPublicacion.getTime()) <= 				diferenciaEnMilisegundos)
		return true;
	else {
		return false;
	}
}
return false;
}


private String tratarContenidosEstructurados(CmsObject cms, String locale, 	List contenidosEstructurados) throws CmsException {
	
CmsFile f = null;
StringBuffer sb = new StringBuffer();
		
for (Iterator iter = contenidosEstructurados.iterator(); iter.hasNext();) {
	CmsResource element = (CmsResource) iter.next();
	String nombre = element.getName();
	f = CmsFile.upgrade(element, cms);
	A_CmsXmlDocument content = CmsXmlContentFactory.unmarshal(cms, f);
	String address = cms.getRequestContext().getRemoteAddress();
	String uri = cms.getRequestContext().getUri();
	String titulo = content.getStringValue(cms, "Title", new 	Locale(locale));
	sb.append(nombre + " " + titulo + " " + address + " " + uri + "\n");
}
return sb.toString();
}


Ok, that's great, but you must realize that I have to give format to the mail (the newsletter), I have to put css, images, links to the news... So I think the better way to do this is launching jsp pages, even I have done a custom tag for getting the structured contents (in this case news). I could do all of this from the same java class, but in that case I was mixing the view with the logic bussines.

Thanks again. Luis.

Ps: it could be great to continue talking about this topic.  



 
-----Mensaje original-----
De: opencms-dev-bounces at opencms.org [mailto:opencms-dev-bounces at opencms.org] En nombre de Jorge González
Enviado el: martes, 06 de septiembre de 2005 13:38
Para: 'The OpenCms mailing list'
Asunto: RE: [opencms] [opencms-dev] Create a scheduled job from jsp

Hi Luis:

Why are you trying to launch a jsp page to build the contents of the newsletter ?

You could use the CmsResource directly to pick the title and content of all the news matching the criteria and store it into a (file/buffer/whatever) after that, you could send this to the mailing list.

Do you need to execute a jsp to do this for another reasons ?




More information about the opencms-dev mailing list