+++ /dev/null
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!DOCTYPE xsl:stylesheet [
-<!ENTITY nbsp " ">
-<!ENTITY egrave "è">
-<!ENTITY euro "€">
-<!ENTITY agrave "à">
-<!ENTITY eacute "é">
-]><!-- xmlns="http://www.xemelios.org/namespaces#cge" -->
-<xsl:transform
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns="http://www.w3.org/1999/xhtml"
- xmlns:n="http://www.xemelios.org/namespaces#cge"
- xmlns:added="http://www.xemelios.org/namespaces#added"
- version="2.0"
- exclude-result-prefixes="added n xsl">
- <xsl:character-map name="accents">
- <xsl:output-character character="à" string="&#224;"/>
- <xsl:output-character character="é" string="&#233;"/>
- <xsl:output-character character="è" string="&#232;"/>
- <xsl:output-character character="ê" string="&#234;"/>
- <xsl:output-character character="ë" string="&#235;"/>
- <xsl:output-character character="î" string="&#238;"/>
- <xsl:output-character character="ï" string="&#239;"/>
- <xsl:output-character character="ô" string="&#244;"/>
- <xsl:output-character character="ù" string="&#249;"/>
- </xsl:character-map>
-
- <xsl:decimal-format name="decformat" decimal-separator="," grouping-separator=" " digit="#" pattern-separator=";" NaN="NaN" minus-sign="-"/>
-
- <!-- Inclusion des XSL externes -->
- <xsl:include href="./common-xsl/Style.xsl"/>
- <xsl:include href="./common-xsl/Error.xsl"/>
- <xsl:include href="./common-xsl/Navigate.xsl"/>
- <xsl:include href="./common-xsl/Header.xsl"/>
- <xsl:include href="./common-xsl/Number.xsl"/>
-
- <!-- Paramètres d'entrée -->
- <xsl:param name="show.formulaire"/>
- <xsl:param name="browser-destination"/>
-
- <!-- Paramètres Web -->
- <xsl:param name="is.web">-1</xsl:param>
- <xsl:param name="context.path"/>
-
- <!-- Paramètres d'entrée de la liste de résultat -->
- <xsl:param name="libPoste">0</xsl:param>
-
- <!-- Paramètres d'erreur -->
- <xsl:param name="error.message">nomessage</xsl:param>
-
- <!-- Paramètres d'entrée de la liste de résultat -->
- <xsl:param name="numCompte">0</xsl:param>
- <xsl:param name="ministere">0</xsl:param>
- <xsl:param name="programme">0</xsl:param>
- <xsl:param name="article">0</xsl:param>
-
- <!-- Variables -->
- <xsl:variable name="page-format" select="paysage"/>
- <xsl:variable name="NumPage" select="/n:CompteGestionEtat/n:DeveloppementDepense/n:PageDeveloppementDepense/n:Pied/@NumPage"/>
- <xsl:variable name="LastPage" select="/n:CompteGestionEtat/n:DeveloppementDepense/n:PageDeveloppementDepense/@added:LastPage"/>
- <xsl:variable name="isLastPage" select="/n:CompteGestionEtat/n:DeveloppementDepense/n:PageDeveloppementDepense/@added:isLastPage"/>
- <xsl:variable name="Entete">
- <xsl:copy-of select="/n:CompteGestionEtat/n:Entete"/>
- </xsl:variable>
-
- <xsl:output method="xhtml" indent="yes" use-character-maps="accents" encoding="ISO-8859-1"/>
-
- <!-- pour eviter les sorties parasites de tags non matches -->
- <xsl:template match="*"/>
-
- <xsl:template match="/n:CompteGestionEtat">
- <html>
- <head>
- <title>Développement des dépenses budgétaires par ministère et programme</title>
- <xsl:call-template name="style"/>
- </head>
- <body>
- <xsl:if test="$error.message!='nomessage'">
- <xsl:attribute name="onload">javascript:showDialog('<xsl:value-of select="$error.message"/>');</xsl:attribute>
- </xsl:if>
- <xsl:call-template name="Error"><!--xsl:with-param name="error.message" select="$error.message"/--></xsl:call-template>
- <xsl:call-template name="navigate">
- <xsl:with-param name="docId">compteGestionEtat</xsl:with-param>
- <xsl:with-param name="etatId">DeveloppementDepense</xsl:with-param>
- <xsl:with-param name="elementId">PageDeveloppementDepense</xsl:with-param>
- <xsl:with-param name="sous.elementId">LigneDeveloppementDepense</xsl:with-param>
- <xsl:with-param name="NumPage" select="$NumPage"/>
- <xsl:with-param name="LastPage" select="$LastPage"/>
- <xsl:with-param name="isLastPage" select="$isLastPage"/>
- <xsl:with-param name="Entete" select="$Entete"/>
- <xsl:with-param name="show.formulaire" select="$show.formulaire"/>
- <xsl:with-param name="show.formulaire.compte" select="1"/>
- <xsl:with-param name="show.depense.recette" select="0"/>
- <xsl:with-param name="is.web" select="$is.web"/>
- <xsl:with-param name="context.path" select="$context.path"/>
- </xsl:call-template>
- <xsl:call-template name="header" >
- <xsl:with-param name="Entete" select="$Entete"/>
- <xsl:with-param name="Titre">Développement des dépenses budgétaires par ministère et programme</xsl:with-param>
- </xsl:call-template>
- <xsl:call-template name="mainTable">
- <xsl:with-param name="el" select="n:DeveloppementDepense/n:PageDeveloppementDepense"/>
- </xsl:call-template>
- <p>
- <center>Page <xsl:choose><xsl:when test="$LastPage and string-length($LastPage) > 0"><xsl:value-of select="$NumPage"/> / <xsl:value-of select="$LastPage"/></xsl:when><xsl:otherwise>- <xsl:value-of select="$NumPage"/></xsl:otherwise></xsl:choose></center>
- </p>
- <xsl:call-template name="navigate">
- <xsl:with-param name="docId">compteGestionEtat</xsl:with-param>
- <xsl:with-param name="etatId">DeveloppementDepense</xsl:with-param>
- <xsl:with-param name="elementId">PageDeveloppementDepense</xsl:with-param>
- <xsl:with-param name="sous.elementId">LigneDeveloppementDepense</xsl:with-param>
- <xsl:with-param name="NumPage" select="$NumPage"/>
- <xsl:with-param name="LastPage" select="$LastPage"/>
- <xsl:with-param name="isLastPage" select="$isLastPage"/>
- <xsl:with-param name="Entete" select="$Entete"/>
- <xsl:with-param name="show.formulaire" select="$show.formulaire"/>
- <xsl:with-param name="show.formulaire.compte" select="1"/>
- <xsl:with-param name="show.depense.recette" select="0"/>
- <xsl:with-param name="ancre">#footer</xsl:with-param>
- <xsl:with-param name="display.logos.entete">0</xsl:with-param>
- <xsl:with-param name="is.web" select="$is.web"/>
- <xsl:with-param name="context.path" select="$context.path"/>
- </xsl:call-template>
- <p id="footer"/>
- </body>
- </html>
- </xsl:template>
-
- <xsl:template name="mainTable">
- <xsl:param name="el"/>
- <table width="100%" class="bordered" id="main">
- <colgroup>
- <col width="20%"/>
- <col width="25%"/>
- <col width="10%"/>
- <col width="20%"/>
- <col width="10%"/>
- <col width="15%"/>
- </colgroup>
- <thead>
- <tr class="titre">
- <td class="titre2 center bold bordered">Comptes</td>
- <td class="titre2 center bold bordered">Montant OAD</td>
- <td class="titre2 center bold bordered">Ministère</td>
- <td class="titre2 center bold bordered">Programmes</td>
- <td class="titre2 center bold bordered">Article<br/>exécution</td>
- <td class="titre2 center bold bordered">Dépenses admises</td>
- </tr>
- </thead>
- <tbody>
- <xsl:variable name="nums.comptes" select="distinct-values($el/n:LigneDeveloppementDepense/@NumCompte)"/>
- <xsl:for-each select="$nums.comptes">
- <xsl:sort select="."/>
- <xsl:variable name="this.compte" select="."/>
- <xsl:variable name="lignes.this.compte" select="$el/n:LigneDeveloppementDepense[@NumCompte=$this.compte]"/>
- <xsl:variable name="nb.lignes.this.compte" select="count($lignes.this.compte)"/>
-
- <xsl:variable name="ministeres.lignes.this.compte" select="distinct-values($lignes.this.compte/@Ministere)"/>
-
- <xsl:variable name="min.ministere" select="min($lignes.this.compte/@Ministere)"/>
- <xsl:variable name="min.ministere.lignes" select="$lignes.this.compte[number(@Ministere)=$min.ministere]"/>
-
- <xsl:variable name="min.article.ministere.lignes" select="min($min.ministere.lignes/@ArticleExec)"/>
-
- <xsl:variable name="first" select="$min.ministere.lignes[1]/@added:generated-id"/>
-
-
- <xsl:variable name="position.compte" select="position()"/>
-
-
- <tr class="mask">
- <td class="titre center bold bordered">
- <xsl:attribute name="rowspan" select="$nb.lignes.this.compte"/>
- <h3 style="color: black;"><xsl:value-of select="."/></h3>
- </td>
- <td colspan="5"> </td>
- </tr>
- <xsl:for-each select="$ministeres.lignes.this.compte">
- <xsl:sort select="." data-type="text"/>
- <xsl:variable name="this.ministere" select="."/>
- <xsl:variable name="lignes.this.ministere" select="$lignes.this.compte[@Ministere=$this.ministere]"/>
-
- <xsl:variable name="position.ministere" select="position()"/>
-
- <xsl:variable name="programme.this.ministeres.lignes.this.compte" select="distinct-values($lignes.this.ministere/@Programme)"/>
-
- <xsl:for-each select="$programme.this.ministeres.lignes.this.compte">
- <xsl:sort select="."/>
- <xsl:variable name="this.programme" select="."/>
- <xsl:variable name="lignes.this.programme" select="$lignes.this.ministere[@Programme=$this.programme]"/>
-
- <xsl:for-each select="$lignes.this.programme[string-length(@ArticleExec) > 0]">
- <xsl:sort select="@ArticleExec" data-type="text"/>
- <xsl:variable name="articleExec" select="@ArticleExec"/>
- <xsl:variable name="position.programme" select="position()"/>
- <tr>
- <xsl:choose>
- <xsl:when test="$numCompte != '0' and @NumCompte=$numCompte and $this.ministere=$ministere and $this.programme=$programme and $articleExec=$article">
- <xsl:attribute name="id">highlighted</xsl:attribute>
- </xsl:when>
- <xsl:otherwise>
- <xsl:choose>
- <xsl:when test="(position() mod 2) = 0">
- <xsl:attribute name="id">colorised3</xsl:attribute>
- </xsl:when>
- <xsl:otherwise>
- <xsl:attribute name="id">colorised2</xsl:attribute>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:choose>
- <xsl:when test="@MtDebit"><xsl:attribute name="class">NotTotal</xsl:attribute></xsl:when>
- </xsl:choose>
-
- <td class="montant bordered"><xsl:call-template name="number"><xsl:with-param name="num" select="@MtDebit"/></xsl:call-template> €</td>
- <td class="bordered center"><xsl:value-of select="$this.ministere"/></td>
- <xsl:if test="$position.programme eq 1">
- <td class="bordered center">
- <xsl:attribute name="rowspan" select="count($lignes.this.programme) - 1"/>
- <xsl:value-of select="$this.programme"/>
- </td>
- </xsl:if>
- <td class="bordered center"><xsl:value-of select="@ArticleExec"/></td>
- <!--td class="montant bordered"><xsl:call-template name="number"><xsl:with-param name="num" select="@MtDebit"/></xsl:call-template> €</td-->
- <xsl:element name="a">
- <xsl:attribute name="href">
- <xsl:text disable-output-escaping="yes">xemelios:/customLink?srcDocId=compteGestionEtat&srcEtatId=DeveloppementDepense&srcElementId=PageDeveloppementDepense&srcCollectivite=</xsl:text><xsl:value-of select="$Entete//n:Collectivite/@Siret"/>
- <xsl:text disable-output-escaping="yes">&srcBudget=</xsl:text><xsl:value-of select="$Entete//n:Collectivite/@CodeBudget"/>
- <xsl:text disable-output-escaping="yes">&sp1=</xsl:text><xsl:value-of select="$Entete//n:Collectivite/@Exercice"/>
- <xsl:text disable-output-escaping="yes">&comptable=</xsl:text><xsl:value-of select="$Entete//n:Collectivite/@Siret"/>
- <xsl:text disable-output-escaping="yes">&ministere=</xsl:text><xsl:value-of select="$this.ministere"/>
- <xsl:text disable-output-escaping="yes">&programme=</xsl:text><xsl:value-of select="$this.programme"/>
- <xsl:text disable-output-escaping="yes">&articleExec=</xsl:text><xsl:value-of select="@ArticleExec"/>
- </xsl:attribute>
- <xsl:call-template name="number"><xsl:with-param name="num" select="@MtDebit"/></xsl:call-template> €</xsl:element>
- </tr>
- </xsl:for-each>
- <xsl:variable name="ligne.total.this.programme" select="$lignes.this.programme[string-length(@ArticleExec) eq 0]"/>
- <tr>
- <!--td class="libelleLigne bold bordered"> <xsl:value-of select="$this.compte"/></td-->
- <td class="bold bordered center totalAnnexeII" colspan="4">Total Programme <xsl:value-of select="$this.programme"/></td>
- <td class="montant bold bordered totalAnnexeII"><xsl:call-template name="number"><xsl:with-param name="num" select="$ligne.total.this.programme/@MtDebit"/></xsl:call-template> €</td>
- </tr>
- </xsl:for-each>
- </xsl:for-each>
- <xsl:variable name="ligne.total.this.compte" select="$lignes.this.compte[string-length(@Ministere) eq 0]"/>
- <tr>
- <td class="bold totalAnnexeII1 bordered right">Total du compte <xsl:value-of select="$this.compte"/></td>
- <td class="montant bold bordered totalAnnexeII1"><xsl:call-template name="number"><xsl:with-param name="num" select="$ligne.total.this.compte/@MtDebit"/></xsl:call-template> €</td>
- <td class="montant bold bordered totalAnnexeII1" colspan="4"><xsl:call-template name="number"><xsl:with-param name="num" select="$ligne.total.this.compte/@MtDebit"/></xsl:call-template> €</td>
- </tr>
- </xsl:for-each>
- </tbody>
- </table>
- </xsl:template>
-
-</xsl:transform>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.xemelios.org/namespaces#cge" xmlns:n="http://www.xemelios.org/namespaces#cge" version="2.0">
- <xsl:template name="style">
- <style type="text/css" media="all">
- body {font-family: verdana, sans-serif; font-size: 12px; }
-
- .numPage {font-family: verdana, sans-serif; font-size: 12px; }
- /*.numCompte { position:absolute; left: 10em; font-size: 14px; font-weight: bold;}*/
-
- h1 { font-size: 20px; color: #003535; font-weight: bold; }
- h2 { font-size: 14px; color: #004545; text-align: center;}
- h3 { font-size: 12px; color: #005555; text-align: center;}
-
- span {font-size: 18px; font-weight: bold;}
-
- span a:link {color: #0000FF; font-size: 18px; font-weight: bold; font-style: underline;}
- span a:visited {color: #0000FF; font-size: 18px; font-weight: bold; font-style: underline;}
-
- table#main {border-spacing: 0px; background-color: white; border: #000000 solid 2px;border-collapse: collapse; }
- table#mainBorderedNot {border-spacing: 0px; background-color: white; border: #000000 none 2px; border-collapse: collapse; }
-
-
- .bordered { border: #000000 solid 1px;}
- .borderedBold { border: #000000 solid 2px;}
-
- .borderedNot { border: #000000 none 1px;}
-
- .bordureRight { border-right: #000000 solid 1px; }
- .bordureLeft { border-left: #000000 solid 1px; }
-
- .bordureTop { border-top: #000000 solid 1px; }
- .bordureTopBold { border-top: #000000 solid 2px; }
-
- .bordureBottom { border-bottom: #000000 solid 1px; }
- .bordureBottomBold { border-bottom: #000000 solid 2px; }
-
- .borderedNotTop { border-bottom: #000000 solid 1px ; border-left: #000000 solid 1px ; border-right: #000000 solid 1px ;}
- .borderedNotBottom { border-top: #000000 solid 1px ; border-left: #000000 solid 1px ; border-right: #000000 solid 1px ;}
- .borderedNotLeft { border-top: #000000 solid 1px ; border-bottom: #000000 solid 1px ; border-right: #000000 solid 1px ;}
- .borderedNotRight { border-top: #000000 solid 1px ; border-bottom: #000000 solid 1px ; border-left: #000000 solid 1px ;}
-
- b.negative { color: red;}
-
- tr#colorised1 td {background-color: #FFFFC5; }
- tr#colorised2 td {background-color: #FFFFE0; } /* jaune pale */
- tr#colorised3 td {background-color: #D9EEFF; } /* bleu pale */
-
- tr#highlighted td {background-color: #FFFF68; font-weight:bold; }
- tr#highlighted td a { font-weight: bold; }
- tr#highlighted td a:hover { color: #FF4000; }
-
- tr.paddingLeft td { padding-left: 20px;}
-
- tr.total td { font-weight:bold; font-size: 12px;}
- tr.total td a { font-weight: bold; font-size: 12px;}
- tr.total td a:hover { color: #FF4000; font-size: 12px;}
-
- tr.Total td { font-weight:bold; font-size: 12px;}
- tr.Total td a { font-weight: bold; font-size: 12px;}
- tr.Total td a:hover { color: #FF4000; font-size: 12px;}
-
- td.totalAnnexeII1 { background-color: #FFFF9A; font-size: 13px;}
- td.totalAnnexeII { color: navy; background-color: #FFFFBB; font-size: 12px;}
-
- tr.NotTotal td{ font-size: 12.5px;}
-
- a:link { color: #0000FF; background: transparent; }
- a:visited { color: #FF3ABA; background: transparent; }
-
- td#highlighted {background-color: #FFFF68; font-weight:bold; }
-
- td#padding2 { padding-left: 20px;}
- td#padding4 { padding-left: 40px;}
- td#padding6 { padding-left: 60px;}
- td#padding8 { padding-left: 80px;}
- td#padding10 { padding-left: 100px;}
- td#padding12 { padding-left: 120px;}
- td#padding14 { padding-left: 140px;}
- td#padding70 { padding-left: 200px;}
- td#padding77 { padding-left: 220px;}
-
- a {font-size: 12.5px;}
-
- a.precsuiv { color: #0000FF; background: transparent; font-style: normal; text-decoration: none;}
- a.sommaire:visited { color: #0000FF; background: transparent; font-style: normal;}
-
- tr.mask td {heigth: 0px; font-size: 0px;}
- tr[id!=mask] td { height: 20px;}
-
- td.right { text-align: right; }
- td.left { text-align: left; }
- td.center { text-align: center; }
- td.bold { font-weight:bold; }
- td.montant { white-space: nowrap;text-align: right;}
-
- td.titre { font-size: 12px;}
- td.titre2 { font-size: 11px;}
- td.titre3 { font-size: 10px;}
-
- td.libelleLigne { text-align: right; font-size: 12px; }
- td.libelleLigne2 { text-align: right; font-size: 10px; }
-
- td.font { background-color: #FFFFFF; }
-
-
- tr.lineEntete1 td { height: 20px;}
-
- div p { padding-left: 75px;}
- div p input { padding-left: 20px;}
-
- td#message { border: red solid 2px; text-align: center; v-align: middle; color: red; width: 50%;}
-
- caption { color: navy; font-size: 12px; font-weight: bold;}
- label { font-size: 11px; font-weight: bold;}
-
- img {border: none;}
-
- .formulaire {display: block;}
- .navigate {display: block;}
- .showPrint { display: none;}
- </style>
- <style type="text/css" media="print">
- /*@page { size: 297mm 210mm; @bottom-center { content: "Page " counter(page) " / " counter(pages); } }*/
- @page { font-family: verdana; font-size: 10px; size: 445mm 315mm; @bottom-right { content: counter(page) " / " counter(pages); } }
-
- .formulaire {display: none;}
- .navigate {display: none;}
- .hidePrint { display: none;}
- .showPrint { display: block;}
-
- a {text-decoration: none;color: black;}
-
- body {font-size: 10px;}
-
- table#main {width=100%; border-spacing: 0px; background-color: white; border: #000000 solid 2px;border-collapse: collapse; -fs-table-paginate: paginate;}
- table#mainBorderedNot {border-spacing: 0px; background-color: white; border: #000000 none 2px; border-collapse: collapse; -fs-table-paginate: paginate;}
-
- tr { page-break-inside: avoid;}
-
- tr#colorised1 td {background-color: #FFFFFF; }
- tr#colorised2 td {background-color: #FFFFFF; }
-
- tr#highlighted td {background-color: #FFFFFF; font-weight: normal;}
-
- td#padding2 { padding-left: 5px;}
- td#padding4 { padding-left: 10px;}
- td#padding6 { padding-left: 15px;}
- td#padding8 { padding-left: 20px;}
- td#padding10 { padding-left: 25px;}
- td#padding12 { padding-left: 30px;}
- td#padding14 { padding-left: 35px;}
- td#padding70 { padding-left: 40px;}
- td#padding77 { padding-left: 50px;}
-
- td.bold { font-weight:bold; }
-
- tr.total td { font-weight:bold; font-size: 10px;}
-
- tr.total td a { font-weight: bold; font-size: 10px;}
- tr.total td a:hover { color: #FF4000; font-size: 10px;}
-
- tr#highlighted td a { font-weight: normal; }
-
- .bordureRight { border: #000000 solid 1px ; }
- .bordered { border: #000000 solid 1px;}
- </style>
- </xsl:template>
-
-</xsl:stylesheet>
+++ /dev/null
-/*
- * Copyright
- * 2009 axYus - www.axyus.com
- * 2009 C.Marchand - christophe.marchand@axyus.com
- * 2009 JP.Tessier - jean-philippe.tessier@axyus.com
- *
- * This file is part of XEMELIOS.
- *
- * XEMELIOS is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * XEMELIOS is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with XEMELIOS; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-package fr.gouv.finances.dgfip.xemelios.cge.linkResolver;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.util.ArrayList;
-import java.util.Properties;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.transform.Result;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.transform.stream.StreamSource;
-import javax.xml.xpath.XPath;
-import javax.xml.xpath.XPathFactory;
-
-import org.apache.log4j.Logger;
-import org.w3c.dom.Document;
-
-import fr.gouv.finances.dgfip.utils.NavigationContext;
-import fr.gouv.finances.dgfip.utils.Pair;
-import fr.gouv.finances.dgfip.utils.xml.FactoryProvider;
-import fr.gouv.finances.dgfip.utils.xml.transform.CustomURIResolver;
-import fr.gouv.finances.dgfip.xemelios.auth.XemeliosUser;
-import fr.gouv.finances.dgfip.xemelios.common.config.DocumentModel;
-import fr.gouv.finances.dgfip.xemelios.common.config.ElementModel;
-import fr.gouv.finances.dgfip.xemelios.common.config.EtatModel;
-import fr.gouv.finances.dgfip.xemelios.common.config.Loader;
-import fr.gouv.finances.dgfip.xemelios.common.config.customLinks.CustomLinkParameters;
-import fr.gouv.finances.dgfip.xemelios.common.config.customLinks.CustomLinkResolver;
-import fr.gouv.finances.dgfip.xemelios.common.config.customLinks.UnresolvedException;
-import fr.gouv.finances.dgfip.xemelios.data.DataConfigurationException;
-import fr.gouv.finances.dgfip.xemelios.data.DataImpl;
-import fr.gouv.finances.dgfip.xemelios.data.DataLayerManager;
-
-/**
- *
- * @author chm
- */
-public class CGECustomLinkResolver extends CustomLinkResolver {
- private static final Logger logger = Logger.getLogger(CGECustomLinkResolver.class);
- private Properties xslParameters = new Properties();
-
- public CGECustomLinkResolver() {
- super();
- logger.debug("instanciating");
- }
-
- @Override
- public NavigationContext resolve(CustomLinkParameters parameters,Result result, NavigationContext ctx, XemeliosUser user) throws DataConfigurationException, UnresolvedException {
- logger.debug("in resolve(CustomLinkParameters,Result,NavigationContext,XemeliosUser)");
- //Hashtable<String,String> hParams = new Hashtable<String,String>();
- if(parameters.getSrcDocId().equals("compteGestionEtat") && parameters.getSrcEtatId().equals("BalanceGenerale")){
- treatBalanceGenerale(parameters,ctx);
- commonTreatment(parameters,ctx,result,user);
- } else if(parameters.getSrcDocId().equals("compteGestionEtat") && parameters.getSrcEtatId().equals("FichesBudgetaires")){
- treatFichesBudgetaires(parameters,ctx);
- commonTreatment(parameters,ctx,result,user);
- } else if(parameters.getSrcDocId().equals("compteGestionEtat") && parameters.getSrcEtatId().equals("DeveloppementDepense")){
- treatAnnexeIIEdmn(parameters, ctx, user);
- commonTreatment(parameters,ctx,result,user);
- }
- return ctx;
- }
-
- private void commonTreatment(CustomLinkParameters parameters, NavigationContext ctx, Result result, XemeliosUser user) throws UnresolvedException,DataConfigurationException {
- logger.debug("in commontTreatment(CustomLinkParameters,NavigationContext,Result,XemeliosUser)");
- try{
- DataImpl impl = DataLayerManager.getImplementation();
- DocumentModel dm = Loader.getDocumentsInfos(null).getDocumentById(ctx.getDocId());
- EtatModel em = dm.getEtatById(ctx.getEtatId());
- ElementModel element = em.getElementById(ctx.getElementId());
- File xslFile = null;
- xslFile = new File(new File(new File(System.getProperty("user.home")),"xemelios/documents-def-ovrrd"),element.getXslt());
- if(!xslFile.exists()) xslFile = new File(em.getParent().getBaseDirectory(),element.getXslt());
-
- FileInputStream fis = new FileInputStream(xslFile);
- String docId = null;
- if(ctx.getPath()==null) {
- ArrayList<String> documents = impl.getDocumentListFromSpecialKeys(element,ctx.getCollectivite(),ctx.getBudget(),ctx.getSp1(),ctx.getSp2(),ctx.getSp3(),user);
- if(documents.size()==0) {
- throw new UnresolvedException("Le document est introuvable.");
- } else if(documents.size()>1 && !em.isMultiPage()) {
- throw new UnresolvedException("Plusieurs documents répondant à ces critères ont été trouvés.");
- } else {
- docId = documents.get(0);
- }
- } else {
- if(ctx.getElementId()==null) {
- ctx.setElementId(element.getId());
- }
- if(ctx.getPath()!=null && ctx.getPath().startsWith("[")) {
- ctx.setPath(element.getPath().getFormattedPath()+ctx.getPath());
- }
- ArrayList<String> documents = impl.getDocumentListFromXPath(element,ctx.getCollectivite(),ctx.getBudget(),ctx.getSp1(),ctx.getSp2(),ctx.getSp3(),ctx.getPath(), user);
- if(documents.size()==0) {
- throw new UnresolvedException("Ce compte n'est associé a aucun(e) "+ctx.getEtatId()+".");
- } else if(documents.size()>1){
- docId=documents.get(0);
- } else {
- docId=documents.get(0);
- }
- }
-
- Document doc = impl.getDocumentAsDom(em,new Pair(ctx.getCollectivite(),null),new Pair(ctx.getBudget(),null),docId , user);
- TransformerFactory tFactory = FactoryProvider.getTransformerFactory();
- tFactory.setURIResolver(new CustomURIResolver(tFactory.getURIResolver(), xslFile.getParentFile().toURI().toURL().toExternalForm()));
- Transformer t = tFactory.newTransformer(new StreamSource(xslFile));
- for(String key:parameters.getParameters().keySet()) {
- if(key.startsWith("xsl:param")) {
- String paramValue = parameters.getParameter(key);
- int virg = paramValue.indexOf(',');
- String pName = paramValue.substring(1,virg);
- String pValue = paramValue.substring(virg+1,paramValue.length()-1);
- t.setParameter(pName, pValue);
- }
- }
- t.transform(new DOMSource(doc),result);
- } catch(UnresolvedException unEx) {
- throw unEx;
- } catch (Exception e) {
- logger.error("commontTreatment(CustomLinkParameters,NavigationContext,Result,XemeliosUser)",e);
- throw new DataConfigurationException(e);
- }
- }
-
-
- /** La liaison entre chacune des lignes est
- * - EDMN : Année budgétaire, Comptable, Ministère, Programme, Sous-action
- * - CdG-Etat Annexe II : Exercice, Comptable, Ministère, Programme, Article d'exécution
- */
-
- private void treatAnnexeIIEdmn(CustomLinkParameters parameters,NavigationContext ctx, XemeliosUser user) throws UnresolvedException {
- try{
- DataImpl impl = DataLayerManager.getImplementation();
-
- String exercice = parameters.getParameter("exercice");
- String comptable = parameters.getParameter("comptable");
- String ministere = parameters.getParameter("ministere");
- String programme = parameters.getParameter("programme");
- String articleExec = parameters.getParameter("articleExec");
-
- ctx.setDocId("edmn");
- ctx.setEtatId("etatEdmn");
- ctx.setElementId("ligneEdmn");
- ctx.setSp1(exercice);
-
- if(parameters.getSrcCollectivite() != null){
- ctx.setCollectivite("000000000000");
- }
- if(parameters.getSrcBudget() != null){
- ctx.setBudget("0000");
- }
-
- /* EDMN Etat Importé ? */
- DocumentModel dm = Loader.getDocumentsInfos(null).getDocumentById(ctx.getDocId());
- EtatModel em = dm.getEtatById(ctx.getEtatId());
- ElementModel element = em.getElementById(ctx.getElementId());
- ArrayList<String> documents = impl.getDocumentListFromXPath(element,ctx.getCollectivite(),ctx.getBudget(),ctx.getSp1(),ctx.getSp2(),ctx.getSp3(),ctx.getPath(), user);
- if(documents.size()==0) {
- ctx.setCollectivite(comptable);
- ctx.setBudget("00");
- }
-
- StringBuffer path = new StringBuffer("[");
- path.append("n:Comptable/@V=").append(comptable)
- .append(" and n:Ministere/@V=").append(ministere)
- .append(" and n:ChapBudg/@V=").append(programme)
- .append(" and n:ArtBudgExec/@V=").append(articleExec)
- .append("]");
- ctx.setPath(path.toString());
- } catch (Exception e) {
- logger.debug("Erreur", e);
- throw new UnresolvedException("treatFichesBudgetaires(CustomLinkParameters parameters,NavigationContext ctx)");
- }
- }
-
-
- private void treatBalanceGenerale(CustomLinkParameters parameters,NavigationContext ctx){
- try{
- logger.debug("in treatBalanceGenerale(CustomLinkParameters parameters,NavigationContext ctx)");
- DocumentModel dm = Loader.getDocumentsInfos(null).getDocumentById(ctx.getDocId());
- String baseDir = dm.getBaseDirectory();
- File f = new File(baseDir,dm.getParameters().getParameter("liens.balance").getValue());
- DocumentBuilder db = FactoryProvider.getDocumentBuilderFactory().newDocumentBuilder();
- Document LiensBalance = db.parse(f);
-
- String CodRD= (parameters.getParameter("CodRD")!=null)?parameters.getParameter("CodRD"):"";
- String numCompte = parameters.getParameter("numCompte");
-
- ctx.setDocId("compteGestionEtat");
- if(parameters.getSrcCollectivite() != null){
- ctx.setCollectivite(parameters.getSrcCollectivite());
- }
- if(parameters.getSrcBudget() != null){
- ctx.setBudget(parameters.getSrcBudget());
- }
- if(parameters.getParameter("sp1") != null){
- ctx.setSp1(parameters.getParameter("sp1"));
- }
- if(parameters.getParameter("sp2") != null){
- ctx.setSp2(parameters.getParameter("sp2"));
- }
- if(parameters.getParameter("sp3") != null){
- ctx.setSp3(parameters.getParameter("sp3"));
- }
-
- if(numCompte != null) {
- if(numCompte.startsWith("1")){ // Compte de classe 1
- ctx.setEtatId("FichesBudgetaires");
- ctx.setElementId("PageFichesBudgetaires");
- ctx.setPath("[n:EnteteFichesBudgetaires/@NumCompte="+numCompte+"][n:EnteteFichesBudgetaires/@CodRD="+CodRD+"]");
-
- } else if(numCompte.startsWith("2")){ // Compte de classe 2
- ctx.setEtatId("FichesBudgetaires");
- ctx.setElementId("PageFichesBudgetaires");
- ctx.setPath("[n:EnteteFichesBudgetaires/@NumCompte="+numCompte+"][n:EnteteFichesBudgetaires/@CodRD="+CodRD+"]");
-
- } else if((numCompte.startsWith("4") || numCompte.startsWith("5")) && (!numCompte.startsWith("48") && !numCompte.startsWith("49"))){ // Compte de classe 4 ou 5
- XPath xp = XPathFactory.newInstance().newXPath();
- String compteGestionEtat = parameters.getParameter("cg");
- String typeLien = parameters.getParameter("type");
-
- String etatSolde = xp.evaluate("/Editions/Comptes[@Edition='"+compteGestionEtat+"']/Compte[@Numero='"+numCompte+"']/@Solde",LiensBalance.getDocumentElement());
- String etatDebit = xp.evaluate("/Editions/Comptes[@Edition='"+compteGestionEtat+"']/Compte[@Numero='"+numCompte+"']/@Debit",LiensBalance.getDocumentElement());
- String etatCredit = xp.evaluate("/Editions/Comptes[@Edition='"+compteGestionEtat+"']/Compte[@Numero='"+numCompte+"']/@Credit",LiensBalance.getDocumentElement());
-
- if(etatSolde!=null && !etatSolde.equals("") && typeLien.equals("solde")){
- String path = "";
- if(etatSolde.equals("ERAR") || etatSolde.equals("ERAP")){
- if(etatSolde.equals("ERAR")){
- path += "[n:EnteteSolde/@Type='RAR']";
- }else{
- path += "[n:EnteteSolde/@Type='RAP']";
- }
- etatSolde="Solde";
- }
- ctx.setEtatId(etatSolde);
- ctx.setElementId("Page"+etatSolde);
-
- path += "[n:Entete"+etatSolde+"/@NumCompte="+numCompte+"]";
- if(CodRD!=null && !CodRD.equals("") && !etatSolde.equals("DeveloppementSoldes") && !etatSolde.equals("Solde") && !etatSolde.equals("LivreAuxiliaire")){
- path += "[n:Entete"+etatSolde+"/@CodRD="+CodRD+"]";
- }
- ctx.setPath(path);
- }else if(etatCredit!=null && !etatCredit.equals("") && typeLien.equals("totaux") && CodRD!=null && CodRD.equals("R")){
- String path = "";
- if(etatCredit.equals("ERAR") || etatCredit.equals("ERAP")){
- if(etatCredit.equals("ERAR")){
- path += "[n:EnteteSolde/@Type='RAR']";
- }else{
- path += "[n:EnteteSolde/@Type='RAP']";
- }
- etatCredit="Solde";
- }
- ctx.setEtatId(etatCredit);
- ctx.setElementId("Page"+etatCredit);
-
- path += "[n:Entete"+etatCredit+"/@NumCompte="+numCompte+"]";
- if(CodRD!=null && !CodRD.equals("") && !etatCredit.equals("DeveloppementSoldes") && !etatCredit.equals("Solde") && !etatCredit.equals("LivreAuxiliaire")){
- path += "[n:Entete"+etatCredit+"/@CodRD="+CodRD+"]";
- }
- ctx.setPath(path);
- }else if(etatDebit!=null && !etatDebit.equals("") && typeLien.equals("totaux") && CodRD!=null && CodRD.equals("D")){
- String path = "";
- if(etatDebit.equals("ERAR") || etatDebit.equals("ERAP")){
- if(etatDebit.equals("ERAR")){
- path += "[n:EnteteSolde/@Type='RAR']";
- }else{
- path += "[n:EnteteSolde/@Type='RAP']";
- }
- etatDebit="Solde";
- }
- ctx.setEtatId(etatDebit);
- ctx.setElementId("Page"+etatDebit);
-
- path += "[n:Entete"+etatDebit+"/@NumCompte="+numCompte+"]";
- if(CodRD!=null && !CodRD.equals("") && !etatDebit.equals("DeveloppementSoldes") && !etatDebit.equals("Solde") && !etatDebit.equals("LivreAuxiliaire")){
- path += "[n:Entete"+etatDebit+"/@CodRD="+CodRD+"]";
- }
- ctx.setPath(path);
- } else {
- ctx.setEtatId("LivreAuxiliaire");
- ctx.setElementId("PageLivreAuxiliaire");
- ctx.setPath("[n:EnteteLivreAuxiliaire/@NumCompte="+numCompte+"]");
- }
- } else if(numCompte.startsWith("48")){ // Compte de classe 48
- ctx.setEtatId("FichesBudgetaires");
- ctx.setElementId("PageFichesBudgetaires");
- if(numCompte.contains("9")){
- CodRD="R";
- }else{
- CodRD="D";
- }
- ctx.setPath("[n:EnteteFichesBudgetaires/@NumCompte="+numCompte+"][n:EnteteFichesBudgetaires/@CodRD="+CodRD+"]");
- } else if(numCompte.startsWith("49")){ // Compte de classe 49
- ctx.setEtatId("FichesBudgetaires");
- ctx.setElementId("PageFichesBudgetaires");
- if(numCompte.contains("9")){
- CodRD="R";
- }else{
- CodRD="D";
- }
- ctx.setPath("[n:EnteteFichesBudgetaires/@NumCompte="+numCompte+"][n:EnteteFichesBudgetaires/@CodRD="+CodRD+"]");
- } else if(numCompte.startsWith("6")){ // Compte de classe 6
- ctx.setEtatId("FichesBudgetaires");
- ctx.setElementId("PageFichesBudgetaires");
- if(numCompte.contains("9")){
- CodRD="R";
- }else{
- CodRD="D";
- }
- ctx.setPath("[n:EnteteFichesBudgetaires/@NumCompte="+numCompte+"][n:EnteteFichesBudgetaires/@CodRD="+CodRD+"]");
- } else if(numCompte.startsWith("7")){ // Compte de classe 7
- ctx.setEtatId("FichesBudgetaires");
- ctx.setElementId("PageFichesBudgetaires");
- if(numCompte.contains("9")){
- CodRD="D";
- }else{
- CodRD="R";
- }
- ctx.setPath("[n:EnteteFichesBudgetaires/@NumCompte="+numCompte+"][n:EnteteFichesBudgetaires/@CodRD="+CodRD+"]");
- }
- }
- } catch (Exception e){
- e.printStackTrace();
- }
- }
-
- private void treatFichesBudgetaires(CustomLinkParameters parameters,NavigationContext ctx) throws UnresolvedException {
- try{
- //String numeroTypePiece = parameters.getParameter("numeroTypePiece");
- String codRD = parameters.getParameter("codRD");
- String exercice = parameters.getParameter("exercice");
- String mtEmis = parameters.getParameter("mtEmis");
- String mtAnn = parameters.getParameter("mtAnn");
- String mandatId = parameters.getParameter("mandatId");
-
-
- ctx.setDocId("PES_Aller");
- if(codRD.equals("D")){
- ctx.setEtatId("PES_DepenseAller");
- ctx.setElementId("Piece");
- }else{
- ctx.setEtatId("PES_RecetteAller");
- ctx.setElementId("PieceRecette");
- }
-
- if(parameters.getSrcCollectivite() != null){
- ctx.setCollectivite(parameters.getSrcCollectivite());
- }
- if(parameters.getSrcBudget() != null){
- ctx.setBudget(parameters.getSrcBudget());
- }
- if(ctx.getSp1() != null){
- //ctx.resetSp1();
- ctx.setSp1(null);
- }
- String typeBordereau ="";
- if(mtEmis!=null && mtEmis.length()>0){
- typeBordereau="01";
- } else if(mtAnn!=null && mtAnn.length()>0){
- typeBordereau="02";
- }
-// ctx.setPath("[n:BlocBordereau/n:Exer/@V="+exercice+"][n:BlocBordereau/n:TypBord/@V="+typeBordereau+"]");
- StringBuffer path = new StringBuffer();
- path.append("[../n:BlocBordereau/n:Exer/@V=").append(exercice).append("][../n:BlocBordereau/n:TypBord/@V=").append(typeBordereau).append("]");
- if("D".equals(codRD)) {
- path.append("[n:BlocPiece/n:InfoPce/n:IdPce/@V=").append(mandatId).append("]");
- } else {
- path.append("[n:BlocPiece/n:IdPce/@V=").append(mandatId).append("]");
- }
- ctx.setPath(path.toString());
- } catch (Exception e) {
- logger.debug("Erreur", e);
- throw new UnresolvedException("treatFichesBudgetaires(CustomLinkParameters parameters,NavigationContext ctx)");
- }
- }
-
- private void debug(Document doc){
- try {
- Transformer t = FactoryProvider.getTransformerFactory().newTransformer();
- t.transform(new DOMSource(doc), new StreamResult(System.out));
- } catch (TransformerException e) {
- e.printStackTrace();
- }
- }
-
- /**
- * @param additionalsParameters the additionalsParameters to set
- */
- @Override
- public void setXslParameters(Properties additionalsParameters) {
- this.xslParameters = additionalsParameters;
- }
-
-}