svn commit: r628402 - in /lenya/trunk/src/modules-core/monitoring: ./ config/ config/cocoon-xconf/ resources/ resources/grammars/ tools/ usecases/ xslt/

[email protected]
Newsgroups gmane.comp.cms.lenya.cvs
Message-ID <[email protected]>
Author: andreas
Date: Sat Feb 16 17:19:58 2008
New Revision: 628402

URL: http://svn.apache.org/viewvc?rev=628402&view=rev
Log:
Added session log diagram generation to monitoring module.

Added:
    lenya/trunk/src/modules-core/monitoring/config/cocoon-xconf/
    lenya/trunk/src/modules-core/monitoring/config/cocoon-xconf/monitoringModule.xconf
    lenya/trunk/src/modules-core/monitoring/config/cocoon-xconf/usecase-sessionLogs.xconf
    lenya/trunk/src/modules-core/monitoring/config/menu.xml
    lenya/trunk/src/modules-core/monitoring/resources/
    lenya/trunk/src/modules-core/monitoring/resources/grammars/
    lenya/trunk/src/modules-core/monitoring/resources/grammars/sessionLog.xlex
    lenya/trunk/src/modules-core/monitoring/sitemap.xmap
    lenya/trunk/src/modules-core/monitoring/tools/
    lenya/trunk/src/modules-core/monitoring/tools/compress_log.rb   (with props)
    lenya/trunk/src/modules-core/monitoring/usecases/
    lenya/trunk/src/modules-core/monitoring/usecases/sessionLogs.jx
    lenya/trunk/src/modules-core/monitoring/xslt/
    lenya/trunk/src/modules-core/monitoring/xslt/lexemes2log.xsl
    lenya/trunk/src/modules-core/monitoring/xslt/log2svg.xsl
    lenya/trunk/src/modules-core/monitoring/xslt/sessions2xhtml.xsl
    lenya/trunk/src/modules-core/monitoring/xslt/svg2pdf.xsl

Added: lenya/trunk/src/modules-core/monitoring/config/cocoon-xconf/monitoringModule.xconf
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/monitoring/config/cocoon-xconf/monitoringModule.xconf?rev=628402&view=auto
==============================================================================
--- lenya/trunk/src/modules-core/monitoring/config/cocoon-xconf/monitoringModule.xconf (added)
+++ lenya/trunk/src/modules-core/monitoring/config/cocoon-xconf/monitoringModule.xconf Sat Feb 16 17:19:58 2008
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+
+<!-- $Id: doctypes.xconf 164635 2005-04-25 20:01:43Z tschlabach $ -->
+
+<xconf xpath="/cocoon/input-modules" unless="/cocoon/input-modules/component-instance[@name = 'monitoring']">
+
+  <component-instance logger="core.modules.input.monitoring" name="monitoring"
+    class="org.apache.lenya.modules.monitoring.MonitoringModule"/>
+  
+</xconf>

Added: lenya/trunk/src/modules-core/monitoring/config/cocoon-xconf/usecase-sessionLogs.xconf
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/monitoring/config/cocoon-xconf/usecase-sessionLogs.xconf?rev=628402&view=auto
==============================================================================
--- lenya/trunk/src/modules-core/monitoring/config/cocoon-xconf/usecase-sessionLogs.xconf (added)
+++ lenya/trunk/src/modules-core/monitoring/config/cocoon-xconf/usecase-sessionLogs.xconf Sat Feb 16 17:19:58 2008
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<xconf xpath="/cocoon/usecases" unless="/cocoon/usecases/component-instance[@name = 'monitoring.sessionLogs']">
+  <component-instance name="monitoring.sessionLogs" logger="lenya.monitoring" class="org.apache.lenya.cms.usecase.DummyUsecase">
+    <view uri="modules/monitoring/usecases/sessionLogs.jx" menu="true" createContinuation="false"/>
+  </component-instance>
+</xconf>

Added: lenya/trunk/src/modules-core/monitoring/config/menu.xml
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/monitoring/config/menu.xml?rev=628402&view=auto
==============================================================================
--- lenya/trunk/src/modules-core/monitoring/config/menu.xml (added)
+++ lenya/trunk/src/modules-core/monitoring/config/menu.xml Sat Feb 16 17:19:58 2008
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+  
+    http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+
+<menu xmlns:uc="http://apache.org/cocoon/lenya/usecase/1.0"
+  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
+  xmlns="http://apache.org/cocoon/lenya/menubar/1.0">
+  <menus>
+    <menu i18n:attr="name" name="Development">
+      <block areas="admin site authoring">
+        <item uc:usecase="monitoring.sessionLogs"><i18n:text>Session Logs</i18n:text></item>
+      </block>
+    </menu>
+  </menus>
+</menu>
+

Added: lenya/trunk/src/modules-core/monitoring/resources/grammars/sessionLog.xlex
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/monitoring/resources/grammars/sessionLog.xlex?rev=628402&view=auto
==============================================================================
--- lenya/trunk/src/modules-core/monitoring/resources/grammars/sessionLog.xlex (added)
+++ lenya/trunk/src/modules-core/monitoring/resources/grammars/sessionLog.xlex Sat Feb 16 17:19:58 2008
@@ -0,0 +1,70 @@
+<?xml version="1.0"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+  
+  http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<lexicon xmlns="http://chaperon.sourceforge.net/schema/lexicon/1.0">
+  <lexeme symbol="logEntry">
+    <concat>
+      <!-- year -->
+      <cclass minOccurs="4" maxOccurs="4">
+        <cinterval min="0" max="9"/>
+      </cclass>
+      <cstring content="-"/>
+      <!-- month -->
+      <cclass minOccurs="2" maxOccurs="2">
+        <cinterval min="0" max="9"/>
+      </cclass>
+      <cstring content="-"/>
+      <!-- day -->
+      <cclass minOccurs="2" maxOccurs="2">
+        <cinterval min="0" max="9"/>
+      </cclass>
+      <cstring content=" "/>
+      <!-- hour -->
+      <group>
+        <cclass minOccurs="2" maxOccurs="2">
+          <cinterval min="0" max="9"/>
+        </cclass>
+      </group>
+      <cstring content=":"/>
+      <!-- minute -->
+      <group>
+        <cclass minOccurs="2" maxOccurs="2">
+          <cinterval min="0" max="9"/>
+        </cclass>
+      </group>
+      <cstring content=":"/>
+      <!-- second -->
+      <group>
+        <cclass minOccurs="2" maxOccurs="2">
+          <cinterval min="0" max="9"/>
+        </cclass>
+      </group>
+      <cstring content=","/>
+      <!-- millisecond -->
+      <cclass minOccurs="3" maxOccurs="3">
+        <cinterval min="0" max="9"/>
+      </cclass>
+      <cstring content=" Sessions: "/>
+      <group>
+        <!-- session count -->
+        <cclass minOccurs="1" maxOccurs="10">
+          <cinterval min="0" max="9"/>
+        </cclass>
+      </group>
+    </concat>
+  </lexeme>
+</lexicon>
\ No newline at end of file

Added: lenya/trunk/src/modules-core/monitoring/sitemap.xmap
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/monitoring/sitemap.xmap?rev=628402&view=auto
==============================================================================
--- lenya/trunk/src/modules-core/monitoring/sitemap.xmap (added)
+++ lenya/trunk/src/modules-core/monitoring/sitemap.xmap Sat Feb 16 17:19:58 2008
@@ -0,0 +1,72 @@
+<?xml version="1.0"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+
+<!-- $Id: admin.xmap 160670 2005-04-09 09:12:12Z andreas $ -->
+
+<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
+
+  <map:components>
+    
+    <map:serializers>
+      <map:serializer name="svg2png"
+        src="org.apache.cocoon.serialization.SVGSerializer"
+        mime-type="image/png"
+        logger="sitemap.serializer.svg2png"
+      />
+    </map:serializers>
+    
+  </map:components>
+  
+  <map:pipelines>
+    <map:pipeline type="noncaching">
+
+      <map:match pattern="sessionLogs.xml">
+        <map:generate type="directory" src="context://WEB-INF/logs">
+          <map:parameter name="include" value="sessions(.*)\.log"/>
+          <map:parameter name="sort" value="lastmodified"/>
+          <map:parameter name="reverse" value="true"/>
+        </map:generate>
+        <map:transform src="fallback://lenya/modules/monitoring/xslt/sessions2xhtml.xsl"/>
+        <map:serialize type="xml"/>
+      </map:match>
+      
+      <map:match pattern="sessionLogs/*.svg">
+        <map:generate type="text" src="context://WEB-INF/logs/{1}"/>
+        <map:transform type="pattern" src="fallback://lenya/modules/monitoring/resources/grammars/sessionLog.xlex"/>
+        <map:transform src="fallback://lenya/modules/monitoring/xslt/lexemes2log.xsl"/>
+        <map:transform src="fallback://lenya/modules/monitoring/xslt/log2svg.xsl">
+          <map:parameter name="title" value="{1}"/>
+        </map:transform>
+        <map:serialize type="xml"/>
+      </map:match>
+      
+      <map:match pattern="sessionLogs/*.png">
+        <map:generate src="cocoon:/sessionLogs/{1}.svg"/>
+        <map:serialize type="svg2png"/>
+      </map:match>
+      
+      <map:match pattern="sessionLogs/*.pdf">
+        <map:generate src="cocoon:/sessionLogs/{1}.svg"/>
+        <map:transform src="fallback://lenya/modules/monitoring/xslt/svg2pdf.xsl"/>
+        <map:serialize type="fo2pdf"/>
+      </map:match>
+    
+    </map:pipeline>
+  </map:pipelines>
+  
+</map:sitemap>
\ No newline at end of file

Added: lenya/trunk/src/modules-core/monitoring/tools/compress_log.rb
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/monitoring/tools/compress_log.rb?rev=628402&view=auto
==============================================================================
--- lenya/trunk/src/modules-core/monitoring/tools/compress_log.rb (added)
+++ lenya/trunk/src/modules-core/monitoring/tools/compress_log.rb Sat Feb 16 17:19:58 2008
@@ -0,0 +1,31 @@
+def compress_log(logfile_name)
+  puts "Hello"
+  File.open(logfile_name, "r") do |logfile|
+    max = 0
+    prev_minute = 0
+    prev_hour = ""
+    logfile.each_line { |line|
+      re = Regexp.new(/([0-9]{4}-[0-9]{2}-[0-9]{2}) ([0-9]{2}):([0-9]{2}):([0-9]{2}),[0-9]{3} Sessions: ([0-9]{1,10})/)
+      data = re.match(line)
+      if data
+        if prev_hour == ""
+          prev_hour = data[2]
+        end
+        hour = data[2]
+        minute = data[3]
+        if hour != prev_hour || minute != prev_minute
+          puts data[1] + " " + prev_hour + ":" + prev_minute.to_s + ":00,000" + " Sessions: " + max.to_s
+          prev_minute = minute
+          prev_hour = hour
+          max = 0
+        end
+        sessions = data[5].to_i
+        if sessions > max
+          max = sessions
+        end
+      end
+    }
+  end
+end
+
+compress_log(ARGV[0])

Propchange: lenya/trunk/src/modules-core/monitoring/tools/compress_log.rb
------------------------------------------------------------------------------
    svn:executable = *

Added: lenya/trunk/src/modules-core/monitoring/usecases/sessionLogs.jx
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/monitoring/usecases/sessionLogs.jx?rev=628402&view=auto
==============================================================================
--- lenya/trunk/src/modules-core/monitoring/usecases/sessionLogs.jx (added)
+++ lenya/trunk/src/modules-core/monitoring/usecases/sessionLogs.jx Sat Feb 16 17:19:58 2008
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+  
+  http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<!-- $Id: serverStatus.jx 509574 2007-02-20 14:24:44Z andreas $ -->
+
+<page:page
+  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
+  xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0"
+  xmlns="http://www.w3.org/1999/xhtml"
+  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
+  xmlns:cinclude="http://apache.org/cocoon/include/1.0"
+  >
+  
+  <page:body>
+    <h1><i18n:text>Session Logs</i18n:text></h1>
+    <cinclude:include src="cocoon://modules/monitoring/sessionLogs.xml"/>
+  </page:body>
+  
+</page:page>
\ No newline at end of file

Added: lenya/trunk/src/modules-core/monitoring/xslt/lexemes2log.xsl
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/monitoring/xslt/lexemes2log.xsl?rev=628402&view=auto
==============================================================================
--- lenya/trunk/src/modules-core/monitoring/xslt/lexemes2log.xsl (added)
+++ lenya/trunk/src/modules-core/monitoring/xslt/lexemes2log.xsl Sat Feb 16 17:19:58 2008
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+  
+  http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
+  xmlns:text="http://chaperon.sourceforge.net/schema/text/1.0"
+  xmlns:lex="http://chaperon.sourceforge.net/schema/lexemes/2.0"
+  xmlns:mon="http://apache.org/lenya/monitoring/1.0">
+  
+  <xsl:template match="/text:text">
+    <mon:log>
+      <xsl:attribute name="max">
+        <xsl:for-each select="lex:lexeme">
+          <xsl:sort select="lex:group[5]" data-type="number" order="ascending"/>
+          <xsl:if test="position() = last()">
+            <xsl:value-of select="lex:group[5]"/>
+          </xsl:if>
+        </xsl:for-each>
+      </xsl:attribute>
+      <xsl:apply-templates select="lex:lexeme"/>
+    </mon:log>
+  </xsl:template>
+  
+  
+  <xsl:template match="lex:lexeme[@symbol='logEntry']">
+    <mon:entry hour="{lex:group[2]}" min="{lex:group[3]}" sec="{lex:group[4]}" sessions="{lex:group[5]}"/>
+  </xsl:template>
+  
+  
+</xsl:stylesheet>
\ No newline at end of file

Added: lenya/trunk/src/modules-core/monitoring/xslt/log2svg.xsl
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/monitoring/xslt/log2svg.xsl?rev=628402&view=auto
==============================================================================
--- lenya/trunk/src/modules-core/monitoring/xslt/log2svg.xsl (added)
+++ lenya/trunk/src/modules-core/monitoring/xslt/log2svg.xsl Sat Feb 16 17:19:58 2008
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+  
+  http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
+  xmlns:mon="http://apache.org/lenya/monitoring/1.0"
+  xmlns:svg="http://www.w3.org/2000/svg">
+  
+  <xsl:param name="title"/>
+  <xsl:param name="width" select="number(600)"/>
+  <xsl:param name="height" select="number(400)"/>
+  <xsl:param name="yGrid" select="20"/>
+  <xsl:param name="marginLeft" select="50"/>
+  <xsl:param name="margin" select="20"/>
+  
+  <xsl:variable name="hourWidth" select="$width div 24"/>
+  
+  <xsl:variable name="maxValue" select="/mon:log/@max"/>
+  <xsl:variable name="max" select="ceiling($maxValue div $yGrid) * $yGrid"/>
+  
+  <xsl:template match="/mon:log">
+    <svg:svg width="{$marginLeft + $width + 2 * $margin}" height="{$height + 2 * $margin}">
+      <svg:text x="{$margin + $marginLeft + $width div 2}" y="{$margin - 5}" style="font-weight: bold;" text-anchor="middle"><xsl:value-of select="$title"/></svg:text>
+      <xsl:call-template name="yLine"/>
+      <xsl:call-template name="hourLine"/>
+      <xsl:apply-templates select="mon:entry"/>
+    </svg:svg>
+  </xsl:template>
+  
+  
+  <xsl:template name="yLine">
+    <xsl:param name="value" select="$max"/>
+    <xsl:variable name="y" select="$margin + $height - ($value div $max) * $height"/>
+    <svg:line x1="{$margin + $marginLeft}" y1="{$y}" x2="{$margin + $marginLeft + $width}" y2="{$y}" stroke-width=".25" stroke="black"/>
+    <svg:text align="right" x="{$margin + $marginLeft - 5}" y="{$y + 5}" text-anchor="end"><xsl:value-of select="$value"/></svg:text>
+    <xsl:if test="$value &gt; 0">
+      <xsl:call-template name="yLine">
+        <xsl:with-param name="value" select="(ceiling($value div $yGrid) - 1) * $yGrid"/>
+      </xsl:call-template>
+    </xsl:if>
+  </xsl:template>
+  
+  
+  <xsl:template  name="hourLine">
+    <xsl:param name="hour" select="0"/>
+    <xsl:variable name="x" select="$margin + $marginLeft + $hour * $hourWidth"/>
+    <svg:line x1="{$x}" y1="{$margin}" x2="{$x}" y2="{$margin + $height}" stroke-width=".25" stroke="black"/>
+    <svg:text x="{$x - 5}" y="{2 * $margin + $height}"><xsl:value-of select="format-number($hour, '00')"/></svg:text>
+    <xsl:if test="$hour &lt; 24">
+      <xsl:call-template name="hourLine">
+        <xsl:with-param name="hour" select="$hour + 1"/>
+      </xsl:call-template>
+    </xsl:if>
+  </xsl:template>
+  
+  
+  <xsl:template match="mon:entry[preceding-sibling::mon:entry]">
+    <xsl:variable name="p" select="preceding-sibling::mon:entry[1]"/>
+    <xsl:variable name="px" select="$margin + $marginLeft + $p/@hour * $hourWidth + $p/@min * ($hourWidth div 60) + $p/@sec * ($hourWidth div 3600)"/>
+    <xsl:variable name="py" select="$margin + $height - ($p/@sessions div $max) * $height"/>
+    <xsl:variable name="x" select="$margin + $marginLeft + @hour * $hourWidth + @min * ($hourWidth div 60) + @sec * ($hourWidth div 3600)"/>
+    <xsl:variable name="y" select="$margin + $height - (@sessions div $max) * $height"/>
+    <svg:line x1="{$px}" y1="{$py}" x2="{$x}" y2="{$y}" stroke="blue" stroke-width=".25" stroke-linecap="round"/>
+  </xsl:template>
+
+</xsl:stylesheet>
\ No newline at end of file

Added: lenya/trunk/src/modules-core/monitoring/xslt/sessions2xhtml.xsl
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/monitoring/xslt/sessions2xhtml.xsl?rev=628402&view=auto
==============================================================================
--- lenya/trunk/src/modules-core/monitoring/xslt/sessions2xhtml.xsl (added)
+++ lenya/trunk/src/modules-core/monitoring/xslt/sessions2xhtml.xsl Sat Feb 16 17:19:58 2008
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+  
+  http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
+  xmlns:dir="http://apache.org/cocoon/directory/2.0"
+  xmlns="http://www.w3.org/1999/xhtml">
+  
+  
+  <xsl:template match="dir:directory">
+    <table class="lenya-table-list" style="margin-top: 2em;">
+      <xsl:apply-templates select="*"/>
+    </table>
+  </xsl:template>
+  
+  
+  <xsl:template match="dir:file">
+    <tr>
+      <td><xsl:value-of select="@name"/></td>
+      <td><a href="/modules/monitoring/sessionLogs/{@name}.png">PNG</a></td>
+      <td><a href="/modules/monitoring/sessionLogs/{@name}.svg">SVG</a></td>
+      <td><a href="/modules/monitoring/sessionLogs/{@name}.pdf">PDF</a></td>
+    </tr>
+  </xsl:template>
+
+</xsl:stylesheet>
\ No newline at end of file

Added: lenya/trunk/src/modules-core/monitoring/xslt/svg2pdf.xsl
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/monitoring/xslt/svg2pdf.xsl?rev=628402&view=auto
==============================================================================
--- lenya/trunk/src/modules-core/monitoring/xslt/svg2pdf.xsl (added)
+++ lenya/trunk/src/modules-core/monitoring/xslt/svg2pdf.xsl Sat Feb 16 17:19:58 2008
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
+  xmlns:svg="http://www.w3.org/2000/svg"
+  xmlns:fo="http://www.w3.org/1999/XSL/Format">
+  
+  <xsl:template match="svg:svg">
+    <fo:root>
+      
+      <fo:layout-master-set>
+        <fo:simple-page-master master-name="A4-landscape" page-width="297mm" page-height="210mm">
+          <fo:region-body margin="2cm"/>
+        </fo:simple-page-master>
+      </fo:layout-master-set>
+      
+      <fo:page-sequence master-reference="A4-landscape">
+        <fo:flow flow-name="xsl-region-body">
+          <fo:block>
+            <fo:instream-foreign-object>
+              <xsl:copy-of select="."/>
+            </fo:instream-foreign-object>
+          </fo:block>
+        </fo:flow>
+      </fo:page-sequence>
+      
+    </fo:root>
+    
+  </xsl:template>
+
+</xsl:stylesheet>
\ No newline at end of file
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.