package com.transmem.action;
import java.util.logging.Logger;
import java.io.IOException;
import javax.servlet.ServletException;
import com.transmem.data.db.Users;
import com.transmem.data.tm.*;
import com.transmem.nlp.LanguageException;
public class CorpusPageAction extends BaseAction
{
private Logger log_ = Logger.getLogger(CorpusPageAction.class.getName());
public CorpusPageAction()
{
super();
}
/**
* Query a page of sentences.
* A list of sentence IDs is kept in the session memory. The list is loaded
* by QueryCorpus and saved in a Corpus object.
*
* <p class="code">
<ul>
<li>Session attributes:<br>
<ul>
<li>user : Users</li>
<li>corpus : Corpus</li>
</ul>
</li>
<li>Request parameters:<br>
<ul>
<li>pagedir : prev or next page to turn to</li>
</ul>
</li>
</ul>
* </p>
*
* param vars: which page to query
* Session vars: corpus object that contains the sentence IDs
*/
public void execute(ServletParams param) throws ServletException, IOException
{
log_.entering("CorpusPageAction","execute");
Session session = param.getSession();
Users usr = session.getUser();
if (usr == null) {
log_.severe("User not login");
param.sendError(MessageCode.ERR_NOT_LOGIN);
return;
}
setNextPage(null); //for Ajax return
param.setContentType("text/html;charset=utf-8");
param.setHeader("Cache-Control", "no-cache");
String dir = param.getParameter("pagedir"); //prev or next
String result = null;
Corpus corpus = session.getCorpus();
if (corpus == null)
{
result = "0/0* No examples available.";
}
else
{
try
{
int pages = session.getSentencePages().intValue();
int page = session.getSentencePage().intValue();
if (dir.equals("next"))
{
if (page < pages) page ++;
}
else
{
if (page > 0) page --;
}
session.setSentencePage(new Integer(page));
result = corpus.getPageAsHtml(page);
}
catch (LanguageException e)
{
log_.severe("corpus.getPage exception: "+e.getMessage());
}
}
param.getWriter().write(result);
}
}