package com.bielu.annoboard.action.rss;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;

import com.bielu.annoboard.dao.AnnouncementDao;
import com.bielu.annoboard.domain.Announcement;
import com.bielu.annoboard.rss.RssChannel;
import com.opensymphony.xwork2.ActionSupport;

public class RssAction extends ActionSupport {

	private static final long serialVersionUID = 5247841193591145995L;
	private static final int DEFAULT_LAST_COUNT = 50;

	@Autowired
	private AnnouncementDao announcementDao;
	private RssChannel channel;
	private int lastCount = DEFAULT_LAST_COUNT;
	private String query;

	@Override
	@Transactional(readOnly = true)
	public String execute() {
		if (query != null && query.trim().length() > 0) {
			channel = RssChannelHelper.createRssChannel(announcementDao.loadByFreeTextQuery(query));
			channel.setTitle(getText("channel.title.freeText", new String[] { query }));
			return SUCCESS;
		}
		
		List<Announcement> list = announcementDao.loadLast(getLastCount());
		channel = RssChannelHelper.createRssChannel(list);
		channel.setTitle(getText("channel.title", new String[] { String.valueOf(list.size()) }));
		return SUCCESS;
	}
	
	public RssChannel getChannel() {
		return channel;
	}
	
	public void setLastCount(int count) {
		this.lastCount = count;
	}
	
	private int getLastCount() {
		return lastCount;
	}

	public String getQuery() {
		return query;
	}

	public void setQuery(String query) {
		this.query = query;
	}
}

