Mercurial > hg > LGServices
view src/main/java/de/mpiwg/web/jsp/TopicListPage.java @ 57:5cbe567a9c52
new: a link to view section text in ext-interface on full text searching page. bug fixed: a default topicId passed when doing search and full text search
author | Zoe Hong <zhong@mpiwg-berlin.mpg.de> |
---|---|
date | Wed, 17 Feb 2016 14:58:19 +0100 |
parents | 95bf4ac726e6 |
children | b8ad346e39a0 |
line wrap: on
line source
package de.mpiwg.web.jsp; import java.util.ArrayList; import java.util.Collections; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import de.mpiwg.gazetteer.bo.LGTopic; import de.mpiwg.gazetteer.utils.DataProvider; public class TopicListPage extends AbstractJSPPage{ private static Logger logger = Logger.getLogger(TopicListPage.class); public static String bean = "topicListBean"; public static String page = "pages/topicList.jsp"; private List<LGTopic> completeTopicList; // complete topic list private List<LGTopic> filteredTopicList; private List<LGTopic> displayTopicList; private Long topicId; private int topicNumber; private String filteringMessage; private DataPaginator paginator = new DataPaginator(); public void loadParameters(HttpServletRequest request, HttpServletResponse response){ this.request = request; this.response = response; this.topicId = getLongParameter("topicId"); } public void reloadTopics(){ logger.debug("reloadTopics"); if (this.completeTopicList == null) { this.forceLoadTopics(); this.filteringMessage = null; } return; } public void forceLoadTopics(){ logger.debug("forceLoadTopics"); DataProvider.getInstance().setTopicMap(null); DataProvider.getInstance().setTopicSectionRelationMap(null); this.completeTopicList = new ArrayList<LGTopic>(); // TODO sometimes this.getSessionBean() will cause NullPointerException if(this.getSessionBean().getUser() != null){ for(LGTopic topic : DataProvider.getInstance().getTopics(this.getSessionBean().getUser().getId())){ if (topic.isEmpty()) { logger.debug("topic doesn't exist anymore."); } else { this.completeTopicList.add(topic); } } this.setTopicNumber(this.completeTopicList.size()); sortByLastModifiedDown(); // default sorting by from lasted modified to oldest } } public void createTopic(Long userId){ logger.debug("createTopic"); String nameEn = getParameter("nameEn"); String nameCh = getParameter("nameCh"); String namePinyin = getParameter("namePinyin"); String description = getParameter("description"); logger.debug("nameEn: " + nameEn + "nameCh: " + nameCh + "namePinyin: " + namePinyin + "description: " + description); if (StringUtils.isEmpty(nameEn)) { addMsg("Creating topic Failed. Name(Eng) cannot be empty."); } else if (StringUtils.isEmpty(nameCh)) { addMsg("Creating topic Failed. Name(中文) cannot be empty."); } else if (StringUtils.isEmpty(namePinyin)) { addMsg("Creating topic Failed. Name(Pinyin) cannot be empty."); } else { DataProvider.getInstance().createTopic(nameEn, nameCh, namePinyin, description, userId); addMsg("New topic has been created."); this.forceLoadTopics(); } } public void deleteTopic(){ logger.debug("deleteTopic " + topicId); if(topicId != null){ LGTopic topic = DataProvider.getInstance().getTopic(topicId); if(topic != null){ DataProvider.getInstance().deleteTopic(topic); this.forceLoadTopics(); } } } public void filter(){ this.filteredTopicList = new ArrayList<LGTopic>(); for (LGTopic topic : this.completeTopicList) { if(!this.filteredTopicList.contains(topic)){ /* if( (StringUtils.isEmpty(bookNameFilter) || StringUtils.startsWith(branch.getBook().getName(), bookNameFilter)) && (StringUtils.isEmpty(level1Filter) || StringUtils.startsWith(branch.getBook().getLevel1(), level1Filter)) && (StringUtils.isEmpty(level2Filter) || StringUtils.startsWith(branch.getBook().getLevel2(), level2Filter)) && (StringUtils.isEmpty(dynastyFilter) || StringUtils.startsWith(branch.getBook().getDynasty(), dynastyFilter)) && (StringUtils.isEmpty(adminTypeFilter) || StringUtils.startsWith(branch.getBook().getAdmin_type(), adminTypeFilter)) && (StringUtils.isEmpty(bookIdFilter) || StringUtils.startsWith(branch.getBook().getId(), bookIdFilter)) && (StringUtils.isEmpty(periodFilter) || StringUtils.startsWith(branch.getBook().getPeriod(), periodFilter)) && (StringUtils.isEmpty(sectionNameFilter) || StringUtils.startsWith(branch.getSection().getName(), sectionNameFilter)) && (StringUtils.isEmpty(labelFilter) || StringUtils.startsWith(branch.getLabel(), labelFilter)) ){ this.filteredTopicList.add(branch); } */ this.filteredTopicList.add(topic); } } if(completeTopicList.size() > 0){ //this.filteringMessage = this.filteredTopicList.size() + " topics listed after filtering"; this.paginator.setCurrentPage(0); this.paginator.resetNumberOfPages(filteredTopicList.size()); }else{ this.filteredTopicList = null; } this.updateCurrentTopics(); } private void updateCurrentTopics() { this.paginator.initCount(); int startRecord = this.paginator.getCurrentPage() * this.paginator.getItemsPerPage(); if(this.paginator.getNumberOfPages() == 0){ this.displayTopicList = new ArrayList<LGTopic>(); }else if((this.paginator.getCurrentPage() + 1) == this.paginator.getNumberOfPages()){ int mod = this.filteredTopicList.size() % paginator.getItemsPerPage(); if(mod == 0){ this.displayTopicList = filteredTopicList.subList(startRecord, startRecord + this.paginator.getItemsPerPage()); }else{ this.displayTopicList = filteredTopicList.subList(startRecord, startRecord + mod); } }else{ this.displayTopicList = filteredTopicList.subList(startRecord, startRecord + this.paginator.getItemsPerPage()); } /* for(LGTopic topic : this.displayTopicList){ topic.setTopic(this.topicMap.get(topic.getId())); } */ } // sort public void sortByLastModifiedDown() { //Collections.sort(this.completeTopicList, new SortByLastModified()); //Collections.reverse(this.completeTopicList); filter(); } public List<LGTopic> getCompleteTopicList() { return completeTopicList; } public void setCompleteTopicList(List<LGTopic> completeTopicList) { this.completeTopicList = completeTopicList; } public List<LGTopic> getFilteredTopicList() { return filteredTopicList; } public void setFilteredTopicList(List<LGTopic> filteredTopicList) { this.filteredTopicList = filteredTopicList; } public List<LGTopic> getDisplayTopicList() { return displayTopicList; } public void setDisplayTopicList(List<LGTopic> displayTopicList) { this.displayTopicList = displayTopicList; } public Long getTopicId() { return topicId; } public void setTopicId(Long topicId) { this.topicId = topicId; } public String getFilteringMessage() { return filteringMessage; } public void setFilteringMessage(String filteringMessage) { this.filteringMessage = filteringMessage; } public DataPaginator getPaginator() { return paginator; } public void setPaginator(DataPaginator paginator) { this.paginator = paginator; } public int getTopicNumber() { return topicNumber; } public void setTopicNumber(int topicNumber) { this.topicNumber = topicNumber; } }