Author: mfortun Date: 2011-08-12 13:07:56 +0200 (Fri, 12 Aug 2011) New Revision: 1127 Url: http://nuiton.org/repositories/revision/wikitty/1127 Log: *add new kind of url with context for application, allow to find wikittyPubText/pubData by name and label example/fall/chorem/view/wiki.action will search for wikittypub that have the name=wiki and a label starting with chorem Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationSession.java trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionEdit.java trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionEval.java trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionLogout.java trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionView.java trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationBaseAction.java trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/interceptor/LogoutInterceptor.java trunk/wikitty-publication/src/main/resources/log4j.properties trunk/wikitty-publication/src/main/resources/mimetype.properties trunk/wikitty-publication/src/main/resources/struts.xml trunk/wikitty-publication/src/main/webapp/WEB-INF/jsp/edit.jsp trunk/wikitty-publication/src/main/webapp/WEB-INF/jsp/login.jsp trunk/wikitty-publication/src/main/webapp/WEB-INF/jsp/register.jsp Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationSession.java =================================================================== --- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationSession.java 2011-08-12 08:31:22 UTC (rev 1126) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationSession.java 2011-08-12 11:07:56 UTC (rev 1127) @@ -21,15 +21,15 @@ static final private String WIKITTY_PUBLICATION_SESSION_KEY = WikittyPublicationSession.class .getSimpleName(); + static final private String WIKITTY_PUBLICATION_SESSION_SEP = "_"; + protected String securityToken = null; transient protected WikittyUser user; transient protected WikittyPublicationProxy proxy = null; transient protected String context; - - public WikittyPublicationSession(String context) { - this.context=context; + this.context = context; proxy = WikittyPublicationProxy.getInstance(null, context); } @@ -38,40 +38,47 @@ * * @param session */ - static public void invalidate(Map<String, Object> session) { - session.remove(WIKITTY_PUBLICATION_SESSION_KEY); + static public void invalidate(Map<String, Object> session, + String contextData) { + session.remove(WIKITTY_PUBLICATION_SESSION_KEY + + WIKITTY_PUBLICATION_SESSION_SEP + contextData); } static public WikittyPublicationSession getWikittyPublicationSession( HttpServletRequest request, String context) { HttpSession session = request.getSession(); - WikittyPublicationSession result = getWikittyPublicationSession(session, context); + WikittyPublicationSession result = getWikittyPublicationSession( + session, context); return result; } static public WikittyPublicationSession getWikittyPublicationSession( - HttpSession httpSession, String context) { + HttpSession httpSession, String contextData) { WikittyPublicationSession result = (WikittyPublicationSession) httpSession - .getAttribute(WIKITTY_PUBLICATION_SESSION_KEY); - if (result == null || !result.getContext().equals(context)) { - result = new WikittyPublicationSession(context); - httpSession.setAttribute(WIKITTY_PUBLICATION_SESSION_KEY, result); + .getAttribute(WIKITTY_PUBLICATION_SESSION_KEY + + WIKITTY_PUBLICATION_SESSION_SEP + contextData); + if (result == null || !result.getContext().equals(contextData)) { + result = new WikittyPublicationSession(contextData); + httpSession.setAttribute(WIKITTY_PUBLICATION_SESSION_KEY + + WIKITTY_PUBLICATION_SESSION_SEP + contextData, result); } return result; } static public WikittyPublicationSession getWikittyPublicationSession( - Map<String, Object> session, String context) { + Map<String, Object> session, String contextData) { WikittyPublicationSession result = (WikittyPublicationSession) session - .get(WIKITTY_PUBLICATION_SESSION_KEY); - if (result == null || !result.getContext().equals(context)) { - result = new WikittyPublicationSession(context); - session.put(WIKITTY_PUBLICATION_SESSION_KEY, result); + .get(WIKITTY_PUBLICATION_SESSION_KEY + + WIKITTY_PUBLICATION_SESSION_SEP + contextData); + if (result == null || !result.getContext().equals(contextData)) { + result = new WikittyPublicationSession(contextData); + session.put(WIKITTY_PUBLICATION_SESSION_KEY + + WIKITTY_PUBLICATION_SESSION_SEP + contextData, result); } return result; } - public void login(String context ,String login, String password) { + public void login(String context, String login, String password) { WikittyPublicationProxy proxy = getProxy(context); proxy.login(login, password); securityToken = proxy.getSecurityToken(); @@ -87,7 +94,6 @@ } - public WikittyUser getUser() { return user; } @@ -103,6 +109,5 @@ public void setContext(String context) { this.context = context; } - - + } Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionEdit.java =================================================================== --- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionEdit.java 2011-08-12 08:31:22 UTC (rev 1126) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionEdit.java 2011-08-12 11:07:56 UTC (rev 1127) @@ -8,6 +8,9 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.nuiton.util.FileUtil; import org.nuiton.util.StringUtil; import org.nuiton.wikitty.WikittyProxy; @@ -32,7 +35,8 @@ * */ private static final long serialVersionUID = -590087371230933701L; - + /** to use log facility, just put in your code: log.info(\"...\"); */ + static private Log log = LogFactory.getLog(PublicationActionEdit.class); protected Wikitty wikitty; protected HashMap<String, Object> wikittyFieldMap; @@ -83,15 +87,19 @@ } public void doAction() { - if (isDelete) { + log.info("delete requested"); + log.debug(wikitty); + // on nous demande supprimer le wikitty, on l'efface et on // affichera un wikitty vide String id = this.wikittyId; proxy.delete(id); + // apres un effacement on reprend l'edition d'un tout nouveau // wikitty wikitty = new WikittyImpl(); + wikittyId = wikitty.getId(); } else { @@ -106,8 +114,9 @@ // recherche du Wikitty a editer ou creation d'un nouveau si // necessaire Criteria criteria = searchCriteria(argsString); + //System.out.println(criteria); + if (criteria == null) { - if (criteria == null) { wikitty = new WikittyImpl(); } else { wikitty = proxy.findByCriteria(criteria); @@ -115,7 +124,7 @@ // si on ne retrouve pas le wikitty, mais qu'il vient d'etre cree // pour l'edition, on recree un wikitty avec ce meme identifiant - if (wikitty == null && "0.0".equals(version)) { + if (wikitty == null && wikittyId !=null) { // c'est un nouvel objet, il n'a pas encore ete sauve, mais on // veut le faire String id = this.wikittyId; @@ -123,11 +132,13 @@ } if (wikitty == null) { + System.out.println("ici"); // si le wikitty est null, et qu'on etait pas en edition // cela signifie qu'on ne retrouve pas le wikitty a editer // on creer un nouveau wikitty vide que l'on editera wikitty = new WikittyImpl(); } else { + System.out.println("on passe en set"); // on met a jour le wikitty avec les infos trouvees dans les // arguments @@ -234,16 +245,27 @@ } } } - } + } + + + } - + System.out.println("tehre" + isStore); if (isStore) { + log.info("store requested"); + log.debug(wikitty); // on nous demande la sauvegarde - proxy.store(wikitty); + wikitty = proxy.store(wikitty); } + } + + + + } + } public void setFile(File upload) { Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionEval.java =================================================================== --- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionEval.java 2011-08-12 08:31:22 UTC (rev 1126) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionEval.java 2011-08-12 11:07:56 UTC (rev 1127) @@ -254,7 +254,7 @@ // TODO mforun-2011-05-09 rework on this method finalUrl = getRequest().getContextPath() + "/" - + getArgument(CONTEXT_KEY, "") + finalUrl; + + getArgument(CONTEXT_DATA_KEY, "") + finalUrl; finalUrl = getResponse().encodeURL(finalUrl) + ".action"; if (log.isInfoEnabled()) { log.info(String.format("transforme url from '%s' to '%s'", url, Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionLogout.java =================================================================== --- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionLogout.java 2011-08-12 08:31:22 UTC (rev 1126) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionLogout.java 2011-08-12 11:07:56 UTC (rev 1127) @@ -49,7 +49,7 @@ } public String execute() { - WikittyPublicationSession.invalidate(session); + WikittyPublicationSession.invalidate(session, contextData); return SUCCESS; } } Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionView.java =================================================================== --- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionView.java 2011-08-12 08:31:22 UTC (rev 1126) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionView.java 2011-08-12 11:07:56 UTC (rev 1127) @@ -5,6 +5,7 @@ import org.nuiton.util.StringUtil; import org.nuiton.wikitty.entities.Wikitty; +import org.nuiton.wikitty.entities.WikittyLabel; import org.nuiton.wikitty.publication.WikittyPublicationProxy; import org.nuiton.wikitty.search.Criteria; import org.nuiton.wikitty.search.PagedResult; @@ -112,8 +113,7 @@ List<String> argsString = new ArrayList<String>(); String args = ActionContext.getContext().getParameters().get(ARGS_KEY) .toString(); - - + String[] argsTab = StringUtil.split(args, SEPARATOR); for (String arg : argsTab) { @@ -153,10 +153,18 @@ searchRequest = "*"; } - //wikittyResult = getWikittyPublicationProxy().restore(id); + // wikittyResult = getWikittyPublicationProxy().restore(id); + Criteria criteria; + if (contextApps != null) { + criteria = Search.query().keyword(searchRequest) + .exteq(WikittyLabel.EXT_WIKITTYLABEL) + .sw(WikittyLabel.FQ_FIELD_WIKITTYLABEL_LABELS, contextApps) + .criteria(); + } else { + // search wikitties + criteria = Search.query().keyword(searchRequest).criteria(); + } - // search wikitties - Criteria criteria = Search.query().keyword(searchRequest).criteria(); // criteria starts index at 0 so adjust search indexes criteria.setFirstIndex(first - 1); criteria.setEndIndex(end - 1); Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationBaseAction.java =================================================================== --- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationBaseAction.java 2011-08-12 08:31:22 UTC (rev 1126) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationBaseAction.java 2011-08-12 11:07:56 UTC (rev 1127) @@ -4,6 +4,7 @@ import java.util.Map; import org.apache.struts2.interceptor.SessionAware; import org.nuiton.web.struts2.BaseAction; +import org.nuiton.wikitty.entities.WikittyLabel; import org.nuiton.wikitty.publication.WikittyPublicationProxy; import org.nuiton.wikitty.publication.WikittyPublicationSession; import org.nuiton.wikitty.publication.entities.WikittyPubData; @@ -35,22 +36,32 @@ final static protected String CONTEXT_ACTION_KEY = "action"; static public String SEPARATOR = "/"; - static public String CONTEXT_KEY = "context"; + static public String CONTEXT_DATA_KEY = "contextData"; + static public String CONTEXT_APPS_KEY = "contextApps"; static public String ARGS_KEY = "args"; protected Map<String, Object> session; - protected String context; + protected String contextData; + protected String contextApps; - public String getContext() { - return context; + public String getContextApps() { + return contextApps; } - public void setContext(String context) { - this.context = context; + public void setContextApps(String contextApps) { + this.contextApps = contextApps; } + + public String getContextData() { + return contextData; + } + + public void setContextData(String context) { + this.contextData = context; + } @@ -93,13 +104,35 @@ } else { // on a pas le champs, alors par defaut on recherche dans // WikittyPubText.name et WikittyPubData.name - result = Search - .query() - .or() - .eq(WikittyPubText.FQ_FIELD_WIKITTYPUBTEXT_NAME, - searchString) - .eq(WikittyPubData.FQ_FIELD_WIKITTYPUBDATA_NAME, - searchString).criteria(searchString); + + if (contextApps != null){ + + // Search for wikitty pubdata or pub text with the name + // and their + result = Search + .query() + .exteq(WikittyLabel.EXT_WIKITTYLABEL) + .sw(WikittyLabel.FQ_FIELD_WIKITTYLABEL_LABELS, + contextApps) + .or() + .eq(WikittyPubText.FQ_FIELD_WIKITTYPUBTEXT_NAME, + searchString) + .eq(WikittyPubData.FQ_FIELD_WIKITTYPUBDATA_NAME, + searchString).criteria(searchString); + + + }else{ + + result = Search + .query() + .or() + .eq(WikittyPubText.FQ_FIELD_WIKITTYPUBTEXT_NAME, + searchString) + .eq(WikittyPubData.FQ_FIELD_WIKITTYPUBDATA_NAME, + searchString).criteria(searchString); + + } + } } return result; @@ -134,7 +167,7 @@ public String getContextArgs() { return (String) ActionContext.getContext().getParameters() - .get(CONTEXT_KEY); + .get(CONTEXT_DATA_KEY); } public String getArgs() { Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/interceptor/LogoutInterceptor.java =================================================================== --- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/interceptor/LogoutInterceptor.java 2011-08-12 08:31:22 UTC (rev 1126) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/interceptor/LogoutInterceptor.java 2011-08-12 11:07:56 UTC (rev 1127) @@ -25,6 +25,7 @@ import java.util.Map; +import org.nuiton.util.StringUtil; import org.nuiton.wikitty.publication.WikittyPublicationSession; import com.opensymphony.xwork2.ActionContext; @@ -41,12 +42,13 @@ */ private static final long serialVersionUID = -66045004020326043L; - - @Override - public String intercept(ActionInvocation invocation) throws Exception { + public String intercept(ActionInvocation invocation) throws Exception { Map<String, Object> session = ActionContext.getContext().getSession(); - WikittyPublicationSession.invalidate(session); + // get wikittypublication context + String contextData = StringUtil.split(invocation.getProxy() + .getActionName(), "/")[0]; + WikittyPublicationSession.invalidate(session, contextData); String result = invocation.invoke(); return result; } Modified: trunk/wikitty-publication/src/main/resources/log4j.properties =================================================================== --- trunk/wikitty-publication/src/main/resources/log4j.properties 2011-08-12 08:31:22 UTC (rev 1126) +++ trunk/wikitty-publication/src/main/resources/log4j.properties 2011-08-12 11:07:56 UTC (rev 1127) @@ -1,12 +1,12 @@ # Global logging configuration -log4j.rootLogger=FATAL, stdout +#log4j.rootLogger=FATAL, stdout # Console output... -log4j.appender.stdout=org.apache.log4j.ConsoleAppender -log4j.appender.stdout.layout=org.apache.log4j.PatternLayout -log4j.appender.stdout.layout.ConversionPattern=%d %5p [%t] (%F:%L) %M - %m%n +#log4j.appender.stdout=org.apache.log4j.ConsoleAppender +#log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +#log4j.appender.stdout.layout.ConversionPattern=%d %5p [%t] (%F:%L) %M - %m%n # package level -log4j.logger.org.nuiton.wikitty.publication=DEBUG +#log4j.logger.org.nuiton.wikitty.publication=DEBUG #log4j.logger.org.nuiton.util.TimeLog=WARN -log4j.logger.org.apache.struts2.dispatcher.mapper=DEBUG +#log4j.logger.org.apache.struts2.dispatcher.mapper=DEBUG Modified: trunk/wikitty-publication/src/main/resources/mimetype.properties =================================================================== --- trunk/wikitty-publication/src/main/resources/mimetype.properties 2011-08-12 08:31:22 UTC (rev 1126) +++ trunk/wikitty-publication/src/main/resources/mimetype.properties 2011-08-12 11:07:56 UTC (rev 1127) @@ -13,4 +13,6 @@ text/html.javascript=htmljs image/jpeg=jpg image/png=png -text/java=java \ No newline at end of file +text/java=java +application/jar=jar +application/uml.jar=zargo Modified: trunk/wikitty-publication/src/main/resources/struts.xml =================================================================== --- trunk/wikitty-publication/src/main/resources/struts.xml 2011-08-12 08:31:22 UTC (rev 1126) +++ trunk/wikitty-publication/src/main/resources/struts.xml 2011-08-12 11:07:56 UTC (rev 1127) @@ -60,19 +60,20 @@ <package name="login" extends="loginArea"> <action name="*/register_*" method="{2}" class="org.nuiton.wikitty.publication.action.PublicationActionRegister"> - <param name="context">{1}</param> + <param name="contextData">{1}</param> <result name="input">/WEB-INF/jsp/register.jsp</result> <result type="redirect">${context}/view/.action</result> </action> <action name="*/login_*" method="{2}" class="org.nuiton.wikitty.publication.action.PublicationActionLogin"> - <param name="context">{1}</param> + <param name="contextData">{1}</param> <result name="input">/WEB-INF/jsp/login.jsp</result> <result name="success" type="redirect">${success}</result> <result name="error" type="redirect">${error}</result> </action> <action name="*/logout" class="org.nuiton.wikitty.publication.action.PublicationActionLogout"> + <param name="contextData">{1}</param> <result type="redirect">${success}</result> </action> </package> @@ -82,21 +83,21 @@ <action name="*/edit/*" class="org.nuiton.wikitty.publication.action.PublicationActionEdit"> - <param name="context">{1}</param> + <param name="contextData">{1}</param> <param name="args">{2}</param> <result>/WEB-INF/jsp/edit.jsp</result> </action> <action name="*/view/*" class="org.nuiton.wikitty.publication.action.PublicationActionView"> - <param name="context">{1}</param> + <param name="contextData">{1}</param> <param name="args">{2}</param> <result>/WEB-INF/jsp/view.jsp</result> </action> <action name="*/raw/*" class="org.nuiton.wikitty.publication.action.PublicationActionRaw"> - <param name="context">{1}</param> + <param name="contextData">{1}</param> <param name="args">{2}</param> <result type="stream"> <param name="contentType">${mimeType}</param> @@ -106,13 +107,45 @@ <action name="*/eval/*" class="org.nuiton.wikitty.publication.action.PublicationActionEval"> - <param name="context">{1}</param> + <param name="contextData">{1}</param> <param name="args">{2}</param> <result type="stream"> <param name="contentType">${contentType}</param> <param name="inputName">inputStream</param> </result> </action> + + <action name="*/*/view/*" + class="org.nuiton.wikitty.publication.action.PublicationActionView"> + <param name="contextData">{1}</param> + <param name="contextApps">{2}</param> + <param name="args">{3}</param> + <result>/WEB-INF/jsp/view.jsp</result> + </action> + + <action name="*/*/raw/*" + class="org.nuiton.wikitty.publication.action.PublicationActionRaw"> + <param name="contextData">{1}</param> + <param name="contextApps">{2}</param> + <param name="args">{3}</param> + <result type="stream"> + <param name="contentType">${mimeType}</param> + <param name="inputName">inputStream</param> + </result> + </action> + + <action name="*/*/eval/*" + class="org.nuiton.wikitty.publication.action.PublicationActionEval"> + <param name="contextData">{1}</param> + <param name="contextApps">{2}</param> + <param name="args">{3}</param> + <result type="stream"> + <param name="contentType">${contentType}</param> + <param name="inputName">inputStream</param> + </result> + </action> + + </package> <package name="fragment" namespace="/fragment" extends="publicArea"> Modified: trunk/wikitty-publication/src/main/webapp/WEB-INF/jsp/edit.jsp =================================================================== --- trunk/wikitty-publication/src/main/webapp/WEB-INF/jsp/edit.jsp 2011-08-12 08:31:22 UTC (rev 1126) +++ trunk/wikitty-publication/src/main/webapp/WEB-INF/jsp/edit.jsp 2011-08-12 11:07:56 UTC (rev 1127) @@ -46,7 +46,6 @@ PublicationActionEdit action = PublicationActionEdit.getAction(); Wikitty wikitty = action.getWikitty(); -I18n.init(null, null); CodeMirrorWrapper wrapper = new CodeMirrorWrapper(request.getContextPath(),"/js/codemirror-ui/", "lib/CodeMirror-2.0/mode"); Modified: trunk/wikitty-publication/src/main/webapp/WEB-INF/jsp/login.jsp =================================================================== --- trunk/wikitty-publication/src/main/webapp/WEB-INF/jsp/login.jsp 2011-08-12 08:31:22 UTC (rev 1126) +++ trunk/wikitty-publication/src/main/webapp/WEB-INF/jsp/login.jsp 2011-08-12 11:07:56 UTC (rev 1127) @@ -21,7 +21,7 @@ } %> - <s:url var="urlLogin" action="login" namespace="/%{context}" /> + <s:url var="urlLogin" action="login" namespace="/%{contextData}" /> <s:form action="%{urlLogin}"> <p> <s:set id="publication.login.login"> Modified: trunk/wikitty-publication/src/main/webapp/WEB-INF/jsp/register.jsp =================================================================== --- trunk/wikitty-publication/src/main/webapp/WEB-INF/jsp/register.jsp 2011-08-12 08:31:22 UTC (rev 1126) +++ trunk/wikitty-publication/src/main/webapp/WEB-INF/jsp/register.jsp 2011-08-12 11:07:56 UTC (rev 1127) @@ -5,7 +5,7 @@ <h1> <s:text name="Register" /> </h1> - <s:url var="urlRegister" action="register" namespace="/%{context}" /> + <s:url var="urlRegister" action="register" namespace="/%{contextData}" /> <s:form action="%{urlRegister}"> <s:actionerror />