From: <yo...@us...> - 2010-07-07 20:08:39
|
Revision: 730 http://treebase.svn.sourceforge.net/treebase/?rev=730&view=rev Author: youjun Date: 2010-07-07 19:32:38 +0000 (Wed, 07 Jul 2010) Log Message: ----------- handshacking web path Modified Paths: -------------- trunk/treebase-web/src/main/java/org/cipres/treebase/web/controllers/ProcessUserController.java trunk/treebase-web/src/main/java/org/cipres/treebase/web/controllers/StudyFormController.java trunk/treebase-web/src/main/webapp/WEB-INF/pages/loginForm.jsp trunk/treebase-web/src/main/webapp/WEB-INF/pages/submissionList.jsp Added Paths: ----------- trunk/treebase-web/src/main/java/org/cipres/treebase/web/util/DryadUtil.java Modified: trunk/treebase-web/src/main/java/org/cipres/treebase/web/controllers/ProcessUserController.java =================================================================== --- trunk/treebase-web/src/main/java/org/cipres/treebase/web/controllers/ProcessUserController.java 2010-07-02 16:30:32 UTC (rev 729) +++ trunk/treebase-web/src/main/java/org/cipres/treebase/web/controllers/ProcessUserController.java 2010-07-07 19:32:38 UTC (rev 730) @@ -21,7 +21,11 @@ public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { + String importKey = (String)request.getSession().getAttribute("importKey"); + if (importKey != null && importKey.length()>0) { + return new ModelAndView("redirect:/user/studyForm.html"); + } if (request.isUserInRole(UserRole.ROLE_ADMIN) || request.isUserInRole(UserRole.ROLE_ASSO_EDITOR)) { return new ModelAndView("redirect:/admin/administrationPage.html"); Modified: trunk/treebase-web/src/main/java/org/cipres/treebase/web/controllers/StudyFormController.java =================================================================== --- trunk/treebase-web/src/main/java/org/cipres/treebase/web/controllers/StudyFormController.java 2010-07-02 16:30:32 UTC (rev 729) +++ trunk/treebase-web/src/main/java/org/cipres/treebase/web/controllers/StudyFormController.java 2010-07-07 19:32:38 UTC (rev 730) @@ -1,6 +1,9 @@ package org.cipres.treebase.web.controllers; +import java.io.File; +import java.util.Collection; + import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -14,12 +17,15 @@ import org.cipres.treebase.domain.admin.User; import org.cipres.treebase.domain.admin.UserService; +import org.cipres.treebase.domain.study.Citation; import org.cipres.treebase.domain.study.Study; import org.cipres.treebase.domain.study.StudyService; import org.cipres.treebase.domain.study.Submission; import org.cipres.treebase.domain.study.SubmissionService; import org.cipres.treebase.web.Constants; +import org.cipres.treebase.web.model.MyProgressionListener; import org.cipres.treebase.web.util.ControllerUtil; +import org.cipres.treebase.web.util.DryadUtil; /** * StudyFormController.java @@ -96,7 +102,9 @@ Study study = (Study) command; User user = ControllerUtil.getUser(request, mUserService); - + String importKey = (String)request.getSession().getAttribute("importKey"); + request.getSession().removeAttribute("importKey"); + if (request.getParameter(ACTION_SUBMIT) != null) { // Study must be submitted with citation together // here we are just saving the data to the session @@ -118,7 +126,38 @@ // save Study object to session and remove ControllerUtil.saveStudy(request, submission.getStudy()); - } else if (request.getParameter(ACTION_UPDATE) != null) { + } else if(importKey != null && importKey.length()>0){ + + String uploadDir = getServletContext() + .getRealPath(TreebaseUtil.FILESEP + "DryadUpload") + + TreebaseUtil.FILESEP + importKey; + String importStatus=""; + File bagitPath= new File(uploadDir, "data"); + if(!bagitPath.exists())importStatus = "NOT FOUND"; + else{ + + try{ + Submission submission = mSubmissionService.createSubmission(user, new Study()); + + Citation citation = DryadUtil.createCitation(bagitPath); + submission.getStudy().setCitation(citation); + citation.setStudy(submission.getStudy()); + + Collection<File> files = DryadUtil.getDataFiles(bagitPath); + MyProgressionListener listener = new MyProgressionListener(); + getSubmissionService().addNexusFilesJDBC(submission, files, listener); + // save Study object to session + ControllerUtil.saveStudy(request, submission.getStudy()); + importStatus = "OK"; + }catch (Exception e) { + importStatus = "FAILED"; + } + } + request.setAttribute("importStatus", importStatus); + //request.getSession().removeAttribute("importKey"); + return new ModelAndView(new RedirectView("submissionList.html")); + + }else if (request.getParameter(ACTION_UPDATE) != null) { mStudyService.update(study); } else if (request.getParameter(ACTION_DELETE) != null) { Added: trunk/treebase-web/src/main/java/org/cipres/treebase/web/util/DryadUtil.java =================================================================== --- trunk/treebase-web/src/main/java/org/cipres/treebase/web/util/DryadUtil.java (rev 0) +++ trunk/treebase-web/src/main/java/org/cipres/treebase/web/util/DryadUtil.java 2010-07-07 19:32:38 UTC (rev 730) @@ -0,0 +1,54 @@ +package org.cipres.treebase.web.util; + +import java.io.File; +import java.io.FilenameFilter; +import java.util.Arrays; +import java.util.Collection; +import java.util.Iterator; +import java.util.List; + +import org.cipres.treebase.domain.admin.Person; +import org.cipres.treebase.domain.study.Citation; +import org.dom4j.*; +import org.dom4j.io.*; + +public class DryadUtil { + + + public static Citation createCitation(File path){ + Citation citation = new Citation(); + + File f = new File(path, "citation.xml"); + SAXReader reader = new SAXReader(); + Document doc= null ; + try { + doc = reader.read(f); + } catch (DocumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + Element root = doc.getRootElement(); + Element node; + for (Iterator i = root.elementIterator("author"); i.hasNext();) { + node = (Element) i.next(); + Person p = new Person(); + //node.getName(); + citation.addAuthor(p); + } + citation.setTitle(root.element("title").getName()); + + + return citation; + } + + public static Collection<File> getDataFiles(File path) { + // TODO Auto-generated method stub + List<File> flist=Arrays.asList(path.listFiles(new FilenameFilter() { + public boolean accept(File file, String name) { + boolean ret = !(name.endsWith("xml")); + return ret; + }})); + return flist; + } + +} Modified: trunk/treebase-web/src/main/webapp/WEB-INF/pages/loginForm.jsp =================================================================== --- trunk/treebase-web/src/main/webapp/WEB-INF/pages/loginForm.jsp 2010-07-02 16:30:32 UTC (rev 729) +++ trunk/treebase-web/src/main/webapp/WEB-INF/pages/loginForm.jsp 2010-07-07 19:32:38 UTC (rev 730) @@ -2,6 +2,13 @@ <form method="post" id="loginForm" action="<c:url value="/j_security_check"/>" > +<% + if(request.getParameter("importKey") != null){ + + session.setAttribute("importKey",request.getParameter("importKey")); + } +%> + <fieldset> <legend>Login</legend> Modified: trunk/treebase-web/src/main/webapp/WEB-INF/pages/submissionList.jsp =================================================================== --- trunk/treebase-web/src/main/webapp/WEB-INF/pages/submissionList.jsp 2010-07-02 16:30:32 UTC (rev 729) +++ trunk/treebase-web/src/main/webapp/WEB-INF/pages/submissionList.jsp 2010-07-07 19:32:38 UTC (rev 730) @@ -101,7 +101,19 @@ </display:footer> <display:setProperty name="basic.empty.showtable" value="true"/> - + </display:table> </fieldset> +<fieldset> +<legend>Dryad Import Result +<a href="#" class="openHelp" onclick="openHelp('dryadImport')"><img class="iconButton" src="<fmt:message key="icons.help"/>" /></a> +</legend> + <div align="center"> + <c:choose> + <c:when test="${importStatus =='NOT FOUND'}"><c:out value="Sorry, we cannot find your data"/></c:when> + <c:when test="${importStatus =='OK'}"><c:out value="Import finished"/></c:when> + <c:when test="${importStatus =='FAILED'}"><c:out value="Sorry, One or more data file cannot parsed correctly, you may add your data via treebase interfaces"/></c:when> + </c:choose> + </div> +</fieldset> </form> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |