Author: kcardineaud Date: 2011-07-06 14:50:06 +0200 (Wed, 06 Jul 2011) New Revision: 160 Url: http://nuiton.org/repositories/revision/scmwebeditor/160 Log: Reset Action put the last revision of the file in the editor Added: trunk/src/main/java/org/nuiton/scmwebeditor/actions/ResetAction.java trunk/src/main/webapp/reset.jsp Modified: trunk/src/main/java/org/nuiton/scmwebeditor/ScmWebEditorBaseAction.java trunk/src/main/resources/struts.xml trunk/src/main/webapp/ModificationViewer.jsp Modified: trunk/src/main/java/org/nuiton/scmwebeditor/ScmWebEditorBaseAction.java =================================================================== --- trunk/src/main/java/org/nuiton/scmwebeditor/ScmWebEditorBaseAction.java 2011-07-06 09:05:42 UTC (rev 159) +++ trunk/src/main/java/org/nuiton/scmwebeditor/ScmWebEditorBaseAction.java 2011-07-06 12:50:06 UTC (rev 160) @@ -224,14 +224,19 @@ protected String getMineType(File file) throws IOException, SAXException, TikaException { FileInputStream is = new FileInputStream(file); - BodyContentHandler contenthandler = new BodyContentHandler(); - Metadata metadata = new Metadata(); - metadata.set(Metadata.RESOURCE_NAME_KEY, file.getName()); - AutoDetectParser parser = new AutoDetectParser(); - parser.parse(is, contenthandler, metadata); - String result = metadata.get(Metadata.CONTENT_TYPE); - log.info("Mine type of " + file.getName() + " is : " + result); - return result; + try { + BodyContentHandler contenthandler = new BodyContentHandler(); + Metadata metadata = new Metadata(); + metadata.set(Metadata.RESOURCE_NAME_KEY, file.getName()); + AutoDetectParser parser = new AutoDetectParser(); + parser.parse(is, contenthandler, metadata); + String result = metadata.get(Metadata.CONTENT_TYPE); + log.info("Mine type of " + file.getName() + " is : " + result); + return result; + } + finally { + is.close(); + } } } Added: trunk/src/main/java/org/nuiton/scmwebeditor/actions/ResetAction.java =================================================================== --- trunk/src/main/java/org/nuiton/scmwebeditor/actions/ResetAction.java (rev 0) +++ trunk/src/main/java/org/nuiton/scmwebeditor/actions/ResetAction.java 2011-07-06 12:50:06 UTC (rev 160) @@ -0,0 +1,112 @@ +package org.nuiton.scmwebeditor.actions; + +import java.io.File; +import java.io.IOException; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; + +import org.apache.commons.io.FileUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.struts2.interceptor.ServletRequestAware; +import org.nuiton.scmwebeditor.ScmWebEditorBaseAction; +import org.nuiton.scmwebeditor.SvnSession; +import org.tmatesoft.svn.core.SVNAuthenticationException; +import org.tmatesoft.svn.core.SVNDepth; +import org.tmatesoft.svn.core.SVNException; +import org.tmatesoft.svn.core.internal.io.dav.DAVRepositoryFactory; +import org.tmatesoft.svn.core.wc.SVNRevision; +import org.tmatesoft.svn.core.wc.SVNUpdateClient; + +import com.opensymphony.xwork2.Action; + +public class ResetAction extends ScmWebEditorBaseAction implements ServletRequestAware { + + + private static final long serialVersionUID = -1154924826535371319L; + + private static final Log log = LogFactory.getLog(ResetAction.class); + + protected HttpServletRequest request; + + protected String lastRevision; + + + public String getLastRevision() { + return lastRevision; + } + + + + public String execute() { + try { + + HttpSession httpSession = request.getSession(true); + + SvnSession svnSess = getSvnSession(httpSession); + + + DAVRepositoryFactory.setup(); + SVNUpdateClient upclient = new SVNUpdateClient(svnSess.getManager(), svnSess.getSvnOption()); + +// Checkout svn and file organisation + try { + if (log.isDebugEnabled()) { + log.debug("Do Checkout of " + svnSess.getRemoteUrl()); + } + upclient.doCheckout(svnSess.getRemoteUrl(), svnSess.getCheckoutdir(), + SVNRevision.HEAD, SVNRevision.HEAD, SVNDepth.FILES, false); + } catch (SVNAuthenticationException authexep) { + + + // if svn authentication failed user is redirected on login page + + //On supprime le repertoire temporaire + delTempDirectory(svnSess); + //redirect to a login page + return Action.LOGIN; + + } catch (SVNException e) { + //Suppression du repertoire temporaire + delTempDirectory(svnSess); + return "errorPath"; + } + + + File checkOutFile = new File(svnSess.getCheckoutdir(), svnSess.getFileName()); + + try { + lastRevision = FileUtils.readFileToString(checkOutFile); + } catch (IOException e) { + if(log.isErrorEnabled()) { + log.error("Can't read this file",e); + } + } + + //On supprime le repertoire temporaire + delTempDirectory(svnSess); + + + if(log.isInfoEnabled()) { + log.info("Reset success !"); + } + + return Action.SUCCESS; + } + catch(Exception e) { + log.error("erreur", e); + return "erreur"; + } + + } + + + + @Override + public void setServletRequest(HttpServletRequest request) { + this.request = request; + } + + +} Modified: trunk/src/main/resources/struts.xml =================================================================== --- trunk/src/main/resources/struts.xml 2011-07-06 09:05:42 UTC (rev 159) +++ trunk/src/main/resources/struts.xml 2011-07-06 12:50:06 UTC (rev 160) @@ -25,6 +25,10 @@ <result>/Save.jsp</result> </action> + <action name="reset" class="org.nuiton.scmwebeditor.actions.ResetAction" > + <result>/reset.jsp</result> + </action> + <action name="doUpload" class="org.nuiton.scmwebeditor.actions.UploadAction" > <result>/uploadSuccess.jsp</result> <result name="login" >/uploadForm.jsp</result> Modified: trunk/src/main/webapp/ModificationViewer.jsp =================================================================== --- trunk/src/main/webapp/ModificationViewer.jsp 2011-07-06 09:05:42 UTC (rev 159) +++ trunk/src/main/webapp/ModificationViewer.jsp 2011-07-06 12:50:06 UTC (rev 160) @@ -250,7 +250,6 @@ formIds="editForm" targets="htmlcontentPreview" href="%{ajaxPreview}" - indicator="indicator" button="true" buttonIcon="ui-icon-refresh" value="Preview" @@ -259,7 +258,16 @@ <%}%> - <input title="Reset text as current repository HEAD revision." type="reset" value="Reset" name="Reset" /> + <sj:submit + id="resetButton" + targets="resetResult" + value="Reset Ajax" + button="true" + href="reset.action" + /> + <div id="resetResult"></div> + + <!-- <input title="Reset text as current repository HEAD revision." type="reset" value="Reset" name="Reset" /> --> <input type="hidden" value="<%=request.getAttribute("ProjectUrl")%>" name="ProjectUrl"> <input title="Exit ScmWebEditor without saving." type="button" value="Exit" name="Cancel" onclick="javascript:cancelRedirect(this.form.ProjectUrl);"/> Added: trunk/src/main/webapp/reset.jsp =================================================================== --- trunk/src/main/webapp/reset.jsp (rev 0) +++ trunk/src/main/webapp/reset.jsp 2011-07-06 12:50:06 UTC (rev 160) @@ -0,0 +1,12 @@ +<%@ taglib prefix="s" uri="/struts-tags"%> + + <s:set name="lastRevision"> + <s:property value="lastRevision"/> + </s:set> + + <s:hidden id="valueOfLastRevision" value="%{lastRevision}" /> + <script type="text/javascript"> + + editor.mirror.setValue(document.getElementById('valueOfLastRevision').value); + + </script> \ No newline at end of file