# HG changeset patch # User Zoe Hong # Date 1462183410 -7200 # Node ID b8ad346e39a0254d082408a24bb7ba607cc54ef9 # Parent 5cbe567a9c527d4e5d13e05c7d9a6e1d11337001 new: modify based on doc 'Improving LGServices interface.docx': user workflow improvement, functions like adding task into a topic and search suggestions. diff -r 5cbe567a9c52 -r b8ad346e39a0 src/main/java/de/mpiwg/gazetteer/dataverse/DataverseUtils.java --- a/src/main/java/de/mpiwg/gazetteer/dataverse/DataverseUtils.java Wed Feb 17 14:58:19 2016 +0100 +++ b/src/main/java/de/mpiwg/gazetteer/dataverse/DataverseUtils.java Mon May 02 12:03:30 2016 +0200 @@ -87,8 +87,8 @@ JSONObject fileObj = new JSONObject(); // publish to LGDataverse using tab-delimiter data - fileObj.put(branch.getLabel() + ".csv", table); - String fileStr = fileObj.toString(); + fileObj.put(branch.getLabel() + '-' + lgFile.getVersion().toString() + ".csv", table); // append version of the branch at the end of fileStr, concatenated with '-' + String fileStr = fileObj.toString(); multipart.addFormField("file", fileStr); diff -r 5cbe567a9c52 -r b8ad346e39a0 src/main/java/de/mpiwg/gazetteer/rest/AbstractServletMethod.java --- a/src/main/java/de/mpiwg/gazetteer/rest/AbstractServletMethod.java Wed Feb 17 14:58:19 2016 +0100 +++ b/src/main/java/de/mpiwg/gazetteer/rest/AbstractServletMethod.java Mon May 02 12:03:30 2016 +0200 @@ -48,6 +48,8 @@ return null; } + + protected static Long getRequestLongPart(HttpServletRequest request, String partName) throws IOException, IllegalStateException, ServletException { diff -r 5cbe567a9c52 -r b8ad346e39a0 src/main/java/de/mpiwg/gazetteer/rest/DownloadFileText.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/de/mpiwg/gazetteer/rest/DownloadFileText.java Mon May 02 12:03:30 2016 +0200 @@ -0,0 +1,74 @@ +package de.mpiwg.gazetteer.rest; + +import java.io.FileInputStream; +import java.io.PrintWriter; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.lang.StringUtils; +import org.json.JSONObject; + +import de.mpiwg.gazetteer.bo.LGBranch; +import de.mpiwg.gazetteer.bo.LGFile; +import de.mpiwg.gazetteer.utils.DataProvider; +import de.mpiwg.gazetteer.utils.FileManager; +import de.mpiwg.gazetteer.utils.PropertiesUtils; +import de.mpiwg.gazetteer.utils.exceptions.GazetteerException; + +public class DownloadFileText extends AbstractServletMethod { + + public static String name = "downloadFileText"; + + public static void execute(HttpServletRequest request, HttpServletResponse response) throws Exception{ + + Long fileId = getQueryLongParam(request, "fileId"); + + System.out.println("%%%%% DownloadFileText [fileId=" + fileId + "]"); + + + if(fileId != null){ + + response.setContentType("text/html; charset=UTF-8"); + PrintWriter out = response.getWriter(); + + LGFile file = DataProvider.getInstance().getFile(fileId); + if(file != null){ + String filename = file.getFileName(); // "112_360452_360453_2015.09.04_12.43.08.924_11.txt"; + + //filename extension with xml + filename = filename.substring(0, filename.length()-3); + filename += "xml"; + + response.setContentType("text/xml; charset=UTF-8"); + response.setHeader("Content-Disposition","attachment; filename=\"" + filename + "\""); + + String text = FileManager.getFileAsText(file); + out.print(text); + out.flush(); + + }else{ + + response.setContentType("application/json"); + JSONObject json = new JSONObject(); + json.put("status", "error"); + json.put("message", "File no found (" + fileId + ")"); + json.put("code", GazetteerException.CODE); + out = response.getWriter(); + out.print(json.toString()); + out.flush(); + + } + + }else{ + response.setContentType("application/json"); + JSONObject json = new JSONObject(); + json.put("status", "error"); + json.put("message", "Following parameters are mandatory: fileId."); + PrintWriter out = response.getWriter(); + out.print(json.toString()); + out.flush(); + } + } + +} diff -r 5cbe567a9c52 -r b8ad346e39a0 src/main/java/de/mpiwg/gazetteer/rest/DownloadFullTextSearchCsvFile.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/de/mpiwg/gazetteer/rest/DownloadFullTextSearchCsvFile.java Mon May 02 12:03:30 2016 +0200 @@ -0,0 +1,66 @@ +package de.mpiwg.gazetteer.rest; + +import java.io.FileInputStream; +import java.io.PrintWriter; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Paths; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.lang.StringUtils; +import org.json.JSONObject; + +import de.mpiwg.gazetteer.bo.LGBranch; +import de.mpiwg.gazetteer.bo.LGFile; +import de.mpiwg.gazetteer.utils.DataProvider; +import de.mpiwg.gazetteer.utils.FileManager; +import de.mpiwg.gazetteer.utils.PropertiesUtils; +import de.mpiwg.gazetteer.utils.exceptions.GazetteerException; + +public class DownloadFullTextSearchCsvFile extends AbstractServletMethod { + + public static String name = "downloadFullTextSearchCsvFile"; + + public static void execute(HttpServletRequest request, HttpServletResponse response) throws Exception{ + + //String filename = getQueryLongParam(request, "file"); + String filename = request.getParameter("file"); + + byte[] bytes = filename.getBytes(StandardCharsets.ISO_8859_1); + filename = new String(bytes, StandardCharsets.UTF_8); + + System.out.println("%%%%% DownloadFullTextSearchCsvFile [filename=" + filename + "]"); + + + if(StringUtils.isNotEmpty(filename)){ + + PrintWriter out = response.getWriter(); + + response.setContentType("text/csv; charset=UTF-8"); + + String downloadFilename = filename.split("_")[1]; // Strip the user's id at the beginning of the filename, eg 11_ASDF.csv + response.setHeader("Content-Disposition","attachment; filename=\"" + URLEncoder.encode(downloadFilename, "UTF-8") + "\""); + + String absolutePath = PropertiesUtils.getPropValue("lgmap_datasets") + "/" + filename; + + byte[] encoded = Files.readAllBytes(Paths.get(absolutePath)); + String text = new String(encoded, "UTF8"); + + out.print(text); + out.flush(); + + }else{ + response.setContentType("application/json"); + JSONObject json = new JSONObject(); + json.put("status", "error"); + json.put("message", "Following parameters are mandatory: fileId."); + PrintWriter out = response.getWriter(); + out.print(json.toString()); + out.flush(); + } + } + +} diff -r 5cbe567a9c52 -r b8ad346e39a0 src/main/java/de/mpiwg/gazetteer/rest/DownloadTabDelimited4File.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/de/mpiwg/gazetteer/rest/DownloadTabDelimited4File.java Mon May 02 12:03:30 2016 +0200 @@ -0,0 +1,68 @@ +package de.mpiwg.gazetteer.rest; + +import java.io.PrintWriter; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.lang.StringUtils; +import org.json.JSONObject; + +import de.mpiwg.gazetteer.bo.LGFile; +import de.mpiwg.gazetteer.utils.DataProvider; +import de.mpiwg.gazetteer.utils.FileManager; +import de.mpiwg.gazetteer.utils.HTTPUtils; + +public class DownloadTabDelimited4File extends AbstractServletMethod { + public static String name = "downloadTabDelimited4File"; + + public static void execute(HttpServletRequest request, HttpServletResponse response) throws Exception{ + + Long fileId = getQueryLongParam(request, "fileId"); + + if(fileId != null){ + LGFile file = DataProvider.getInstance().getFile(fileId); + if(file != null){ + + String text = HTTPUtils.getTabDelimitedOfFile(fileId); // get text as tab-delimited file + + if(StringUtils.isNotEmpty(text)){ + + String filename = file.getFileName(); // "112_360452_360453_2015.09.04_12.43.08.924_11.txt"; + + //filename extension with csv + filename = filename.substring(0, filename.length()-3); + filename += "csv"; + + response.setContentType("text/csv; charset=UTF-8"); + response.setHeader("Content-Disposition","attachment; filename=\"" + filename + "\""); + + + PrintWriter out = response.getWriter(); + out.print(text); + out.flush(); + + } + + + } else{ + response.setContentType("application/json"); + JSONObject json = new JSONObject(); + json.put("status", "error"); + json.put("message", "File no found (" + fileId + ")"); + PrintWriter out = response.getWriter(); + out.print(json.toString()); + out.flush(); + } + }else{ + response.setContentType("application/json"); + JSONObject json = new JSONObject(); + json.put("status", "error"); + json.put("message", "Following parameters are mandatory: fileId."); + PrintWriter out = response.getWriter(); + out.print(json.toString()); + out.flush(); + } + } + +} diff -r 5cbe567a9c52 -r b8ad346e39a0 src/main/java/de/mpiwg/gazetteer/rest/GetFullTextSearchHtmlFile.java --- a/src/main/java/de/mpiwg/gazetteer/rest/GetFullTextSearchHtmlFile.java Wed Feb 17 14:58:19 2016 +0100 +++ b/src/main/java/de/mpiwg/gazetteer/rest/GetFullTextSearchHtmlFile.java Mon May 02 12:03:30 2016 +0200 @@ -1,6 +1,8 @@ package de.mpiwg.gazetteer.rest; import java.io.PrintWriter; +import java.util.ArrayList; +import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -8,9 +10,14 @@ import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.json.JSONObject; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; import de.mpiwg.gazetteer.bo.LGFile; import de.mpiwg.gazetteer.bo.LGFullTextSearchFile; +import de.mpiwg.gazetteer.db.DBContents; import de.mpiwg.gazetteer.utils.DataProvider; import de.mpiwg.gazetteer.utils.FileManager; import de.mpiwg.gazetteer.utils.HTTPUtils; @@ -35,9 +42,15 @@ LGFullTextSearchFile file = DataProvider.getInstance().getFullTextSearchFile(fileId); if(file != null){ - String text = FileManager.getFullTextSearchHtmlFileText(file); + String html = FileManager.getFullTextSearchHtmlFileText(file); + + // parse text so that it doesn't show the field "isRemoved", which has two values, true or false + html = html.replaceAll("isRemoved", ""); + html = html.replaceAll("true", ""); + html = html.replaceAll("false", ""); + PrintWriter out = response.getWriter(); - out.print(text); + out.print(html); out.flush(); response.setContentType("text/plain; charset=UTF-8"); @@ -53,7 +66,6 @@ } - }else{ response.setContentType("application/json"); JSONObject json = new JSONObject(); diff -r 5cbe567a9c52 -r b8ad346e39a0 src/main/java/de/mpiwg/gazetteer/rest/TextServlet.java --- a/src/main/java/de/mpiwg/gazetteer/rest/TextServlet.java Wed Feb 17 14:58:19 2016 +0100 +++ b/src/main/java/de/mpiwg/gazetteer/rest/TextServlet.java Mon May 02 12:03:30 2016 +0200 @@ -67,6 +67,16 @@ GetTabDelimited4File.execute(request, response); }else if(StringUtils.equals(GetFullTextSearchHtmlFile.name, method)){ GetFullTextSearchHtmlFile.execute(request, response); + + // for download + }else if (StringUtils.equals(DownloadFileText.name, method)) { + DownloadFileText.execute(request, response); + }else if (StringUtils.equals(DownloadTabDelimited4File.name, method)) { + DownloadTabDelimited4File.execute(request, response); + }else if (StringUtils.equals(DownloadFullTextSearchCsvFile.name, method)) { + DownloadFullTextSearchCsvFile.execute(request, response); + + }else{ writeError(response, "Content-type wrong. It should be: multipart/form-data"); } diff -r 5cbe567a9c52 -r b8ad346e39a0 src/main/java/de/mpiwg/gazetteer/utils/FileManager.java --- a/src/main/java/de/mpiwg/gazetteer/utils/FileManager.java Wed Feb 17 14:58:19 2016 +0100 +++ b/src/main/java/de/mpiwg/gazetteer/utils/FileManager.java Mon May 02 12:03:30 2016 +0200 @@ -156,6 +156,14 @@ + "content id" + "isRemoved" + // TODO add Author, edition, volume, place name, coordinates (x,y) + + "Author" + + "edition" + + "volume" + + "place name" + + "cooridnates(x,y)" + + + ""; for (DBContents c : list) { @@ -178,6 +186,15 @@ "" + c.getContent() + "" + "" + c.getId() + "" + "" + c.isRemoved() + "" + + + // TODO + "" + book.getAuthor() + "" + + "" + book.getEdition() + "" + + "" + book.getVolume() + "" + + "" + c.getCoordinatesBook().getPlace_name() + "" + + " (" + c.getCoordinatesBook().getX() + "," + c.getCoordinatesBook().getY() + ")" + + + ""; } } diff -r 5cbe567a9c52 -r b8ad346e39a0 src/main/java/de/mpiwg/web/jsp/ApplicationBean.java --- a/src/main/java/de/mpiwg/web/jsp/ApplicationBean.java Wed Feb 17 14:58:19 2016 +0100 +++ b/src/main/java/de/mpiwg/web/jsp/ApplicationBean.java Mon May 02 12:03:30 2016 +0200 @@ -89,6 +89,10 @@ return getRootServer() + "/resources/images/plus.png"; } + public String getDownloadImage(){ + return getRootServer() + "/resources/images/download.png"; + } + public String getShowImage(){ return getRootServer() + "/resources/images/show_16.png"; } diff -r 5cbe567a9c52 -r b8ad346e39a0 src/main/java/de/mpiwg/web/jsp/BooksPage.java --- a/src/main/java/de/mpiwg/web/jsp/BooksPage.java Wed Feb 17 14:58:19 2016 +0100 +++ b/src/main/java/de/mpiwg/web/jsp/BooksPage.java Mon May 02 12:03:30 2016 +0200 @@ -95,6 +95,7 @@ (StringUtils.isEmpty(periodFilter) || StringUtils.contains(book.getPeriod(), periodFilter)) && (StringUtils.isEmpty(editionFilter) || StringUtils.contains(book.getEdition(), editionFilter)) && (StringUtils.isEmpty(bookNameFilter) || StringUtils.contains(book.getName(), bookNameFilter)) && + (StringUtils.isEmpty(dynastyFilter) || StringUtils.contains(book.getDynasty(), dynastyFilter)) && (StringUtils.isEmpty(adminTypeFilter) || StringUtils.contains(book.getAdmin_type(), adminTypeFilter)) ){ String lastEditor = new String(); diff -r 5cbe567a9c52 -r b8ad346e39a0 src/main/java/de/mpiwg/web/jsp/FullTextSearchPage.java --- a/src/main/java/de/mpiwg/web/jsp/FullTextSearchPage.java Wed Feb 17 14:58:19 2016 +0100 +++ b/src/main/java/de/mpiwg/web/jsp/FullTextSearchPage.java Mon May 02 12:03:30 2016 +0200 @@ -81,8 +81,11 @@ private String mouseX; private String mouseY; + + private LGFullTextSearchFile file = null; + @Override public void init(){ super.init(); @@ -179,6 +182,8 @@ this.level1Filter = new String(); this.adminTypeFilter = new String(); + this.setFile(null); + if(StringUtils.isNotEmpty(this.searchTerm)){ try { List terms = splitTerms(); @@ -287,12 +292,15 @@ public void loadFile() { Long fileId = getLongParameter("fileId"); + + logger.debug("loading fileId=" + fileId); if(fileId != null){ // load from html file into searching result table LGFullTextSearchFile file = DataProvider.getInstance().getFullTextSearchFile(fileId); - if(file != null){ + if(file != null) { + this.setFile(file); String html; try { html = FileManager.getFullTextSearchHtmlFileText(file); @@ -370,6 +378,8 @@ e.printStackTrace(); } + } else { + this.setFile(null); } } @@ -418,6 +428,8 @@ logger.debug("file: " + file.getInfo()); + this.setFile(file); + addMsg("The table has been saved!"); @@ -865,6 +877,14 @@ this.selectedNumOfContent = selectedNumOfContent; } + public LGFullTextSearchFile getFile() { + return file; + } + + public void setFile(LGFullTextSearchFile file) { + this.file = file; + } + /////// Sorting diff -r 5cbe567a9c52 -r b8ad346e39a0 src/main/java/de/mpiwg/web/jsp/HomePage.java --- a/src/main/java/de/mpiwg/web/jsp/HomePage.java Wed Feb 17 14:58:19 2016 +0100 +++ b/src/main/java/de/mpiwg/web/jsp/HomePage.java Mon May 02 12:03:30 2016 +0200 @@ -2,7 +2,9 @@ import java.util.ArrayList; import java.util.Collections; +import java.util.HashMap; import java.util.List; +import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -35,8 +37,14 @@ + + + + import de.mpiwg.gazetteer.bo.LGBranch; +import de.mpiwg.gazetteer.bo.LGTopicSectionRelation; import de.mpiwg.gazetteer.db.DBBook; +import de.mpiwg.gazetteer.db.DBSection; import de.mpiwg.gazetteer.utils.DBService; import de.mpiwg.gazetteer.utils.DataProvider; import de.mpiwg.web.books.SortBooksByBookId; @@ -86,6 +94,8 @@ private DataPaginator paginator = new DataPaginator(); + private Map> topicSectionRelationMap; + public void loadParameters(HttpServletRequest request, HttpServletResponse response){ this.request = request; @@ -106,16 +116,28 @@ public void reloadBranches(){ logger.debug("reloadBranches"); + if (this.completeBranchList == null) { this.forceLoadBranches(); + this.filteringMessage = null; + } else { + + this.loadTopicSectionRelation(); + + for(LGBranch branch : this.completeBranchList){ + branch.getSection().setTopicSectionRelation(this.topicSectionRelationMap.get(branch.getSection().getId())); + } + } + return; } public void forceLoadBranches(){ logger.debug("forceLoadBranches"); + this.filteringMessage = null; this.completeBranchList = new ArrayList(); if(getSessionBean().getUser() != null){ @@ -128,15 +150,34 @@ } else { this.completeBranchList.add(branch); } - } + } } this.setBranchNumber(this.completeBranchList.size()); sortByLastModifiedDown(); // default sorting by from lasted modified to oldest + // loadTopicSectionRelation? + this.loadTopicSectionRelation(); + + for(LGBranch branch : this.completeBranchList){ + branch.getSection().setTopicSectionRelation(this.topicSectionRelationMap.get(branch.getSection().getId())); + } } + private void loadTopicSectionRelation(){ + this.topicSectionRelationMap = new HashMap>(); + List list = DataProvider.getInstance().getAllExistingTopicSectionRelation(); + + for(LGTopicSectionRelation relation : list){ + relation.loadTransientData(); + if(this.topicSectionRelationMap.get(relation.getSectionId()) == null){ + this.topicSectionRelationMap.put(relation.getSectionId(), new ArrayList()); + } + this.topicSectionRelationMap.get(relation.getSectionId()).add(relation); + } + } + public void deleteBranch(){ logger.debug("deleteBranch " + branchId); @@ -144,7 +185,9 @@ LGBranch branch = DataProvider.getInstance().getBranch(branchId); if(branch != null){ DataProvider.getInstance().deleteBranch(branch); - this.reloadBranches(); + //this.reloadBranches(); + this.forceLoadBranches(); + } } } @@ -279,6 +322,123 @@ } + + public List suggestBookName(String term, int limit){ + List list = new ArrayList(); + for(LGBranch branch : this.completeBranchList){ + String bookName = branch.getBook().getName(); + if(!list.contains(bookName) && bookName.startsWith(term)){ + list.add(bookName); + } + if(limit == list.size()){ + break; + } + } + return list; + } + + public List suggestLevel1(String term, int limit){ + List list = new ArrayList(); + for(LGBranch branch : this.completeBranchList){ + String level1 = branch.getBook().getLevel1(); + if(!list.contains(level1) && level1.startsWith(term)){ + list.add(level1); + } + if(limit == list.size()){ + break; + } + } + return list; + } + + public List suggestLevel2(String term, int limit){ + List list = new ArrayList(); + for(LGBranch branch : this.completeBranchList){ + String level2 = branch.getBook().getLevel2(); + if(!list.contains(level2) && level2.startsWith(term)){ + list.add(level2); + } + if(limit == list.size()){ + break; + } + } + return list; + } + + public List suggestDynasty(String term, int limit){ + List list = new ArrayList(); + for(LGBranch branch : this.completeBranchList){ + String dynasty = branch.getBook().getDynasty(); + if(!list.contains(dynasty) && dynasty.startsWith(term)){ + list.add(dynasty); + } + if(limit == list.size()){ + break; + } + } + return list; + } + + public List suggestPeriod(String term, int limit){ + List list = new ArrayList(); + for(LGBranch branch : this.completeBranchList){ + String period = branch.getBook().getPeriod(); + if(!list.contains(period) && period.startsWith(term)){ + list.add(period); + } + if(limit == list.size()){ + break; + } + } + return list; + } + + public List suggestAdminType(String term, int limit){ + List list = new ArrayList(); + for(LGBranch branch : this.completeBranchList){ + String adminType = branch.getBook().getAdmin_type(); + if(!list.contains(adminType) && adminType.startsWith(term)){ + list.add(adminType); + } + if(limit == list.size()){ + break; + } + } + return list; + } + + public List suggestSectionName(String term, int limit){ + List list = new ArrayList(); + for(LGBranch branch : this.completeBranchList){ + String sectionName = branch.getSection().getName(); + if(!list.contains(sectionName) && sectionName.startsWith(term)){ + list.add(sectionName); + } + if(limit == list.size()){ + break; + } + } + return list; + } + + public List suggestLabel(String term, int limit){ + List list = new ArrayList(); + for(LGBranch branch : this.completeBranchList){ + String label = branch.getLabel(); + if(!list.contains(label) && label.startsWith(term)){ + list.add(label); + } + if(limit == list.size()){ + break; + } + } + return list; + } + + + + + public void sortByBranchIdUp() { Collections.sort(this.completeBranchList, new SortBranchByBranchId()); filter(); diff -r 5cbe567a9c52 -r b8ad346e39a0 src/main/java/de/mpiwg/web/jsp/JSPProxy.java --- a/src/main/java/de/mpiwg/web/jsp/JSPProxy.java Wed Feb 17 14:58:19 2016 +0100 +++ b/src/main/java/de/mpiwg/web/jsp/JSPProxy.java Mon May 02 12:03:30 2016 +0200 @@ -37,8 +37,8 @@ }else if(StringUtils.equals(action, "logout")){ getSessionBean().logout(); } - return TopicListPage.page; // the new home page - //return "pages/home.jsp"; + //return TopicListPage.page; // the new home page? + return "pages/home.jsp"; } else if (getSessionBean() == null || getSessionBean().getUser() == null) { // return to home page where will ask user to login. @@ -46,7 +46,8 @@ // alert session timeout getSessionBean().addMsg("Timeout or Logout at another page! Please login again."); - return TopicListPage.page; // the new home page + //return TopicListPage.page; // the new home page? + return "pages/home.jsp"; } @@ -56,7 +57,7 @@ if(StringUtils.equals(action, "addContributor")){ getSessionBean().getBranchPage().addContributor(); - } else if(StringUtils.equals(action, "removeContributor")){ + }else if(StringUtils.equals(action, "removeContributor")){ getSessionBean().getBranchPage().removeContributor(); }else if(StringUtils.equals(action, "deleteFile")){ getSessionBean().getBranchPage().deleteFile(); @@ -209,7 +210,11 @@ getSessionBean().getSearchPage().sortByLevel1Up(); } else if(StringUtils.equals(action, "sortByLevel1Down")){ getSessionBean().getSearchPage().sortByLevel1Down(); - + } else if(StringUtils.equals(action, "sortByLevel2Up")){ + getSessionBean().getSearchPage().sortByLevel2Up(); + } else if(StringUtils.equals(action, "sortByLevel2Down")){ + getSessionBean().getSearchPage().sortByLevel2Down(); + } else if(StringUtils.equals(action, "sortByAdminTypeUp")){ getSessionBean().getSearchPage().sortByAdminTypeUp(); } else if(StringUtils.equals(action, "sortByAdminTypeDown")){ @@ -372,8 +377,18 @@ Long selectedSectionId = getLongParameter("selectedSectionId"); Long selectedTopicId = getLongParameter("selectedTopicId"); getSessionBean().getTopicPage().addSectionToTopic(selectedSectionId, selectedTopicId); + + // TODO it's possible to add a section into a topic in the task page, so need to modify here... + getSessionBean().getSearchPage().updateTopicSectionRelation(); + String sourceBean = getParameter("sourceBean"); + if (StringUtils.equals(sourceBean, "home")) { + return HomePage.page; + } else if (StringUtils.equals(sourceBean, "search")) { + return SearchPage.page; + } + return SearchPage.page; } else if(StringUtils.equals(action, "addAllSections")) { @@ -530,14 +545,14 @@ e.printStackTrace(); addMsg("There is an internal error: " + e.getLocalizedMessage()); - return TopicListPage.page; - //return HomePage.page; + //return TopicListPage.page; + return HomePage.page; } //Default Page: - return TopicListPage.page; // will be the new home page - //return HomePage.page; + //return TopicListPage.page; // will be the new home page? + return HomePage.page; } diff -r 5cbe567a9c52 -r b8ad346e39a0 src/main/java/de/mpiwg/web/jsp/SearchPage.java --- a/src/main/java/de/mpiwg/web/jsp/SearchPage.java Wed Feb 17 14:58:19 2016 +0100 +++ b/src/main/java/de/mpiwg/web/jsp/SearchPage.java Mon May 02 12:03:30 2016 +0200 @@ -25,6 +25,7 @@ import de.mpiwg.web.search.SortSectionByEdition; import de.mpiwg.web.search.SortSectionById; import de.mpiwg.web.search.SortSectionByLevel1; +import de.mpiwg.web.search.SortSectionByLevel2; import de.mpiwg.web.search.SortSectionByPeriod; import de.mpiwg.web.search.SortSectionByStartPage; import de.mpiwg.web.search.SortSectionByVolume; @@ -53,6 +54,11 @@ private String dynastyFilter = new String(); private String adminTypeFilter = new String(); private String level1Filter = new String(); + private String level2Filter = new String(); + + private String bookNameFilter = new String(); + private String periodFilter = new String(); + private String sectionNameFilter = new String(); private DataPaginator paginator = new DataPaginator(); private String searchMessage; @@ -76,6 +82,11 @@ this.dynastyFilter = getParameter("dynastyFilter"); this.adminTypeFilter = getParameter("adminTypeFilter"); this.level1Filter = getParameter("level1Filter"); + this.level2Filter = getParameter("level2Filter"); + this.bookNameFilter = getParameter("bookNameFilter"); + this.periodFilter = getParameter("periodFilter"); + this.sectionNameFilter = getParameter("sectionNameFilter"); + this.searchIn = getIntParameter("searchIn"); } @@ -130,36 +141,45 @@ public void filter(){ this.filteredSectionList = new ArrayList(); - for(DBSection section : this.completeSectionList){ - if(!this.filteredSectionList.contains(section)){ - - if( (StringUtils.isEmpty(dynastyFilter) || StringUtils.startsWith(section.getBook().getDynasty(), dynastyFilter)) && - (StringUtils.isEmpty(level1Filter) || StringUtils.startsWith(section.getBook().getLevel1(), level1Filter)) && - (StringUtils.isEmpty(adminTypeFilter) || StringUtils.startsWith(section.getBook().getAdmin_type(), adminTypeFilter)) - ){ - this.filteredSectionList.add(section); - } + if (this.completeSectionList != null) { + + for(DBSection section : this.completeSectionList){ + if(!this.filteredSectionList.contains(section)){ + + if( (StringUtils.isEmpty(dynastyFilter) || StringUtils.startsWith(section.getBook().getDynasty(), dynastyFilter)) && + (StringUtils.isEmpty(level1Filter) || StringUtils.startsWith(section.getBook().getLevel1(), level1Filter)) && + (StringUtils.isEmpty(level2Filter) || StringUtils.startsWith(section.getBook().getLevel2(), level2Filter)) && + (StringUtils.isEmpty(bookNameFilter) || StringUtils.startsWith(section.getBook().getName(), bookNameFilter)) && + (StringUtils.isEmpty(periodFilter) || StringUtils.startsWith(section.getBook().getPeriod(), periodFilter)) && + (StringUtils.isEmpty(sectionNameFilter) || StringUtils.startsWith(section.getName(), sectionNameFilter)) && + + (StringUtils.isEmpty(adminTypeFilter) || StringUtils.startsWith(section.getBook().getAdmin_type(), adminTypeFilter)) + ){ + this.filteredSectionList.add(section); + } + } } - } - if(completeSectionList.size() > 0){ - this.searchMessage = completeSectionList.size() + " section(s) found for the term(s): " + this.searchTerm; - this.filteringMessage = this.filteredSectionList.size() + " section(s) listed after the filtering"; - - this.paginator.setCurrentPage(0); - this.paginator.resetNumberOfPages(filteredSectionList.size()); - - }else{ - this.searchMessage = "No sections found for the term(s): " + this.searchTerm; - this.filteredSectionList = null; - this.filteringMessage = ""; + + + if(completeSectionList.size() > 0){ + this.searchMessage = completeSectionList.size() + " section(s) found for the term(s): " + this.searchTerm; + this.filteringMessage = this.filteredSectionList.size() + " section(s) listed after the filtering"; + + this.paginator.setCurrentPage(0); + this.paginator.resetNumberOfPages(filteredSectionList.size()); + + }else{ + this.searchMessage = "No sections found for the term(s): " + this.searchTerm; + this.filteredSectionList = null; + this.filteringMessage = ""; + + this.paginator.setCurrentPage(0); + this.paginator.resetNumberOfPages(0); + } - this.paginator.setCurrentPage(0); - this.paginator.resetNumberOfPages(0); + this.updateCurrentSections(); } - - this.updateCurrentSections(); - } private void updateCurrentSections() { @@ -255,6 +275,49 @@ return list; } + public List suggestLevel2(String term, int limit){ + List list = new ArrayList(); + for(DBSection section : this.completeSectionList){ + String level2 = section.getBook().getLevel2(); + if(!list.contains(level2) && level2.startsWith(term)){ + list.add(level2); + } + if(limit == list.size()){ + break; + } + } + return list; + } + + + public List suggestBookName(String term, int limit){ + List list = new ArrayList(); + for(DBSection section : this.completeSectionList){ + String bookName = section.getBook().getName(); + if(!list.contains(bookName) && bookName.startsWith(term)){ + list.add(bookName); + } + if(limit == list.size()){ + break; + } + } + return list; + } + + public List suggestPeriod(String term, int limit){ + List list = new ArrayList(); + for(DBSection section : this.completeSectionList){ + String period = section.getBook().getPeriod(); + if(!list.contains(period) && period.startsWith(term)){ + list.add(period); + } + if(limit == list.size()){ + break; + } + } + return list; + } + public List suggestAdminType(String term, int limit){ List list = new ArrayList(); for(DBSection section : this.completeSectionList){ @@ -268,6 +331,19 @@ } return list; } + public List suggestSectionName(String term, int limit){ + List list = new ArrayList(); + for(DBSection section : this.completeSectionList){ + String sectionName = section.getName(); + if(!list.contains(sectionName) && sectionName.startsWith(term)){ + list.add(sectionName); + } + if(limit == list.size()){ + break; + } + } + return list; + } public static Integer getSEARCH_IN_SECTION_NAME() { @@ -422,6 +498,39 @@ this.dynastyFilter = dynastyFilter; } + public String getLevel2Filter() { + return level2Filter; + } + + public void setLevel2Filter(String level2Filter) { + this.level2Filter = level2Filter; + } + + public String getBookNameFilter() { + return bookNameFilter; + } + + public void setBookNameFilter(String bookNameFilter) { + this.bookNameFilter = bookNameFilter; + } + + public String getSectionNameFilter() { + return sectionNameFilter; + } + + public void setSectionNameFilter(String sectionNameFilter) { + this.sectionNameFilter = sectionNameFilter; + } + + public String getPeriodFilter() { + return periodFilter; + } + + public void setPeriodFilter(String periodFilter) { + this.periodFilter = periodFilter; + } + + /////// Sorting @@ -536,6 +645,17 @@ filter(); } + public void sortByLevel2Up(){ + Collections.sort(this.completeSectionList, new SortSectionByLevel2()); + filter(); + } + + public void sortByLevel2Down(){ + Collections.sort(this.completeSectionList, new SortSectionByLevel2()); + Collections.reverse(completeSectionList); + filter(); + } + public void sortByAdminTypeUp(){ Collections.sort(this.completeSectionList, new SortSectionByAdminType()); filter(); diff -r 5cbe567a9c52 -r b8ad346e39a0 src/main/java/de/mpiwg/web/jsp/SessionBean.java --- a/src/main/java/de/mpiwg/web/jsp/SessionBean.java Wed Feb 17 14:58:19 2016 +0100 +++ b/src/main/java/de/mpiwg/web/jsp/SessionBean.java Mon May 02 12:03:30 2016 +0200 @@ -102,6 +102,8 @@ this.homePage.loadParameters(request, response); this.homePage.reloadBranches(); + this.topicListPage.loadParameters(request, response); + this.topicListPage.reloadTopics(); } else { diff -r 5cbe567a9c52 -r b8ad346e39a0 src/main/java/de/mpiwg/web/jsp/TopicListPage.java --- a/src/main/java/de/mpiwg/web/jsp/TopicListPage.java Wed Feb 17 14:58:19 2016 +0100 +++ b/src/main/java/de/mpiwg/web/jsp/TopicListPage.java Mon May 02 12:03:30 2016 +0200 @@ -61,8 +61,9 @@ this.completeTopicList = new ArrayList(); - // TODO sometimes this.getSessionBean() will cause NullPointerException - if(this.getSessionBean().getUser() != null){ + // sometimes this.getSessionBean() will cause NullPointerException. Fixed. + + if(getSessionBean().getUser() != null){ for(LGTopic topic : DataProvider.getInstance().getTopics(this.getSessionBean().getUser().getId())){ if (topic.isEmpty()) { diff -r 5cbe567a9c52 -r b8ad346e39a0 src/main/java/de/mpiwg/web/search/SortSectionByLevel2.java --- a/src/main/java/de/mpiwg/web/search/SortSectionByLevel2.java Wed Feb 17 14:58:19 2016 +0100 +++ b/src/main/java/de/mpiwg/web/search/SortSectionByLevel2.java Mon May 02 12:03:30 2016 +0200 @@ -10,6 +10,6 @@ if(o1.getBook() == null || o2.getBook() == null){ return o1.getName().compareTo(o2.getName()); } - return o1.getBook().getLevel1().compareTo(o2.getBook().getLevel1()); + return o1.getBook().getLevel2().compareTo(o2.getBook().getLevel2()); } } diff -r 5cbe567a9c52 -r b8ad346e39a0 src/main/webapp/componentes/template.jsp --- a/src/main/webapp/componentes/template.jsp Wed Feb 17 14:58:19 2016 +0100 +++ b/src/main/webapp/componentes/template.jsp Mon May 02 12:03:30 2016 +0200 @@ -76,9 +76,10 @@ - Search + Sections + Books Full Text Search - Books + diff -r 5cbe567a9c52 -r b8ad346e39a0 src/main/webapp/methods/addSectionToTopic.jsp --- a/src/main/webapp/methods/addSectionToTopic.jsp Wed Feb 17 14:58:19 2016 +0100 +++ b/src/main/webapp/methods/addSectionToTopic.jsp Mon May 02 12:03:30 2016 +0200 @@ -29,7 +29,8 @@ action="<%= sessionBean.getApplicationBean().getRootServer()%>/proxy.jsp" method="post"> - + " /> + diff -r 5cbe567a9c52 -r b8ad346e39a0 src/main/webapp/methods/bookNameAutocomplete.jsp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/webapp/methods/bookNameAutocomplete.jsp Mon May 02 12:03:30 2016 +0200 @@ -0,0 +1,24 @@ +<%@page import="java.util.List"%> +<%@page import="de.mpiwg.gazetteer.utils.DBService"%> +<%@page import="org.json.JSONObject"%> +<%@page import="org.json.JSONArray"%> + + + +<% + + String term = request.getParameter("term"); + List list = sessionBean.getSearchPage().suggestBookName(term, 10); + + + JSONArray jsonArr = new JSONArray(); + + for(String item : list){ + JSONObject json = new JSONObject(); + json.put("name", item); + json.put("value", item); + jsonArr.put(json); + System.out.print("*"); + } + out.println(jsonArr); +%> \ No newline at end of file diff -r 5cbe567a9c52 -r b8ad346e39a0 src/main/webapp/methods/level2Autocomplete.jsp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/webapp/methods/level2Autocomplete.jsp Mon May 02 12:03:30 2016 +0200 @@ -0,0 +1,25 @@ +<%@page import="java.util.List"%> +<%@page import="de.mpiwg.gazetteer.utils.DBService"%> +<%@page import="org.json.JSONObject"%> +<%@page import="org.json.JSONArray"%> + + + +<% + + + String term = request.getParameter("term"); + List list = sessionBean.getSearchPage().suggestLevel2(term, 10); + + + JSONArray jsonArr = new JSONArray(); + + for(String item : list){ + JSONObject json = new JSONObject(); + json.put("name", item); + json.put("value", item); + jsonArr.put(json); + System.out.print("*"); + } + out.println(jsonArr); +%> \ No newline at end of file diff -r 5cbe567a9c52 -r b8ad346e39a0 src/main/webapp/methods/periodAutocomplete.jsp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/webapp/methods/periodAutocomplete.jsp Mon May 02 12:03:30 2016 +0200 @@ -0,0 +1,24 @@ +<%@page import="java.util.List"%> +<%@page import="de.mpiwg.gazetteer.utils.DBService"%> +<%@page import="org.json.JSONObject"%> +<%@page import="org.json.JSONArray"%> + + + +<% + + String term = request.getParameter("term"); + List list = sessionBean.getSearchPage().suggestPeriod(term, 10); + + + JSONArray jsonArr = new JSONArray(); + + for(String item : list){ + JSONObject json = new JSONObject(); + json.put("name", item); + json.put("value", item); + jsonArr.put(json); + System.out.print("*"); + } + out.println(jsonArr); +%> \ No newline at end of file diff -r 5cbe567a9c52 -r b8ad346e39a0 src/main/webapp/methods/sectionNameAutocomplete.jsp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/webapp/methods/sectionNameAutocomplete.jsp Mon May 02 12:03:30 2016 +0200 @@ -0,0 +1,24 @@ +<%@page import="java.util.List"%> +<%@page import="de.mpiwg.gazetteer.utils.DBService"%> +<%@page import="org.json.JSONObject"%> +<%@page import="org.json.JSONArray"%> + + + +<% + + String term = request.getParameter("term"); + List list = sessionBean.getSearchPage().suggestSectionName(term, 10); + + + JSONArray jsonArr = new JSONArray(); + + for(String item : list){ + JSONObject json = new JSONObject(); + json.put("name", item); + json.put("value", item); + jsonArr.put(json); + System.out.print("*"); + } + out.println(jsonArr); +%> \ No newline at end of file diff -r 5cbe567a9c52 -r b8ad346e39a0 src/main/webapp/methods/taskAdminTypeAutocomplete.jsp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/webapp/methods/taskAdminTypeAutocomplete.jsp Mon May 02 12:03:30 2016 +0200 @@ -0,0 +1,26 @@ +<%@page import="java.util.List"%> +<%@page import="de.mpiwg.gazetteer.utils.DBService"%> +<%@page import="org.json.JSONObject"%> +<%@page import="org.json.JSONArray"%> + + + +<% + + + + String term = request.getParameter("term"); + + List list = sessionBean.getHomePage().suggestAdminType(term, 10); + + JSONArray jsonArr = new JSONArray(); + + for(String item : list){ + JSONObject json = new JSONObject(); + json.put("name", item); + json.put("value", item); + jsonArr.put(json); + System.out.print("*"); + } + out.println(jsonArr); +%> \ No newline at end of file diff -r 5cbe567a9c52 -r b8ad346e39a0 src/main/webapp/methods/taskBookNameAutocomplete.jsp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/webapp/methods/taskBookNameAutocomplete.jsp Mon May 02 12:03:30 2016 +0200 @@ -0,0 +1,26 @@ +<%@page import="java.util.List"%> +<%@page import="de.mpiwg.gazetteer.utils.DBService"%> +<%@page import="org.json.JSONObject"%> +<%@page import="org.json.JSONArray"%> + + + +<% + + + + String term = request.getParameter("term"); + + List list = sessionBean.getHomePage().suggestBookName(term, 10); + + JSONArray jsonArr = new JSONArray(); + + for(String item : list){ + JSONObject json = new JSONObject(); + json.put("name", item); + json.put("value", item); + jsonArr.put(json); + System.out.print("*"); + } + out.println(jsonArr); +%> \ No newline at end of file diff -r 5cbe567a9c52 -r b8ad346e39a0 src/main/webapp/methods/taskDynastyAutocomplete.jsp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/webapp/methods/taskDynastyAutocomplete.jsp Mon May 02 12:03:30 2016 +0200 @@ -0,0 +1,26 @@ +<%@page import="java.util.List"%> +<%@page import="de.mpiwg.gazetteer.utils.DBService"%> +<%@page import="org.json.JSONObject"%> +<%@page import="org.json.JSONArray"%> + + + +<% + + + + String term = request.getParameter("term"); + + List list = sessionBean.getHomePage().suggestDynasty(term, 10); + + JSONArray jsonArr = new JSONArray(); + + for(String item : list){ + JSONObject json = new JSONObject(); + json.put("name", item); + json.put("value", item); + jsonArr.put(json); + System.out.print("*"); + } + out.println(jsonArr); +%> \ No newline at end of file diff -r 5cbe567a9c52 -r b8ad346e39a0 src/main/webapp/methods/taskLabelAutocomplete.jsp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/webapp/methods/taskLabelAutocomplete.jsp Mon May 02 12:03:30 2016 +0200 @@ -0,0 +1,26 @@ +<%@page import="java.util.List"%> +<%@page import="de.mpiwg.gazetteer.utils.DBService"%> +<%@page import="org.json.JSONObject"%> +<%@page import="org.json.JSONArray"%> + + + +<% + + + + String term = request.getParameter("term"); + + List list = sessionBean.getHomePage().suggestLabel(term, 10); + + JSONArray jsonArr = new JSONArray(); + + for(String item : list){ + JSONObject json = new JSONObject(); + json.put("name", item); + json.put("value", item); + jsonArr.put(json); + System.out.print("*"); + } + out.println(jsonArr); +%> \ No newline at end of file diff -r 5cbe567a9c52 -r b8ad346e39a0 src/main/webapp/methods/taskLevel1Autocomplete.jsp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/webapp/methods/taskLevel1Autocomplete.jsp Mon May 02 12:03:30 2016 +0200 @@ -0,0 +1,26 @@ +<%@page import="java.util.List"%> +<%@page import="de.mpiwg.gazetteer.utils.DBService"%> +<%@page import="org.json.JSONObject"%> +<%@page import="org.json.JSONArray"%> + + + +<% + + + + String term = request.getParameter("term"); + + List list = sessionBean.getHomePage().suggestLevel1(term, 10); + + JSONArray jsonArr = new JSONArray(); + + for(String item : list){ + JSONObject json = new JSONObject(); + json.put("name", item); + json.put("value", item); + jsonArr.put(json); + System.out.print("*"); + } + out.println(jsonArr); +%> \ No newline at end of file diff -r 5cbe567a9c52 -r b8ad346e39a0 src/main/webapp/methods/taskLevel2Autocomplete.jsp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/webapp/methods/taskLevel2Autocomplete.jsp Mon May 02 12:03:30 2016 +0200 @@ -0,0 +1,26 @@ +<%@page import="java.util.List"%> +<%@page import="de.mpiwg.gazetteer.utils.DBService"%> +<%@page import="org.json.JSONObject"%> +<%@page import="org.json.JSONArray"%> + + + +<% + + + + String term = request.getParameter("term"); + + List list = sessionBean.getHomePage().suggestLevel2(term, 10); + + JSONArray jsonArr = new JSONArray(); + + for(String item : list){ + JSONObject json = new JSONObject(); + json.put("name", item); + json.put("value", item); + jsonArr.put(json); + System.out.print("*"); + } + out.println(jsonArr); +%> \ No newline at end of file diff -r 5cbe567a9c52 -r b8ad346e39a0 src/main/webapp/methods/taskPeriodAutocomplete.jsp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/webapp/methods/taskPeriodAutocomplete.jsp Mon May 02 12:03:30 2016 +0200 @@ -0,0 +1,26 @@ +<%@page import="java.util.List"%> +<%@page import="de.mpiwg.gazetteer.utils.DBService"%> +<%@page import="org.json.JSONObject"%> +<%@page import="org.json.JSONArray"%> + + + +<% + + + + String term = request.getParameter("term"); + + List list = sessionBean.getHomePage().suggestPeriod(term, 10); + + JSONArray jsonArr = new JSONArray(); + + for(String item : list){ + JSONObject json = new JSONObject(); + json.put("name", item); + json.put("value", item); + jsonArr.put(json); + System.out.print("*"); + } + out.println(jsonArr); +%> \ No newline at end of file diff -r 5cbe567a9c52 -r b8ad346e39a0 src/main/webapp/methods/taskSectionNameAutocomplete.jsp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/webapp/methods/taskSectionNameAutocomplete.jsp Mon May 02 12:03:30 2016 +0200 @@ -0,0 +1,26 @@ +<%@page import="java.util.List"%> +<%@page import="de.mpiwg.gazetteer.utils.DBService"%> +<%@page import="org.json.JSONObject"%> +<%@page import="org.json.JSONArray"%> + + + +<% + + + + String term = request.getParameter("term"); + + List list = sessionBean.getHomePage().suggestSectionName(term, 10); + + JSONArray jsonArr = new JSONArray(); + + for(String item : list){ + JSONObject json = new JSONObject(); + json.put("name", item); + json.put("value", item); + jsonArr.put(json); + System.out.print("*"); + } + out.println(jsonArr); +%> \ No newline at end of file diff -r 5cbe567a9c52 -r b8ad346e39a0 src/main/webapp/pages/branchPage.jsp --- a/src/main/webapp/pages/branchPage.jsp Wed Feb 17 14:58:19 2016 +0100 +++ b/src/main/webapp/pages/branchPage.jsp Mon May 02 12:03:30 2016 +0200 @@ -1,4 +1,5 @@ <%@page import="de.mpiwg.gazetteer.dataverse.bo.VDCUser"%> +<%@page import="de.mpiwg.gazetteer.bo.LGBranch"%> <%@page import="de.mpiwg.gazetteer.bo.LGFile"%> <%@page import="org.apache.commons.lang.StringUtils"%> <%@page import="de.mpiwg.gazetteer.db.DBSection"%> @@ -186,12 +187,6 @@ - - - - - - @@ -258,11 +253,22 @@ - + +
+ <% LGBranch branch = sessionBean.getBranchPage().getBranch(); %> + + + + + + + + +
@@ -283,14 +289,14 @@ - - - + + +
<% LGFile lastFile = sessionBean.getBranchPage().getLastFile(); if(lastFile.getDvId() == null) {%> - + <% } else if (lastFile.getFileIdInDv() == null) { %> @@ -312,24 +318,39 @@ + + + + + + - + + + + + + diff -r 5cbe567a9c52 -r b8ad346e39a0 src/main/webapp/pages/fullTextSearch.jsp --- a/src/main/webapp/pages/fullTextSearch.jsp Wed Feb 17 14:58:19 2016 +0100 +++ b/src/main/webapp/pages/fullTextSearch.jsp Mon May 02 12:03:30 2016 +0200 @@ -46,6 +46,8 @@ dialogSave.dialog( "open" ); }); + + var dialogViewSavedResult = $("#dialogViewSavedResult").dialog( { autoOpen: false, @@ -194,12 +196,19 @@ target="_blank"> + + + + + + - + @@ -226,13 +235,18 @@ + + + + - + @@ -259,8 +273,14 @@ - + + + + + + @@ -356,7 +376,7 @@ - <% if (StringUtils.equals(sessionBean.getUserName(), "zhong") || StringUtils.equals(sessionBean.getUserName(), "silk")) { %> + <% if (StringUtils.equals(sessionBean.getUserName(), "zhong")) { // || StringUtils.equals(sessionBean.getUserName(), "silk")) { %> + + + + + <% if (sessionBean.getFullTextSearchPage().getFile() != null) { + LGFullTextSearchFile theFile = sessionBean.getFullTextSearchPage().getFile(); %> + View on LGMap + + + + + + + <% } else { %> + + + <% } %> + - - + <% if (sessionBean.getFullTextSearchPage().getCompleteList() != null) { @@ -676,6 +715,8 @@ + + + @@ -764,8 +806,7 @@ - - +
<%=content.getSection().getBook().getPeriod()%> <%=content.getSection().getBook().getAdmin_type() %> <%=content.getSection().getName() %><%=content.getSection().getPages()%> +<%@page import="de.mpiwg.gazetteer.bo.LGTopicSectionRelation"%> <%@page import="org.apache.commons.lang.StringUtils"%> <%@page import="de.mpiwg.gazetteer.db.DBSection"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> @@ -9,13 +10,259 @@ + - + +
+
+
+
<% if(sessionBean.getUser() == null) { %> @@ -24,15 +271,13 @@ if (sessionBean.getHomePage().getCompleteBranchList() == null){ sessionBean.getHomePage().loadParameters(request, response); - sessionBean.getHomePage().reloadBranches(); + //sessionBean.getHomePage().reloadBranches(); } - /* - sessionBean.getHomePage().loadParameters(request, response); sessionBean.getHomePage().reloadBranches(); - */ + %> - + <% if(sessionBean.getHomePage().getCompleteBranchList().isEmpty()) { %> @@ -43,7 +288,7 @@ action="<%=sessionBean.getApplicationBean().getRootServer()%>/proxy.jsp" > -
Your Task +
Your Tasks @@ -58,6 +303,7 @@
+ + + + + +
@@ -132,7 +378,7 @@
- +
- +
- +
- +
- +
- +
- +
- + - + - + + + + +
@@ -404,7 +650,7 @@
@@ -430,13 +676,13 @@ + <% for (LGBranch branch : sessionBean.getHomePage().getDisplayBranchList() ) { %> - @@ -461,7 +707,7 @@ @@ -469,11 +715,44 @@ + + + + + + +
<%=branch.getId() %> <%=branch.getBook().getId() %> <%=branch.getBook().getName() %> <%=branch.getBook().getLevel1() %> <%=branch.getFomattedLastChange() %> - + <%= (branch.isPublished()) ? "V":"" %> + + <% if(branch.getSection().getTopicSectionRelation() != null && !branch.getSection().getTopicSectionRelation().isEmpty()) { %> + Already in topic: + + <% for(LGTopicSectionRelation relation : branch.getSection().getTopicSectionRelation()) { %> + + + + + <% } %> +
+ + +
<%=relation.getTopic().info() %>
+
+ + + + + +
+ <% } %> + + + +
/methods/addSectionToTopic.jsp?sectionId=" + sectionId; + var url0 = "<%=sessionBean.getApplicationBean().getRootServer()%>/methods/addSectionToTopic.jsp?sectionId=" + sectionId + "&sourceBean=search"; $.ajax( url0 ) .done(function(data) { @@ -120,6 +120,32 @@ minLength : 0 }); + $("#bookNameFilter").autocomplete({ + source : function(request, response) { + $.ajax({ + url : "<%=sessionBean.getApplicationBean().getRootServer()%>/methods/bookNameAutocomplete.jsp", + type : "POST", + dataType : "json", + data : { + term : request.term + }, + success : function(data) { + + response($.map(data, function(item) { + return { + label : item.name, + value : item.value, + } + })); + }, + error : function(error) { + alert('error: ' + error); + } + }); + }, + minLength : 0 + }); + $("#dynastyFilter").autocomplete({ source : function(request, response) { $.ajax({ @@ -145,6 +171,7 @@ }, minLength : 0 }); + $("#level1Filter").autocomplete({ source : function(request, response) { @@ -170,8 +197,63 @@ }); }, minLength : 0 + }); + + + $("#level2Filter").autocomplete({ + source : function(request, response) { + $.ajax({ + url : "<%=sessionBean.getApplicationBean().getRootServer()%>/methods/level2Autocomplete.jsp", + type : "POST", + dataType : "json", + data : { + term : request.term + }, + success : function(data) { + + response($.map(data, function(item) { + return { + label : item.name, + value : item.value, + } + })); + }, + error : function(error) { + alert('error: ' + error); + } + }); + }, + minLength : 0 }); + + $("#periodFilter").autocomplete({ + source : function(request, response) { + $.ajax({ + url : "<%=sessionBean.getApplicationBean().getRootServer()%>/methods/periodAutocomplete.jsp", + type : "POST", + dataType : "json", + data : { + term : request.term + }, + success : function(data) { + + response($.map(data, function(item) { + return { + label : item.name, + value : item.value, + } + })); + }, + error : function(error) { + alert('error: ' + error); + } + }); + }, + minLength : 0 + }); + + $("#adminTypeFilter").autocomplete({ source : function(request, response) { $.ajax({ @@ -197,9 +279,56 @@ }, minLength : 0 }); + + $("#sectionNameFilter").autocomplete({ + source : function(request, response) { + $.ajax({ + url : "<%=sessionBean.getApplicationBean().getRootServer()%>/methods/sectionNameAutocomplete.jsp", + type : "POST", + dataType : "json", + data : { + term : request.term + }, + success : function(data) { + + response($.map(data, function(item) { + return { + label : item.name, + value : item.value, + } + })); + }, + error : function(error) { + alert('error: ' + error); + } + }); + }, + minLength : 0 + }); + + // enter pressed event, we don't want to always go to "search". + $(document).keypress( + function(event){ + if (event.which == '13') { // enter pressed + // if any of the filter fields is filled in, filter first; otherwize, go to search + $(".filterInput" ).each(function( i ) { + //console.log( this.value ); + if (this.value != "") { + //console.log('filtering' + i); + setAction('filter', 'searchForm'); + $("#searchForm").submit(); + return false; + } + + }); + } + }); + + + }); - + @@ -314,6 +443,16 @@
+ + + +
@@ -347,7 +486,39 @@
-
+ + + + + + + + + + +
+ + + +
+ +
+ +
+
+ + + +
+ +
@@ -398,6 +569,16 @@
+ + + +
@@ -450,6 +631,16 @@
+ + + + + + + + @@ -474,7 +665,7 @@ - + diff -r 5cbe567a9c52 -r b8ad346e39a0 src/main/webapp/pages/topicPage.jsp --- a/src/main/webapp/pages/topicPage.jsp Wed Feb 17 14:58:19 2016 +0100 +++ b/src/main/webapp/pages/topicPage.jsp Mon May 02 12:03:30 2016 +0200 @@ -213,8 +213,8 @@ - - + + @@ -536,8 +536,8 @@ - - + + @@ -581,9 +581,22 @@ <% if (branch.hasContributor(sessionBean.getUser().getId())) { %> - - - + + + + +
+ + + +
+ + + + + +
+ <% } else { %> <% } %> diff -r 5cbe567a9c52 -r b8ad346e39a0 src/main/webapp/resources/images/download.png Binary file src/main/webapp/resources/images/download.png has changed