r1194 - in trunk/wikitty-publication/src/site: . rapport rapport/beamer rapport/image rapport/part rapport/ressources
Author: mfortun Date: 2011-08-29 11:11:40 +0200 (Mon, 29 Aug 2011) New Revision: 1194 Url: http://nuiton.org/repositories/revision/wikitty/1194 Log: * add internship report Added: trunk/wikitty-publication/src/site/rapport/ trunk/wikitty-publication/src/site/rapport/README.txt trunk/wikitty-publication/src/site/rapport/beamer/ trunk/wikitty-publication/src/site/rapport/beamer/codelutinbeamer.tex trunk/wikitty-publication/src/site/rapport/image/ trunk/wikitty-publication/src/site/rapport/image/explicationTag.graphml trunk/wikitty-publication/src/site/rapport/image/explicationTag.png trunk/wikitty-publication/src/site/rapport/image/externalize.graphml trunk/wikitty-publication/src/site/rapport/image/externalize.png trunk/wikitty-publication/src/site/rapport/image/graphDistrib.graphml trunk/wikitty-publication/src/site/rapport/image/graphDistrib.png trunk/wikitty-publication/src/site/rapport/image/graphestrutstaglib.graphml trunk/wikitty-publication/src/site/rapport/image/howtoopen graphml.txt trunk/wikitty-publication/src/site/rapport/image/logofac.png trunk/wikitty-publication/src/site/rapport/image/logolutin.png trunk/wikitty-publication/src/site/rapport/image/multicontext.graphml trunk/wikitty-publication/src/site/rapport/image/multicontext.png trunk/wikitty-publication/src/site/rapport/image/pileService.graphml trunk/wikitty-publication/src/site/rapport/image/pileService.png trunk/wikitty-publication/src/site/rapport/image/propertiescontext.graphml trunk/wikitty-publication/src/site/rapport/image/propertiescontext.png trunk/wikitty-publication/src/site/rapport/image/schema_wikitty_architecture.svg trunk/wikitty-publication/src/site/rapport/image/strutsexplain.graphml trunk/wikitty-publication/src/site/rapport/image/strutsexplain.png trunk/wikitty-publication/src/site/rapport/image/wikittypubuml.png trunk/wikitty-publication/src/site/rapport/part/ trunk/wikitty-publication/src/site/rapport/part/annexes.tex trunk/wikitty-publication/src/site/rapport/part/codelutin.tex trunk/wikitty-publication/src/site/rapport/part/conclusion.tex trunk/wikitty-publication/src/site/rapport/part/introduction.tex trunk/wikitty-publication/src/site/rapport/part/organisation.tex trunk/wikitty-publication/src/site/rapport/part/remerciement.tex trunk/wikitty-publication/src/site/rapport/part/resume.tex trunk/wikitty-publication/src/site/rapport/part/wikitty.tex trunk/wikitty-publication/src/site/rapport/part/wikittymavenplugin.tex trunk/wikitty-publication/src/site/rapport/part/wikittypublication.tex trunk/wikitty-publication/src/site/rapport/part/wikittypublicationexternalize.tex trunk/wikitty-publication/src/site/rapport/part/wikittypublicationsite.tex trunk/wikitty-publication/src/site/rapport/part/wikittypublicationsync.tex trunk/wikitty-publication/src/site/rapport/part/wikittystruts.tex trunk/wikitty-publication/src/site/rapport/rapportMain.tex trunk/wikitty-publication/src/site/rapport/rapport_stage_FORTUN_Manoel_2010-2011.pdf trunk/wikitty-publication/src/site/rapport/ressources/ trunk/wikitty-publication/src/site/rapport/ressources/planningprev.ods trunk/wikitty-publication/src/site/rapport/ressources/planningprev2.ods trunk/wikitty-publication/src/site/rapport/ressources/planningprev2.pdf trunk/wikitty-publication/src/site/rapport/ressources/pom.xml trunk/wikitty-publication/src/site/rapport/stage-sujet-2011-wikitty-publication lutin.pdf Added: trunk/wikitty-publication/src/site/rapport/README.txt =================================================================== --- trunk/wikitty-publication/src/site/rapport/README.txt (rev 0) +++ trunk/wikitty-publication/src/site/rapport/README.txt 2011-08-29 09:11:40 UTC (rev 1194) @@ -0,0 +1,6 @@ +L'ensemble des fichiers de ce dossier se rapporte au stage de Manoël Fortun +étudiant de master informatique(alma) à l'université de Nantes. +Stage effectué du 28 mars 2011 au 30 aout 2011 au sein de l'entreprise Code Lutin. + +Pour obtenir un version pdf du rapport il faut lancer la commande : +pdflatex rapportMain.tex Added: trunk/wikitty-publication/src/site/rapport/beamer/codelutinbeamer.tex =================================================================== --- trunk/wikitty-publication/src/site/rapport/beamer/codelutinbeamer.tex (rev 0) +++ trunk/wikitty-publication/src/site/rapport/beamer/codelutinbeamer.tex 2011-08-29 09:11:40 UTC (rev 1194) @@ -0,0 +1,261 @@ +% This text is proprietary. +% It's a part of presentation made by myself. +% It may not used commercial. +% The noncommercial use such as private and study is free +% Dec 2007 +% Author: Sascha Frank +% University Freiburg +% www.informatik.uni-freiburg.de/~frank/ +% +% + +\documentclass[12pt,a4paper,utf8x]{beamer} +\setbeamertemplate{navigation symbols}{} + +\usepackage [frenchb]{babel} +\usepackage{color} +% Pour pouvoir utiliser +\usepackage{ucs} +\usepackage[utf8x]{inputenc} + +\usepackage{amsmath} + +\usetheme{Marburg} + +\addtobeamertemplate{footline}{\hfill\insertframenumber/\inserttotalframenumber} + +\beamersetuncovermixins{\opaqueness<1>{25}}{\opaqueness<2->{15}} +\begin{document} +\title{Wikitty Publication} +\author{Manoël Fortun} + +\begin{frame} +\titlepage +\end{frame} + +\begin{frame}\tableofcontents +\end{frame} + + +\section{Wikitty} +\subsection{C'est quoi ?} +\begin{frame}\frametitle{C'est quoi ?} +\begin{itemize} +\item Base de données orientées document. +\item Clé $\to$ Valeur +\item Des extensions +\item Entités générées grace à un modèle UML +\item champ nommé: WikittyPubText.name +\end{itemize} +\end{frame} + +\subsection{Wikitty Service} +\begin{frame} \frametitle{Wikitty Service} +\begin{itemize} +\item Restauration +\item Sauvegarde +\item Recherche +\item Configuré par fichier de propriétés +\item "Complexité" de la base masqué +\end{itemize} +\end{frame} + + +\section{Scripting - JSR 223} +\subsection{Pardon ?} +\begin{frame}\frametitle{Pardon ?} +Concept très simple, la possibilité d'intrepréter un langage de script dans un +autre langage.\\ + +Par exemple, interpréter et éxécuter du \emph{javascript} dans du \emph{java}. +\end{frame} +\subsection{Bindings} +\begin{frame}\frametitle{Bindings} + +Très important: +\begin{itemize} +\item Langage de script peut utiliser le langage qui l'interprète +\item Donc insérer du java dans du javascript +\item Méthode, Objets +\item Map$\textless$String, Object$\textgreater$ +\end{itemize} +\end{frame} + + +\section{Wikitty Publication} +\subsection{Pourquoi faire ?} +\begin{frame}\frametitle{Pourquoi faire ?} +\begin{itemize} +\item Utilise le concept du scripting +\item Intégre un moteur d'évaluation de script +\item Script stocké sous forme de Wikitty +\item Wikitty Service en binding +\item Moteur de script en binding +\item WikittyPubText +\item WikittyPubData +\end{itemize} + +\end{frame} + +\subsection{Nouveau type de wikitty service} +\begin{frame}\frametitle{Nouveau type de wikitty service} +\begin{itemize} +\item wikitty service sur système de fichier +\item wikitty service sur jar +\item wikitty service fallback\pause +\end{itemize}\pause + +\begin{figure} +\includegraphics[scale=0.5]{../image/multicontext.png} +\caption{Service avec fallback} +\end{figure} +\end{frame} + + +\subsection{Nouvelles Fonctionnalités} +\subsubsection*{Synchronisation entre service} +\begin{frame}\frametitle{Synchronisation entre service} +\begin{itemize} +\item Transférer des wikitty d'un service à un autre +\item Basé sur les labels +\item Mise à jour +\item "Suppression" +\item "Déplacement" de wikitty +\end{itemize} +\pause +Exemple de label : +\verb!org.nuiton.wikitty! +\end{frame} + +\begin{frame} +Exemple de synchronisation: +\begin{itemize} +\item cajo://localhost:1111\#com +\item cajo://wwikitty.nuiton.org:2222\#org +\end{itemize} + +Les wikitty sous le label \verb!com! contenu sur le premier service vont +être envoyé sur le second service sous le label org.\\ + +Le label \verb!com.nuiton.wikitty! deviendra \verb!org.nuiton.wikitty! sur +le second service.\\ +\end{frame} + +\subsubsection*{Externalisation} +\begin{frame}\frametitle{Externalisation} +\begin{itemize} +\item "Fixer" les wikitty +\item Compiler les scripts +\item Création d'un jar +\item WikittyPubTextCompiled +\end{itemize} +\end{frame} + +\subsubsection*{Migration vers struts} +\begin{frame}\frametitle{Migration vers struts} +\begin{itemize} +\item Migration depuis une application en jsp "classic/simple" +\item Mécanisme de login/logout +\item action struts/interceptor +\item support struts pour les sessions etc +\end{itemize} +\end{frame} + + + + +\subsubsection*{Moteur d'évaluation} +\begin{frame}\frametitle{Moteur d'évaluation} + +Moteur d'évaluation dans un navigateur à l'adresse:\\ +\verb!/[contextData]/[contextApps]/eval/[mandatory]! + +\begin{itemize} +\item mandatory pour retrouver le wikitty correspondant +\item eval, c'est le nom de l'action +\item contextApps, pour ne pas se tromper de wikitty. +\item contextData, pour trouver le bon wikitty service +\end{itemize} + + + +\end{frame} + +\begin{frame}\frametitle{Moteur d'évaluation} + +Comment ça marche contextData: + +\begin{figure} +\includegraphics[scale=0.5]{../image/propertiescontext.png} +\caption{Surcharge des propriétés} +\end{figure} + +\end{frame} + +\begin{frame}\frametitle{Moteur d'évaluation} +Le mime type des WikittyPub détermine le traitement effectué. +\begin{itemize} +\item text/javascript, passera par l'évaluateur de javascript +\item image/png, renvoyé tel quel en mettant le bon type mime dans la réponse +pour interprétation du navigateur +\item text/html.javascript, passera par un décorateur pour transformer le contenu +en text/javascript pour interprétation +\item text/java, sera compilé pour évaluation +\end{itemize} +\end{frame} + +\begin{frame}\frametitle{Moteur d'évaluation} + +Exemple: +\verb!codelutin/chorem/eval/Menu! + +On va "évaluer" le wikittyPub qui possède le nom "Menu" avec un label qui +commence par "chorem" et qui se trouve dans le service correspondant à Code Lutin. +Le rendu sera déterminé par le mime Type du wikittyPub correspondant. +\end{frame} + + + + + +\section{Wikitty Struts} +\begin{frame}\frametitle{Wikitty Struts} +Création d'une Tag lib struts pour une intégration facilité de wikitty dans des +formulaire. +Deux possibilités d'utilisation +\begin{itemize} +\item Formulaire d'édition de wikitty, avec action pré-construite +\item Intégration des champs de wikitty dans un formulaire, avec choix de la forme +de l'affichage en fonction du tag utilisé. +\end{itemize} + +\end{frame} + + +\section{Plugin Maven} +\subsection{Un plugin?!} +\begin{frame}\frametitle{Un plugin?!} +\begin{itemize} +\item Motivation: Plus simple pour l'utilisateur +\item Clés en mains +\item Intègre de façon ciblée les fonctionnalités (externalize-synchronize) +\end{itemize} +%pom exemple +%liste des goals +\end{frame} + +\subsection{Les goals} +\begin{frame}\frametitle{Les goals} +\begin{itemize} +\item wp:init +\item wp:run +\item wp:deploy +\item wp:update +\item wp:jar +\item wp:jar-deploy +\end{itemize} + +\end{frame} + + +\end{document} Added: trunk/wikitty-publication/src/site/rapport/image/explicationTag.graphml =================================================================== --- trunk/wikitty-publication/src/site/rapport/image/explicationTag.graphml (rev 0) +++ trunk/wikitty-publication/src/site/rapport/image/explicationTag.graphml 2011-08-29 09:11:40 UTC (rev 1194) @@ -0,0 +1,364 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd"> + <!--Created by yFiles for Java HEAD-Current--> + <key for="graphml" id="d0" yfiles.type="resources"/> + <key for="port" id="d1" yfiles.type="portgraphics"/> + <key for="port" id="d2" yfiles.type="portgeometry"/> + <key for="port" id="d3" yfiles.type="portuserdata"/> + <key attr.name="url" attr.type="string" for="node" id="d4"/> + <key attr.name="description" attr.type="string" for="node" id="d5"/> + <key for="node" id="d6" yfiles.type="nodegraphics"/> + <key attr.name="Description" attr.type="string" for="graph" id="d7"/> + <key attr.name="url" attr.type="string" for="edge" id="d8"/> + <key attr.name="description" attr.type="string" for="edge" id="d9"/> + <key for="edge" id="d10" yfiles.type="edgegraphics"/> + <graph edgedefault="directed" id="G"> + <data key="d7"/> + <node id="n0"> + <data key="d5"/> + <data key="d6"> + <y:GenericNode configuration="com.yworks.flowchart.annotation"> + <y:Geometry height="189.0" width="80.0" x="519.0000000000001" y="242.0"/> + <y:Fill color="#E8EEF7" color2="#B7C9E3" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="4.0" x="38.0" y="92.5"/> + <y:StyleProperties> + <y:Property class="java.lang.Byte" name="com.yworks.flowchart.style.orientation" value="0"/> + <y:Property class="java.lang.Byte" name="LAYER_STYLE_PROPERTY_KEY" value="1"/> + </y:StyleProperties> + </y:GenericNode> + </data> + </node> + <node id="n1"> + <data key="d5"/> + <data key="d6"> + <y:GenericNode configuration="com.yworks.flowchart.annotation"> + <y:Geometry height="272.0" width="80.0" x="308.0" y="172.25"/> + <y:Fill color="#E8EEF7" color2="#B7C9E3" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="4.0" x="38.0" y="134.0"/> + <y:StyleProperties> + <y:Property class="java.lang.Byte" name="com.yworks.flowchart.style.orientation" value="0"/> + <y:Property class="java.lang.Byte" name="LAYER_STYLE_PROPERTY_KEY" value="1"/> + </y:StyleProperties> + </y:GenericNode> + </data> + </node> + <node id="n2"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="28.0" width="129.0" x="534.0" y="474.25"/> + <y:Fill color="#FFCC00" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="133.263671875" x="-2.1318359375" y="3.0">ClasseMonTagBean</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel/> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <node id="n3"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="28.0" width="149.0" x="328.0000000000001" y="474.25"/> + <y:Fill color="#FFCC00" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="101.27783203125" x="23.861083984375" y="3.0">ClasseMonTag</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel/> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <node id="n4"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="28.0" width="149.0" x="328.0000000000001" y="391.0"/> + <y:Fill color="#99CCFF" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="136.21533203125" x="6.392333984375" y="3.0">AbstractClosingTag</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel/> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <node id="n5"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="28.0" width="149.00000000000003" x="328.0000000000001" y="317.0"/> + <y:Fill color="#99CCFF" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="107.1748046875" x="20.912597656250014" y="3.0">AbastractUiTag</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel/> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <node id="n6"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="28.0" width="173.0" x="316.0000000000001" y="248.0"/> + <y:Fill color="#99CCFF" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="158.908203125" x="7.0458984375" y="3.0">ComponentTagSupport</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel/> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <node id="n7"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="28.0" width="129.0" x="338.0000000000001" y="181.0"/> + <y:Fill color="#99CCFF" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="101.63330078125" x="13.683349609375" y="3.0">StrutsBodyTag</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel/> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <node id="n8"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="28.0" width="135.16666666666674" x="334.91666666666674" y="123.0"/> + <y:Fill color="#339966" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="114.54443359375" x="10.311116536458371" y="3.0">BodyTagSupport</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel/> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <node id="n9"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="28.0" width="100.0" x="548.5" y="391.0"/> + <y:Fill color="#99CCFF" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="100.2685546875" x="-0.13427734375" y="3.0">ClosingUiBean</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel/> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <node id="n10"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="28.0" width="100.0" x="548.5" y="317.0"/> + <y:Fill color="#99CCFF" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="49.78564453125" x="25.107177734375" y="3.0">UiBean</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel/> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <node id="n11"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="28.0" width="100.0" x="548.5" y="248.0"/> + <y:Fill color="#99CCFF" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="81.0478515625" x="9.47607421875" y="3.0">Component</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel/> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <node id="n12"> + <data key="d5"/> + <data key="d6"> + <y:ShapeNode> + <y:Geometry height="30.0" width="76.0" x="693.0" y="389.0"/> + <y:Fill color="#99CCFF" transparent="false"/> + <y:BorderStyle hasColor="false" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="37.9140625" x="19.04296875" y="6.0185546875">Struts</y:NodeLabel> + <y:Shape type="rectangle"/> + </y:ShapeNode> + </data> + </node> + <node id="n13"> + <data key="d5"/> + <data key="d6"> + <y:ShapeNode> + <y:Geometry height="30.0" width="76.0" x="693.0" y="473.25"/> + <y:Fill color="#FFCC00" transparent="false"/> + <y:BorderStyle hasColor="false" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="43.1171875" x="16.44140625" y="6.0185546875">TagLib</y:NodeLabel> + <y:Shape type="rectangle"/> + </y:ShapeNode> + </data> + </node> + <node id="n14"> + <data key="d5"/> + <data key="d6"> + <y:ShapeNode> + <y:Geometry height="30.0" width="76.0" x="693.0" y="121.0"/> + <y:Fill color="#339966" transparent="false"/> + <y:BorderStyle hasColor="false" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="64.65625" x="5.671875" y="6.0185546875">Norme J2E</y:NodeLabel> + <y:Shape type="rectangle"/> + </y:ShapeNode> + </data> + </node> + <edge id="e0" source="n2" target="n3"> + <data key="d8"/> + <data key="d9"><![CDATA[UMLhas]]></data> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="diamond"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="-30.543945312499943" y="2.0"/> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + <edge id="e1" source="n3" target="n4"> + <data key="d8"/> + <data key="d9"><![CDATA[UMLinherits]]></data> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="white_delta"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="2.0000000000001137" y="-29.6009521484375"/> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + <edge id="e2" source="n4" target="n5"> + <data key="d8"/> + <data key="d9"><![CDATA[UMLinherits]]></data> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="white_delta"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="2.0000000000001137" y="-25.0166015625"/> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + <edge id="e3" source="n5" target="n6"> + <data key="d8"/> + <data key="d9"><![CDATA[UMLinherits]]></data> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="white_delta"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="2.0000000000001137" y="-22.51806640625"/> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + <edge id="e4" source="n6" target="n7"> + <data key="d8"/> + <data key="d9"><![CDATA[UMLinherits]]></data> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="white_delta"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="2.0000000000001137" y="-21.53076171875"/> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + <edge id="e5" source="n7" target="n8"> + <data key="d8"/> + <data key="d9"><![CDATA[UMLinherits]]></data> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="white_delta"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="2.0000000000001137" y="-16.9814453125"/> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + <edge id="e6" source="n2" target="n9"> + <data key="d8"/> + <data key="d9"><![CDATA[UMLinherits]]></data> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="white_delta"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="2.0" y="-29.6009521484375"/> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + <edge id="e7" source="n9" target="n10"> + <data key="d8"/> + <data key="d9"><![CDATA[UMLinherits]]></data> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="white_delta"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="2.0" y="-25.0166015625"/> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + <edge id="e8" source="n10" target="n11"> + <data key="d8"/> + <data key="d9"><![CDATA[UMLinherits]]></data> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="white_delta"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="2.0" y="-22.51806640625"/> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + </graph> + <data key="d0"> + <y:Resources/> + </data> +</graphml> Added: trunk/wikitty-publication/src/site/rapport/image/explicationTag.png =================================================================== (Binary files differ) Property changes on: trunk/wikitty-publication/src/site/rapport/image/explicationTag.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/wikitty-publication/src/site/rapport/image/externalize.graphml =================================================================== --- trunk/wikitty-publication/src/site/rapport/image/externalize.graphml (rev 0) +++ trunk/wikitty-publication/src/site/rapport/image/externalize.graphml 2011-08-29 09:11:40 UTC (rev 1194) @@ -0,0 +1,80 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd"> + <!--Created by yFiles for Java HEAD-Current--> + <key for="graphml" id="d0" yfiles.type="resources"/> + <key for="port" id="d1" yfiles.type="portgraphics"/> + <key for="port" id="d2" yfiles.type="portgeometry"/> + <key for="port" id="d3" yfiles.type="portuserdata"/> + <key attr.name="url" attr.type="string" for="node" id="d4"/> + <key attr.name="description" attr.type="string" for="node" id="d5"/> + <key for="node" id="d6" yfiles.type="nodegraphics"/> + <key attr.name="Description" attr.type="string" for="graph" id="d7"/> + <key attr.name="url" attr.type="string" for="edge" id="d8"/> + <key attr.name="description" attr.type="string" for="edge" id="d9"/> + <key for="edge" id="d10" yfiles.type="edgegraphics"/> + <graph edgedefault="directed" id="G"> + <data key="d7"/> + <node id="n0"> + <data key="d5"/> + <data key="d6"> + <y:ShapeNode> + <y:Geometry height="60.0" width="58.0" x="105.0" y="203.0"/> + <y:Fill color="#FFCC00" transparent="false"/> + <y:BorderStyle hasColor="false" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="4.0" x="27.0" y="28.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="87.484375" x="-14.7421875" y="21.0185546875">Wikitty service</y:NodeLabel> + <y:Shape type="roundrectangle"/> + </y:ShapeNode> + </data> + </node> + <node id="n1"> + <data key="d5"/> + <data key="d6"> + <y:ShapeNode> + <y:Geometry height="60.0" width="58.0" x="262.0" y="203.0"/> + <y:Fill color="#FFCC00" transparent="false"/> + <y:BorderStyle hasColor="false" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="4.0" x="27.0" y="28.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="111.783203125" x="-26.8916015625" y="21.0185546875">Wikitty Externalize</y:NodeLabel> + <y:Shape type="roundrectangle"/> + </y:ShapeNode> + </data> + </node> + <node id="n2"> + <data key="d5"/> + <data key="d6"> + <y:ShapeNode> + <y:Geometry height="53.0" width="58.0" x="183.5" y="99.0"/> + <y:Fill color="#FFCC00" transparent="false"/> + <y:BorderStyle hasColor="false" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="4.0" x="27.0" y="24.5"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="107.58203125" x="-24.791015625" y="17.5185546875">WikittyPublication</y:NodeLabel> + <y:Shape type="diamond"/> + </y:ShapeNode> + </data> + </node> + <edge id="e0" source="n2" target="n0"> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="standard"/> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + <edge id="e1" source="n2" target="n1"> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="standard"/> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + </graph> + <data key="d0"> + <y:Resources/> + </data> +</graphml> Added: trunk/wikitty-publication/src/site/rapport/image/externalize.png =================================================================== (Binary files differ) Property changes on: trunk/wikitty-publication/src/site/rapport/image/externalize.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/wikitty-publication/src/site/rapport/image/graphDistrib.graphml =================================================================== --- trunk/wikitty-publication/src/site/rapport/image/graphDistrib.graphml (rev 0) +++ trunk/wikitty-publication/src/site/rapport/image/graphDistrib.graphml 2011-08-29 09:11:40 UTC (rev 1194) @@ -0,0 +1,298 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd"> + <!--Created by yFiles for Java HEAD-Current--> + <key for="graphml" id="d0" yfiles.type="resources"/> + <key for="port" id="d1" yfiles.type="portgraphics"/> + <key for="port" id="d2" yfiles.type="portgeometry"/> + <key for="port" id="d3" yfiles.type="portuserdata"/> + <key attr.name="url" attr.type="string" for="node" id="d4"/> + <key attr.name="description" attr.type="string" for="node" id="d5"/> + <key for="node" id="d6" yfiles.type="nodegraphics"/> + <key attr.name="Description" attr.type="string" for="graph" id="d7"/> + <key attr.name="url" attr.type="string" for="edge" id="d8"/> + <key attr.name="description" attr.type="string" for="edge" id="d9"/> + <key for="edge" id="d10" yfiles.type="edgegraphics"/> + <graph edgedefault="directed" id="G"> + <data key="d7"/> + <node id="n0"> + <data key="d6"> + <y:ShapeNode> + <y:Geometry height="118.0" width="127.0" x="54.0" y="-246.11328125"/> + <y:Fill color="#FFCC00" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="4.0" x="61.5" y="57.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="14.3359375" x="56.33203125" y="50.0185546875">M</y:NodeLabel> + <y:Shape type="ellipse"/> + </y:ShapeNode> + </data> + </node> + <node id="n1"> + <data key="d6"> + <y:ShapeNode> + <y:Geometry height="118.0" width="110.0" x="421.26171875" y="-253.9921875"/> + <y:Fill color="#FFCC00" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="4.0" x="53.0" y="57.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="18.05078125" x="45.974609375" y="50.0185546875">S1</y:NodeLabel> + <y:Shape type="ellipse"/> + </y:ShapeNode> + </data> + </node> + <node id="n2"> + <data key="d6"> + <y:ShapeNode> + <y:Geometry height="127.5" width="127.0" x="-182.46484375" y="-80.7734375"/> + <y:Fill color="#FFCC00" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="4.0" x="61.5" y="61.75"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="18.05078125" x="54.474609375" y="54.7685546875">S2</y:NodeLabel> + <y:Shape type="ellipse"/> + </y:ShapeNode> + </data> + </node> + <node id="n3"> + <data key="d6"> + <y:ShapeNode> + <y:Geometry height="118.0" width="110.0" x="610.33984375" y="158.828125"/> + <y:Fill color="#FFCC00" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="4.0" x="53.0" y="57.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="18.05078125" x="45.974609375" y="50.0185546875">S3</y:NodeLabel> + <y:Shape type="ellipse"/> + </y:ShapeNode> + </data> + </node> + <node id="n4"> + <data key="d6"> + <y:ShapeNode> + <y:Geometry height="118.0" width="127.0" x="276.892578125" y="192.81640625"/> + <y:Fill color="#FFCC00" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="4.0" x="61.5" y="57.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="18.05078125" x="54.474609375" y="50.0185546875">S4</y:NodeLabel> + <y:Shape type="ellipse"/> + </y:ShapeNode> + </data> + </node> + <node id="n5"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="87.0" width="83.0" x="54.0" y="-311.11328125"/> + <y:Fill color="#FFCC00" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="50.01416015625" x="16.492919921875" y="3.0">wikitty</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel>id: unid +onwer: +version:1</y:AttributeLabel> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <node id="n6"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="87.0" width="83.0" x="495.015625" y="-311.11328125"/> + <y:Fill color="#FFCC00" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="50.01416015625" x="16.492919921875" y="3.0">wikitty</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel>id: unid +onwer: M +version:1.1</y:AttributeLabel> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <node id="n7"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="87.0" width="83.0" x="-196.609375" y="-152.09375"/> + <y:Fill color="#FFCC00" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="50.01416015625" x="16.492919921875" y="3.0">wikitty</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel>id: unid +onwer: M +version:1.1</y:AttributeLabel> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <node id="n8"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="87.0" width="83.0" x="670.765625" y="109.77734375"/> + <y:Fill color="#FFCC00" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="50.01416015625" x="16.492919921875" y="3.0">wikitty</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel>id: unid +onwer: M,S1 +version:1.1.1</y:AttributeLabel> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <node id="n9"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="87.0" width="116.75" x="255.419921875" y="135.88671875"/> + <y:Fill color="#FFCC00" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="50.01416015625" x="33.367919921875" y="3.0">wikitty</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel>id: unid +onwer: M,S1,S3 +version:1.1.1.1</y:AttributeLabel> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <node id="n10"> + <data key="d6"> + <y:ShapeNode> + <y:Geometry height="127.5" width="127.0" x="-21.3828125" y="272.38671875"/> + <y:Fill color="#FFCC00" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="4.0" x="61.5" y="61.75"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="18.05078125" x="54.474609375" y="54.7685546875">S5</y:NodeLabel> + <y:Shape type="ellipse"/> + </y:ShapeNode> + </data> + </node> + <node id="n11"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="87.0" width="83.0" x="-48.171875" y="208.31640625"/> + <y:Fill color="#FFCC00" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="50.01416015625" x="16.492919921875" y="3.0">wikitty</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel>id: unid +onwer: M,S2 +version:1.1.1</y:AttributeLabel> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <node id="n12"> + <data key="d6"> + <y:ShapeNode> + <y:Geometry height="118.0" width="127.0" x="372.169921875" y="-3.59375"/> + <y:Fill color="#FFCC00" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="4.0" x="61.5" y="57.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="18.05078125" x="54.474609375" y="50.0185546875">S5</y:NodeLabel> + <y:Shape type="ellipse"/> + </y:ShapeNode> + </data> + </node> + <node id="n13"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="87.0" width="116.75" x="350.697265625" y="-60.5234375"/> + <y:Fill color="#FFCC00" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="50.01416015625" x="33.367919921875" y="3.0">wikitty</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel>id: unid +onwer: M,S1,S3 +version:1.1.1.1</y:AttributeLabel> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <edge id="e0" source="n0" target="n1"> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="standard"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="63.61328125" x="88.34194946289062" y="0.05989406338935055">sync/copy</y:EdgeLabel> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + <edge id="e1" source="n0" target="n2"> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="standard"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="63.61328125" x="-53.53445575460837" y="39.94609069824219">sync/copy</y:EdgeLabel> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + <edge id="e2" source="n1" target="n3"> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="standard"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="63.61328125" x="76.39910309518802" y="144.4750518798828">sync/copy</y:EdgeLabel> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + <edge id="e3" source="n3" target="n4"> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="standard"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="63.61328125" x="-135.28985595703125" y="16.150816265726007">sync/copy</y:EdgeLabel> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + <edge id="e4" source="n2" target="n10"> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="standard"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="63.61328125" x="60.20013553210231" y="109.63650131225586">sync/copy</y:EdgeLabel> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + <edge id="e5" source="n3" target="n12"> + <data key="d9"/> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="standard"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="63.61328125" x="-49.965587656700905" y="-54.712796626779664">sync/copy</y:EdgeLabel> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + </graph> + <data key="d0"> + <y:Resources/> + </data> +</graphml> Added: trunk/wikitty-publication/src/site/rapport/image/graphDistrib.png =================================================================== (Binary files differ) Property changes on: trunk/wikitty-publication/src/site/rapport/image/graphDistrib.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/wikitty-publication/src/site/rapport/image/graphestrutstaglib.graphml =================================================================== --- trunk/wikitty-publication/src/site/rapport/image/graphestrutstaglib.graphml (rev 0) +++ trunk/wikitty-publication/src/site/rapport/image/graphestrutstaglib.graphml 2011-08-29 09:11:40 UTC (rev 1194) @@ -0,0 +1,763 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd"> + <!--Created by yFiles for Java HEAD-Current--> + <key for="graphml" id="d0" yfiles.type="resources"/> + <key for="port" id="d1" yfiles.type="portgraphics"/> + <key for="port" id="d2" yfiles.type="portgeometry"/> + <key for="port" id="d3" yfiles.type="portuserdata"/> + <key attr.name="url" attr.type="string" for="node" id="d4"/> + <key attr.name="description" attr.type="string" for="node" id="d5"/> + <key for="node" id="d6" yfiles.type="nodegraphics"/> + <key attr.name="Description" attr.type="string" for="graph" id="d7"/> + <key attr.name="url" attr.type="string" for="edge" id="d8"/> + <key attr.name="description" attr.type="string" for="edge" id="d9"/> + <key for="edge" id="d10" yfiles.type="edgegraphics"/> + <graph edgedefault="directed" id="G"> + <data key="d7"/> + <node id="n0"> + <data key="d5"/> + <data key="d6"> + <y:ShapeNode> + <y:Geometry height="30.0" width="124.66666666666669" x="301.16666666666674" y="23.25"/> + <y:Fill color="#00FFFF" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="88.439453125" x="18.11360677083337" y="6.0185546875">Struts jsp view</y:NodeLabel> + <y:Shape type="rectangle"/> + </y:ShapeNode> + </data> + </node> + <node id="n1"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="28.0" width="129.0" x="512.7916666666667" y="449.25"/> + <y:Fill color="#FFCC00" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="114.18896484375" x="7.405517578125" y="3.0">Form ou bean Ui</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel/> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <node id="n2"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="28.0" width="149.0" x="302.50000000000006" y="449.25"/> + <y:Fill color="#FFCC00" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="130.267578125" x="9.3662109375" y="3.0">FormTagOu Tag Ui</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel/> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <node id="n3"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="28.0" width="149.0" x="302.50000000000006" y="366.0"/> + <y:Fill color="#FFCC00" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="136.21533203125" x="6.392333984375" y="3.0">AbstractClosingTag</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel/> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <node id="n4"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="28.0" width="149.00000000000003" x="302.50000000000006" y="292.0"/> + <y:Fill color="#FFCC00" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="107.1748046875" x="20.912597656250014" y="3.0">AbastractUiTag</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel/> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <node id="n5"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="28.0" width="173.0" x="290.50000000000006" y="223.0"/> + <y:Fill color="#FFCC00" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="158.908203125" x="7.0458984375" y="3.0">ComponentTagSupport</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel/> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <node id="n6"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="28.0" width="129.0" x="312.50000000000006" y="156.0"/> + <y:Fill color="#FFCC00" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="101.63330078125" x="13.683349609375" y="3.0">StrutsBodyTag</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel/> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <node id="n7"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="28.0" width="135.16666666666674" x="309.4166666666667" y="98.0"/> + <y:Fill color="#FFCC00" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="114.54443359375" x="10.311116536458371" y="3.0">BodyTagSupport</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel/> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <node id="n8"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="28.0" width="100.0" x="523.0" y="366.0"/> + <y:Fill color="#FFCC00" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="100.2685546875" x="-0.13427734375" y="3.0">ClosingUiBean</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel/> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <node id="n9"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="28.0" width="100.0" x="523.0" y="292.0"/> + <y:Fill color="#FFCC00" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="49.78564453125" x="25.107177734375" y="3.0">UiBean</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel/> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <node id="n10"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="28.0" width="100.0" x="523.0" y="223.0"/> + <y:Fill color="#FFCC00" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="81.0478515625" x="9.47607421875" y="3.0">Component</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel/> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <node id="n11"> + <data key="d5"/> + <data key="d6"> + <y:ShapeNode> + <y:Geometry height="30.0" width="160.0" x="503.08333333333337" y="163.0"/> + <y:Fill color="#00FFFF" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="71.869140625" x="44.0654296875" y="6.0185546875">Component</y:NodeLabel> + <y:Shape type="rectangle"/> + </y:ShapeNode> + </data> + </node> + <node id="n12"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLNote]]></data> + <data key="d6"> + <y:UMLNoteNode> + <y:Geometry height="28.0" width="100.0" x="524.3333333333334" y="10.5"/> + <y:Fill hasColor="false" transparent="false"/> + <y:BorderStyle hasColor="false" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="31.92578125" modelName="internal" modelPosition="tl" textColor="#000000" visible="true" width="393.47265625" x="4.0" y="4.0">On a une pile d'héritage par implémentation différente d'affichage +qui encapsule tous un élement de la pile component</y:NodeLabel> + </y:UMLNoteNode> + </data> + </node> + <node id="n13"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLNote]]></data> + <data key="d6"> + <y:UMLNoteNode> + <y:Geometry height="28.0" width="100.0" x="703.0833333333334" y="458.0"/> + <y:Fill hasColor="false" transparent="false"/> + <y:BorderStyle hasColor="false" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="31.92578125" modelName="internal" modelPosition="tl" textColor="#000000" visible="true" width="276.73046875" x="4.0" y="4.0">Porteur de l'annotation qui le désigne comme ! +élément de la tag lib tld tout ça</y:NodeLabel> + </y:UMLNoteNode> + </data> + </node> + <node id="n14"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLNote]]></data> + <data key="d6"> + <y:UMLNoteNode> + <y:Geometry height="28.0" width="100.0" x="53.08333333333337" y="485.5"/> + <y:Fill hasColor="false" transparent="false"/> + <y:BorderStyle hasColor="false" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="45.888671875" modelName="internal" modelPosition="br" textColor="#000000" visible="true" width="223.884765625" x="-127.884765625" y="-21.888671875">Finalement simple encapsulation +des éléments du form, sorte de proxy +avec des accesseurs</y:NodeLabel> + </y:UMLNoteNode> + </data> + </node> + <node id="n15"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLNote]]></data> + <data key="d6"> + <y:UMLNoteNode> + <y:Geometry height="28.0" width="100.0" x="503.08333333333337" y="578.75"/> + <y:Fill hasColor="false" transparent="false"/> + <y:BorderStyle hasColor="false" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="31.92578125" modelName="internal" modelPosition="b" textColor="#000000" visible="true" width="348.888671875" x="-124.4443359375" y="-7.92578125">Dans le form on désigne les template utilisé pour ouvrir +et ceux pour fermer, ensuite tout est écrit dans le template</y:NodeLabel> + </y:UMLNoteNode> + </data> + </node> + <node id="n16"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLNote]]></data> + <data key="d6"> + <y:UMLNoteNode> + <y:Geometry height="28.0" width="100.0" x="95.1666666666668" y="-8.0"/> + <y:Fill hasColor="false" transparent="false"/> + <y:BorderStyle hasColor="false" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="internal" modelPosition="b" textColor="#000000" visible="true" width="88.099609375" x="5.9501953125" y="6.037109375">Base Tag class</y:NodeLabel> + </y:UMLNoteNode> + </data> + </node> + <node id="n17"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLNote]]></data> + <data key="d6"> + <y:UMLNoteNode> + <y:Geometry height="28.0" width="100.0" x="17.833333333333485" y="300.75"/> + <y:Fill hasColor="false" transparent="false"/> + <y:BorderStyle hasColor="false" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="59.8515625" modelName="internal" modelPosition="r" textColor="#000000" visible="true" width="231.54296875" x="-135.54296875" y="-15.92578125">Lui il a tout les param générique +des composants html (id, name toutça) +il gère aussi les dynamique attribute +il ne fait rien d'autre</y:NodeLabel> + </y:UMLNoteNode> + </data> + </node> + <node id="n18"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLNote]]></data> + <data key="d6"> + <y:UMLNoteNode> + <y:Geometry height="28.0" width="100.0" x="31.666666666666856" y="366.0"/> + <y:Fill hasColor="false" transparent="false"/> + <y:BorderStyle hasColor="false" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="31.92578125" modelName="internal" modelPosition="tr" textColor="#000000" visible="true" width="259.52734375" x="-163.52734375" y="4.0">Lui contient des éléments pour les template +genre les truc pour les open template</y:NodeLabel> + </y:UMLNoteNode> + </data> + </node> + <node id="n19"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLNote]]></data> + <data key="d6"> + <y:UMLNoteNode> + <y:Geometry height="28.0" width="100.0" x="783.0000000000002" y="366.0"/> + <y:Fill hasColor="false" transparent="false"/> + <y:BorderStyle hasColor="false" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="31.92578125" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="198.279296875" x="-49.1396484375" y="-1.962890625">s'occupe des merges de template +et d'opération sur les templates</y:NodeLabel> + </y:UMLNoteNode> + </data> + </node> + <node id="n20"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLNote]]></data> + <data key="d6"> + <y:UMLNoteNode> + <y:Geometry height="28.0" width="100.0" x="734.3333333333336" y="292.0"/> + <y:Fill hasColor="false" transparent="false"/> + <y:BorderStyle hasColor="false" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="45.888671875" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="264.982421875" x="4.0" y="-8.9443359375">embarque tous les éléments générique +et embarque de la logique lié à la génération +du code html en fonction</y:NodeLabel> + </y:UMLNoteNode> + </data> + </node> + <node id="n21"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLNote]]></data> + <data key="d6"> + <y:UMLNoteNode> + <y:Geometry height="28.0" width="100.0" x="769.3219401041673" y="206.4501953125"/> + <y:Fill hasColor="false" transparent="false"/> + <y:BorderStyle hasColor="false" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="118.9609375" x="-9.48046875" y="5.0185546875">basique component</y:NodeLabel> + </y:UMLNoteNode> + </data> + </node> + <node id="n22"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLNote]]></data> + <data key="d6"> + <y:UMLNoteNode> + <y:Geometry height="28.0" width="100.0" x="62.666666666666856" y="80.400390625"/> + <y:Fill hasColor="false" transparent="false"/> + <y:BorderStyle hasColor="false" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="216.185546875" x="-58.0927734375" y="5.0185546875">élément commun pour les struts tag</y:NodeLabel> + </y:UMLNoteNode> + </data> + </node> + <node id="n23"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLNote]]></data> + <data key="d6"> + <y:UMLNoteNode> + <y:Geometry height="28.0" width="100.0" x="53.08333333333337" y="156.0"/> + <y:Fill hasColor="false" transparent="false"/> + <y:BorderStyle hasColor="false" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="45.888671875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="259.046875" x="-79.5234375" y="-8.9443359375">lui écrit réélement le tag dans la page +en se servant de l'héritage, des composants +etc etc, mais lui qui fait la méthode dotag</y:NodeLabel> + </y:UMLNoteNode> + </data> + </node> + <node id="n24"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLNote]]></data> + <data key="d6"> + <y:UMLNoteNode> + <y:Geometry height="28.0" width="100.0" x="831.5377604166684" y="533.0"/> + <y:Fill hasColor="false" transparent="false"/> + <y:BorderStyle hasColor="false" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="31.92578125" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="233.25390625" x="-66.626953125" y="-1.962890625">ça n'exclut pas de devoir déclarer dans +la tld TLD qui désigne la class FormTag</y:NodeLabel> + </y:UMLNoteNode> + </data> + </node> + <node id="n25"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="28.0" width="217.1875" x="51.729166666666856" y="705.9166666666667"/> + <y:Fill color="#FFCC00" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="199.837890625" x="8.6748046875" y="3.0">ClassComportementCommeIf</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel/> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <node id="n26"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLNote]]></data> + <data key="d6"> + <y:UMLNoteNode> + <y:Geometry height="28.0" width="100.0" x="-38.72363281249784" y="690.2509765625"/> + <y:Fill hasColor="false" transparent="false"/> + <y:BorderStyle hasColor="false" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="45.888671875" modelName="internal" modelPosition="br" textColor="#000000" visible="true" width="254.634765625" x="-158.634765625" y="-21.888671875">comme pour le formTag simple surcouche +qui encapsule un bean et expose des +accesseur</y:NodeLabel> + </y:UMLNoteNode> + </data> + </node> + <node id="n27"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="99.25" width="217.1875" x="673.7763671875022" y="634.6666666666667"/> + <y:Fill color="#FFCC00" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="171.73046875" x="22.728515625" y="3.0">ClassComportementBean</y:NodeLabel> + <y:UML clipContent="false" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel>+toto</y:AttributeLabel> + <y:MethodLabel>+bob() +</y:MethodLabel> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <edge id="e0" source="n1" target="n2"> + <data key="d8"/> + <data key="d9"><![CDATA[UMLhas]]></data> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="diamond"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="-32.64762369791663" y="2.0"/> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + <edge id="e1" source="n2" target="n3"> + <data key="d8"/> + <data key="d9"><![CDATA[UMLinherits]]></data> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="white_delta"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="2.000000000000057" y="-29.6009521484375"/> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + <edge id="e2" source="n3" target="n4"> + <data key="d8"/> + <data key="d9"><![CDATA[UMLinherits]]></data> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="white_delta"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="2.000000000000057" y="-25.0166015625"/> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + <edge id="e3" source="n4" target="n5"> + <data key="d8"/> + <data key="d9"><![CDATA[UMLinherits]]></data> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="white_delta"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="2.000000000000057" y="-22.51806640625"/> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + <edge id="e4" source="n5" target="n6"> + <data key="d8"/> + <data key="d9"><![CDATA[UMLinherits]]></data> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="white_delta"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="2.000000000000057" y="-21.53076171875"/> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + <edge id="e5" source="n6" target="n7"> + <data key="d8"/> + <data key="d9"><![CDATA[UMLinherits]]></data> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="white_delta"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="2.000000000000057" y="-16.9814453125"/> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + <edge id="e6" source="n1" target="n8"> + <data key="d8"/> + <data key="d9"><![CDATA[UMLinherits]]></data> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="white_delta"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="0.6802108504989519" y="-29.6009521484375"/> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + <edge id="e7" source="n8" target="n9"> + <data key="d8"/> + <data key="d9"><![CDATA[UMLinherits]]></data> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="white_delta"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="2.0" y="-25.0166015625"/> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + <edge id="e8" source="n9" target="n10"> + <data key="d8"/> + <data key="d9"><![CDATA[UMLinherits]]></data> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="white_delta"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="2.0" y="-22.51806640625"/> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + <edge id="e9" source="n12" target="n0"> + <data key="d8"/> + <data key="d9"><![CDATA[UMLinherits]]></data> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"> + <y:Point x="454.33333333333337" y="-4.25"/> + </y:Path> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="white_delta"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="-41.55271402994788" y="-6.99700927734375"/> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + <edge id="e10" source="n13" target="n1"> + <data key="d8"/> + <data key="d9"><![CDATA[UMLinherits]]></data> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="white_delta"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="-32.646484375" y="0.5741256565582944"/> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + <edge id="e11" source="n14" target="n2"> + <data key="d8"/> + <data key="d9"><![CDATA[UMLinherits]]></data> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="white_delta"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="72.71987406412765" y="-7.6237138516640925"/> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + <edge id="e12" source="n17" target="n4"> + <data key="d8"/> + <data key="d9"><![CDATA[UMLinherits]]></data> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="white_delta"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="90.32773844401052" y="-0.5564454276606625"/> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + <edge id="e13" source="n16" target="n7"> + <data key="d8"/> + <data key="d9"><![CDATA[UMLinherits]]></data> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="white_delta"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="83.32440694173187" y="41.926901207820364"/> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + <edge id="e14" source="n18" target="n3"> + <data key="d8"/> + <data key="d9"><![CDATA[UMLinherits]]></data> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="white_delta"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="83.41333516438814" y="2.0"/> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + <edge id="e15" source="n19" target="n8"> + <data key="d8"/> + <data key="d9"><![CDATA[UMLinherits]]></data> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="white_delta"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="-82.01220703124989" y="2.0"/> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + <edge id="e16" source="n20" target="n9"> + <data key="d8"/> + <data key="d9"><![CDATA[UMLinherits]]></data> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="white_delta"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="-57.64528401692701" y="2.0"/> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + <edge id="e17" source="n21" target="n10"> + <data key="d8"/> + <data key="d9"><![CDATA[UMLinherits]]></data> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="white_delta"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="-75.15690104166629" y="7.049612827345385"/> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + <edge id="e18" source="n22" target="n6"> + <data key="d8"/> + <data key="d9"><![CDATA[UMLinherits]]></data> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="white_delta"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="73.96724446614596" y="24.298711192262118"/> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + <edge id="e19" source="n23" target="n5"> + <data key="d8"/> + <data key="d9"><![CDATA[UMLinherits]]></data> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="white_delta"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="67.26130752183909" y="19.430512727993317"/> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + <edge id="e20" source="n24" target="n13"> + <data key="d8"/> + <data key="d9"><![CDATA[UMLinherits]]></data> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="white_delta"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="-42.23608398437409" y="-20.32470232676735"/> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + <edge id="e21" source="n15" target="n1"> + <data key="d8"/> + <data key="d9"><![CDATA[UMLinherits]]></data> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="white_delta"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="11.85977475278014" y="-52.7440185546875"/> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + <edge id="e22" source="n25" target="n5"> + <data key="d8"/> + <data key="d9"><![CDATA[UMLinherits]]></data> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="white_delta"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="104.95407516747201" y="-229.45774332682288"/> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + <edge id="e23" source="n26" target="n25"> + <data key="d8"/> + <data key="d9"><![CDATA[UMLinherits]]></data> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="white_delta"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="43.22639973958451" y="6.9637790719818895"/> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + <edge id="e24" source="n27" target="n25"> + <data key="d8"/> + <data key="d9"><![CDATA[UMLhas]]></data> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="diamond"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="-204.40073649088424" y="13.706134571743178"/> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + <edge id="e25" source="n27" target="n10"> + <data key="d8"/> + <data key="d9"><![CDATA[UMLinherits]]></data> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="white_delta"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="-86.86727807196348" y="-193.85331217447913"/> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + </graph> + <data key="d0"> + <y:Resources/> + </data> +</graphml> Added: trunk/wikitty-publication/src/site/rapport/image/howtoopen graphml.txt =================================================================== --- trunk/wikitty-publication/src/site/rapport/image/howtoopen graphml.txt (rev 0) +++ trunk/wikitty-publication/src/site/rapport/image/howtoopen graphml.txt 2011-08-29 09:11:40 UTC (rev 1194) @@ -0,0 +1,3 @@ +Simply use yed aviable at: + +http://www.yworks.com/en/products_yed_about.html Added: trunk/wikitty-publication/src/site/rapport/image/logofac.png =================================================================== (Binary files differ) Property changes on: trunk/wikitty-publication/src/site/rapport/image/logofac.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/wikitty-publication/src/site/rapport/image/logolutin.png =================================================================== (Binary files differ) Property changes on: trunk/wikitty-publication/src/site/rapport/image/logolutin.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/wikitty-publication/src/site/rapport/image/multicontext.graphml =================================================================== --- trunk/wikitty-publication/src/site/rapport/image/multicontext.graphml (rev 0) +++ trunk/wikitty-publication/src/site/rapport/image/multicontext.graphml 2011-08-29 09:11:40 UTC (rev 1194) @@ -0,0 +1,95 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd"> + <!--Created by yFiles for Java HEAD-Current--> + <key for="graphml" id="d0" yfiles.type="resources"/> + <key for="port" id="d1" yfiles.type="portgraphics"/> + <key for="port" id="d2" yfiles.type="portgeometry"/> + <key for="port" id="d3" yfiles.type="portuserdata"/> + <key attr.name="url" attr.type="string" for="node" id="d4"/> + <key attr.name="description" attr.type="string" for="node" id="d5"/> + <key for="node" id="d6" yfiles.type="nodegraphics"/> + <key attr.name="Description" attr.type="string" for="graph" id="d7"/> + <key attr.name="url" attr.type="string" for="edge" id="d8"/> + <key attr.name="description" attr.type="string" for="edge" id="d9"/> + <key for="edge" id="d10" yfiles.type="edgegraphics"/> + <graph edgedefault="directed" id="G"> + <data key="d7"/> + <node id="n0"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="28.0" width="106.0" x="460.0" y="94.0"/> + <y:Fill color="#FFCC00" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="97.97705078125" x="4.011474609375" y="3.0">WikittyService</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel/> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <node id="n1"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="28.0" width="100.0" x="352.0" y="193.0"/> + <y:Fill color="#FFCC00" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="83.6376953125" x="8.18115234375" y="3.0">MainService</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel/> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <node id="n2"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="28.0" width="131.0" x="568.0" y="193.0"/> + <y:Fill color="#FFCC00" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="106.39404296875" x="12.302978515625" y="3.0">FallbackService</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel/> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <edge id="e0" source="n2" target="n0"> + <data key="d8"/> + <data key="d9"><![CDATA[UMLhas]]></data> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="diamond"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="-45.2164306640625" y="-31.862461707404037"/> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + <edge id="e1" source="n1" target="n0"> + <data key="d8"/> + <data key="d9"><![CDATA[UMLhas]]></data> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="diamond"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="37.809326171875" y="-31.721831450591225"/> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + </graph> + <data key="d0"> + <y:Resources/> + </data> +</graphml> Added: trunk/wikitty-publication/src/site/rapport/image/multicontext.png =================================================================== (Binary files differ) Property changes on: trunk/wikitty-publication/src/site/rapport/image/multicontext.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/wikitty-publication/src/site/rapport/image/pileService.graphml =================================================================== --- trunk/wikitty-publication/src/site/rapport/image/pileService.graphml (rev 0) +++ trunk/wikitty-publication/src/site/rapport/image/pileService.graphml 2011-08-29 09:11:40 UTC (rev 1194) @@ -0,0 +1,167 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd"> + <!--Created by yFiles for Java HEAD-Current--> + <key for="graphml" id="d0" yfiles.type="resources"/> + <key for="port" id="d1" yfiles.type="portgraphics"/> + <key for="port" id="d2" yfiles.type="portgeometry"/> + <key for="port" id="d3" yfiles.type="portuserdata"/> + <key attr.name="url" attr.type="string" for="node" id="d4"/> + <key attr.name="description" attr.type="string" for="node" id="d5"/> + <key for="node" id="d6" yfiles.type="nodegraphics"/> + <key attr.name="Description" attr.type="string" for="graph" id="d7"/> + <key attr.name="url" attr.type="string" for="edge" id="d8"/> + <key attr.name="description" attr.type="string" for="edge" id="d9"/> + <key for="edge" id="d10" yfiles.type="edgegraphics"/> + <graph edgedefault="directed" id="G"> + <data key="d7"/> + <node id="n0"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="28.0" width="182.0" x="302.0" y="245.0"/> + <y:Fill color="#FF0000" color2="#808000" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="151.46240234375" x="15.268798828125" y="3.0">WikittyServiceSecurity</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel/> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <node id="n1"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="28.0" width="182.0" x="302.0" y="273.0"/> + <y:Fill color="#339966" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="146.568359375" x="17.7158203125" y="3.0">WikittyServiceCached</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel/> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <node id="n2"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="28.0" width="182.0" x="302.0" y="301.0"/> + <y:Fill color="#008080" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="148.91064453125" x="16.544677734375" y="3.0">WikittyServiceNotifier</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel/> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <node id="n3"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="28.0" width="182.0" x="302.0" y="329.0"/> + <y:Fill color="#3366FF" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="148.72021484375" x="16.639892578125" y="3.0">WikittyServiceStorage</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel/> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <node id="n4"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="28.0" width="182.0" x="302.0" y="217.0"/> + <y:Fill color="#CCFFFF" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="169.31201171875" x="6.343994140625" y="3.0">WikittyServiceAccessStat</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel/> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <node id="n5"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="28.0" width="152.0" x="165.0" y="132.0"/> + <y:Fill color="#FFCC00" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="124.19287109375" x="13.903564453125" y="3.0">Classe Utilisatrice</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel/> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <node id="n6"> + <data key="d5"/> + <data key="d6"> + <y:ShapeNode> + <y:Geometry height="30.0" width="30.0" x="500.0" y="187.0"/> + <y:Fill hasColor="false" transparent="false"/> + <y:BorderStyle hasColor="false" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="4.0" x="13.0" y="13.0"/> + <y:Shape type="rectangle"/> + </y:ShapeNode> + </data> + </node> + <node id="n7"> + <data key="d5"/> + <data key="d6"> + <y:ShapeNode> + <y:Geometry height="30.0" width="30.0" x="500.0" y="365.0"/> + <y:Fill hasColor="false" transparent="false"/> + <y:BorderStyle hasColor="false" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="4.0" x="13.0" y="13.0"/> + <y:Shape type="rectangle"/> + </y:ShapeNode> + </data> + </node> + <edge id="e0" source="n5" target="n4"> + <data key="d9"/> + <data key="d10"> + <y:ArcEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"> + <y:Point x="338.0678405761719" y="150.8257598876953"/> + </y:Path> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="white_delta"/> + <y:Arc height="43.164817810058594" ratio="0.9914273023605347" type="fixedRatio"/> + </y:ArcEdge> + </data> + </edge> + <edge id="e1" source="n6" target="n7"> + <data key="d8"/> + <data key="d9"><![CDATA[UMLimplements]]></data> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="dashed" width="1.0"/> + <y:Arrows source="none" target="white_delta"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="74.16015625" x="2.0" y="65.0185546875">Déléguation</y:EdgeLabel> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + </graph> + <data key="d0"> + <y:Resources/> + </data> +</graphml> Added: trunk/wikitty-publication/src/site/rapport/image/pileService.png =================================================================== (Binary files differ) Property changes on: trunk/wikitty-publication/src/site/rapport/image/pileService.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/wikitty-publication/src/site/rapport/image/propertiescontext.graphml =================================================================== --- trunk/wikitty-publication/src/site/rapport/image/propertiescontext.graphml (rev 0) +++ trunk/wikitty-publication/src/site/rapport/image/propertiescontext.graphml 2011-08-29 09:11:40 UTC (rev 1194) @@ -0,0 +1,95 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd"> + <!--Created by yFiles for Java HEAD-Current--> + <key for="graphml" id="d0" yfiles.type="resources"/> + <key for="port" id="d1" yfiles.type="portgraphics"/> + <key for="port" id="d2" yfiles.type="portgeometry"/> + <key for="port" id="d3" yfiles.type="portuserdata"/> + <key attr.name="url" attr.type="string" for="node" id="d4"/> + <key attr.name="description" attr.type="string" for="node" id="d5"/> + <key for="node" id="d6" yfiles.type="nodegraphics"/> + <key attr.name="Description" attr.type="string" for="graph" id="d7"/> + <key attr.name="url" attr.type="string" for="edge" id="d8"/> + <key attr.name="description" attr.type="string" for="edge" id="d9"/> + <key for="edge" id="d10" yfiles.type="edgegraphics"/> + <graph edgedefault="directed" id="G"> + <data key="d7"/> + <node id="n0"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="28.0" width="132.0" x="364.0" y="139.0"/> + <y:Fill color="#339966" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="121.78076171875" x="5.109619140625" y="3.0">DefaultProperties</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel/> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <node id="n1"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="28.0" width="142.0" x="496.0" y="191.0"/> + <y:Fill color="#FF9900" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="127.75390625" x="7.123046875" y="3.0">FallbackProperties</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel/> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <node id="n2"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="28.0" width="100.0" x="380.0" y="249.0"/> + <y:Fill color="#FFCC99" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="84.45654296875" x="7.771728515625" y="3.0">contextData</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel/> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <edge id="e0" source="n1" target="n0"> + <data key="d8"/> + <data key="d9"><![CDATA[UMLhas]]></data> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="diamond"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="-33.607666015625" y="-9.237946224908768"/> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + <edge id="e1" source="n2" target="n0"> + <data key="d8"/> + <data key="d9"><![CDATA[UMLinherits]]></data> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="white_delta"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="2.0" y="-43.00830078125"/> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + </graph> + <data key="d0"> + <y:Resources/> + </data> +</graphml> Added: trunk/wikitty-publication/src/site/rapport/image/propertiescontext.png =================================================================== (Binary files differ) Property changes on: trunk/wikitty-publication/src/site/rapport/image/propertiescontext.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/wikitty-publication/src/site/rapport/image/schema_wikitty_architecture.svg =================================================================== --- trunk/wikitty-publication/src/site/rapport/image/schema_wikitty_architecture.svg (rev 0) +++ trunk/wikitty-publication/src/site/rapport/image/schema_wikitty_architecture.svg 2011-08-29 09:11:40 UTC (rev 1194) @@ -0,0 +1,381 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="378.56122" + height="244.17543" + id="svg2" + version="1.1" + inkscape:version="0.47 r22583" + sodipodi:docname="schema_wikitty_architecture.svg" + inkscape:export-filename="/home/bleny/Bureau/schema_wikitty_architecture_technos.png" + inkscape:export-xdpi="281.88724" + inkscape:export-ydpi="281.88724"> + <defs + id="defs4"> + <linearGradient + id="linearGradient4075"> + <stop + style="stop-color:#12ebe7;stop-opacity:0.57647061;" + offset="0" + id="stop4077" /> + <stop + style="stop-color:#12ebe7;stop-opacity:0.08627451;" + offset="1" + id="stop4079" /> + </linearGradient> + <linearGradient + id="linearGradient4069"> + <stop + id="stop4071" + offset="0" + style="stop-color:#3eb43e;stop-opacity:0.57647061;" /> + <stop + id="stop4073" + offset="1" + style="stop-color:#3eb43e;stop-opacity:0.08627451;" /> + </linearGradient> + <linearGradient + id="linearGradient3946"> + <stop + id="stop3948" + offset="0" + style="stop-color:#fdff2e;stop-opacity:0.57647061;" /> + <stop + id="stop3950" + offset="1" + style="stop-color:#fdff2e;stop-opacity:0.08627451;" /> + </linearGradient> + <linearGradient + id="linearGradient3940"> + <stop + id="stop3942" + offset="0" + style="stop-color:#c154e7;stop-opacity:0.57647061;" /> + <stop + id="stop3944" + offset="1" + style="stop-color:#c154e7;stop-opacity:0.08627451;" /> + </linearGradient> + <linearGradient + id="linearGradient3934"> + <stop + id="stop3936" + offset="0" + style="stop-color:#ef595e;stop-opacity:0.57647061;" /> + <stop + id="stop3938" + offset="1" + style="stop-color:#ef595e;stop-opacity:0.08627451;" /> + </linearGradient> + <linearGradient + id="linearGradient3594"> + <stop + style="stop-color:#668ad3;stop-opacity:0.57480317;" + offset="0" + id="stop3596" /> + <stop + style="stop-color:#668ad3;stop-opacity:0.08661418;" + offset="1" + id="stop3598" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective10" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3934" + id="linearGradient3911" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(-58.314079,33.528902)" + x1="-15.395237" + y1="1.6637709" + x2="226.55714" + y2="103.30186" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3940" + id="linearGradient3918" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(-58.314079,66.64888)" + x1="-15.395237" + y1="1.6637709" + x2="226.55714" + y2="103.30186" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4069" + id="linearGradient4051" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(-58.314079,132.88889)" + x1="-15.395237" + y1="1.6637709" + x2="226.55714" + y2="103.30186" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4075" + id="linearGradient4063" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(45.368461,166.24253)" + x1="-15.395237" + y1="1.6637709" + x2="226.55714" + y2="103.30186" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3594" + id="linearGradient4081" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(217.00317,0.40887451)" + x1="-15.395237" + y1="1.6637709" + x2="226.55714" + y2="103.30186" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3946" + id="linearGradient2913" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(-58.314079,99.768872)" + x1="-15.395237" + y1="1.6637709" + x2="226.55714" + y2="103.30186" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1.8596728" + inkscape:cx="326.93923" + inkscape:cy="122.08772" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1680" + inkscape:window-height="975" + inkscape:window-x="0" + inkscape:window-y="24" + inkscape:window-maximized="1" /> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="couches" + inkscape:groupmode="layer" + id="layer1" + transform="translate(247.11814,-18.070878)"> + <g + id="g4040" + transform="translate(-275.31725,0)"> + <rect + ry="4.9650793" + style="fill:url(#linearGradient4081);fill-opacity:1;stroke:#000000;stroke-opacity:1" + y="43.983757" + x="256.13968" + height="28.914286" + width="150.12064" + id="rect2820" /> + <text + id="text2816" + y="61.751446" + x="286.35526" + style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + style="font-size:12px" + y="61.751446" + x="286.35526" + id="tspan2818" + sodipodi:role="line">Wikitty Service</tspan></text> + </g> + <rect + ry="4.9650793" + style="fill:url(#linearGradient3911);fill-opacity:1;stroke:#000000;stroke-opacity:1" + y="77.103783" + x="-19.17757" + height="28.914286" + width="150.12064" + id="rect3641" /> + <text + id="text3637" + y="96.274796" + x="31.009686" + style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + style="font-size:12px" + y="96.274796" + x="31.009686" + sodipodi:role="line" + id="tspan3782">Sécurité</tspan></text> + <rect + id="rect3651" + width="150.12064" + height="28.914286" + x="-19.17757" + y="110.22376" + style="fill:url(#linearGradient3918);fill-opacity:1;stroke:#000000;stroke-opacity:1" + ry="4.9650793" /> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="37.185467" + y="129.15454" + id="text3647"><tspan + sodipodi:role="line" + id="tspan3649" + x="37.185467" + y="129.15454" + style="font-size:12px">Cache</tspan></text> + <rect + ry="4.9650793" + style="fill:url(#linearGradient2913);fill-opacity:1;stroke:#000000;stroke-opacity:1" + y="143.34375" + x="-19.17757" + height="28.914286" + width="150.12064" + id="rect3661" /> + <text + id="text3657" + y="161.11145" + x="21.368084" + style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + style="font-size:12px" + y="161.11145" + x="21.368084" + id="tspan3659" + sodipodi:role="line">Notification</tspan></text> + <rect + id="rect3828" + width="150.12064" + height="85.282539" + x="-19.17757" + y="176.46378" + style="fill:url(#linearGradient4051);fill-opacity:1;stroke:#000000;stroke-opacity:1" + ry="4.9650793" /> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + x="21.277294" + y="194.23146" + id="text3830"><tspan + sodipodi:role="line" + id="tspan3832" + x="21.277294" + y="194.23146" + style="font-size:12px">Persistance</tspan></text> + <path + d="m 488.03811,153.09869 c 0,4.51647 -11.89928,8.17778 -26.57778,8.17778 -14.6785,0 -26.57778,-3.66131 -26.57778,-8.17778 0,-4.51646 11.89928,-8.17777 26.57778,-8.17777 14.6785,0 26.57778,3.66131 26.57778,8.17777 z" + sodipodi:ry="8.1777782" + sodipodi:rx="26.577778" + sodipodi:cy="153.09869" + sodipodi:cx="461.46033" + id="path4059" + style="fill:#ececec;stroke:#000000;stroke-opacity:1" + sodipodi:type="arc" + transform="translate(-444.71408,91.707937)" /> + <path + transform="translate(-444.71408,82.751288)" + sodipodi:type="arc" + style="fill:#ececec;stroke:#000000;stroke-opacity:1" + id="path4057" + sodipodi:cx="461.46033" + sodipodi:cy="153.09869" + sodipodi:rx="26.577778" + sodipodi:ry="8.1777782" + d="m 488.03811,153.09869 c 0,4.51647 -11.89928,8.17778 -26.57778,8.17778 -14.6785,0 -26.57778,-3.66131 -26.57778,-8.17778 0,-4.51646 11.89928,-8.17777 26.57778,-8.17777 14.6785,0 26.57778,3.66131 26.57778,8.17777 z" /> + <path + d="m 488.03811,153.09869 c 0,4.51647 -11.89928,8.17778 -26.57778,8.17778 -14.6785,0 -26.57778,-3.66131 -26.57778,-8.17778 0,-4.51646 11.89928,-8.17777 26.57778,-8.17777 14.6785,0 26.57778,3.66131 26.57778,8.17777 z" + sodipodi:ry="8.1777782" + sodipodi:rx="26.577778" + sodipodi:cy="153.09869" + sodipodi:cx="461.46033" + id="path4055" + style="fill:#ececec;stroke:#000000;stroke-opacity:1" + sodipodi:type="arc" + transform="translate(-444.71408,73.794682)" /> + <path + sodipodi:type="arc" + style="fill:#ececec;stroke:#000000;stroke-opacity:1" + id="path4053" + sodipodi:cx="461.46033" + sodipodi:cy="153.09869" + sodipodi:rx="26.577778" + sodipodi:ry="8.1777782" + d="m 488.03811,153.09869 c 0,4.51647 -11.89928,8.17778 -26.57778,8.17778 -14.6785,0 -26.57778,-3.66131 -26.57778,-8.17778 0,-4.51646 11.89928,-8.17777 26.57778,-8.17777 14.6785,0 26.57778,3.66131 26.57778,8.17777 z" + transform="translate(-444.71408,64.838095)" /> + <rect + ry="4.9650793" + style="fill:url(#linearGradient4063);fill-opacity:1;stroke:#000000;stroke-opacity:1" + y="209.81741" + x="51.793835" + height="28.914286" + width="71.555511" + id="rect4061" /> + <text + id="text4065" + y="227.81876" + x="55.799145" + style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + style="font-size:12px" + y="227.81876" + x="55.799145" + id="tspan4067" + sodipodi:role="line">Indexation</tspan></text> + <g + id="g4109" + transform="translate(30.372791,-27.900587)"> + <path + id="path4083" + d="m -225.58468,46.471515 c -16.68438,0 -30.61989,6.194421 -34,14.46875 -10.46987,4.690678 -17.40625,12.80906 -17.40625,22.0625 0,8.071994 5.29836,15.298526 13.59375,20.124995 -0.002,0.01 0.002,0.0213 0,0.0312 -0.10912,0.62925 -0.15625,1.2914 -0.15625,1.9375 0,10.33773 14.31659,18.71875 31.96875,18.71875 10.44893,0 19.69924,-2.95942 25.53125,-7.5 4.3808,1.38215 9.47106,2.1875 14.90625,2.1875 15.83384,0 28.77358,-6.72597 29.625,-15.1875 18.38337,-0.0827 33.21875,-7.329033 33.21875,-16.249995 0,-5.619342 -5.88789,-10.551604 -14.84375,-13.46875 0.003,-0.103705 0.0312,-0.208457 0.0312,-0.3125 0,-12.288245 -20.01349,-22.25 -44.6875,-22.25 -4.47883,0 -8.79573,0.357956 -12.875,0.96875 -6.31832,-3.421172 -15.14045,-5.53125 -24.90625,-5.53125 z" + style="fill:#e3dbdb;stroke:#000000;stroke-opacity:1" /> + <text + id="text4100" + y="76.368225" + x="-209.19235" + style="font-size:40px;font-style:normal;font-weight:normal;fill:#483737;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" + xml:space="preserve"><tspan + style="font-size:12px;font-weight:bold;text-align:center;text-anchor:middle;fill:#483737;-inkscape-font-specification:Bitstream Charter Bold" + y="76.368225" + x="-209.19235" + id="tspan4102" + sodipodi:role="line">Application</tspan><tspan + id="tspan4104" + style="font-size:12px;font-weight:bold;text-align:center;text-anchor:middle;fill:#483737;-inkscape-font-specification:Bitstream Charter Bold" + y="91.368225" + x="-209.19235" + sodipodi:role="line">Utilisateur</tspan></text> + </g> + <path + style="fill:#ececec;stroke:#000000;stroke-opacity:1" + d="m -24.59375,5.6875 c -0.0729,0.017576 -0.106515,0.065035 -0.15625,0.09375 -0.5357,0.309289 -0.88742,2.43629 -1.0625,5.09375 l -38.8125,0 0,8.15625 38.8125,0 c 0.17485,2.662148 0.52614,4.81533 1.0625,5.125 1.59155,0.91888 15.90625,-7.349739 15.90625,-9.1875 0,-1.722901 -12.58368,-9.123093 -15.46875,-9.28125 -0.09617,-0.00527 -0.208351,-0.017576 -0.28125,0 z" + transform="translate(-22.696829,43.483757)" + id="path4106" /> + </g> +</svg> Added: trunk/wikitty-publication/src/site/rapport/image/strutsexplain.graphml =================================================================== --- trunk/wikitty-publication/src/site/rapport/image/strutsexplain.graphml (rev 0) +++ trunk/wikitty-publication/src/site/rapport/image/strutsexplain.graphml 2011-08-29 09:11:40 UTC (rev 1194) @@ -0,0 +1,333 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd"> + <!--Created by yFiles for Java HEAD-Current--> + <key for="graphml" id="d0" yfiles.type="resources"/> + <key for="port" id="d1" yfiles.type="portgraphics"/> + <key for="port" id="d2" yfiles.type="portgeometry"/> + <key for="port" id="d3" yfiles.type="portuserdata"/> + <key attr.name="url" attr.type="string" for="node" id="d4"/> + <key attr.name="description" attr.type="string" for="node" id="d5"/> + <key for="node" id="d6" yfiles.type="nodegraphics"/> + <key attr.name="Description" attr.type="string" for="graph" id="d7"/> + <key attr.name="url" attr.type="string" for="edge" id="d8"/> + <key attr.name="description" attr.type="string" for="edge" id="d9"/> + <key for="edge" id="d10" yfiles.type="edgegraphics"/> + <graph edgedefault="directed" id="G"> + <data key="d7"/> + <node id="n0" yfiles.foldertype="group"> + <data key="d4"/> + <data key="d5"/> + <data key="d6"> + <y:ProxyAutoBoundsNode> + <y:Realizers active="0"> + <y:GroupNode> + <y:Geometry height="250.0" width="278.0" x="462.0" y="81.33333333333334"/> + <y:Fill color="#F5F5F5" transparent="false"/> + <y:BorderStyle color="#000000" type="dashed" width="1.0"/> + <y:NodeLabel alignment="right" autoSizePolicy="node_width" backgroundColor="#EBEBEB" borderDistance="0.0" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasLineColor="false" height="21.45361328125" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="278.0" x="0.0" y="0.0">Struts</y:NodeLabel> + <y:Shape type="roundrectangle"/> + <y:State closed="false" innerGraphDisplayEnabled="false"/> + <y:Insets bottom="15" bottomF="15.0" left="15" leftF="15.0" right="15" rightF="15.0" top="15" topF="15.0"/> + <y:BorderInsets bottom="0" bottomF="0.0" left="0" leftF="0.0" right="0" rightF="0.0" top="0" topF="0.0"/> + </y:GroupNode> + <y:GroupNode> + <y:Geometry height="50.0" width="50.0" x="462.0" y="81.33333333333334"/> + <y:Fill color="#F5F5F5" transparent="false"/> + <y:BorderStyle color="#000000" type="dashed" width="1.0"/> + <y:NodeLabel alignment="right" autoSizePolicy="node_width" backgroundColor="#EBEBEB" borderDistance="0.0" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasLineColor="false" height="21.45361328125" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="50.0" x="0.0" y="0.0">1</y:NodeLabel> + <y:Shape type="roundrectangle"/> + <y:State closed="true" innerGraphDisplayEnabled="false"/> + <y:Insets bottom="15" bottomF="15.0" left="15" leftF="15.0" right="15" rightF="15.0" top="15" topF="15.0"/> + <y:BorderInsets bottom="0" bottomF="0.0" left="0" leftF="0.0" right="0" rightF="0.0" top="0" topF="0.0"/> + </y:GroupNode> + </y:Realizers> + </y:ProxyAutoBoundsNode> + </data> + <graph edgedefault="directed" id="n0:"/> + </node> + <node id="n1"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="28.0" width="100.0" x="482.0" y="126.0"/> + <y:Fill color="#333399" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="78.27392578125" x="10.863037109375" y="3.0">Interceptor</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel/> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <node id="n2"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="28.0" width="100.0" x="482.0" y="153.0"/> + <y:Fill color="#003366" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="78.27392578125" x="10.863037109375" y="3.0">Interceptor</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel/> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <node id="n3"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="28.0" width="100.0" x="482.0" y="181.0"/> + <y:Fill color="#008080" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="78.27392578125" x="10.863037109375" y="3.0">Interceptor</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel/> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <node id="n4"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="28.0" width="100.0" x="482.0" y="208.0"/> + <y:Fill color="#00CCFF" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="78.27392578125" x="10.863037109375" y="3.0">Interceptor</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel/> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <node id="n5"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLActor]]></data> + <data key="d6"> + <y:SVGNode> + <y:Geometry height="100.0" width="60.0" x="181.0" y="172.0"/> + <y:Fill color="#FFCC00" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="eight_pos" modelPosition="s" textColor="#000000" visible="true" width="37.794921875" x="11.1025390625" y="104.0">Actor</y:NodeLabel> + <y:SVGNodeProperties usingVisualBounds="false"/> + <y:SVGModel svgBoundsPolicy="0"> + <y:SVGContent refid="1"/> + </y:SVGModel> + </y:SVGNode> + </data> + </node> + <node id="n6"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="28.0" width="100.0" x="482.0" y="281.0"/> + <y:Fill color="#FF00FF" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="46.82763671875" x="26.586181640625" y="3.0">Action</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel/> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <node id="n7"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="28.0" width="100.0" x="552.0" y="126.0"/> + <y:Fill hasColor="false" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="false" width="39.83251953125" x="30.083740234375" y="3.0">Class</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel/> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <node id="n8"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="28.0" width="100.0" x="552.0" y="281.0"/> + <y:Fill hasColor="false" transparent="false"/> + <y:BorderStyle hasColor="false" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="false" width="39.83251953125" x="30.083740234375" y="3.0">Class</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel/> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <node id="n9"> + <data key="d4"/> + <data key="d5"><![CDATA[UMLClass]]></data> + <data key="d6"> + <y:UMLClassNode> + <y:Geometry height="28.0" width="100.0" x="435.0" y="81.33333333333333"/> + <y:Fill hasColor="false" transparent="false"/> + <y:BorderStyle color="#000000" type="line" width="1.0"/> + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="19.12646484375" modelName="internal" modelPosition="t" textColor="#000000" visible="false" width="39.83251953125" x="30.083740234375" y="3.0">Class</y:NodeLabel> + <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="true"> + <y:AttributeLabel/> + <y:MethodLabel/> + </y:UML> + </y:UMLClassNode> + </data> + </node> + <edge id="e0" source="n7" target="n8"> + <data key="d8"/> + <data key="d9"><![CDATA[UMLinherits]]></data> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="white_delta"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="2.0" y="61.536376953125"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="128.734375" x="2.0" y="54.554931640625">Chemin de la requete</y:EdgeLabel> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + <edge id="e1" source="n5" target="n9"> + <data key="d8"/> + <data key="d9"><![CDATA[UMLinherits]]></data> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="white_delta"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="six_pos" modelPosition="thead" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="265.111328125" x="-114.15627826891443" y="-88.67203776041669">wp.org/codelutin/chorem/view/menu.action</y:EdgeLabel> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + <edge id="e2" source="n6" target="n5"> + <data key="d8"/> + <data key="d9"><![CDATA[UMLinherits]]></data> + <data key="d10"> + <y:PolyLineEdge> + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> + <y:LineStyle color="#000000" type="line" width="1.0"/> + <y:Arrows source="none" target="white_delta"/> + <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="17.962890625" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="58.708984375" x="-149.8157958984375" y="-18.718994520906335">Page web</y:EdgeLabel> + <y:BendStyle smoothed="false"/> + </y:PolyLineEdge> + </data> + </edge> + </graph> + <data key="d0"> + <y:Resources> + <y:Resource id="1"><?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://web.resource.org/cc/" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="41" + height="68.997391" + id="svg2" + sodipodi:version="0.32" + inkscape:version="0.45.1" + sodipodi:docbase="C:\Daten\alberts\projects\yfx" + sodipodi:docname="uml_actor.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + version="1.0"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="2.934351" + inkscape:cx="144.21983" + inkscape:cy="28.533711" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:window-width="1280" + inkscape:window-height="968" + inkscape:window-x="-4" + inkscape:window-y="-4" + width="48px" + height="48px" + showborder="false" + inkscape:showpageshadow="false" /> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Ebene 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-29.5,-42.959476)"> + <a + id="a3142" + transform="matrix(1.0873906,0,0,1,-4.4741999,0)"> + <path + transform="translate(11.586889,5.2908993)" + d="M 47.02914 47.36993 A 8.5197716 9.2013531 0 1 1 29.989597,47.36993 A 8.5197716 9.2013531 0 1 1 47.02914 47.36993 z" + sodipodi:ry="9.2013531" + sodipodi:rx="8.5197716" + sodipodi:cy="47.36993" + sodipodi:cx="38.509369" + id="path2160" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + sodipodi:type="arc" /> + </a> + <path + sodipodi:type="arc" + style="fill:none" + id="path3134" + sodipodi:cx="43.962021" + sodipodi:cy="48.392303" + sodipodi:rx="3.7486994" + sodipodi:ry="0" + d="M 47.71072 48.392303 A 3.7486994 0 0 1 1 40.213321,48.392303 A 3.7486994 0 0 1 1 47.71072 48.392303 z" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.24319649px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 50,61.33709 C 50,91.363211 50,92.247838 50,92.247838" + id="path3136" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 69.760668,72.362183 C 69.760668,72.362183 69.760668,72.362183 50.239332,72.362183 C 30.239332,72.362183 30.239332,72.362183 30.239332,72.362183 L 30.239332,72.362183" + id="path3138" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 30,111.45687 C 30,111.45687 30,111.45687 50,92.013532 C 70,111.45687 70,111.45687 70,111.45687" + id="path3140" /> + </g> +</svg> +</y:Resource> + </y:Resources> + </data> +</graphml> Added: trunk/wikitty-publication/src/site/rapport/image/strutsexplain.png =================================================================== (Binary files differ) Property changes on: trunk/wikitty-publication/src/site/rapport/image/strutsexplain.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/wikitty-publication/src/site/rapport/image/wikittypubuml.png =================================================================== (Binary files differ) Property changes on: trunk/wikitty-publication/src/site/rapport/image/wikittypubuml.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/wikitty-publication/src/site/rapport/part/annexes.tex =================================================================== --- trunk/wikitty-publication/src/site/rapport/part/annexes.tex (rev 0) +++ trunk/wikitty-publication/src/site/rapport/part/annexes.tex 2011-08-29 09:11:40 UTC (rev 1194) @@ -0,0 +1,379 @@ +\section{Annexes} + +\subsection*{Bindings} + +Voici les éléments de bindings disponible dans le moteur d'évaluation: + +\begin{itemize} +\item wpEval, correspond à l'instance de la classe java qui évalue couramment le WikittyPub +\item wpSubContext, correspond à l'instance de collection contenant +\item wpPage, nom de la page +\item wpWikitty, wikitty en cours d'évaluation +\item wpContext, correspond à l'instance de la classe java du context (voir interface) +\end{itemize} + +Interface du context: +\lstset{ % +language=JAVA, % the language of the code +basicstyle=\footnotesize, % the size of the fonts that are used for the code % where to put the line-numbers + % the size of the fonts that are used for the line-numbers + % the step between two line-numbers. If it's 1, each line +keywordstyle=\color[rgb]{1,0,1}, + % will be numbered +numbersep=5pt, % how far the line-numbers are from the code +showspaces=false, % show spaces adding particular underscores +showstringspaces=false, % underline spaces within strings +showtabs=false, % show tabs within strings adding particular underscores +tabsize=2, % sets default tabsize to 2 spaces +captionpos=b, % sets the caption-position to bottom +breaklines=true, % sets automatic line breaking +breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace +title=\lstname, % show the filename of files included with \lstinputlisting; + % also try caption instead of title +escapeinside={\%*}{*)}, % if you want to add a comment with +morekeywords={project,modelVersion,groupId,description,build, plugin,plugins,configuration, applicationName, wikittyServiceUrl, artifactId,serverID,uploadUrl} +} + + +\begin{lstlisting} +package org.nuiton.wikitty.publication; + +import org.nuiton.wikitty.WikittyProxy; +import org.nuiton.wikitty.WikittyService; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.List; +import java.util.Map; + +public interface PublicationContext { + + HttpServletRequest getRequest(); + HttpServletResponse getResponse(); + WikittyProxy getWikittyProxy(); + String makeUrl(String url); + WikittyService getWikittyService(); + List<String> getMandatoryArguments(); + String getArgument(String name, String defaultValue); + String getContentType(); + void setContentType(String contentType); + String toString(); + Map<String,String> getArguments(); +} + +\end{lstlisting} + +Et donc dans le code des WikittyPubText à n'importe quel moment on peut faire +appel à ces éléments pour invoquer des méthodes dessus. Mais on peut aussi +instancier des classes et les utiliser comme ceci: + +\begin{lstlisting} + + importPackage(org.nuiton.wikitty.entities); + var ressource = new WikittyRessourceImpl(); + + ressource.setName(wpContext.getArgument("nom")); + ressource.setDescription(wpContext.getArgument("description")); +\end{lstlisting} + +On importe le package de la classe, et on peut en créer une nouvelle instance, +et faire tout ce que l'on pourrait faire en java dessus, tout naturellement. +\clearpage + +\subsection*{struts.xml} + +Fichier de configuration xml de struts (partiel) avec des intercepteurs et quelques +actions, et le mécanisme d'héritage de package: + +\lstset{ % +language=XML, % the language of the code +basicstyle=\footnotesize, % the size of the fonts that are used for the code % where to put the line-numbers + % the size of the fonts that are used for the line-numbers + % the step between two line-numbers. If it's 1, each line +keywordstyle=\color[rgb]{0,0,1}, + % will be numbered +numbersep=5pt, % how far the line-numbers are from the code +showspaces=false, % show spaces adding particular underscores +showstringspaces=false, % underline spaces within strings +showtabs=false, % show tabs within strings adding particular underscores +tabsize=2, % sets default tabsize to 2 spaces +captionpos=b, % sets the caption-position to bottom +breaklines=true, % sets automatic line breaking +breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace +title=\lstname, % show the filename of files included with \lstinputlisting; + % also try caption instead of title +escapeinside={\%*}{*)}, % if you want to add a comment with +morekeywords={project,modelVersion,groupId,description,build, plugin,plugins,configuration, applicationName, wikittyServiceUrl, artifactId,serverID,uploadUrl +,constant,package,interceptors,interceptor,param,action, struts, result} +} + + + +\begin{lstlisting} +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE struts PUBLIC + "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" + "http://struts.apache.org/dtds/struts-2.0.dtd"> +<struts> + <constant name="struts.ognl.allowStaticMethodAccess" value="true" /> + <constant name="struts.enable.SlashesInActionNames" value="true" /> + + <!-- Define a package for the restricted area must be logged to access --> + <package name="restrictedArea" extends="publicArea"> + <interceptors> + <interceptor name="login" + class="org.nuiton.wikitty.publication.ui.interceptor.LoginInterceptor"> + <param name="error">/login_input.action</param> + </interceptor> + <interceptor-stack name="restrictedAreaStack"> + <interceptor-ref name="login" /> + <interceptor-ref name="publicAreaStack" /> + </interceptor-stack> + </interceptors> + <default-interceptor-ref name="restrictedAreaStack" /> + </package> + <!-- Action aviable only to logged user extends="restrictedArea" --> + <package name="publication" extends="publicArea"> + <action name="*/*/raw/*" + class="org.nuiton.wikitty.publication.ui.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.ui.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> +</struts> +\end{lstlisting} + +\clearpage + + +\subsection*{Décoration de code} + +Il y a une interface commune pour la décoration des WikittyPubText en fonction +de leur type, si ils sont en java ou dans un langage interprété par un +script engine. + + +\subsubsection*{Langage de script} + +\lstset{ % +language=JAVA, % the language of the code +basicstyle=\footnotesize, % the size of the fonts that are used for the code % where to put the line-numbers + % the size of the fonts that are used for the line-numbers + % the step between two line-numbers. If it's 1, each line +keywordstyle=\color[rgb]{1,0,1}, + % will be numbered +numbersep=5pt, % how far the line-numbers are from the code +showspaces=false, % show spaces adding particular underscores +showstringspaces=false, % underline spaces within strings +showtabs=false, % show tabs within strings adding particular underscores +tabsize=2, % sets default tabsize to 2 spaces +captionpos=b, % sets the caption-position to bottom +breaklines=true, % sets automatic line breaking +breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace +title=\lstname, % show the filename of files included with \lstinputlisting; + % also try caption instead of title +escapeinside={\%*}{*)}, % if you want to add a comment with +morekeywords={project,modelVersion,groupId,description,build, plugin,plugins,configuration, applicationName, wikittyServiceUrl, artifactId,serverID,uploadUrl} +} + +Un exemple avec un WikittyPubText de type mime text/javascript, assez simple +juste une page présentant deux liens. + +\begin{lstlisting} +try { + +var result = +" <a href='"+wpContext.makeUrl("/eval/Wiki/Home")+"'>Home</a>\n"+ +" <a href='"+wpContext.makeUrl("/eval/Wiki/Stat")+"'>Stat</a>\n"; + +wpContext.setContentType("text/html"); +result; +} catch (eee) { +wpContext.setContentType("text/plain"); +eee +} +\end{lstlisting} + + +La classe java correspondante après décoration, le javascript est toujours là +mais encapsulé dans un chaine de caractère, prêt à être interprété. + +\begin{lstlisting} +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.wikitty.ScriptEvaluator; +import org.nuiton.wikitty.publication.AbstractDecoredClass; +import org.nuiton.wikitty.entities.*; +import org.nuiton.wikitty.publication.entities.*; +import org.nuiton.wikitty.publication.*; +import java.util.*; + +public class WikiMenu extends AbstractDecoredClass { + public Object eval(Map<String, Object> bindings) throws Exception { + Object result = null; + String content = "try {\n\nvar result =\n\" <a href='\"+wpContext.makeUrl(\"/eval/Wiki/Home\")+\"'>Home</a>\\n\"+\n\" <a href='\"+wpContext.makeUrl(\"/eval/Wiki/Stat\")+\"'>Stat</a>\\n\";\n\nwpContext.setContentType(\"text/html\");\nresult;\n} catch (eee) {\nwpContext.setContentType(\"text/plain\");\neee\n}\n"; + String mimeType = "text/javascript"; + String criteriaName = "elt_id:b48bb6c6-b38d-4abe-b8d4-97ad29457fa1"; + result = ScriptEvaluator.eval(null, criteriaName, content, mimeType, + bindings); + return result; + } +} +\end{lstlisting} + + +\subsubsection*{Java} + +Pour un WikittyPubText contenant du java c'est un peu différent, on voit +que le code java pour le moment est limité qu'aux corps de méthodes. + +\begin{lstlisting} +return "Hello world on "+wpPage; +\end{lstlisting} + +Dans la classe décorée, finale qui sera compilée on voit que les éléments +contenu dans les bindings auront été dépilé pour que le code java écrit qui les +utilise puissent fonctionner simplement. + +\begin{lstlisting} +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.wikitty.ScriptEvaluator; +import org.nuiton.wikitty.publication.AbstractDecoredClass; +import org.nuiton.wikitty.entities.*; +import org.nuiton.wikitty.publication.entities.*; +import org.nuiton.wikitty.publication.*; +import java.util.*; + +public class hello extends AbstractDecoredClass { + public Object eval(Map<String, Object> bindings) throws Exception { + PublicationContext wpContext = (PublicationContext) bindings + .get("wpContext"); + EvalInterface wpEval = (EvalInterface) bindings.get("wpEval"); + String wpPage = (String) bindings.get("wpPage"); + List<String> wpSubContext = (List<String>) bindings.get("wpSubContext"); + Wikitty wpWikitty = (Wikitty) bindings.get("wpWikitty"); + return "Hello world on " + wpPage; + + } +} +\end{lstlisting} + + + +\lstset{ % +language=HTML, % the language of the code +basicstyle=\footnotesize, % the size of the fonts that are used for the code % where to put the line-numbers + % the size of the fonts that are used for the line-numbers + % the step between two line-numbers. If it's 1, each line +keywordstyle=\color[rgb]{1,0,1}, + % will be numbered +numbersep=5pt, % how far the line-numbers are from the code +showspaces=false, % show spaces adding particular underscores +showstringspaces=false, % underline spaces within strings +showtabs=false, % show tabs within strings adding particular underscores +tabsize=2, % sets default tabsize to 2 spaces +captionpos=b, % sets the caption-position to bottom +breaklines=true, % sets automatic line breaking +breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace +title=\lstname, % show the filename of files included with \lstinputlisting; + % also try caption instead of title +escapeinside={\%*}{*)}, % if you want to add a comment with +morekeywords={project,modelVersion,groupId,description,build, plugin,plugins,configuration, applicationName, wikittyServiceUrl, artifactId,serverID,uploadUrl} +} + + + +\subsubsection*{Interface graphique} + +Pour intégrer plus facilement des interfaces graphiques, il y a le mécanisme +d'inversion, pour finalement avoir le code de l'interface dans celui du langage +de script. + +Un exemple avec un WikittyPubText de mimeType "text/html.javascript" avec ce contenu: + +\begin{lstlisting} +<html> +<body> +<h1> Bonjour, ceci est une page de test qui contient du html et des balises comme dans une jsp</h1> + +<p>.Le but est de pouvoir mettre du html facilement avec du code aussi. +</p> + +<p>ici on va afficher le nom de la page qui est dans l'adresse et dans le binding <%=wpPage%>.</p> + +Op le logo: +<img src='<%=wpContext.makeUrl("/raw/Logo")%>'/> +<% +wp_result += "<p>Ici c'est du code js</p>"; + +if (0<1){ +wp_result += "on est rentre dans un if"; +} +%> +</body> +</html> +\end{lstlisting} +Après transformation il deviendra de mimeType "text/javascript". Et tout ce qui +était entre les balises \verb!<%! et \verb!%>! est intégré tel quel au script, alors +que ce qui était autour est maintenant entouré pour être dans une variable de retour.\\ + +\lstset{ % +language=JAVA, % the language of the code +basicstyle=\footnotesize, % the size of the fonts that are used for the code % where to put the line-numbers + % the size of the fonts that are used for the line-numbers + % the step between two line-numbers. If it's 1, each line +keywordstyle=\color[rgb]{1,0,1}, + % will be numbered +numbersep=5pt, % how far the line-numbers are from the code +showspaces=false, % show spaces adding particular underscores +showstringspaces=false, % underline spaces within strings +showtabs=false, % show tabs within strings adding particular underscores +tabsize=2, % sets default tabsize to 2 spaces +captionpos=b, % sets the caption-position to bottom +breaklines=true, % sets automatic line breaking +breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace +title=\lstname, % show the filename of files included with \lstinputlisting; + % also try caption instead of title +escapeinside={\%*}{*)}, % if you want to add a comment with +morekeywords={project,modelVersion,groupId,description,build, plugin,plugins,configuration, applicationName, wikittyServiceUrl, artifactId,serverID,uploadUrl,var, if} +} + + +\begin{lstlisting} +wpContext.setContentType("text/html"); +var wp_result="<html>\n"; +wp_result+="<head>\n"; +wp_result+="</head>\n"; +wp_result+="<body>\n"; +wp_result+="<h1> Bonjour, ceci est une page de test qui contient du html et des balises comme dans une jsp</h1>\n"; +wp_result+="<p>Le but est de pouvoir mettre du html facilement avec du code aussi.\n"; +wp_result+="</p>\n"; +wp_result+="<p>ici on va afficher le nom de la page qui est dans l'adresse et dans le binding "+wpPage+".</p>\n"; +wp_result+="Op le logo:\n"; +wp_result+="<img src='"+wpContext.makeUrl("/raw/Logo")+"'/>"; +result += "<p>Ici c'est du code js</p>"; +if (0<1){ +result+= "on est rentre dans un if"; +} +wp_result+="</body>\n"; +wp_result+="</html>"; +\end{lstlisting} + + Added: trunk/wikitty-publication/src/site/rapport/part/codelutin.tex =================================================================== --- trunk/wikitty-publication/src/site/rapport/part/codelutin.tex (rev 0) +++ trunk/wikitty-publication/src/site/rapport/part/codelutin.tex 2011-08-29 09:11:40 UTC (rev 1194) @@ -0,0 +1,58 @@ +\section{Code Lutin} + +\subsection{Présentation de l'entreprise} + + +Code Lutin est une Société de Service en Logiciel Libre créée en 2002, elle est +implantée à St Sébastien sur Loire, et travail principalement pour des clients +dans la région du grand ouest. + +L'entreprise s'est spécialisée autour des technologies Java JEE et UML: +conception, architectures JEE, outils JEE, MDA (Model Driven Architecture), +développement/migration d’applications JEE, formation. + +L'entreprise étant une SSLL elle travaille uniquement avec des outils issue du +logiciel libre, et autant que cela est possible les projets sur lesquels elle +va être amené à travailler seront des logiciels libres. + +Code Lutin offre les services de : +\begin{itemize} +\item développement de logiciel (forfait ou régie) +\item l’intégration et de la maintenance de systèmes clés en main +\item support +\item conseil et de la veille technologique +\end{itemize} + +Services principalement autour des technologies Java. + +%rajuter quelque chose sur le mode de fonctionnement ? A base que ce sont les +%employés qui finalement prennent toutes les déscision. + +\subsection{Acteur du monde libre} + +Code Lutin se veut acteur du monde du logiciel libre, l'entreprise soutient des +projets du monde libre. Elle est membre de l'april, une association qui à pour +but de promouvoir et défendre le logiciel libre. + +L'entreprise est membre de Alliance libre une association nantaises qui regroupe +les entreprises de la région qui travail pour le libre. Le but étant de +promouvoir le logiciel libre dans l'ouest. + +L'entreprise fait aussi partit du réseau libre entreprise qui regroupe des +entreprises françaises proches du logiciel livre, et qui partagent des modes de +fonctionnement similaire et les mêmes valeurs. + + +\subsection{Leurs projets} + +En plus de faire du logiciel au forfait et en régie, l'entreprise investie une +grande force dans la recherche et développement, en travaillant sur leurs librairies +qu'ils utilisent pour leurs divers projet. Mais aussi en travaillant sur des +solutions logiciels qui seront d'abord utilisés en interne, puis proposés +ensuite à des clients une fois que la solution aura été finalisée. + +Un exemple, Chorem qui est une collection d'outils de gestion d'entreprise +pour la facturation, la gestion des employés, des contrats, etc. Une collection +d'outil qui a vu le jour parce Code Lutin ne trouvait pas de logiciel de gestion +d'entreprise, libre. Lima est un autre exemple, pendant libre des solutions de +gestion de comptabilités existantes. Added: trunk/wikitty-publication/src/site/rapport/part/conclusion.tex =================================================================== --- trunk/wikitty-publication/src/site/rapport/part/conclusion.tex (rev 0) +++ trunk/wikitty-publication/src/site/rapport/part/conclusion.tex 2011-08-29 09:11:40 UTC (rev 1194) @@ -0,0 +1,35 @@ +\section{Conclusion} + +Ça fonctionne, ça fonctionnait aussi avant le stage, en soit le fait que ça +fonctionne toujours n'est donc pas extraordinaire. Néanmoins maintenant des +fonctionnalités supplémentaires sont venu se greffer autour du module pour le +rendre utilisable réellement. Le prototype n'est plus seulement un prototype, +et peut être plus facilement utilisable par la présence du plugin maven entre +autre. + +Ainsi on peut maintenant assez facilement créer des applications dans Wikitty +Publication, c'est d'ailleurs prévu pour certaines applications de chez Code +Lutin. + +En ce qui concerne donc l'applicatif je pense avoir remplis mes objectifs, +maintenant le projet est utilisable, pas parfait, mais libre, donc si son concept +intéresse, les gens peuvent l'améliorer pour leurs besoins et corriger ce qui ne +fonctionne pas. Des améliorations comme stocker dans le service les jar +entités sous forme de diagramme UML et à l'exécution les classes sont générées +packagé en jar et ajoutées au classpath ou le support de d'autre langage. + +Plus personnellement ce stage m'aura beaucoup apporté, techniquement j'aurais +beaucoup appris sur les bonnes pratiques, les mauvaises pratiques comme déléguer +à son ide les mécanismes d'autres outils (inclure SVN dans eclipse ?! Plus jamais). +Pas mal de chose technique en rapport avec le monde objet de Java, notamment +la manipulation de classloader et d'autres choses. + +Ce stage a été très complet, j'ai fais du J2E, du java classique, fais un plugin +pour maven et j'ai été très bien encadré pendant ce stage. + +J'aurais appris à faire des points régulier sur l'avancement de mon travail, +tenir les délais que l'on me donnait, estimer la durée de certaines tâches, +présenter mon travail au cours de réunion. + +J'aurais pu appréhender plus facilement les problématiques de licences, et mieux +comprendre les tenants et aboutissants du logiciel libre. Added: trunk/wikitty-publication/src/site/rapport/part/introduction.tex =================================================================== --- trunk/wikitty-publication/src/site/rapport/part/introduction.tex (rev 0) +++ trunk/wikitty-publication/src/site/rapport/part/introduction.tex 2011-08-29 09:11:40 UTC (rev 1194) @@ -0,0 +1,28 @@ +\section*{Introduction} + +Ce rapport présente le stage que j'ai effectué dans le cadre de mon master 2 +ALMA, stage effectué chez Code Lutin. J'ai effectué mon stage chez Code Lutin, une +entreprise qui fait du logiciel libre. J'avais choisi justement cette entreprise +pour ça, l'occasion de faire du logiciel libre. Pour moi c'était une chance +d'apprendre de bonnes pratiques, de progresser techniquement. Aussi de contribuer au +monde du libre et d'en apprendre plus sur les valeurs du libre. + +Ce rapport présente donc mon travail sur Wikitty Publication, module de Wikitty +un projet libre initié par Code Lutin. Le concept est assez simple et très +intéressant, celui d'une application que l'on peut modifier comme on l'utilise : +comme dans un Wiki. On y accèderait dans un navigateur simplement, et on la modifierait aussi +dans le navigateur. + +Une application qui du coup pourrait elle même se modifier, un stockage en objet +du code de l'application et des données manipulées, de sorte que l'application +puisse accéder aux deux de la même façon. + +Mon stage a débuté avec le prototype de l'application qui était fonctionnel, +mais pas utilisable en dehors du cadre prototype, mon travail a été de travailler +sur ce prototype pour le rendre utilisable pour le développement d'application. + +Je présenterais donc dans ce rapport l'entreprise pour laquelle j'ai travaillé, +le projet Wikitty, le concept de Wikitty Publication, ensuite les différentes +fonctionnalités sur lesquelles j'ai travaillé sur ce module. +Enfin je conclurais sur mon stage et les travaux que j'ai effectué. + Added: trunk/wikitty-publication/src/site/rapport/part/organisation.tex =================================================================== --- trunk/wikitty-publication/src/site/rapport/part/organisation.tex (rev 0) +++ trunk/wikitty-publication/src/site/rapport/part/organisation.tex 2011-08-29 09:11:40 UTC (rev 1194) @@ -0,0 +1,49 @@ +\section{Organisation du travail} + +Pour ce stage au sein de Code Lutin, très vite après avoir pris connaissance +de mon environnement de travail et des différentes taches qui m'attendait sur +le projet Wikitty Publication, on m'a demandé un planning prévisionnel du travail +(Planning sur la page suivante). + +Pour ce stage, et le projet Wikitty Publication, ce qui a été fait, c'est que +j'ai découpé les spécifications de Wikitty Publication en "grosse" fonctionnalités +de manière à ce que "régulièrement" il puisse y avoir des choses concrètes qui +fonctionnent. + +Les étapes étaient toujours les mêmes dans ces "cycles" de développement: +\begin{itemize} +\item discussion avec mon maître de stage sur les attentes +\item rédaction de spécifications, en détaillant les demandes de sorte à être +le moins ambiguë possible, envoi de ses spécifications sur une liste de +développement, discussion éventuelle sur ces propositions +\item implémentation des spécifications, avec mise à jour des spécifications +si nécessaire +\item tests +\item documentation du code +\end{itemize} + +De plus toutes les trois semaines au cours de réunions de développement, je +présentais l'avancé de mon travail et faisais démonstration du fonctionnement +de Wikitty Publication avec les fonctionnalités que j'avais fait depuis la dernière +réunion. + +En parallèle, toutes les semaines je faisais un compte rendu par mail sur ce que +j'avais fais la semaine, ce qui m'avais posé problème et ce que je comptais faire +la semaine suivante. + +D'un point de vue plus technique l'intégralité du projet Wikitty est en JAVA et +construit avec maven, l'intégration continue est faites par un jenkins. Le projet +se trouve sur une forge permettant l'assignation de ticket pour les évolutions +et les corrections de bug. Un sonar est aussi en place pour les métriques et la +vérification des règles de codage pour le code. + +Voici mon planning de travail, il y a des taches qui étaient prévu au départ, +et d'autre qui se sont ajoutées au fur et à mesure. J'aurais assez bien estimé +le temps nécessaire pour certaines taches, certaines m'auront paru plus +complexe alors qu'elles étaient simples. Mes erreurs d'estimation ont été dut +à ma non connaissance du domaine au départ, et du fait que je mesurais mal la portée +de certaines fonctionnalités, leurs buts. + +\includepdf{ressources/planningprev2.pdf} + + Added: trunk/wikitty-publication/src/site/rapport/part/remerciement.tex =================================================================== --- trunk/wikitty-publication/src/site/rapport/part/remerciement.tex (rev 0) +++ trunk/wikitty-publication/src/site/rapport/part/remerciement.tex 2011-08-29 09:11:40 UTC (rev 1194) @@ -0,0 +1,17 @@ +\section*{Remerciements} + +Je tiens tout d'abord à remercier Benjamin POUSSIN pour m'avoir permis de faire +mon stage au sein de Code Lutin, cela aura été une très bonne expérience. + +Je voudrais aussi remercier Éric CHATELLIER et sylvain LETELLIER qui m'ont +aidé tout au long de mon stage. + +Je remercie aussi Tony CHEMIT pour ses conseils en terme de bonne pratique et ses +positions généralement intransigeantes justement sur ces bonnes pratiques. + +Un merci aussi à Pascal MOLLI pour les cours dispensés cette année, +qui auront été très en phase avec la réalité et ce qui se passe réellement en +entreprise. Ils ont été parmi les plus réalistes, concrets et utiles parmi ceux +que j'ai eut tout au long de mes formations. + +Enfin le remercie l'ensemble des Lutins pour leur accueil chaleureux. Added: trunk/wikitty-publication/src/site/rapport/part/resume.tex =================================================================== --- trunk/wikitty-publication/src/site/rapport/part/resume.tex (rev 0) +++ trunk/wikitty-publication/src/site/rapport/part/resume.tex 2011-08-29 09:11:40 UTC (rev 1194) @@ -0,0 +1,23 @@ +\section*{Résumé} + +Ce rapport présente le stage que j'ai effectué dans le cadre de mon master 2 +ALMA, stage effectué chez Code Lutin, une société de service en logiciel libre. +Mon travail a été articulé autour de Wikitty, une librairie libre +développée à l'origine par l'entreprise. Il s'agit d'un système de base de +données orienté colonnes, soit clé$\to$valeur. J'ai travaillé sur un module de +ce projet : Wikitty Publication. Le but de ce module est de stocker des applications +dans le système de stockage Wikitty, tout comme les données. En plus du stockage +l'application doit pouvoir être exécutée et utilisée. Le but étant d'avoir une +application qui peut se modifier comme elle s'exécute simplement à travers un +navigateur comme pour un wiki. Au départ du stage il y avait un prototype simple, +fonctionnel. L'objectif du stage a été de le transformer en un module fonctionnel, +avec fonctionnalités un peu plus avancées. Ce concept d'application +se base sur le scripting et la possibilité d'interpréter des langages de script +avec d'autre langage, dans notre cas ici pour le prototype du javascript +interprété et exécuté par du java, le tout formant une application web complète.\\ + +Mots clés: Libre, Scripting, Wiki, Wikitty, JAVA + + + + Added: trunk/wikitty-publication/src/site/rapport/part/wikitty.tex =================================================================== --- trunk/wikitty-publication/src/site/rapport/part/wikitty.tex (rev 0) +++ trunk/wikitty-publication/src/site/rapport/part/wikitty.tex 2011-08-29 09:11:40 UTC (rev 1194) @@ -0,0 +1,180 @@ +\section{Projet Wikitty} + +Wikitty est un projet libre de Code Lutin, il est nécessaire de le présenter car +durant mon stage j'ai été amené à travailler sur des sous modules de ce projet. +Dans la suite Wikitty avec une majuscule désignera le projet, et wikitty avec +une minuscule désignera les objets. + +\subsection{Principe} + +Ce projet est une base de données orientée colonne et API de persistance pour +Java. Il permet d'enregistrer dans une base clé/valeur des objets wikitty, la +clé est un id généré qui est unique pour chaque wikitty. + +Un wikitty possède des extensions et les extensions possèdent des champs nommés +et chaque champ est une clé à laquelle on associe des valeurs. Et des extensions +peuvent dépendre d'autres extensions. + +Par exemple une extension personne qui possède deux champs : nom et prénom. +Une autre extension ressource qui possède un champs numéro et qui dépends de +l'extension personne. Chaque champs d'extension est défini par son nom et son +extension. Par exemple pour notre extension WikittyPersonne ses champs son nommés: +WikittyPersonne.nom et WikittyPersonne.prenom + +Si un wikitty possède l'extension ressource alors ce wikitty possèdera les +champs de l'extension ressource et de l'extension employé, puisque ressource +dépends d'employé. + +L'api de wikitty prévoit un certain nombre d'extension basique, mais tout +l'intéret est que l'on peut créer ses propres extensions, simplement en écrivant +un modèle uml de classe, qui servira ensuite pour générer les classes java +effectives, les entity business. + +On distinguera wikitty et entity business, wikitty pour l'objet contenant toute +les extensions sur lequel on peut récupérer les valeurs avec les champs nommés. +Et les entity business les objets correspondants aux extensions sur lesquels +on accède aux champs avec des accesseurs classiques. + +Ensuite il suffit de développer son application simplement en utilisant les +classes générées et les passer à un WikittyService pour le stockage sans plus +se poser de question le tout très simplement. + +Cette api à été conçue pour supporter les monter en charge et une utilisation +intensive. Elle supporte aussi la recherche par criteria, et par facette. + +La recherche par criteria permet de rechercher des wikitty en fonction de leurs +extensions et des valeurs des différents éléments de ces extensions, sans jamais +écrire de sql, on écrit un critère sur le modèle objet. + +Les facettes permettent de regrouper les résultats de recherche par criteria. + +Tout wikitty possède un numéro de version, qui évolue en fonction des +modifications faites dessus. L'api prévois que l'on puisse restaurer une version +ciblé d'un wikitty. + +Durant le développement de la partie synchronisation s'est posé le problème de +gestion de version des wikitty. D'un service à l'autre les versions ne +sont pas les mêmes, en envoyant un wikitty en version 8.0 vers un WikittyService +qui ne connait pas ce wikitty, il sera enregistré en version 1.0 (avec les +même données). Ce mécanisme posant problème pour les mises à jour ultérieurement. +A l'heure de finalisation de ce rapport le "problème" n'a pas encore été résolut. + +\subsection{Existant} + +Wikitty sert de base de donnée pour une partie des applications de l'entreprise, +puisque il permet une grande flexibilité. Dès lors où l'on peut modéliser les +données en objet on peut les stocker dans avec Wikitty. + +Actuellement Wikitty peut être déployé localement, pour une base de données +d'une application, mais il peut être déployé sur un serveur et interrogé grâce +au protocole de communication hessian ou au framework cajo. + +Hessian est un protocole de communication pour web service, et cajo est un +framework pour les communications d'application java réparties. + +Une partie des projets actuel de Code Lutin utilise un stockage Wikitty. + +\subsection{Utilisation} + +A l'utilisation pour créer ses propres wikitty il faut écrire un diagramme de +classe en XMI (par exemple avec Argouml) et que chaque classe porte le stéréotype +<<Entity>>, et remplir les différents attributs des classes avec les types +reconnus par java, comme on peut le voir pour les entités utilisés pour Wikitty +Publication sur la figure \ref{umlwikittypub}. + +\begin{figure}[!ht] + %[height=12cm,width=15cm] +\centering +\includegraphics[height=8cm,width=8cm]{image/wikittypubuml.png} + \caption{Les entités de wikitty publication} + \label{umlwikittypub} +\end{figure} + +Le fait de stéréotyper correctement permet ensuite au générateur de générer +les classes java correspondantes, et s'assurer qu'elles puissent être stockées +ensuite par Wikitty. + +Le générateur qui génère le code java à partir du fichier zargo issue d'argouml +est un générateur développé en tant que projet libre par Code Lutin: Eugene. +Ce générateur est née de la nécessité d'un générateur libre, dont la génération +pouvait être intégré au processus de build maven, en java, indépendant de tout ide. + +Le déploiement ensuite passe par des fichiers de configuration qui permettent la +mise en place des différentes couche de service nécessaire au bon fonctionnement. +On peut choisir ainsi d'avoir une base de donnée embarquée ou d'utiliser un +WikittyService distant. + +Celà sans écrire le moindre sql, pour faire des recherches il suffit d'écrire +ses criterias, qui peuvent être construit à partir d'objet wikitty, par exemple +on veut des wikitty qui ressemble à un modèle, on génère les criterias à partir +de ce modèle. + +C'est une approche tout objet, tout java, on se concentre sur l'écriture du code +métier et pas sur l'écriture des couches basses. Puisque le service permet la +sauvegarde, restauration, et recherche. + +% Ensuite il suffit d'avoir la base de déployée, et d'utiliser l'interface +% wikittyProxy qui offre les services pour les requêtes de wikitty, les +% sauvegardes, restauration de wikitty. La base de donnée est totalement déléguée +% au wikittyService, pas besoin d'écrire du sql. +% +% Rajouter que on se sert de wikitty service +% +% mécanisme de wikitty service et de fichier de propriété liée et tout ça + + +\subsection{WikittyService, WikittyProxy et WikittyServiceFactory} + +Comme évoqué précédemment ces éléments sont important dans l'utilisation et +l'intégration de Wikitty dans un projet, je vais donc en parler plus en détail +ici. + +Le WikittyService est une interface qui permet de sauvegarder, rechercher, +récupérer des wikitty. Il existe des implémentations de service pour différentes +base de données, pour des services à distance. Tous les services n'implémentent +pas toutes les méthodes, par exemple la gestion des authentifications ou la +gestion d'un cache sont à la charge d'implémentation particulière. Et les +services sont disposés en couche successives pour s'occuper de certain aspect +et déléguant les autres aspects à la couche suivante comme on peut le voir sur +la figure \ref{pileService}. +%ce n'est pas pas un pattern de chain of responsability + +%schéma d'encapsulation de wikitty service +\begin{figure}[!ht] + %[height=12cm,width=15cm] +\centering +\includegraphics[height=5cm,width=8cm]{image/pileService.png} + \caption{Couche de Wikitty Service} + \label{pileService} +\end{figure} + +La WikittyServiceFactory est une factory au sens pattern, c'est à dire qu'a +partir de fichier de propriétés elle construit et retourne les WikittyServices +demandés. C'est elle aussi qui organise les couches de service en fonction de ce +qui est défini dans les fichiers de propriétés. + +%exemple de fichier de propriété + +Un extrait de fichier de propriétés avec les couches de WikittyService: +\begin{verbatim} +wikitty.WikittyService.components=\ +org.nuiton.wikitty.services.WikittyServiceStorage,\ +org.nuiton.wikitty.services.WikittyServiceNotifier,\ +org.nuiton.wikitty.services.WikittyServiceCached,\ +org.nuiton.wikitty.services.WikittyServiceSecurity,\ +org.nuiton.wikitty.services.WikittyServiceAccessStat,\ +org.nuiton.wikitty.services.WikittyServiceCajoServer +\end{verbatim} + +Les propriétés ne sont pas directement manipulées, on se sert d'un objet +ApplicationConfig qui permet de gérer différent niveau de propriétés, +avec des propriétés par défaut si tout n'est pas défini. + +Le WikittyProxy est une surcouche qui encapsule un WikittyService et cache +certaines complexités pour finalement offrir plus de méthodes et des méthodes +plus simples. Par exemple l'interface WikittyService ne propose que des +restaurations de liste de wikitty, alors que le proxy propose des restaurations de résultat +unique. Dans le cas d'une session ou l'on s'authentifie auprès d'un WikittyService, + dans ce cas on récupère un jeton, c'est le proxy qui se charge d'injecter le +jeton dans chaque demande auprès du Service. De plus la conversion wikitty +vers entity business se fait par l'intermédiaire du WikittyProxy. Added: trunk/wikitty-publication/src/site/rapport/part/wikittymavenplugin.tex =================================================================== --- trunk/wikitty-publication/src/site/rapport/part/wikittymavenplugin.tex (rev 0) +++ trunk/wikitty-publication/src/site/rapport/part/wikittymavenplugin.tex 2011-08-29 09:11:40 UTC (rev 1194) @@ -0,0 +1,227 @@ +\lstset{ % +language=XML, % the language of the code +basicstyle=\footnotesize, % the size of the fonts that are used for the code % where to put the line-numbers + % the size of the fonts that are used for the line-numbers + % the step between two line-numbers. If it's 1, each line +keywordstyle=\color[rgb]{0,0,1}, + % will be numbered +numbersep=5pt, % how far the line-numbers are from the code +showspaces=false, % show spaces adding particular underscores +showstringspaces=false, % underline spaces within strings +showtabs=false, % show tabs within strings adding particular underscores +tabsize=2, % sets default tabsize to 2 spaces +captionpos=b, % sets the caption-position to bottom +breaklines=true, % sets automatic line breaking +breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace +title=\lstname, % show the filename of files included with \lstinputlisting; + % also try caption instead of title +escapeinside={\%*}{*)}, % if you want to add a comment with +morekeywords={project,modelVersion,groupId,description,build, plugin,plugins,configuration, applicationName, wikittyServiceUrl, artifactId,serverID,uploadUrl} +} + + +\section{Wikitty Publication Maven Plugin} + +Wikitty Publication maven plugin, est un plugin maven intégrant les +fonctionnalités développées pour Wikitty Publication, permettant une une +utilisation facilitées de ces fonctionnalités. + +\subsection{Objectifs} + +L'objectif de ce plugin était de rendre utilisable les outils développés pour +Wikitty Publication, comme la synchronisation ou l'externalisation, mais +pour cela il fallait passer par les classes java associées. + +Or passer par les classes n'est pas "optimal" pour les développeurs, il faut +leur simplifier la vie, pour que ce genre de d'outil soit disponible +immédiatement pour leurs besoins. + +La meilleure façon pour cela est donc d'avoir un plugin maven associé à +Wikitty Publication, pour que l'utilisation soit aisée, une solution clé en +main. + +L'utilisation la plus simple consiste donc en la création d'un pom élémentaire +avec les paramètres pour le plugin, et ensuite de développer sont application +pour Wikitty Publication et d'utiliser les goals pour publier, essayer, etc. + +Pom élémentaire : + +\begin{lstlisting} +<?xml version="1.0" encoding="UTF-8"?> +<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <modelVersion>4.0.0</modelVersion> + <groupId>org.exemple</groupId> + <artifactId>stub</artifactId> + <version>1.0</version> + <description>exemple project</description> + <build> + <plugins> + <plugin> + <groupId>org.nuiton.wikitty</groupId> + <artifactId>wp-maven-plugin</artifactId> + <version>3.2-SNAPSHOT</version> + <configuration> + <applicationName>example</applicationName> + <wikittyServiceUrl>cajo://localhost:1111/wikitty</wikittyServiceUrl> + <serverID>serveurTest</serveurID> + <uploadUrl>http://localhost/</uploadUrl> + </configuration> + </plugin> + </plugins> + </build> +</project> +\end{lstlisting} + +%facilité la vie des dev pour le devellopement d'appli sur wikitty publication +%tout clés en mains +%et tout et tout et tout. + +\subsection{Goal} + +Les goals suivant ont donc été fait pour ce plugin: + +\begin{itemize} +\item wp:init +\item wp:run +\item wp:deploy +\item wp:update +\item wp:jar +\item wp:jar-deploy +\end{itemize} + +La commande wp:init sert pour initialiser la bonne architecture pour le projet +d'application de wikitty publication. Comme suit : + +\begin{verbatim} +src/main/wp + #toute les pages +src/main/ressources/images + #stocker les images +src/main/ressources/jar + #stoker les binaires +\end{verbatim} + +La commande wp:run pour lancer Wikitty Publication et y charger l'application +en cours de développement. Cette commande lance un serveur avec Wikitty Publication +en utilisant un service type "fallback" qui est un service sur système de fichier, +l'application peut ainsi être modifiée/testée sans redémarrer le serveur. + +La commande wp:deploy pour déployer l'application sur un WikittyService donné, +l'url de ce service est un paramètre dans le pom : wikittyServiceUrl. +L'application sera déployée à l'aide du système de synchronisation, et le label +src/main tel que sur le file system sera remplacée par applicationName paramètre +aussi dans le pom, il représente le nom de l'application. Sur le WikittyService +on retrouvera cette organisation: +\begin{verbatim} +applicationName.wp + #toute les pages +applicationName.ressources.images + #stocker les images +applicationName.ressources.jar + #stoker les binaires +\end{verbatim} + + +La commande wp:update sert pour mettre à jour le WikittyService sur lequel +on a précédemment déployé l'application. + +La commande wp:jar sert pour externaliser l'application dans un jar avec le +fonctionnement de l'externalisation, tout en substituant src/main par applicationName, +un jar parfaitement formé. + +La commande wp:jar-deploy sert pour envoyer le jar sur un serveur ou copier +le jar ailleurs sur le file system. Plus tard son rôle sera la publication +des jar auprès d'un WikittyServiceJarLoader. Les paramètres de configuration dans +le pom serverID et uploadUrl sont respectivement pour retrouver dans les +setting les éléments de configuration du serveur cible, et l'url où l'on +doit envoyer le jar. + + +\subsection{Fonctionnement} + +L'écriture de ce plugin maven n'a pas été une tache trop compliqué, du fait de +l'existence des implémentations des différents besoins, comme l'externalisation +ou la synchronisation. Il aura fallu juste réutiliser ces fonctionnalités, voir +de corriger quelques signatures pour permettre leurs réutilisations. + +Il aura aussi fallu réutiliser quelques plugin maven déjà existant comme jetty:run +pour le déploiement de l'application dans un serveur de test local. + +La création d'un plugin maven passe simplement par une implémentation java d'un +projet avec un pom définissant sa nature de plugin maven. Le reste c'est du java, +on implémente une interface "Mojo" défini dans maven. On doit aussi à l'aide de +tag définir certains paramètres, d'autres tags servent aussi pour que le moteur +de maven puisse injecter des paramètres à l'exécution du plugin permettant de +récupérer des composants/objet de maven comme le build ou l'objet correspondant +au pom. + +\lstset{ % +language=java, % the language of the code +basicstyle=\footnotesize, % the size of the fonts that are used for the code % where to put the line-numbers + % the size of the fonts that are used for the line-numbers + % the step between two line-numbers. If it's 1, each line +keywordstyle=\color[rgb]{1,0,1}, + % will be numbered +numbersep=5pt, % how far the line-numbers are from the code +showspaces=false, % show spaces adding particular underscores +showstringspaces=false, % underline spaces within strings +showtabs=false, % show tabs within strings adding particular underscores +tabsize=2, % sets default tabsize to 2 spaces +captionpos=b, % sets the caption-position to bottom +breaklines=true, % sets automatic line breaking +breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace +title=\lstname, % show the filename of files included with \lstinputlisting; + % also try caption instead of title +escapeinside={\%*}{*)}, % if you want to add a comment with +morekeywords={@goal} +} + +Exemples: + +\begin{lstlisting} +/** + * @goal init + */ +public class WPInitMojo extends AbstractWPMojo { +... +} +\end{lstlisting} + +Ici le tag goal permet de définir que la commande pour cette classe sera wp:init +(le wp le préfixe du plugin en question). + +\begin{lstlisting} + /** + * The mandatory application name. + * + * @parameter expression="${wp.applicationName}" + * @required + */ + protected String applicationName; + + /** + * The component used for creating artifact instances. + * @required + * @component + */ + private ArtifactFactory artifactFactory; + +\end{lstlisting} + +Le tag parameter associé à l'expression permet de récupérer le paramètre de +configuration du plugin wp dans le pom(comme présenté précédement). +Le tag component est un tag traité par le moteur de maven qui à l'exécution +du plugin l'injection de l'objet demandé. C'est à ça que peuvent servir les +tags dans un plugin maven. + + +%rééutilisation de plug in existant + +%Comment qu'on fait un plug in maven: +%héritage de mojo +%utilisation de taglet +%pour récupérer les éléments de l'éxécution +%comme le pom et tout + + Added: trunk/wikitty-publication/src/site/rapport/part/wikittypublication.tex =================================================================== --- trunk/wikitty-publication/src/site/rapport/part/wikittypublication.tex (rev 0) +++ trunk/wikitty-publication/src/site/rapport/part/wikittypublication.tex 2011-08-29 09:11:40 UTC (rev 1194) @@ -0,0 +1,108 @@ +\section{Wikitty Publication} + +Wikitty publication est le sous module Wikitty sur lequel j'ai été amené à +travailler durant mon stage. Mon travail s'est articulé autour de plusieurs +partie à l'intérieur de module, avant de rentrer dans le détail, il me faut +présenter le module Wikitty Publication. + +\subsection{Concept} + +Wikitty publication est un projet basé sur wikitty, dont le but est de permettre +la création d'application web et leur exécution directement à l'intérieur de +Wikitty Publication. Publication se présente comme un ensemble de page web qui +permettent le rendu des wikitty dans un navigateur, ainsi que leurs modifications, +comme dans un wiki. On distingue des extensions particulières, une extension +pour les data comme les images et une extension pour le code applicatif. + +Les applications doivent pouvoir être développées dans plusieurs langage, pas +dans un langage spécifique à publication, des langages tel que: +\begin{itemize} +\item javascript +\item groovy +\item jruby +\item jython +\end{itemize} + +Ce module doit permettre le développement des applications naturellement +en développant sur un système de fichier, puis l'importation des applications +directement dans Wikitty Publication. + +Un des objectifs de Wikitty Publication est aussi d'avoir un cœur métier +écrit en wikitty, qui manipulerait des données d'un autres WikittyService, ainsi on +pourrait avoir une mutualisation du code métier et des données spécifique +pour chaque client, utilisateur de Wikitty Publication. + +Wikitty publication s'appuie sur le scripting pour l'exécution du code contenu +dans les wikitty. + + +\subsection{Scripting} + +Le scripting permet l'éxécution de langage de script par un autre langage, dans +notre cas ici, le java qui peut interpréter de langage comme javascript. + +Le langage de script est interprété par un script engine tel que le concept est +défini dans la JSR-223 \footnote{JSR-223 Scripting for java: http://www.jcp.org/en/jsr/detail?id=223}. +Un script engine permet l'interprétation et l'exécution +du langage pour lequel il est défini, mais il permet aussi d'insérer des éléments +de code provenant de l'environnement qui l'exécute. Par exemple on peut initialiser +une variable javascript avec le contenu d'une variable java, et on peut appeler +des méthodes java sur des variables java dans le javascript. + +Ce mécanisme est un binding, le script engine pour les symboles qu'il ne connait +pas, avant de renvoyer une erreur, il va chercher dans une map dit de binding +pour trouver l'objet qui correspond au symbole, et l'interpréter en java pour +insérer le résultat dans le code. + +Exemple : + +un objet personne dans la map binding, en clé la chaine "personneBob" et en valeur +l'objet, avec en attribut un nom égal à "Paulson" et un attribut prénom égal à +"Robert". + +Un morceau de code js qui sera exécuté: + +\lstset{ % +language=JAVA, % the language of the code +basicstyle=\footnotesize, % the size of the fonts that are used for the code % where to put the line-numbers + % the size of the fonts that are used for the line-numbers + % the step between two line-numbers. If it's 1, each line +keywordstyle=\color[rgb]{,0,1}, + % will be numbered +numbersep=5pt, % how far the line-numbers are from the code +showspaces=false, % show spaces adding particular underscores +showstringspaces=false, % underline spaces within strings +showtabs=false, % show tabs within strings adding particular underscores +tabsize=2, % sets default tabsize to 2 spaces +captionpos=b, % sets the caption-position to bottom +breaklines=true, % sets automatic line breaking +breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace +title=\lstname, % show the filename of files included with \lstinputlisting; + % also try caption instead of title +escapeinside={\%*}{*)}, % if you want to add a comment with +morekeywords={project,modelVersion,groupId,description,build, plugin,plugins,configuration, applicationName, wikittyServiceUrl, artifactId,serverID,uploadUrl} +} + +\begin{lstlisting} +var result = +" <h1>Index</h1>\n"+ +" His name was "+ personneBob.getPrenom() + personneBob.getNom()\n"; +var ponay =""; + + +wpContext.setContentType("text/html"); +result; +\end{lstlisting} + + + +A l'exécution sera affiché "His name was Robert Paulson", le javascript sera interprété +normalement, en y joignant les chaines récupérées dans les bindings. Là l'exemple +est simple, mais en pratique cela permet de faire beaucoup de chose. + +Dans notre cas avec nos bindings (voir les annexes pour les bindings disponible), +on peut dans du code qui se fera évaluer appeler l'évaluator sur un autre contenu. + + + + Added: trunk/wikitty-publication/src/site/rapport/part/wikittypublicationexternalize.tex =================================================================== --- trunk/wikitty-publication/src/site/rapport/part/wikittypublicationexternalize.tex (rev 0) +++ trunk/wikitty-publication/src/site/rapport/part/wikittypublicationexternalize.tex 2011-08-29 09:11:40 UTC (rev 1194) @@ -0,0 +1,211 @@ +\lstset{ % +language=JAVA, % the language of the code +basicstyle=\footnotesize, % the size of the fonts that are used for the code % where to put the line-numbers + % the size of the fonts that are used for the line-numbers + % the step between two line-numbers. If it's 1, each line +keywordstyle=\color[rgb]{1,0,1}, + % will be numbered +numbersep=5pt, % how far the line-numbers are from the code +showspaces=false, % show spaces adding particular underscores +showstringspaces=false, % underline spaces within strings +showtabs=false, % show tabs within strings adding particular underscores +tabsize=2, % sets default tabsize to 2 spaces +captionpos=b, % sets the caption-position to bottom +breaklines=true, % sets automatic line breaking +breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace +title=\lstname, % show the filename of files included with \lstinputlisting; + % also try caption instead of title +escapeinside={\%*}{*)}, % if you want to add a comment with +morekeywords={project,modelVersion,groupId,description,build, plugin,plugins,configuration, applicationName, wikittyServiceUrl, artifactId,serverID,uploadUrl} +} + + + +\section{Wikitty Publication Externalize} + +La partie Externalize de Wikitty Publication concerne les fonctionnalités +d'externalisation des wikitty. C'est à dire prendre des wikitty stockés sur un +système de fichier, via le service correspondant précédemment développé, compiler +ces wikitty et les stocker dans un jar. + +L'objectif recherché par cette partie de Wikitty Publication est la performance, +en ayant du code compilé on gagne évidement en rapidité d'exécution des wikitty +compilé. Et du code non modifiable, par exemple dans le cadre de l'utilisation +multi-contexte, on pourrait avoir un service s'appuyant sur des wikitty stockés +dans un jar. + +Comme pour la synchronisation vers file system, sont concernés par ce mécanisme +uniquement les Wikitty représentable sur file system. Comme les wikittyPubData, +qui ne seront pas affecté par le mécanisme. Et les wikittyPubText qui eux seront +compilé dans le processus d'externalisation. + +Un des objectifs, plus secondaire, est la possibilité d'intégrer ce mécanisme +en tache Ant, ou un plug in maven. + +\subsection{Une nouvelle extension de WikittyPub} + +Les wikittyPubText qui auront été externalizé, et donc compilé, doivent toujours +être considéré comme des wikitty, avec toutes les propriétés liées. Pour ce +faire on définit une extension de WikittyPubText qui contiendra un champ nommé +ByteCode de type tableau de byte. + +Ainsi pour ce type de wikitty d'un coté on aura le code original du +wikittyPubText dans le champ content et le code java compilé dans le champ +ByteCode. Cela permet d'avoir l'original dans le cas où l'on voudrait écrire +un nouveau wikitty avec le même code, ou dans le cas d'une surcharge si +multi-contexte. + +\subsection{Mécanisme de transformation/compilation} + +Tout le mécanisme de transformation des WikittyPubText en WikittyPubTextCompiled +doit doit respecter la finalité de ces wikitty, c'est à dire que le code qu'ils +contiennent soit exécutable et exécuté. + +Quelque soit le contenu des WikittyPubText ils sont compilé, normalement pour les +langages visés, tel le javascript on ne peut pas le compiler comme on le pourrait +pour du java. Ce qui est fait c'est que ce code est encapsulé dans un morceau +de java qui invoque le script engine chargé de son exécution. + +Pour le java comme pour l'évaluation on accepte uniquement un corps de méthode, +corps encapsulé dans la même méthode que pour du code non java: + + +\begin{lstlisting} +package org.nuiton.wikitty.publication; + +import java.util.Map; + +public abstract class AbstractDecoredClass { + public abstract Object eval(Map<String, Object> bindings) throws Exception ; +} +\end{lstlisting} + +Donc dans les deux cas le code java qui décore est presque le même, dans le +cas de java on dépile les éléments de binding avant de remplir le corps de la +méthode, et dans le cas de wikittyPubText on délègue les bindings à l'évaluator. +Des exemples de code décoré en annexe. + +Et donc dans le processus d'évaluation par Wikitty Publication de ces +WikittyPubTextCompiled on invoquera directement la méthode eval en lui passant +les bindings. + +En dehors de la compilation et décoration des wikitty, le mécanisme est +relativement simple. On sélectionne tous les wikitty du dossier local où on +se trouve avec le service file system, on créer un dossier temporaire, +on y écrit les wikitty, on compile ceux qui doivent l'être, on y met le fichier +wikitty original avec le code qu'il contient, un .java et le .class, puis le +dossier est packager en jar, et le dossier temporaire supprimé. + + +\subsection{Sauvegarde des propriétés des wikitty} + +De la même façon que pour le stockage des wikitty sur file system afin de +pouvoir réutiliser les wikitty et garantir que ce sont toujours des wikitty, +il faut une inversibilité de la sauvegarde, et donc conserver des propriétés des +wikitty. + +Contrairement à la sauvegarde des wikitty sur File System, ici on peut se +permettre de centraliser toutes les informations dans les mêmes fichiers de +propriétés. + +Les propriétés conservées seront: les id, les versions ainsi que les MimeType +des fichiers correspondant. On utilise deux fichiers de propriétés distinct, +un pour les id et les localisations des wikitty, et un autre pour les autres +propriétés. + +Exemple: % plutot mettre une image + +jar: +\begin{verbatim} ++jar +|id.properties +|meta.properties +|+wp +||Wiki.wp +||Wiki.java +||Wiki.class +||Logo.png +||Stat.wp +||Stat.java +||Stat.class +||Home.wp +||Home.java +||Home.class +||WikiMenu.wp +||WikiMenu.java +||WikiMenu.class +||+dossier +|||dummy.wp +|||dummy.java +|||dummy.class +|||uneAutreImage.jpg +|||uneImage.jpg +\end{verbatim} + +Fichiers de propriétés correspondant: + + +ids.properties: +\begin{verbatim} +62c7d0cd-91c2-4607-bdcf-f0cac6c78d6e=wp/Wiki +4120d1ba-18ac-4ac5-a329-7f515f704fd0=wp/Logo +8225d3cb-beb3-4a85-a4ea-4b0e660fab96=wp/Stat +1968c510-6ba6-4de7-bbb0-67e029119520=wp/WikiMenu +2ca85aa8-2869-4ad6-8976-c0b0b5526934=wp/dossier/dummy +12f55beb-af63-49b1-9d74-62131bd0a67a=wp/Home +b7599025-f425-4dcf-88e6-55e154430d7e=wp/dossier/uneAutreImage +e443dbbe-b461-41bd-b5b6-b612e964cb0d=wp/dossier/uneImage +\end{verbatim} + + +meta.properties +\begin{verbatim} +# +#Tue Jul 12 11:19:46 CEST 2011 +8225d3cb-beb3-4a85-a4ea-4b0e660fab96.mime=text/javascript +4120d1ba-18ac-4ac5-a329-7f515f704fd0.mime=image/png +12f55beb-af63-49b1-9d74-62131bd0a67a.mime=text/javascript +1968c510-6ba6-4de7-bbb0-67e029119520.mime=text/javascript +62c7d0cd-91c2-4607-bdcf-f0cac6c78d6e.mime=text/javascript +e443dbbe-b461-41bd-b5b6-b612e964cb0d.mime=image/jpg +b7599025-f425-4dcf-88e6-55e154430d7e.mime=image/jpeg +2ca85aa8-2869-4ad6-8976-c0b0b5526934.mime=text/javascript +12f55beb-af63-49b1-9d74-62131bd0a67a.version=1.0 +1968c510-6ba6-4de7-bbb0-67e029119520.version=1.0 +2ca85aa8-2869-4ad6-8976-c0b0b5526934.version=1.0 +4120d1ba-18ac-4ac5-a329-7f515f704fd0.version=1.0 +62c7d0cd-91c2-4607-bdcf-f0cac6c78d6e.version=1.0 +b7599025-f425-4dcf-88e6-55e154430d7e.version=1.0 +e443dbbe-b461-41bd-b5b6-b612e964cb0d.version=1.0 +8225d3cb-beb3-4a85-a4ea-4b0e660fab96.version=1.0 +\end{verbatim} + + +Sous l'id on sauvegarde le chemin pour retrouver le wikitty correspondant, +avec le mimeType qui permet de retrouver l'extension du fichier, qui sera sauvegardé +aussi dans le jar, on aura ainsi le fichier original un ".js" par exemple, +et à coté les ".java" et ".class" correspondant aux versions décorées, compilées . + + +\subsection{Wikitty Service sur jar} + +Une fois que les wikitty sont sauvegardés dans un jar, on doit pouvoir les +récupérer pour les utiliser comme n'importe quels autres wikitty. Pour celà il +faut donc un wikitty service qui s'appuiera sur un jar et qui exposera les +wikitty de la même façon. + +Ce service propose donc les méthodes de recherche, et de restauration de wikitty, +mais évidement pas les méthodes de sauvegarde, puisque le but est bien d'avoir +des wikitty non modifiable. + +La création de ce service à été facilité par l'existence du service sur file +system, puisque le fonctionnement est relativement le même, pour la recherche +on ne délègue pas à une base de donnée, on manipule directement les objets en +java, donc pour la recherche c'est le même mécanisme que pour le service sur +file system. + +Ce service sur jar peut s'appuyer sur plusieurs jar, dans sa configuration +il prend un dossier, dossier qui contient des jar, et il construit un index +des wikitty disponible avec les fichiers de propriétés. + + Added: trunk/wikitty-publication/src/site/rapport/part/wikittypublicationsite.tex =================================================================== --- trunk/wikitty-publication/src/site/rapport/part/wikittypublicationsite.tex (rev 0) +++ trunk/wikitty-publication/src/site/rapport/part/wikittypublicationsite.tex 2011-08-29 09:11:40 UTC (rev 1194) @@ -0,0 +1,288 @@ +\section{Wikitty Publication Site} + +La partie site de Wikitty Publication concerne des fonctionnalités +destinées à l'administration et les éléments cœur du moteur de publication +comme l'interprétation du code contenu dans les WikittyPubText. + +Ces fonctionnalités ou pages principales sont : +\begin{itemize} +\item Raw, qui permet l'affichage des WikittyPubData exemple des images +\item Edit, qui permet de créer ou d'éditer des wikitty +\item Eval, qui permet l'évaluation du code contenu dans un WikittyPubText +\item View, qui permet l'affichage et la recherche des wikitty +\end{itemize} + +Un premier prototype avait été réalisé c'était la base de travail, ce prototype +était fait avec des jsp/servlet simplement sans support d'un quelconque +framework comme struts. + +Le travail sur cette partie de publication se concentrait donc sur +l'amélioration de ce prototype sous différent aspect. + + +\subsection{Migration vers struts} + +Le premier aspect de l'amélioration du prototype était de migrer les jsp/servlet +vers le framework struts. Struts est un donc un framework qui permet un bon +support du modèle MVC pour les applications web. + +Struts permet au développeurs de se concentrer sur la vue et le modèle de son +application Web, à la charge de struts l'aspect contrôleur du modèle MVC. En +effet on peut définir l'enchainement des actions effectuées et la page qui sera +affiché en conséquence. + +Dans struts on parle d'action, de package et d'intercepteur, les packages +regroupent les actions et les piles d'intercepteurs. Ces packages peuvent en +étendre d'autre et donc hériter de leurs propriétés. Les packages peuvent +posséder un 'namespace' qui leur permet d'être défini pour un sous espace de +l'application. + +\begin{figure}[!ht] +\centering +\includegraphics[height=6cm,width=17cm]{image/strutsexplain.png} + \caption{Diagramme Struts} + \label{diagstruts} +\end{figure} + +Les intercepteurs et piles d'intercepteurs sont des objets qui effectue un pré +traitement sur les requêtes http reçu par l'application, la figure \ref{diagstruts} +montre le cheminement possible d'une requête. Le champ d'action des intercepteurs +est grand, ils ont accès à la session, le contexte, les requêtes http et d'autres choses. + +Les actions permettent de décrire l'enchainement des 'écrans', les classes java +qui doivent exécuter un traitement après la validation d'un formulaire jsp, la +jsp à afficher et d'autres. + +Cette configuration de struts se fait grâce à des xml, ensuite il suffit +simplement d'écrire des classes java qui implémentent des interfaces +spécifiques. + +Un des aspect important de la migration vers struts aura été la conversation des +url correspondant aux actions de publications, les url doivent être sous cette +forme : +\begin{verbatim} +/[contextData]/[contextApps]/[action]/[mandatory_args]?[args key=value] +\end{verbatim} + +Les actions: +\begin{itemize} +\item Raw +\item Edit +\item Eval +\item View +\end{itemize} + +Le contextData et contextApps seront développé dans la section suivante. Les +mandatory args servent pour les actions: Raw, Eval et Edit pour trouver le bon +objet wikitty correspondant. Par exemple : + +\begin{verbatim} +/edit/elt_id:928b573e-b76f-4ffc-95a1-205798034330 +/eval/WikittyPubText.name:Wiki +/raw/Wiki +\end{verbatim} + +%format des urls à mettre ici + +Respectivement : +\begin{itemize} +\item l'action edit pour le wikitty avec l'id correspondant +\item l'action eval pour le wikittyPubText qui possèdent le champ name égal à +Wiki +\item l'action raw pour le wikitty qui possède un champ nom égal à Wiki +\end{itemize} + +Ces deux derniers exemples montrent plusieurs formats pour retrouver un même +wikitty. + +Les actions de publication Raw et Eval sont un peu particulières, contrairement +aux deux autres elles n'ont pas de page jsp de rendu, les actions View et Edit +ont des jsp pour l'affichage et l'édition/création de wikitty. + +L'action Raw par exemple pour les WikittyPubText et PubData affiche le contenu +des wikitty en fonction de leur mime type, et donc construit lui même son rendu +html sans passer par une jsp. + +L'action Eval elle sert sert du mime type d'un WikittyPubText pour déterminer le +langage associé au contenu et finalement exécute le code, le résultat de +l'exécution est donc ensuite renvoyé en tant que résultat. + +\subsection{Moteur d'évaluation} + +Le moteur d'évaluation s'appuie sur le concept de scripting comme précédemment +évoqué, on a pu voir que dans les adresses des actions il y a deux paramètres +dont je n'ai pas vraiment parlé: \emph{contextData} et \emph{contextApps}. + +C'est qu'ils prennent toutes leurs importances dans le mécanisme d'évaluation, +ce mécanisme est délégué au script engine qui va interpréter le contenu +d'un WikittyPubText en fonction de son mimeType et renvoyer simplement un +WikittyPubData de la même façon. + +Dans ce cadre contextData sert pour savoir connaitre les propriétés, donc +quels WikittyService instancier. Comme précédement expliqué les WikittyService +sont instanciés avec des fichiers de propriété, par défaut il existe deux fichiers +dans l'application qui définisse un wikitty service "classique" avec une base +de données h2, un dossier de stockage, ainsi qu'un wikitty service sur jar +en fallback. + +Le contextData sert pour deux choses dans ce cadre, il permet de charger un +fichier de propriété supplémentaire s'il existe voir sur la figure +\ref{propertiescontext} , et de définir le dossier de stockage de la base. + +\begin{figure}[!ht] +\centering +\includegraphics[height=3cm,width=6cm]{image/propertiescontext.png} + \caption{Fonctionnement du ContextData} + \label{propertiescontext} +\end{figure} + +Si par exemple l'adresse de l'action est \verb!/codelutin/chorem/eval/menu.action! +alors on chargera les propriétés par défaut. On cherchera un fichier de propriété +codelutin s'il existe(qui peut écraser des propriétés existantes) et un sous dossier +sera créé pour le contexte de l'application \verb!codelutin!, isolant totalement +d'un autre contexte \verb!/wp/chorem/eval/menu.action! par exemple, ça ne sera +pas les mêmes base de donnée, on peut isoler ainsi les contextes + +ContextData sert donc pour isoler les services et leurs bases. + +ContextApps lui son rôle est "d'isoler" les applications et éviter les collisions +de nom entre les wikitty. Les noms ne sont pas unique et on peut se retrouver +dans un même wikitty service avoir plusieurs wikittyPub qui ont les mêmes noms par +exemple: "menu". Le but est d'éviter des confusions, par exemple une action +\verb!/codelutin/chorem/eval/menu.action! on va aller chercher le wikittyPub +avec le nom "menu" dont l'un des labels commence par "chorem", cela permet de +regrouper les applications sous les mêmes labels, ainsi si dans le contenu du +"menu" il y a un appel vers un autre wikitty, le moteur "sait" qu'il doit +aller le chercher sous le même label. + + +\subsection{Ajout d'un mécanisme de login/logout} + +Les couches sécurité des WikittyService s'occupe déjà d'un mécanisme de login +et d'une gestion des droits en fonction. Les utilisateurs sont stockés en tant +que wikitty dans la base et on peut attribué des droits à ces utilisateurs. +Ensuite via un WikittyService on peut se loger, sur une authentification on +récupère un jeton qui sera à passer pour chaque action, cela est géré par le +WikittyProxy qui encapsule le WikittyService. + +Donc pour vérifier qu'une authentification s'est bien passé il faut regarder +dans le proxy si l'utilisateur est présent. Dans le cas de Wikitty Publication +au moment de l'action de login, délégué au proxy, on va stocker le jeton et +l'utilisateur dans la session. + +Évidement le mécanisme de Logout lui nettoie simplement la session en la vidant +de ces informations. + +Ensuite le fonction de la gestion de l'authentification se repose sur le +mécanisme d'intercepteur et de package de struts. On défini une pile +d'intercepteur personnalisée qui en plus de la pile par defaut rajoute un +intercepteur d'authenfication qui vérifiera la présence des informations +utilisateur dans la session, et bloquera l'accès à la page demandé si +l'utilisateur n'est pas authentifié. + +On définit que l'accès aux actions publication utilise cette pile d'intercepteur +qui gère l'authentification, c'est ainsi que fonctionne le mécanisme dans +Wikitty Publication. + +\subsection{Amélioration des pages d'affichage et d'édition} + +Les pages d'édition et d'affichage des wikitty étaient relativement simple, le +but étant une administration simple et efficace des wikitty. L'amélioration de +ces pages à consisté en la correction des bugs présent déjà dans le prototype. + +Par exemple le support pour les recherches dans wikitty dans la page view, +dans le prototype cette recherche était très limité et donc ne fonctionnait pas +très bien. De plus l'affichage des résultats nécessitait une amélioration. + +Ensuite pour l'interface d'édition des wikitty j'ai intégré un décorateur de +Text Area qui permet une colorisation du contenu du champ, on peut choisir le +langage présent dans le champ pour avoir une colorisation, de l'indentation, des +outils de recherche/remplacer et d'autre. Une sorte d'ide basique pour +faciliter le développement de code dans les WikittyPubText. + +% mettre screen shot du décorateur de textarea + + +\subsection{Mécanisme de multicontext} + +Cette fonctionnalité consiste en fait à l'encapsulation par un WikittyService +de deux autres WikittyService, quelque soit leurs natures, c'est un +WikittyFallbackService. On peut voir un schéma de fonctionnement sur la figure +\ref{diagmulticontext} + +Ce multi-contexte exécute ses recherches un WikittyService principal, et +compléte ses recherches si besoin avec les données du WikittyService dit +fallback. A titre d'exemple si on effectue une recherche que l'on réclame un +résultat d'au moins 30 wikitty, si à l'issue de la recherche sur le WikittyService +principal il n'y a pas 30 wikitty, alors on cherchera sur le service +fallback pour compléter la recherche. + +Ainsi si l'on cherche à retrouver un wikitty particulier avec son id, si il +se trouve sur le principal ça sera le wikitty du principal qui sera renvoyé, +par contre si il ne se trouve pas sur celui si, on ira le chercher sur le second +service. + +De même l'écriture s'effectue sur le service principal, on n'écrit pas sur le +service de fallback. + +\begin{figure}[!ht] + %[height=12cm,width=15cm] +\centering +\includegraphics{image/multicontext.png} + \caption{Diagramme multicontexte} + \label{diagmulticontext} +\end{figure} + + +Son utilisation n'est pas nécessairement limité à Wikitty Publication, il s'agit +finalement d'une implémentation différente de l'interface WikittyService. + +Ce mécanisme peut permettre la surcharge d'un wikitty, dans le sens ou on peut +modifier un wikitty qui aura été chargé depuis le fallback, mais à la sauvegarde +il sera restauré depuis le wikitty principal, puisque celui ci est prioritaire. + +On peut avoir ainsi un WikittyService statique, et un autre dynamique, par +exemple le WikittyService statique qui serait partagé et utilisé par d'autre +WikittyService multicontext, une base commune de wikitty. + +Ce WikittyService à été pensé et écrit pendant l'enrichissement de la partie +site de Wikitty Publication, l'idée d'utilisation d'un tel service, est la +mutualisation d'une application dans un WikittyService, et que cette +application utilise des données issues de d'autre service. On mutualise le code +métier, de sorte que plusieurs clients puissent utiliser la même application, +avec le même service, mais que leurs données soit sur leurs services. +Le service fallback contiendrait l'application et le service principal +l'application. + +\subsection{Intégration d'interface graphique} + +Les applications exécuté au sein de Wikitty Publication le seront à travers +un navigateur web donc le résultat présenté dans un format compatible. +Donc générélament pour proposer des choix utilisateurs il faudra des interfaces +en html. + +Le html peut être "aisément" intégré dans du javascript et quand l'évaluateur +évaluera le javacript et écrira le html contenu dans les variables javascript +mais cette solution rends l'écriture du code interface pénible. + +La solution la plus simple qui a été trouvé est d'avoir la possibilité d'écrire +du html (pour le moment plus tard d'autre langage) et de faire comme si on était +dans une jsp, quand on a besoin d'écrire code on ouvre des balises : \verb!<% \%>! +ou \verb!<%= \%>! et on écrit le code correspondant. + +Ce qui se passe derrière c'est que on inverse le code, ce qui se trouve entre +les balises devient du code exécutable, et ce qui se trouve autour se retrouve +décoré. Tout simplement comme si initialement le html avait été intégré dans +le code d'un langage interprété par publication. + +Une autre solution était envisagé, qui voulait considérer le html comme un langage +supporté par publication, et extraire les éléments de binding mais c'était plus +compliqué. + +Une nouvelle fois on va jouer avec le mimeType pour les WikittyPubText qui +seront des IHM. On leur mettra un mimeType composé de forme: text/html.javascript, +ce qui signifiera que l'on a un WikittyPubText qui entre les balises de délimitation +contient du javascript, et que l'on doit se servir des règles de décoration javascript. +Et que après décoration le contenu sera de mimeType: text/javascript. + +Voir annexes pour exemples de décoration interface. Added: trunk/wikitty-publication/src/site/rapport/part/wikittypublicationsync.tex =================================================================== --- trunk/wikitty-publication/src/site/rapport/part/wikittypublicationsync.tex (rev 0) +++ trunk/wikitty-publication/src/site/rapport/part/wikittypublicationsync.tex 2011-08-29 09:11:40 UTC (rev 1194) @@ -0,0 +1,268 @@ +\section{Wikitty Publication Synchronisation} + +La partie synchronisation de Wikitty Publication concerne des fonctionnalités +destinées à importer une application auprès d'un WikittyService. Mais pas +seulement, on doit pouvoir synchroniser deux WikittyService quelque soit son +implémentation, que ce soit un client cajo, hessian, un client base de donné ou +même un WikittyService sur file system. + +Cette approche de la synchronisation permet une grande flexibilité de +l'application et permet à terme la synchronisation de wikitty entre WikittyService, + et pas seulement ceux concerné par l'aspect publication. + +Cette approche implique la création d'une implémentation spécifique d'un wikitty +service pour stocker des wikitty en fichier et restaurer des fichiers en +wikitty. + + +\subsection{Correspondance Fichiers/Wikitty} + +Un fichier est défini par un nom, une extention, un contenu et un chemin. +dans Wikitty Publication les fichiers sont convertis en fonction de leurs type +en objet wikitty. Les fichiers sources sont convertit en WikittyPubText et les +fichiers binaires(eg image, etc) en WikittyPubData. + +Ces deux types de wikitty pourrons être dénommés dans la suite sous le nom +WikittyPub. + +Les deux types d'objet ont les mêmes attributs: +\begin{itemize} +\item Name: correspondant au nom du fichier +\item MimeType: correspondant au type mime du contenu, qui donnera l'extension +\item Content: le contenu binaire pour pour les PubData et textuel pour les +PubText +\end{itemize} + +Le mimetype détermine le contenu, le mime type est un élément très important, +la détermination du mimetype d'un fichier n'est pas laissé à une librairie, +elle est déterminer par un mimeTypeHandler qui contient un mapping défini +qui permet de connaitre l'extension du fichier et si il s'agit d'un +WikittyPubText ou WikittyPubData. Le mimeType est aussi très important dans +le processus d'évaluation d'un WikittyPub. + +A ces objets wikitty on associe un wikittyLabel, c'est un objet qui peut +contenir un ensemble de label différent, un label une chaine de texte. +Par exemple le label : \emph{src.org.chorem.entities} sert ici pour contenir le +chemin menant au fichier sur le file system. Un WikittyPub peut avoir un ou +plusieurs de label, pour les WikittyPub cela indiquera qu'ils appartiennent à +plusieurs arborescences. + +Pour enregistrer un wikitty en fichier, il suffit de construire l'arborescence +des dossiers en fonction du label du WikittyPub. Le nom du fichier est donné +par l'attribut nom du WikittyPub, son contenu aussi et l'extension par le mimeType. + +Pour assurer la restauration d'un WikittyPub qui aura été sauvegardé en fichier, +il faut enregistrer en plus des informations supplémentaire. Comme tout Wikitty, +les WikittyPub possèdent un numéro de version ainsi qu'un id qui les identifient +de façon unique. + +Il faut donc enregistrer ces informations, de plus il faut que le wikitty +service sur file système gère les modifications sur wikitty et donc modifie la +version des wikitty si besoin. + +La solution qui à été trouvée pour celà est les fichiers de propriétés dans un +dossier \emph{.wp/}. + +On distinguera deux fichiers de propriétés pour les informations, un qui +conservera les id des wikitty liés à leur nom de fichier. Et un autre fichiers de +propriété qui conservera un checksum, la version et les id aussi. En sus de +la sauvegarde des "meta information" des wikitty, ce fichier de propriété +conservera le nom du label courant, rendant immédiat la restauration (pas +besoin de traitement complexe sur les noms de fichiers/dossiers). + +On conserve les id dans un premier fichier puisque cela permet simplement de +récupérer l'ensemble des id et leurs noms de fichier lié, sans avoir besoin de +faire le tri parmi toutes les propriétés enregistrées. On converse l'id aussi +dans un autre fichier de propriété, à défaut d'avoir un systeme d'enregistrement +clé/valeur bidirectionnel. + +La propriété checksum sera utilisée pour enregistrer la somme de contrôle de +l'objet lors de son enregistrement, pour plus tard, savoir si celui ci à été +modifié depuis lors. + +Exemple pour un contenu de file system: +\begin{verbatim} + +racine + |script.js + |test.java + |image.png + |+.wp + ||ids.properties + ||meta.properties + |+directory2 + ||script3.js + ||+.wp + |||meta.properties + |||ids.properties + ||+directory3 + |||truc.js + |||+.wp + ||||meta.properties + ||||ids.properties + |+directory22 + ||machin.png + ||+.wp + |||versions.properties + |||ids.properties +\end{verbatim} + + +Exemples de fichiers de propriétés: +\begin{verbatim} +racine/.wp/meta.properties: + +current.label=racine +script.js.version=0.2 +version.scripttut.js=1.5 +version.image.png=12.0 +checksum.script.js=c48e20c27c00779be486ecac8f03c8e7 +checksum.scripttut.js=bffba35cafca7ad1ac9eee1b643579aa +checksum.image.png=c48e20c27c00779be486ecac8f03c8e7 +id.image.png=97410079-2c0c-47db-958e-8309d7147e2e +id.test.java=96fe0754-5ba5-47d5-a763-0adf0e839e47 +id.script.js=d5a2597f-c44f-4ed6-a16e-01371ec6d2d0 +\end{verbatim} + +\begin{verbatim} +racine/.wp/ids.properties: + +97410079-2c0c-47db-958e-8309d7147e2e=image.png +96fe0754-5ba5-47d5-a763-0adf0e839e47=test.java +d5a2597f-c44f-4ed6-a16e-01371ec6d2d0=script.js +\end{verbatim} + +\subsection{Un wikitty service file system} + +Un WikittyService implémenté pour un système de fichier doit pouvoir enregistrer +des wikitty en fichier et inversement. Pour se faire il se servira des fichiers +de propriétés précédemment exposé, et des conversions telles qu'elles le sont +proposées. + +En plus de la sauvegarde, restauration et suppression, ce type de WikittyService +doit, c'est la base du système de synchronisation, gérer les recherches par +critère des wikitty comme si il était stocké de façon classique dans une base. + +Pour correctement gérer ces options de sauvegarde, restauration, gestion de +version des wikitty, pour tout appel à la recherche ce wikitty service indexe +l'ensemble des fichiers: +\begin{itemize} +\item vérifie si il y a des nouveaux fichiers en comparant les valeurs dans les +fichier de propriétés "id.properties". Si il ya des nouveaux fichiers, il créer +des id, calcul les sommes de contrôle et enregistre le tout dans les fichiers de +propriétés. +\item il vérifie les sommes de contrôles des fichiers existants, et incrémente la +version pour ceux qui ont changé, et il met à jour la somme de contrôle +\item il cherche si des fichiers ont été supprimé, et le cas échéant enlève les +infos concernant le wikitty correspondant au fichier supprimé +\end{itemize} + +Avec ces fonctions le wikitty service file system est "complet" pour la +synchronisation, et pour tout autre utilisation. + +Le mécanisme qui indexe créer automatiquement les fichiers de propriété +nécessaire, ce qui implique que une arborescence de fichier peut être converti +en wikitty de cette façon, nul besoin d'initialiser un espace de travail en en +le créant à partir de wikitty, tout dossier peut devenir "une base wikitty". + +\subsection{Fonctionnalités de synchronisation} + +\subsubsection{Sync} + +La fonctionnalité sync permet de transférer l'ensemble des wikitty ciblés par +l'uri, d'un service wikitty à un autre. Son fonctionnement doit est similaire à +la commande linux "rsync". + +Quelques options on été reprise: +\begin{itemize} +\item Recursion pour savoir si l'on s'occupe des sous labels du label ciblé. +\item Update, qui permet de mettre à jour la cible et d'y envoyer les nouveaux +wikitty. Par défaut cette option est active, et est désactivée lorsque +les autres options (delete ou existing) sont choisis. +\item Existing qui est un update mais sans l'envois des nouveaux fichiers, on +envois juste ce qui à été mis à jour et qui existe sur le wikitty service cible. +\item Delete pour supprimer dans le WikittyService cible, ce qui n'existe plus +dans le WikittyService origine. +\end{itemize} + +La suppression n'est pas une vraie suppression, elle se contente de supprimer le +label ciblé du wikitty. L'éventuel suppression définitive du wikitty si celui ci +se retrouve sans label est à la charge du service. + +La partie protocole de l'uri permet de retrouver la bonne implémentation pour +communiquer avec le WikittyService désigné. + +La commande: + +\verb!wp sync [--norecursion] [--delete|--existing] [URI orgirine] [URI cible]! + +Avec URI sous forme: +\begin{itemize} +\item file:///truc/machin/\#label +\item hessian://www.adresse.com:8827/etc/etc\#label +\item cajo://www.adresse.com:8827/etc/etc\#label +\end{itemize} + +Évidement le path et le label pour une uri de type file détermine l'espace de +travail wikitty. eg: \emph{/truc/machin/label} est le repertoire racine + +Les labels de l'uri cible et origine peuvent être différent, ce qui signifie que +les labels ne sont pas transmit, le wikitty sur la cible est modifié mais pas +ses labels. + +Dans le cas de wikitty qui n'existe pas dans la cible, on remplacera le label +origine qui a permit de trouver ce wikitty par le label cible. + +\subsubsection{Commit/update} + +Les fonctionnalités commit/update sont des alias pour la commande sync. +L'utilisation de ces commandes implique la présence d'un espace de travail +précédemment initialisé/utilisé avec la commande sync. + +Les commandes commit et update permette de ne pas avoir besoin de préciser le +WikittyService cible de la synchronisation. On va synchroniser avec le dernier +WikittyService ciblé. Pour ce fonctionnement le la commande sync enregistre +au niveau du répertoire de travail du Service sur File System, un fichier +de propriété contenant l'adresse du dernier WikittyService avec lequel on l'a +synchronisé. + + +Un commit sera équivalent à un sync de l'espace de travail local vers un autre +wikitty service. + +Un update sera équivalent à un sync d'un autre wikitty service vers l'espace de +travail local. + +La commande: + +\verb!wp [update|commit] [--norecursion] [--delete|--existing] [label] [URI file]! + +L'URI file est optionnelle, si pas précisée on va commit/update le dossier +courant. + +Pour le commit/update, on doit forcément préciser le label pour le wikitty +service cible, cela pour permettre de commit/update au bon endroit. +La commande supporte évidement les mêmes options que pour une commande sync, en +toute logique. + + +\subsection{Fonctionnement de sync} + + +Une synchronisation entre deux WikittyService se fait en comparant les wikitty +qu'ils ont chacun, wikitty qui possèdent soit des labels précis ou des labels +commençant par une chaine, fonction de l'option récursion. + +On distinguera les wikitty qui existent dans les deux services, ceux présent +uniquement dans le wikitty service cible et ceux uniquement sur le wikitty +service d'origine. + +Ensuite en fonction de l'option de synchronisation ces différentes collection de +wikitty sont utilisé. + +Dans le cas d'une uptate tout les wikitty qui existe uniquement dans l'origine +son envoyé, et ceux présent dans les deux sont mis à jour. + +Dans le cas d'un existing seulement ceux présent dans les deux services sont mis à jour. +Et dans le cas d'un delete on va supprimer les labels des wikitty seulement +présent sur la cible. + Added: trunk/wikitty-publication/src/site/rapport/part/wikittystruts.tex =================================================================== --- trunk/wikitty-publication/src/site/rapport/part/wikittystruts.tex (rev 0) +++ trunk/wikitty-publication/src/site/rapport/part/wikittystruts.tex 2011-08-29 09:11:40 UTC (rev 1194) @@ -0,0 +1,163 @@ +\section{Wikitty Struts} + +Cette partie sur Wikitty n'était pas prévu au départ, mais à l'utilisation +il s'est avéré que le développement d'un tel module était nécessaire, et que +le travail précédemment effectué sur la partie site de Wikitty Publication +pouvait rendre la tache plus rapide. + + +\subsection{Objectfifs} + +L'édition de wikitty ou tout simplement l'utilisation de wikitty au sein de +formulaire deviennent des éléments récurrents dans les applications développées +chez code lutin. Cela puisque devient Wikitty une solution plus utilisée pour +le stockage. + +L'objectif de ce module wikitty-struts a donc été de créer une taglib permettant +une génération des formulaires pour les wikitty, afin de ne pas avoir à refaire +ce que l'on a déjà fait pour une autre application. + +Pour avoir une tag lib la plus complète possible, il a été décidé d'en faire une +qui marcherait de la même façon que la taglib struts de base, et se resservirait +de ses mécanismes interne, avec les templates. + +\subsection{La création d'un tag} + +\begin{figure}[!ht] + %[height=12cm,width=15cm] +\centering +\includegraphics[height=7cm,width=9cm]{image/explicationTag.png} + \caption{Diagramme des tags avec struts} + \label{diagtagstruts} +\end{figure} + +La création d'un tag classique, sans struts se fait par héritage de classe +tel que "TagSupport" qui est une des classes définies dans la norme J2E pour la +création des tags. En plus de la définition de la classe java, il faut écrire +dans un fichier xml (.tld) la définition du tag. La création de tag ainsi oblige +à écrire le code html directement dans le corps de la classe ou de devoir prévoir +l'architecture de support pour des templates. + +Les templates permettent en fait de séparer le rendu du post-traitement effectué +sur les attributs d'un tag, il permettent aussi de supporter plusieurs "thèmes", +c'est à dire des collections de css pour changer le rendu, etc. + +Faire des tag comme struts c'est un peu différent donc, sur la figure \ref{diagtagstruts} +on voit qu'il y a une certaine architecture déjà mise en place. Il y a une chaine +d'héritage étendant la norme pour les tag, et de l'autre une chaine d'héritage +de classe spécifique à struts. + +Pour créer des tags spécifiques on se place en bout de chaine, comme on le voit +avec \emph{classeMontag} en héritant de \emph{AbstractClosingTag} on ne fait pas +grand chose, on délègue à la classe héritant de \emph{ClosingUiBean} qui contient +elle la logique de traitement des éléments du tag. Ensuite il faut définir le +template écrit en \emph{freemarker}, qui lui contient le code html effectif +qui sera écrit avec les éléments récupérés par la classe héritant de \emph{ClosingUiBean}. +Il faut aussi écrire le fichier tld pour la description.\\ +\\ +Pour résumer la création d'une taglib c'est: + +\begin{itemize} +\item un fichier descripteur pour la taglib avec chaque tag de décrit +\item une classe héritant de ClosingUiBean pour chaque tag +\item une classe héritant de AbstractClosingTag pour chaque tag qui délègue à son ClosingUiBean correspondant +\item des fichiers de template en freemarker pour chaque tag +\end{itemize} + +Exemple de template freemarker: + +\lstset{ % +language=HTML, % the language of the code +basicstyle=\footnotesize, % the size of the fonts that are used for the code % where to put the line-numbers + % the size of the fonts that are used for the line-numbers + % the step between two line-numbers. If it's 1, each line +keywordstyle=\color[rgb]{0,0,1}, + % will be numbered +numbersep=5pt, % how far the line-numbers are from the code +showspaces=false, % show spaces adding particular underscores +showstringspaces=false, % underline spaces within strings +showtabs=false, % show tabs within strings adding particular underscores +tabsize=2, % sets default tabsize to 2 spaces +captionpos=b, % sets the caption-position to bottom +breaklines=true, % sets automatic line breaking +breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace +title=\lstname, % show the filename of files included with \lstinputlisting; + % also try caption instead of title +escapeinside={\%*}{*)}, % if you want to add a comment with +morekeywords={project,modelVersion,groupId,description,build, plugin,plugins,configuration, applicationName, wikittyServiceUrl, artifactId,serverID,uploadUrl} +} + + + +\begin{lstlisting} +<#include "/${parameters.templateDir}/${parameters.theme}/ws-label-commons.ftl" /> +<select +<#include "/${parameters.templateDir}/${parameters.theme}/ws-commons.ftl" /> + size="${parameters.selectSize}"> +<#assign optionKeys = parameters.value/> + <#list optionKeys as optionKey> + <option value="${optionKey.valeur}" + <#if optionKey.valeur==parameters.value > + selected + </#if> + > ${optionKey.description} </option> + </#list> +</select> +\end{lstlisting} + +Ce template, est le template pour le rendu en combobox ou liste de sélection, +il y a les éléments html et les éléments de langages freemarker. Avant que le +template soit remplit, les classes java correspondantes au tag remplissent +un map de paramètres à laquelle a accès le template, d'où les structures de contrôle +pour itérer dans cette exemple. + + +\subsection{La taglib wikitty struts "ws"} + +Les tags ainsi développés ont deux utilisations possibles, la création d'un +formulaire d'édition de wikitty, ou la création de formulaire utilisant les +champs de wikitty comme champs. + +La différenciation de l'utilisation des tags passent par l'utilisation du tag +de la taglib ws:form, qui implique que dans ce cas on se trouve dans l'édition d'un +wikitty. + +A l'utilisation si on met seulement le tag \emph{ws:form} et la source de donnée +(le wikitty) un formulaire basique va être créé en fonction du type des champs +du wikitty. Ensuite en utilisant les autres tags ou différents attributs du tag +\emph{ws:form} il est possible de choisir d'exclure de l'édition des extensions, +des champs ou de choisir le type d'affichage pour un champ donné (et identifié +par son nom complet soit nomExtention.nomChamp). + +En plus de fournir des tags pour la création de formulaire, la tag lib propose +une action qui permet de prendre en compte les modifications de wikitty envoyées +par le formulaire. Il s'agit d'une action abstraite struts que l'utilisateur à +besoin d'étendre pour implémenter la méthode accédant au proxy. + +Tags commun aux deux types d'utilisations: +\begin{itemize} +\item ws:hidden permet d'insérer le champ en tant que champs caché +\item ws:boolean permet d'insérer le champ en tant que checkbox +\item ws:textArea permet d'insérer le champ en tant que textArea +\item ws:textField permet d'insérer le champ en tant que textField +\item ws:date permet d'avoir un composant intelligent pour les dates +\item ws:selectFixed permet d'afficher un combobox avec des valeurs fixées à +l'avance, sera sélectionnée celle correspondant au champs wikitty liés +\item ws:selectCriteria permet d'afficher un combox box avec des wikitty, +sera sélectionnée le wikitty correspondant à l'id du wikitty du champ +(utilisé donc dans le cadre de relation entre wikitty)\\ +\end{itemize} + +Tag spécifique pour la création de formulaire: +\begin{itemize} +\item ws:form tag pour la création d'un formulaire d'édition des wikitty \\ +\end{itemize} + +Tags spécifiques à l'utilisation champ: +\begin{itemize} +\item ws:selectAssociation tag pour l'affichage de champ wikitty de type collection +\item ws:select tag pour l'affichage de collection de wikitty en tant que list ou combobox html +\end{itemize} + + + Added: trunk/wikitty-publication/src/site/rapport/rapportMain.tex =================================================================== --- trunk/wikitty-publication/src/site/rapport/rapportMain.tex (rev 0) +++ trunk/wikitty-publication/src/site/rapport/rapportMain.tex 2011-08-29 09:11:40 UTC (rev 1194) @@ -0,0 +1,171 @@ +\documentclass[12pt,a4paper,utf8x]{article} +\usepackage [frenchb]{babel} +%pour avoir du code source dans le code +\usepackage{listings} +\usepackage{color} +% Pour pouvoir utiliser +\usepackage{ucs} +\usepackage[utf8x]{inputenc} + +\usepackage{url} % Pour avoir de belles url +\usepackage {geometry} + +% Pour mettre du code source +\usepackage {listings} +% Pour pouvoir passer en paysage +\usepackage{lscape} +%pour mettre des images +\usepackage{graphicx} + +\usepackage[final]{pdfpages} + +% Pour pouvoir faire plusieurs colonnes +\usepackage {multicol} +% Pour crééer un index +\usepackage{makeidx} +\makeindex + +% Pour afficher la bibliographie, mais pas nottoc (Table of Contents), notlof (List of Figures) ni notlot (List of Tables) +\usepackage[notlof, notlot]{tocbibind} + + +% Pour les entetes de page +% \usepackage{fancyheadings} +%\pagestyle{fancy} +%\renewcommand{\sectionmark}[1]{\markboth{#1}{}} +%\renewcommand{\subsectionmark}[1]{\markright{#1}} + +% Pour l'interligne de 1.5 +\usepackage {setspace} +% Pour les marges de la page +\geometry{a4paper, top=2.5cm, bottom=3.5cm, left=1.5cm, right=1.5cm, marginparwidth=1.2cm} + +\parskip=5pt %% distance entre § (paragraphe) +\sloppy %% respecter toujours la marge de droite + +% Pour les pénalités : +\interfootnotelinepenalty=150 %note de bas de page +\widowpenalty=150 %% veuves et orphelines +\clubpenalty=150 + +%Pour la longueur de l'indentation des paragraphes +%\setlength{\parindent}{15mm} + + + +%%%% debut macro pour enlever le nom chapitre %%%% +\makeatletter +\def\@makechapterhead#1{% + \vspace*{50\p@}% + {\parindent \z@ \raggedright \normalfont + \interlinepenalty\@M + \ifnum \c@secnumdepth >\m@ne + \Huge\bfseries \thechapter\quad + \fi + \Huge \bfseries #1\par\nobreaka + \vskip 40\p@ + }} + +\def\@makeschapterhead#1{% + \vspace*{50\p@}% + {\parindent \z@ \raggedright + \normalfont + \interlinepenalty\@M + \Huge \bfseries #1\par\nobreak + \vskip 40\p@ + }} +\makeatother +%%%% fin macro %%%% + +%Couverture +\begin{document} +\begin{titlepage} + +\begin{center} +\normalsize{Master Alma\\ + Université de Nantes\\ + 2010-2011}\\ + +\huge +{ + + \vspace{15mm} + \Huge{Wikitty Publication}\\ + \normalsize{Rapport de stage} +} +\vspace{5mm} + +\large{FORTUN Manoël} + +\vspace{25mm} + + +\begin{figure}[htb] + \begin{center}$ + \begin{array}{cc} + \includegraphics[width=\textwidth/4]{image/logofac.png} & + \includegraphics[width=\textwidth/3]{image/logolutin.png} + \end{array}$ + \end{center} +\end{figure} + + \normalsize{\emph{Code Lutin}\\ + 44, boulevard des Pas Enchantés\\ + 44230 Saint-Sébastien-Sur-Loire\\ +} + + + \vspace{25mm} + Maitre de stage : \emph{POUSSIN Benjamin} \\ + Encadrant de stage : \emph{MOLLI Pascal} +\end{center} + + + + +\end{titlepage} + + +%%This is a very basic article template. +%%There is just one section and two subsections. + + + +\clearpage +\newpage +\null +\newpage + +\include{part/remerciement} +\clearpage +\include{part/resume} +\clearpage +\include{part/introduction} +\clearpage + +\tableofcontents + +\include{part/codelutin} +\clearpage +\include{part/organisation} +\clearpage +\include{part/wikitty} +\clearpage +\include{part/wikittypublication} +\clearpage +\include{part/wikittypublicationsync} +\clearpage +\include{part/wikittypublicationsite} +\clearpage +\include{part/wikittystruts} +\clearpage +\include{part/wikittypublicationexternalize} +\clearpage +\include{part/wikittymavenplugin} +\clearpage +\include{part/conclusion} +\clearpage +\include{part/annexes} + + +\end{document} Added: trunk/wikitty-publication/src/site/rapport/rapport_stage_FORTUN_Manoel_2010-2011.pdf =================================================================== (Binary files differ) Property changes on: trunk/wikitty-publication/src/site/rapport/rapport_stage_FORTUN_Manoel_2010-2011.pdf ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/wikitty-publication/src/site/rapport/ressources/planningprev.ods =================================================================== (Binary files differ) Property changes on: trunk/wikitty-publication/src/site/rapport/ressources/planningprev.ods ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/wikitty-publication/src/site/rapport/ressources/planningprev2.ods =================================================================== (Binary files differ) Property changes on: trunk/wikitty-publication/src/site/rapport/ressources/planningprev2.ods ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/wikitty-publication/src/site/rapport/ressources/planningprev2.pdf =================================================================== (Binary files differ) Property changes on: trunk/wikitty-publication/src/site/rapport/ressources/planningprev2.pdf ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/wikitty-publication/src/site/rapport/ressources/pom.xml =================================================================== --- trunk/wikitty-publication/src/site/rapport/ressources/pom.xml (rev 0) +++ trunk/wikitty-publication/src/site/rapport/ressources/pom.xml 2011-08-29 09:11:40 UTC (rev 1194) @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <modelVersion>4.0.0</modelVersion> + <groupId>org.exemple</groupId> + <artifactId>stub</artifactId> + <version>1.0</version> + <description>exemple project</description> + <build> + <plugins> + <plugin> + <groupId>org.nuiton.wikitty</groupId> + <artifactId>wp-maven-plugin</artifactId> + <version>3.2-SNAPSHOT</version> + <configuration> + <applicationName>example</applicationName> + <wikittyServiceUrl>cajo://localhost:1111/wikitty</wikittyServiceUrl> + <serveurID>serveurTest</serveurID> + <uploadUrl>http://localhost/</uploadUrl> + </configuration> + </plugin> + </plugins> + </build> +</project> Added: trunk/wikitty-publication/src/site/rapport/stage-sujet-2011-wikitty-publication lutin.pdf =================================================================== (Binary files differ) Property changes on: trunk/wikitty-publication/src/site/rapport/stage-sujet-2011-wikitty-publication lutin.pdf ___________________________________________________________________ Added: svn:mime-type + application/octet-stream
participants (1)
-
mfortun@users.nuiton.org