--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="WEB_MODULE" version="4">
+ <component name="NewModuleRootManager">
+ <content url="file://$MODULE_DIR$" />
+ <orderEntry type="inheritedJdk" />
+ <orderEntry type="sourceFolder" forTests="false" />
+ </component>
+</module>
\ No newline at end of file
--- /dev/null
+<component name="CopyrightManager">
+ <settings default="" />
+</component>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="Encoding">
+ <file url="PROJECT" charset="UTF-8" />
+ </component>
+</project>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="PhpUnit">
+ <phpunit_settings>
+ <PhpUnitSettings />
+ </phpunit_settings>
+ </component>
+ <component name="ProjectInspectionProfilesVisibleTreeState">
+ <entry key="Project Default">
+ <profile-state>
+ <expanded-state>
+ <State>
+ <id />
+ </State>
+ <State>
+ <id>Assignment issuesJavaScript</id>
+ </State>
+ <State>
+ <id>CSS</id>
+ </State>
+ <State>
+ <id>Code StylePHP</id>
+ </State>
+ <State>
+ <id>Control flow issuesJavaScript</id>
+ </State>
+ <State>
+ <id>Cucumber</id>
+ </State>
+ <State>
+ <id>DOM issuesJavaScript</id>
+ </State>
+ <State>
+ <id>General</id>
+ </State>
+ <State>
+ <id>GeneralJavaScript</id>
+ </State>
+ <State>
+ <id>Ignore</id>
+ </State>
+ <State>
+ <id>Ini Files</id>
+ </State>
+ <State>
+ <id>Invalid elementsCSS</id>
+ </State>
+ <State>
+ <id>JSON</id>
+ </State>
+ <State>
+ <id>JavaScript</id>
+ </State>
+ <State>
+ <id>JavaScript function metricsJavaScript</id>
+ </State>
+ <State>
+ <id>JavaScript validity issuesJavaScript</id>
+ </State>
+ <State>
+ <id>PHP</id>
+ </State>
+ <State>
+ <id>Potentially confusing code constructsJavaScript</id>
+ </State>
+ <State>
+ <id>Probable bugsPHP</id>
+ </State>
+ <State>
+ <id>SQL</id>
+ </State>
+ <State>
+ <id>Sass/SCSS</id>
+ </State>
+ <State>
+ <id>Type compatibilityPHP</id>
+ </State>
+ <State>
+ <id>XML</id>
+ </State>
+ <State>
+ <id>XPath</id>
+ </State>
+ <State>
+ <id>XSLT</id>
+ </State>
+ </expanded-state>
+ </profile-state>
+ </entry>
+ </component>
+ <component name="ProjectLevelVcsManager" settingsEditedManually="false">
+ <OptionsSetting value="true" id="Add" />
+ <OptionsSetting value="true" id="Remove" />
+ <OptionsSetting value="true" id="Checkout" />
+ <OptionsSetting value="true" id="Update" />
+ <OptionsSetting value="true" id="Status" />
+ <OptionsSetting value="true" id="Edit" />
+ <ConfirmationsSetting value="0" id="Add" />
+ <ConfirmationsSetting value="0" id="Remove" />
+ </component>
+ <component name="SvnConfiguration">
+ <configuration>$USER_HOME$/.subversion</configuration>
+ </component>
+</project>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="ProjectModuleManager">
+ <modules>
+ <module fileurl="file://$PROJECT_DIR$/.idea/TedetisJava.iml" filepath="$PROJECT_DIR$/.idea/TedetisJava.iml" />
+ </modules>
+ </component>
+</project>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="VcsDirectoryMappings">
+ <mapping directory="$PROJECT_DIR$" vcs="Git" />
+ </component>
+</project>
\ No newline at end of file
--- /dev/null
+<?xml version='1.0' encoding='ISO-8859-1' ?>
+<actes:ARDemandePieceComplementaire xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216" xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd" actes:IDActe="001-862614864-20160803-20160822B-AI" actes:DateCourrierPref="2016-08-22" />
\ No newline at end of file
--- /dev/null
+<?xml version='1.0' encoding='ISO-8859-1' ?>
+<actes:EnveloppeCLMISILL xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216" xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd">
+ <actes:Emetteur>
+ <actes:IDCL insee:SIREN="862614864" actes:Departement="001" actes:Arrondissement="1" actes:Nature="3" />
+ </actes:Emetteur>
+ <actes:AdressesRetour>
+ <actes:Email>eric@sigmalis.com</actes:Email>
+ <actes:Email>eric@sigmalis.com</actes:Email>
+ <actes:Email>tedetis@sigmalis.com</actes:Email>
+ </actes:AdressesRetour>
+ <actes:FormulairesEnvoyes>
+ <actes:Formulaire>
+ <actes:NomFichier>001-862614864-20160803-20160822B-AI-3-2_0.xml</actes:NomFichier>
+ </actes:Formulaire>
+ </actes:FormulairesEnvoyes>
+</actes:EnveloppeCLMISILL>
\ No newline at end of file
--- /dev/null
+Manifest-Version: 1.0
+Class-Path:
+
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
+ <display-name>TedetisActes</display-name>
+
+ <servlet>
+ <description>Simulateur des messages ACTES en provenances du ministère et à destination du tedetis</description>
+ <display-name>SimulateurMinistere</display-name>
+ <servlet-name>SimulateurMinistere</servlet-name>
+ <servlet-class>com.adullact.tedetis.servlet.SimulateurMinistere</servlet-class>
+ </servlet>
+
+ <servlet>
+ <description>Réception des mails via une boite IMAP</description>
+ <display-name>MailReception</display-name>
+ <servlet-name>MailReception</servlet-name>
+ <servlet-class>com.adullact.tedetis.servlet.MailReception</servlet-class>
+ </servlet>
+
+ <servlet>
+ <description>Réception des mails via la requete de la servlet</description>
+ <display-name>MailReceptionByRequest</display-name>
+ <servlet-name>MailReceptionByRequest</servlet-name>
+ <servlet-class>com.adullact.tedetis.servlet.MailReceptionByRequest</servlet-class>
+ </servlet>
+
+ <servlet>
+ <description>Envoie des archives sur le ministère</description>
+ <display-name>EnvoieArchive</display-name>
+ <servlet-name>EnvoieArchive</servlet-name>
+ <servlet-class>com.adullact.tedetis.servlet.EnvoieArchive</servlet-class>
+ </servlet>
+
+ <servlet>
+ <description>Test de la configuration (fichier actes.properties)</description>
+ <display-name>TestEnvironnement</display-name>
+ <servlet-name>TestEnvironnement</servlet-name>
+ <servlet-class>com.adullact.tedetis.servlet.TestEnvironnement</servlet-class>
+ </servlet>
+
+ <servlet>
+ <description>Validation d'une archive</description>
+ <display-name>ValideArchive</display-name>
+ <servlet-name>ValideArchive</servlet-name>
+ <servlet-class>com.adullact.tedetis.servlet.ValideArchive</servlet-class>
+ </servlet>
+
+ <servlet>
+ <description>Envoie des fichiers helios</description>
+ <display-name>EnvoieFichierHelios</display-name>
+ <servlet-name>EnvoieFichierHelios</servlet-name>
+ <servlet-class>com.adullact.tedetis.servlet.EnvoieFichierHelios</servlet-class>
+ </servlet>
+
+ <servlet>
+ <description>Test d'une exception</description>
+ <display-name>ExceptionServlet2</display-name>
+ <servlet-name>ExceptionServlet2</servlet-name>
+ <servlet-class>com.adullact.tedetis.servlet.ExceptionServlet2</servlet-class>
+ </servlet>
+
+ <servlet>
+ <description>Envoi d'un mail avec attachement</description>
+ <display-name>SendMailWithAttachment</display-name>
+ <servlet-name>SendMailWithAttachment</servlet-name>
+ <servlet-class>com.adullact.tedetis.servlet.SendMailWithAttachment</servlet-class>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>EnvoieFichierHelios</servlet-name>
+ <url-pattern>/EnvoieFichierHelios</url-pattern>
+ </servlet-mapping>
+
+
+ <servlet>
+ <description>Analyse des fichiers helios</description>
+ <display-name>AnalyseFichierHelios</display-name>
+ <servlet-name>AnalyseFichierHelios</servlet-name>
+ <servlet-class>com.adullact.tedetis.servlet.AnalyseFichierHelios</servlet-class>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>AnalyseFichierHelios</servlet-name>
+ <url-pattern>/AnalyseFichierHelios</url-pattern>
+ </servlet-mapping>
+
+ <servlet>
+ <description>Reception des fichiers helios</description>
+ <display-name>ReceptionFichierHelios</display-name>
+ <servlet-name>ReceptionFichierHelios</servlet-name>
+ <servlet-class>com.adullact.tedetis.servlet.ReceptionFichierHelios</servlet-class>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>ReceptionFichierHelios</servlet-name>
+ <url-pattern>/ReceptionFichierHelios</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>SimulateurMinistere</servlet-name>
+ <url-pattern>/SimulateurMinistere</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>SimulateurMinistere</servlet-name>
+ <url-pattern>/SimulateurMinistereProtected</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>ExceptionServlet2</servlet-name>
+ <url-pattern>/ExceptionServlet2</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>SendMailWithAttachment</servlet-name>
+ <url-pattern>/SendMailWithAttachment</url-pattern>
+ </servlet-mapping>
+
+
+ <security-constraint>
+ <web-resource-collection>
+ <web-resource-name>Simulateur Ministere protegé</web-resource-name>
+ <url-pattern>/SimulateurMinistereProtected</url-pattern>
+ <http-method>GET</http-method>
+ <http-method>POST</http-method>
+ </web-resource-collection>
+ <auth-constraint>
+ <role-name>tedetis_simulateur_user</role-name>
+ </auth-constraint>
+ </security-constraint>
+
+ <security-role>
+ <description>Utilisateur tedetis</description>
+ <role-name>tedetis_simulateur_user</role-name>
+ </security-role>
+
+ <login-config>
+ <auth-method>BASIC</auth-method>
+ <realm-name>TedetisActes</realm-name>
+ </login-config>
+
+ <servlet-mapping>
+ <servlet-name>MailReception</servlet-name>
+ <url-pattern>/MailReception</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>MailReceptionByRequest</servlet-name>
+ <url-pattern>/MailReceptionByRequest</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>EnvoieArchive</servlet-name>
+ <url-pattern>/EnvoieArchive</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>TestEnvironnement</servlet-name>
+ <url-pattern>/TestEnvironnement</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>ValideArchive</servlet-name>
+ <url-pattern>/ValideArchive</url-pattern>
+ </servlet-mapping>
+
+ <welcome-file-list>
+ <welcome-file>index.html</welcome-file>
+ </welcome-file-list>
+
+</web-app>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<actes:RetourClassification xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd" xmlns:insee="http://xml.insee.fr/schema" xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><actes:DateClassification>2004-04-01</actes:DateClassification><actes:NaturesActes><actes:NatureActe actes:CodeNatureActe="1" actes:Libelle="Deliberations" actes:TypeAbrege="DE"/><actes:NatureActe actes:CodeNatureActe="2" actes:Libelle="Arretes reglementaires" actes:TypeAbrege="AR"/><actes:NatureActe actes:CodeNatureActe="3" actes:Libelle="Arretes individuels" actes:TypeAbrege="AI"/><actes:NatureActe actes:CodeNatureActe="4" actes:Libelle="Contrats et conventions" actes:TypeAbrege="CC"/><actes:NatureActe actes:CodeNatureActe="5" actes:Libelle="Documents budgetaires et financiers" actes:TypeAbrege="BF"/><actes:NatureActe actes:CodeNatureActe="6" actes:Libelle="Autres" actes:TypeAbrege="AU"/></actes:NaturesActes><actes:Matieres><actes:Matiere1 actes:CodeMatiere="1" actes:Libelle="Commande Publique"><actes:Matiere2 actes:CodeMatiere="1" actes:Libelle="Marches publics"/><actes:Matiere2 actes:CodeMatiere="2" actes:Libelle="Delegation de service public"/><actes:Matiere2 actes:CodeMatiere="3" actes:Libelle="Conventions de Mandat"/><actes:Matiere2 actes:CodeMatiere="4" actes:Libelle="Autres types de contrats"/><actes:Matiere2 actes:CodeMatiere="5" actes:Libelle="Transactions /protocole d accord transactionnel"/><actes:Matiere2 actes:CodeMatiere="6" actes:Libelle="Actes relatifs a la maitrise d oeuvre"/><actes:Matiere2 actes:CodeMatiere="7" actes:Libelle="Actes speciaux et divers"/></actes:Matiere1><actes:Matiere1 actes:CodeMatiere="2" actes:Libelle="Urbanisme"><actes:Matiere2 actes:CodeMatiere="1" actes:Libelle="Documents d urbanisme "/><actes:Matiere2 actes:CodeMatiere="2" actes:Libelle="Actes relatifs au droit d occupation ou d utilisation des sols"/><actes:Matiere2 actes:CodeMatiere="3" actes:Libelle="Droit de preemption urbain "/></actes:Matiere1><actes:Matiere1 actes:CodeMatiere="3" actes:Libelle="Domaine et patrimoine"><actes:Matiere2 actes:CodeMatiere="1" actes:Libelle="Acquisitions"/><actes:Matiere2 actes:CodeMatiere="2" actes:Libelle="Alienations"/><actes:Matiere2 actes:CodeMatiere="3" actes:Libelle="Locations"/><actes:Matiere2 actes:CodeMatiere="4" actes:Libelle="Limites territoriales"/><actes:Matiere2 actes:CodeMatiere="5" actes:Libelle="Autres actes de gestion du domaine public"/><actes:Matiere2 actes:CodeMatiere="6" actes:Libelle="Autres actes de gestion du domaine prive"/></actes:Matiere1><actes:Matiere1 actes:CodeMatiere="4" actes:Libelle="Fonction publique"><actes:Matiere2 actes:CodeMatiere="1" actes:Libelle="Personnel titulaires et stagiaires de la F.P.T."/><actes:Matiere2 actes:CodeMatiere="2" actes:Libelle="Personnel contractuel"/><actes:Matiere2 actes:CodeMatiere="3" actes:Libelle="Fonction publique hospitaliere"/><actes:Matiere2 actes:CodeMatiere="4" actes:Libelle="Autres categories de personnels"/><actes:Matiere2 actes:CodeMatiere="5" actes:Libelle="Regime indemnitaire"/></actes:Matiere1><actes:Matiere1 actes:CodeMatiere="5" actes:Libelle="Institutions et vie politique"><actes:Matiere2 actes:CodeMatiere="1" actes:Libelle="Election executif"/><actes:Matiere2 actes:CodeMatiere="2" actes:Libelle="Fonctionnement des assemblees"/><actes:Matiere2 actes:CodeMatiere="3" actes:Libelle="Designation de representants"/><actes:Matiere2 actes:CodeMatiere="4" actes:Libelle="Delegation de fonctions"/><actes:Matiere2 actes:CodeMatiere="5" actes:Libelle="Delegation de signature"/><actes:Matiere2 actes:CodeMatiere="6" actes:Libelle="Exercice des mandats locaux"/><actes:Matiere2 actes:CodeMatiere="7" actes:Libelle="Intercommunalite"/><actes:Matiere2 actes:CodeMatiere="8" actes:Libelle="Decision d ester en justice"/></actes:Matiere1><actes:Matiere1 actes:CodeMatiere="6" actes:Libelle="Libertes publiques et pourvoirs de police"><actes:Matiere2 actes:CodeMatiere="1" actes:Libelle="Police municipale"/><actes:Matiere2 actes:CodeMatiere="2" actes:Libelle="Pouvoir du president du conseil general"/><actes:Matiere2 actes:CodeMatiere="3" actes:Libelle="Pouvoir du president du conseil regional"/><actes:Matiere2 actes:CodeMatiere="4" actes:Libelle="Autres actes reglementaires"/><actes:Matiere2 actes:CodeMatiere="5" actes:Libelle="Actes pris au nom de l Etat et soumis au controle hierarchique"/></actes:Matiere1><actes:Matiere1 actes:CodeMatiere="7" actes:Libelle="Finances locales"><actes:Matiere2 actes:CodeMatiere="1" actes:Libelle="Decisions budgetaires"/><actes:Matiere2 actes:CodeMatiere="10" actes:Libelle="Divers"/><actes:Matiere2 actes:CodeMatiere="2" actes:Libelle="Fiscalite"/><actes:Matiere2 actes:CodeMatiere="3" actes:Libelle="Emprunts"/><actes:Matiere2 actes:CodeMatiere="4" actes:Libelle="Interventions economiques"/><actes:Matiere2 actes:CodeMatiere="5" actes:Libelle="Subventions"/><actes:Matiere2 actes:CodeMatiere="6" actes:Libelle="Contributions budgetaires"/><actes:Matiere2 actes:CodeMatiere="7" actes:Libelle="Avances"/><actes:Matiere2 actes:CodeMatiere="8" actes:Libelle="Fonds de concours"/><actes:Matiere2 actes:CodeMatiere="9" actes:Libelle="Prise de participation (SEM, etc...)"/></actes:Matiere1><actes:Matiere1 actes:CodeMatiere="8" actes:Libelle="Domaines de competences par themes"><actes:Matiere2 actes:CodeMatiere="1" actes:Libelle="Enseignement"/><actes:Matiere2 actes:CodeMatiere="2" actes:Libelle="Aide sociale"/><actes:Matiere2 actes:CodeMatiere="3" actes:Libelle="Voirie"/><actes:Matiere2 actes:CodeMatiere="4" actes:Libelle="Amenagement du territoire"/><actes:Matiere2 actes:CodeMatiere="5" actes:Libelle="Politique de la ville-habitat-logement"/><actes:Matiere2 actes:CodeMatiere="6" actes:Libelle="Emploi-formation professionnelle"/><actes:Matiere2 actes:CodeMatiere="7" actes:Libelle="Transports"/><actes:Matiere2 actes:CodeMatiere="8" actes:Libelle="Environnement"/><actes:Matiere2 actes:CodeMatiere="9" actes:Libelle="Culture"/></actes:Matiere1><actes:Matiere1 actes:CodeMatiere="9" actes:Libelle="Autres domaines de competences"><actes:Matiere2 actes:CodeMatiere="1" actes:Libelle="Autres domaines de competences des communes"/><actes:Matiere2 actes:CodeMatiere="2" actes:Libelle="Autres domaines de competences des departements"/><actes:Matiere2 actes:CodeMatiere="3" actes:Libelle="Autres domaines de competences des regions"/><actes:Matiere2 actes:CodeMatiere="4" actes:Libelle="Voeux et motions"/></actes:Matiere1></actes:Matieres></actes:RetourClassification>
--- /dev/null
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<style>
+ .color-font td {
+
+ background-color:#B0C4DE;
+
+ }
+ </style>
+</head>
+<body>
+<table cellspacing="0" width="100%">
+<tr>
+<td height="60%" ROWSPAN="2"><img style="width:30%; height:100px;" src="cid:logo_s2low.jpg"></td><td>
+<h2 text-align="right">Réponse du simulateur</h2>
+</td>
+</tr>
+<tr>
+<td></td>
+</tr>
+<tr>
+<td style="height:20px;" COLSPAN="2"></td>
+</tr>
+<tbody class="color-font">
+<tr>
+<td COLSPAN="2">Demande reçu par: Le simulateur ne renseigne pas ce champs</td>
+</tr>
+</tbody>
+<tr>
+<td COLSPAN="2">
+ Nature transaction:
+ Le simulateur ne renseigne pas ce champs</td>
+</tr>
+<tr>
+<td COLSPAN="2">Date d'émission de l'accusé de réception: Le simulateur ne renseigne pas ce champs</td>
+</tr>
+<tbody class="color-font">
+<tr>
+<td COLSPAN="2">
+ Nom émetteur:
+ Le simulateur ne renseigne pas ce champs</td>
+</tr>
+<tr>
+<td COLSPAN="2">
+ N° de SIREN:
+ Le simulateur ne renseigne pas ce champs</td>
+</tr>
+</tbody>
+<tr>
+<td COLSPAN="2">
+ Date de dernière classification:
+ Le simulateur ne renseigne pas ce champs</td>
+</tr>
+<tr>
+<td COLSPAN="2">
+<hr size="2" width="100%" noshade>
+</td>
+</tr>
+<tr>
+<td COLSPAN="2">
+ Opérateur de transmission:
+ Le simulateur ne renseigne pas ce champs</td>
+</tr>
+<tr>
+<td COLSPAN="2">
+ Date d'agrément de l'opérateur:
+ Le simulateur ne renseigne pas ce champs</td>
+</tr>
+<tbody class="color-font">
+<tr style="font-weight:bold;">
+<td COLSPAN="2">Rapport d'erreur(s):</td>
+</tr>
+<tr>
+<td COLSPAN="2">Ce message a été généré par un Simulateur Actes d'un TdT de type S2low. Il ne s'agit en aucun cas d'une réponse
+de la préfecture. Si vous recevez ce message, votre actes N'A PAS été envoyé à la préfecture.
+ </td>
+</tr>
+</tbody>
+</table>
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Tedetis : Protocole ACTES</title>
+
+</head>
+<body>
+
+<h1>Tédétis </h1>
+<a href='TestEnvironnement'>Test de l'environnement</a>
+
+<h2> ACTES </h2>
+<ul>
+ <li><a href='SimulateurMinistere'>Simulateur du ministère</a></li>
+ <li><a href='EnvoieArchive'>Forcer l'envoi au Ministère</a></li>
+ <li><a href='MailReception'>Forcer l'envoi au TdT</a></li>
+ <!-- <li><a href='MailReceptionByRequest'>Reception de mail (Requete)</a></li> -->
+ <!-- <a href='SimulateurMinistereProtected'> Simulateur du ministère</a> (protégé avec HTTP/BASIC)</li> -->
+</ul>
+
+
+<h2> HELIOS </h2>
+<ul>
+<li><a href='EnvoieFichierHelios'>Envoi des fichiers</a></li>
+<li><a href='ReceptionFichierHelios'>Réception des fichiers</a></li>
+<li><a href='AnalyseFichierHelios'>Analyse des fichiers reçus</a></li>
+
+</ul>
+
+
+
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+#! /bin/sh
+
+filein=$1
+fileout=$1_$$
+
+echo -n "Traitement de $filein";
+
+file -b --mime-encoding $filein | grep 'utf-8'
+
+if [ $? -ne 0 ]
+then
+echo "[OK]\n";
+exit
+fi
+
+iconv -f utf-8 -t iso-8859-1 $filein > $fileout
+mv $fileout $filein
+echo "[Transcoder]";
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xsd:schema xmlns:insee="http://xml.insee.fr/schema" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216" targetNamespace="http://www.interieur.gouv.fr/ACTES#v1.1-20040216" elementFormDefault="qualified" attributeFormDefault="qualified">
+ <xsd:import namespace="http://xml.insee.fr/schema" schemaLocation="siret.xsd"/>
+ <xsd:attribute name="Arrondissement">
+ <xsd:annotation>
+ <xsd:documentation>Numéro à 1 chiffre </xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:nonNegativeInteger">
+ <xsd:pattern value="[0-9]{1}"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attribute name="Departement">
+ <xsd:annotation>
+ <xsd:documentation>Departement (3 chiffres ou 2 chiffres + A ou B)</xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleType>
+ <xsd:annotation>
+ <xsd:documentation>Departement (3 caractères)</xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="[0|9]{1}[0-9]{1}[A|B|0-9]{1}"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attribute name="CodeNatureActe">
+ <xsd:annotation>
+ <xsd:documentation>Code nature d'acte</xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:integer"/>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attribute name="CodeMatiere">
+ <xsd:annotation>
+ <xsd:documentation>Code d'une sous-matière</xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:integer"/>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attribute name="IDActe">
+ <xsd:annotation>
+ <xsd:documentation>Identifiant unique d'un acte</xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="41"/>
+ <xsd:pattern value="[0|9]{1}[0-9]{1}[A|B|0-9]{1}-[0-9]{9}-[0-9]{8}-([a-zA-Z0-9][a-zA-Z0-9\-_ ]{0,13})?[a-zA-Z0-9]-[\p{Lu}]{2}"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:element name="IDSGAR">
+ <xsd:annotation>
+ <xsd:documentation>Identifiant d'un SGAR</xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:attribute ref="actes:Departement" use="required"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="IDPref">
+ <xsd:annotation>
+ <xsd:documentation>Identifiant d'une préfecture</xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:attribute ref="actes:Departement" use="required"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="IDSousPref">
+ <xsd:annotation>
+ <xsd:documentation>Identifiant d'une sous-préfecture</xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:attribute ref="actes:Departement" use="required"/>
+ <xsd:attribute ref="actes:Arrondissement" use="required"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="IDCL">
+ <xsd:annotation>
+ <xsd:documentation>Identifiant d'une collectivité</xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:attribute ref="insee:SIREN" use="required"/>
+ <xsd:attribute ref="actes:Departement" use="required"/>
+ <xsd:attribute ref="actes:Arrondissement" use="required"/>
+ <xsd:attribute name="Nature" use="required">
+ <xsd:annotation>
+ <xsd:documentation>Code nature de la collectivité</xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:nonNegativeInteger">
+ <xsd:pattern value="[0-9]{2}"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:simpleType name="Email">
+ <xsd:annotation>
+ <xsd:documentation>Adresse e-mail</xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="[_a-zA-Z0-9\-]+(\.[_a-zA-Z0-9\-]+)*@[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]+)*\.[a-zA-Z]{2,6}"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="Matiere">
+ <xsd:annotation>
+ <xsd:documentation>Matiere d'un acte (Code et libellé)</xsd:documentation>
+ </xsd:annotation>
+ <xsd:attribute ref="actes:CodeMatiere" use="required"/>
+ <xsd:attribute name="Libelle" type="xsd:string" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="DonneesEnveloppeCLMISILL">
+ <xsd:annotation>
+ <xsd:documentation>Donnees contenues dans une enveloppe de transmission collectivité vers MISILL</xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="Emetteur">
+ <xsd:annotation>
+ <xsd:documentation>Renseignements concernant l'émetteur</xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="actes:IDCL"/>
+ <xsd:element ref="actes:Referent" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="AdressesRetour">
+ <xsd:annotation>
+ <xsd:documentation>Groupe d'adresses</xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence maxOccurs="unbounded">
+ <xsd:element name="Email" type="actes:Email">
+ <xsd:annotation>
+ <xsd:documentation>adresse email à utiliser pour les envois de la préfecture vers la collectivité</xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element ref="actes:FormulairesEnvoyes">
+ <xsd:annotation>
+ <xsd:documentation>Liste des fichiers XML envoyés</xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="DonneesActe">
+ <xsd:annotation>
+ <xsd:documentation>Donnees associees a un acte</xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="CodeMatiere1">
+ <xsd:annotation>
+ <xsd:documentation>Code matière 1</xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:attribute ref="actes:CodeMatiere" use="required"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="CodeMatiere2">
+ <xsd:annotation>
+ <xsd:documentation>Code matière 2</xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:attribute ref="actes:CodeMatiere" use="required"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="CodeMatiere3" minOccurs="0">
+ <xsd:annotation>
+ <xsd:documentation>Code matière 3</xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:attribute ref="actes:CodeMatiere" use="required"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="CodeMatiere4" minOccurs="0">
+ <xsd:annotation>
+ <xsd:documentation>Code matière 4</xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:attribute ref="actes:CodeMatiere" use="required"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="CodeMatiere5" minOccurs="0">
+ <xsd:annotation>
+ <xsd:documentation>Code matière 5</xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:attribute ref="actes:CodeMatiere" use="required"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="Objet">
+ <xsd:annotation>
+ <xsd:documentation>texte max 500 caractères</xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="500"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="PrecedentIdentifiantActe" minOccurs="0">
+ <xsd:annotation>
+ <xsd:documentation>Identifiant acte déjà transmis</xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:attribute ref="actes:IDActe" use="required"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="ClassificationDateVersion" type="xsd:date">
+ <xsd:annotation>
+ <xsd:documentation>date de la classification utilisée </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="Document" type="actes:FichierSigne">
+ <xsd:annotation>
+ <xsd:documentation>Document acte</xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="Annexes">
+ <xsd:annotation>
+ <xsd:documentation>Pièces jointes</xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="Annexe" type="actes:FichierSigne"/>
+ </xsd:sequence>
+ <xsd:attribute name="Nombre" type="xsd:nonNegativeInteger" use="required">
+ <xsd:annotation>
+ <xsd:documentation>Nombre total d'annexes à l'acte</xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute name="Date" type="xsd:date" use="required">
+ <xsd:annotation>
+ <xsd:documentation>Date de la décision</xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+ <xsd:attribute name="NumeroInterne" use="required">
+ <xsd:annotation>
+ <xsd:documentation>Numero interne collectivité, 15 caractères maximum</xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:maxLength value="15"/>
+ <xsd:pattern value="([a-zA-Z0-9][a-zA-Z0-9\-_ ]{0,13})?[a-zA-Z0-9]"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attribute ref="actes:CodeNatureActe" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="DonneesCourrierPref">
+ <xsd:annotation>
+ <xsd:documentation>Données relatives à un courrier de la préfecture (courrier simple, lettre d'observations, demande de pieces complementaires): identifiant de l'acte + date du courrier</xsd:documentation>
+ </xsd:annotation>
+ <xsd:attribute ref="actes:IDActe" use="required"/>
+ <xsd:attribute name="DateCourrierPref" type="xsd:date" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="ARReponseCL">
+ <xsd:annotation>
+ <xsd:documentation>Données d'un AR d'une réponse d'une collectivité au courrier d'une préfecture (envoi ou refus d'envoyer des pièces complémentaires, réponse ou rejet pour une lettre d'observations)</xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="InfosCourrierPref" type="actes:DonneesCourrierPref"/>
+ </xsd:sequence>
+ <xsd:attribute name="DateReception" type="xsd:date" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="FichierSigne">
+ <xsd:annotation>
+ <xsd:documentation>Nom du fichier et éventuellement la signature du fichier</xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="NomFichier" type="xsd:string"/>
+ <xsd:element name="Signature" type="xsd:anyType" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="FichiersSignes">
+ <xsd:annotation>
+ <xsd:documentation>Ensemble de fichiers signés</xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence maxOccurs="unbounded">
+ <xsd:element name="Document" type="actes:FichierSigne"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="Referent">
+ <xsd:annotation>
+ <xsd:documentation>Nom et coordonées d'un référent</xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="Nom" type="xsd:string" minOccurs="0">
+ <xsd:annotation>
+ <xsd:documentation>Nom du référent</xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="Telephone" type="xsd:string" minOccurs="0">
+ <xsd:annotation>
+ <xsd:documentation>Téléphone</xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="Email" type="actes:Email" minOccurs="0">
+ <xsd:annotation>
+ <xsd:documentation>Adresse e-mail</xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="FormulairesEnvoyes">
+ <xsd:annotation>
+ <xsd:documentation>Liste des fichiers XML envoyés</xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence maxOccurs="unbounded">
+ <xsd:element name="Formulaire" type="actes:FichierSigne"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="EnveloppeCLMISILL" type="actes:DonneesEnveloppeCLMISILL">
+ <xsd:annotation>
+ <xsd:documentation>Enveloppe de transmission collectivité vers MISILL</xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="EnveloppeMISILLCL">
+ <xsd:annotation>
+ <xsd:documentation>Enveloppe de transmission MISILL vers collectivité</xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="Emetteur">
+ <xsd:annotation>
+ <xsd:documentation>Renseignements concernant l'émetteur</xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:choice>
+ <xsd:element ref="actes:IDSGAR"/>
+ <xsd:element ref="actes:IDPref"/>
+ <xsd:element ref="actes:IDSousPref"/>
+ </xsd:choice>
+ <xsd:element ref="actes:Referent" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element ref="actes:FormulairesEnvoyes">
+ <xsd:annotation>
+ <xsd:documentation>Liste des fichiers XML envoyés</xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="Destinataire">
+ <xsd:annotation>
+ <xsd:documentation>Identification de la collectivité destinataire du contenu de l'enveloppe</xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:attribute ref="insee:SIREN" use="required"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="AnomalieEnveloppe">
+ <xsd:annotation>
+ <xsd:documentation>Anomalie dans une enveloppe</xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="Date" type="xsd:date">
+ <xsd:annotation>
+ <xsd:documentation>Date d'envoi de l'anomalie</xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="Nature">
+ <xsd:annotation>
+ <xsd:documentation>Nature de l'anomalie</xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:integer">
+ <xsd:enumeration value="001"/>
+ <xsd:enumeration value="002"/>
+ <xsd:enumeration value="003"/>
+ <xsd:enumeration value="004"/>
+ <xsd:enumeration value="005"/>
+ <xsd:enumeration value="100"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="Detail" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="EnveloppeRecue" type="actes:DonneesEnveloppeCLMISILL"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="Acte" type="actes:DonneesActe">
+ <xsd:annotation>
+ <xsd:documentation>Transmission d'un acte</xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="ARActe">
+ <xsd:annotation>
+ <xsd:documentation>Accusé de réception de la transmission d'un acte</xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="ActeRecu" type="actes:DonneesActe"/>
+ <xsd:element name="ClassificationDateVersionEnCours" type="xsd:date">
+ <xsd:annotation>
+ <xsd:documentation>date de la version de la classification
+en sous-matières acceptée par la préfecture</xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="actes:IDActe" use="required"/>
+ <xsd:attribute name="DateReception" type="xsd:date" use="required">
+ <xsd:annotation>
+ <xsd:documentation>Date de réception de l'acte</xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="AnomalieActe">
+ <xsd:annotation>
+ <xsd:documentation>Anomalie dans la transmission d'un acte</xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="Date" type="xsd:date">
+ <xsd:annotation>
+ <xsd:documentation>Date de notification anomalie</xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="Nature">
+ <xsd:annotation>
+ <xsd:documentation>Nature de l'anomalie (code sur 3 chiffres)</xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:nonNegativeInteger">
+ <xsd:pattern value="[0-9]{3}"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:element>
+ <xsd:element name="Detail" type="xsd:string" minOccurs="0">
+ <xsd:annotation>
+ <xsd:documentation>texte libre facultatif</xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="ActeRecu" type="actes:DonneesActe"/>
+ <xsd:element name="ClassificationDateVersionEnCours" type="xsd:date">
+ <xsd:annotation>
+ <xsd:documentation>date de la version de la classification
+en sous-matières acceptée par la préfecture</xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="CourrierSimple">
+ <xsd:annotation>
+ <xsd:documentation>Transmission d'un courrier simple</xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:extension base="actes:DonneesCourrierPref">
+ <xsd:sequence>
+ <xsd:element name="Document" type="actes:FichierSigne"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="ReponseCourrierSimple">
+ <xsd:annotation>
+ <xsd:documentation>Réponse à un courrier simple</xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:extension base="actes:DonneesCourrierPref">
+ <xsd:sequence>
+ <xsd:element name="Document" type="actes:FichierSigne"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="DemandePieceComplementaire">
+ <xsd:annotation>
+ <xsd:documentation>Demande de pièces complémentaires</xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:extension base="actes:DonneesCourrierPref">
+ <xsd:sequence>
+ <xsd:element name="DescriptionPieces" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation>Texte libre</xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="Document" type="actes:FichierSigne"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="ARDemandePieceComplementaire" type="actes:DonneesCourrierPref">
+ <xsd:annotation>
+ <xsd:documentation>Accusé de réception de demande de pièces complémentaires</xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="RefusPieceComplementaire">
+ <xsd:annotation>
+ <xsd:documentation>Refus explicite d'envoi de pièces complémentaires</xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:extension base="actes:DonneesCourrierPref">
+ <xsd:sequence>
+ <xsd:element name="Document" type="actes:FichierSigne"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="PieceComplementaire">
+ <xsd:annotation>
+ <xsd:documentation>Transmission de pièces complémentaires</xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:extension base="actes:DonneesCourrierPref">
+ <xsd:sequence>
+ <xsd:element name="Documents" type="actes:FichiersSignes"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="ARPieceComplementaire" type="actes:ARReponseCL">
+ <xsd:annotation>
+ <xsd:documentation>Accusé de réception d'envoi (ou de refus explicite d'envoi) de pièces complémentaires</xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="LettreObservations">
+ <xsd:annotation>
+ <xsd:documentation>Lettre d'observations</xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:extension base="actes:DonneesCourrierPref">
+ <xsd:sequence>
+ <xsd:element name="Motif" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation>Texte libre</xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="Document" type="actes:FichierSigne"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="ARLettreObservations" type="actes:DonneesCourrierPref">
+ <xsd:annotation>
+ <xsd:documentation>Accusé de réception de lettre d'observations</xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="RejetLettreObservations">
+ <xsd:annotation>
+ <xsd:documentation>Refus explicite de répondre à une lettre d'observations</xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:extension base="actes:DonneesCourrierPref">
+ <xsd:sequence>
+ <xsd:element name="Document" type="actes:FichierSigne"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="ReponseLettreObservations">
+ <xsd:annotation>
+ <xsd:documentation>Réponse à une lettre d'observations</xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:extension base="actes:DonneesCourrierPref">
+ <xsd:sequence>
+ <xsd:element name="Document" type="actes:FichierSigne"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="ARReponseRejetLettreObservations" type="actes:ARReponseCL">
+ <xsd:annotation>
+ <xsd:documentation>Accusé de réception d'une réponse (ou d'un refus explicite de répondre) à une lettre d'observations</xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="DefereTA">
+ <xsd:annotation>
+ <xsd:documentation>Information de déféré au tribunal administratif</xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="DateDepot" type="xsd:date">
+ <xsd:annotation>
+ <xsd:documentation>Date dépôt déféré TA</xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="NatureIllegalite" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation>Nature de l'illégalité, motif du déféré au TA (texte libre)</xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="PiecesJointes">
+ <xsd:annotation>
+ <xsd:documentation>Document(s) du déféré au TA</xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="PieceJointe" type="actes:FichierSigne"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute ref="actes:IDActe" use="required"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="Annulation">
+ <xsd:annotation>
+ <xsd:documentation>Annulation de la transmission d'un acte</xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:attribute ref="actes:IDActe" use="required"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="ARAnnulation">
+ <xsd:annotation>
+ <xsd:documentation>Accusé de réception de l'annulation de la transmission d'un acte</xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:attribute ref="actes:IDActe" use="required"/>
+ <xsd:attribute name="DateReception" type="xsd:date" use="required"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="DemandeClassification">
+ <xsd:annotation>
+ <xsd:documentation>Demande de classification</xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence minOccurs="0">
+ <xsd:element name="DateClassification" type="xsd:date">
+ <xsd:annotation>
+ <xsd:documentation>Date de la classification utilisée dans la collectivité</xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="ReponseClassificationSansChangement">
+ <xsd:annotation>
+ <xsd:documentation>Information: classification utilisée à jour</xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="DateClassification" type="xsd:date">
+ <xsd:annotation>
+ <xsd:documentation>date de la classification</xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="RetourClassification">
+ <xsd:annotation>
+ <xsd:documentation>Transmission de la classification</xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="DateClassification" type="xsd:date">
+ <xsd:annotation>
+ <xsd:documentation>date de la classification</xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="NaturesActes">
+ <xsd:complexType>
+ <xsd:sequence maxOccurs="unbounded">
+ <xsd:element name="NatureActe">
+ <xsd:complexType>
+ <xsd:attribute ref="actes:CodeNatureActe"/>
+ <xsd:attribute name="Libelle" type="xsd:string" use="required"/>
+ <xsd:attribute name="TypeAbrege" use="required">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:length value="2"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="Matieres">
+ <xsd:complexType>
+ <xsd:sequence maxOccurs="unbounded">
+ <xsd:element name="Matiere1">
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:extension base="actes:Matiere">
+ <xsd:sequence maxOccurs="unbounded">
+ <xsd:element name="Matiere2">
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:extension base="actes:Matiere">
+ <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="Matiere3">
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:extension base="actes:Matiere">
+ <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="Matiere4">
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:extension base="actes:Matiere">
+ <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="Matiere5" type="actes:Matiere"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+</xsd:schema>
\ No newline at end of file
--- /dev/null
+<xsd:schema xmlns:ie="http://xml.insee.fr/schema" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://xml.insee.fr/schema" elementFormDefault="qualified" attributeFormDefault="qualified" version="1.0">
+ <xsd:simpleType name="Chaine_Numerique_stype">
+ <xsd:restriction base="xsd:token">
+ <xsd:pattern value="[0-9]*"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="Chaine_ASCII_Majuscule_stype">
+ <xsd:restriction base="xsd:token">
+ <xsd:pattern value="[A-Z]*"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="Chaine_Numerique_et_ASCII_Majuscule_stype">
+ <xsd:restriction base="xsd:token">
+ <xsd:pattern value="[0-9A-Z]*"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+</xsd:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:include schemaLocation="Simple_Type.xsd"/>
+ <xs:complexType name="TAdresse">
+ <xs:sequence>
+ <xs:element name="TypAdr">
+ <xs:complexType>
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="0"/>
+ <xs:enumeration value="1"/>
+ <xs:enumeration value="2"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Adr1" type="Base_Texte38" minOccurs="0"/>
+ <xs:element name="Adr2" type="Base_Texte38" minOccurs="0"/>
+ <xs:element name="Adr3" type="Base_Texte38" minOccurs="0"/>
+ <xs:element name="CP" type="Base_Texte5"/>
+ <xs:element name="Ville" type="Base_Texte38" minOccurs="0"/>
+ <xs:element name="CodRes" type="Base_Booleen"/>
+ <xs:element name="CodPays" type="Base_Num3" minOccurs="0"/>
+ <xs:element name="DteAdr" type="Base_Date" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:include schemaLocation="Simple_Type.xsd"/>
+ <xs:complexType name="TBancaire">
+ <xs:sequence>
+ <xs:element name="IdPayInt" type="Base_Alphanum4" minOccurs="0"/>
+ <xs:element name="IdBancInt" type="Base_Alphanum11" minOccurs="0"/>
+ <xs:element name="CodeEtab" type="Base_Alphanum5"/>
+ <xs:element name="CodeGuic" type="Base_Alphanum5"/>
+ <xs:element name="IdCpte" type="Base_Texte11"/>
+ <xs:element name="CleRib" type="Base_Num2"/>
+ <xs:element name="LibBanc" type="Base_Texte24" minOccurs="0"/>
+ <xs:element name="TitCpte" type="Base_Texte32"/>
+ <xs:element name="DteBanc" type="Base_Date" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.w3.org/2001/04/xmlenc#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" elementFormDefault="qualified" attributeFormDefault="unqualified">
+ <xs:include schemaLocation="../xmlenc/xenc-schema.xsd"/>
+ <xs:complexType name="PESEncryptedDataType">
+ <xs:annotation>
+ <xs:documentation>Element contenant la donnee chiffree et les informations necessaires au dechiffrement - L'element KeyInfo contient un element EncryptedKey par acteur destinataire de l'information.</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="xenc:EncryptedDataType"/>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:group name="PESEncryptedDataGroup">
+ <xs:sequence>
+ <xs:element name="EncryptedData" type="xenc:PESEncryptedDataType"/>
+ </xs:sequence>
+ </xs:group>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XMLSPY v5 rel. 2 U (http://www.xmlspy.com) by SERGE MURET (SEMA GROUP SA) -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:include schemaLocation="Simple_Type.xsd"/>
+ <xs:include schemaLocation="CommunPES.xsd"/>
+ <xs:complexType name="TEnTetePES">
+ <xs:sequence>
+ <xs:element name="DteStr" type="Base_Date"/>
+ <xs:element name="IdPost" type="Base_Texte7"/>
+ <xs:element name="LibellePoste" type="Base_Texte38" minOccurs="0"/>
+ <xs:element name="IdColl" type="Base_Num14" minOccurs="0"/>
+ <xs:element name="Finess" type="Base_Num20" minOccurs="0"/>
+ <xs:element name="CodCol" type="Base_Alphanum3"/>
+ <xs:element name="CodBud" type="Base_Alphanum2" minOccurs="0"/>
+ <xs:element name="LibelleColBud" type="Base_Texte38" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:include schemaLocation="Simple_Type.xsd"/>
+ <xs:complexType name="TEnveloppe">
+ <xs:sequence>
+ <xs:element name="Parametres" type="TParametres"/>
+ <xs:element name="Emetteur" type="TCarteVisite" minOccurs="0"/>
+ <xs:element name="Recepteur" type="TCarteVisite" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TParametres">
+ <xs:sequence>
+ <xs:element name="Version" type="Base_Num2"/>
+ <xs:element name="TypFic" type="Base_Texte32"/>
+ <xs:element name="NomFic" type="Base_Texte100"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TCarteVisite">
+ <xs:sequence>
+ <xs:element name="Sigle" type="Base_Texte32" minOccurs="0"/>
+ <xs:element name="Adresse" type="Base_Texte38" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="Class_FacturePESIndiv.xsd"/>
+ <xs:include schemaLocation="Class_Tiers.xsd"/>
+ <xs:include schemaLocation="Class_Nomenclature.xsd"/>
+ <xs:complexType name="TNomenclatureFacture">
+ <xs:sequence>
+ <xs:element name="NomenclatureProduit" type="TNomenclature" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Nomenclature des rubriques de Facturation (nécessaire en cas d'état de facturation collectif)</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="NomenclatureNature" type="TNomenclature" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Nomenclature des Code Natures (catégorisation préalable à l'imputation budgétaire)</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="NomenclatureBudget" type="TNomenclature" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Nomenclature des Budgets</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TLigneRepartition">
+ <xs:sequence>
+ <xs:element name="Libelle" type="cm:Base_Texte100"/>
+ <xs:element name="Code" type="cm:Base_Texte24">
+ <xs:annotation>
+ <xs:documentation>code Nature</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="CodeFonction" type="cm:Base_Texte24" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>dans le cas d'une imputation par fonction</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="CodeBudget" type="cm:Base_Texte24" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>dans le cas d'une imputation multi-budget</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Mt" type="cm:Base_Montant"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TRepartitionParNature">
+ <xs:sequence>
+ <xs:element name="Repartition" type="TLigneRepartition" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TPESFacture">
+ <xs:sequence>
+ <xs:element name="IdVer" type="cm:Base_Dec2">
+ <xs:annotation>
+ <xs:documentation>Numéro de version (exemple 1.0)</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Annee" type="cm:Base_Annee"/>
+ <xs:element name="NumSequence" type="cm:Base_Num4" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>En cas d'émission périodique, indique le numéro de la séquence</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="TypeFact" type="cm:Base_Alphanum10" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Type de Facturation</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Date" type="cm:Base_Date">
+ <xs:annotation>
+ <xs:documentation>Date d'émission de la facture ou de l'état de facturation</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Emetteur" type="TTiers">
+ <xs:annotation>
+ <xs:documentation>Informations sur l'emetteur</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="FactureIndiv" type="TFacturePESIndiv" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>Données individuelles de facturation (par défaut une seule facture individuelle) - (état de facturation collectif : plusieurs factures individuelles)</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Nomenclatures" type="TNomenclatureFacture">
+ <xs:annotation>
+ <xs:documentation>Nomenclatures utilisees (Paramétrage du progiciel)
+- en cas d'évolution des nomenclatures, les anciens codes doivent être précisés (de façon incrémentale)</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="RepartitionParNature" type="TRepartitionParNature" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Repartition des dépenses par Nature (et budget le cas échéant)</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="Class_RepartitionBudget.xsd"/>
+ <xs:include schemaLocation="Class_Tiers.xsd"/>
+ <xs:complexType name="TLigneFacture">
+ <xs:sequence>
+ <xs:choice>
+ <xs:element name="Date" type="cm:Base_Date" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>Dates de réalisation de la prestation</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:sequence>
+ <xs:element name="DateDebut" type="cm:Base_Date"/>
+ <xs:element name="DateFin" type="cm:Base_Date"/>
+ </xs:sequence>
+ </xs:choice>
+ <xs:element name="CodeProduit" type="cm:Base_Texte24">
+ <xs:annotation>
+ <xs:documentation>Code du produit</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="CodeNature" type="cm:Base_Texte24" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Code Nature</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Libelle" type="cm:Base_Texte100">
+ <xs:annotation>
+ <xs:documentation>Libellé détaillé du produit</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:choice>
+ <xs:sequence>
+ <xs:element name="Unite" type="cm:Base_Texte38" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Nature de l'unité d'oeuvre</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Quantite" type="cm:Base_Montant" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Quantité d'unité</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="MtUnitaire" type="cm:Base_Montant" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Prix de chaque Unité</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ <xs:sequence>
+ <xs:element name="MtBase" type="cm:Base_Taux" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Base de calcul du prix</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:choice>
+ <xs:element name="Taux" type="cm:Base_Taux3" minOccurs="0"/>
+ <xs:element name="MtRemise" type="cm:Base_Montant" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Montant de la Remise HT</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="MtHT" type="cm:Base_Montant">
+ <xs:annotation>
+ <xs:documentation>Montant HT de la Ligne après remise</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="TauxTVA" type="cm:Base_Taux">
+ <xs:annotation>
+ <xs:documentation>Taux de TVA appliqué à cette ligne</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="MtTVA" type="cm:Base_Montant"/>
+ <xs:element name="MtTTC" type="cm:Base_Montant"/>
+ <xs:element name="Ordre" type="cm:Base_Num3">
+ <xs:annotation>
+ <xs:documentation>Numéro d'ordre de la ligne de prestation</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="OrdreEdition" type="cm:Base_Num3" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Numéro d'ordre dans l'affichage de la facture</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Commentaire" type="cm:Base_Texte100" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>Commentaire dans l'ordre d'affichage de la prestation</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TDetailTVA">
+ <xs:sequence>
+ <xs:element name="TauxTVA" type="cm:Base_Taux"/>
+ <xs:element name="MtBaseHT" type="cm:Base_Montant"/>
+ <xs:element name="MtTVA" type="cm:Base_Montant"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TTotalAPayer">
+ <xs:sequence>
+ <xs:element name="MtTotalHT" type="cm:Base_Montant">
+ <xs:annotation>
+ <xs:documentation>après remise</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="MtTotalTVA" type="cm:Base_Montant"/>
+ <xs:element name="MtTotalTTC" type="cm:Base_Montant"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TFacturePESIndiv">
+ <xs:annotation>
+ <xs:documentation>Données individuelles de facturation</xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="DateEmission" type="cm:Base_Date"/>
+ <xs:element name="DateReglement" type="cm:Base_Date" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Date limite de paiement</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="NumeroFacture" type="cm:Base_Texte50">
+ <xs:annotation>
+ <xs:documentation>Identifiant de la Facture</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Debiteur" type="TTiers">
+ <xs:annotation>
+ <xs:documentation>Description du débiteur</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Objet" type="cm:Base_Texte160">
+ <xs:annotation>
+ <xs:documentation>Objet de la Facture</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="LigneFacture" type="TLigneFacture" maxOccurs="unbounded"/>
+ <xs:element name="DetailTVA" type="TDetailTVA" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>Optionnel - en l'absence du détail TVA par taux, celui-ci sera calculé par la feuille de style à partir de l'analyse des lignes</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="TotalAPayer" type="TTotalAPayer"/>
+ <xs:element name="ModalitesReglement" type="cm:Base_Texte250"/>
+ <xs:element name="TexteGenerateur" type="cm:Base_Texte160" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Champ obligatoire en matière de facture de recette associé à un titre</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ConditionsGen" type="cm:Base_Texte250">
+ <xs:annotation>
+ <xs:documentation>Conditions Générales de Facturation</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="RepartitionBudget" type="TRepartitionBudget" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>nécessaire en cas de répartition entre plusieurs budgets sans rapport avec la nature de la prestation</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">
+ <xs:include schemaLocation="Simple_Type.xsd"/>
+ <xs:include schemaLocation="CommunPES.xsd"/>
+ <xs:complexType name="TInfoTiers">
+ <xs:sequence>
+ <xs:element name="IdTiers" type="Base_Texte15" minOccurs="0"/>
+ <xs:element name="DteMalade" type="Base_Date" minOccurs="0"/>
+ <xs:element name="TypTiers" type="TTypTiers" minOccurs="0"/>
+ <xs:element name="NatIdTiers" type="TNatIdTiers" minOccurs="0"/>
+ <xs:element name="DteIdTiers" type="Base_Date" minOccurs="0"/>
+ <xs:element name="RefTiers" type="Base_Texte30" minOccurs="0"/>
+ <xs:element name="CatTiers" type="TCatTiers"/>
+ <xs:element name="NatJur" type="TNatJur"/>
+ <xs:element name="Civilite" type="Base_Texte10" minOccurs="0"/>
+ <xs:element name="Nom" type="Base_Texte38"/>
+ <xs:element name="ComplNom" type="Base_Texte38" minOccurs="0"/>
+ <xs:element name="Prenom" type="Base_Texte38" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="Class_SchemasCommuns.xsd"/>
+ <xs:complexType name="TLigneNomenclature">
+ <xs:sequence>
+ <xs:element name="Libelle" type="cm:Base_Texte100"/>
+ <xs:element name="Code" type="cm:Base_Texte24"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TNomenclature">
+ <xs:sequence>
+ <xs:element name="Description" type="cm:Base_Texte100">
+ <xs:annotation>
+ <xs:documentation>Description du rôle de la nomenclature ou de ses spécificités</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Correspondance" type="TLigneNomenclature" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#">
+ <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="Class_Signature.xsd"/>
+ <xs:import namespace="http://www.w3.org/2001/04/xmlenc#" schemaLocation="Class_Chiffrement.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="Class_FacturePES.xsd"/>
+ <xs:complexType name="TPES_PJ_HELIADES">
+ <xs:sequence>
+ <xs:annotation>
+ <xs:documentation>--- Signature Optionnelle de chaque PJ par l'ordonnateur</xs:documentation>
+ </xs:annotation>
+ <xs:element name="Contenu" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Stockage du fichier PJ</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice>
+ <xs:element name="Fichier">
+ <xs:annotation>
+ <xs:documentation>Fichier d'origine (binaire ou XML) compressé avec GZip puis converti en Base 64</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:base64Binary">
+ <xs:attribute name="MIMEType" type="xs:token" use="required"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:group ref="xenc:PESEncryptedDataGroup"/>
+ <xs:element name="PESFacture" type="TPESFacture" minOccurs="0"/>
+ </xs:choice>
+ <xs:choice minOccurs="0">
+ <xs:element name="SignatureXML" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>Fichier signature associé au fichier d'origine (XML-DSIG ou XAdES)</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Signature" type="ds:SignatureType"/>
+ </xs:sequence>
+ <xs:attribute name="MIMEType" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="text/xml"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SignatureBinaire" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>Fichier signature PKCS#7 associé au fichier d'origine converti en Base 64</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:base64Binary">
+ <xs:attribute name="MIMEType" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token"/>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:choice>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="IdUnique" type="cm:Base_Alphanum50">
+ <xs:annotation>
+ <xs:documentation>Identifiant unique du document pour la collectivite</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="NomPJ" type="cm:Base_Texte100">
+ <xs:annotation>
+ <xs:documentation>Nom du fichier </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TPES_PJs_HELIADES">
+ <xs:sequence>
+ <xs:element name="PJ" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="TPES_PJ_HELIADES"/>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#">
+ <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="Class_Signature.xsd"/>
+ <xs:import namespace="http://www.w3.org/2001/04/xmlenc#" schemaLocation="Class_Chiffrement.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="Class_FacturePES.xsd"/>
+ <xs:complexType name="TPES_PJ">
+ <xs:sequence>
+ <xs:annotation>
+ <xs:documentation>--- Signature Optionnelle de chaque PJ par l'ordonnateur</xs:documentation>
+ </xs:annotation>
+ <xs:element name="Contenu" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Stockage du fichier PJ</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice>
+ <xs:element name="Fichier">
+ <xs:annotation>
+ <xs:documentation>Fichier d'origine (binaire ou XML) compressé avec GZip puis converti en Base 64</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:base64Binary">
+ <xs:attribute name="MIMEType" type="xs:token" use="required"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:group ref="xenc:PESEncryptedDataGroup"/>
+ <xs:element name="PESFacture" type="TPESFacture" minOccurs="0"/>
+ </xs:choice>
+ <xs:choice minOccurs="0">
+ <xs:element name="SignatureXML" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>Fichier signature associé au fichier d'origine (XML-DSIG ou XAdES)</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Signature" type="ds:SignatureType"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SignatureBinaire" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>Fichier signature PKCS#7 associé au fichier d'origine converti en Base 64</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:base64Binary">
+ <xs:attribute name="MIMEType" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:token"/>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:choice>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="IdUnique" type="cm:Base_Alphanum50">
+ <xs:annotation>
+ <xs:documentation>Identifiant unique du document pour la collectivite</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="ServeurId" type="cm:Base_Alphanum20" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Identifiant du serveur de stockage du document (en lien avec le paramétrage Helios)</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="NomPJ" type="cm:Base_Texte100">
+ <xs:annotation>
+ <xs:documentation>Nom du fichier </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="TypePJ" type="cm:Base_Alphanum3" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Type de la pièce (document budgétaire, Facture, Etat de Paye,...) </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Description" type="cm:Base_Texte250">
+ <xs:annotation>
+ <xs:documentation>Description de la pièce saisie</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="RefCompta" type="TPES_RefCompta" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>Référence comptable de la pièce si celle ci n'est pas dématérialisée en même temps que l'objet comptable PES correspondant </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TPES_PJs">
+ <xs:sequence>
+ <xs:element name="EnTetePES_PJ">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="IdVer" type="cm:Base_Num2"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="PJ" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="TPES_PJ"/>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TPES_RefCompta">
+ <xs:sequence>
+ <xs:element name="Domaine" type="cm:TDomaine"/>
+ <xs:element name="Exercice" type="cm:Base_Annee"/>
+ <xs:element name="TypeObjet" type="cm:Base_Num2"/>
+ <xs:element name="Identifiant" type="cm:Base_Alphanum20" minOccurs="0"/>
+ <xs:element name="ComplementIdentifiant" type="cm:Base_Alphanum20" minOccurs="0"/>
+ <xs:element name="CodProd" type="cm:Base_Alphanum2" minOccurs="0"/>
+ <xs:element name="IdTiers" type="cm:Base_Texte15" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:include schemaLocation="Simple_Type.xsd"/>
+ <xs:complexType name="TPJReference">
+ <xs:sequence>
+ <xs:element name="Support">
+ <xs:complexType>
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="IdUnique" type="Base_Alphanum50"/>
+ <xs:element name="NomPJ" type="Base_Texte100" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="Class_SchemasCommuns.xsd"/>
+ <xs:complexType name="TPES_PJ_Erreur">
+ <xs:sequence>
+ <xs:element name="IdUnique" type="cm:Base_Alphanum50">
+ <xs:annotation>
+ <xs:documentation>Identifiant unique du document pour la collectivite</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="NomPJ" type="cm:Base_Texte100">
+ <xs:annotation>
+ <xs:documentation>Nom du fichier </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="CodeErreur" type="cm:Base_Num2"/>
+ <xs:element name="LibelleErreur" type="cm:Base_Texte50"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TPES_PJs_Erreur">
+ <xs:sequence>
+ <xs:element name="EnTetePES_PJ">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="IdVer" type="cm:Base_Num2"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="PJ_Erreur" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="TPES_PJ_Erreur"/>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="Class_SchemasCommuns.xsd"/>
+ <xs:complexType name="TRepartitionBudget">
+ <xs:sequence>
+ <xs:element name="CodeBudget" type="cm:Base_Texte24">
+ <xs:annotation>
+ <xs:documentation>Code du budget de comptabilisation</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:choice>
+ <xs:element name="Taux" type="cm:Base_Taux">
+ <xs:annotation>
+ <xs:documentation>(si répartitionau prorata)</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="Mt" type="cm:Base_Montant">
+ <xs:annotation>
+ <xs:documentation>(si répartition forfaitaire)</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:choice>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified">
+ <xs:include schemaLocation="Simple_Type.xsd"/>
+ <xs:include schemaLocation="CommunPES.xsd"/>
+ <xs:include schemaLocation="Class_Enveloppe.xsd"/>
+ <xs:include schemaLocation="Class_EntetePES.xsd"/>
+ <xs:include schemaLocation="Class_Adresse.xsd"/>
+ <xs:include schemaLocation="Class_Bancaire.xsd"/>
+ <xs:include schemaLocation="Class_PJReference.xsd"/>
+ <xs:include schemaLocation="Class_InfoTiers.xsd"/>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.w3.org/2000/09/xmldsig#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xad="http://uri.etsi.org/01903/v1.1.1#" elementFormDefault="qualified" attributeFormDefault="unqualified">
+ <xs:import namespace="http://uri.etsi.org/01903/v1.1.1#" schemaLocation="../xades/XAdES-core-schema.xsd"/>
+ <xs:include schemaLocation="../xmldsig/xmldsig-core-schema.xsd"/>
+ <xs:complexType name="PESSignatureType">
+ <xs:complexContent>
+ <xs:restriction base="ds:SignatureType">
+ <xs:sequence>
+ <xs:element ref="ds:SignedInfo"/>
+ <xs:element ref="ds:SignatureValue"/>
+ <xs:element ref="ds:KeyInfo" minOccurs="0"/>
+ <xs:element ref="ds:Object" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:group name="PESSignatureGroup">
+ <xs:sequence>
+ <xs:element name="Signature" type="ds:PESSignatureType"/>
+ </xs:sequence>
+ </xs:group>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="Class_SchemasCommuns.xsd"/>
+ <xs:complexType name="TInfoTiersFact">
+ <xs:complexContent>
+ <xs:extension base="cm:TInfoTiers"/>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="TTiers">
+ <xs:sequence>
+ <xs:element name="InfoTiers" type="TInfoTiersFact"/>
+ <xs:element name="Adresse" type="cm:TAdresse" minOccurs="0"/>
+ <xs:element name="CpteBancaire" type="cm:TBancaire" minOccurs="0"/>
+ <xs:element name="NumTVA" type="cm:Base_Texte24" minOccurs="0"/>
+ <xs:element name="Service" type="cm:Base_Texte24" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <!-- Regles de codifications communes au PES -->
+ <xs:include schemaLocation="Simple_Type.xsd"/>
+ <xs:complexType name="TDomaine">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ <xs:enumeration value="09"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TNatIdTiers">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TTypTiers">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TCatTiers">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="20"/>
+ <xs:enumeration value="21"/>
+ <xs:enumeration value="22"/>
+ <xs:enumeration value="23"/>
+ <xs:enumeration value="24"/>
+ <xs:enumeration value="25"/>
+ <xs:enumeration value="26"/>
+ <xs:enumeration value="27"/>
+ <xs:enumeration value="28"/>
+ <xs:enumeration value="29"/>
+ <xs:enumeration value="50"/>
+ <xs:enumeration value="60"/>
+ <xs:enumeration value="61"/>
+ <xs:enumeration value="62"/>
+ <xs:enumeration value="63"/>
+ <xs:enumeration value="64"/>
+ <xs:enumeration value="65"/>
+ <xs:enumeration value="70"/>
+ <xs:enumeration value="71"/>
+ <xs:enumeration value="72"/>
+ <xs:enumeration value="73"/>
+ <xs:enumeration value="74"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TNatJur">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="00"/>
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ <xs:enumeration value="09"/>
+ <xs:enumeration value="10"/>
+ <xs:enumeration value="11"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 05/05/2006 EPA HLS00036233 -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunBudget.xsd"/>
+ <xs:complexType name="TBlocDocBudget">
+ <xs:sequence>
+ <xs:element name="Affect" type="cm:Base_Texte10" minOccurs="0"/>
+ <xs:element name="NatDec" type="TNatDec"/>
+ <xs:element name="RepCredit" type="TRepCredit"/>
+ <xs:element name="NumDec" type="cm:Base_Alphanum10" minOccurs="0"/>
+ <xs:element name="Exer" type="cm:Base_Annee"/>
+ <xs:element name="CodMvt" type="TCodMvt"/>
+ <xs:element name="DteDec" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="DteDecExec" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="PJRef" type="cm:TPJReference" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunBudget.xsd"/>
+ <xs:complexType name="TBlocDocBudget">
+ <xs:sequence>
+ <xs:element name="Affect" type="cm:Base_Texte10" minOccurs="0"/>
+ <xs:element name="NatDec" type="TNatDec"/>
+ <xs:element name="NumDec" type="cm:Base_Alphanum10" minOccurs="0"/>
+ <xs:element name="Exer" type="cm:Base_Annee"/>
+ <xs:element name="DteDec" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="DteDecEx" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="DteRcpt" type="cm:Base_Date"/>
+ <xs:element name="DteInteg" type="cm:Base_Date"/>
+ <xs:element name="DtePec" type="cm:Base_Date"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunBudget.xsd"/>
+ <xs:complexType name="TLigneBudget">
+ <xs:sequence>
+ <xs:element name="Nature" type="cm:Base_Texte12" minOccurs="0"/>
+ <xs:element name="LibCpte" type="cm:Base_Texte100" minOccurs="0"/>
+ <xs:element name="Fonction" type="cm:Base_Num10" minOccurs="0"/>
+ <xs:element name="Operation" type="cm:Base_Num10" minOccurs="0"/>
+ <xs:element name="ContNat" type="cm:Base_Texte12" minOccurs="0"/>
+ <xs:element name="ArtSpe" type="cm:Base_Booleen" minOccurs="0"/>
+ <xs:element name="ContFon" type="cm:Base_Num10" minOccurs="0"/>
+ <xs:element name="ContOp" type="cm:Base_Num10" minOccurs="0"/>
+ <xs:element name="CodRD" type="cm:Base_Booleen"/>
+ <xs:element name="MtPrev" type="cm:Base_Montant"/>
+ <xs:element name="MtReal" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="OpBudg" type="cm:Base_Booleen"/>
+ <xs:element name="TypOpBudg" type="TTypOpBudg" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunBudget.xsd"/>
+ <xs:complexType name="TLigneBudget">
+ <xs:sequence>
+ <xs:element name="Nature" type="cm:Base_Texte12" minOccurs="0"/>
+ <xs:element name="Fonction" type="cm:Base_Texte10" minOccurs="0"/>
+ <xs:element name="Operation" type="cm:Base_Num10" minOccurs="0"/>
+ <xs:element name="ContNat" type="cm:Base_Texte12" minOccurs="0"/>
+ <xs:element name="ArtSpe" type="cm:Base_Booleen" minOccurs="0"/>
+ <xs:element name="ContFon" type="cm:Base_Num10" minOccurs="0"/>
+ <xs:element name="ContOp" type="cm:Base_Num10" minOccurs="0"/>
+ <xs:element name="CodRD" type="cm:Base_Booleen"/>
+ <xs:element name="MtPrev" type="cm:Base_Montant"/>
+ <xs:element name="MtReal" type="cm:Base_Montant"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <!-- Regles de codifications communes au PES Marche-->
+ <xs:complexType name="TNatDec">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ <xs:enumeration value="09"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TRepCredit">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TCodMvt">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="1"/>
+ <xs:enumeration value="2"/>
+ <xs:enumeration value="3"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TTypOpBudg">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="1"/>
+ <xs:enumeration value="2"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/budget/r0/aller" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/budget/r0/aller" elementFormDefault="unqualified">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunBudget.xsd"/>
+ <xs:include schemaLocation="Class_BudgetAller.xsd"/>
+ <xs:include schemaLocation="Class_LigneBudgetAller.xsd"/>
+ <xs:complexType name="TPES_BudgetAller">
+ <xs:sequence>
+ <xs:element name="EnTeteBudget">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="IdVer" type="cm:Base_Num2"/>
+ <xs:element name="InfoDematerialisee" type="cm:Base_Booleen" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="DocumentBudgetaire" type="TDocumentBudgetaire" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TDocumentBudgetaire">
+ <xs:sequence>
+ <xs:element name="BlocDocBudget" type="TBlocDocBudget"/>
+ <xs:element name="LigneBudget" type="TLigneBudget" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/budget/r0/retour" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/budget/r0/retour" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunBudget.xsd"/>
+ <xs:include schemaLocation="Class_LigneBudgetRetour.xsd"/>
+ <xs:include schemaLocation="Class_BudgetRetour.xsd"/>
+ <xs:complexType name="TPES_BudgetRetour">
+ <xs:sequence>
+ <xs:element name="EnTeteBudget">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="IdVer" type="cm:Base_Num2"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="DocumentBudgetaire" type="TDocumentBudgetaire" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TDocumentBudgetaire">
+ <xs:sequence>
+ <xs:element name="BlocDocBudget" type="TBlocDocBudget"/>
+ <xs:element name="LigneBudget" type="TLigneBudget" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunComptabilite.xsd"/>
+ <xs:complexType name="TBlocCompte">
+ <xs:sequence>
+ <xs:element name="IdentifiantCompte" type="TIdentifiantCompte">
+ <xs:annotation>
+ <xs:documentation>Identifiant compte - Bloc obligatoire</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="BalanceComptable" type="TBalanceComptable" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Balance comptable - Bloc Facultatif</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TIdentifiantCompte">
+ <xs:sequence>
+ <xs:element name="NumCpte" type="cm:Base_Texte12"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TBalanceComptable">
+ <xs:sequence>
+ <xs:element name="SldDef" type="cm:Base_Booleen" minOccurs="0"/>
+ <xs:element name="MtBeDeb" type="cm:Base_Montant"/>
+ <xs:element name="MtBeCred" type="cm:Base_Montant"/>
+ <xs:element name="MtOpDeb" type="cm:Base_Montant"/>
+ <xs:element name="MtOpCred" type="cm:Base_Montant"/>
+ <xs:element name="MtAnnTitre" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtAnnMdt" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtBudgPrim" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtBudgSupp" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtDecMod" type="cm:Base_Montant" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunComptabilite.xsd"/>
+ <xs:complexType name="TInformationEcriture">
+ <xs:sequence>
+ <xs:element name="DteEcrit" type="cm:Base_Date"/>
+ <xs:element name="NumEcrit" type="cm:Base_Alphanum6"/>
+ <xs:element name="LibEcrit" type="cm:Base_Texte100" minOccurs="0"/>
+ <xs:element name="CodEcrit" type="TCodEcrit"/>
+ <xs:element name="Sens" type="cm:Base_Booleen"/>
+ <xs:element name="Montant" type="cm:Base_Montant"/>
+ <xs:element name="Imputation" type="cm:Base_Texte12" minOccurs="0"/>
+ <xs:element name="RefTiers" type="cm:Base_Texte30" minOccurs="0"/>
+ <xs:element name="Nom" type="cm:Base_Texte38" minOccurs="0"/>
+ <xs:element name="EtPce" type="TEtPce" minOccurs="0"/>
+ <xs:element name="DteEtPce" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="CodAct" type="cm:Base_Num3" minOccurs="0"/>
+ <xs:element name="ExerPce" type="cm:Base_Annee" minOccurs="0"/>
+ <xs:element name="IdPce" type="cm:Base_Num8" minOccurs="0"/>
+ <xs:element name="IdLignePce" type="cm:Base_Num6" minOccurs="0"/>
+ <xs:element name="CpteTiers" type="cm:Base_Num12" minOccurs="0"/>
+ <xs:element name="CodCollP503" type="cm:Base_Alphanum3" minOccurs="0"/>
+ <xs:element name="BudCollP503" type="cm:Base_Alphanum2" minOccurs="0"/>
+ <xs:element name="Type" type="TType" minOccurs="0"/>
+ <xs:element name="NatPceOrig" type="TNatPceOrig" minOccurs="0"/>
+ <xs:element name="ExerPceOrig" type="cm:Base_Annee" minOccurs="0"/>
+ <xs:element name="IdPceOrig" type="cm:Base_Num13" minOccurs="0"/>
+ <xs:element name="IdLignePceOrig" type="cm:Base_Num6" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XML Spy v4.4 (http://www.xmlspy.com) by Michael Conroy (SEMA) -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:include schemaLocation="../../Simple_Type.xsd"/>
+ <xs:complexType name="TEnveloppe">
+ <xs:sequence>
+ <xs:element name="Parametres" type="TParametres"/>
+ <xs:element name="Emetteur" type="TCarteVisite" minOccurs="0"/>
+ <xs:element name="Recepteur" type="TCarteVisite" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TParametres">
+ <xs:sequence>
+ <xs:element name="Version" type="Base_Num2"/>
+ <xs:element name="TypFic" type="Base_Texte32"/>
+ <xs:element name="NomFic" type="Base_Texte100"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TCarteVisite">
+ <xs:sequence>
+ <xs:element name="Sigle" type="Base_Texte32" minOccurs="0"/>
+ <xs:element name="Adresse" type="Base_Texte38" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">
+ <!-- Regles de codifications communes au PES Comptabillite-->
+ <!-- 05/05/2006 EPA HLS00036235-->
+ <xs:complexType name="TNatInf">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="0"/>
+ <xs:enumeration value="1"/>
+ <xs:enumeration value="2"/>
+ <xs:enumeration value="3"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TType">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="1"/>
+ <xs:enumeration value="2"/>
+ <xs:enumeration value="3"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TNatFonCpte">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TNatPceOrig">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TEtPce">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="00"/>
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ <xs:enumeration value="09"/>
+ <xs:enumeration value="10"/>
+ <xs:enumeration value="11"/>
+ <xs:enumeration value="12"/>
+ <xs:enumeration value="13"/>
+ <xs:enumeration value="14"/>
+ <xs:enumeration value="15"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TCodEcrit">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="00"/>
+ <xs:enumeration value="10"/>
+ <xs:enumeration value="11"/>
+ <xs:enumeration value="12"/>
+ <xs:enumeration value="13"/>
+ <xs:enumeration value="14"/>
+ <xs:enumeration value="16"/>
+ <xs:enumeration value="17"/>
+ <xs:enumeration value="18"/>
+ <xs:enumeration value="19"/>
+ <xs:enumeration value="20"/>
+ <xs:enumeration value="30"/>
+ <xs:enumeration value="40"/>
+ <xs:enumeration value="50"/>
+ <xs:enumeration value="51"/>
+ <xs:enumeration value="60"/>
+ <xs:enumeration value="70"/>
+ <xs:enumeration value="71"/>
+ <xs:enumeration value="72"/>
+ <xs:enumeration value="73"/>
+ <xs:enumeration value="74"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/comptabilite/r0/retour" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/comptabilite/r0/retour" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" elementFormDefault="unqualified">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunComptabilite.xsd"/>
+ <xs:include schemaLocation="Class_Compte.xsd"/>
+ <xs:include schemaLocation="Class_Ecriture.xsd"/>
+ <xs:complexType name="TPES_Comptabilite">
+ <xs:sequence>
+ <xs:element name="EnTeteComptabilite">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="IdVer" type="cm:Base_Num2"/>
+ <xs:element name="Exer" type="cm:Base_Annee"/>
+ <xs:element name="NatInf" type="TNatInf"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="InformationCompte" type="TInformationCompte" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInformationCompte">
+ <xs:sequence>
+ <xs:element name="BlocCompte" type="TBlocCompte"/>
+ <xs:element name="InformationEcriture" type="TInformationEcriture" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 05/05/2006 EPA HLS00036229-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunDepense.xsd"/>
+ <xs:complexType name="TBlocBordereau">
+ <xs:sequence>
+ <xs:element name="Exer" type="cm:Base_Annee"/>
+ <xs:element name="IdBord" type="cm:Base_Num7"/>
+ <xs:element name="DteBordEm" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="TypBord" type="TTypBord"/>
+ <xs:element name="NbrPce" type="cm:Base_Num5"/>
+ <xs:element name="MtCumulAnnuel" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtBordHT" type="cm:Base_Montant"/>
+ <xs:element name="MtBordTVA" type="cm:Base_Montant" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunDepense.xsd"/>
+ <xs:complexType name="TBlocBordereau">
+ <xs:sequence>
+ <xs:element name="Exer" type="cm:Base_Annee"/>
+ <xs:element name="IdBord" type="cm:Base_Num7"/>
+ <xs:element name="DteBordEm" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="TypBord" type="TTypBord"/>
+ <xs:element name="NbrPce" type="cm:Base_Num5"/>
+ <xs:element name="MtBordHT" type="cm:Base_Montant"/>
+ <xs:element name="MtBordTVA" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="DteBordArr" type="cm:Base_Date" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunDepense.xsd"/>
+ <xs:complexType name="TInfoTiersRecette">
+ <xs:complexContent>
+ <xs:extension base="cm:TInfoTiers">
+ <xs:sequence>
+ <xs:element name="DteMalade" type="cm:Base_Date"/>
+ <xs:element name="TypTiers" type="cm:Base_Alphanum2"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunDepense.xsd"/>
+ <xs:complexType name="TBlocLignePiece">
+ <xs:sequence>
+ <xs:element name="InfoLignePce" type="TInfoLignePce">
+ <xs:annotation>
+ <xs:documentation>Information ligne de pièce</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="InfoTVAHLM" type="TInfoTVAHLM" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Information TVA HLM</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="OpSpec" type="TOpSpec" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Opération spécifique</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="RattachPiece" type="TRattachPiece" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Rattachement de pièce</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="LiensIdent" type="TLiensIdent" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Liens identifiants</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoLignePce">
+ <xs:sequence>
+ <xs:element name="IdLigne" type="cm:Base_Num6"/>
+ <xs:element name="Nature" type="cm:Base_Texte12"/>
+ <xs:element name="Fonction" type="cm:Base_Num10" minOccurs="0"/>
+ <xs:element name="Operation" type="cm:Base_Num10" minOccurs="0"/>
+ <xs:element name="CptAna" type="cm:Base_Alphanum10" minOccurs="0"/>
+ <xs:element name="Facture" type="cm:Base_Texte20" minOccurs="0"/>
+ <xs:element name="LibVir1" type="cm:Base_Texte50" minOccurs="0"/>
+ <xs:element name="LibVir2" type="cm:Base_Texte50" minOccurs="0"/>
+ <xs:element name="ModRegl" type="TCodePaiement" minOccurs="0"/>
+ <xs:element name="TVAIntraCom" type="cm:Base_Booleen"/>
+ <xs:element name="CpteTVA" type="cm:Base_Alphanum12" minOccurs="0"/>
+ <xs:element name="CpteTiers" type="cm:Base_Texte12" minOccurs="0"/>
+ <xs:element name="MtHT" type="cm:Base_Montant"/>
+ <xs:element name="MtTVA" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtFactHT" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="PJRef" type="cm:TPJReference" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoTVAHLM">
+ <xs:sequence>
+ <xs:element name="RecTVA" type="cm:Base_Booleen"/>
+ <xs:element name="MtHtRes" type="cm:Base_Montant"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TOpSpec">
+ <xs:sequence>
+ <xs:element name="CodOpSpec" type="TCodOpSpec"/>
+ <xs:element name="IdOpSpec" type="cm:Base_Alphanum15"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TRattachPiece">
+ <xs:sequence>
+ <xs:element name="NatPceOrig" type="TNatPceOrig"/>
+ <xs:element name="ExerRat" type="cm:Base_Annee"/>
+ <xs:element name="IdPceOrig" type="cm:Base_Num13"/>
+ <xs:element name="IdLigneOrig" type="cm:Base_Num6" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TLiensIdent">
+ <xs:sequence>
+ <xs:element name="IdConv" type="cm:Base_Texte25" minOccurs="0"/>
+ <xs:element name="IdMarche" type="cm:Base_Texte30" minOccurs="0"/>
+ <xs:element name="IdEmpruntOrdo" type="cm:Base_Texte24" minOccurs="0"/>
+ <xs:element name="IdActif" type="cm:Base_Texte25" minOccurs="0"/>
+ <xs:element name="IdRegie" type="cm:Base_Texte10" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunDepense.xsd"/>
+ <xs:complexType name="TBlocLignePiece">
+ <xs:sequence>
+ <xs:element name="InfoLignePce" type="TInfoLignePce">
+ <xs:annotation>
+ <xs:documentation>Information ligne de pièce</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="InfoPaiement" type="TInfoPaiement" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Information paiement</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="OpSpec" type="TOpSpec" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Opération spécifique</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="RattachPiece" type="TRattachPiece" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Rattachement de pièce</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="LiensIdent" type="TLiensIdent" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Liens identifiants</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoLignePce">
+ <xs:sequence>
+ <xs:element name="IdLigne" type="cm:Base_Num6"/>
+ <xs:element name="Nature" type="cm:Base_Texte12" minOccurs="0"/>
+ <xs:element name="CptAna" type="cm:Base_Alphanum10" minOccurs="0"/>
+ <xs:element name="Facture" type="cm:Base_Texte20" minOccurs="0"/>
+ <xs:element name="LibVir1" type="cm:Base_Texte50" minOccurs="0"/>
+ <xs:element name="LibVir2" type="cm:Base_Texte50" minOccurs="0"/>
+ <xs:element name="ModRegl" type="TCodePaiement" minOccurs="0"/>
+ <xs:element name="CpteTVA" type="cm:Base_Alphanum12" minOccurs="0"/>
+ <xs:element name="CpteTiers" type="cm:Base_Texte12" minOccurs="0"/>
+ <xs:element name="MtHT" type="cm:Base_Montant"/>
+ <xs:element name="MtTVA" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtFactHT" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="CessOpp" type="TCessOpp" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoPaiement">
+ <xs:sequence>
+ <xs:element name="NbrPay" type="cm:Base_Num4"/>
+ <xs:element name="MtPayTot" type="cm:Base_Montant"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TOpSpec">
+ <xs:sequence>
+ <xs:element name="CodOpSpec" type="TCodOpSpec"/>
+ <xs:element name="IdOpSpec" type="cm:Base_Alphanum15"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TRattachPiece">
+ <xs:sequence>
+ <xs:element name="NatPceOrig" type="TNatPceOrig"/>
+ <xs:element name="ExerRat" type="cm:Base_Annee"/>
+ <xs:element name="IdPceOrig" type="cm:Base_Num13"/>
+ <xs:element name="IdLigneOrig" type="cm:Base_Num6" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TLiensIdent">
+ <xs:sequence>
+ <xs:element name="IdConv" type="cm:Base_Texte25" minOccurs="0"/>
+ <xs:element name="IdMarche" type="cm:Base_Texte30" minOccurs="0"/>
+ <xs:element name="IdEmpruntOrdo" type="cm:Base_Texte24" minOccurs="0"/>
+ <xs:element name="IdActif" type="cm:Base_Texte25" minOccurs="0"/>
+ <xs:element name="IdRegie" type="cm:Base_Texte10" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunDepense.xsd"/>
+ <xs:complexType name="TBlocPiece">
+ <xs:sequence>
+ <xs:element name="InfoPce" type="TInfoPce">
+ <xs:annotation>
+ <xs:documentation>information pièce - obligatoire</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="DGP" type="TDGP" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>délai global de paiement- facultatif</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoPce">
+ <xs:sequence>
+ <xs:element name="CodServ" type="cm:Base_Texte10" minOccurs="0"/>
+ <xs:element name="Affect" type="cm:Base_Texte10" minOccurs="0"/>
+ <xs:element name="IdPce" type="cm:Base_Num8"/>
+ <xs:element name="TypPce" type="TTypPce"/>
+ <xs:element name="NatPce" type="TNatPce"/>
+ <xs:element name="Obj" type="cm:Base_Texte100" minOccurs="0"/>
+ <xs:element name="DteEch" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="PJRef" type="cm:TPJReference" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="PJ" type="cm:Base_Texte250" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TDGP">
+ <xs:sequence>
+ <xs:element name="Dgp" type="cm:Base_Booleen"/>
+ <xs:element name="DteDebDgp" type="cm:Base_Date"/>
+ <xs:element name="DteFinDgp" type="cm:Base_Date"/>
+ <xs:element name="DureeDgp" type="cm:Base_Num2"/>
+ <xs:element name="CodIntMor" type="TCodIntMor" minOccurs="0"/>
+ <xs:element name="TxIntMor" type="cm:Base_Taux" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunDepense.xsd"/>
+ <xs:complexType name="TBlocPiece">
+ <xs:sequence>
+ <xs:element name="InfoPce" type="TInfoPce">
+ <xs:annotation>
+ <xs:documentation>information ligne de pièce</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="DGP" type="TDGP" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>délai global de paiement</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoPce">
+ <xs:sequence>
+ <xs:element name="CodServ" type="cm:Base_Texte10" minOccurs="0"/>
+ <xs:element name="Affect" type="cm:Base_Texte10" minOccurs="0"/>
+ <xs:element name="IdPce" type="cm:Base_Num8"/>
+ <xs:element name="TypPce" type="TTypPce"/>
+ <xs:element name="NatPce" type="TNatPce"/>
+ <xs:element name="DtePceInt" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="DtePcePec" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="EtatPce" type="TEtatPce"/>
+ <xs:element name="ObsEtat" type="cm:Base_Texte100" minOccurs="0"/>
+ <xs:element name="DtePceRej" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="DtePceInst" type="cm:Base_Date" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TDGP">
+ <xs:sequence>
+ <xs:element name="DteDebSusp" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="DteFinSusp" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="NatSusp" type="TNatSusp" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunDepense.xsd"/>
+ <xs:complexType name="TPaiement">
+ <xs:sequence>
+ <xs:element name="ModeReg" type="TCodePaiement"/>
+ <xs:element name="DtePay" type="cm:Base_Date"/>
+ <xs:element name="IdPay" type="cm:Base_Num12"/>
+ <xs:element name="MtPay" type="cm:Base_Montant"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunDepense.xsd"/>
+ <xs:complexType name="TInfoTiersDepense">
+ <xs:sequence>
+ <xs:element name="IdTiers" type="cm:Base_Texte15" minOccurs="0"/>
+ <xs:element name="NatIdTiers" type="cm:TNatIdTiers" minOccurs="0"/>
+ <xs:element name="DteIdTiers" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="RefTiers" type="cm:Base_Texte30" minOccurs="0"/>
+ <xs:element name="CatTiers" type="cm:TCatTiers"/>
+ <xs:element name="NatJur" type="cm:TNatJur"/>
+ <xs:element name="Civilite" type="cm:Base_Texte10" minOccurs="0"/>
+ <xs:element name="Nom" type="cm:Base_Texte38"/>
+ <xs:element name="ComplNom" type="cm:Base_Texte38" minOccurs="0"/>
+ <xs:element name="Prenom" type="cm:Base_Texte38" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:complexType name="TNatInf">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="0"/>
+ <xs:enumeration value="1"/>
+ <xs:enumeration value="2"/>
+ <xs:enumeration value="3"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TTypBord">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TTypPce">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ <xs:enumeration value="09"/>
+ <xs:enumeration value="10"/>
+ <xs:enumeration value="11"/>
+ <xs:enumeration value="12"/>
+ <xs:enumeration value="13"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TNatPce">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ <xs:enumeration value="09"/>
+ <xs:enumeration value="10"/>
+ <xs:enumeration value="11"/>
+ <xs:enumeration value="12"/>
+ <xs:enumeration value="13"/>
+ <xs:enumeration value="14"/>
+ <xs:enumeration value="15"/>
+ <xs:enumeration value="18"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TEtatPce">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TCodIntMor">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TNatSusp">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ <xs:enumeration value="09"/>
+ <xs:enumeration value="10"/>
+ <xs:enumeration value="11"/>
+ <xs:enumeration value="12"/>
+ <xs:enumeration value="13"/>
+ <xs:enumeration value="14"/>
+ <xs:enumeration value="15"/>
+ <xs:enumeration value="16"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TCodePaiement">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ <xs:enumeration value="09"/>
+ <xs:enumeration value="10"/>
+ <xs:enumeration value="11"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TCessOpp">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TCodOpSpec">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TNatPceOrig">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TTypDep">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="00"/>
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="11"/>
+ <xs:enumeration value="12"/>
+ <xs:enumeration value="21"/>
+ <xs:enumeration value="22"/>
+ <xs:enumeration value="31"/>
+ <xs:enumeration value="32"/>
+ <xs:enumeration value="33"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/depense/r0/aller" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/depense/r0/aller" elementFormDefault="unqualified">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="../../Class_Signature.xsd"/>
+ <xs:include schemaLocation="CommunDepense.xsd"/>
+ <xs:include schemaLocation="Class_BordereauDepenseAller.xsd"/>
+ <xs:include schemaLocation="Class_MandatAller.xsd"/>
+ <xs:include schemaLocation="Class_LigneMandatAller.xsd"/>
+ <xs:include schemaLocation="Class_TiersDepense.xsd"/>
+ <xs:complexType name="TPES_DepenseAller">
+ <xs:sequence>
+ <xs:element name="EnTeteDepense">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="IdVer" type="cm:Base_Num2"/>
+ <xs:element name="InfoDematerialisee" type="cm:Base_Booleen" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Bordereau" type="TBordereau" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TBordereau">
+ <xs:sequence>
+ <xs:element name="BlocBordereau" type="TBlocBordereau"/>
+ <xs:element name="Piece" type="TPiece" maxOccurs="unbounded"/>
+ <xs:group ref="ds:PESSignatureGroup" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="Id" type="xs:ID" use="optional"/>
+ </xs:complexType>
+ <xs:complexType name="TPiece">
+ <xs:sequence>
+ <xs:element name="BlocPiece" type="TBlocPiece"/>
+ <xs:element name="LigneDePiece" type="TLigneDePiece" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TLigneDePiece">
+ <xs:sequence>
+ <xs:element name="BlocLignePiece" type="TBlocLignePiece"/>
+ <xs:element name="Tiers" type="TTiers" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TTiers">
+ <xs:sequence>
+ <xs:element name="InfoTiers" type="TInfoTiersDepense"/>
+ <xs:element name="Adresse" type="cm:TAdresse" minOccurs="0"/>
+ <xs:element name="CpteBancaire" type="cm:TBancaire" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/depense/r0/retour" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/depense/r0/retour" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunDepense.xsd"/>
+ <xs:include schemaLocation="Class_BordereauDepenseRetour.xsd"/>
+ <xs:include schemaLocation="Class_MandatRetour.xsd"/>
+ <xs:include schemaLocation="Class_LigneMandatRetour.xsd"/>
+ <xs:include schemaLocation="Class_Paiement.xsd"/>
+ <xs:include schemaLocation="Class_TiersDepense.xsd"/>
+ <xs:complexType name="TPES_DepenseRetour">
+ <xs:sequence>
+ <xs:element name="EnTeteDepense">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="IdVer" type="cm:Base_Num2"/>
+ <xs:element name="NatInf" type="TNatInf"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Bordereau" type="TBordereau" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TBordereau">
+ <xs:sequence>
+ <xs:element name="BlocBordereau" type="TBlocBordereau"/>
+ <xs:element name="Piece" type="TPiece" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TPiece">
+ <xs:sequence>
+ <xs:element name="BlocPiece" type="TBlocPiece"/>
+ <xs:element name="LigneDePiece" type="TLigneDePiece" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TLigneDePiece">
+ <xs:sequence>
+ <xs:element name="BlocLignePiece" type="TBlocLignePiece"/>
+ <xs:element name="Tiers" type="TTiers" minOccurs="0"/>
+ <xs:element name="Paiement" type="TPaiement" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TTiers">
+ <xs:sequence>
+ <xs:element name="InfoTiers" type="TInfoTiersDepense"/>
+ <xs:element name="Adresse" type="cm:TAdresse" minOccurs="0"/>
+ <xs:element name="CpteBancaire" type="cm:TBancaire" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunInventaire.xsd"/>
+ <xs:complexType name="TEtatActif">
+ <xs:sequence>
+ <xs:element name="TypeMessage" type="TTypeMessage">
+ <xs:annotation>
+ <xs:documentation>Type de message</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="IdentificationPiece" type="TIdentPiece">
+ <xs:annotation>
+ <xs:documentation>Identification de la pièce</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="IdentificationBien" type="TIdentificationBien" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Identification du bien</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="InformationBien" type="TInformationBien" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Informations sur le bien</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="SortieDuBien" type="TSortieDuBien" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Sortie du bien</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TTypeMessage">
+ <xs:sequence>
+ <xs:element name="TypEnreg" type="TTypEnreg"/>
+ <xs:element name="TypAct" type="TTypAct"/>
+ <xs:element name="Mt" type="cm:Base_Montant"/>
+ <xs:element name="Exer" type="cm:Base_Annee"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TIdentPiece">
+ <xs:sequence>
+ <xs:element name="IdPce" type="cm:Base_Num8"/>
+ <xs:element name="IdLigne" type="cm:Base_Num6"/>
+ <xs:element name="Nature" type="cm:Base_Texte12"/>
+ <xs:element name="Fonction" type="cm:Base_Num10" minOccurs="0"/>
+ <xs:element name="Operation" type="cm:Base_Num10" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TIdentificationBien">
+ <xs:sequence>
+ <xs:element name="NumInvent" type="cm:Base_Texte25" minOccurs="0"/>
+ <xs:element name="Affect" type="cm:Base_Texte10" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInformationBien">
+ <xs:sequence>
+ <xs:element name="CatImmo" type="cm:Base_Texte6"/>
+ <xs:element name="DurAmt" type="cm:Base_Num3" minOccurs="0"/>
+ <xs:element name="DteAcqui" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="DteSer" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="DesBien" type="cm:Base_Texte250" minOccurs="0"/>
+ <xs:element name="DesCompl" type="cm:Base_Texte100" minOccurs="0"/>
+ <xs:element name="IdColl" type="cm:Base_Num14" minOccurs="0"/>
+ <xs:element name="CodColl" type="cm:Base_Alphanum3" minOccurs="0"/>
+ <xs:element name="CodBud" type="cm:Base_Alphanum2" minOccurs="0"/>
+ <xs:element name="DteInteg" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="ImpDefNat" type="cm:Base_Texte12" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TSortieDuBien">
+ <xs:sequence>
+ <xs:element name="ModSort" type="TModSort"/>
+ <xs:element name="DteSort" type="cm:Base_Date"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">
+ <!-- Regles de codifications communes au PES Inventaire-->
+ <xs:complexType name="TTypAct">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TTypEnreg">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TModSort">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/etatactif/r0/aller" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/etatactif/r0/aller" elementFormDefault="unqualified">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunInventaire.xsd"/>
+ <xs:include schemaLocation="Class_Inventaire.xsd"/>
+ <xs:complexType name="TPES_EtatActif">
+ <xs:sequence>
+ <xs:element name="EnTeteEtatActif">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="IdVer" type="cm:Base_Num2"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="EtatActif" type="TEtatActif" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunEmprunts.xsd"/>
+ <xs:complexType name="TIdentificationEmprunt">
+ <xs:sequence>
+ <xs:element name="TypFlux" type="TTypFlux"/>
+ <xs:element name="TypMvt" type="TTypMvt"/>
+ <xs:element name="Affect" type="cm:Base_Texte10" minOccurs="0"/>
+ <xs:element name="NumEmpOrdo" type="cm:Base_Texte24"/>
+ <xs:element name="ObjEmp" type="cm:Base_Texte250" minOccurs="0"/>
+ <xs:element name="MtEmp" type="cm:Base_Montant"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInformationEmprunt">
+ <xs:sequence>
+ <xs:element name="NumEmpPret" type="cm:Base_Texte24"/>
+ <xs:element name="TypEmp" type="TTypEmp"/>
+ <xs:element name="TypMon" type="TTypMon" minOccurs="0"/>
+ <xs:element name="PerRemb" type="TPerRemb"/>
+ <xs:element name="IntDiff" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="TypTx" type="TTypTx"/>
+ <xs:element name="Tx" type="cm:Base_Taux"/>
+ <xs:element name="FrsDossier" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="Duree" type="cm:Base_Num3"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TLigneTableauAmt">
+ <xs:sequence>
+ <xs:element name="DtePai" type="cm:Base_Date"/>
+ <xs:element name="FraisEch" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="Capital" type="cm:Base_Montant"/>
+ <xs:element name="Interet" type="cm:Base_Montant"/>
+ <xs:element name="InteretDiffere" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtCrd" type="cm:Base_Montant"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunEmprunts.xsd"/>
+ <xs:complexType name="TInfoTiers">
+ <xs:sequence>
+ <xs:element name="IdTiers" type="cm:Base_Texte15" minOccurs="0"/>
+ <xs:element name="Civilite" type="cm:Base_Texte10" minOccurs="0"/>
+ <xs:element name="Nom" type="cm:Base_Texte38"/>
+ <xs:element name="ComplNom" type="cm:Base_Texte38" minOccurs="0"/>
+ <xs:element name="Prenom" type="cm:Base_Texte38" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:complexType name="TTypFlux">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TTypMvt">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TTypEmp">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TPerRemb">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TTypMon">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TTypTx">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/emprunt/r0/aller" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/emprunt/r0/aller" elementFormDefault="unqualified">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunEmprunts.xsd"/>
+ <xs:include schemaLocation="Class_Emprunt.xsd"/>
+ <xs:include schemaLocation="Class_TiersEmprunt.xsd"/>
+ <xs:complexType name="TPES_EtatPassif">
+ <xs:sequence>
+ <xs:element name="EnTeteEtatPassif">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="IdVer" type="cm:Base_Num2"/>
+ <xs:element name="Exer" type="cm:Base_Annee"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="EtatPassif" type="TEtatPassif" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TEtatPassif">
+ <xs:sequence>
+ <xs:element name="IdentificationEmprunt" type="TIdentificationEmprunt"/>
+ <xs:element name="InformationEmprunt" type="TInformationEmprunt" minOccurs="0"/>
+ <xs:element name="Tiers" type="TTiers"/>
+ <xs:element name="LigneTableauAmt" type="TLigneTableauAmt" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TTiers">
+ <xs:sequence>
+ <xs:element name="InfoTiers" type="TInfoTiers"/>
+ <xs:element name="Adresse" type="cm:TAdresse" minOccurs="0"/>
+ <xs:element name="CpteBancaire" type="cm:TBancaire" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunMarche.xsd"/>
+ <xs:complexType name="TBlocInformationMarche">
+ <xs:sequence>
+ <xs:element name="IdentificationMarche" type="TIdentificationMarche">
+ <xs:annotation>
+ <xs:documentation>Identification du marché</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="FicheRecensementEco" type="TFicheRecensementEco" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Fiche de recensement économique</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="FicheSuiviMarche" type="TFicheSuiviMarche" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Fiche de suivi du marché</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="PJRef" type="cm:TPJReference" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TIdentificationMarche">
+ <xs:sequence>
+ <xs:element name="Affect" type="cm:Base_Texte10" minOccurs="0"/>
+ <xs:element name="IdMar" type="cm:Base_Texte30"/>
+ <xs:element name="IdDoc" type="cm:Base_Texte2"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TFicheRecensementEco">
+ <xs:sequence>
+ <xs:element name="Ppu" type="cm:Base_Num17"/>
+ <xs:element name="Passation" type="TPassation"/>
+ <xs:element name="CatCom" type="TCatCom"/>
+ <xs:element name="TypDep" type="TTypDep" minOccurs="0"/>
+ <xs:element name="OpReseau" type="cm:Base_Booleen" minOccurs="0"/>
+ <xs:element name="CodCPV" type="cm:Base_Num9"/>
+ <xs:element name="NatOuvr" type="cm:Base_Num6"/>
+ <xs:element name="MtHT" type="cm:Base_Montant"/>
+ <xs:element name="DteNotif" type="cm:Base_Date"/>
+ <xs:element name="DureeMar" type="cm:Base_Num3"/>
+ <xs:element name="Section" type="cm:Base_Booleen"/>
+ <xs:element name="Alloti" type="cm:Base_Booleen"/>
+ <xs:element name="JOUE" type="cm:Base_Alphanum10" minOccurs="0"/>
+ <xs:element name="PME" type="cm:Base_Booleen" minOccurs="0"/>
+ <xs:element name="CodeAPE" type="cm:Base_Alphanum4" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TFicheSuiviMarche">
+ <xs:sequence>
+ <xs:element name="TypMar" type="TTypMar"/>
+ <xs:element name="TypDoc" type="TTypDoc" minOccurs="0"/>
+ <xs:element name="IdMarIni" type="cm:Base_Texte30" minOccurs="0"/>
+ <xs:element name="IdDocIni" type="cm:Base_Texte2" minOccurs="0"/>
+ <xs:element name="ObjMar" type="cm:Base_Texte250" minOccurs="0"/>
+ <xs:element name="MultiBudg" type="cm:Base_Booleen"/>
+ <xs:element name="CarPx" type="TCarPx"/>
+ <xs:element name="Prest" type="TPrest"/>
+ <xs:element name="NatPrest" type="cm:Base_Texte50" minOccurs="0"/>
+ <xs:element name="GarApp" type="TGarApp" minOccurs="0"/>
+ <xs:element name="DelaiGar" type="cm:Base_Num2" minOccurs="0"/>
+ <xs:element name="MtGar" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="TxGar" type="cm:Base_Taux" minOccurs="0"/>
+ <xs:element name="TypGrp" type="TTypGrp" minOccurs="0"/>
+ <xs:element name="MtGlobSSTrait" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="DteExec" type="cm:Base_Date"/>
+ <xs:element name="DteOrdServ" type="cm:Base_Date"/>
+ <xs:element name="MarSimp" type="cm:Base_Booleen"/>
+ <xs:element name="Avance" type="TAvance" minOccurs="0"/>
+ <xs:element name="Penalite" type="cm:Base_Booleen"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XML Spy v4.4 (http://www.xmlspy.com) by Michael Conroy (SEMA) -->
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunMarche.xsd"/>
+ <xs:complexType name="TInfoTiersMarche">
+ <xs:sequence>
+ <xs:element name="IdTiers" type="cm:Base_Texte15" minOccurs="0"/>
+ <xs:element name="NatIdTiers" type="cm:TNatIdTiers" minOccurs="0"/>
+ <xs:element name="DteIdTiers" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="RefTiers" type="cm:Base_Texte30" minOccurs="0"/>
+ <xs:element name="CatTiers" type="cm:TCatTiers"/>
+ <xs:element name="NatJur" type="cm:TNatJur"/>
+ <xs:element name="TypTiers" type="cm:TTypTiers"/>
+ <xs:element name="Civilite" type="cm:Base_Texte10" minOccurs="0"/>
+ <xs:element name="Nom" type="cm:Base_Texte38"/>
+ <xs:element name="ComplNom" type="cm:Base_Texte38" minOccurs="0"/>
+ <xs:element name="Prenom" type="cm:Base_Texte38" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TMontant">
+ <xs:sequence>
+ <xs:element name="Mt" type="cm:Base_Montant"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <!-- Regles de codifications communes au PES Marche-->
+ <xs:complexType name="TTypMar">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TTypDoc">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ <xs:enumeration value="09"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TTypDep">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TPassation">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ <xs:enumeration value="09"/>
+ <xs:enumeration value="10"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TCatCom">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TCarPx">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TTypGrp">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="0"/>
+ <xs:enumeration value="1"/>
+ <xs:enumeration value="2"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TAvance">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="0"/>
+ <xs:enumeration value="1"/>
+ <xs:enumeration value="2"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TPrest">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TGarApp">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TTypTiers">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/marche/r0/aller" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/marche/r0/aller" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" elementFormDefault="unqualified">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunMarche.xsd"/>
+ <xs:include schemaLocation="Class_InformationMarche.xsd"/>
+ <xs:include schemaLocation="Class_TiersMarche.xsd"/>
+ <xs:complexType name="TPES_Marche">
+ <xs:sequence>
+ <xs:element name="EnTeteMarche">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="IdVer" type="cm:Base_Num2"/>
+ <xs:element name="InfoDematerialisee" type="cm:Base_Booleen" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="InformationMarche" type="TInformationMarche" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInformationMarche">
+ <xs:sequence>
+ <xs:element name="BlocInformationMarche" type="TBlocInformationMarche"/>
+ <xs:element name="TiersMarche" type="TTiers" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TTiers">
+ <xs:sequence>
+ <xs:element name="InfoTiers" type="TInfoTiersMarche"/>
+ <xs:element name="Montant" type="TMontant" minOccurs="0"/>
+ <xs:element name="Adresse" type="cm:TAdresse" minOccurs="0"/>
+ <xs:element name="CpteBancaire" type="cm:TBancaire" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunRecette.xsd"/>
+ <xs:complexType name="TBlocBordereau">
+ <xs:sequence>
+ <xs:element name="Exer" type="cm:Base_Annee"/>
+ <xs:element name="IdBord" type="cm:Base_Num7"/>
+ <xs:element name="DteBordEm" type="cm:Base_Date"/> <!-- HLS00052096 -->
+ <xs:element name="TypBord" type="TTypBord"/>
+ <xs:element name="NbrPce" type="cm:Base_Num5"/>
+ <xs:element name="MtCumulAnnuel" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtBordHt" type="cm:Base_Montant"/>
+ <xs:element name="MtBordTVA" type="cm:Base_Montant" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunRecette.xsd"/>
+ <xs:complexType name="TBlocBordereau">
+ <xs:sequence>
+ <xs:element name="Exer" type="cm:Base_Annee"/>
+ <xs:element name="IdBord" type="cm:Base_Num7"/>
+ <xs:element name="DteBordEm" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="TypBord" type="TTypBord"/>
+ <xs:element name="NbrPce" type="cm:Base_Num5"/>
+ <xs:element name="MtBordHt" type="cm:Base_Montant"/>
+ <xs:element name="MtBordTVA" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="DteBordArr" type="cm:Base_Date" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunRecette.xsd"/>
+ <xs:complexType name="TBlocLignePiece">
+ <xs:sequence>
+ <xs:element name="InfoLignePiece" type="TInfoLignePiece">
+ <xs:annotation>
+ <xs:documentation>Informations Ligne de Piece</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="InfoPrelevement" type="TInfoPrelevement" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Informations Prélèvement</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="InfoAssure" type="TInfoAssure" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Informations Assuré</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="RattachPiece" type="TRattachPiece" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Rattachement Pièce</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="LiensIdent" type="TLiensIdent" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Liens identifiants</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoLignePiece">
+ <xs:sequence>
+ <xs:element name="IdLigne" type="cm:Base_Num6"/>
+ <xs:element name="ObjLignePce" type="cm:Base_Texte160" minOccurs="0"/>
+ <xs:element name="CodProdLoc" type="cm:Base_Alphanum4" minOccurs="0"/>
+ <xs:element name="FinGeo" type="cm:Base_Num9" minOccurs="0"/>
+ <xs:element name="CodEtGeo" type="cm:Base_Alphanum3" minOccurs="0"/>
+ <xs:element name="Nature" type="cm:Base_Texte12"/>
+ <xs:element name="Fonction" type="cm:Base_Num10" minOccurs="0"/>
+ <xs:element name="Operation" type="cm:Base_Num10" minOccurs="0"/>
+ <xs:element name="CptAna" type="cm:Base_Alphanum10" minOccurs="0"/>
+ <xs:element name="TxTva" type="cm:Base_Taux" minOccurs="0"/>
+ <xs:element name="Majo" type="cm:Base_Booleen"/>
+ <xs:element name="DteMajo" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="TxMajo" type="cm:Base_Taux" minOccurs="0"/>
+ <xs:element name="CpteTiers" type="cm:Base_Texte12" minOccurs="0"/>
+ <xs:element name="TvaIntraCom" type="cm:Base_Booleen"/>
+ <xs:element name="CpteTva" type="cm:Base_Alphanum12" minOccurs="0"/>
+ <xs:element name="MtHT" type="cm:Base_Montant"/>
+ <xs:element name="MtTVA" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtNonMajo" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="PJRef" type="cm:TPJReference" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoPrelevement">
+ <xs:sequence>
+ <xs:element name="NatPrel" type="TNatPrel"/>
+ <xs:element name="PerPrel" type="TPerPrel"/>
+ <xs:element name="DtePrel" type="cm:Base_Date"/>
+ <xs:element name="MtPrel" type="cm:Base_Montant"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoAssure">
+ <xs:sequence>
+ <xs:element name="CodAssDeb" type="TCodAssDeb"/>
+ <xs:element name="CodAyantDroit" type="TCodAyantDroit" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TRattachPiece">
+ <xs:sequence>
+ <xs:element name="NatPceOrig" type="TNatPceOrig"/>
+ <xs:element name="ExerRat" type="cm:Base_Annee"/>
+ <xs:element name="IdPceOrig" type="cm:Base_Num13"/>
+ <xs:element name="IdLigneOrig" type="cm:Base_Num6" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TLiensIdent">
+ <xs:sequence>
+ <xs:element name="IdEncaissement" type="cm:Base_Num12" minOccurs="0"/>
+ <xs:element name="IdConv" type="cm:Base_Texte25" minOccurs="0"/>
+ <xs:element name="IdMarche" type="cm:Base_Texte30" minOccurs="0"/>
+ <xs:element name="IdCaution" type="cm:Base_Texte25" minOccurs="0"/>
+ <xs:element name="IdEmpruntOrdo" type="cm:Base_Texte24" minOccurs="0"/>
+ <xs:element name="IdActif" type="cm:Base_Texte25" minOccurs="0"/>
+ <xs:element name="IdRegie" type="cm:Base_Texte10" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunRecette.xsd"/>
+ <xs:complexType name="TBlocLignePiece">
+ <xs:sequence>
+ <xs:element name="InfoLignePiece" type="TInfoLignePiece">
+ <xs:annotation>
+ <xs:documentation>Informations Ligne de Piece</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="InfoRecouvrement" type="TInfoRecouvrement" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Informations Recouvrement</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="InfoEcheancier" type="TInfoEcheancier" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Informations Echéancier</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="RattachPieceRec" type="TRattachPiece" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Rattachement Piece</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="LiensIdentRec" type="TLiensIdent" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Liens identifiants</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="InfoSuspPour" type="TInfoSuspPour" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Informations suspension et poursuite</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="InfoContentieux" type="TInfoContentieux" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Informations Contentieux</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="InfoAmiableContentieux" type="TInfoAmiableContentieux" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>Informations amiable et contentieux</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="InfoPourExt" type="TInfoPourExt" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Informations EPE</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoLignePiece">
+ <xs:sequence>
+ <xs:element name="IdLigne" type="cm:Base_Num6"/>
+ <xs:element name="ObjLignePce" type="cm:Base_Texte160" minOccurs="0"/>
+ <xs:element name="CodProdLoc" type="cm:Base_Alphanum4" minOccurs="0"/>
+ <xs:element name="FinGeo" type="cm:Base_Num9" minOccurs="0"/>
+ <xs:element name="CodEtGeo" type="cm:Base_Alphanum3" minOccurs="0"/>
+ <xs:element name="Nature" type="cm:Base_Texte12" minOccurs="0"/>
+ <xs:element name="CptAna" type="cm:Base_Alphanum10" minOccurs="0"/>
+ <xs:element name="CpteTiers" type="cm:Base_Texte12" minOccurs="0"/>
+ <xs:element name="CpteTva" type="cm:Base_Texte12" minOccurs="0"/>
+ <xs:element name="MtHT" type="cm:Base_Montant"/>
+ <xs:element name="MtTVA" type="cm:Base_Montant" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoRecouvrement">
+ <xs:sequence>
+ <xs:element name="NbrReco" type="cm:Base_Num4" minOccurs="0"/>
+ <xs:element name="MtRecoTot" type="cm:Base_Montant" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoEcheancier">
+ <xs:sequence>
+ <xs:element name="DteDerPai" type="cm:Base_Date"/>
+ <xs:element name="NbrPai" type="cm:Base_Num4"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TRattachPiece">
+ <xs:sequence>
+ <xs:element name="NatPceOrig" type="TNatPceOrig"/>
+ <xs:element name="ExerRat" type="cm:Base_Annee"/>
+ <xs:element name="IdPceOrig" type="cm:Base_Num13"/>
+ <xs:element name="IdLigneOrig" type="cm:Base_Num6" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TLiensIdent">
+ <xs:sequence>
+ <xs:element name="IdEncaissement" type="cm:Base_Num12" minOccurs="0"/>
+ <xs:element name="IdConv" type="cm:Base_Texte25" minOccurs="0"/>
+ <xs:element name="IdMarche" type="cm:Base_Texte30" minOccurs="0"/>
+ <xs:element name="IdCaution" type="cm:Base_Texte25" minOccurs="0"/>
+ <xs:element name="IdEmpruntOrdo" type="cm:Base_Texte24" minOccurs="0"/>
+ <xs:element name="IdActif" type="cm:Base_Texte25" minOccurs="0"/>
+ <xs:element name="IdRegie" type="cm:Base_Texte10" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoSuspPour">
+ <xs:sequence>
+ <xs:element name="CodSuspPour" type="TCodSuspPour"/>
+ <xs:element name="DteSuspPour" type="cm:Base_Date"/>
+ <xs:element name="DteRepPour" type="cm:Base_Date" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoContentieux">
+ <xs:sequence>
+ <xs:element name="MtCtxTot" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtMajo" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtFraisCmdt" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtFraisSaisie" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtFraisAutre" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="SldPrinc" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="SldFrais" type="cm:Base_Montant" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoAmiableContentieux">
+ <xs:sequence>
+ <xs:element name="EtPce" type="TEtPce"/>
+ <xs:element name="DteEtPce" type="cm:Base_Date"/>
+ <xs:element name="IdAct" type="cm:Base_Num14" minOccurs="0"/>
+ <xs:element name="CodActu" type="TCodActu" minOccurs="0"/>
+ <xs:element name="DteActu" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="MtMajo" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtFraisCmdt" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtFraisSaisie" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtFraisAutre" type="cm:Base_Montant" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoPourExt">
+ <xs:sequence>
+ <xs:element name="DteEpe" type="cm:Base_Date"/>
+ <xs:element name="IdPostEpe" type="cm:Base_Texte7" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunRecette.xsd"/>
+ <xs:complexType name="TRecouvrement">
+ <xs:sequence>
+ <xs:element name="TypFlux" type="TTypFlux"/>
+ <xs:element name="ModRegl" type="TModRegl"/>
+ <xs:element name="DteReco" type="cm:Base_Date"/>
+ <xs:element name="IdEncaissement" type="cm:Base_Num12"/>
+ <xs:element name="MtReco" type="cm:Base_Montant"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunRecette.xsd"/>
+ <xs:complexType name="TInfoTiersRecette">
+ <xs:sequence>
+ <xs:element name="IdTiers" type="cm:Base_Texte15" minOccurs="0"/>
+ <xs:element name="DteMalade" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="NatIdTiers" type="cm:TNatIdTiers" minOccurs="0"/>
+ <xs:element name="DteIdTiers" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="RefTiers" type="cm:Base_Texte30" minOccurs="0"/>
+ <xs:element name="CatTiers" type="cm:TCatTiers"/>
+ <xs:element name="NatJur" type="cm:TNatJur"/>
+ <xs:element name="TypTiers" type="cm:TTypTiers"/>
+ <xs:element name="Civilite" type="cm:Base_Texte10" minOccurs="0"/>
+ <xs:element name="Nom" type="cm:Base_Texte38"/>
+ <xs:element name="ComplNom" type="cm:Base_Texte38" minOccurs="0"/>
+ <xs:element name="Prenom" type="cm:Base_Texte38" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunRecette.xsd"/>
+ <xs:complexType name="TBlocPiece">
+ <xs:sequence>
+ <xs:element name="CodServ" type="cm:Base_Texte10" minOccurs="0"/>
+ <xs:element name="Affect" type="cm:Base_Texte10" minOccurs="0"/>
+ <xs:element name="CodProd" type="cm:Base_Alphanum2" minOccurs="0"/>
+ <xs:element name="IdPce" type="cm:Base_Num8"/>
+ <xs:element name="TypPce" type="TTypPce"/>
+ <xs:element name="NatPce" type="TNatPce"/>
+ <xs:element name="IdRol" type="cm:Base_Num7" minOccurs="0"/>
+ <xs:element name="DteAsp" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="ObjPce" type="cm:Base_Texte160" minOccurs="0"/>
+ <xs:element name="DebFact" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="FinFact" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="PJRef" type="cm:TPJReference" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunRecette.xsd"/>
+ <xs:complexType name="TBlocPiece">
+ <xs:sequence>
+ <xs:element name="CodServ" type="cm:Base_Texte10" minOccurs="0"/>
+ <xs:element name="Affect" type="cm:Base_Texte10" minOccurs="0"/>
+ <xs:element name="CodProd" type="cm:Base_Alphanum2" minOccurs="0"/>
+ <xs:element name="IdPce" type="cm:Base_Num8"/>
+ <xs:element name="TypPce" type="TTypPce"/>
+ <xs:element name="NatPce" type="TNatPce"/>
+ <xs:element name="IdRol" type="cm:Base_Num7" minOccurs="0"/>
+ <xs:element name="DteAsp" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="ObjPce" type="cm:Base_Texte160" minOccurs="0"/>
+ <xs:element name="EtatPce" type="TEtatPce"/>
+ <xs:element name="ObsEtat" type="cm:Base_Texte100" minOccurs="0"/>
+ <xs:element name="DtePceInt" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="DtePcePec" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="DtePceInst" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="DteRegulInst" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="DtePceRej" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="CodInst-Rej" type="TCodInst-Rej" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <!-- Regles de codifications communes au PES Recette-->
+ <!-- 05/05/2006 EPA HLS000224-->
+ <xs:complexType name="TNatInf">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="0"/>
+ <xs:enumeration value="1"/>
+ <xs:enumeration value="2"/>
+ <xs:enumeration value="3"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TTypBord">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TTypPce">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ <xs:enumeration value="09"/>
+ <xs:enumeration value="10"/>
+ <xs:enumeration value="11"/>
+ <xs:enumeration value="12"/>
+ <xs:enumeration value="13"/>
+ <xs:enumeration value="14"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TNatPce">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ <xs:enumeration value="09"/>
+ <xs:enumeration value="10"/>
+ <xs:enumeration value="11"/>
+ <xs:enumeration value="12"/>
+ <xs:enumeration value="18"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TEtatPce">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TCodInst-Rej">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ <xs:enumeration value="09"/>
+ <xs:enumeration value="10"/>
+ <xs:enumeration value="11"/>
+ <xs:enumeration value="12"/>
+ <xs:enumeration value="13"/>
+ <xs:enumeration value="14"/>
+ <xs:enumeration value="15"/>
+ <xs:enumeration value="16"/>
+ <xs:enumeration value="17"/>
+ <xs:enumeration value="18"/>
+ <xs:enumeration value="19"/>
+ <xs:enumeration value="20"/>
+ <xs:enumeration value="21"/>
+ <xs:enumeration value="22"/>
+ <xs:enumeration value="23"/>
+ <xs:enumeration value="24"/>
+ <xs:enumeration value="25"/>
+ <xs:enumeration value="26"/>
+ <xs:enumeration value="27"/>
+ <xs:enumeration value="28"/>
+ <xs:enumeration value="29"/>
+ <xs:enumeration value="30"/>
+ <xs:enumeration value="31"/>
+ <xs:enumeration value="32"/>
+ <xs:enumeration value="33"/>
+ <xs:enumeration value="34"/>
+ <xs:enumeration value="35"/>
+ <xs:enumeration value="36"/>
+ <xs:enumeration value="37"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TNatPrel">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TPerPrel">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TCodAssDeb">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="1"/>
+ <xs:enumeration value="2"/>
+ <xs:enumeration value="3"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TCodAyantDroit">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TNatPceOrig">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TEtPce">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="00"/>
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ <xs:enumeration value="09"/>
+ <xs:enumeration value="10"/>
+ <xs:enumeration value="11"/>
+ <xs:enumeration value="12"/>
+ <xs:enumeration value="13"/>
+ <xs:enumeration value="14"/>
+ <xs:enumeration value="15"/>
+ <xs:enumeration value="16"/>
+ <xs:enumeration value="17"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TCodActu">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ <xs:enumeration value="09"/>
+ <xs:enumeration value="10"/>
+ <xs:enumeration value="11"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TCodSuspPour">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ <xs:enumeration value="09"/>
+ <xs:enumeration value="10"/>
+ <xs:enumeration value="11"/>
+ <xs:enumeration value="12"/>
+ <xs:enumeration value="13"/>
+ <xs:enumeration value="14"/>
+ <xs:enumeration value="15"/>
+ <xs:enumeration value="16"/>
+ <xs:enumeration value="17"/>
+ <xs:enumeration value="18"/>
+ <xs:enumeration value="19"/>
+ <xs:enumeration value="20"/>
+ <xs:enumeration value="21"/>
+ <xs:enumeration value="22"/>
+ <xs:enumeration value="23"/>
+ <xs:enumeration value="24"/>
+ <xs:enumeration value="25"/>
+ <xs:enumeration value="26"/>
+ <xs:enumeration value="27"/>
+ <xs:enumeration value="28"/>
+ <xs:enumeration value="29"/>
+ <xs:enumeration value="30"/>
+ <xs:enumeration value="31"/>
+ <xs:enumeration value="32"/>
+ <xs:enumeration value="33"/>
+ <xs:enumeration value="34"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TTypFlux">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TModRegl">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ <xs:enumeration value="09"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TTypTiers">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/recette/r0/aller" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/recette/r0/aller" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified">
+ <!-- Directives d'inclusion -->
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="../../Class_Signature.xsd"/>
+ <xs:include schemaLocation="CommunRecette.xsd"/>
+ <xs:include schemaLocation="Class_BordereauRecetteAller.xsd"/>
+ <xs:include schemaLocation="Class_TitreAller.xsd"/>
+ <xs:include schemaLocation="Class_LigneTitreAller.xsd"/>
+ <xs:include schemaLocation="Class_RecouvrementRecette.xsd"/>
+ <xs:include schemaLocation="Class_TiersRecette.xsd"/>
+ <xs:complexType name="TPES_RecetteAller">
+ <xs:sequence>
+ <xs:element name="EnTeteRecette">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="IdVer" type="cm:Base_Num2"/>
+ <xs:element name="InfoDematerialisee" type="cm:Base_Booleen" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Bordereau" type="TBordereau" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TBordereau">
+ <xs:sequence>
+ <xs:element name="BlocBordereau" type="TBlocBordereau"/>
+ <xs:element name="Piece" type="TPiece" maxOccurs="unbounded"/>
+ <xs:group ref="ds:PESSignatureGroup" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="Id" type="xs:ID" use="optional"/>
+ </xs:complexType>
+ <xs:complexType name="TPiece">
+ <xs:sequence>
+ <xs:element name="BlocPiece" type="TBlocPiece"/>
+ <xs:element name="LigneDePiece" type="TLigneDePiece" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TLigneDePiece">
+ <xs:sequence>
+ <xs:element name="BlocLignePiece" type="TBlocLignePiece"/>
+ <xs:element name="Tiers" type="TTiers" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="Recouvrement" type="TRecouvrement" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TTiers">
+ <xs:sequence>
+ <xs:element name="InfoTiers" type="TInfoTiersRecette"/>
+ <xs:element name="Adresse" type="cm:TAdresse" minOccurs="0"/>
+ <xs:element name="CpteBancaire" type="cm:TBancaire" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/recette/r0/retour" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/recette/r0/retour" elementFormDefault="unqualified">
+ <!-- Directives d'inclusion -->
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunRecette.xsd"/>
+ <xs:include schemaLocation="Class_BordereauRecetteRetour.xsd"/>
+ <xs:include schemaLocation="Class_TitreRetour.xsd"/>
+ <xs:include schemaLocation="Class_LigneTitreRetour.xsd"/>
+ <xs:include schemaLocation="Class_RecouvrementRecette.xsd"/>
+ <xs:include schemaLocation="Class_TiersRecette.xsd"/>
+ <xs:complexType name="TPES_RecetteRetour">
+ <xs:sequence>
+ <xs:element name="EnTeteRecette">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="IdVer" type="cm:Base_Num2"/>
+ <xs:element name="NatInf" type="TNatInf"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Bordereau" type="TBordereau" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TBordereau">
+ <xs:sequence>
+ <xs:element name="BlocBordereau" type="TBlocBordereau"/>
+ <xs:element name="Piece" type="TPiece" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TPiece">
+ <xs:sequence>
+ <xs:element name="BlocPiece" type="TBlocPiece"/>
+ <xs:element name="LigneDePiece" type="TLigneDePiece" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TLigneDePiece">
+ <xs:sequence>
+ <xs:element name="BlocLignePiece" type="TBlocLignePiece"/>
+ <xs:element name="Tiers" type="TTiers" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="Recouvrement" type="TRecouvrement" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TTiers">
+ <xs:sequence>
+ <xs:element name="InfoTiers" type="TInfoTiersRecette"/>
+ <xs:element name="Adresse" type="cm:TAdresse" minOccurs="0"/>
+ <xs:element name="CpteBancaire" type="cm:TBancaire" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunRole.xsd"/>
+ <xs:complexType name="TBlocArticle">
+ <xs:sequence>
+ <xs:element name="InfoArticle" type="TInfoArticle"/>
+ <xs:element name="InfoPrelevement" type="TInfoPrelevement" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoArticle">
+ <xs:sequence>
+ <xs:element name="CodServ" type="cm:Base_Texte10" minOccurs="0"/>
+ <xs:element name="Affect" type="cm:Base_Texte10" minOccurs="0"/>
+ <xs:element name="IdPce" type="cm:Base_Num8"/>
+ <xs:element name="PJRef" type="cm:TPJReference" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="NumDette" type="cm:Base_Num15" minOccurs="0"/>
+ <xs:element name="Per" type="cm:Base_Num1" minOccurs="0"/>
+ <xs:element name="Cle1" type="cm:Base_Num1" minOccurs="0"/>
+ <xs:element name="Cle2" type="cm:Base_Alphanum1" minOccurs="0"/>
+ <xs:element name="CpteTiers" type="cm:Base_Num12" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoPrelevement">
+ <xs:sequence>
+ <xs:element name="NatPrel" type="TNatPrel"/>
+ <xs:element name="PerPrel" type="TPerPrel"/>
+ <xs:element name="DtePrel" type="cm:Base_Date"/>
+ <xs:element name="MtPrel" type="cm:Base_Montant"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunRole.xsd"/>
+ <xs:complexType name="TBlocArticle">
+ <xs:sequence>
+ <xs:element name="CodServ" type="cm:Base_Texte10" minOccurs="0"/>
+ <xs:element name="Affect" type="cm:Base_Texte10" minOccurs="0"/>
+ <xs:element name="IdPce" type="cm:Base_Num12"/>
+ <xs:element name="NumDette" type="cm:Base_Num15" minOccurs="0"/>
+ <xs:element name="Per" type="cm:Base_Num1" minOccurs="0"/>
+ <xs:element name="Cle1" type="cm:Base_Num1" minOccurs="0"/>
+ <xs:element name="Cle2" type="cm:Base_Alphanum1" minOccurs="0"/>
+ <xs:element name="CpteTiers" type="cm:Base_Num12" minOccurs="0"/>
+ <xs:element name="EtatPce" type="TEtatPce"/>
+ <xs:element name="ObsEtat" type="cm:Base_Texte100" minOccurs="0"/>
+ <xs:element name="DtePceInt" type="cm:Base_Date"/>
+ <xs:element name="DtePcePec" type="cm:Base_Date"/>
+ <xs:element name="DtePceInst" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="DteRegulInst" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="DtePceRej" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="CodInst-Rej" type="TCodInst-Rej" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunRole.xsd"/>
+ <xs:complexType name="TRecouvrement">
+ <xs:sequence>
+ <xs:element name="TypFlux" type="TTypFlux"/>
+ <xs:element name="ModRegl" type="TModRegl"/>
+ <xs:element name="DteReco" type="cm:Base_Date"/>
+ <xs:element name="IdEncaissement" type="cm:Base_Num12"/>
+ <xs:element name="MtReco" type="cm:Base_Montant"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunRole.xsd"/>
+ <xs:complexType name="TBlocRole">
+ <xs:sequence>
+ <xs:element name="CodAct" type="TCodAct"/>
+ <xs:element name="Exer" type="cm:Base_Annee"/>
+ <xs:element name="IdRol" type="cm:Base_Num7"/>
+ <xs:element name="TypRol" type="TTypRol"/>
+ <xs:element name="DteRol" type="cm:Base_Date"/>
+ <xs:element name="MtRolHt" type="cm:Base_Montant"/>
+ <xs:element name="MtRolTVA" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="DteAsp" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="Objet" type="cm:Base_Texte160" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunRole.xsd"/>
+ <xs:complexType name="TBlocRole">
+ <xs:sequence>
+ <xs:element name="CodAct" type="TCodAct"/>
+ <xs:element name="Exer" type="cm:Base_Annee"/>
+ <xs:element name="IdRol" type="cm:Base_Num7"/>
+ <xs:element name="TypRol" type="TTypRol"/>
+ <xs:element name="DteRol" type="cm:Base_Date"/>
+ <xs:element name="MtRolHt" type="cm:Base_Montant"/>
+ <xs:element name="MtRolTVA" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="DteAsp" type="cm:Base_Date" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunRole.xsd"/>
+ <xs:complexType name="TBlocSousArticle">
+ <xs:sequence>
+ <xs:element name="InfoSousArticle" type="TInfoSousArticle"/>
+ <xs:element name="InfoCollBen" type="TInfoCollBen" minOccurs="0"/>
+ <xs:element name="RattachPiece" type="TRattachPiece" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoSousArticle">
+ <xs:sequence>
+ <xs:element name="IdLigne" type="cm:Base_Num6"/>
+ <xs:element name="CodProcLoc" type="cm:Base_Alphanum4"/>
+ <xs:element name="ObjPce" type="cm:Base_Texte160" minOccurs="0"/>
+ <xs:element name="Majo" type="cm:Base_Booleen"/>
+ <xs:element name="DteMajo" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="TxMajo" type="cm:Base_Taux" minOccurs="0"/>
+ <xs:element name="MtHT" type="cm:Base_Montant"/>
+ <xs:element name="MtTVA" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtNonMajo" type="cm:Base_Montant" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoCollBen">
+ <xs:sequence>
+ <xs:element name="IdCollBen" type="cm:Base_Num14"/>
+ <xs:element name="CodCollBen" type="cm:Base_Alphanum3"/>
+ <xs:element name="CodBudBen" type="cm:Base_Alphanum2" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TRattachPiece">
+ <xs:sequence>
+ <xs:element name="ExerRat" type="cm:Base_Annee"/>
+ <xs:element name="IdRolOrig" type="cm:Base_Num7"/>
+ <xs:element name="IdPceOrig" type="cm:Base_Num8"/>
+ <xs:element name="IdLigneOrig" type="cm:Base_Num6" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XMLSPY v5 rel. 2 U (http://www.xmlspy.com) by SERGE MURET (SEMA GROUP SA) -->
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunRole.xsd"/>
+ <xs:complexType name="TBlocSousArticle">
+ <xs:sequence>
+ <xs:element name="InfoSousArticle" type="TInfoSousArticle"/>
+ <xs:element name="InfoCollBen" type="TInfoCollBen" minOccurs="0"/>
+ <xs:element name="InfoRecouvrement" type="TInfoRecouvrement" minOccurs="0"/>
+ <xs:element name="InfoEcheancier" type="TInfoEcheancier" minOccurs="0"/>
+ <xs:element name="RattachPiece" type="TRattachPiece" minOccurs="0"/>
+ <xs:element name="InfoSuspPour" type="TInfoSuspPour" minOccurs="0"/>
+ <xs:element name="InfoContentieux" type="TInfoContentieux" minOccurs="0"/>
+ <xs:element name="InfoAmiableContentieux" type="TInfoAmiableContentieux" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="InfoPourExt" type="TInfoPourExt" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoSousArticle">
+ <xs:sequence>
+ <xs:element name="IdLigne" type="cm:Base_Num6"/>
+ <xs:element name="CodProcLoc" type="cm:Base_Alphanum4" minOccurs="0"/>
+ <xs:element name="ObjPce" type="cm:Base_Texte160" minOccurs="0"/>
+ <xs:element name="MtHT" type="cm:Base_Montant"/>
+ <xs:element name="MtTVA" type="cm:Base_Montant" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoCollBen">
+ <xs:sequence>
+ <xs:element name="IdCollBen" type="cm:Base_Num14"/>
+ <xs:element name="CodCollBen" type="cm:Base_Alphanum3"/>
+ <xs:element name="CodBudBen" type="cm:Base_Alphanum2" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoRecouvrement">
+ <xs:sequence>
+ <xs:element name="NbrReco" type="cm:Base_Num4"/>
+ <xs:element name="MtRecoTot" type="cm:Base_Montant" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoEcheancier">
+ <xs:sequence>
+ <xs:element name="DteDerPay" type="cm:Base_Date"/>
+ <xs:element name="NbrPay" type="cm:Base_Num4"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TRattachPiece">
+ <xs:sequence>
+ <xs:element name="ExerRat" type="cm:Base_Annee"/>
+ <xs:element name="IdRolOrig" type="cm:Base_Num7"/>
+ <xs:element name="IdPceOrig" type="cm:Base_Num8"/>
+ <xs:element name="IdLigneOrig" type="cm:Base_Num6" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoSuspPour">
+ <xs:sequence>
+ <xs:element name="CodSuspPour" type="TCodSuspPour"/>
+ <xs:element name="DteSuspPour" type="cm:Base_Date"/>
+ <xs:element name="DteRepPour" type="cm:Base_Date" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoContentieux">
+ <xs:sequence>
+ <xs:element name="MtCtxTot" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtMajo" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtFraisCdt" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtFraisSais" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtFraisAutre" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="SldPrinc" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="SldMajo" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="SldFrais" type="cm:Base_Montant" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoAmiableContentieux">
+ <xs:sequence>
+ <xs:element name="EtRec" type="TEtRec"/>
+ <xs:element name="EtatPrealable" type="cm:Base_Booleen"/>
+ <xs:element name="DteEtPce" type="cm:Base_Date"/>
+ <xs:element name="IdAct" type="cm:Base_Num14" minOccurs="0"/>
+ <xs:element name="CodActu" type="TCodActu" minOccurs="0"/>
+ <xs:element name="DteActu" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="MtMajo" type="cm:Base_Montant" minOccurs="0"/>
+ <xs:element name="MtFrais" type="cm:Base_Montant" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TInfoPourExt">
+ <xs:sequence>
+ <xs:element name="DteEpe" type="cm:Base_Date"/>
+ <xs:element name="IdPostEpe" type="cm:Base_Texte7"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunRole.xsd"/>
+ <xs:complexType name="TInfoTiersRole">
+ <xs:sequence>
+ <xs:element name="IdTiers" type="cm:Base_Texte15" minOccurs="0"/>
+ <xs:element name="DteMalade" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="NatIdTiers" type="cm:TNatIdTiers" minOccurs="0"/>
+ <xs:element name="DteIdTiers" type="cm:Base_Date" minOccurs="0"/>
+ <xs:element name="RefTiers" type="cm:Base_Texte30" minOccurs="0"/>
+ <xs:element name="CatTiers" type="cm:TCatTiers"/>
+ <xs:element name="NatJur" type="cm:TNatJur"/>
+ <xs:element name="TypTiers" type="cm:TTypTiers"/>
+ <xs:element name="Civilite" type="cm:Base_Texte10" minOccurs="0"/>
+ <xs:element name="Nom" type="cm:Base_Texte38"/>
+ <xs:element name="ComplNom" type="cm:Base_Texte38" minOccurs="0"/>
+ <xs:element name="Prenom" type="cm:Base_Texte38" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">
+ <xs:complexType name="TCodAct">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TNatInf">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="0"/>
+ <xs:enumeration value="1"/>
+ <xs:enumeration value="2"/>
+ <xs:enumeration value="3"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TTypRol">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TEtatPce">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TCodInst-Rej">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ <xs:enumeration value="09"/>
+ <xs:enumeration value="10"/>
+ <xs:enumeration value="11"/>
+ <xs:enumeration value="12"/>
+ <xs:enumeration value="13"/>
+ <xs:enumeration value="14"/>
+ <xs:enumeration value="15"/>
+ <xs:enumeration value="16"/>
+ <xs:enumeration value="17"/>
+ <xs:enumeration value="18"/>
+ <xs:enumeration value="19"/>
+ <xs:enumeration value="20"/>
+ <xs:enumeration value="21"/>
+ <xs:enumeration value="22"/>
+ <xs:enumeration value="23"/>
+ <xs:enumeration value="24"/>
+ <xs:enumeration value="25"/>
+ <xs:enumeration value="26"/>
+ <xs:enumeration value="27"/>
+ <xs:enumeration value="28"/>
+ <xs:enumeration value="29"/>
+ <xs:enumeration value="30"/>
+ <xs:enumeration value="31"/>
+ <xs:enumeration value="32"/>
+ <xs:enumeration value="33"/>
+ <xs:enumeration value="34"/>
+ <xs:enumeration value="35"/>
+ <xs:enumeration value="36"/>
+ <xs:enumeration value="37"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TNatPrel">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TPerPrel">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="00"/>
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TEtRec">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="00"/>
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ <xs:enumeration value="09"/>
+ <xs:enumeration value="10"/>
+ <xs:enumeration value="11"/>
+ <xs:enumeration value="12"/>
+ <xs:enumeration value="13"/>
+ <xs:enumeration value="14"/>
+ <xs:enumeration value="15"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TCodActu">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ <xs:enumeration value="09"/>
+ <xs:enumeration value="10"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TCodSuspPour">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ <xs:enumeration value="09"/>
+ <xs:enumeration value="10"/>
+ <xs:enumeration value="11"/>
+ <xs:enumeration value="12"/>
+ <xs:enumeration value="13"/>
+ <xs:enumeration value="14"/>
+ <xs:enumeration value="15"/>
+ <xs:enumeration value="16"/>
+ <xs:enumeration value="17"/>
+ <xs:enumeration value="18"/>
+ <xs:enumeration value="19"/>
+ <xs:enumeration value="20"/>
+ <xs:enumeration value="21"/>
+ <xs:enumeration value="22"/>
+ <xs:enumeration value="23"/>
+ <xs:enumeration value="24"/>
+ <xs:enumeration value="25"/>
+ <xs:enumeration value="26"/>
+ <xs:enumeration value="27"/>
+ <xs:enumeration value="28"/>
+ <xs:enumeration value="29"/>
+ <xs:enumeration value="30"/>
+ <xs:enumeration value="31"/>
+ <xs:enumeration value="32"/>
+ <xs:enumeration value="33"/>
+ <xs:enumeration value="34"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TTypFlux">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TModRegl">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ <xs:enumeration value="04"/>
+ <xs:enumeration value="05"/>
+ <xs:enumeration value="06"/>
+ <xs:enumeration value="07"/>
+ <xs:enumeration value="08"/>
+ <xs:enumeration value="09"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name="TTypTiers">
+ <xs:attribute name="V" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="01"/>
+ <xs:enumeration value="02"/>
+ <xs:enumeration value="03"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/role/r0/aller" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/role/r0/aller" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified">
+ <!-- Directives d'inclusion -->
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunRole.xsd"/>
+ <xs:include schemaLocation="Class_RoleAller.xsd"/>
+ <xs:include schemaLocation="Class_ArticleAller.xsd"/>
+ <xs:include schemaLocation="Class_SousArticleAller.xsd"/>
+ <xs:include schemaLocation="Class_RecouvrementRole.xsd"/>
+ <xs:include schemaLocation="Class_TiersRole.xsd"/>
+ <xs:complexType name="TPES_RoleAller">
+ <xs:sequence>
+ <xs:element name="EnTeteRole">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="IdVer" type="cm:Base_Num2"/>
+ <xs:element name="InfoDematerialisee" type="cm:Base_Booleen" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Role" type="TRole" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TRole">
+ <xs:sequence>
+ <xs:element name="BlocRole" type="TBlocRole"/>
+ <xs:element name="Article" type="TArticle" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TArticle">
+ <xs:sequence>
+ <xs:element name="BlocArticle" type="TBlocArticle"/>
+ <xs:element name="SousArticle" type="TSousArticle" maxOccurs="unbounded"/>
+ <xs:element name="Tiers" type="TTiers" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TSousArticle">
+ <xs:sequence>
+ <xs:element name="BlocSousArticle" type="TBlocSousArticle"/>
+ <xs:element name="Recouvrement" type="TRecouvrement" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TTiers">
+ <xs:sequence>
+ <xs:element name="InfoTiers" type="TInfoTiersRole"/>
+ <xs:element name="Adresse" type="cm:TAdresse" minOccurs="0"/>
+ <xs:element name="CpteBancaire" type="cm:TBancaire" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?> <!--EPA HLS00039776 20060626-->
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/role/r0/retour" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/role/r0/retour" elementFormDefault="unqualified">
+ <!-- Directives d'inclusion -->
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="CommunRole.xsd"/>
+ <xs:include schemaLocation="Class_RoleRetour.xsd"/>
+ <xs:include schemaLocation="Class_ArticleRetour.xsd"/>
+ <xs:include schemaLocation="Class_SousArticleRetour.xsd"/>
+ <xs:include schemaLocation="Class_RecouvrementRole.xsd"/>
+ <xs:include schemaLocation="Class_TiersRole.xsd"/>
+ <!-- Fin des directives d'inclusios-->
+ <xs:complexType name="TPES_RoleRetour">
+ <xs:sequence>
+ <xs:element name="EnTeteRole">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="IdVer" type="cm:Base_Num2"/>
+ <xs:element name="NatInf" type="TNatInf"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Role" type="TRole" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TRole">
+ <xs:sequence>
+ <xs:element name="BlocRole" type="TBlocRole"/>
+ <xs:element name="Article" type="TArticle" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TArticle">
+ <xs:sequence>
+ <xs:element name="BlocArticle" type="TBlocArticle"/>
+ <xs:element name="SousArticle" type="TSousArticle" minOccurs="0" maxOccurs="unbounded"/> <!--EPA HLS00039776 20060626-->
+ <xs:element name="Tiers" type="TTiers" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TSousArticle">
+ <xs:sequence>
+ <xs:element name="BlocSousArticle" type="TBlocSousArticle"/>
+ <xs:element name="Recouvrement" type="TRecouvrement" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TTiers">
+ <xs:sequence>
+ <xs:element name="InfoTiers" type="TInfoTiersRole"/>
+ <xs:element name="Adresse" type="cm:TAdresse" minOccurs="0"/>
+ <xs:element name="CpteBancaire" type="cm:TBancaire" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../Class_SchemasCommuns.xsd"/>
+ <xs:element name="Acquit" type="TAcquit"/>
+ <xs:complexType name="TAcquit">
+ <xs:sequence>
+ <xs:element name="NomFic" type="cm:Base_Texte100"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../Class_SchemasCommuns.xsd"/>
+ <xs:element name="NonAcquit" type="TNonAcquit"/>
+ <xs:complexType name="TNonAcquit">
+ <xs:sequence>
+ <xs:element name="NomFic" type="cm:Base_Texte100"/>
+ <xs:element name="Motif" type="cm:Base_Texte100"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/heliso/pes_v2/Rev0/aller" xmlns="http://www.minefi.gouv.fr/cp/heliso/pes_v2/Rev0/aller" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" elementFormDefault="unqualified">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="Class_Acquit.xsd"/>
+ <xs:element name="PES_Acquit">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Enveloppe" type="cm:TEnveloppe"/>
+ <xs:element name="Acquit" type="TAcquit"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:xad="http://uri.etsi.org/01903/v1.1.1#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller" xmlns:rola="http://www.minefi.gouv.fr/cp/helios/pes_v2/role/r0/aller" xmlns:reca="http://www.minefi.gouv.fr/cp/helios/pes_v2/recette/r0/aller" xmlns:depa="http://www.minefi.gouv.fr/cp/helios/pes_v2/depense/r0/aller" xmlns:buda="http://www.minefi.gouv.fr/cp/helios/pes_v2/budget/r0/aller" xmlns:mara="http://www.minefi.gouv.fr/cp/helios/pes_v2/marche/r0/aller" xmlns:acta="http://www.minefi.gouv.fr/cp/helios/pes_v2/etatactif/r0/aller" xmlns:empa="http://www.minefi.gouv.fr/cp/helios/pes_v2/emprunt/r0/aller" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" elementFormDefault="unqualified">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/budget/r0/aller" schemaLocation="../NS_Budget/r0/PES_BudgetAller.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/depense/r0/aller" schemaLocation="../NS_Depense/r0/PES_DepenseAller.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/recette/r0/aller" schemaLocation="../NS_Recette/r0/PES_RecetteAller.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/role/r0/aller" schemaLocation="../NS_Role/r0/PES_RoleAller.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/etatactif/r0/aller" schemaLocation="../NS_EtatActif/r0/PES_EtatActif.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/emprunt/r0/aller" schemaLocation="../NS_EtatPassif/r0/PES_EtatPassif.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/marche/r0/aller" schemaLocation="../NS_Marche/r0/PES_Marche.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../Class_SchemasCommuns.xsd"/>
+ <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="../Class_Signature.xsd"/>
+ <xs:import namespace="http://uri.etsi.org/01903/v1.1.1#" schemaLocation="../../xades/XAdES-core-schema.xsd"/>
+ <xs:include schemaLocation="../Class_PJ.xsd"/>
+ <xs:include schemaLocation="../Class_FacturePES.xsd"/>
+ <xs:include schemaLocation="../Class_FacturePESIndiv.xsd"/>
+ <xs:include schemaLocation="../Class_Tiers.xsd"/>
+ <xs:include schemaLocation="../Class_RepartitionBudget.xsd"/>
+ <xs:include schemaLocation="../Class_Nomenclature.xsd"/>
+ <xs:element name="PES_Aller">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Enveloppe" type="cm:TEnveloppe"/>
+ <xs:element name="EnTetePES" type="cm:TEnTetePES"/>
+ <xs:element name="PES_DepenseAller" type="depa:TPES_DepenseAller" minOccurs="0"/>
+ <xs:element name="PES_RecetteAller" type="reca:TPES_RecetteAller" minOccurs="0"/>
+ <xs:element name="PES_RoleAller" type="rola:TPES_RoleAller" minOccurs="0"/>
+ <xs:element name="PES_BudgetAller" type="buda:TPES_BudgetAller" minOccurs="0"/>
+ <xs:element name="PES_EtatActif" type="acta:TPES_EtatActif" minOccurs="0"/>
+ <xs:element name="PES_Marche" type="mara:TPES_Marche" minOccurs="0"/>
+ <xs:element name="PES_EtatPassif" type="empa:TPES_EtatPassif" minOccurs="0"/>
+ <xs:element name="PES_PJ" type="TPES_PJs" minOccurs="0"/>
+ <xs:group ref="ds:PESSignatureGroup" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="Id" type="xs:ID" use="optional"/>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!--Sample XML file generated by XMLSPY v5 rel. 2 U (http://www.xmlspy.com)-->
+<n:PES_Acquit xmlns:n="http://www.minefi.gouv.fr/cp/helios/pes" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.minefi.gouv.fr/cp/helios/pes
+../\SCHEMA\PES_Ack_1.1.xsd">
+ <Enveloppe>
+ <Parametres>
+ <Version V="0"/>
+ <TypFic V="String"/>
+ <NomFic V="String"/>
+ </Parametres>
+ <Emetteur>
+ <Sigle V="String"/>
+ <Adresse V="String"/>
+ </Emetteur>
+ <Recepteur>
+ <Sigle V="String"/>
+ <Adresse V="String"/>
+ </Recepteur>
+ </Enveloppe>
+ <Acquit>
+ <NomFic V="String"/>
+ </Acquit>
+</n:PES_Acquit>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<n:PES_Aller xmlns:n="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller" xmlns:acta="http://www.minefi.gouv.fr/cp/helios/pes_v2/etatactif/r0/aller" xmlns:buda="http://www.minefi.gouv.fr/cp/helios/pes_v2/budget/r0/aller" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:depa="http://www.minefi.gouv.fr/cp/helios/pes_v2/depense/r0/aller" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:empa="http://www.minefi.gouv.fr/cp/helios/pes_v2/emprunt/r0/aller" xmlns:mara="http://www.minefi.gouv.fr/cp/helios/pes_v2/marche/r0/aller" xmlns:reca="http://www.minefi.gouv.fr/cp/helios/pes_v2/recette/r0/aller" xmlns:rola="http://www.minefi.gouv.fr/cp/helios/pes_v2/role/r0/aller" xmlns:xad="http://uri.etsi.org/01903/v1.1.1#" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <Enveloppe>
+ <Parametres>
+ <Version V="1"/>
+ <TypFic V="PESALR2"/>
+ <NomFic V="PesDepense-AAAA-MM-JJ-123456789123456789"/>
+ </Parametres>
+ <Emetteur>
+ <Sigle V="EMSIGLE"/>
+ <Adresse V="EMADRESSE"/>
+ </Emetteur>
+ <Recepteur>
+ <Sigle V="HELIOS"/>
+ <Adresse V="READRESSE"/>
+ </Recepteur>
+ </Enveloppe>
+ <EnTetePES>
+ <DteStr V="AAAA-MM-JJ"/>
+ <IdPost V="034000"/>
+ <IdColl V="12345678912345"/>
+ <CodCol V="123"/>
+ <CodBud V="12"/>
+ <LibelleColBud V="COMMUNE"/>
+ </EnTetePES>
+ <PES_DepenseAller>
+ <EnTeteDepense>
+ <IdVer V="1"/>
+ <InfoDematerialisee V="0"/>
+ </EnTeteDepense>
+ <Bordereau>
+ <BlocBordereau>
+ <Exer V="2009"/>
+ <IdBord V="72"/>
+ <DteBordEm V="2009-07-16"/>
+ <TypBord V="01"/>
+ <NbrPce V="1"/>
+ <MtCumulAnnuel V="6312190.16"/>
+ <MtBordHT V="75724.75"/>
+ </BlocBordereau>
+ <Piece>
+ <BlocPiece>
+ <InfoPce>
+ <IdPce V="832"/>
+ <TypPce V="01"/>
+ <NatPce V="01"/>
+ <Obj V="TEST HOMOLOGATION"/>
+ </InfoPce>
+ </BlocPiece>
+ <LigneDePiece>
+ <BlocLignePiece>
+ <InfoLignePce>
+ <IdLigne V="1"/>
+ <Nature V="6553"/>
+ <Fonction V="113"/>
+ <LibVir1 V="ECHEANCIER"/>
+ <LibVir2 V="LE NUMERO N EST PAS PRECISE"/>
+ <ModRegl V="03"/>
+ <TVAIntraCom V="0"/>
+ <MtHT V="39724.75"/>
+ </InfoLignePce>
+ </BlocLignePiece>
+ <Tiers>
+ <InfoTiers>
+ <RefTiers V="811"/>
+ <CatTiers V="22"/>
+ <NatJur V="09"/>
+ <Nom V="PAIERIE DEPART. HERAULT"/>
+ </InfoTiers>
+ <Adresse>
+ <TypAdr V="1"/>
+ <Adr2 V="1000 RUE ALCO"/>
+ <CP V="34000"/>
+ <Ville V="MONTPELLIER"/>
+ <CodRes V="0"/>
+ </Adresse>
+ <CpteBancaire>
+ <CodeEtab V="30001"/>
+ <CodeGuic V="00866"/>
+ <IdCpte V="C7850000000"/>
+ <CleRib V="67"/>
+ <LibBanc V="LA BANQUE DU FUTUR"/>
+ <TitCpte V="PAIERIE DEPART. HERAULT"/>
+ </CpteBancaire>
+ </Tiers>
+ </LigneDePiece>
+ </Piece>
+ </Bordereau>
+ </PES_DepenseAller>
+ <PES_PJ>
+ <EnTetePES_PJ>
+ <IdVer V="1"/>
+ </EnTetePES_PJ>
+ </PES_PJ>
+</n:PES_Aller>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!--Sample XML file generated by XMLSPY v5 rel. 2 U (http://www.xmlspy.com)-->
+<n:PES_NonAcquit xmlns:n="http://www.minefi.gouv.fr/cp/helios/pes" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.minefi.gouv.fr/cp/helios/pes
+..\SCHEMA\PES_Nack_1.1.xsd">
+ <Enveloppe>
+ <Parametres>
+ <Version V="0"/>
+ <TypFic V="String"/>
+ <NomFic V="String"/>
+ </Parametres>
+ <Emetteur>
+ <Sigle V="String"/>
+ <Adresse V="String"/>
+ </Emetteur>
+ <Recepteur>
+ <Sigle V="String"/>
+ <Adresse V="String"/>
+ </Recepteur>
+ </Enveloppe>
+ <NonAcquit>
+ <NomFic V="String"/>
+ <Motif V="String"/>
+ </NonAcquit>
+</n:PES_NonAcquit>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<n:PES_Retour xmlns:n="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour /opt/tx/users/edihls10/messages/XML/PES_V2/Externe/Schemas_PES/PES_V2/Rev0/PES_V2_RecetteRetour_Autonome.xsd">
+ <Enveloppe>
+ <Parametres>
+ <Version V="2"></Version>
+ <TypFic V="PESRETOUR_REC"></TypFic>
+ <NomFic V="PES_V2_RETOUR_RECETTE_Exemple_20090813.xml"></NomFic>
+ </Parametres>
+ </Enveloppe>
+ <EnTetePES>
+ <DteStr V="2009-08-13"></DteStr>
+ <IdPost V="034000"></IdPost>
+ <LibellePoste V="ADULLACT"></LibellePoste>
+ <IdColl V="123456725"></IdColl>
+ <CodCol V="315"></CodCol>
+ <CodBud V="00"></CodBud>
+ <LibelleColBud V="CAP OMEGA "></LibelleColBud>
+ </EnTetePES>
+ <PES_RecetteRetour>
+ <EnTeteRecette>
+ <IdVer V="2"></IdVer>
+ <NatInf V="2"></NatInf>
+ </EnTeteRecette>
+ <Bordereau>
+ <BlocBordereau>
+ <Exer V="2005"></Exer>
+ <IdBord V="44"></IdBord>
+ <DteBordEm V="2006-01-13"></DteBordEm>
+ <TypBord V="01"></TypBord>
+ <NbrPce V="2"></NbrPce>
+ <MtBordHt V="11119.07"></MtBordHt>
+ <DteBordArr V="2006-01-13"></DteBordArr>
+ </BlocBordereau>
+ <Piece>
+ <BlocPiece>
+ <IdPce V="1449"></IdPce>
+ <TypPce V="01"></TypPce>
+ <NatPce V="01"></NatPce>
+ <DteAsp V="2006-01-17"></DteAsp>
+ <ObjPce V="LOUIS XVI du 03/01/2005 au 28/02/2005"></ObjPce>
+ <EtatPce V="02"></EtatPce>
+ <DtePceInt V="2006-01-13"></DtePceInt>
+ <DtePcePec V="2006-01-16"></DtePcePec>
+ </BlocPiece>
+ <LigneDePiece>
+ <BlocLignePiece>
+ <InfoLignePiece>
+ <IdLigne V="1"></IdLigne>
+ <CodProdLoc V="300"></CodProdLoc>
+ <Nature V="7067"></Nature>
+ <CpteTiers V="4111"></CpteTiers>
+ <MtHT V="274.05"></MtHT>
+ <MtTVA V="0"></MtTVA>
+ </InfoLignePiece>
+ <InfoRecouvrement>
+ <NbrReco V="2"></NbrReco>
+ <MtRecoTot V="151.56"></MtRecoTot>
+ </InfoRecouvrement>
+ <InfoContentieux>
+ <MtCtxTot V="274.05"></MtCtxTot>
+ <SldPrinc V="122.49"></SldPrinc>
+ </InfoContentieux>
+ <InfoAmiableContentieux>
+ <EtPce V="02"></EtPce>
+ <DteEtPce V="2006-04-13"></DteEtPce>
+ <IdAct V="82291011"></IdAct>
+ <CodActu V="07"></CodActu>
+ <DteActu V="2006-04-13"></DteActu>
+ </InfoAmiableContentieux>
+ <InfoAmiableContentieux>
+ <EtPce V="05"></EtPce>
+ <DteEtPce V="2006-04-25"></DteEtPce>
+ <IdAct V="83870111"></IdAct>
+ <CodActu V="01"></CodActu>
+ <DteActu V="2006-04-25"></DteActu>
+ </InfoAmiableContentieux>
+ <InfoAmiableContentieux>
+ <EtPce V="01"></EtPce>
+ <DteEtPce V="2006-04-06"></DteEtPce>
+ <IdAct V="80651011"></IdAct>
+ <CodActu V="07"></CodActu>
+ <DteActu V="2006-04-08"></DteActu>
+ </InfoAmiableContentieux>
+ </BlocLignePiece>
+ <Tiers>
+ <InfoTiers>
+ <CatTiers V="01"></CatTiers>
+ <NatJur V="00"></NatJur>
+ <TypTiers V="01"></TypTiers>
+ <Civilite V="MR"></Civilite>
+ <Nom V="LES ROIS DE FRANCE et DE NAVARRE"></Nom>
+ <Prenom V="NC"></Prenom>
+ </InfoTiers>
+ <Adresse>
+ <TypAdr V="1"></TypAdr>
+ <Adr2 V="9 AVENUE DU CHATEAU"></Adr2>
+ <CP V="78000"></CP>
+ <Ville V="VERSAILLES"></Ville>
+ <CodRes V="0"></CodRes>
+ </Adresse>
+ </Tiers>
+ <Recouvrement>
+ <TypFlux V="01"></TypFlux>
+ <ModRegl V="07"></ModRegl>
+ <DteReco V="2008-01-10"></DteReco>
+ <IdEncaissement V="1077988511"></IdEncaissement>
+ <MtReco V="1.56"></MtReco>
+ </Recouvrement>
+ <Recouvrement>
+ <TypFlux V="01"></TypFlux>
+ <ModRegl V="03"></ModRegl>
+ <DteReco V="2008-01-15"></DteReco>
+ <IdEncaissement V="1085134311"></IdEncaissement>
+ <MtReco V="150"></MtReco>
+ </Recouvrement>
+ </LigneDePiece>
+ </Piece>
+ <Piece>
+ <BlocPiece>
+ <IdPce V="1456"></IdPce>
+ <TypPce V="01"></TypPce>
+ <NatPce V="01"></NatPce>
+ <DteAsp V="2006-01-17"></DteAsp>
+ <ObjPce V="BOND James du 03/01/2005 au 28/02/2005"></ObjPce>
+ <EtatPce V="05"></EtatPce>
+ <DtePceInt V="2006-01-13"></DtePceInt>
+ <DtePcePec V="2006-01-16"></DtePcePec>
+ </BlocPiece>
+ <LigneDePiece>
+ <BlocLignePiece>
+ <InfoLignePiece>
+ <IdLigne V="1"></IdLigne>
+ <CodProdLoc V="300"></CodProdLoc>
+ <Nature V="7067"></Nature>
+ <CpteTiers V="4111"></CpteTiers>
+ <MtHT V="430.51"></MtHT>
+ <MtTVA V="0"></MtTVA>
+ </InfoLignePiece>
+ <InfoRecouvrement>
+ <NbrReco V="2"></NbrReco>
+ <MtRecoTot V="430.51"></MtRecoTot>
+ </InfoRecouvrement>
+ <InfoSuspPour>
+ <CodSuspPour V="01"></CodSuspPour>
+ <DteSuspPour V="2006-04-10"></DteSuspPour>
+ </InfoSuspPour>
+ <InfoAmiableContentieux>
+ <EtPce V="01"></EtPce>
+ <DteEtPce V="2006-04-06"></DteEtPce>
+ <IdAct V="80650511"></IdAct>
+ <CodActu V="11"></CodActu>
+ <DteActu V="2006-04-08"></DteActu>
+ </InfoAmiableContentieux>
+ </BlocLignePiece>
+ <Tiers>
+ <InfoTiers>
+ <CatTiers V="01"></CatTiers>
+ <NatJur V="00"></NatJur>
+ <TypTiers V="01"></TypTiers>
+ <Civilite V="MR"></Civilite>
+ <Nom V="BOND James"></Nom>
+ <Prenom V="NC"></Prenom>
+ </InfoTiers>
+ <Adresse>
+ <TypAdr V="1"></TypAdr>
+ <Adr2 V="CHEZ M"></Adr2>
+ <CP V="34980"></CP>
+ <Ville V="QUELQUE PART"></Ville>
+ <CodRes V="0"></CodRes>
+ </Adresse>
+ </Tiers>
+ <Recouvrement>
+ <TypFlux V="01"></TypFlux>
+ <ModRegl V="03"></ModRegl>
+ <DteReco V="2007-11-29"></DteReco>
+ <IdEncaissement V="1014035611"></IdEncaissement>
+ <MtReco V="200.21"></MtReco>
+ </Recouvrement>
+ <Recouvrement>
+ <TypFlux V="01"></TypFlux>
+ <ModRegl V="03"></ModRegl>
+ <DteReco V="2008-01-30"></DteReco>
+ <IdEncaissement V="1107199111"></IdEncaissement>
+ <MtReco V="230.3"></MtReco>
+ </Recouvrement>
+ </LigneDePiece>
+ </Piece>
+ </Bordereau>
+ </PES_RecetteRetour>
+</n:PES_Retour>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/heliso/pes_v2/Rev0/aller" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.minefi.gouv.fr/cp/heliso/pes_v2/Rev0/aller" elementFormDefault="unqualified">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="Class_NonAcquit.xsd"/>
+ <xs:element name="PES_NonAcquit">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Enveloppe" type="cm:TEnveloppe"/>
+ <xs:element name="NonAcquit" type="TNonAcquit"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XML Spy v4.4 (http://www.xmlspy.com) by Michael Conroy (SEMA) -->
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/heliades_v1/Rev0/aller" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:xad="http://uri.etsi.org/01903/v1.1.1#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.minefi.gouv.fr/cp/helios/heliades_v1/Rev0/aller" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" elementFormDefault="unqualified">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../Class_SchemasCommuns.xsd"/>
+ <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="../Class_Signature.xsd"/>
+ <xs:import namespace="http://uri.etsi.org/01903/v1.1.1#" schemaLocation="../../xades/XAdES-core-schema.xsd"/>
+ <xs:include schemaLocation="../Class_PESPJs_HELIADES.xsd"/>
+ <xs:include schemaLocation="../Class_FacturePES.xsd"/>
+ <xs:include schemaLocation="../Class_FacturePESIndiv.xsd"/>
+ <xs:include schemaLocation="../Class_Tiers.xsd"/>
+ <xs:include schemaLocation="../Class_RepartitionBudget.xsd"/>
+ <xs:include schemaLocation="../Class_Nomenclature.xsd"/>
+ <xs:element name="PES_PJs_HELIADES_Aller">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="EnTetePES_PJ">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="IdVer" type="cm:Base_Num2"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="IdPost" type="cm:Base_Texte7"/>
+ <xs:element name="IdColl" type="cm:Base_Num20"/>
+ <xs:element name="PES_PJs_HELIADES" type="TPES_PJs_HELIADES" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/heliades_v1/Rev0/retour" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.minefi.gouv.fr/cp/helios/heliades_v1/Rev0/retour" elementFormDefault="unqualified">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../Class_SchemasCommuns.xsd"/>
+ <xs:element name="PES_PJs_HELIADES_Retour" type="TPES_PJs_HELIADES_Retour"/>
+ <xs:complexType name="TPES_PJ_HELIADES_Retour">
+ <xs:sequence>
+ <xs:element name="EnTetePES_PJ">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="IdVer" type="cm:Base_Num2"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="IdPost" type="cm:Base_Texte7"/>
+ <xs:element name="IdColl" type="cm:Base_Num20"/>
+ <xs:element name="IdUnique" type="cm:Base_Alphanum50"/>
+ <xs:element name="NomPJ" type="cm:Base_Texte100"/>
+ <xs:element name="EtatGeide" type="cm:Base_Num2"/>
+ <xs:element name="LibelleErreur" type="cm:Base_Texte50" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="TPES_PJs_HELIADES_Retour">
+ <xs:sequence>
+ <xs:element name="PJ_HELIADES_Retour" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="TPES_PJ_HELIADES_Retour"/>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour" xmlns:cptr="http://www.minefi.gouv.fr/cp/helios/pes_v2/comptabilite/r0/retour" xmlns:budr="http://www.minefi.gouv.fr/cp/helios/pes_v2/budget/r0/retour" xmlns:depr="http://www.minefi.gouv.fr/cp/helios/pes_v2/depense/r0/retour" xmlns:recr="http://www.minefi.gouv.fr/cp/helios/pes_v2/recette/r0/retour" xmlns:rolr="http://www.minefi.gouv.fr/cp/helios/pes_v2/role/r0/retour" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/budget/r0/retour" schemaLocation="../NS_Budget/r0/PES_BudgetRetour.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/recette/r0/retour" schemaLocation="../NS_Recette/r0/PES_RecetteRetour.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/role/r0/retour" schemaLocation="../NS_Role/r0/PES_RoleRetour.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/depense/r0/retour" schemaLocation="../NS_Depense/r0/PES_DepenseRetour.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/comptabilite/r0/retour" schemaLocation="../NS_Comptabilite/r0/PES_Comptabilite.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="../Class_PJ_Retour.xsd"/>
+ <xs:element name="PES_Retour">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Enveloppe" type="cm:TEnveloppe"/>
+ <xs:element name="EnTetePES" type="cm:TEnTetePES"/>
+ <xs:element name="PES_DepenseRetour" type="depr:TPES_DepenseRetour" minOccurs="0"/>
+ <xs:element name="PES_RecetteRetour" type="recr:TPES_RecetteRetour" minOccurs="0"/>
+ <xs:element name="PES_RoleRetour" type="rolr:TPES_RoleRetour" minOccurs="0"/>
+ <xs:element name="PES_BudgetRetour" type="budr:TPES_BudgetRetour" minOccurs="0"/>
+ <xs:element name="PES_Comptabilite" type="cptr:TPES_Comptabilite" minOccurs="0"/>
+ <xs:element name="PES_PJ_Retour" type="TPES_PJs_Erreur" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:budr="http://www.minefi.gouv.fr/cp/helios/pes_v2/budget/r0/retour" elementFormDefault="unqualified">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/budget/r0/retour" schemaLocation="../NS_Budget/r0/PES_BudgetRetour.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../Class_SchemasCommuns.xsd"/>
+ <xs:element name="PES_Retour">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Enveloppe" type="cm:TEnveloppe"/>
+ <xs:element name="EnTetePES" type="cm:TEnTetePES"/>
+ <xs:element name="PES_BudgetRetour" type="budr:TPES_BudgetRetour" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:cptr="http://www.minefi.gouv.fr/cp/helios/pes_v2/comptabilite/r0/retour" elementFormDefault="unqualified">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/comptabilite/r0/retour" schemaLocation="../NS_Comptabilite/r0/PES_Comptabilite.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../Class_SchemasCommuns.xsd"/>
+ <xs:element name="PES_Retour">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Enveloppe" type="cm:TEnveloppe"/>
+ <xs:element name="EnTetePES" type="cm:TEnTetePES"/>
+ <xs:element name="PES_Comptabilite" type="cptr:TPES_Comptabilite" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour" xmlns:depr="http://www.minefi.gouv.fr/cp/helios/pes_v2/depense/r0/retour" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified">
+<xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/depense/r0/retour" schemaLocation="../NS_Depense/r0/PES_DepenseRetour.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../Class_SchemasCommuns.xsd"/>
+ <xs:element name="PES_Retour">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Enveloppe" type="cm:TEnveloppe"/>
+ <xs:element name="EnTetePES" type="cm:TEnTetePES"/>
+ <xs:element name="PES_DepenseRetour" type="depr:TPES_DepenseRetour" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" elementFormDefault="unqualified">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../Class_SchemasCommuns.xsd"/>
+ <xs:include schemaLocation="../Class_PJ_Retour.xsd"/>
+ <xs:element name="PES_Retour">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Enveloppe" type="cm:TEnveloppe"/>
+ <xs:element name="EnTetePES" type="cm:TEnTetePES"/>
+ <xs:element name="PES_PJ_Retour" type="TPES_PJs_Erreur" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:recr="http://www.minefi.gouv.fr/cp/helios/pes_v2/recette/r0/retour" elementFormDefault="unqualified">
+<xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/recette/r0/retour" schemaLocation="../NS_Recette/r0/PES_RecetteRetour.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../Class_SchemasCommuns.xsd"/>
+ <xs:element name="PES_Retour">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Enveloppe" type="cm:TEnveloppe"/>
+ <xs:element name="EnTetePES" type="cm:TEnTetePES"/>
+ <xs:element name="PES_RecetteRetour" type="recr:TPES_RecetteRetour" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:rolr="http://www.minefi.gouv.fr/cp/helios/pes_v2/role/r0/retour" elementFormDefault="unqualified">
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/role/r0/retour" schemaLocation="../NS_Role/r0/PES_RoleRetour.xsd"/>
+ <xs:import namespace="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" schemaLocation="../Class_SchemasCommuns.xsd"/>
+ <xs:element name="PES_Retour">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Enveloppe" type="cm:TEnveloppe"/>
+ <xs:element name="EnTetePES" type="cm:TEnTetePES"/>
+ <xs:element name="PES_RoleRetour" type="rolr:TPES_RoleRetour" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XMLSPY v5 rel. 2 U (http://www.xmlspy.com) by SERGE MURET (SEMA GROUP SA) -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:complexType name="Base_Alphanum1">
+ <xs:attribute name="V" type="V_Alphanum1" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum1">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="1"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum2">
+ <xs:attribute name="V" type="V_Alphanum2" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum2">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="2"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum3">
+ <xs:attribute name="V" type="V_Alphanum3" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum3">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="3"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum4">
+ <xs:attribute name="V" type="V_Alphanum4" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum4">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="4"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum5">
+ <xs:attribute name="V" type="V_Alphanum5" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum5">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="5"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum6">
+ <xs:attribute name="V" type="V_Alphanum6" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum6">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="6"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum10">
+ <xs:attribute name="V" type="V_Alphanum10" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum10">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="10"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum11">
+ <xs:attribute name="V" type="V_Alphanum11" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum11">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="11"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum12">
+ <xs:attribute name="V" type="V_Alphanum12" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum12">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="12"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum14">
+ <xs:attribute name="V" type="V_Alphanum14" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum14">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="14"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum15">
+ <xs:attribute name="V" type="V_Alphanum15" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum15">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="15"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum16">
+ <xs:attribute name="V" type="V_Alphanum16" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum16">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="16"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum17">
+ <xs:attribute name="V" type="V_Alphanum17" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum17">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="17"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum20">
+ <xs:attribute name="V" type="V_Alphanum20" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum20">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="20"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum25">
+ <xs:attribute name="V" type="V_Alphanum25" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum25">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="25"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum30">
+ <xs:attribute name="V" type="V_Alphanum30" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum30">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="30"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum50">
+ <xs:attribute name="V" type="V_Alphanum50" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum50">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="50"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum80">
+ <xs:attribute name="V" type="V_Alphanum80" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum80">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="80"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum100">
+ <xs:attribute name="V" type="V_Alphanum100" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum100">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="100"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Alphanum250">
+ <xs:attribute name="V" type="V_Alphanum250" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Alphanum250">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="250"/>
+ <xs:pattern value="[0-9a-zA-Z]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num1">
+ <xs:attribute name="V" type="V_Num1" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num1">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="1"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num2">
+ <xs:attribute name="V" type="V_Num2" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num2">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="2"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num3">
+ <xs:attribute name="V" type="V_Num3" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num3">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="3"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num4">
+ <xs:attribute name="V" type="V_Num4" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num4">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="4"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num5">
+ <xs:attribute name="V" type="V_Num5" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num5">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="5"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num6">
+ <xs:attribute name="V" type="V_Num6" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num6">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="6"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num7">
+ <xs:attribute name="V" type="V_Num7" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num7">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="7"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num8">
+ <xs:attribute name="V" type="V_Num8" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num8">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="8"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num9">
+ <xs:attribute name="V" type="V_Num9" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num9">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="9"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num10">
+ <xs:attribute name="V" type="V_Num10" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num10">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="10"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num12">
+ <xs:attribute name="V" type="V_Num12" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num12">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="12"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num13">
+ <xs:attribute name="V" type="V_Num13" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num13">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="13"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num14">
+ <xs:attribute name="V" type="V_Num14" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num14">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="14"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num15">
+ <xs:attribute name="V" type="V_Num15" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num15">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="15"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num16">
+ <xs:attribute name="V" type="V_Num16" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num16">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="16"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num17">
+ <xs:attribute name="V" type="V_Num17" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num17">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="17"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num20">
+ <xs:attribute name="V" type="V_Num20" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num20">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="20"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Num25">
+ <xs:attribute name="V" type="V_Num25" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Num25">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="25"/>
+ <xs:pattern value="[0-9]*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte2">
+ <xs:attribute name="V" type="V_Texte2" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte2">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="2"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte5">
+ <xs:attribute name="V" type="V_Texte5" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte5">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="5"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte6">
+ <xs:attribute name="V" type="V_Texte6" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte6">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="6"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte7">
+ <xs:attribute name="V" type="V_Texte7" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte7">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="7"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte10">
+ <xs:attribute name="V" type="V_Texte10" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte10">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="10"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte11">
+ <xs:attribute name="V" type="V_Texte11" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte11">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="11"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte12">
+ <xs:attribute name="V" type="V_Texte12" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte12">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="12"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte14">
+ <xs:attribute name="V" type="V_Texte14" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte14">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="14"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte15">
+ <xs:attribute name="V" type="V_Texte15" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte15">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="15"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte16">
+ <xs:attribute name="V" type="V_Texte16" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte16">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="16"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte20">
+ <xs:attribute name="V" type="V_Texte20" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte20">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="20"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte24">
+ <xs:attribute name="V" type="V_Texte24" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte24">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="24"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte25">
+ <xs:attribute name="V" type="V_Texte25" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte25">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="25"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte30">
+ <xs:attribute name="V" type="V_Texte30" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte30">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="30"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte32">
+ <xs:attribute name="V" type="V_Texte32" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte32">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="32"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte38">
+ <xs:attribute name="V" type="V_Texte38" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte38">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="38"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte50">
+ <xs:attribute name="V" type="V_Texte50" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte50">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="50"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte100">
+ <xs:attribute name="V" type="V_Texte100" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte100">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="100"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte160">
+ <xs:attribute name="V" type="V_Texte160" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte160">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="160"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte200">
+ <xs:attribute name="V" type="V_Texte200" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte200">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="200"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte250">
+ <xs:attribute name="V" type="V_Texte250" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte250">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="250"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Texte500">
+ <xs:attribute name="V" type="V_Texte500" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Texte500">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="500"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Annee">
+ <xs:attribute name="V" type="V_Annee" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Annee">
+ <xs:restriction base="xs:gYear"/>
+ </xs:simpleType>
+ <xs:complexType name="Base_Booleen">
+ <xs:attribute name="V" type="V_Booleen" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Booleen">
+ <xs:restriction base="xs:boolean"/>
+ </xs:simpleType>
+ <xs:complexType name="Base_Date">
+ <xs:attribute name="V" type="V_Date" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Date">
+ <xs:restriction base="xs:date"/>
+ </xs:simpleType>
+ <xs:complexType name="Base_Montant">
+ <xs:attribute name="V" type="V_Montant" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Montant">
+ <xs:restriction base="xs:decimal">
+ <xs:totalDigits value="14"/>
+ <xs:fractionDigits value="2"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Taux">
+ <xs:attribute name="V" type="V_Taux" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Taux">
+ <xs:restriction base="xs:decimal">
+ <xs:totalDigits value="5"/>
+ <xs:fractionDigits value="2"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Montant3">
+ <xs:attribute name="V" type="V_Montant3" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Montant3">
+ <xs:restriction base="xs:decimal">
+ <xs:totalDigits value="15"/>
+ <xs:fractionDigits value="3"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Taux3">
+ <xs:attribute name="V" type="V_Taux3" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Taux3">
+ <xs:restriction base="xs:decimal">
+ <xs:totalDigits value="6"/>
+ <xs:fractionDigits value="3"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Dec3">
+ <xs:attribute name="V" type="V_Dec3" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Dec3">
+ <xs:restriction base="xs:decimal">
+ <xs:fractionDigits value="3"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="Base_Dec2">
+ <xs:attribute name="V" type="V_Dec2" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="V_Dec2">
+ <xs:restriction base="xs:decimal">
+ <xs:fractionDigits value="2"/>
+ </xs:restriction>
+ </xs:simpleType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XMLSPY v2004 rel. 3 U (http://www.xmlspy.com) by test (test) -->
+<xs:schema targetNamespace="http://uri.etsi.org/01903/v1.1.1#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns="http://uri.etsi.org/01903/v1.1.1#" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
+ <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="../xmldsig/xmldsig-core-schema.xsd"/>
+ <!-- Start auxiliary types definitions: AnyType, ObjectIdentifierType, EncapsulatedPKIDataType and TimestampType-->
+ <!-- Start AnyType -->
+ <xs:element name="Any" type="AnyType"/>
+ <xs:complexType name="AnyType" mixed="true">
+ <xs:sequence>
+ <xs:any namespace="##any" processContents="lax"/>
+ </xs:sequence>
+ <xs:anyAttribute namespace="##any"/>
+ </xs:complexType>
+ <!-- End AnyType -->
+ <!-- Start ObjectIdentifierType-->
+ <xs:element name="ObjectIdentifier" type="ObjectIdentifierType"/>
+ <xs:complexType name="ObjectIdentifierType">
+ <xs:sequence>
+ <xs:element name="Identifier" type="IdentifierType"/>
+ <xs:element name="Description" type="xs:string" minOccurs="0"/>
+ <xs:element name="DocumentationReferences" type="DocumentationReferencesType" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="IdentifierType">
+ <xs:simpleContent>
+ <xs:extension base="xs:anyURI">
+ <xs:attribute name="Qualifier" type="QualifierType" use="optional"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ <xs:simpleType name="QualifierType">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="OIDAsURN"/>
+ <xs:enumeration value="OIDAsURI"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="DocumentationReferencesType">
+ <xs:sequence maxOccurs="unbounded">
+ <xs:element name="DocumentationReference" type="xs:anyURI"/>
+ </xs:sequence>
+ </xs:complexType>
+ <!-- End ObjectIdentifierType-->
+ <!-- Start EncapsulatedPKIDataType-->
+ <xs:element name="EncapsulatedPKIData" type="EncapsulatedPKIDataType"/>
+ <xs:complexType name="EncapsulatedPKIDataType">
+ <xs:simpleContent>
+ <xs:extension base="xs:base64Binary">
+ <xs:attribute name="Id" type="xs:ID" use="optional"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ <!-- End EncapsulatedPKIDataType -->
+ <!-- Start TimeStampType -->
+ <xs:element name="TimeStamp" type="TimeStampType"/>
+ <xs:complexType name="TimeStampType">
+ <xs:sequence>
+ <xs:element name="HashDataInfo" type="HashDataInfoType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:choice minOccurs="0">
+ <xs:element name="EncapsulatedTimeStamp" type="EncapsulatedPKIDataType"/>
+ <xs:element name="XMLTimeStamp" type="AnyType"/>
+ </xs:choice>
+ <xs:element ref="ds:Signature" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="HashDataInfoType">
+ <xs:sequence>
+ <xs:element name="Transforms" type="ds:TransformsType" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="URI" type="xs:anyURI" use="required"/>
+ </xs:complexType>
+ <!-- End TimeStampType -->
+ <!-- End auxiliary types definitions-->
+ <!-- Start container types -->
+ <!-- Start QualifyingProperties -->
+ <xs:element name="QualifyingProperties" type="QualifyingPropertiesType"/>
+ <xs:complexType name="QualifyingPropertiesType">
+ <xs:sequence>
+ <xs:element name="SignedProperties" type="SignedPropertiesType" minOccurs="0"/>
+ <xs:element name="UnsignedProperties" type="UnsignedPropertiesType" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="Target" type="xs:anyURI" use="required"/>
+ <xs:attribute name="Id" type="xs:ID" use="optional"/>
+ </xs:complexType>
+ <!-- End QualifyingProperties -->
+ <!-- Start SignedProperties-->
+ <xs:element name="SignedProperties" type="SignedPropertiesType"/>
+ <xs:complexType name="SignedPropertiesType">
+ <xs:sequence>
+ <xs:element name="SignedSignatureProperties" type="SignedSignaturePropertiesType"/>
+ <xs:element name="SignedDataObjectProperties" type="SignedDataObjectPropertiesType" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="Id" type="xs:ID" use="optional"/>
+ </xs:complexType>
+ <!-- End SignedProperties-->
+ <!-- Start UnsignedProperties-->
+ <xs:element name="UnsignedProperties" type="UnsignedPropertiesType"/>
+ <xs:complexType name="UnsignedPropertiesType">
+ <xs:sequence>
+ <xs:element name="UnsignedSignatureProperties" type="UnsignedSignaturePropertiesType" minOccurs="0"/>
+ <xs:element name="UnsignedDataObjectProperties" type="UnsignedDataObjectPropertiesType" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="Id" type="xs:ID" use="optional"/>
+ </xs:complexType>
+ <!-- End UnsignedProperties-->
+ <!-- Start SignedSignatureProperties-->
+ <xs:element name="SignedSignatureProperties" type="SignedSignaturePropertiesType"/>
+ <xs:complexType name="SignedSignaturePropertiesType">
+ <xs:sequence>
+ <xs:element name="SigningTime" type="xs:dateTime"/>
+ <xs:element name="SigningCertificate" type="CertIDListType"/>
+ <xs:element name="SignaturePolicyIdentifier" type="SignaturePolicyIdentifierType"/>
+ <xs:element name="SignatureProductionPlace" type="SignatureProductionPlaceType" minOccurs="0"/>
+ <xs:element name="SignerRole" type="SignerRoleType" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <!-- End SignedSignatureProperties-->
+ <!-- Start SignedDataObjectProperties-->
+ <xs:element name="SignedDataObjectProperties" type="SignedDataObjectPropertiesType"/>
+ <xs:complexType name="SignedDataObjectPropertiesType">
+ <xs:sequence>
+ <xs:element name="DataObjectFormat" type="DataObjectFormatType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="CommitmentTypeIndication" type="CommitmentTypeIndicationType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="AllDataObjectsTimeStamp" type="TimeStampType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="IndividualDataObjectsTimeStamp" type="TimeStampType" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <!-- End SignedDataObjectProperties-->
+ <!-- Start UnsignedSignatureProperties-->
+ <xs:element name="UnsignedSignatureProperties" type="UnsignedSignaturePropertiesType"/>
+ <xs:complexType name="UnsignedSignaturePropertiesType">
+ <xs:sequence>
+ <xs:element name="CounterSignature" type="CounterSignatureType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="SignatureTimeStamp" type="TimeStampType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="CompleteCertificateRefs" type="CompleteCertificateRefsType" minOccurs="0"/>
+ <xs:element name="CompleteRevocationRefs" type="CompleteRevocationRefsType" minOccurs="0"/>
+ <xs:choice>
+ <xs:element name="SigAndRefsTimeStamp" type="TimeStampType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="RefsOnlyTimeStamp" type="TimeStampType" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:choice>
+ <xs:element name="CertificateValues" type="CertificateValuesType" minOccurs="0"/>
+ <xs:element name="RevocationValues" type="RevocationValuesType" minOccurs="0"/>
+ <xs:element name="ArchiveTimeStamp" type="TimeStampType" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <!-- End UnsignedSignatureProperties-->
+ <!-- Start UnsignedDataObjectProperties-->
+ <xs:element name="UnsignedDataObjectProperties" type="UnsignedDataObjectPropertiesType"/>
+ <xs:complexType name="UnsignedDataObjectPropertiesType">
+ <xs:sequence>
+ <xs:element name="UnsignedDataObjectProperty" type="AnyType" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <!-- End UnsignedDataObjectProperties-->
+ <!-- Start QualifyingPropertiesReference-->
+ <xs:element name="QualifyingPropertiesReference" type="QualifyingPropertiesReferenceType"/>
+ <xs:complexType name="QualifyingPropertiesReferenceType">
+ <xs:sequence>
+ <xs:element name="Transforms" type="ds:TransformsType" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="URI" type="xs:anyURI" use="required"/>
+ <xs:attribute name="Id" type="xs:ID" use="optional"/>
+ </xs:complexType>
+ <!-- End QualifyingPropertiesReference-->
+ <!-- End container types -->
+ <!-- Start SigningTime element -->
+ <xs:element name="SigningTime" type="xs:dateTime"/>
+ <!-- End SigningTime element -->
+ <!-- Start SigningCertificate -->
+ <xs:element name="SigningCertificate" type="CertIDListType"/>
+ <xs:complexType name="CertIDListType">
+ <xs:sequence>
+ <xs:element name="Cert" type="CertIDType" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="CertIDType">
+ <xs:sequence>
+ <xs:element name="CertDigest" type="DigestAlgAndValueType"/>
+ <xs:element name="IssuerSerial" type="ds:X509IssuerSerialType"/>
+ </xs:sequence>
+ <xs:attribute name="URI" type="xs:anyURI" use="optional"/>
+ </xs:complexType>
+ <xs:complexType name="DigestAlgAndValueType">
+ <xs:sequence>
+ <xs:element name="DigestMethod" type="ds:DigestMethodType"/>
+ <xs:element name="DigestValue" type="ds:DigestValueType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <!-- End SigningCertificate -->
+ <!-- Start SignaturePolicyIdentifier -->
+ <xs:element name="SignaturePolicyIdentifier" type="SignaturePolicyIdentifierType"/>
+ <xs:complexType name="SignaturePolicyIdentifierType">
+ <xs:choice>
+ <xs:element name="SignaturePolicyId" type="SignaturePolicyIdType"/>
+ <xs:element name="SignaturePolicyImplied"/>
+ </xs:choice>
+ </xs:complexType>
+ <xs:complexType name="SignaturePolicyIdType">
+ <xs:sequence>
+ <xs:element name="SigPolicyId" type="ObjectIdentifierType"/>
+ <xs:element ref="ds:Transforms" minOccurs="0"/>
+ <xs:element name="SigPolicyHash" type="DigestAlgAndValueType"/>
+ <xs:element name="SigPolicyQualifiers" type="SigPolicyQualifiersListType" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="SigPolicyQualifiersListType">
+ <xs:sequence>
+ <xs:element name="SigPolicyQualifier" type="SigPolicyQualifierType" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="SPURI" type="xs:anyURI"/>
+ <xs:element name="SPUserNotice" type="SPUserNoticeType"/>
+ <xs:complexType name="SPUserNoticeType">
+ <xs:sequence>
+ <xs:element name="NoticeRef" type="NoticeReferenceType" minOccurs="0"/>
+ <xs:element name="ExplicitText" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="NoticeReferenceType">
+ <xs:sequence>
+ <xs:element name="Organization" type="xs:string"/>
+ <xs:element name="NoticeNumbers" type="IntegerListType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="IntegerListType">
+ <xs:sequence>
+ <xs:element name="int" type="xs:integer" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <!-- End SignaturePolicyIdentifier -->
+ <!-- Start CounterSignature -->
+ <xs:element name="CounterSignature" type="CounterSignatureType"/>
+ <xs:complexType name="CounterSignatureType">
+ <xs:sequence>
+ <xs:element ref="ds:Signature"/>
+ </xs:sequence>
+ </xs:complexType>
+ <!-- End CounterSignature -->
+ <!-- Start DataObjectFormat -->
+ <xs:element name="DataObjectFormat" type="DataObjectFormatType"/>
+ <xs:complexType name="DataObjectFormatType">
+ <xs:sequence>
+ <xs:element name="Description" type="xs:string" minOccurs="0"/>
+ <xs:element name="ObjectIdentifier" type="ObjectIdentifierType" minOccurs="0"/>
+ <xs:element name="MimeType" type="xs:string" minOccurs="0"/>
+ <xs:element name="Encoding" type="xs:anyURI" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="ObjectReference" type="xs:anyURI" use="required"/>
+ </xs:complexType>
+ <!-- End DataObjectFormat -->
+ <!-- Start CommitmentTypeIndication -->
+ <xs:element name="CommitmentTypeIndication" type="CommitmentTypeIndicationType"/>
+ <xs:complexType name="CommitmentTypeIndicationType">
+ <xs:sequence>
+ <xs:element name="CommitmentTypeId" type="ObjectIdentifierType"/>
+ <xs:choice>
+ <xs:element name="ObjectReference" type="xs:anyURI" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="AllSignedDataObjects"/>
+ </xs:choice>
+ <xs:element name="CommitmentTypeQualifiers" type="CommitmentTypeQualifiersListType" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="CommitmentTypeQualifiersListType">
+ <xs:sequence>
+ <xs:element name="CommitmentTypeQualifier" type="AnyType" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <!-- End CommitmentTypeIndication -->
+ <!-- Start SignatureProductionPlace -->
+ <xs:element name="SignatureProductionPlace" type="SignatureProductionPlaceType"/>
+ <xs:complexType name="SignatureProductionPlaceType">
+ <xs:sequence>
+ <xs:element name="City" type="xs:string" minOccurs="0"/>
+ <xs:element name="StateOrProvince" type="xs:string" minOccurs="0"/>
+ <xs:element name="PostalCode" type="xs:string" minOccurs="0"/>
+ <xs:element name="CountryName" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <!-- End SignatureProductionPlace -->
+ <!-- Start SignerRole -->
+ <xs:element name="SignerRole" type="SignerRoleType"/>
+ <xs:complexType name="SignerRoleType">
+ <xs:sequence>
+ <xs:element name="ClaimedRoles" type="ClaimedRolesListType" minOccurs="0"/>
+ <xs:element name="CertifiedRoles" type="CertifiedRolesListType" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="ClaimedRolesListType">
+ <xs:sequence>
+ <xs:element name="ClaimedRole" type="xs:token"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="CertifiedRolesListType">
+ <xs:sequence>
+ <xs:element name="CertifiedRole" type="EncapsulatedPKIDataType" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <!-- End SignerRole -->
+ <xs:element name="AllDataObjectsTimeStamp" type="TimeStampType"/>
+ <xs:element name="IndividualDataObjectsTimeStamp" type="TimeStampType"/>
+ <xs:element name="SignatureTimeStamp" type="TimeStampType"/>
+ <!-- Start CompleteCertificateRefs -->
+ <xs:element name="CompleteCertificateRefs" type="CompleteCertificateRefsType"/>
+ <xs:complexType name="CompleteCertificateRefsType">
+ <xs:sequence>
+ <xs:element name="CertRefs" type="CertIDListType"/>
+ </xs:sequence>
+ <xs:attribute name="Id" type="xs:ID" use="optional"/>
+ </xs:complexType>
+ <!-- End CompleteCertificateRefs -->
+ <!-- Start CompleteRevocationRefs-->
+ <xs:element name="CompleteRevocationRefs" type="CompleteRevocationRefsType"/>
+ <xs:complexType name="CompleteRevocationRefsType">
+ <xs:sequence>
+ <xs:element name="CRLRefs" type="CRLRefsType" minOccurs="0"/>
+ <xs:element name="OCSPRefs" type="OCSPRefsType" minOccurs="0"/>
+ <xs:element name="OtherRefs" type="OtherCertStatusRefsType" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="Id" type="xs:ID" use="optional"/>
+ </xs:complexType>
+ <xs:complexType name="CRLRefsType">
+ <xs:sequence>
+ <xs:element name="CRLRef" type="CRLRefType" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="CRLRefType">
+ <xs:sequence>
+ <xs:element name="DigestAlgAndValue" type="DigestAlgAndValueType"/>
+ <xs:element name="CRLIdentifier" type="CRLIdentifierType" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="CRLIdentifierType">
+ <xs:sequence>
+ <xs:element name="Issuer" type="xs:string"/>
+ <xs:element name="IssueTime" type="xs:dateTime"/>
+ <xs:element name="Number" type="xs:integer" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="URI" type="xs:anyURI" use="optional"/>
+ </xs:complexType>
+ <xs:complexType name="OCSPRefsType">
+ <xs:sequence>
+ <xs:element name="OCSPRef" type="OCSPRefType" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="OCSPRefType">
+ <xs:sequence>
+ <xs:element name="OCSPIdentifier" type="OCSPIdentifierType"/>
+ <xs:element name="DigestAlgAndValue" type="DigestAlgAndValueType" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="OCSPIdentifierType">
+ <xs:sequence>
+ <xs:element name="ResponderID" type="xs:string"/>
+ <xs:element name="ProducedAt" type="xs:dateTime"/>
+ </xs:sequence>
+ <xs:attribute name="URI" type="xs:anyURI" use="optional"/>
+ </xs:complexType>
+ <xs:complexType name="OtherCertStatusRefsType">
+ <xs:sequence>
+ <xs:element name="OtherRef" type="AnyType" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <!-- End CompleteRevocationRefs-->
+ <xs:element name="SigAndRefsTimeStamp" type="TimeStampType"/>
+ <xs:element name="RefsOnlyTimeStamp" type="TimeStampType"/>
+ <!-- Start CertificateValues -->
+ <xs:element name="CertificateValues" type="CertificateValuesType"/>
+ <xs:complexType name="CertificateValuesType">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="EncapsulatedX509Certificate" type="EncapsulatedPKIDataType"/>
+ <xs:element name="OtherCertificate" type="AnyType"/>
+ </xs:choice>
+ <xs:attribute name="Id" type="xs:ID" use="optional"/>
+ </xs:complexType>
+ <!-- End CertificateValues -->
+ <!-- Start RevocationValues-->
+ <xs:element name="RevocationValues" type="RevocationValuesType"/>
+ <xs:complexType name="RevocationValuesType">
+ <xs:sequence>
+ <xs:element name="CRLValues" type="CRLValuesType" minOccurs="0"/>
+ <xs:element name="OCSPValues" type="OCSPValuesType" minOccurs="0"/>
+ <xs:element name="OtherValues" type="OtherCertStatusValuesType" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="Id" type="xs:ID" use="optional"/>
+ </xs:complexType>
+ <xs:complexType name="CRLValuesType">
+ <xs:sequence>
+ <xs:element name="EncapsulatedCRLValue" type="EncapsulatedPKIDataType" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="OCSPValuesType">
+ <xs:sequence>
+ <xs:element name="EncapsulatedOCSPValue" type="EncapsulatedPKIDataType" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="OtherCertStatusValuesType">
+ <xs:sequence>
+ <xs:element name="OtherValue" type="AnyType" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <!-- End RevocationValues-->
+ <xs:element name="ArchiveTimeStamp" type="TimeStampType"/>
+ <xs:complexType name="SigPolicyQualifierType">
+ <xs:sequence>
+ <xs:element ref="SPURI"/>
+ </xs:sequence>
+ </xs:complexType>
+</xs:schema>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<!-- edited with XMLSPY v2004 rel. 3 U (http://www.xmlspy.com) by test (test) -->
+<!-- Schema for XML Signatures
+ http://www.w3.org/2000/09/xmldsig#
+ $Revision: 1.1 $ on $Date: 2002/02/08 20:32:26 $ by $Author: reagle $
+
+ Copyright 2001 The Internet Society and W3C (Massachusetts Institute
+ of Technology, Institut National de Recherche en Informatique et en
+ Automatique, Keio University). All Rights Reserved.
+ http://www.w3.org/Consortium/Legal/
+
+ This document is governed by the W3C Software License [1] as described
+ in the FAQ [2].
+
+ [1] http://www.w3.org/Consortium/Legal/copyright-software-19980720
+ [2] http://www.w3.org/Consortium/Legal/IPR-FAQ-20000620.html#DTD
+-->
+<schema targetNamespace="http://www.w3.org/2000/09/xmldsig#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0.1">
+ <!-- Basic Types Defined for Signatures -->
+ <simpleType name="CryptoBinary">
+ <restriction base="base64Binary"/>
+ </simpleType>
+ <!-- Start Signature -->
+ <element name="Signature" type="ds:SignatureType"/>
+ <complexType name="SignatureType">
+ <sequence>
+ <element ref="ds:SignedInfo"/>
+ <element ref="ds:SignatureValue"/>
+ <element ref="ds:KeyInfo" minOccurs="0"/>
+ <element ref="ds:Object" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="Id" type="ID" use="optional"/>
+ </complexType>
+ <element name="SignatureValue" type="ds:SignatureValueType"/>
+ <complexType name="SignatureValueType">
+ <simpleContent>
+ <extension base="base64Binary">
+ <attribute name="Id" type="ID" use="optional"/>
+ </extension>
+ </simpleContent>
+ </complexType>
+ <!-- Start SignedInfo -->
+ <element name="SignedInfo" type="ds:SignedInfoType"/>
+ <complexType name="SignedInfoType">
+ <sequence>
+ <element ref="ds:CanonicalizationMethod"/>
+ <element ref="ds:SignatureMethod"/>
+ <element ref="ds:Reference" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="Id" type="ID" use="optional"/>
+ </complexType>
+ <element name="CanonicalizationMethod" type="ds:CanonicalizationMethodType"/>
+ <complexType name="CanonicalizationMethodType" mixed="true">
+ <sequence>
+ <any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
+ <!-- (0,unbounded) elements from (1,1) namespace -->
+ </sequence>
+ <attribute name="Algorithm" type="anyURI" use="required"/>
+ </complexType>
+ <element name="SignatureMethod" type="ds:SignatureMethodType"/>
+ <complexType name="SignatureMethodType" mixed="true">
+ <sequence>
+ <element name="HMACOutputLength" type="ds:HMACOutputLengthType" minOccurs="0"/>
+ <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+ <!-- (0,unbounded) elements from (1,1) external namespace -->
+ </sequence>
+ <attribute name="Algorithm" type="anyURI" use="required"/>
+ </complexType>
+ <!-- Start Reference -->
+ <element name="Reference" type="ds:ReferenceType"/>
+ <complexType name="ReferenceType">
+ <sequence>
+ <element ref="ds:Transforms" minOccurs="0"/>
+ <element ref="ds:DigestMethod"/>
+ <element ref="ds:DigestValue"/>
+ </sequence>
+ <attribute name="Id" type="ID" use="optional"/>
+ <attribute name="URI" type="anyURI" use="optional"/>
+ <attribute name="Type" type="anyURI" use="optional"/>
+ </complexType>
+ <element name="Transforms" type="ds:TransformsType"/>
+ <complexType name="TransformsType">
+ <sequence>
+ <element ref="ds:Transform" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <element name="Transform" type="ds:TransformType"/>
+ <complexType name="TransformType" mixed="true">
+ <choice minOccurs="0" maxOccurs="unbounded">
+ <any namespace="##other" processContents="lax"/>
+ <element name="XPath" type="string"/>
+ <!-- (1,1) elements from (0,unbounded) namespaces -->
+ </choice>
+ <attribute name="Algorithm" type="anyURI" use="required"/>
+ </complexType>
+ <!-- End Reference -->
+ <element name="DigestMethod" type="ds:DigestMethodType"/>
+ <complexType name="DigestMethodType" mixed="true">
+ <sequence>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="Algorithm" type="anyURI" use="required"/>
+ </complexType>
+ <element name="DigestValue" type="ds:DigestValueType"/>
+ <simpleType name="DigestValueType">
+ <restriction base="base64Binary"/>
+ </simpleType>
+ <!-- End SignedInfo -->
+ <!-- Start KeyInfo -->
+ <element name="KeyInfo" type="ds:KeyInfoType"/>
+ <complexType name="KeyInfoType" mixed="true">
+ <choice maxOccurs="unbounded">
+ <element ref="ds:KeyName"/>
+ <element ref="ds:KeyValue"/>
+ <element ref="ds:RetrievalMethod"/>
+ <element ref="ds:X509Data"/>
+ <element ref="ds:PGPData"/>
+ <element ref="ds:SPKIData"/>
+ <element ref="ds:MgmtData"/>
+ <any namespace="##other" processContents="lax"/>
+ <!-- (1,1) elements from (0,unbounded) namespaces -->
+ </choice>
+ <attribute name="Id" type="ID" use="optional"/>
+ </complexType>
+ <element name="KeyName" type="string"/>
+ <element name="MgmtData" type="string"/>
+ <element name="KeyValue" type="ds:KeyValueType"/>
+ <complexType name="KeyValueType" mixed="true">
+ <choice>
+ <element ref="ds:DSAKeyValue"/>
+ <element ref="ds:RSAKeyValue"/>
+ <any namespace="##other" processContents="lax"/>
+ </choice>
+ </complexType>
+ <element name="RetrievalMethod" type="ds:RetrievalMethodType"/>
+ <complexType name="RetrievalMethodType">
+ <sequence>
+ <element ref="ds:Transforms" minOccurs="0"/>
+ </sequence>
+ <attribute name="URI" type="anyURI"/>
+ <attribute name="Type" type="anyURI" use="optional"/>
+ </complexType>
+ <!-- Start X509Data -->
+ <element name="X509Data" type="ds:X509DataType"/>
+ <complexType name="X509DataType">
+ <sequence maxOccurs="unbounded">
+ <choice>
+ <element name="X509IssuerSerial" type="ds:X509IssuerSerialType"/>
+ <element name="X509SKI" type="base64Binary"/>
+ <element name="X509SubjectName" type="string"/>
+ <element name="X509Certificate" type="base64Binary"/>
+ <element name="X509CRL" type="base64Binary"/>
+ <any namespace="##other" processContents="lax"/>
+ </choice>
+ </sequence>
+ </complexType>
+ <complexType name="X509IssuerSerialType">
+ <sequence>
+ <element name="X509IssuerName" type="string"/>
+ <element name="X509SerialNumber" type="integer"/>
+ </sequence>
+ </complexType>
+ <!-- End X509Data -->
+ <!-- Begin PGPData -->
+ <element name="PGPData" type="ds:PGPDataType"/>
+ <complexType name="PGPDataType">
+ <choice>
+ <sequence>
+ <element name="PGPKeyID" type="base64Binary"/>
+ <element name="PGPKeyPacket" type="base64Binary" minOccurs="0"/>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <sequence>
+ <element name="PGPKeyPacket" type="base64Binary"/>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ </choice>
+ </complexType>
+ <!-- End PGPData -->
+ <!-- Begin SPKIData -->
+ <element name="SPKIData" type="ds:SPKIDataType"/>
+ <complexType name="SPKIDataType">
+ <sequence maxOccurs="unbounded">
+ <element name="SPKISexp" type="base64Binary"/>
+ <any namespace="##other" processContents="lax" minOccurs="0"/>
+ </sequence>
+ </complexType>
+ <!-- End SPKIData -->
+ <!-- End KeyInfo -->
+ <!-- Start Object (Manifest, SignatureProperty) -->
+ <element name="Object" type="ds:ObjectType"/>
+ <complexType name="ObjectType" mixed="true">
+ <sequence minOccurs="0" maxOccurs="unbounded">
+ <any namespace="##any" processContents="lax"/>
+ </sequence>
+ <attribute name="Id" type="ID" use="optional"/>
+ <attribute name="MimeType" type="string" use="optional"/>
+ <attribute name="Encoding" type="anyURI" use="optional"/>
+ <!-- add a grep facet -->
+ </complexType>
+ <element name="Manifest" type="ds:ManifestType"/>
+ <complexType name="ManifestType">
+ <sequence>
+ <element ref="ds:Reference" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="Id" type="ID" use="optional"/>
+ </complexType>
+ <element name="SignatureProperties" type="ds:SignaturePropertiesType"/>
+ <complexType name="SignaturePropertiesType">
+ <sequence>
+ <element ref="ds:SignatureProperty" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="Id" type="ID" use="optional"/>
+ </complexType>
+ <element name="SignatureProperty" type="ds:SignaturePropertyType"/>
+ <complexType name="SignaturePropertyType" mixed="true">
+ <choice maxOccurs="unbounded">
+ <any namespace="##other" processContents="lax"/>
+ <!-- (1,1) elements from (1,unbounded) namespaces -->
+ </choice>
+ <attribute name="Target" type="anyURI" use="required"/>
+ <attribute name="Id" type="ID" use="optional"/>
+ </complexType>
+ <!-- End Object (Manifest, SignatureProperty) -->
+ <!-- Start Algorithm Parameters -->
+ <simpleType name="HMACOutputLengthType">
+ <restriction base="integer"/>
+ </simpleType>
+ <!-- Start KeyValue Element-types -->
+ <element name="DSAKeyValue" type="ds:DSAKeyValueType"/>
+ <complexType name="DSAKeyValueType">
+ <sequence>
+ <sequence minOccurs="0">
+ <element name="P" type="ds:CryptoBinary"/>
+ <element name="Q" type="ds:CryptoBinary"/>
+ </sequence>
+ <element name="G" type="ds:CryptoBinary" minOccurs="0"/>
+ <element name="Y" type="ds:CryptoBinary"/>
+ <element name="J" type="ds:CryptoBinary" minOccurs="0"/>
+ <sequence minOccurs="0">
+ <element name="Seed" type="ds:CryptoBinary"/>
+ <element name="PgenCounter" type="ds:CryptoBinary"/>
+ </sequence>
+ </sequence>
+ </complexType>
+ <element name="RSAKeyValue" type="ds:RSAKeyValueType"/>
+ <complexType name="RSAKeyValueType">
+ <sequence>
+ <element name="Modulus" type="ds:CryptoBinary"/>
+ <element name="Exponent" type="ds:CryptoBinary"/>
+ </sequence>
+ </complexType>
+ <!-- End KeyValue Element-types -->
+ <!-- End Signature -->
+</schema>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<!-- edited with XMLSPY v2004 rel. 3 U (http://www.xmlspy.com) by test (test) -->
+<schema targetNamespace="http://www.w3.org/2001/04/xmlenc#" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0">
+ <import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="../xmldsig/xmldsig-core-schema.xsd"/>
+ <complexType name="EncryptedType" abstract="true">
+ <sequence>
+ <element name="EncryptionMethod" type="xenc:EncryptionMethodType" minOccurs="0"/>
+ <element ref="ds:KeyInfo" minOccurs="0"/>
+ <element ref="xenc:CipherData"/>
+ <element ref="xenc:EncryptionProperties" minOccurs="0"/>
+ </sequence>
+ <attribute name="Id" type="ID" use="optional"/>
+ <attribute name="Type" type="anyURI" use="optional"/>
+ <attribute name="MimeType" type="string" use="optional"/>
+ <attribute name="Encoding" type="anyURI" use="optional"/>
+ </complexType>
+ <complexType name="EncryptionMethodType" mixed="true">
+ <sequence>
+ <element name="KeySize" type="xenc:KeySizeType" minOccurs="0"/>
+ <element name="OAEPparams" type="base64Binary" minOccurs="0"/>
+ <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="Algorithm" type="anyURI" use="required"/>
+ </complexType>
+ <simpleType name="KeySizeType">
+ <restriction base="integer"/>
+ </simpleType>
+ <element name="CipherData" type="xenc:CipherDataType"/>
+ <complexType name="CipherDataType">
+ <choice>
+ <element name="CipherValue" type="base64Binary"/>
+ <element ref="xenc:CipherReference"/>
+ </choice>
+ </complexType>
+ <element name="CipherReference" type="xenc:CipherReferenceType"/>
+ <complexType name="CipherReferenceType">
+ <choice>
+ <element name="Transforms" type="xenc:TransformsType" minOccurs="0"/>
+ </choice>
+ <attribute name="URI" type="anyURI" use="required"/>
+ </complexType>
+ <complexType name="TransformsType">
+ <sequence>
+ <element ref="ds:Transform" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+ <element name="EncryptedData" type="xenc:EncryptedDataType"/>
+ <complexType name="EncryptedDataType">
+ <complexContent>
+ <extension base="xenc:EncryptedType"/>
+ </complexContent>
+ </complexType>
+ <!-- Children of ds:KeyInfo -->
+ <element name="EncryptedKey" type="xenc:EncryptedKeyType"/>
+ <complexType name="EncryptedKeyType">
+ <complexContent>
+ <extension base="xenc:EncryptedType">
+ <sequence>
+ <element ref="xenc:ReferenceList" minOccurs="0"/>
+ <element name="CarriedKeyName" type="string" minOccurs="0"/>
+ </sequence>
+ <attribute name="Recipient" type="string" use="optional"/>
+ </extension>
+ </complexContent>
+ </complexType>
+ <element name="AgreementMethod" type="xenc:AgreementMethodType"/>
+ <complexType name="AgreementMethodType" mixed="true">
+ <sequence>
+ <element name="KA-Nonce" type="base64Binary" minOccurs="0"/>
+ <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+ <element name="OriginatorKeyInfo" type="ds:KeyInfoType" minOccurs="0"/>
+ <element name="RecipientKeyInfo" type="ds:KeyInfoType" minOccurs="0"/>
+ <!-- <element ref="ds:DigestMethod" minOccurs="0"/> -->
+ </sequence>
+ <attribute name="Algorithm" type="anyURI" use="required"/>
+ </complexType>
+ <!-- End Children of ds:KeyInfo -->
+ <element name="ReferenceList">
+ <complexType>
+ <choice maxOccurs="unbounded">
+ <element name="DataReference" type="xenc:ReferenceType"/>
+ <element name="KeyReference" type="xenc:ReferenceType"/>
+ </choice>
+ </complexType>
+ </element>
+ <complexType name="ReferenceType">
+ <sequence>
+ <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="URI" type="anyURI" use="required"/>
+ </complexType>
+ <element name="EncryptionProperties" type="xenc:EncryptionPropertiesType"/>
+ <complexType name="EncryptionPropertiesType">
+ <sequence>
+ <element ref="xenc:EncryptionProperty" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="Id" type="ID" use="optional"/>
+ </complexType>
+ <element name="EncryptionProperty" type="xenc:EncryptionPropertyType"/>
+ <complexType name="EncryptionPropertyType" mixed="true">
+ <choice maxOccurs="unbounded">
+ <any namespace="##other" processContents="lax"/>
+ </choice>
+ <attribute name="Target" type="anyURI" use="optional"/>
+ <attribute name="Id" type="ID" use="optional"/>
+ <anyAttribute namespace="http://www.w3.org/XML/1998/namespace"/>
+ </complexType>
+</schema>
--- /dev/null
+<xsd:schema targetNamespace="http://xml.insee.fr/schema" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ie="http://xml.insee.fr/schema" elementFormDefault="qualified" attributeFormDefault="qualified" version="1.0">
+ <xsd:include schemaLocation="insee-commun.xsd"/>
+ <xsd:simpleType name="SIREN_stype">
+ <xsd:restriction base="ie:Chaine_Numerique_stype">
+ <xsd:length value="9"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:element name="SIREN" type="ie:SIREN_stype"/>
+ <xsd:attribute name="SIREN" type="ie:SIREN_stype"/>
+ <xsd:simpleType name="NIC_stype">
+ <xsd:restriction base="ie:Chaine_Numerique_stype">
+ <xsd:length value="5"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:element name="NIC" type="ie:NIC_stype"/>
+ <xsd:attribute name="NIC" type="ie:NIC_stype"/>
+ <xsd:complexType name="SIRET_ctype">
+ <xsd:sequence>
+ <xsd:element ref="ie:SIREN"/>
+ <xsd:element ref="ie:NIC"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="SIRET" type="ie:SIRET_ctype"/>
+ <xsd:simpleType name="SIRET_stype">
+ <xsd:restriction base="ie:Chaine_Numerique_stype">
+ <xsd:length value="14"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:attribute name="SIRET" type="ie:SIRET_stype"/>
+</xsd:schema>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- WARNING: Eclipse auto-generated file.
+ Any modifications will be overwritten.
+ To include a user specific buildfile here, simply create one in the same
+ directory with the processing instruction <?eclipse.ant.import?>
+ as the first entry and export the buildfile again. -->
+<project basedir="." default="build" name="TedetisActes">
+ <property environment="env"/>
+ <property name="ECLIPSE_HOME" value="../../Logiciel/eclipse"/>
+ <property name="junit.output.dir" value="junit"/>
+ <property name="debuglevel" value="source,lines,vars"/>
+ <property name="target" value="1.5"/>
+ <property name="source" value="1.5"/>
+
+ <path id="Apache Tomcat v5.5 [Apache Tomcat v5.5].libraryclasspath">
+ <pathelement location="lib/commons-dbcp.jar"/>
+ <pathelement location="lib/commons-logging-1.0.4.jar"/>
+ <pathelement location="lib/naming-factory.jar"/>
+ <pathelement location="lib/jsp-api.jar"/>
+ <pathelement location="lib/jasper-compiler-jdt.jar"/>
+ <pathelement location="lib/jasper-runtime.jar"/>
+ <pathelement location="lib/junit-3.8.1.jar"/>
+ <pathelement location="lib/aspectjrt-1.2.1.jar"/>
+ <pathelement location="lib/commons-collections3.jar"/>
+ <pathelement location="lib/jdom.jar"/>
+ <pathelement location="lib/commons-httpclient-2.0.2.jar"/>
+ <pathelement location="lib/commons-el.jar"/>
+ <pathelement location="lib/servlet-api.jar"/>
+ <pathelement location="lib/commons-fileupload-1.1.1.jar"/>
+ <pathelement location="lib/cactus-1.7.2.jar"/>
+ <pathelement location="lib/commons-pool.jar"/>
+ <pathelement location="lib/jasper-compiler.jar"/>
+ <pathelement location="lib/postgresql-8.3-604.jdbc4.jar"/>
+ <pathelement location="lib/naming-resources.jar"/>
+ <pathelement location="lib/HTTPClient.jar"/>
+ <pathelement location="lib/ant.jar"/>
+ <pathelement location="lib/aspectjrt-1.2.1.jar"/>
+ <pathelement location="lib/bcmail-jdk15-133.jar"/>
+ <pathelement location="lib/bcprov-jdk15-133.jar"/>
+
+ <pathelement location="lib/cactus-1.7.2.jar"/>
+ <pathelement location="lib/commons-codec-1.3.jar"/>
+ <pathelement location="lib/commons-fileupload-1.1.1.jar"/>
+ <pathelement location="lib/commons-httpclient-3.0.1.jar"/>
+ <pathelement location="lib/commons-io-1.2.jar"/>
+ <pathelement location="lib/commons-logging-1.0.4.jar"/>
+ <pathelement location="lib/commons-net-1.4.1.jar"/>
+ <pathelement location="lib/jdom.jar"/>
+ <pathelement location="lib/junit-3.8.1.jar"/>
+ <pathelement location="lib/mail.jar"/>
+ <pathelement location="lib/truezip-6.jar"/>
+ </path>
+ <path id="EAR Libraries.libraryclasspath"/>
+ <path id="TedetisActes.classpath">
+ <pathelement location="build/classes"/>
+ <path refid="Apache Tomcat v5.5 [Apache Tomcat v5.5].libraryclasspath"/>
+ <path refid="EAR Libraries.libraryclasspath"/>
+ <pathelement location="lib/commons-httpclient-3.0.1.jar"/>
+ <pathelement location="lib/dbunit-2.4.2.jar"/>
+ <pathelement location="lib/HTTPClient.jar"/>
+ <pathelement location="lib/postgresql-8.3-604.jdbc4.jar"/>
+ <pathelement location="lib/slf4j-api-1.5.6.jar"/>
+ <pathelement location="lib/slf4j-jcl-1.5.6.jar"/>
+ <pathelement location="lib/slf4j-log4j12-1.5.6.jar"/>
+ <pathelement location="lib/activation.jar"/>
+
+ <pathelement location="config"/>
+ </path>
+ <target name="init">
+ <mkdir dir="build/classes"/>
+ <copy includeemptydirs="false" todir="build/classes">
+ <fileset dir="src" excludes="**/*.launch, **/*.java"/>
+ </copy>
+ </target>
+ <target name="clean">
+ <delete dir="build/classes"/>
+ </target>
+ <target depends="clean" name="cleanall"/>
+ <target depends="build-subprojects,build-project,create-war" name="build"/>
+ <target name="build-subprojects"/>
+ <target depends="init" name="build-project">
+ <echo message="${ant.project.name}: ${ant.file}"/>
+ <javac encoding="utf-8" debug="true" debuglevel="${debuglevel}" destdir="build/classes" source="${source}" target="${target}">
+ <src path="src"/>
+ <classpath refid="TedetisActes.classpath"/>
+ </javac>
+ </target>
+ <target description="Build all projects which reference this project. Useful to propagate changes." name="build-refprojects"/>
+ <target description="copy Eclipse compiler jars to ant lib directory" name="init-eclipse-compiler">
+ <copy todir="${ant.library.dir}">
+ <fileset dir="${ECLIPSE_HOME}/plugins" includes="org.eclipse.jdt.core_*.jar"/>
+ </copy>
+ <unzip dest="${ant.library.dir}">
+ <patternset includes="jdtCompilerAdapter.jar"/>
+ <fileset dir="${ECLIPSE_HOME}/plugins" includes="org.eclipse.jdt.core_*.jar"/>
+ </unzip>
+ </target>
+ <target description="compile project with Eclipse compiler" name="build-eclipse-compiler">
+ <property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
+ <antcall target="build"/>
+ </target>
+ <target name="test">
+ <mkdir dir="${junit.output.dir}"/>
+ <junit fork="yes" printsummary="withOutAndErr">
+ <formatter type="xml"/>
+ <test name="com.adullact.s2low.test.AllTests" todir="${junit.output.dir}"/>
+ <classpath refid="TedetisActes.classpath"/>
+ </junit>
+ </target>
+ <target name="junitreport">
+ <junitreport todir="${junit.output.dir}">
+ <fileset dir="${junit.output.dir}">
+ <include name="TEST-*.xml"/>
+ </fileset>
+ <report format="frames" todir="${junit.output.dir}"/>
+ </junitreport>
+ </target>
+ <target name="create-war">
+ <war destfile="build/TedetisActes.war" webxml="WebContent/WEB-INF/web.xml" update="true">
+ <classes dir="build\classes"/>
+ <fileset dir="WebContent">
+ <exclude name="WEB-INF/web.xml"/>
+ </fileset>
+ </war>
+ </target>
+</project>
--- /dev/null
+#Fichier de configuration pour ACTES
+
+#Adresse mail pour envoyer les messages de type critique
+email_admin=eric@babette.com
+
+#Trigramme du TDT
+actes_trigramme=abc
+actes_quadrigramme=TACT
+
+actes_simulateur_email_in_html=yes
+
+#Configuration de la connexion à la base de données
+sgbd_url=jdbc:postgresql://127.0.0.1/tedetis
+sgbd_login=tedetis
+sgbd_password=tedetis
+
+#Emplacement commun à tomcat et à PHP pour chercher les enveloppes
+tdt_upload_path=/tdt-workspace/actes/uploads/
+#tdt_upload_path=C:\\tmp\\tedetis\\actes\\upload
+
+#La configuration du binaire EDDOS
+#eddos_bin_directory=/usr/lib/eddos/bin
+#eddos_timestamping_cert=/etc/tedetis/ssl/tedetis_timestamp_cert.pem
+#eddos_timestamping_key_file=/etc/tedetis/ssl/tedetis_timestamp_priv_key.pem
+#eddos_timestamping_key_passphrase=/etc/tedetis/ssl/tedetis_timestamp_priv_key.pass
+
+#Configuration de l'envoie des mail
+mailer_host=127.0.0.1
+mailer_port=25
+mailer_from=no_response@addulact.org
+mailer_xmailer=Tedetis - protocoles ACTES
+mailer_subject=Envoie de fichiers
+
+#Connexion à la boite aux lettres IMAP
+mail_host=127.0.0.1
+mail_port=143
+mail_login=eric
+mail_pass=aaaaaa
+
+#Connexion au ministère pour envoie des enveloppes
+#NOTE : ces paramètres servent aussi pour la servlet de simulation du ministère !
+ministere_url=http://127.0.0.1:8180/TedetisActes/SimulateurMinistere
+#One off NONE, POST or BASIC
+ministere_authentication=POST
+ministere_login=epommate
+ministere_password=aaaaa
+ministere_trace_ssl=true
+
+send_archive_timeout_in_millisecond=20000
+
+#Utilisation du keystore (simulateur ou client du ministere)
+keystore_path=config/simulateur.keystore
+keystore_password=simulateur
+
+#Utiliser pour les tests, non nécessaire en production ou pour le développement
+simulateur_url=http://127.0.0.1:8180/TedetisActes/SimulateurMinistere
+simulateur_url_basic=http://127.0.0.1:8180/TedetisActes/SimulateurMinistereProtected
+simulateur_url_ssl=https://127.0.0.1:8444/TedetisActes/SimulateurMinistere
+simulateur_url_ssl_basic=https://127.0.0.1:8444/TedetisActes/SimulateurMinistereProtected
+
+#Le certificat de l'horodateur et son mot de passe
+timestamping_p12_file=/etc/tedetis/ssl/tedetis_timestamp_cert.p12
+timestamping_p12_password=toto
+
+
+#Les donnes HELIOS
+helios_response_tmp=/tdt-workspace/helios/response_tmp/
+helios_response_root=/tdt-workspace/helios/response/
+helios_files_upload_root=/tdt-workspace/helios/sending/
+helios_counter=/tdt-workspace/helios/counter.txt
+helios_host=127.0.0.1
+helios_port=21
+helios_login_test=eric
+helios_password_test=aaaaaa
+helios_script_ftp=/tdt-workspace/helios/script-ftp
+helios_response_server_root=/home/eric/testhelios
--- /dev/null
+SET CLIENT_ENCODING TO 'LATIN9';
+
+CREATE TABLE authority_types (
+ id integer PRIMARY KEY,
+ parent_type_id integer,
+ description VARCHAR(512)
+);
+
+CREATE SEQUENCE authorities_id_seq;
+CREATE TABLE authorities (
+ id integer PRIMARY KEY DEFAULT nextval('authorities_id_seq'),
+ authority_type_id integer,
+ status integer,
+ name VARCHAR(255),
+ email VARCHAR(255),
+ siren VARCHAR(10),
+ agreement VARCHAR(64),
+ address VARCHAR(255),
+ postal_code integer,
+ city VARCHAR(255),
+ telephone VARCHAR(25),
+ fax VARCHAR(25),
+ department char(3),
+ district char(1)
+);
+
+CREATE SEQUENCE users_id_seq;
+CREATE TABLE users (
+ id integer PRIMARY KEY DEFAULT nextval('users_id_seq'),
+ email VARCHAR(255),
+ subject_dn VARCHAR(512) NOT NULL,
+ issuer_dn VARCHAR(512) NOT NULL,
+ name VARCHAR(100),
+ givenname VARCHAR(100),
+ telephone VARCHAR(25),
+ role varchar(5) NOT NULL,
+ authority_id integer NOT NULL,
+ status integer,
+ certificate text,
+ cert_not_before timestamp with time zone,
+ cert_not_after timestamp with time zone,
+ cert_serial VARCHAR(32)
+);
+
+CREATE SEQUENCE users_perms_id_seq;
+CREATE TABLE users_perms (
+ id integer PRIMARY KEY DEFAULT nextval('users_perms_id_seq'),
+ module_id integer,
+ user_id integer,
+ perm VARCHAR(10)
+);
+
+CREATE SEQUENCE modules_id_seq;
+CREATE TABLE modules (
+ id integer PRIMARY KEY DEFAULT nextval('modules_id_seq'),
+ name VARCHAR(50),
+ description VARCHAR(128),
+ menu_entry VARCHAR(128),
+ status integer not null DEFAULT 1
+);
+
+
+CREATE SEQUENCE authority_departments_id_seq;
+CREATE TABLE authority_departments (
+ id integer PRIMARY KEY DEFAULT nextval('authority_departments_id_seq'),
+ code VARCHAR(3),
+ name VARCHAR(128)
+);
+
+CREATE SEQUENCE authority_districts_id_seq;
+CREATE TABLE authority_districts (
+ id integer PRIMARY KEY DEFAULT nextval('authority_districts_id_seq'),
+ authority_department_id integer,
+ code VARCHAR(1),
+ name VARCHAR(128)
+);
+
+CREATE SEQUENCE modules_authorities_id_seq;
+CREATE TABLE modules_authorities (
+ id integer PRIMARY KEY DEFAULT nextval('modules_authorities_id_seq'),
+ module_id integer NOT NULL,
+ authority_id integer NOT NULL
+);
+
+CREATE SEQUENCE modules_params_id_seq;
+CREATE TABLE modules_params (
+ id integer PRIMARY KEY DEFAULT nextval('modules_params_id_seq'),
+ module_id integer NOT NULL,
+ name VARCHAR(64),
+ value VARCHAR(256),
+ description VARCHAR(512)
+);
+
+CREATE SEQUENCE logs_id_seq;
+CREATE TABLE logs (
+ id integer PRIMARY KEY DEFAULT nextval('logs_id_seq'),
+ date timestamp with time zone NOT NULL,
+ severity integer,
+ module varchar(50),
+ issuer varchar(30),
+ user_id integer,
+ visibility varchar(5),
+ message text,
+ timestamp text
+);
+
+
+-- Constraints
+ALTER TABLE authority_types ADD CONSTRAINT authority_types_parent_type_id_fk FOREIGN KEY (parent_type_id) REFERENCES authority_types(id);
+
+ALTER TABLE authorities ADD CONSTRAINT authorities_authority_type_id_fk FOREIGN KEY (authority_type_id) REFERENCES authority_types(id);
+
+ALTER TABLE users ADD CONSTRAINT users_entity_id_fk FOREIGN KEY (authority_id) REFERENCES authorities(id);
+
+ALTER TABLE users_perms ADD CONSTRAINT users_perms_module_id_fk FOREIGN KEY (module_id) REFERENCES modules(id);
+ALTER TABLE users_perms ADD CONSTRAINT users_perms_user_id_fk FOREIGN KEY (user_id) REFERENCES users(id);
+
+ALTER TABLE modules_authorities ADD CONSTRAINT modules_authorities_module_id_fk FOREIGN KEY (module_id) REFERENCES modules(id);
+ALTER TABLE modules_authorities ADD CONSTRAINT modules_authorities_authority_id_fk FOREIGN KEY (authority_id) REFERENCES authorities(id);
+
+ALTER TABLE modules_params ADD CONSTRAINT modules_params_id_fk FOREIGN KEY (module_id) REFERENCES modules(id);
+
+CREATE UNIQUE INDEX modules_name_idx ON modules (name);
+
+-- Initial data
+
+-- Authorities type
+INSERT INTO authority_types (id, parent_type_id, description) VALUES (1, null, 'Région');
+INSERT INTO authority_types (id, parent_type_id, description) VALUES (11, 1, 'Conseil régional');
+INSERT INTO authority_types (id, parent_type_id, description) VALUES (12, 1, 'Établissements publics locaux d\'enseignement');
+INSERT INTO authority_types (id, parent_type_id, description) VALUES (13, 1, 'Autres établissements publics');
+INSERT INTO authority_types (id, parent_type_id, description) VALUES (14, 1, 'Sociétés d\'économie mixte locales');
+INSERT INTO authority_types (id, parent_type_id, description) VALUES (2, null, 'Département');
+INSERT INTO authority_types (id, parent_type_id, description) VALUES (21, 2, 'Conseil général');
+INSERT INTO authority_types (id, parent_type_id, description) VALUES (22, 2, 'Établissements publics de santé');
+INSERT INTO authority_types (id, parent_type_id, description) VALUES (23, 2, 'Établissements publics locaux d\'enseignement');
+INSERT INTO authority_types (id, parent_type_id, description) VALUES (24, 2, 'Autres établissements publics');
+INSERT INTO authority_types (id, parent_type_id, description) VALUES (25, 2, 'Sociétés d\'économie mixte locales');
+INSERT INTO authority_types (id, parent_type_id, description) VALUES (3, null, 'Commune');
+INSERT INTO authority_types (id, parent_type_id, description) VALUES (31, 3, 'Commune');
+INSERT INTO authority_types (id, parent_type_id, description) VALUES (32, 3, 'Établissements publics de santé');
+INSERT INTO authority_types (id, parent_type_id, description) VALUES (33, 3, 'Autres établissements publics');
+INSERT INTO authority_types (id, parent_type_id, description) VALUES (34, 3, 'Sociétés d\'économie mixte locales');
+INSERT INTO authority_types (id, parent_type_id, description) VALUES (4, null, 'Établissements publics de coopération intercommunale et syndicats');
+INSERT INTO authority_types (id, parent_type_id, description) VALUES (41, 4, 'Syndicats de communes et syndicats mixtes « fermés » associant exclusivement des communes, et des EPCI');
+INSERT INTO authority_types (id, parent_type_id, description) VALUES (42, 4, 'Syndicats mixtes « ouverts » associant des collectivités territoriales, des groupements de collectivités territoriales et d\'autres personnes morales de droit public');
+INSERT INTO authority_types (id, parent_type_id, description) VALUES (43, 4, 'Syndicats d\'agglomération nouvelle');
+INSERT INTO authority_types (id, parent_type_id, description) VALUES (44, 4, 'Communautés de communes');
+INSERT INTO authority_types (id, parent_type_id, description) VALUES (45, 4, 'Communautés urbaines');
+INSERT INTO authority_types (id, parent_type_id, description) VALUES (46, 4, 'Communautés d\'agglomération');
+INSERT INTO authority_types (id, parent_type_id, description) VALUES (47, 4, 'Sociétés d\'économie mixte locales');
+INSERT INTO authority_types (id, parent_type_id, description) VALUES (5, null, 'Autres');
+INSERT INTO authority_types (id, parent_type_id, description) VALUES (51, 5, 'Service départemental d\'incendie et de secours');
+INSERT INTO authority_types (id, parent_type_id, description) VALUES (52, 5, 'Entente interdépartementale');
+INSERT INTO authority_types (id, parent_type_id, description) VALUES (53, 5, 'Entente interrégionale');
+INSERT INTO authority_types (id, parent_type_id, description) VALUES (54, 5, 'Autres sociétés d\'économie mixte locales');
+INSERT INTO authority_types (id, parent_type_id, description) VALUES (55, 5, 'Autres');
+
+-- Admin authority
+INSERT INTO authorities (id, status, name) VALUES(nextval('authorities_id_seq'), 1, 'Administrateurs');
+
+-- ACTES
+CREATE SEQUENCE actes_envelopes_id_seq;
+CREATE TABLE actes_envelopes (
+ id integer PRIMARY KEY DEFAULT nextval('actes_envelopes_id_seq'),
+ user_id integer,
+ submission_date timestamp with time zone,
+ siren VARCHAR(128),
+ department char(3),
+ district char(1),
+ authority_type_code integer,
+ name VARCHAR(100),
+ telephone VARCHAR(25),
+ email VARCHAR(255),
+ file_path varchar(1024),
+ file_size integer,
+ return_mail varchar(1024),
+ warning_sent char(1) DEFAULT NULL
+);
+
+CREATE SEQUENCE actes_transactions_id_seq;
+CREATE TABLE actes_transactions (
+ id integer PRIMARY KEY DEFAULT nextval('actes_transactions_id_seq'),
+ envelope_id integer NOT NULL,
+ type varchar(5),
+ related_transaction_id integer,
+ nature_code varchar(10),
+ nature_descr varchar(128),
+ title varchar(128),
+ subject varchar(512),
+ number varchar(20),
+ classification varchar(128),
+ classification_date timestamp with time zone,
+ decision_date timestamp with time zone,
+ unique_id varchar(128)
+);
+
+CREATE TABLE actes_natures (
+ id integer PRIMARY KEY,
+ short_descr varchar(5),
+ descr varchar(128)
+);
+
+CREATE SEQUENCE actes_transactions_workflow_id_seq;
+CREATE TABLE actes_transactions_workflow (
+ id integer PRIMARY KEY DEFAULT nextval('actes_transactions_workflow_id_seq'),
+ transaction_id integer,
+ status_id integer,
+ date timestamp with time zone,
+ message varchar(512)
+);
+
+CREATE INDEX atw_tid_idx ON actes_transactions_workflow (transaction_id);
+
+CREATE TABLE actes_status (
+ id integer PRIMARY KEY,
+ name varchar(64)
+);
+
+CREATE SEQUENCE actes_included_files_id_seq;
+CREATE TABLE actes_included_files (
+ id integer PRIMARY KEY DEFAULT nextval('actes_included_files_id_seq'),
+ envelope_id integer,
+ transaction_id integer,
+ filename varchar(512),
+ filetype varchar(64),
+ filesize integer,
+ signature text
+);
+
+CREATE SEQUENCE actes_classification_codes_id_seq;
+CREATE TABLE actes_classification_codes (
+ id integer PRIMARY KEY DEFAULT nextval('actes_classification_codes_id_seq'),
+ authority_id integer NOT NULL,
+ level integer,
+ code integer,
+ parent_id integer,
+ description varchar(128)
+);
+
+CREATE SEQUENCE actes_classification_requests_id_seq;
+CREATE TABLE actes_classification_requests (
+ id integer PRIMARY KEY DEFAULT nextval('actes_classification_requests_id_seq'),
+ request_date timestamp with time zone,
+ requested_by integer,
+ version_date timestamp with time zone
+);
+
+
+CREATE SEQUENCE actes_envelope_serials_id_seq;
+CREATE TABLE actes_envelope_serials (
+ id integer PRIMARY KEY DEFAULT nextval('actes_envelope_serials_id_seq'),
+ authority_id integer,
+ reset_date timestamp with time zone,
+ serial integer
+);
+
+CREATE SEQUENCE actes_transmission_windows_id_seq;
+CREATE TABLE actes_transmission_windows (
+ id integer PRIMARY KEY DEFAULT nextval('actes_transmission_windows_id_seq'),
+ rate_limit integer
+);
+
+CREATE SEQUENCE actes_transmission_window_hours_id_seq;
+CREATE TABLE actes_transmission_window_hours (
+ id integer PRIMARY KEY DEFAULT nextval('actes_transmission_window_hours_id_seq'),
+ transmission_window_id integer,
+ window_begin timestamp with time zone,
+ window_end timestamp with time zone,
+ consumed integer
+);
+
+
+-- Constraints
+ALTER TABLE actes_envelopes ADD CONSTRAINT actes_envelopes_user_id_fk FOREIGN KEY (user_id) REFERENCES users(id);
+ALTER TABLE actes_transactions ADD CONSTRAINT actes_transactions_envelope_id_fk FOREIGN KEY (envelope_id) REFERENCES actes_envelopes(id);
+ALTER TABLE actes_transactions ADD CONSTRAINT actes_transactions_related_transaction_id_fk FOREIGN KEY (related_transaction_id) REFERENCES actes_transactions(id);
+ALTER TABLE actes_transactions_workflow ADD CONSTRAINT actes_transactions_workflow_transaction_id_fk FOREIGN KEY (transaction_id) REFERENCES actes_transactions(id);
+ALTER TABLE actes_transactions_workflow ADD CONSTRAINT actes_transactions_workflow_status_id_fk FOREIGN KEY (status_id) REFERENCES actes_status(id);
+ALTER TABLE actes_included_files ADD CONSTRAINT actes_included_files_envelope_id_fk FOREIGN KEY (envelope_id) REFERENCES actes_envelopes(id);
+ALTER TABLE actes_included_files ADD CONSTRAINT actes_included_files_transaction_id_fk FOREIGN KEY (transaction_id) REFERENCES actes_transactions(id);
+ALTER TABLE actes_classification_codes ADD CONSTRAINT actes_classification_codes_authority_id_fk FOREIGN KEY (authority_id) REFERENCES authorities(id);
+ALTER TABLE actes_classification_codes ADD CONSTRAINT actes_classification_codes_parent_id_fk FOREIGN KEY (parent_id) REFERENCES actes_classification_codes(id);
+ALTER TABLE actes_classification_requests ADD CONSTRAINT actes_classification_requests_requested_by_fk FOREIGN KEY (requested_by) REFERENCES users(id);
+ALTER TABLE actes_envelope_serials ADD CONSTRAINT actes_envelope_serials_authority_id_fk FOREIGN KEY (authority_id) REFERENCES authorities(id);
+ALTER TABLE actes_transmission_window_hours ADD CONSTRAINT actes_transmission_window_hours_transmission_window_id_fk FOREIGN KEY (transmission_window_id) REFERENCES actes_transmission_windows(id);
+
+-- Module data
+INSERT INTO modules (name, description, menu_entry, status) VALUES ('actes', 'Module Actes', 'Transactions Actes', 1);
+-- Initial data
+INSERT INTO actes_natures (id, short_descr, descr) VALUES (1, 'DE', 'Délibérations');
+INSERT INTO actes_natures (id, short_descr, descr) VALUES (2, 'AR', 'Arrêtés réglementaires');
+INSERT INTO actes_natures (id, short_descr, descr) VALUES (3, 'AI', 'Arrêtés individuels');
+INSERT INTO actes_natures (id, short_descr, descr) VALUES (4, 'CC', 'Contrats et conventions');
+INSERT INTO actes_natures (id, short_descr, descr) VALUES (5, 'BF', 'Documents budgétaires et financiers');
+INSERT INTO actes_natures (id, short_descr, descr) VALUES (6, 'AU', 'Autres');
+
+INSERT INTO actes_status (id, name) VALUES (-1, 'Erreur');
+INSERT INTO actes_status (id, name) VALUES (0, 'Annulé');
+INSERT INTO actes_status (id, name) VALUES (1, 'Posté');
+INSERT INTO actes_status (id, name) VALUES (2, 'En attente de transmission');
+INSERT INTO actes_status (id, name) VALUES (3, 'Transmis');
+INSERT INTO actes_status (id, name) VALUES (4, 'Acquittement reçu');
+INSERT INTO actes_status (id, name) VALUES (5, 'Validé');
+INSERT INTO actes_status (id, name) VALUES (6, 'Refusé');
+
+
+-- Data for Name: authority_departments; Type: TABLE DATA; Schema: public; Owner: tedetis
+--
+
+COPY authority_departments (id, code, name) FROM stdin;
+101 001 Ain
+102 002 Aisne
+103 003 Allier
+104 004 Alpes-de-Haute-Provence
+105 005 Hautes-Alpes
+106 006 Alpes-Maritimes
+107 007 Ardèche
+108 008 Ardennes
+109 009 Ariège
+110 010 Aube
+111 011 Aude
+112 012 Aveyron
+113 013 Bouches-du-Rhône
+114 014 Calvados
+115 015 Cantal
+116 016 Charente
+117 017 Charente-Maritime
+118 018 Cher
+119 019 Corrèze
+120 02A Corse-du-Sud
+121 02B Haute-Corse
+122 021 Côte-d'Or
+123 022 Côtes-d'Armor
+124 023 Creuse
+125 024 Dordogne
+126 025 Doubs
+127 026 Drôme
+128 027 Eure
+129 028 Eure-et-Loir
+130 029 Finistère
+131 030 Gard
+132 031 Haute-Garonne
+133 032 Gers
+134 033 Gironde
+135 034 Hérault
+136 035 Ille-et-Vilaine
+137 036 Indre
+138 037 Indre-et-Loire
+139 038 Isère
+140 039 Jura
+141 040 Landes
+142 041 Loir-et-Cher
+143 042 Loire
+144 043 Haute-Loire
+145 044 Loire-Atlantique
+146 045 Loiret
+147 046 Lot
+148 047 Lot-et-Garonne
+149 048 Lozère
+150 049 Maine-et-Loire
+151 050 Manche
+152 051 Marne
+153 052 Haute-Marne
+154 053 Mayenne
+155 054 Meurthe-et-Moselle
+156 055 Meuse
+157 056 Morbihan
+158 057 Moselle
+159 058 Nièvre
+160 059 Nord
+161 060 Oise
+162 061 Orne
+163 062 Pas-de-Calais
+164 063 Puy-de-Dôme
+165 064 Pyrénées-Atlantiques
+166 065 Hautes-Pyrénées
+167 066 Pyrénées-Orientales
+168 067 Bas-Rhin
+169 068 Haut-Rhin
+170 069 Rhône
+171 070 Haute-Saône
+172 071 Saône-et-Loire
+173 072 Sarthe
+174 073 Savoie
+175 074 Haute-Savoie
+176 075 Paris
+177 076 Seine-Maritime
+178 077 Seine-et-Marne
+179 078 Yvelines
+180 079 Deux-Sèvres
+181 080 Somme
+182 081 Tarn
+183 082 Tarn-et-Garonne
+184 083 Var
+185 084 Vaucluse
+186 085 Vendée
+187 086 Vienne
+188 087 Haute-Vienne
+189 088 Vosges
+190 089 Yonne
+191 090 Territoire de Belfort
+192 091 Essonne
+193 092 Hauts-de-Seine
+194 093 Seine-Saint-Denis
+195 094 Val-de-Marne
+196 095 Val-d'Oise
+197 971 Guadeloupe
+198 972 Martinique
+199 973 Guyane
+200 974 La Réunion
+\.
+
+--
+-- Data for Name: authority_districts; Type: TABLE DATA; Schema: public; Owner: tedetis
+--
+
+COPY authority_districts (id, authority_department_id, code, name) FROM stdin;
+685 101 1 Belley
+686 101 2 Bourg-en-Bresse
+687 101 3 Gex
+688 101 4 Nantua
+689 102 1 Château-Thierry
+690 102 2 Laon
+691 102 3 Saint-Quentin
+692 102 4 Soissons
+693 102 5 Vervins
+694 103 1 Montluçon
+695 103 2 Moulins
+696 103 3 Vichy
+697 104 1 Barcelonnette
+698 104 2 Castellane
+699 104 3 Digne-les-Bains
+700 104 4 Forcalquier
+701 105 1 Briançon
+702 105 2 Gap
+703 106 1 Grasse
+704 106 2 Nice
+705 107 1 Largentière
+706 107 2 Privas
+707 107 3 Tournon-sur-Rhône
+708 108 1 Charleville-Mézières
+709 108 2 Rethel
+710 108 3 Sedan
+711 108 4 Vouziers
+712 109 1 Foix
+713 109 2 Pamiers
+714 109 3 Saint-Girons
+715 110 1 Bar-sur-Aube
+716 110 2 Nogent-sur-Seine
+717 110 3 Troyes
+718 111 1 Carcassonne
+719 111 2 Limoux
+720 111 3 Narbonne
+721 112 1 Millau
+722 112 2 Rodez
+723 112 3 Villefranche-de-Rouergue
+724 113 1 Aix-en-Provence
+725 113 2 Arles
+726 113 3 Marseille
+727 113 4 Istres
+728 114 1 Bayeux
+729 114 2 Caen
+730 114 3 Lisieux
+731 114 4 Vire
+732 115 1 Aurillac
+733 115 2 Mauriac
+734 115 3 Saint-Flour
+735 116 1 Angoulême
+736 116 2 Cognac
+737 116 3 Confolens
+738 117 1 Jonzac
+739 117 2 Rochefort
+740 117 3 (La)\tRochelle
+741 117 4 Saintes
+742 117 5 Saint-Jean-d'Angély
+743 118 1 Bourges
+744 118 2 Saint-Amand-Montrond
+745 118 3 Vierzon
+746 119 1 Brive-la-Gaillarde
+747 119 2 Tulle
+748 119 3 Ussel
+749 120 1 Ajaccio
+750 120 4 Sartène
+751 121 2 Bastia
+752 121 3 Corte
+753 121 5 Calvi
+754 122 1 Beaune
+755 122 2 Dijon
+756 122 3 Montbard
+757 123 1 Dinan
+758 123 2 Guingamp
+759 123 3 Lannion
+760 123 4 Saint-Brieuc
+761 124 1 Aubusson
+762 124 2 Guéret
+763 125 1 Bergerac
+764 125 2 Nontron
+765 125 3 Périgueux
+766 125 4 Sarlat-la-Canéda
+767 126 1 Besançon
+768 126 2 Montbéliard
+769 126 3 Pontarlier
+770 127 1 Die
+771 127 2 Nyons
+772 127 3 Valence
+773 128 1 (Les)\tAndelys
+774 128 2 Bernay
+775 128 3 Évreux
+776 129 1 Chartres
+777 129 2 Châteaudun
+778 129 3 Dreux
+779 129 4 Nogent-le-Rotrou
+780 130 1 Brest
+781 130 2 Châteaulin
+782 130 3 Morlaix
+783 130 4 Quimper
+784 131 1 Alès
+785 131 2 Nîmes
+786 131 3 (Le)\tVigan
+787 132 1 Muret
+788 132 2 Saint-Gaudens
+789 132 3 Toulouse
+790 133 1 Auch
+791 133 2 Condom
+792 133 3 Mirande
+793 134 1 Blaye
+794 134 2 Bordeaux
+795 134 3 Langon
+796 134 4 Lesparre-Médoc
+797 134 5 Libourne
+798 135 1 Béziers
+799 135 2 Lodève
+800 135 3 Montpellier
+801 136 1 Fougères
+802 136 2 Redon
+803 136 3 Rennes
+804 136 4 Saint-Malo
+805 137 1 (Le)\tBlanc
+806 137 2 Châteauroux
+807 137 3 (La)\tChâtre
+808 137 4 Issoudun
+809 138 1 Chinon
+810 138 2 Tours
+811 138 3 Loches
+812 139 1 Grenoble
+813 139 2 (La)\tTour-du-Pin
+814 139 3 Vienne
+815 140 1 Dole
+816 140 2 Lons-le-Saunier
+817 140 3 Saint-Claude
+818 141 1 Dax
+819 141 2 Mont-de-Marsan
+820 142 1 Blois
+821 142 2 Vendôme
+822 142 3 Romorantin-Lanthenay
+823 143 1 Montbrison
+824 143 2 Roanne
+825 143 3 Saint-Étienne
+826 144 1 Brioude
+827 144 2 (Le)\tPuy-en-Velay
+828 144 3 Yssingeaux
+829 145 1 Châteaubriant
+830 145 2 Nantes
+831 145 3 Saint-Nazaire
+832 145 4 Ancenis
+833 146 1 Montargis
+834 146 2 Orléans
+835 146 3 Pithiviers
+836 147 1 Cahors
+837 147 2 Figeac
+838 147 3 Gourdon
+839 148 1 Agen
+840 148 2 Marmande
+841 148 3 Villeneuve-sur-Lot
+842 148 4 Nérac
+843 149 1 Florac
+844 149 2 Mende
+845 150 1 Angers
+846 150 2 Cholet
+847 150 3 Saumur
+848 150 4 Segré
+849 151 1 Avranches
+850 151 2 Cherbourg-Octeville
+851 151 3 Coutances
+852 151 4 Saint-Lô
+853 152 1 Châlons-en-Champagne
+854 152 2 Épernay
+855 152 3 Reims
+856 152 4 Vitry-le-François
+857 152 5 Sainte-Menehould
+858 153 1 Chaumont
+859 153 2 Langres
+860 153 3 Saint-Dizier
+861 154 1 Château-Gontier
+862 154 2 Laval
+863 154 3 Mayenne
+864 155 1 Briey
+865 155 2 Lunéville
+866 155 3 Nancy
+867 155 4 Toul
+868 156 1 Bar-le-Duc
+869 156 2 Commercy
+870 156 3 Verdun
+871 157 1 Lorient
+872 157 2 Pontivy
+873 157 3 Vannes
+874 158 1 Boulay-Moselle
+875 158 2 Château-Salins
+876 158 3 Forbach
+877 158 4 Metz-Campagne
+878 158 5 Sarrebourg
+879 158 6 Sarreguemines
+880 158 7 Thionville-Est
+881 158 8 Thionville-Ouest
+882 158 9 Metz-Ville
+883 159 1 Château-Chinon(Ville)
+884 159 2 Clamecy
+885 159 3 Nevers
+886 159 4 Cosne-Cours-sur-Loire
+887 160 1 Avesnes-sur-Helpe
+888 160 2 Cambrai
+889 160 3 Douai
+890 160 4 Dunkerque
+891 160 5 Lille
+892 160 6 Valenciennes
+893 161 1 Beauvais
+894 161 2 Clermont
+895 161 3 Compiègne
+896 161 4 Senlis
+897 162 1 Alençon
+898 162 2 Argentan
+899 162 3 Mortagne-au-Perche
+900 163 1 Arras
+901 163 2 Béthune
+902 163 3 Boulogne-sur-Mer
+903 163 4 Montreuil
+904 163 5 Saint-Omer
+905 163 6 Calais
+906 163 7 Lens
+907 164 1 Ambert
+908 164 2 Clermont-Ferrand
+909 164 3 Issoire
+910 164 4 Riom
+911 164 5 Thiers
+912 165 1 Bayonne
+913 165 2 Oloron-Sainte-Marie
+914 165 3 Pau
+915 166 1 Argelès-Gazost
+916 166 2 Bagnères-de-Bigorre
+917 166 3 Tarbes
+918 167 1 Céret
+919 167 2 Perpignan
+920 167 3 Prades
+921 168 2 Haguenau
+922 168 3 Molsheim
+923 168 4 Saverne
+924 168 5 Sélestat-Erstein
+925 168 6 Strasbourg-Campagne
+926 168 7 Wissembourg
+927 168 8 Strasbourg-Ville
+928 169 1 Altkirch
+929 169 2 Colmar
+930 169 3 Guebwiller
+931 169 4 Mulhouse
+932 169 5 Ribeauvillé
+933 169 6 Thann
+934 170 1 Lyon
+935 170 2 Villefranche-sur-Saône
+936 171 1 Lure
+937 171 2 Vesoul
+938 172 1 Autun
+939 172 2 Chalon-sur-Saône
+940 172 3 Charolles
+941 172 4 Louhans
+942 172 5 Mâcon
+943 173 1 (La)\tFlèche
+944 173 2 Mamers
+945 173 3 (Le)\tMans
+946 174 1 Albertville
+947 174 2 Chambéry
+948 174 3 Saint-Jean-de-Maurienne
+949 175 1 Annecy
+950 175 2 Bonneville
+951 175 3 Saint-Julien-en-Genevois
+952 175 4 Thonon-les-Bains
+953 176 1 Paris
+954 177 1 Dieppe
+955 177 2 (Le)\tHavre
+956 177 3 Rouen
+957 178 1 Meaux
+958 178 2 Melun
+959 178 3 Provins
+960 178 4 Fontainebleau
+961 178 5 Torcy
+962 179 1 Mantes-la-Jolie
+963 179 2 Rambouillet
+964 179 3 Saint-Germain-en-Laye
+965 179 4 Versailles
+966 180 1 Bressuire
+967 180 2 Niort
+968 180 3 Parthenay
+969 181 1 Abbeville
+970 181 2 Amiens
+971 181 3 Montdidier
+972 181 4 Péronne
+973 182 1 Albi
+974 182 2 Castres
+975 183 1 Castelsarrasin
+976 183 2 Montauban
+977 184 1 Draguignan
+978 184 2 Toulon
+979 184 3 Brignoles
+980 185 1 Apt
+981 185 2 Avignon
+982 185 3 Carpentras
+983 186 1 Fontenay-le-Comte
+984 186 2 (La)\tRoche-sur-Yon
+985 186 3 (Les)\tSables-d'Olonne
+986 187 1 Châtellerault
+987 187 2 Montmorillon
+988 187 3 Poitiers
+989 188 1 Bellac
+990 188 2 Limoges
+991 188 3 Rochechouart
+992 189 1 Épinal
+993 189 2 Neufchâteau
+994 189 3 Saint-Dié-des-Vosges
+995 190 1 Auxerre
+996 190 2 Avallon
+997 190 3 Sens
+998 191 1 Belfort
+999 192 1 Étampes
+1000 192 2 Évry
+1001 192 3 Palaiseau
+1002 193 1 Antony
+1003 193 2 Nanterre
+1004 193 3 Boulogne-Billancourt
+1005 194 1 Bobigny
+1006 194 2 (Le)\tRaincy
+1007 194 3 Saint-Denis
+1008 195 1 Créteil
+1009 195 2 Nogent-sur-Marne
+1010 195 3 Haó-les-Roses
+1011 196 1 Argenteuil
+1012 196 2 Sarcelles
+1013 196 3 Pontoise
+1014 197 1 Basse-Terre
+1015 197 2 Pointe-à-Pitre
+1016 197 3 Saint-Martin-Saint-Barthélemy
+1017 198 1 Fort-de-France
+1018 198 2 (La)\tTrinité
+1019 198 3 (Le)\tMarin
+1020 198 4 Saint-Pierre
+1021 199 1 Cayenne
+1022 199 2 Saint-Laurent-du-Maroni
+1023 200 1 Saint-Denis
+1024 200 2 Saint-Pierre
+1025 200 3 Saint-Benoît
+1026 200 4 Saint-Paul
+\.
+
+
+-- 1.0.1 vers 1.0.2
+CREATE SEQUENCE authority_groups_id_seq;
+CREATE TABLE authority_groups (
+ id integer PRIMARY KEY DEFAULT nextval('authority_groups_id_seq'),
+ name VARCHAR(128),
+ status integer
+);
+
+CREATE SEQUENCE authority_group_siren_id_seq;
+CREATE TABLE authority_group_siren (
+ id integer PRIMARY KEY DEFAULT nextval('authority_group_siren_id_seq'),
+ authority_group_id integer,
+ siren VARCHAR(10)
+);
+
+ALTER TABLE authorities ADD authority_group_id integer DEFAULT NULL;
+ALTER TABLE authorities ADD CONSTRAINT authorities_authority_group_id_fk FOREIGN KEY (authority_group_id) REFERENCES authority_groups(id);
+
+ALTER TABLE authority_group_siren ADD CONSTRAINT authority_group_siren_authority_group_id_fk FOREIGN KEY (authority_group_id) REFERENCES authority_groups(id);
+
+ALTER TABLE users ADD authority_group_id integer DEFAULT NULL;
+ALTER TABLE users ADD CONSTRAINT users_authority_group_id_fk FOREIGN KEY (authority_group_id) REFERENCES authority_groups(id);
+
+ALTER TABLE authorities ADD broadcast_email VARCHAR(255);
+
+-- ACTES 1.0.0 vers 1.0.1
+ALTER TABLE actes_classification_requests ADD xml_data text DEFAULT NULL;
+
+
+-- ACTES 1.0.1 vers 1.0.2
+ALTER TABLE actes_included_files ADD posted_filename VARCHAR(512);
+
+ALTER TABLE actes_transactions ADD archive_url VARCHAR(1024);
+
+CREATE SEQUENCE actes_batches_id_seq;
+CREATE TABLE actes_batches (
+ id integer PRIMARY KEY DEFAULT nextval('actes_batches_id_seq'),
+ user_id integer,
+ submission_date timestamp with time zone,
+ storage_dir varchar(1024),
+ description varchar(1024),
+ num_prefix varchar(16),
+ next_suffix integer
+);
+
+CREATE SEQUENCE actes_batch_files_id_seq;
+CREATE TABLE actes_batch_files (
+ id integer PRIMARY KEY DEFAULT nextval('actes_batch_files_id_seq'),
+ batch_id integer,
+ transaction_id integer,
+ filename varchar(1024),
+ filesize integer,
+ status varchar(10),
+ signature text
+);
+
+ALTER TABLE actes_batches ADD CONSTRAINT actes_batches_user_id_fk FOREIGN KEY (user_id) REFERENCES users(id);
+ALTER TABLE actes_batch_files ADD CONSTRAINT actes_batch_files_batch_id_fk FOREIGN KEY (batch_id) REFERENCES actes_batches(id);
+ALTER TABLE actes_batch_files ADD CONSTRAINT actes_batch_files_transaction_id_fk FOREIGN KEY (transaction_id) REFERENCES actes_transactions(id);
+
+
+
+-- ACTES 1.0.2 vers 1.0.4
+ALTER TABLE actes_classification_codes ALTER COLUMN description TYPE varchar(256);
+
+ALTER TABLE authorities ALTER COLUMN broadcast_email TYPE text;
+ALTER TABLE authorities ADD default_broadcast_email text;
+
+ALTER TABLE actes_transactions ADD broadcast_emails text;
+ALTER TABLE actes_transactions ADD broadcast_send_sources integer;
+ALTER TABLE actes_transactions ADD broadcasted boolean DEFAULT false;
+
+
+-- ACTES 1.0.4.1
+-- La colonne broadcast_send_sources doit contenir une valeur
+alter table actes_transactions alter column broadcast_send_sources set default 0;
+alter table actes_transactions alter column broadcast_send_sources drop not null;
+
+-- ACTES 1.0.5
+ALTER TABLE actes_transactions_workflow ADD flux_retour text;
+
+
+-- ACTES Version 1.4 du protocole, implémentation NTSYS
+CREATE TABLE actes_messages_status (
+ id integer PRIMARY KEY not null,
+ nom character(64)
+);
+
+INSERT INTO actes_messages_status (id, nom) VALUES (1, 'Posté la réponse echoué');
+INSERT INTO actes_messages_status (id, nom) VALUES (2, 'Echèc de la transmission');
+INSERT INTO actes_messages_status (id, nom) VALUES (3, 'En attente de la transmission');
+INSERT INTO actes_messages_status (id, nom) VALUES (4, 'Transmis');
+
+INSERT INTO actes_messages_status (id, nom) VALUES (20, 'un courrier simple reçu');
+INSERT INTO actes_messages_status (id, nom) VALUES (21, 'Posté la réponse de courrier simple');
+--
+INSERT INTO actes_messages_status (id, nom) VALUES (30, 'Réception de la demande des pièces complémentaire ');
+INSERT INTO actes_messages_status (id, nom) VALUES (31, 'AR demande pièces complémentaires');
+INSERT INTO actes_messages_status (id, nom) VALUES (32, 'Refus de pièce complémentaire posté');
+INSERT INTO actes_messages_status (id, nom) VALUES (33, 'Pièce complémentaire postés');
+INSERT INTO actes_messages_status (id, nom) VALUES (36, 'AR pièce complémentaire ou refus');
+--
+INSERT INTO actes_messages_status (id, nom) VALUES (40, 'Réception du lettre d''observation');
+INSERT INTO actes_messages_status (id, nom) VALUES (41, 'Ar de lettre d''observation');
+INSERT INTO actes_messages_status (id, nom) VALUES (42, 'La réponse de lettre d''observations');
+INSERT INTO actes_messages_status (id, nom) VALUES (43, 'Réfus de lettre d''observation');
+INSERT INTO actes_messages_status (id, nom) VALUES (46, 'AR lettre d''observation');
+--
+INSERT INTO actes_messages_status (id, nom) VALUES (50, 'Réception d''info déféré au TA');
+
+
+CREATE SEQUENCE actes_messages_id_seq
+ INCREMENT BY 1
+ MAXVALUE 999999999999999
+ NO MINVALUE
+ CACHE 1;
+CREATE TABLE actes_messages (
+ id integer PRIMARY KEY DEFAULT nextval('actes_messages_id_seq'::regclass) NOT NULL,
+ actes_transactions_id integer,
+ messages_type integer,
+ description varchar(512),
+ actes_messages_status_id integer,
+ received_date timestamp with time zone,
+ FOREIGN KEY (actes_transactions_id) references actes_transactions(id),
+ FOREIGN KEY (actes_messages_status_id) references actes_messages_status(id)
+);
+
+CREATE SEQUENCE actes_messages_reponses_seq
+ INCREMENT BY 1
+ MAXVALUE 999999999999999
+ NO MINVALUE
+ CACHE 1;
+CREATE TABLE actes_messages_reponses (
+ id integer PRIMARY KEY DEFAULT nextval('actes_messages_reponses_seq'::regclass) NOT NULL,
+ actes_messages_id integer,
+ dir_path varchar(4096),
+ enveloppe varchar(512),
+ filename varchar(512),
+ agreement boolean,
+ file_size integer,
+ warning_sent boolean DEFAULT false,
+ first_sent_time timestamp with time zone,
+ actual_sent_time timestamp with time zone,
+ FOREIGN KEY (actes_messages_id) references actes_messages(id)
+);
+
+CREATE SEQUENCE actes_messages_workflow_id_seq
+ INCREMENT BY 1
+ MAXVALUE 999999999999999
+ NO MINVALUE
+ CACHE 1;
+
+CREATE TABLE actes_messages_workflow (
+ id integer PRIMARY KEY DEFAULT nextval('actes_messages_workflow_id_seq'::regclass) NOT NULL,
+ actes_messages_id integer,
+ actes_messages_status_id integer,
+ action_time timestamp with time zone,
+ message varchar (1024),
+ FOREIGN KEY (actes_messages_id) references actes_messages(id),
+ FOREIGN KEY (actes_messages_status_id) references actes_messages_status(id)
+);
+
+-- fichier 1.0.8-1.0.8.1.sql
+alter table authorities add column helios_ftp_password varchar (128) ;
+alter table authorities add column helios_ftp_login varchar (128);
+alter table authorities add column helios_ftp_dest varchar (128);
+alter table authorities add column ext_siret varchar (5);
+
+-- Module HELIOS de base
+CREATE SEQUENCE helios_transactions_id_seq;
+
+CREATE TABLE helios_transactions (
+ id integer DEFAULT nextval('helios_transactions_id_seq'::regclass) NOT NULL,
+ user_id integer NOT NULL,
+ filename varchar(1024) NOT NULL,
+ file_size integer,
+ siren varchar(128),
+ sha1 character(40),
+ warning_sent integer,
+ url_archivage character(1024),
+ submission_date timestamp with time zone,
+ xml_nomfic varchar(255),
+ acquit_filename varchar(255),
+ complete_name varchar(150)
+);
+
+CREATE UNIQUE INDEX xml_nomfic_index_unique ON helios_transactions USING btree (xml_nomfic);
+
+
+CREATE SEQUENCE helios_transactions_workflow_id_seq;
+CREATE TABLE helios_transactions_workflow (
+ id integer PRIMARY KEY DEFAULT nextval('helios_transactions_workflow_id_seq'),
+ transaction_id integer NOT NULL,
+ status_id integer NOT NULL,
+ date timestamp with time zone NOT NULL,
+ message varchar(512) NOT NULL
+);
+
+CREATE TABLE helios_status (
+ id integer PRIMARY KEY,
+ name varchar(64) NOT NULL
+);
+
+-- Constraints
+ALTER TABLE helios_transactions ADD CONSTRAINT helios_transactions_user_id_fk FOREIGN KEY (user_id) REFERENCES users(id);
+
+-- NOTE EP 24/10/2009 : cette requete échoue car helios_transactions(id) n'est pas une clé primaire
+ALTER TABLE helios_transactions_workflow ADD CONSTRAINT helios_transactions_workflow_transaction_id_fk FOREIGN KEY (transaction_id) REFERENCES helios_transactions(id);
+
+
+-- Module data
+INSERT INTO modules (name, description, menu_entry, status) VALUES ('helios', 'Module Helios', 'Transactions Helios', 1);
+
+-- Initial Data
+
+INSERT INTO helios_status (id, name) VALUES (-1, 'Erreur');
+INSERT INTO helios_status (id, name) VALUES (0, 'Annulé');
+INSERT INTO helios_status (id, name) VALUES (1, 'Posté');
+INSERT INTO helios_status (id, name) VALUES (2, 'En attente de transmission. Fichier valide.');
+INSERT INTO helios_status (id, name) VALUES (3, 'Transmis');
+INSERT INTO helios_status (id, name) VALUES (4, 'Acquittement reçu');
+INSERT INTO helios_status (id, name) VALUES (5, 'Validé. Non utilisé en Helios.');
+INSERT INTO helios_status (id, name) VALUES (6, 'Refusé');
+INSERT INTO helios_status (id, name) VALUES (7, 'En traitement');
+
+
+--------------------------------------
+
+CREATE SEQUENCE helios_transmission_windows_id_seq
+ INCREMENT BY 1
+ MAXVALUE 999999999999999
+ NO MINVALUE
+ CACHE 1;
+CREATE TABLE helios_transmission_windows (
+ id integer PRIMARY KEY DEFAULT nextval('helios_transmission_windows_id_seq'),
+ rate_limit integer
+);
+
+
+CREATE SEQUENCE helios_transmission_window_hours_id_seq
+ INCREMENT BY 1
+ MAXVALUE 999999999999999
+ NO MINVALUE
+ CACHE 1;
+
+CREATE TABLE helios_transmission_window_hours (
+ id integer PRIMARY KEY DEFAULT nextval('helios_transmission_window_hours_id_seq'),
+ transmission_window_id integer,
+ window_begin timestamp with time zone,
+ window_end timestamp with time zone,
+ consumed integer
+);
+
+
+ALTER TABLE helios_transmission_window_hours ADD CONSTRAINT helios_transmission_window_hours_transmission_window_id_fk FOREIGN KEY (transmission_window_id) REFERENCES helios_transmission_windows(id);
+
+
+CREATE SEQUENCE helios_retour_id_seq
+ INCREMENT BY 1
+ MAXVALUE 999999999999999
+ NO MINVALUE
+ CACHE 1;
+
+CREATE TABLE helios_retour (
+ id integer PRIMARY KEY DEFAULT nextval('helios_retour_id_seq'),
+ siren varchar(255),
+ filename varchar(255),
+ date timestamp with time zone,
+ status integer
+);
+
--- /dev/null
+SET CLIENT_ENCODING TO 'LATIN9';
+
+
+INSERT INTO actes_status (id,name) VALUES(7,'Document reçu');
+
+INSERT INTO actes_status (id,name) VALUES(8,'Acquittement envoyé');
+INSERT INTO actes_status (id,name) VALUES(9,'Document envoyé');
+INSERT INTO actes_status (id,name) VALUES(10,'Refus d''envoie');
+INSERT INTO actes_status (id,name) VALUES(11,'Aquittement de document reçu');
+
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<actes:AnomalieActe xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd" xmlns:insee="http://xml.insee.fr/schema" xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><actes:Date>2010-07-01</actes:Date><actes:Nature>002</actes:Nature><actes:Detail>Version de la classification en sous-matières obsolète</actes:Detail><actes:ActeRecu actes:Date="2010-06-14" actes:NumeroInterne="GAFP_ASFAM11" actes:CodeNatureActe="4"><actes:CodeMatiere1 actes:CodeMatiere="4"/><actes:CodeMatiere2 actes:CodeMatiere="2"/><actes:Objet>CONTRAT MIRON JOELLE ASSISTANTE FAMILIALE</actes:Objet><actes:ClassificationDateVersion>2009-05-04</actes:ClassificationDateVersion><actes:Document><actes:NomFichier>011-221100019-20100614-GAFP_ASFAM11-CC-1-1_1.pdf</actes:NomFichier></actes:Document><actes:Annexes actes:Nombre="0"/></actes:ActeRecu><actes:ClassificationDateVersionEnCours>2010-06-25</actes:ClassificationDateVersionEnCours></actes:AnomalieActe>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<actes:EnveloppeMISILLCL xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd" xmlns:insee="http://xml.insee.fr/schema" xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><actes:Emetteur><actes:IDSousPref actes:Departement="011" actes:Arrondissement="1"/></actes:Emetteur><actes:FormulairesEnvoyes><actes:Formulaire><actes:NomFichier>011-221100019----1-3_583.xml</actes:NomFichier></actes:Formulaire></actes:FormulairesEnvoyes><actes:Destinataire insee:SIREN="221100019"/></actes:EnveloppeMISILLCL>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<actes:ReponseCourrierSimple xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd"
+actes:DateCourrierPref="2008-12-31"
+actes:IDActe="001-123456789-20090107-8789789-AU" >
+<actes:Document><actes:NomFichier>
+001-123456789-20081231-8789789-AU-2-2_1.pdf</actes:NomFichier>
+</actes:Document>
+</actes:ReponseCourrierSimple>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<actes:EnveloppeCLMISILL xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216" xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd">
+ <actes:Emetteur>
+ <actes:IDCL insee:SIREN="123456789" actes:Departement="001" actes:Arrondissement="2" actes:Nature="31"/>
+ <actes:Referent>
+ <actes:Nom>acte Utilisateur</actes:Nom>
+ <actes:Telephone></actes:Telephone>
+ <actes:Email>epommate@gmail.com</actes:Email>
+ </actes:Referent>
+ </actes:Emetteur>
+ <actes:AdressesRetour>
+ <actes:Email>eric@babette.com</actes:Email>
+ <actes:Email>epommate@gmail.com</actes:Email>
+ </actes:AdressesRetour>
+ <actes:FormulairesEnvoyes>
+ <actes:Formulaire>
+ <actes:NomFichier>001-123456789-20081231-8789789-AU-2-2_0.xml</actes:NomFichier>
+ </actes:Formulaire>
+ </actes:FormulairesEnvoyes>
+</actes:EnveloppeCLMISILL>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<actes:Acte
+xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+xmlns:insee="http://xml.insee.fr/schema"
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd"
+actes:Date="2009-04-15"
+actes:NumeroInterne="009_TEST"
+actes:CodeNatureActe="3">
+ <actes:CodeMatiere1 actes:CodeMatiere="1"/>
+ <actes:CodeMatiere2 actes:CodeMatiere="2"/>
+ <actes:CodeMatiere3 actes:CodeMatiere="2"/>
+ <actes:CodeMatiere4 actes:CodeMatiere="2"/>
+ <actes:CodeMatiere5 actes:CodeMatiere="1"/>
+ <actes:Objet>dsfsq</actes:Objet>
+ <actes:ClassificationDateVersion>2003-06-25</actes:ClassificationDateVersion>
+ <actes:Document>
+ <actes:NomFichier>069-123456789-20090415-009_TEST-AI-1-1_1.pdf</actes:NomFichier>
+ </actes:Document>
+ <actes:Annexes actes:Nombre="0">
+ </actes:Annexes>
+</actes:Acte>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<actes:EnveloppeCLMISILL xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216" xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd">
+ <actes:Emetteur>
+ <actes:IDCL insee:SIREN="123456789" actes:Departement="069" actes:Arrondissement="1" actes:Nature="31"/>
+ <actes:Referent>
+ <actes:Nom>pierre pierre</actes:Nom>
+ <actes:Telephone></actes:Telephone>
+ <actes:Email>turlutut@mail.com</actes:Email>
+ </actes:Referent>
+ </actes:Emetteur>
+ <actes:AdressesRetour>
+ <actes:Email>tedetis@demo.local.s2low.org</actes:Email>
+ <actes:Email>turlutut@mail.com</actes:Email>
+ </actes:AdressesRetour>
+ <actes:FormulairesEnvoyes>
+ <actes:Formulaire>
+ <actes:NomFichier>069-123456789-20090415-009_TEST-AI-1-1_0.xml</actes:NomFichier>
+ </actes:Formulaire>
+ </actes:FormulairesEnvoyes>
+</actes:EnveloppeCLMISILL>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<actes:Acte
+xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+xmlns:insee="http://xml.insee.fr/schema"
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd"
+actes:Date="2007-04-11"
+actes:NumeroInterne="PK_20070411_1"
+actes:CodeNatureActe="2">
+ <actes:CodeMatiere1 actes:CodeMatiere="1"/>
+ <actes:CodeMatiere2 actes:CodeMatiere="2"/>
+ <actes:CodeMatiere3 actes:CodeMatiere="2"/>
+ <actes:CodeMatiere4 actes:CodeMatiere="2"/>
+ <actes:CodeMatiere5 actes:CodeMatiere="1"/>
+ <actes:Objet>fermeture du lycee...</actes:Objet>
+ <actes:ClassificationDateVersion>2003-06-25</actes:ClassificationDateVersion>
+ <actes:Document>
+ <actes:NomFichier>069-999888777-20070411-PK_20070411_1-AR-1-1_1.pdf</actes:NomFichier>
+ </actes:Document>
+ <actes:Annexes actes:Nombre="0">
+ </actes:Annexes>
+</actes:Acte>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<actes:EnveloppeCLMISILL xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216" xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd">
+ <actes:Emetteur>
+ <actes:IDCL insee:SIREN="999888777" actes:Departement="069" actes:Arrondissement="1" actes:Nature="11"/>
+ <actes:Referent>
+ <actes:Nom>Lino Ventura</actes:Nom>
+ <actes:Telephone></actes:Telephone>
+ <actes:Email>lventura@picardie.fr</actes:Email>
+ </actes:Referent>
+ </actes:Emetteur>
+ <actes:AdressesRetour>
+ <actes:Email>eric@babette.com</actes:Email>
+ <actes:Email>epommate@gmail.com</actes:Email>
+ </actes:AdressesRetour>
+ <actes:FormulairesEnvoyes>
+ <actes:Formulaire>
+ <actes:NomFichier>069-999888777-20070411-PK_20070411_1-AR-1-1_0.xml</actes:NomFichier>
+ </actes:Formulaire>
+ </actes:FormulairesEnvoyes>
+</actes:EnveloppeCLMISILL>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<actes:TOTO
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd"
+ xmlns:insee="http://xml.insee.fr/schema" xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <actes:Emetteur>
+ <actes:IDSousPref actes:Departement="980"
+ actes:Arrondissement="1" />
+ </actes:Emetteur>
+ <actes:FormulairesEnvoyes>
+ <actes:Formulaire>
+ <actes:NomFichier>980-454545011-20080710-BEBE1-AI-1-2_5.xml</actes:NomFichier>
+ </actes:Formulaire>
+ </actes:FormulairesEnvoyes>
+ <actes:Destinataire insee:SIREN="454545011" />
+</actes:TOTO>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<actes:ARActe
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd"
+ actes:IDActe="980-454545011-20080507-BEBE1-AI" actes:DateReception="2008-07-10"
+ xmlns:insee="http://xml.insee.fr/schema" xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <actes:ActeRecu actes:Date="2008-05-07"
+ actes:NumeroInterne="BEBE1" actes:CodeNatureActe="3">
+ <actes:CodeMatiere1 actes:CodeMatiere="4" />
+ <actes:CodeMatiere2 actes:CodeMatiere="1" />
+ <actes:Objet>TEST_NJO(0)</actes:Objet>
+ <actes:ClassificationDateVersion>2010-01-01</actes:ClassificationDateVersion>
+ <actes:Document>
+ <actes:NomFichier>980-454545011-20080408-lib-AI-1-1_1.pdf</actes:NomFichier>
+ </actes:Document>
+ <actes:Annexes actes:Nombre="0" />
+ </actes:ActeRecu>
+ <actes:ClassificationDateVersionEnCours>2006-02-08</actes:ClassificationDateVersionEnCours>
+</actes:ARActe>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<actes:ARActe
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd"
+ actes:IDActe="980-454545011-20080507-BEBE1-AI" actes:DateReception="2008-07-10"
+ xmlns:insee="http://xml.insee.fr/schema" xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <actes:ActeRecu actes:Date="2008-05-07"
+ actes:NumeroInterne="BEBE1" actes:CodeNatureActe="3">
+ <actes:CodeMatiere1 actes:CodeMatiere="4" />
+ <actes:CodeMatiere2 actes:CodeMatiere="1" />
+ <actes:Objet>TEST_NJO(0)</actes:Objet>
+ <actes:ClassificationDateVersion>2010-01-01</actes:ClassificationDateVersion>
+ <actes:Document>
+ <actes:NomFichier>980-454545011-20080408-lib-AI-1-1_1.pdf</actes:NomFichier>
+ </actes:Document>
+ <actes:Annexes actes:Nombre="0" />
+ </actes:ActeRecu>
+ <actes:ClassificationDateVersionEnCours>2006-02-08</actes:ClassificationDateVersionEnCours>
+</actes:ARActe>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<actes:ARActe
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd"
+ actes:IDActe="980-454545011-20080507-BEBE1-AI" actes:DateReception="2008-07-10"
+ xmlns:insee="http://xml.insee.fr/schema" xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <actes:ActeRecu actes:Date="2008-05-07"
+ actes:NumeroInterne="BEBE1" actes:CodeNatureActe="3">
+ <actes:CodeMatiere1 actes:CodeMatiere="4" />
+ <actes:CodeMatiere2 actes:CodeMatiere="1" />
+ <actes:Objet>TEST_NJO(0)</actes:Objet>
+ <actes:ClassificationDateVersion>2010-01-01</actes:ClassificationDateVersion>
+ <actes:Document>
+ <actes:NomFichier>980-454545011-20080408-lib-AI-1-1_1.pdf</actes:NomFichier>
+ </actes:Document>
+ <actes:Annexes actes:Nombre="0" />
+ </actes:ActeRecu>
+ <actes:ClassificationDateVersionEnCours>2006-02-08</actes:ClassificationDateVersionEnCours>
+</actes:ARActe>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<actes:RetourClassification
+ xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216
+actesv1_1.xsd">
+ <actes:DateClassification>2003-06-25</actes:DateClassification>
+ <actes:NaturesActes>
+ <actes:NatureActe actes:CodeNatureActe="1"
+ actes:Libelle="Délibérations" actes:TypeAbrege="DE" />
+ <actes:NatureActe actes:CodeNatureActe="2"
+ actes:Libelle="Arrêtés réglementaires" actes:TypeAbrege="AR" />
+ <actes:NatureActe actes:CodeNatureActe="3"
+ actes:Libelle="Arrêtés Individuels" actes:TypeAbrege="AI" />
+ <actes:NatureActe actes:CodeNatureActe="4"
+ actes:Libelle="Contrats et conventions" actes:TypeAbrege="CC" />
+ <actes:NatureActe actes:CodeNatureActe="5"
+ actes:Libelle="Documents budgétaires et financiers" actes:TypeAbrege="BF" />
+ <actes:NatureActe actes:CodeNatureActe="6"
+ actes:Libelle="Autres" actes:TypeAbrege="AU" />
+ </actes:NaturesActes>
+ <actes:Matieres>
+ <actes:Matiere1 actes:CodeMatiere="1" actes:Libelle="CommandePublique">
+ <actes:Matiere2 actes:CodeMatiere="1" actes:Libelle="Marchés publics" />
+ <actes:Matiere2 actes:CodeMatiere="2"
+ actes:Libelle="Délégations de service public">
+ <actes:Matiere3 actes:CodeMatiere="1"
+ actes:Libelle="Par type de contrat" />
+ <actes:Matiere3 actes:CodeMatiere="2"
+ actes:Libelle="Par catégorie de service public concerné">
+ <actes:Matiere4 actes:CodeMatiere="1"
+ actes:Libelle="Service public industriel et commercial" />
+ <actes:Matiere4 actes:CodeMatiere="2"
+ actes:Libelle="Service public administratif">
+ <actes:Matiere5 actes:CodeMatiere="1"
+ actes:Libelle="Enseignement public" />
+ <actes:Matiere5 actes:CodeMatiere="2"
+ actes:Libelle="Enseignement privé" />
+ </actes:Matiere4>
+ </actes:Matiere3>
+ </actes:Matiere2>
+ <actes:Matiere2 actes:CodeMatiere="3"
+ actes:Libelle="Autres types de contrats" />
+ </actes:Matiere1>
+ <actes:Matiere1 actes:CodeMatiere="2" actes:Libelle="Urbanisme">
+ <actes:Matiere2 actes:CodeMatiere="1"
+ actes:Libelle="Documents d'urbanisme" />
+ <actes:Matiere2 actes:CodeMatiere="2"
+ actes:Libelle="Autorisations ou actes relatifs à l'occupation ou à l'utilisation du sol" />
+ </actes:Matiere1>
+ <actes:Matiere1 actes:CodeMatiere="8" actes:Libelle="Autres">
+ <actes:Matiere2 actes:CodeMatiere="1"
+ actes:Libelle="Ordre de réquisition du comptable" />
+ <actes:Matiere2 actes:CodeMatiere="2" actes:Libelle="Autres" />
+ </actes:Matiere1>
+ </actes:Matieres>
+</actes:RetourClassification>
--- /dev/null
+<?xml version='1.0' encoding='UTF-8'?>
+<dataset>
+
+ <actes_natures id="1" short_descr="DE" descr="Délibérations"/>
+ <actes_natures id="2" short_descr="AR" descr="Arrêtés réglementaires"/>
+ <actes_natures id="3" short_descr="AI" descr="Arrêtés individuels"/>
+ <actes_natures id="4" short_descr="CC" descr="Contrats et conventions"/>
+ <actes_natures id="5" short_descr="BF" descr="Documents budgétaires et financiers"/>
+ <actes_natures id="6" short_descr="AU" descr="Autres"/>
+
+
+ <authority_groups id="99999" name="test" status="1"/>
+
+ <authority_group_siren id="99999" authority_group_id="99999" siren="123456789"/>
+
+
+ <authorities id="99999" authority_type_id="31" status="1"
+ name="collectivite de test" siren="123456789"
+ address="test" postal_code="1000" city="bourg-en-bresse" department="001" district="2"
+ authority_group_id="99999"
+ broadcast_email="epommate@gmail.com"
+ default_broadcast_email="epommate@gmail.com"
+ helios_ftp_password="winfield"
+ helios_ftp_login="eric"
+ helios_ftp_dest="testhelios"
+ />
+
+ <authorities id="1" status="1" name="Administrateurs"/>
+
+ <modules_authorities id="99999" module_id="1" authority_id="99999"/>
+ <modules_authorities id="99998" module_id="2" authority_id="99999"/>
+ <modules_authorities id="99997" module_id="3" authority_id="99999"/>
+
+
+ <actes_envelope_serials id="1" authority_id="99999" reset_date="2009-01-13 00:00:00.0" serial="2"/>
+
+ <users id="1" email="eric@babette.com" subject_dn="/C=Fr/ST=France/L=Lyon/O=Sigmalis/CN=Certificat admin" issuer_dn="/C=FR/ST=France/L=Lyon/O=Sigmalis/CN=autorite developpement site s2low" name="Pommateau" givenname="Eric" telephone="0681621282" role="SADM"
+ authority_id="1" status="1" certificate="-----BEGIN CERTIFICATE-----
MIICNjCCAZ8CAQIwDQYJKoZIhvcNAQEFBQAwbDELMAkGA1UEBhMCRlIxDzANBgNV
BAgTBkZyYW5jZTENMAsGA1UEBxMETHlvbjERMA8GA1UEChMIU2lnbWFsaXMxKjAo
BgNVBAMTIWF1dG9yaXRlIGRldmVsb3BwZW1lbnQgc2l0ZSBzMmxvdzAeFw0wOTAx
MTMxMzI5MTlaFw0wOTAyMTIxMzI5MTlaMFsxCzAJBgNVBAYTAkZyMQ8wDQYDVQQI
EwZGcmFuY2UxDTALBgNVBAcTBEx5b24xETAPBgNVBAoTCFNpZ21hbGlzMRkwFwYD
VQQDExBDZXJ0aWZpY2F0IGFkbWluMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
gQD1Fy2kxk1tmLfMNh+RshLhn3oUk7AjrQrx3xcu8NUdmMFHvF1nHpbZZG4/2KIx
u0BYJoaLxpRcr/gbwr/Bw9nejGhxViuC5CElEiiqqH+/10IT7PsIPxYV12O0MSsx
PqqZGdyhINaItdcrXRzNFFAoSuCehMKeD1Ltr7kFhdNvQwIDAQABMA0GCSqGSIb3
DQEBBQUAA4GBAMbKcZjboAzTC/AyTwnotvYYeNjIhtcFRXcOISpzkd2RjeY0Qz3d
tbZqX+7bOS4Rdf3jlM3dUtorUpGTCNw6APR4YwnEdeRTqm9U0GgSrXM0crZ8oI2Z
BuK2OgNVxReLsLEFYopAEPcCjG0PpTk5GGaFdC8t5OqiuWd8iG0Pq81e
-----END CERTIFICATE-----
" cert_not_before="2009-01-13 14:29:19.0" cert_not_after="2009-02-12 14:29:19.0" cert_serial="2"
+ authority_group_id="99999"/>
+
+ <users id="99999" email="eric@babette.com" subject_dn="/C=FR/ST=France/L=Lyon/O=Internet Widgits Pty Ltd/OU=utilisateur test s2low/CN=utilisateur test s2low"
+ issuer_dn="/C=FR/ST=France/L=Lyon/O=Sigmalis/CN=autorite developpement site s2low"
+ name="Utilisateur" givenname="acte" role="USER"
+ authority_id="99999"
+ status="1"
+ certificate="-----BEGIN CERTIFICATE-----
MIICbjCCAdcCAQMwDQYJKoZIhvcNAQEFBQAwbDELMAkGA1UEBhMCRlIxDzANBgNV
BAgTBkZyYW5jZTENMAsGA1UEBxMETHlvbjERMA8GA1UEChMIU2lnbWFsaXMxKjAo
BgNVBAMTIWF1dG9yaXRlIGRldmVsb3BwZW1lbnQgc2l0ZSBzMmxvdzAeFw0wOTAx
MTMxNDE0MTZaFw0wOTAyMTIxNDE0MTZaMIGSMQswCQYDVQQGEwJGUjEPMA0GA1UE
CBMGRnJhbmNlMQ0wCwYDVQQHEwRMeW9uMSEwHwYDVQQKExhJbnRlcm5ldCBXaWRn
aXRzIFB0eSBMdGQxHzAdBgNVBAsTFnV0aWxpc2F0ZXVyIHRlc3QgczJsb3cxHzAd
BgNVBAMTFnV0aWxpc2F0ZXVyIHRlc3QgczJsb3cwgZ8wDQYJKoZIhvcNAQEBBQAD
gY0AMIGJAoGBANppvIt7PmCzn5FAIAXNoQ+VQpK52XhY9fjFMLneQxokddgk7gCz
+UBiF8RPKNjd0GbJkwq443TFeY+3jM/bKSxPLsdfvWwtfKuZXTkVfHXZLxpVPQJi
fLISt6b/r9ZsDx1tukUjZ/1eB/D+laiKSgfzpasKI81f4CpGd61eGLtlAgMBAAEw
DQYJKoZIhvcNAQEFBQADgYEA7quyX7I0zduCWI5Bjjn7eiM0+vZugO3ucJU78hkz
ktf5SPbKriI6IfQJn1OC0R9L3UeOnlccyCD8k497BRGI5SPmMKmwbjRVOygHAwvu
5gfwQ2Db65L2E9TFopfSnLkgPBoVkSR+MtPANlQAYNRKWUqesmQytTsT8cM4F5/K
0iM=
-----END CERTIFICATE-----
"
+ cert_not_before="2009-01-13 15:14:16.0" cert_not_after="2009-02-12 15:14:16.0" cert_serial="3"/>
+
+ <users_perms id="99999" module_id="1" user_id="99999" perm="RW"/>
+ <users_perms id="99998" module_id="2" user_id="99999" perm="RW"/>
+ <users_perms id="99997" module_id="3" user_id="99999" perm="RW"/>
+
+ <actes_envelopes id="99999" user_id="99999" submission_date="2009-01-13 15:31:47.0"
+ siren="123456789" department="001" district="2" authority_type_code="31"
+ name="acte Utilisateur" email="epommate@gmail.com"
+ file_path="123456789/adl-TACT--123456789--20090113-1.tar.gz" file_size="665"
+ return_mail="eric@babette.com"/>
+
+ <actes_envelopes id="99998" user_id="99999" submission_date="2009-01-15 13:14:19.0"
+ siren="123456789" department="001" district="2"
+ authority_type_code="31" name="acte Utilisateur" email="eric@babette.com"
+ file_path="123456789/8789789/adl-TACT--123456789--20090115-1.tar.gz"
+ file_size="40654"
+ return_mail="epommate@babette.com"/>
+
+ <actes_envelopes id="99997" user_id="99999" submission_date="2009-01-15 13:14:19.0"
+ siren="123456789" department="001" district="2"
+ authority_type_code="31" name="acte Utilisateur" email="eric@babette.com"
+ file_path="123456789/8789789/adl-TACT--123456789--20090115-1.tar.gz"
+ file_size="40654"
+ return_mail="eric@babette.com"/>
+
+
+ <actes_transactions id="99997" envelope_id="99997" nature_code="6" type="1"
+ nature_descr="Autres" subject="test" number="8789780"
+ classification="1.2.2.1" classification_date="2003-06-25 00:00:00.0"
+ decision_date="2009-01-07 00:00:00.0" broadcasted="false"
+ broadcast_emails="epommate@babette.com,eric@babette.com"
+ broadcast_send_sources="1"
+ />
+
+ <actes_transactions id="99998" envelope_id="99998" nature_code="6" type="1"
+ nature_descr="Autres" subject="test" number="8789789"
+ classification="1.2.2.1" classification_date="2003-06-25 00:00:00.0"
+ decision_date="2009-01-07 00:00:00.0" broadcasted="false"/>
+
+ <actes_transactions id="99999" envelope_id="99999" type="7"/>
+
+
+
+
+ <actes_included_files id="99998" envelope_id="99999" transaction_id="99999"
+ filename="001-123456789----7-1_0.xml" filetype="text/xml"
+ filesize="414" signature="" posted_filename=""/>
+
+ <actes_included_files id="99999" envelope_id="99999"
+ filename="TACT--123456789--20090113-1.xml" filetype="text/xml" filesize="988"/>
+
+
+ <actes_included_files id="99997" envelope_id="99998"
+ filename="TACT--123456789--20090115-1.xml" filetype="text/xml" filesize="1005"/>
+
+ <actes_included_files id="99996" envelope_id="99998" transaction_id="99998"
+ filename="001-123456789-20090107-8789789-AU-1-1_0.xml" filetype="text/xml"
+ filesize="856" signature="" posted_filename=""/>
+
+ <actes_included_files id="99995" envelope_id="99998" transaction_id="99998"
+ filename="001-123456789-20090107-8789789-AU-1-1_1.pdf" filetype="application/pdf"
+ filesize="41963" signature="" posted_filename="test.pdf"/>
+
+ <actes_included_files id="99994" envelope_id="99997"
+ filename="TACT--123456789--20090115-1.xml" filetype="text/xml" filesize="1005"/>
+
+ <actes_included_files id="99993" envelope_id="99997" transaction_id="99997"
+ filename="001-123456789-20090107-8789789-AU-1-1_0.xml" filetype="text/xml"
+ filesize="856" signature="" posted_filename=""/>
+
+ <actes_included_files id="99992" envelope_id="99997" transaction_id="99997"
+ filename="001-123456789-20090107-8789789-AU-1-1_1.pdf" filetype="application/pdf"
+ filesize="41963" signature="" posted_filename="test.pdf"/>
+
+
+ <actes_transactions_workflow id="99999" transaction_id="99999"
+ status_id="1" date="2009-01-13 15:31:47.0" message="Dépôt initial"/>
+
+
+
+
+ <actes_transactions_workflow id="99998" transaction_id="99998" status_id="1"
+ date="2009-01-15 13:14:19.0" message="Dépôt initial"/>
+
+
+ <actes_transactions_workflow id="99997" transaction_id="99997" status_id="1"
+ date="2009-01-15 13:14:19.0" message="Dépôt initial"/>
+
+ <actes_transactions_workflow id="99996" transaction_id="99997" status_id="4"
+ date="2009-01-15 13:14:25.0" message="Recu par le MIAT"/>
+
+
+ <actes_classification_requests id="99999" request_date="2009-01-13 15:31:47.0" requested_by="99999" />
+
+ <actes_classification_codes id="155" authority_id="99999" level="1" code="1" description="CommandePublique" />
+ <actes_classification_codes id="156" authority_id="99999" level="2" code="1" parent_id="155" description="Marchés publics"/>
+ <actes_classification_codes id="157" authority_id="99999" level="2" code="2" parent_id="155" description="Délégations de service public"/>
+ <actes_classification_codes id="158" authority_id="99999" level="3" code="1" parent_id="157" description="Par type de contrat"/>
+ <actes_classification_codes id="159" authority_id="99999" level="3" code="2" parent_id="157" description="Par catégorie de service public concerné"/>
+ <actes_classification_codes id="160" authority_id="99999" level="4" code="1" parent_id="159" description="Service public industriel et commercial"/>
+ <actes_classification_codes id="161" authority_id="99999" level="4" code="2" parent_id="159" description="Service public administratif"/>
+ <actes_classification_codes id="162" authority_id="99999" level="5" code="1" parent_id="161" description="Enseignement public"/>
+ <actes_classification_codes id="163" authority_id="99999" level="5" code="2" parent_id="161" description="Enseignement privé"/>
+ <actes_classification_codes id="164" authority_id="99999" level="2" code="3" parent_id="155" description="Autres types de contrats"/>
+ <actes_classification_codes id="165" authority_id="99999" level="1" code="2" description="Urbanisme"/>
+ <actes_classification_codes id="166" authority_id="99999" level="2" code="1" parent_id="165" description="Documents d'urbanisme"/>
+ <actes_classification_codes id="167" authority_id="99999" level="2" code="2" parent_id="165" description="Autorisations ou actes relatifs à l'occupation ou à l'utilisation du sol"/>
+ <actes_classification_codes id="168" authority_id="99999" level="1" code="8" description="Autres"/>
+ <actes_classification_codes id="169" authority_id="99999" level="2" code="1" parent_id="168" description="Ordre de réquisition du comptable"/>
+ <actes_classification_codes id="170" authority_id="99999" level="2" code="2" parent_id="168" description="Autres"/>
+
+ <logs id='1' date='2009-01-13 15:31:47.0' severity='5' module='actes'
+ issuer='USER' user_id="99999" visibility='' message='test' timestamp='test' />
+
+ <actes_transmission_windows id='99999' rate_limit='1000' />
+
+ <actes_transmission_window_hours id='99999'
+ transmission_window_id='99999'
+ window_begin='1970-01-01'
+ window_end='2032-01-01'
+ consumed='0' />
+
+ <helios_transactions id='99999' user_id='99999' filename='PES_Exemple_Flux_Aller.xml'
+ file_size='14677' siren='123456789' sha1='b11ef5c33152b4062b3ddf38946a6348fce9383f' />
+
+ <helios_transactions_workflow id='99999' transaction_id='99999' status_id='1' date='2009-11-06 10:00:00.0' message='Fichier bien reçu par la plate-forme Helios' />
+
+
+</dataset>
\ No newline at end of file
--- /dev/null
+ -- nécessaire car les drivers JDBC et Pg ne sont pas d'accord sur le "case sensitive" du nom des tables ...
+create view "ACTES_ENVELOPES" as select * from actes_envelopes;
+
+create view "ACTES_TRANSACTIONS" as select * from actes_envelopes;
+
+CREATE VIEW "ACTES_TRANSACTIONS" ("ID",
+ "ENVELOPE_ID",
+ "TYPE",
+ "RELATED_TRANSACTION_ID",
+ "NATURE_CODE",
+ "NATURE_DESCR",
+ "TITLE",
+ "SUBJECT",
+ "NUMBER",
+ "CLASSIFICATION",
+ "CLASSIFICATION_DATE",
+ "DECISION_DATE",
+ "UNIQUE_ID",
+ "ARCHIVE_URL",
+ "BROADCAST_EMAILS",
+ "BROADCAST_SEND_SOURCES",
+ "BROADCASTED") as select * from actes_transactions;
+
+CREATE VIEW "ACTES_TRANSACTIONS_WORKFLOW"(
+ "ID", "TRANSACTION_ID","STATUS_ID" ,"DATE","MESSAGE", "FLUX_RETOUR"
+) as select * from actes_transactions_workflow;
+
+
+CREATE VIEW "ACTES_CLASSIFICATION_REQUESTS"(
+ "ID","REQUEST_DATE","REQUESTED_BY","VERSION_DATE","XML_DATA"
+) as select * FROM actes_classification_requests;
+
+CREATE VIEW "USERS" (
+ "ID" ,
+ "EMAIL" ,
+ "SUBJECT_DN" ,
+ "ISSUER_DN" ,
+ "NAME" ,
+ "GIVENNAME" ,
+ "TELEPHONE" ,
+ "ROLE" ,
+ "AUTHORITY_ID" ,
+ "STATUS" ,
+ "CERTIFICATE" ,
+ "CERT_NOT_BEFORE",
+ "CERT_NOT_AFTER" ,
+ "CERT_SERIAL" ,
+ "AUTHORITY_GROUP_ID"
+) as select * FROM users;
+
+
+CREATE VIEW "AUTHORITIES" (
+ "ID",
+ "AUTHORITY_TYPE_ID",
+ "STATUS",
+ "NAME",
+ "EMAIL",
+ "SIREN",
+ "AGREEMENT",
+ "ADDRESS",
+ "POSTAL_CODE",
+ "CITY",
+ "TELEPHONE",
+ "FAX",
+ "DEPARTMENT",
+ "DISTRICT",
+ "AUTHORITY_GROUP_ID",
+ "BROADCAST_EMAIL",
+ "DEFAULT_BROADCAST_EMAIL",
+ "HELIOS_FTP_PASSWORD",
+ "HELIOS_FTP_LOGIN",
+ "HELIOS_FTP_DEST"
+) as select * FROM authorities;
+
+CREATE VIEW "AUTHORITY_GROUP_SIREN" ( "ID","AUTHORITY_GROUP_ID","SIREN"
+) as select * FROM authority_group_siren;
+
+
+CREATE VIEW "USERS_PERMS" ("ID","MODULE_ID","USER_ID","PERM"
+) as select * FROM users_perms;
+
+
+
+CREATE VIEW "MODULES_AUTHORITIES" (
+ "ID",
+ "MODULE_ID",
+ "AUTHORITY_ID"
+) as select * FROM modules_authorities;
+
+
+CREATE VIEW "ACTES_ENVELOPE_SERIALS" (
+ "ID",
+ "AUTHORITY_ID",
+ "RESET_DATE",
+ "SERIAL"
+) as select * FROM actes_envelope_serials;
+
+CREATE VIEW "AUTHORITY_GROUPS" (
+ "ID",
+ "NAME",
+ "STATUS"
+) as select * FROM authority_groups;
+
+CREATE VIEW "ACTES_NATURES" (
+ "ID","SHORT_DESCR","DESCR"
+) as select * FROM actes_natures ;
+
+CREATE VIEW "ACTES_CLASSIFICATION_CODES" (
+ "ID",
+ "AUTHORITY_ID",
+ "LEVEL",
+ "CODE",
+ "PARENT_ID",
+ "DESCRIPTION"
+) as select * FROM actes_classification_codes;
+
+CREATE VIEW "ACTES_INCLUDED_FILES" (
+ "ID" ,
+ "ENVELOPE_ID",
+ "TRANSACTION_ID",
+ "FILENAME",
+ "FILETYPE",
+ "FILESIZE",
+ "SIGNATURE",
+ "POSTED_FILENAME"
+) as select * FROM actes_included_files;
+
+CREATE VIEW "LOGS" (
+ "ID" ,
+ "DATE",
+ "SEVERITY",
+ "MODULE",
+ "ISSUER",
+ "USER_ID",
+ "VISIBILITY",
+ "MESSAGE",
+ "TIMESTAMP"
+) as select * FROM logs;
+
+CREATE VIEW "ACTES_TRANSMISSION_WINDOWS" (
+ "ID",
+ "RATE_LIMIT"
+) as select * FROM actes_transmission_windows;
+
+CREATE VIEW "ACTES_TRANSMISSION_WINDOW_HOURS" (
+ "ID",
+ "TRANSMISSION_WINDOW_ID",
+ "WINDOW_BEGIN",
+ "WINDOW_END",
+ "CONSUMED"
+) as select * FROM actes_transmission_window_hours;
+
+
+CREATE VIEW "HELIOS_TRANSACTIONS" (
+ "ID",
+ "USER_ID",
+ "FILENAME",
+ "FILE_SIZE",
+ "SIREN",
+ "SHA1",
+ "WARNING_SENT",
+ "URL_ARCHIVAGE",
+ "SUBMISSION_DATE",
+ "XML_NOMFIC",
+ "ACQUIT_FILENAME",
+ "COMPLETE_NAME"
+) as select * FROM helios_transactions
+
+CREATE VIEW "HELIOS_TRANSACTIONS_WORKFLOW" (
+ "ID",
+ "TRANSACTION_ID",
+ "STATUS_ID",
+ "DATE",
+ "MESSAGE"
+) as select * FROM helios_transactions_workflow;
+
--- /dev/null
+<actes:ARActe xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216" xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd" actes:DateReception="2008-12-31" actes:IDActe="001-123456789-20090107-8789789-AU">
+ <actes:ActeRecu actes:Date="2009-01-07" actes:NumeroInterne="8789789" actes:CodeNatureActe="6">
+ <actes:CodeMatiere1 actes:CodeMatiere="1"/>
+ <actes:CodeMatiere2 actes:CodeMatiere="2"/>
+ <actes:CodeMatiere3 actes:CodeMatiere="2"/>
+ <actes:CodeMatiere4 actes:CodeMatiere="1"/>
+ <actes:Objet>ggg</actes:Objet>
+ <actes:ClassificationDateVersion>2003-06-25</actes:ClassificationDateVersion>
+ <actes:Document>
+ <actes:NomFichier>001-123456789-20090107-8789789-AU-1-1_1.pdf</actes:NomFichier>
+ </actes:Document>
+ <actes:Annexes actes:Nombre="0"/>
+ </actes:ActeRecu>
+ <actes:ClassificationDateVersionEnCours>2008-12-31</actes:ClassificationDateVersionEnCours>
+</actes:ARActe>
\ No newline at end of file
--- /dev/null
+<actes:ARActe xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216" xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd" actes:DateReception="2008-12-31" actes:IDActe="069-999888777-20070411-PK_20070411_1-AR">
+ <actes:ActeRecu actes:Date="2007-04-11" actes:NumeroInterne="PK_20070411_1" actes:CodeNatureActe="2">
+ <actes:CodeMatiere1 actes:CodeMatiere="1"/>
+ <actes:CodeMatiere2 actes:CodeMatiere="2"/>
+ <actes:CodeMatiere3 actes:CodeMatiere="2"/>
+ <actes:CodeMatiere4 actes:CodeMatiere="2"/>
+ <actes:CodeMatiere5 actes:CodeMatiere="1"/>
+ <actes:Objet>fermeture du lycee...</actes:Objet>
+ <actes:ClassificationDateVersion>2003-06-25</actes:ClassificationDateVersion>
+ <actes:Document>
+ <actes:NomFichier>069-999888777-20070411-PK_20070411_1-AR-1-1_1.pdf</actes:NomFichier>
+ </actes:Document>
+ <actes:Annexes actes:Nombre="0"/>
+ </actes:ActeRecu>
+ <actes:ClassificationDateVersionEnCours>2008-12-31</actes:ClassificationDateVersionEnCours>
+</actes:ARActe>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<actes:EnveloppeCLMISILL
+ xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd">
+ <actes:Emetteur>
+ <actes:IDCL insee:SIREN="999888777" actes:Departement="069"
+ actes:Arrondissement="1" actes:Nature="11" />
+ <actes:Referent>
+ <actes:Nom>Lino Ventura</actes:Nom>
+ <actes:Telephone></actes:Telephone>
+ <actes:Email>lventura@picardie.fr</actes:Email>
+ </actes:Referent>
+ </actes:Emetteur>
+ <actes:AdressesRetour>
+ <actes:Email>tedetis@demo.local.s2low.org</actes:Email>
+ <actes:Email>lventura@picardie.fr</actes:Email>
+ <actes:Email>agent-dept-assemblees@picardie.fr</actes:Email>
+ </actes:AdressesRetour>
+ <actes:FormulairesEnvoyes>
+ <actes:Formulaire>
+ <actes:NomFichier>069-999888777-20070411-PK_20070411_1-AR-1-2_0.xml</actes:NomFichier>
+ </actes:Formulaire>
+ </actes:FormulairesEnvoyes>
+</actes:EnveloppeCLMISILL>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<actes:EnveloppeMISILLCL xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd" xmlns:insee="http://xml.insee.fr/schema" xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.interieur.gouv.fr/ACTES#v1.1-20040216">
+ <actes:Emetteur>
+ <actes:IDSousPref actes:Departement="013" actes:Arrondissement="3" xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"/>
+ </actes:Emetteur>
+ <actes:FormulairesEnvoyes><actes:Formulaire><actes:NomFichier>013-211301031-20100706-2010_536-AR-1-2_4302.xml</actes:NomFichier></actes:Formulaire></actes:FormulairesEnvoyes><actes:Destinataire insee:SIREN="211301031" xmlns:insee="http://xml.insee.fr/schema"/></actes:EnveloppeMISILLCL>
+
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<actes:ARReponseRejetLettreObservations
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd"
+ actes:DateReception="2008-07-09" xmlns:insee="http://xml.insee.fr/schema"
+ xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <actes:InfosCourrierPref actes:IDActe="980-454545011-20080507-BEBE13-AI"
+ actes:DateCourrierPref="2008-07-09" />
+</actes:ARReponseRejetLettreObservations>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<actes:EnveloppeMISILLCL
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd"
+ xmlns:insee="http://xml.insee.fr/schema" xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <actes:Emetteur>
+ <actes:IDSousPref actes:Departement="980"
+ actes:Arrondissement="1" />
+ </actes:Emetteur>
+ <actes:FormulairesEnvoyes>
+ <actes:Formulaire>
+ <actes:NomFichier>980-454545011-20080709-BEBE13-AI-4-5_8.xml</actes:NomFichier>
+ </actes:Formulaire>
+ </actes:FormulairesEnvoyes>
+ <actes:Destinataire insee:SIREN="454545011" />
+</actes:EnveloppeMISILLCL>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<actes:LettreObservations
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd"
+ actes:IDActe="980-454545011-20080507-BEBE13-AI" actes:DateCourrierPref="2008-07-09"
+ xmlns:insee="http://xml.insee.fr/schema" xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <actes:Motif>aaaaaaaaaa</actes:Motif>
+ <actes:Document>
+ <actes:NomFichier>980-454545011-20080709-BEBE13-AI-4-1_6.pdf</actes:NomFichier>
+ </actes:Document>
+</actes:LettreObservations>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<actes:EnveloppeMISILLCL
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd"
+ xmlns:insee="http://xml.insee.fr/schema" xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <actes:Emetteur>
+ <actes:IDSousPref actes:Departement="980"
+ actes:Arrondissement="1" />
+ </actes:Emetteur>
+ <actes:FormulairesEnvoyes>
+ <actes:Formulaire>
+ <actes:NomFichier>980-454545011-20080709-BEBE13-AI-4-1_7.xml</actes:NomFichier>
+ </actes:Formulaire>
+ </actes:FormulairesEnvoyes>
+ <actes:Destinataire insee:SIREN="454545011" />
+</actes:EnveloppeMISILLCL>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<actes:Acte xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+
+ actes:Date="2010-06-30" actes:NumeroInterne="39316"
+ actes:CodeNatureActe="1">
+ <actes:CodeMatiere1 actes:CodeMatiere="1"/>
+ <actes:CodeMatiere2 actes:CodeMatiere="1"/>
+ <actes:Objet><![CDATA[test TN]]></actes:Objet>
+ <actes:ClassificationDateVersion>2009-02-19</actes:ClassificationDateVersion>
+ <actes:Document>
+ <actes:NomFichier>034-223400011-20100630-39316-DE-1-1_1.pdf</actes:NomFichier>
+ </actes:Document>
+ <actes:Annexes actes:Nombre="0"/>
+ </actes:Acte>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<actes:Acte xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd"
+ actes:Date="2007-04-11" actes:NumeroInterne="PK_20070411_1"
+ actes:CodeNatureActe="2">
+ <actes:CodeMatiere1 actes:CodeMatiere="1" />
+ <actes:CodeMatiere2 actes:CodeMatiere="2" />
+ <actes:CodeMatiere3 actes:CodeMatiere="2" />
+ <actes:CodeMatiere4 actes:CodeMatiere="2" />
+ <actes:CodeMatiere5 actes:CodeMatiere="1" />
+ <actes:Objet>fermeture du lycee...</actes:Objet>
+ <actes:ClassificationDateVersion>2003-06-25</actes:ClassificationDateVersion>
+ <actes:Document>
+ <actes:NomFichier>069-999888777-20070411-PK_20070411_1-AR-1-1_1.pdf</actes:NomFichier>
+ </actes:Document>
+ <actes:Annexes actes:Nombre="0">
+ </actes:Annexes>
+</actes:Acte>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<actes:EnveloppeCLMISILL
+ xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd">
+ <actes:Emetteur>
+ <actes:IDCL insee:SIREN="999888777" actes:Departement="069"
+ actes:Arrondissement="1" actes:Nature="11" />
+ <actes:Referent>
+ <actes:Nom>Lino Ventura</actes:Nom>
+ <actes:Telephone></actes:Telephone>
+ <actes:Email>lventura@picardie.fr</actes:Email>
+ </actes:Referent>
+ </actes:Emetteur>
+ <actes:AdressesRetour>
+ <actes:Email>eric@babette.com</actes:Email>
+ <actes:Email>epommate@gmail.com</actes:Email>
+ </actes:AdressesRetour>
+ <actes:FormulairesEnvoyes>
+ <actes:Formulaire>
+ <actes:NomFichier>069-999888777-20070411-PK_20070411_1-AR-1-1_0.xml</actes:NomFichier>
+ </actes:Formulaire>
+ </actes:FormulairesEnvoyes>
+</actes:EnveloppeCLMISILL>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<actes:Annulation xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd"
+ actes:IDActe="069-213200579-20080709-2008_05__3-DE" />
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<actes:ARActe
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd"
+ actes:IDActe="980-454545011-20080507-BEBE1-AI" actes:DateReception="2008-07-10"
+ xmlns:insee="http://xml.insee.fr/schema" xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <actes:ActeRecu actes:Date="2008-05-07"
+ actes:NumeroInterne="BEBE1" actes:CodeNatureActe="3">
+ <actes:CodeMatiere1 actes:CodeMatiere="4" />
+ <actes:CodeMatiere2 actes:CodeMatiere="1" />
+ <actes:Objet>TEST_NJO(0)</actes:Objet>
+ <actes:ClassificationDateVersion>2010-01-01</actes:ClassificationDateVersion>
+ <actes:Document>
+ <actes:NomFichier>980-454545011-20080408-lib-AI-1-1_1.pdf</actes:NomFichier>
+ </actes:Document>
+ <actes:Annexes actes:Nombre="0" />
+ </actes:ActeRecu>
+ <actes:ClassificationDateVersionEnCours>2006-02-08</actes:ClassificationDateVersionEnCours>
+</actes:ARActe>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<actes:EnveloppeMISILLCL
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd"
+ xmlns:insee="http://xml.insee.fr/schema" xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <actes:Emetteur>
+ <actes:IDSousPref actes:Departement="980"
+ actes:Arrondissement="1" />
+ </actes:Emetteur>
+ <actes:FormulairesEnvoyes>
+ <actes:Formulaire>
+ <actes:NomFichier>980-454545011-20080710-BEBE1-AI-1-2_5.xml</actes:NomFichier>
+ </actes:Formulaire>
+ </actes:FormulairesEnvoyes>
+ <actes:Destinataire insee:SIREN="454545011" />
+</actes:EnveloppeMISILLCL>
\ No newline at end of file
--- /dev/null
+<actes:DefereTA xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216" xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd" actes:IDActe="001-123456789-20090107-8789789-AU">
+ <actes:DateDepot>2009-01-07</actes:DateDepot>
+ <actes:NatureIllegalite>NATURE_TEST</actes:NatureIllegalite>
+ <actes:PiecesJointes>
+ <actes:PieceJointe>
+ <actes:NomFichier>001-123456789-20090107-8789789-AU-5-1_1.pdf</actes:NomFichier>
+ </actes:PieceJointe>
+ </actes:PiecesJointes>
+</actes:DefereTA>
\ No newline at end of file
--- /dev/null
+<actes:DefereTA xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216" xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd" actes:IDActe="001-123456789-20090107-8789789-AU">
+ <actes:DateDepot>2009-01-07</actes:DateDepot>
+ <actes:NatureIllegalite>NATURE_TEST</actes:NatureIllegalite>
+ <actes:PiecesJointes>
+ <actes:PieceJointe>
+ <actes:NomFichier>001-123456789-20090107-8789789-AU-5-1_1.pdf</actes:NomFichier>
+ </actes:PieceJointe>
+ </actes:PiecesJointes>
+</actes:DefereTA>
\ No newline at end of file
--- /dev/null
+<actes:EnveloppeMISILLCL xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216" xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd">
+ <actes:Emetteur>
+ <actes:IDSousPref actes:Departement="001" actes:Arrondissement="1" />
+ </actes:Emetteur>
+ <actes:FormulairesEnvoyes>
+ <actes:Formulaire>
+ <actes:NomFichier>001-123456789-20090107-8789789-AU-5-1_0.xml</actes:NomFichier>
+ </actes:Formulaire>
+ </actes:FormulairesEnvoyes>
+ <actes:Destinataire insee:SIREN="123456789" />
+</actes:EnveloppeMISILLCL>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<actes:DefereTA
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd"
+ actes:IDActe="980-454545011-20080507-BEBE13-AI" xmlns:insee="http://xml.insee.fr/schema"
+ xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <actes:DateDepot>2008-07-09</actes:DateDepot>
+ <actes:NatureIllegalite>bbbbbbbbbbbbbb</actes:NatureIllegalite>
+ <actes:PiecesJointes>
+ <actes:PieceJointe>
+ <actes:NomFichier>980-454545011-20080709-BEBE13-AI-5-1_9.pdf</actes:NomFichier>
+ </actes:PieceJointe>
+ <actes:PieceJointe>
+ <actes:NomFichier>980-454545011-20080709-BEBE13-AI-5-1_10.pdf</actes:NomFichier>
+ </actes:PieceJointe>
+ </actes:PiecesJointes>
+</actes:DefereTA>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<actes:EnveloppeMISILLCL
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd"
+ xmlns:insee="http://xml.insee.fr/schema" xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <actes:Emetteur>
+ <actes:IDSousPref actes:Departement="980"
+ actes:Arrondissement="1" />
+ </actes:Emetteur>
+ <actes:FormulairesEnvoyes>
+ <actes:Formulaire>
+ <actes:NomFichier>980-454545011-20080709-BEBE13-AI-5-1_11.xml</actes:NomFichier>
+ </actes:Formulaire>
+ </actes:FormulairesEnvoyes>
+ <actes:Destinataire insee:SIREN="454545011" />
+</actes:EnveloppeMISILLCL>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<actes:DemandeClassification
+ xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216
+actesv1_1.xsd">
+ <actes:DateClassification>2003-06-10</actes:DateClassification>
+</actes:DemandeClassification>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<actes:RetourClassification
+ xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216
+actesv1_1.xsd">
+ <actes:DateClassification>2003-06-25</actes:DateClassification>
+ <actes:NaturesActes>
+ <actes:NatureActe actes:CodeNatureActe="1"
+ actes:Libelle="Délibérations" actes:TypeAbrege="DE" />
+ <actes:NatureActe actes:CodeNatureActe="2"
+ actes:Libelle="Arrêtés réglementaires" actes:TypeAbrege="AR" />
+ <actes:NatureActe actes:CodeNatureActe="3"
+ actes:Libelle="Arrêtés Individuels" actes:TypeAbrege="AI" />
+ <actes:NatureActe actes:CodeNatureActe="4"
+ actes:Libelle="Contrats et conventions" actes:TypeAbrege="CC" />
+ <actes:NatureActe actes:CodeNatureActe="5"
+ actes:Libelle="Documents budgétaires et financiers" actes:TypeAbrege="BF" />
+ <actes:NatureActe actes:CodeNatureActe="6"
+ actes:Libelle="Autres" actes:TypeAbrege="AU" />
+ </actes:NaturesActes>
+ <actes:Matieres>
+ <actes:Matiere1 actes:CodeMatiere="1" actes:Libelle="CommandePublique">
+ <actes:Matiere2 actes:CodeMatiere="1" actes:Libelle="Marchés publics" />
+ <actes:Matiere2 actes:CodeMatiere="2"
+ actes:Libelle="Délégations de service public">
+ <actes:Matiere3 actes:CodeMatiere="1"
+ actes:Libelle="Par type de contrat" />
+ <actes:Matiere3 actes:CodeMatiere="2"
+ actes:Libelle="Par catégorie de service public concerné">
+ <actes:Matiere4 actes:CodeMatiere="1"
+ actes:Libelle="Service public industriel et commercial" />
+ <actes:Matiere4 actes:CodeMatiere="2"
+ actes:Libelle="Service public administratif">
+ <actes:Matiere5 actes:CodeMatiere="1"
+ actes:Libelle="Enseignement public" />
+ <actes:Matiere5 actes:CodeMatiere="2"
+ actes:Libelle="Enseignement privé" />
+ </actes:Matiere4>
+ </actes:Matiere3>
+ </actes:Matiere2>
+ <actes:Matiere2 actes:CodeMatiere="3"
+ actes:Libelle="Autres types de contrats" />
+ </actes:Matiere1>
+ <actes:Matiere1 actes:CodeMatiere="2" actes:Libelle="Urbanisme">
+ <actes:Matiere2 actes:CodeMatiere="1"
+ actes:Libelle="Documents d'urbanisme" />
+ <actes:Matiere2 actes:CodeMatiere="2"
+ actes:Libelle="Autorisations ou actes relatifs à l'occupation ou à l'utilisation du sol" />
+ </actes:Matiere1>
+ <actes:Matiere1 actes:CodeMatiere="8" actes:Libelle="Autres">
+ <actes:Matiere2 actes:CodeMatiere="1"
+ actes:Libelle="Ordre de réquisition du comptable" />
+ <actes:Matiere2 actes:CodeMatiere="2" actes:Libelle="Autres" />
+ </actes:Matiere1>
+ </actes:Matieres>
+</actes:RetourClassification>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<actes:ReponseClassificationSansChangement
+ xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216
+actesv1_1.xsd">
+ <actes:DateClassification>2003-06-10</actes:DateClassification>
+</actes:ReponseClassificationSansChangement>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<actes:ARDemandePieceComplementaire
+ xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216
+actesv1_1.xsd"
+ actes:DateCourrierPref="2003-08-01" actes:IDActe="035-123456789-20030714-9999aaa-AI" />
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<actes:ARPieceComplementaire
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd"
+ actes:DateReception="2008-07-02" xmlns:insee="http://xml.insee.fr/schema"
+ xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <actes:InfosCourrierPref actes:IDActe="980-454545011-20080507-BEBE4-AI"
+ actes:DateCourrierPref="2008-07-02" />
+</actes:ARPieceComplementaire>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<actes:EnveloppeMISILLCL
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd"
+ xmlns:insee="http://xml.insee.fr/schema" xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <actes:Emetteur>
+ <actes:IDSousPref actes:Departement="980"
+ actes:Arrondissement="1" />
+ </actes:Emetteur>
+ <actes:FormulairesEnvoyes>
+ <actes:Formulaire>
+ <actes:NomFichier>980-454545011-20080702-BEBE4-AI-3-5_49.xml</actes:NomFichier>
+ </actes:Formulaire>
+ </actes:FormulairesEnvoyes>
+ <actes:Destinataire insee:SIREN="454545011" />
+</actes:EnveloppeMISILLCL>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<actes:DemandePieceComplementaire
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd"
+ actes:IDActe="980-454545011-20080702-BEBE5-AI" actes:DateCourrierPref="2008-07-02"
+ xmlns:insee="http://xml.insee.fr/schema" xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <actes:DescriptionPieces>rapport du représentant légal de la
+ commune</actes:DescriptionPieces>
+ <actes:Document>
+ <actes:NomFichier>980-454545011-20080702-BEBE5-AI-3-1_52.pdf</actes:NomFichier>
+ </actes:Document>
+</actes:DemandePieceComplementaire>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<actes:EnveloppeMISILLCL
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd"
+ xmlns:insee="http://xml.insee.fr/schema" xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <actes:Emetteur>
+ <actes:IDSousPref actes:Departement="980"
+ actes:Arrondissement="1" />
+ </actes:Emetteur>
+ <actes:FormulairesEnvoyes>
+ <actes:Formulaire>
+ <actes:NomFichier>980-454545011-20080702-BEBE5-AI-3-1_53.xml</actes:NomFichier>
+ </actes:Formulaire>
+ </actes:FormulairesEnvoyes>
+ <actes:Destinataire insee:SIREN="454545011" />
+</actes:EnveloppeMISILLCL>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<actes:DemandeClassification
+ xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd">
+ <actes:DateClassification>1970-01-01</actes:DateClassification>
+</actes:DemandeClassification>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<actes:EnveloppeCLMISILL
+ xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd">
+ <actes:Emetteur>
+ <actes:IDCL insee:SIREN="999888777" actes:Departement="069"
+ actes:Arrondissement="1" actes:Nature="11" />
+ <actes:Referent>
+ <actes:Nom>Lino Ventura</actes:Nom>
+ <actes:Telephone></actes:Telephone>
+ <actes:Email>lventura@picardie.fr</actes:Email>
+ </actes:Referent>
+ </actes:Emetteur>
+ <actes:AdressesRetour>
+ <actes:Email>tedetis@demo.local.s2low.org</actes:Email>
+ <actes:Email>lventura@picardie.fr</actes:Email>
+ <actes:Email>agent-dept-assemblees@picardie.fr</actes:Email>
+ </actes:AdressesRetour>
+ <actes:FormulairesEnvoyes>
+ <actes:Formulaire>
+ <actes:NomFichier>069-999888777----7-1_0.xml</actes:NomFichier>
+ </actes:Formulaire>
+ </actes:FormulairesEnvoyes>
+</actes:EnveloppeCLMISILL>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<actes:Annulation xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd"
+ actes:IDActe="069-213200579-20080709-2008_05__3-DE" />
--- /dev/null
+Ceci est un fichier
\ No newline at end of file
--- /dev/null
+Ceci est un autre fichier
\ No newline at end of file
--- /dev/null
+Ceci est un troisième fichier
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<n:PES_Aller xmlns:n="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller" xmlns:acta="http://www.minefi.gouv.fr/cp/helios/pes_v2/etatactif/r0/aller" xmlns:buda="http://www.minefi.gouv.fr/cp/helios/pes_v2/budget/r0/aller" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:depa="http://www.minefi.gouv.fr/cp/helios/pes_v2/depense/r0/aller" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:empa="http://www.minefi.gouv.fr/cp/helios/pes_v2/emprunt/r0/aller" xmlns:mara="http://www.minefi.gouv.fr/cp/helios/pes_v2/marche/r0/aller" xmlns:reca="http://www.minefi.gouv.fr/cp/helios/pes_v2/recette/r0/aller" xmlns:rola="http://www.minefi.gouv.fr/cp/helios/pes_v2/role/r0/aller" xmlns:xad="http://uri.etsi.org/01903/v1.1.1#" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <Enveloppe>
+ <Parametres>
+ <Version V="1"/>
+ <TypFic V="PESALR2"/>
+ <NomFic V="HELIOS_SIMU_ALR2_123456725_091103_049.xml"/>
+ </Parametres>
+ <Emetteur>
+ <Sigle V="EMSIGLE"/>
+ <Adresse V="EMADRESSE"/>
+ </Emetteur>
+ <Recepteur>
+ <Sigle V="HELIOS"/>
+ <Adresse V="READRESSE"/>
+ </Recepteur>
+ </Enveloppe>
+ <EnTetePES>
+ <DteStr V="2009-11-03"/>
+ <IdPost V="034000"/>
+ <IdColl V="123456725"/>
+ <CodCol V="123"/>
+ <CodBud V="12"/>
+ <LibelleColBud V="COMMUNE"/>
+ </EnTetePES>
+ <PES_DepenseAller>
+ <EnTeteDepense>
+ <IdVer V="1"/>
+ <InfoDematerialisee V="0"/>
+ </EnTeteDepense>
+ <Bordereau>
+ <BlocBordereau>
+ <Exer V="2009"/>
+ <IdBord V="72"/>
+ <DteBordEm V="2009-07-16"/>
+ <TypBord V="01"/>
+ <NbrPce V="1"/>
+ <MtCumulAnnuel V="6312190.16"/>
+ <MtBordHT V="75724.75"/>
+ </BlocBordereau>
+ <Piece>
+ <BlocPiece>
+ <InfoPce>
+ <IdPce V="832"/>
+ <TypPce V="01"/>
+ <NatPce V="01"/>
+ <Obj V="TEST HOMOLOGATION"/>
+ </InfoPce>
+ </BlocPiece>
+ <LigneDePiece>
+ <BlocLignePiece>
+ <InfoLignePce>
+ <IdLigne V="1"/>
+ <Nature V="6553"/>
+ <Fonction V="113"/>
+ <LibVir1 V="ECHEANCIER" />
+ <LibVir2 V="LE NUMERO N EST PAS PRECISE"/>
+ <ModRegl V="03"/>
+ <TVAIntraCom V="0"/>
+ <MtHT V="39724.75"/>
+ </InfoLignePce>
+ </BlocLignePiece>
+ <Tiers>
+ <InfoTiers>
+ <RefTiers V="811"/>
+ <CatTiers V="22"/>
+ <NatJur V="09"/>
+ <Nom V="PAIERIE DEPART. HERAULT"/>
+ </InfoTiers>
+ <Adresse>
+ <TypAdr V="1"/>
+ <Adr2 V="1000 RUE ALCO"/>
+ <CP V="34000"/>
+ <Ville V="MONTPELLIER"/>
+ <CodRes V="0"/>
+ </Adresse>
+ <CpteBancaire>
+ <CodeEtab V="30001"/>
+ <CodeGuic V="00866"/>
+ <IdCpte V="C7850000000"/>
+ <CleRib V="67"/>
+ <LibBanc V="LA BANQUE DU FUTUR"/>
+ <TitCpte V="PAIERIE DEPART. HERAULT"/>
+ </CpteBancaire>
+ </Tiers>
+ </LigneDePiece>
+ </Piece>
+ </Bordereau>
+ </PES_DepenseAller>
+ <PES_PJ>
+ <EnTetePES_PJ>
+ <IdVer V="1"/>
+ </EnTetePES_PJ>
+ </PES_PJ>
+</n:PES_Aller>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<n:PES_Aller Id="PES520070327112832" xmlns:n="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller">
+ <Enveloppe>
+ <Parametres>
+ <Version V="1"/>
+ <TypFic V="PESALR1"/>
+ <NomFic V="flux recette"/>
+ </Parametres>
+ </Enveloppe>
+ <EnTetePES>
+ <DteStr V="2007-04-04"/>
+ <IdPost V="123456"/>
+ <LibellePoste V="Poste comptable"/>
+ <IdColl V="12345678901234"/>
+ <Finess V="1234567890"/>
+ <CodCol V="123"/>
+ <CodBud V="12"/>
+ <LibelleColBud V="Budget Exemple"/>
+ </EnTetePES>
+ <PES_RecetteAller>
+ <EnTeteRecette>
+ <IdVer V="1"/>
+ </EnTeteRecette>
+ <Bordereau>
+ <BlocBordereau>
+ <Exer V="2006"/>
+ <IdBord V="122"/>
+ <DteBordEm V="2007-01-01"/>
+ <TypBord V="01"/>
+ <NbrPce V="3"/>
+ <MtBordHt V="123.00"/>
+ </BlocBordereau>
+ <Piece>
+ <BlocPiece>
+ <IdPce V="1221"/>
+ <TypPce V="01"/>
+ <NatPce V="01"/>
+ <ObjPce V="XXXXX XX XX/XX/XXXX"/>
+ <DebFact V="2005-10-05"/>
+ <FinFact V="2005-10-05"/>
+ </BlocPiece>
+ <LigneDePiece>
+ <BlocLignePiece>
+ <InfoLignePiece>
+ <IdLigne V="1"/>
+ <CodProdLoc V="0"/>
+ <CodEtGeo V="49"/>
+ <Nature V="701"/>
+ <Majo V="0"/>
+ <CpteTiers V="46721"/>
+ <TvaIntraCom V="0"/>
+ <MtHT V="100.00"/>
+ </InfoLignePiece>
+ <InfoAssure>
+ <CodAssDeb V="3"/>
+ </InfoAssure>
+ </BlocLignePiece>
+ <Tiers>
+ <InfoTiers>
+ <DteMalade V="2006-06-19"/>
+ <RefTiers V="550868461"/>
+ <CatTiers V="01"/>
+ <NatJur V="01"/>
+ <TypTiers V="06"/>
+ <Civilite V="Madame"/>
+ <Nom V="XXXXXXXXX"/>
+ <Prenom V="XXX"/>
+ </InfoTiers>
+ <Adresse>
+ <TypAdr V="1"/>
+ <Adr2 V="BEL AIR"/>
+ <CP V="09100"/>
+ <Ville V="SAINT MARTIN D'OYDES"/>
+ <CodRes V="0"/>
+ </Adresse>
+ </Tiers>
+ <Tiers>
+ <InfoTiers>
+ <RefTiers V="700000002633755"/>
+ <CatTiers V="01"/>
+ <NatJur V="01"/>
+ <TypTiers V="01"/>
+ <Civilite V="Madame"/>
+ <Nom V="XXXXXXXXX"/>
+ <Prenom V="XXX"/>
+ </InfoTiers>
+ <Adresse>
+ <TypAdr V="1"/>
+ <Adr2 V="BEL AIR"/>
+ <CP V="09100"/>
+ <Ville V="SAINT MARTIN D'OYDES"/>
+ <CodRes V="0"/>
+ </Adresse>
+ </Tiers>
+ <Tiers>
+ <InfoTiers>
+ <RefTiers V="700000002633755"/>
+ <CatTiers V="01"/>
+ <NatJur V="01"/>
+ <TypTiers V="07"/>
+ <Civilite V="Madame"/>
+ <Nom V="XXXXXXXXX"/>
+ <Prenom V="XXX"/>
+ </InfoTiers>
+ </Tiers>
+ </LigneDePiece>
+ </Piece>
+ <Piece>
+ <BlocPiece>
+ <IdPce V="1222"/>
+ <TypPce V="01"/>
+ <NatPce V="01"/>
+ <ObjPce V="XXXXXXXX XX XX/XX/XXXX"/>
+ <DebFact V="2006-10-13"/>
+ <FinFact V="2006-10-13"/>
+ </BlocPiece>
+ <LigneDePiece>
+ <BlocLignePiece>
+ <InfoLignePiece>
+ <IdLigne V="1"/>
+ <CodProdLoc V="0"/>
+ <CodEtGeo V="49"/>
+ <Nature V="701"/>
+ <Majo V="0"/>
+ <CpteTiers V="46721"/>
+ <TvaIntraCom V="0"/>
+ <MtHT V="20.00"/>
+ </InfoLignePiece>
+ <InfoAssure>
+ <CodAssDeb V="3"/>
+ </InfoAssure>
+ </BlocLignePiece>
+ <Tiers>
+ <InfoTiers>
+ <DteMalade V="2003-02-21"/>
+ <RefTiers V="650957594"/>
+ <CatTiers V="01"/>
+ <NatJur V="01"/>
+ <TypTiers V="06"/>
+ <Civilite V="Madame"/>
+ <Nom V="XXXXXXXXXX"/>
+ <Prenom V="XXXXXXXXXXXXX"/>
+ </InfoTiers>
+ <Adresse>
+ <TypAdr V="1"/>
+ <Adr2 V="13 LIEU DIT GARRIGOU"/>
+ <CP V="09000"/>
+ <Ville V="ST JEAN DE VERGES"/>
+ <CodRes V="0"/>
+ </Adresse>
+ </Tiers>
+ <Tiers>
+ <InfoTiers>
+ <RefTiers V="700000002420528"/>
+ <CatTiers V="01"/>
+ <NatJur V="01"/>
+ <TypTiers V="01"/>
+ <Civilite V="Madame"/>
+ <Nom V="XXXXXXXXXXX"/>
+ <Prenom V="XXXXX"/>
+ </InfoTiers>
+ <Adresse>
+ <TypAdr V="1"/>
+ <Adr2 V="13 LIEU DIT GARRIGOU"/>
+ <CP V="09000"/>
+ <Ville V="ST JEAN DE VERGES"/>
+ <CodRes V="0"/>
+ </Adresse>
+ </Tiers>
+ <Tiers>
+ <InfoTiers>
+ <RefTiers V="700000002420528"/>
+ <CatTiers V="01"/>
+ <NatJur V="01"/>
+ <TypTiers V="07"/>
+ <Civilite V="Madame"/>
+ <Nom V="XXXXXXXXXX"/>
+ <Prenom V="XXXXX"/>
+ </InfoTiers>
+ </Tiers>
+ </LigneDePiece>
+ </Piece>
+ <Piece>
+ <BlocPiece>
+ <IdPce V="1223"/>
+ <TypPce V="01"/>
+ <NatPce V="01"/>
+ <ObjPce V="XXXXXXX XXXX XX XXXXXX XX XX/XX/XXXX"/>
+ <DebFact V="2006-10-13"/>
+ <FinFact V="2006-10-13"/>
+ </BlocPiece>
+ <LigneDePiece>
+ <BlocLignePiece>
+ <InfoLignePiece>
+ <IdLigne V="1"/>
+ <CodProdLoc V="0"/>
+ <CodEtGeo V="49"/>
+ <Nature V="701"/>
+ <Majo V="0"/>
+ <CpteTiers V="46721"/>
+ <TvaIntraCom V="0"/>
+ <CpteTva V="0"/>
+ <MtHT V="3.00"/>
+ </InfoLignePiece>
+ <InfoAssure>
+ <CodAssDeb V="3"/>
+ </InfoAssure>
+ </BlocLignePiece>
+ <Tiers>
+ <InfoTiers>
+ <DteMalade V="2003-02-21"/>
+ <RefTiers V="750957594"/>
+ <CatTiers V="01"/>
+ <NatJur V="01"/>
+ <TypTiers V="06"/>
+ <Civilite V="Madame"/>
+ <Nom V="XXXXXXXXX"/>
+ <Prenom V="XXXXXXXXXX"/>
+ </InfoTiers>
+ <Adresse>
+ <TypAdr V="1"/>
+ <Adr2 V="13 LIEU DIT GARRIGOU"/>
+ <CP V="09000"/>
+ <Ville V="ST JEAN DE VERGES"/>
+ <CodRes V="0"/>
+ </Adresse>
+ </Tiers>
+ <Tiers>
+ <InfoTiers>
+ <RefTiers V="700000002420528"/>
+ <CatTiers V="01"/>
+ <NatJur V="01"/>
+ <TypTiers V="01"/>
+ <Civilite V="Madame"/>
+ <Nom V="XXXXXXXXXX"/>
+ <Prenom V="XXXXXXX"/>
+ </InfoTiers>
+ <Adresse>
+ <TypAdr V="1"/>
+ <Adr2 V="13 LIEU DIT GARRIGOU"/>
+ <CP V="09000"/>
+ <Ville V="ST JEAN DE VERGES"/>
+ <CodRes V="0"/>
+ </Adresse>
+ </Tiers>
+ <Tiers>
+ <InfoTiers>
+ <RefTiers V="700000002420528"/>
+ <CatTiers V="01"/>
+ <NatJur V="01"/>
+ <TypTiers V="07"/>
+ <Civilite V="Madame"/>
+ <Nom V="XXXXXXXXXXXX"/>
+ <Prenom V="XXXXX"/>
+ </InfoTiers>
+ </Tiers>
+ </LigneDePiece>
+ </Piece>
+ </Bordereau>
+ </PES_RecetteAller>
+</n:PES_Aller>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<n:PES_Aller xmlns:n="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller" xmlns:acta="http://www.minefi.gouv.fr/cp/helios/pes_v2/etatactif/r0/aller" xmlns:buda="http://www.minefi.gouv.fr/cp/helios/pes_v2/budget/r0/aller" xmlns:cm="http://www.minefi.gouv.fr/cp/helios/pes_v2/commun" xmlns:depa="http://www.minefi.gouv.fr/cp/helios/pes_v2/depense/r0/aller" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:empa="http://www.minefi.gouv.fr/cp/helios/pes_v2/emprunt/r0/aller" xmlns:mara="http://www.minefi.gouv.fr/cp/helios/pes_v2/marche/r0/aller" xmlns:reca="http://www.minefi.gouv.fr/cp/helios/pes_v2/recette/r0/aller" xmlns:rola="http://www.minefi.gouv.fr/cp/helios/pes_v2/role/r0/aller" xmlns:xad="http://uri.etsi.org/01903/v1.1.1#" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <Enveloppe>
+ <Parametres>
+ <Version V="1"/>
+ <TypFic V="PESALR2"/>
+ <NomFic V="PesDepense-AAAA-MM-JJ-123456789123456789"/>
+ </Parametres>
+ <Emetteur>
+ <Sigle V="EMSIGLE"/>
+ <Adresse V="EMADRESSE"/>
+ </Emetteur>
+ <Recepteur>
+ <Sigle V="HELIOS"/>
+ <Adresse V="READRESSE"/>
+ </Recepteur>
+ </Enveloppe>
+ <EnTetePES>
+ <DteStr V="AAAA-MM-JJ"/>
+ <IdPost V="034000"/>
+ <IdColl V="12345678912345"/>
+ <CodCol V="123"/>
+ <CodBud V="12"/>
+ <LibelleColBud V="COMMUNE"/>
+ </EnTetePES>
+ <PES_DepenseAller>
+ <EnTeteDepense>
+ <IdVer V="1"/>
+ <InfoDematerialisee V="0"/>
+ </EnTeteDepense>
+ <Bordereau>
+ <BlocBordereau>
+ <Exer V="2009"/>
+ <IdBord V="72"/>
+ <DteBordEm V="2009-07-16"/>
+ <TypBord V="01"/>
+ <NbrPce V="1"/>
+ <MtCumulAnnuel V="6312190.16"/>
+ <MtBordHT V="75724.75"/>
+ </BlocBordereau>
+ <Piece>
+ <BlocPiece>
+ <InfoPce>
+ <IdPce V="832"/>
+ <TypPce V="01"/>
+ <NatPce V="01"/>
+ <Obj V="TEST HOMOLOGATION"/>
+ </InfoPce>
+ </BlocPiece>
+ <LigneDePiece>
+ <BlocLignePiece>
+ <InfoLignePce>
+ <IdLigne V="1"/>
+ <Nature V="6553"/>
+ <Fonction V="113"/>
+ <LibVir1 V="ECHEANCIER"/>
+ <LibVir2 V="LE NUMERO N EST PAS PRECISE"/>
+ <ModRegl V="03"/>
+ <TVAIntraCom V="0"/>
+ <MtHT V="39724.75"/>
+ </InfoLignePce>
+ </BlocLignePiece>
+ <Tiers>
+ <InfoTiers>
+ <RefTiers V="811"/>
+ <CatTiers V="22"/>
+ <NatJur V="09"/>
+ <Nom V="PAIERIE DEPART. HERAULT"/>
+ </InfoTiers>
+ <Adresse>
+ <TypAdr V="1"/>
+ <Adr2 V="1000 RUE ALCO"/>
+ <CP V="34000"/>
+ <Ville V="MONTPELLIER"/>
+ <CodRes V="0"/>
+ </Adresse>
+ <CpteBancaire>
+ <CodeEtab V="30001"/>
+ <CodeGuic V="00866"/>
+ <IdCpte V="C7850000000"/>
+ <CleRib V="67"/>
+ <LibBanc V="LA BANQUE DU FUTUR"/>
+ <TitCpte V="PAIERIE DEPART. HERAULT"/>
+ </CpteBancaire>
+ </Tiers>
+ </LigneDePiece>
+ </Piece>
+ </Bordereau>
+ </PES_DepenseAller>
+ <PES_PJ>
+ <EnTetePES_PJ>
+ <IdVer V="1"/>
+ </EnTetePES_PJ>
+ </PES_PJ>
+</n:PES_Aller>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!--Sample XML file generated by XMLSPY v5 rel. 2 U (http://www.xmlspy.com)-->
+<n:PES_NonAcquit xmlns:n="http://www.minefi.gouv.fr/cp/helios/pes" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.minefi.gouv.fr/cp/helios/pes
+..\SCHEMA\PES_Nack_1.1.xsd">
+ <Enveloppe>
+ <Parametres>
+ <Version V="0"/>
+ <TypFic V="String"/>
+ <NomFic V="String"/>
+ </Parametres>
+ <Emetteur>
+ <Sigle V="String"/>
+ <Adresse V="String"/>
+ </Emetteur>
+ <Recepteur>
+ <Sigle V="String"/>
+ <Adresse V="String"/>
+ </Recepteur>
+ </Enveloppe>
+ <NonAcquit>
+ <NomFic V="String"/>
+ <Motif V="String"/>
+ </NonAcquit>
+</n:PES_NonAcquit>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<n:PES_Retour xmlns:n="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/retour /opt/tx/users/edihls10/messages/XML/PES_V2/Externe/Schemas_PES/PES_V2/Rev0/PES_V2_RecetteRetour_Autonome.xsd">
+ <Enveloppe>
+ <Parametres>
+ <Version V="2"></Version>
+ <TypFic V="PESRETOUR_REC"></TypFic>
+ <NomFic V="PES_V2_RETOUR_RECETTE_Exemple_20090813.xml"></NomFic>
+ </Parametres>
+ </Enveloppe>
+ <EnTetePES>
+ <DteStr V="2009-08-13"></DteStr>
+ <IdPost V="034000"></IdPost>
+ <LibellePoste V="ADULLACT"></LibellePoste>
+ <IdColl V="123456725"></IdColl>
+ <CodCol V="315"></CodCol>
+ <CodBud V="00"></CodBud>
+ <LibelleColBud V="CAP OMEGA "></LibelleColBud>
+ </EnTetePES>
+ <PES_RecetteRetour>
+ <EnTeteRecette>
+ <IdVer V="2"></IdVer>
+ <NatInf V="2"></NatInf>
+ </EnTeteRecette>
+ <Bordereau>
+ <BlocBordereau>
+ <Exer V="2005"></Exer>
+ <IdBord V="44"></IdBord>
+ <DteBordEm V="2006-01-13"></DteBordEm>
+ <TypBord V="01"></TypBord>
+ <NbrPce V="2"></NbrPce>
+ <MtBordHt V="11119.07"></MtBordHt>
+ <DteBordArr V="2006-01-13"></DteBordArr>
+ </BlocBordereau>
+ <Piece>
+ <BlocPiece>
+ <IdPce V="1449"></IdPce>
+ <TypPce V="01"></TypPce>
+ <NatPce V="01"></NatPce>
+ <DteAsp V="2006-01-17"></DteAsp>
+ <ObjPce V="LOUIS XVI du 03/01/2005 au 28/02/2005"></ObjPce>
+ <EtatPce V="02"></EtatPce>
+ <DtePceInt V="2006-01-13"></DtePceInt>
+ <DtePcePec V="2006-01-16"></DtePcePec>
+ </BlocPiece>
+ <LigneDePiece>
+ <BlocLignePiece>
+ <InfoLignePiece>
+ <IdLigne V="1"></IdLigne>
+ <CodProdLoc V="300"></CodProdLoc>
+ <Nature V="7067"></Nature>
+ <CpteTiers V="4111"></CpteTiers>
+ <MtHT V="274.05"></MtHT>
+ <MtTVA V="0"></MtTVA>
+ </InfoLignePiece>
+ <InfoRecouvrement>
+ <NbrReco V="2"></NbrReco>
+ <MtRecoTot V="151.56"></MtRecoTot>
+ </InfoRecouvrement>
+ <InfoContentieux>
+ <MtCtxTot V="274.05"></MtCtxTot>
+ <SldPrinc V="122.49"></SldPrinc>
+ </InfoContentieux>
+ <InfoAmiableContentieux>
+ <EtPce V="02"></EtPce>
+ <DteEtPce V="2006-04-13"></DteEtPce>
+ <IdAct V="82291011"></IdAct>
+ <CodActu V="07"></CodActu>
+ <DteActu V="2006-04-13"></DteActu>
+ </InfoAmiableContentieux>
+ <InfoAmiableContentieux>
+ <EtPce V="05"></EtPce>
+ <DteEtPce V="2006-04-25"></DteEtPce>
+ <IdAct V="83870111"></IdAct>
+ <CodActu V="01"></CodActu>
+ <DteActu V="2006-04-25"></DteActu>
+ </InfoAmiableContentieux>
+ <InfoAmiableContentieux>
+ <EtPce V="01"></EtPce>
+ <DteEtPce V="2006-04-06"></DteEtPce>
+ <IdAct V="80651011"></IdAct>
+ <CodActu V="07"></CodActu>
+ <DteActu V="2006-04-08"></DteActu>
+ </InfoAmiableContentieux>
+ </BlocLignePiece>
+ <Tiers>
+ <InfoTiers>
+ <CatTiers V="01"></CatTiers>
+ <NatJur V="00"></NatJur>
+ <TypTiers V="01"></TypTiers>
+ <Civilite V="MR"></Civilite>
+ <Nom V="LES ROIS DE FRANCE et DE NAVARRE"></Nom>
+ <Prenom V="NC"></Prenom>
+ </InfoTiers>
+ <Adresse>
+ <TypAdr V="1"></TypAdr>
+ <Adr2 V="9 AVENUE DU CHATEAU"></Adr2>
+ <CP V="78000"></CP>
+ <Ville V="VERSAILLES"></Ville>
+ <CodRes V="0"></CodRes>
+ </Adresse>
+ </Tiers>
+ <Recouvrement>
+ <TypFlux V="01"></TypFlux>
+ <ModRegl V="07"></ModRegl>
+ <DteReco V="2008-01-10"></DteReco>
+ <IdEncaissement V="1077988511"></IdEncaissement>
+ <MtReco V="1.56"></MtReco>
+ </Recouvrement>
+ <Recouvrement>
+ <TypFlux V="01"></TypFlux>
+ <ModRegl V="03"></ModRegl>
+ <DteReco V="2008-01-15"></DteReco>
+ <IdEncaissement V="1085134311"></IdEncaissement>
+ <MtReco V="150"></MtReco>
+ </Recouvrement>
+ </LigneDePiece>
+ </Piece>
+ <Piece>
+ <BlocPiece>
+ <IdPce V="1456"></IdPce>
+ <TypPce V="01"></TypPce>
+ <NatPce V="01"></NatPce>
+ <DteAsp V="2006-01-17"></DteAsp>
+ <ObjPce V="BOND James du 03/01/2005 au 28/02/2005"></ObjPce>
+ <EtatPce V="05"></EtatPce>
+ <DtePceInt V="2006-01-13"></DtePceInt>
+ <DtePcePec V="2006-01-16"></DtePcePec>
+ </BlocPiece>
+ <LigneDePiece>
+ <BlocLignePiece>
+ <InfoLignePiece>
+ <IdLigne V="1"></IdLigne>
+ <CodProdLoc V="300"></CodProdLoc>
+ <Nature V="7067"></Nature>
+ <CpteTiers V="4111"></CpteTiers>
+ <MtHT V="430.51"></MtHT>
+ <MtTVA V="0"></MtTVA>
+ </InfoLignePiece>
+ <InfoRecouvrement>
+ <NbrReco V="2"></NbrReco>
+ <MtRecoTot V="430.51"></MtRecoTot>
+ </InfoRecouvrement>
+ <InfoSuspPour>
+ <CodSuspPour V="01"></CodSuspPour>
+ <DteSuspPour V="2006-04-10"></DteSuspPour>
+ </InfoSuspPour>
+ <InfoAmiableContentieux>
+ <EtPce V="01"></EtPce>
+ <DteEtPce V="2006-04-06"></DteEtPce>
+ <IdAct V="80650511"></IdAct>
+ <CodActu V="11"></CodActu>
+ <DteActu V="2006-04-08"></DteActu>
+ </InfoAmiableContentieux>
+ </BlocLignePiece>
+ <Tiers>
+ <InfoTiers>
+ <CatTiers V="01"></CatTiers>
+ <NatJur V="00"></NatJur>
+ <TypTiers V="01"></TypTiers>
+ <Civilite V="MR"></Civilite>
+ <Nom V="BOND James"></Nom>
+ <Prenom V="NC"></Prenom>
+ </InfoTiers>
+ <Adresse>
+ <TypAdr V="1"></TypAdr>
+ <Adr2 V="CHEZ M"></Adr2>
+ <CP V="34980"></CP>
+ <Ville V="QUELQUE PART"></Ville>
+ <CodRes V="0"></CodRes>
+ </Adresse>
+ </Tiers>
+ <Recouvrement>
+ <TypFlux V="01"></TypFlux>
+ <ModRegl V="03"></ModRegl>
+ <DteReco V="2007-11-29"></DteReco>
+ <IdEncaissement V="1014035611"></IdEncaissement>
+ <MtReco V="200.21"></MtReco>
+ </Recouvrement>
+ <Recouvrement>
+ <TypFlux V="01"></TypFlux>
+ <ModRegl V="03"></ModRegl>
+ <DteReco V="2008-01-30"></DteReco>
+ <IdEncaissement V="1107199111"></IdEncaissement>
+ <MtReco V="230.3"></MtReco>
+ </Recouvrement>
+ </LigneDePiece>
+ </Piece>
+ </Bordereau>
+ </PES_RecetteRetour>
+</n:PES_Retour>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<n:PES_Aller Id="PES520070327112832" xmlns:n="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller">
+ <Enveloppe>
+ <Parametres>
+ <Version V="1"/>
+ <TypFic V="PESALR1"/>
+ <NomFic V="flux recette"/>
+ </Parametres>
+ </Enveloppe>
+ <EnTetePES>
+ <DteStr V="2007-04-04"/>
+ <IdPost V="123456"/>
+ <LibellePoste V="Poste comptable"/>
+ <IdColl V="12345678901234"/>
+ <Finess V="1234567890"/>
+ <CodCol V="123"/>
+ <CodBud V="12"/>
+ <LibelleColBud V="Budget Exemple"/>
+ </EnTetePES>
+ <PES_RecetteAller>
+ <EnTeteRecette>
+ <IdVer V="1"/>
+ </EnTeteRecette>
+ <Bordereau>
+ <BlocBordereau>
+ <Exer V="2006"/>
+ <IdBord V="122"/>
+ <DteBordEm V="2007-01-01"/>
+ <TypBord V="01"/>
+ <NbrPce V="3"/>
+ <MtBordHt V="123.00"/>
+ </BlocBordereau>
+ <Piece>
+ <BlocPiece>
+ <IdPce V="1221"/>
+ <TypPce V="01"/>
+ <NatPce V="01"/>
+ <ObjPce V="XXXXX XX XX/XX/XXXX"/>
+ <DebFact V="2005-10-05"/>
+ <FinFact V="2005-10-05"/>
+ </BlocPiece>
+ <LigneDePiece>
+ <BlocLignePiece>
+ <InfoLignePiece>
+ <IdLigne V="1"/>
+ <CodProdLoc V="0"/>
+ <CodEtGeo V="49"/>
+ <Nature V="701"/>
+ <Majo V="0"/>
+ <CpteTiers V="46721"/>
+ <TvaIntraCom V="0"/>
+ <MtHT V="100.00"/>
+ </InfoLignePiece>
+ <InfoAssure>
+ <CodAssDeb V="3"/>
+ </InfoAssure>
+ </BlocLignePiece>
+ <Tiers>
+ <InfoTiers>
+ <DteMalade V="2006-06-19"/>
+ <RefTiers V="550868461"/>
+ <CatTiers V="01"/>
+ <NatJur V="01"/>
+ <TypTiers V="06"/>
+ <Civilite V="Madame"/>
+ <Nom V="XXXXXXXXX"/>
+ <Prenom V="XXX"/>
+ </InfoTiers>
+ <Adresse>
+ <TypAdr V="1"/>
+ <Adr2 V="BEL AIR"/>
+ <CP V="09100"/>
+ <Ville V="SAINT MARTIN D'OYDES"/>
+ <CodRes V="0"/>
+ </Adresse>
+ </Tiers>
+ <Tiers>
+ <InfoTiers>
+ <RefTiers V="700000002633755"/>
+ <CatTiers V="01"/>
+ <NatJur V="01"/>
+ <TypTiers V="01"/>
+ <Civilite V="Madame"/>
+ <Nom V="XXXXXXXXX"/>
+ <Prenom V="XXX"/>
+ </InfoTiers>
+ <Adresse>
+ <TypAdr V="1"/>
+ <Adr2 V="BEL AIR"/>
+ <CP V="09100"/>
+ <Ville V="SAINT MARTIN D'OYDES"/>
+ <CodRes V="0"/>
+ </Adresse>
+ </Tiers>
+ <Tiers>
+ <InfoTiers>
+ <RefTiers V="700000002633755"/>
+ <CatTiers V="01"/>
+ <NatJur V="01"/>
+ <TypTiers V="07"/>
+ <Civilite V="Madame"/>
+ <Nom V="XXXXXXXXX"/>
+ <Prenom V="XXX"/>
+ </InfoTiers>
+ </Tiers>
+ </LigneDePiece>
+ </Piece>
+ <Piece>
+ <BlocPiece>
+ <IdPce V="1222"/>
+ <TypPce V="01"/>
+ <NatPce V="01"/>
+ <ObjPce V="XXXXXXXX XX XX/XX/XXXX"/>
+ <DebFact V="2006-10-13"/>
+ <FinFact V="2006-10-13"/>
+ </BlocPiece>
+ <LigneDePiece>
+ <BlocLignePiece>
+ <InfoLignePiece>
+ <IdLigne V="1"/>
+ <CodProdLoc V="0"/>
+ <CodEtGeo V="49"/>
+ <Nature V="701"/>
+ <Majo V="0"/>
+ <CpteTiers V="46721"/>
+ <TvaIntraCom V="0"/>
+ <MtHT V="20.00"/>
+ </InfoLignePiece>
+ <InfoAssure>
+ <CodAssDeb V="3"/>
+ </InfoAssure>
+ </BlocLignePiece>
+ <Tiers>
+ <InfoTiers>
+ <DteMalade V="2003-02-21"/>
+ <RefTiers V="650957594"/>
+ <CatTiers V="01"/>
+ <NatJur V="01"/>
+ <TypTiers V="06"/>
+ <Civilite V="Madame"/>
+ <Nom V="XXXXXXXXXX"/>
+ <Prenom V="XXXXXXXXXXXXX"/>
+ </InfoTiers>
+ <Adresse>
+ <TypAdr V="1"/>
+ <Adr2 V="13 LIEU DIT GARRIGOU"/>
+ <CP V="09000"/>
+ <Ville V="ST JEAN DE VERGES"/>
+ <CodRes V="0"/>
+ </Adresse>
+ </Tiers>
+ <Tiers>
+ <InfoTiers>
+ <RefTiers V="700000002420528"/>
+ <CatTiers V="01"/>
+ <NatJur V="01"/>
+ <TypTiers V="01"/>
+ <Civilite V="Madame"/>
+ <Nom V="XXXXXXXXXXX"/>
+ <Prenom V="XXXXX"/>
+ </InfoTiers>
+ <Adresse>
+ <TypAdr V="1"/>
+ <Adr2 V="13 LIEU DIT GARRIGOU"/>
+ <CP V="09000"/>
+ <Ville V="ST JEAN DE VERGES"/>
+ <CodRes V="0"/>
+ </Adresse>
+ </Tiers>
+ <Tiers>
+ <InfoTiers>
+ <RefTiers V="700000002420528"/>
+ <CatTiers V="01"/>
+ <NatJur V="01"/>
+ <TypTiers V="07"/>
+ <Civilite V="Madame"/>
+ <Nom V="XXXXXXXXXX"/>
+ <Prenom V="XXXXX"/>
+ </InfoTiers>
+ </Tiers>
+ </LigneDePiece>
+ </Piece>
+ <Piece>
+ <BlocPiece>
+ <IdPce V="1223"/>
+ <TypPce V="01"/>
+ <NatPce V="01"/>
+ <ObjPce V="XXXXXXX XXXX XX XXXXXX XX XX/XX/XXXX"/>
+ <DebFact V="2006-10-13"/>
+ <FinFact V="2006-10-13"/>
+ </BlocPiece>
+ <LigneDePiece>
+ <BlocLignePiece>
+ <InfoLignePiece>
+ <IdLigne V="1"/>
+ <CodProdLoc V="0"/>
+ <CodEtGeo V="49"/>
+ <Nature V="701"/>
+ <Majo V="0"/>
+ <CpteTiers V="46721"/>
+ <TvaIntraCom V="0"/>
+ <CpteTva V="0"/>
+ <MtHT V="3.00"/>
+ </InfoLignePiece>
+ <InfoAssure>
+ <CodAssDeb V="3"/>
+ </InfoAssure>
+ </BlocLignePiece>
+ <Tiers>
+ <InfoTiers>
+ <DteMalade V="2003-02-21"/>
+ <RefTiers V="750957594"/>
+ <CatTiers V="01"/>
+ <NatJur V="01"/>
+ <TypTiers V="06"/>
+ <Civilite V="Madame"/>
+ <Nom V="XXXXXXXXX"/>
+ <Prenom V="XXXXXXXXXX"/>
+ </InfoTiers>
+ <Adresse>
+ <TypAdr V="1"/>
+ <Adr2 V="13 LIEU DIT GARRIGOU"/>
+ <CP V="09000"/>
+ <Ville V="ST JEAN DE VERGES"/>
+ <CodRes V="0"/>
+ </Adresse>
+ </Tiers>
+ <Tiers>
+ <InfoTiers>
+ <RefTiers V="700000002420528"/>
+ <CatTiers V="01"/>
+ <NatJur V="01"/>
+ <TypTiers V="01"/>
+ <Civilite V="Madame"/>
+ <Nom V="XXXXXXXXXX"/>
+ <Prenom V="XXXXXXX"/>
+ </InfoTiers>
+ <Adresse>
+ <TypAdr V="1"/>
+ <Adr2 V="13 LIEU DIT GARRIGOU"/>
+ <CP V="09000"/>
+ <Ville V="ST JEAN DE VERGES"/>
+ <CodRes V="0"/>
+ </Adresse>
+ </Tiers>
+ <Tiers>
+ <InfoTiers>
+ <RefTiers V="700000002420528"/>
+ <CatTiers V="01"/>
+ <NatJur V="01"/>
+ <TypTiers V="07"/>
+ <Civilite V="Madame"/>
+ <Nom V="XXXXXXXXXXXX"/>
+ <Prenom V="XXXXX"/>
+ </InfoTiers>
+ </Tiers>
+ </LigneDePiece>
+ </Piece>
+ </Bordereau>
+ </PES_RecetteAller>
+</n:PES_Aller>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<n:PES_Aller Id="PES520070327112832" xmlns:n="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller">
+ <Enveloppe>
+ <Parametres>
+ <Version V="1"/>
+ <TypFic V="PESALR1"/>
+ <NomFic V="flux recette"/>
+ </Parametres>
+ </Enveloppe>
+ <EnTetePES>
+ <DteStr V="2007-04-04"/>
+ <IdPost V="123456"/>
+ <LibellePoste V="Poste comptable"/>
+ <IdColl V="12345678901234"/>
+ <Finess V="1234567890"/>
+ <CodCol V="123"/>
+ <CodBud V="12"/>
+ <LibelleColBud V="Budget Exemple"/>
+ </EnTetePES>
+ <PES_RecetteAller>
+ <EnTeteRecette>
+ <IdVer V="1"/>
+ </EnTeteRecette>
+ <Bordereau>
+ <BlocBordereau>
+ <Exer V="2006"/>
+ <IdBord V="122"/>
+ <DteBordEm V="2007-01-01"/>
+ <TypBord V="01"/>
+ <NbrPce V="3"/>
+ <MtBordHt V="123.00"/>
+ </BlocBordereau>
+ <Piece>
+ <BlocPiece>
+ <IdPce V="1221"/>
+ <TypPce V="01"/>
+ <NatPce V="01"/>
+ <ObjPce V="XXXXX XX XX/XX/XXXX"/>
+ <DebFact V="2005-10-05"/>
+ <FinFact V="2005-10-05"/>
+ </BlocPiece>
+ <LigneDePiece>
+ <BlocLignePiece>
+ <InfoLignePiece>
+ <IdLigne V="1"/>
+ <CodProdLoc V="0"/>
+ <CodEtGeo V="49"/>
+ <Nature V="701"/>
+ <Majo V="0"/>
+ <CpteTiers V="46721"/>
+ <TvaIntraCom V="0"/>
+ <MtHT V="100.00"/>
+ </InfoLignePiece>
+ <InfoAssure>
+ <CodAssDeb V="3"/>
+ </InfoAssure>
+ </BlocLignePiece>
+ <Tiers>
+ <InfoTiers>
+ <DteMalade V="2006-06-19"/>
+ <RefTiers V="550868461"/>
+ <CatTiers V="01"/>
+ <NatJur V="01"/>
+ <TypTiers V="06"/>
+ <Civilite V="Madame"/>
+ <Nom V="XXXXXXXXX"/>
+ <Prenom V="XXX"/>
+ </InfoTiers>
+ <Adresse>
+ <TypAdr V="1"/>
+ <Adr2 V="BEL AIR"/>
+ <CP V="09100"/>
+ <Ville V="SAINT MARTIN D'OYDES"/>
+ <CodRes V="0"/>
+ </Adresse>
+ </Tiers>
+ <Tiers>
+ <InfoTiers>
+ <RefTiers V="700000002633755"/>
+ <CatTiers V="01"/>
+ <NatJur V="01"/>
+ <TypTiers V="01"/>
+ <Civilite V="Madame"/>
+ <Nom V="XXXXXXXXX"/>
+ <Prenom V="XXX"/>
+ </InfoTiers>
+ <Adresse>
+ <TypAdr V="1"/>
+ <Adr2 V="BEL AIR"/>
+ <CP V="09100"/>
+ <Ville V="SAINT MARTIN D'OYDES"/>
+ <CodRes V="0"/>
+ </Adresse>
+ </Tiers>
+ <Tiers>
+ <InfoTiers>
+ <RefTiers V="700000002633755"/>
+ <CatTiers V="01"/>
+ <NatJur V="01"/>
+ <TypTiers V="07"/>
+ <Civilite V="Madame"/>
+ <Nom V="XXXXXXXXX"/>
+ <Prenom V="XXX"/>
+ </InfoTiers>
+ </Tiers>
+ </LigneDePiece>
+ </Piece>
+ <Piece>
+ <BlocPiece>
+ <IdPce V="1222"/>
+ <TypPce V="01"/>
+ <NatPce V="01"/>
+ <ObjPce V="XXXXXXXX XX XX/XX/XXXX"/>
+ <DebFact V="2006-10-13"/>
+ <FinFact V="2006-10-13"/>
+ </BlocPiece>
+ <LigneDePiece>
+ <BlocLignePiece>
+ <InfoLignePiece>
+ <IdLigne V="1"/>
+ <CodProdLoc V="0"/>
+ <CodEtGeo V="49"/>
+ <Nature V="701"/>
+ <Majo V="0"/>
+ <CpteTiers V="46721"/>
+ <TvaIntraCom V="0"/>
+ <MtHT V="20.00"/>
+ </InfoLignePiece>
+ <InfoAssure>
+ <CodAssDeb V="3"/>
+ </InfoAssure>
+ </BlocLignePiece>
+ <Tiers>
+ <InfoTiers>
+ <DteMalade V="2003-02-21"/>
+ <RefTiers V="650957594"/>
+ <CatTiers V="01"/>
+ <NatJur V="01"/>
+ <TypTiers V="06"/>
+ <Civilite V="Madame"/>
+ <Nom V="XXXXXXXXXX"/>
+ <Prenom V="XXXXXXXXXXXXX"/>
+ </InfoTiers>
+ <Adresse>
+ <TypAdr V="1"/>
+ <Adr2 V="13 LIEU DIT GARRIGOU"/>
+ <CP V="09000"/>
+ <Ville V="ST JEAN DE VERGES"/>
+ <CodRes V="0"/>
+ </Adresse>
+ </Tiers>
+ <Tiers>
+ <InfoTiers>
+ <RefTiers V="700000002420528"/>
+ <CatTiers V="01"/>
+ <NatJur V="01"/>
+ <TypTiers V="01"/>
+ <Civilite V="Madame"/>
+ <Nom V="XXXXXXXXXXX"/>
+ <Prenom V="XXXXX"/>
+ </InfoTiers>
+ <Adresse>
+ <TypAdr V="1"/>
+ <Adr2 V="13 LIEU DIT GARRIGOU"/>
+ <CP V="09000"/>
+ <Ville V="ST JEAN DE VERGES"/>
+ <CodRes V="0"/>
+ </Adresse>
+ </Tiers>
+ <Tiers>
+ <InfoTiers>
+ <RefTiers V="700000002420528"/>
+ <CatTiers V="01"/>
+ <NatJur V="01"/>
+ <TypTiers V="07"/>
+ <Civilite V="Madame"/>
+ <Nom V="XXXXXXXXXX"/>
+ <Prenom V="XXXXX"/>
+ </InfoTiers>
+ </Tiers>
+ </LigneDePiece>
+ </Piece>
+ <Piece>
+ <BlocPiece>
+ <IdPce V="1223"/>
+ <TypPce V="01"/>
+ <NatPce V="01"/>
+ <ObjPce V="XXXXXXX XXXX XX XXXXXX XX XX/XX/XXXX"/>
+ <DebFact V="2006-10-13"/>
+ <FinFact V="2006-10-13"/>
+ </BlocPiece>
+ <LigneDePiece>
+ <BlocLignePiece>
+ <InfoLignePiece>
+ <IdLigne V="1"/>
+ <CodProdLoc V="0"/>
+ <CodEtGeo V="49"/>
+ <Nature V="701"/>
+ <Majo V="0"/>
+ <CpteTiers V="46721"/>
+ <TvaIntraCom V="0"/>
+ <CpteTva V="0"/>
+ <MtHT V="3.00"/>
+ </InfoLignePiece>
+ <InfoAssure>
+ <CodAssDeb V="3"/>
+ </InfoAssure>
+ </BlocLignePiece>
+ <Tiers>
+ <InfoTiers>
+ <DteMalade V="2003-02-21"/>
+ <RefTiers V="750957594"/>
+ <CatTiers V="01"/>
+ <NatJur V="01"/>
+ <TypTiers V="06"/>
+ <Civilite V="Madame"/>
+ <Nom V="XXXXXXXXX"/>
+ <Prenom V="XXXXXXXXXX"/>
+ </InfoTiers>
+ <Adresse>
+ <TypAdr V="1"/>
+ <Adr2 V="13 LIEU DIT GARRIGOU"/>
+ <CP V="09000"/>
+ <Ville V="ST JEAN DE VERGES"/>
+ <CodRes V="0"/>
+ </Adresse>
+ </Tiers>
+ <Tiers>
+ <InfoTiers>
+ <RefTiers V="700000002420528"/>
+ <CatTiers V="01"/>
+ <NatJur V="01"/>
+ <TypTiers V="01"/>
+ <Civilite V="Madame"/>
+ <Nom V="XXXXXXXXXX"/>
+ <Prenom V="XXXXXXX"/>
+ </InfoTiers>
+ <Adresse>
+ <TypAdr V="1"/>
+ <Adr2 V="13 LIEU DIT GARRIGOU"/>
+ <CP V="09000"/>
+ <Ville V="ST JEAN DE VERGES"/>
+ <CodRes V="0"/>
+ </Adresse>
+ </Tiers>
+ <Tiers>
+ <InfoTiers>
+ <RefTiers V="700000002420528"/>
+ <CatTiers V="01"/>
+ <NatJur V="01"/>
+ <TypTiers V="07"/>
+ <Civilite V="Madame"/>
+ <Nom V="XXXXXXXXXXXX"/>
+ <Prenom V="XXXXX"/>
+ </InfoTiers>
+ </Tiers>
+ </LigneDePiece>
+ </Piece>
+ </Bordereau>
+ </PES_RecetteAller>
+</n:PES_Aller>
\ No newline at end of file
--- /dev/null
+-----BEGIN CERTIFICATE-----
+MIICTzCCAbgCCQDCfjF4+7XDcjANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQGEwJG
+UjEPMA0GA1UECBMGRnJhbmNlMQ0wCwYDVQQHEwRMeW9uMREwDwYDVQQKEwhTaWdt
+YWxpczEqMCgGA1UEAxMhYXV0b3JpdGUgZGV2ZWxvcHBlbWVudCBzaXRlIHMybG93
+MB4XDTA5MDMxNTA5MDUxOFoXDTE5MDMxMzA5MDUxOFowbDELMAkGA1UEBhMCRlIx
+DzANBgNVBAgTBkZyYW5jZTENMAsGA1UEBxMETHlvbjERMA8GA1UEChMIU2lnbWFs
+aXMxKjAoBgNVBAMTIWF1dG9yaXRlIGRldmVsb3BwZW1lbnQgc2l0ZSBzMmxvdzCB
+nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA8LcioC7SHULjQPPU3Xzetb32i/Pi
+3RHC+W2p09o/P3cylrxWWmmd3wfLIi6/QVVcaFURTXEpbrroBNdcQED2H8CF4lcH
+fyiEsv2rfgJUOkKt5xHzUm92BDZxv3x2+g0oIM5NqUcasont0kEHLi0+eOvXBAul
+mIa+P7edhQN4BzsCAwEAATANBgkqhkiG9w0BAQUFAAOBgQCMSmswiu3kAYEiI9u9
++6AL8fjT3qWCVP6UtXowoqyd8+hkCI1Ev+x30zPxHECG8SFkbVvMc4I6+E0JBj+R
+tDiQwZ9GkjwVMr3Q3vxXsFoaJ96kw+WM8HsODQmJJw+rnBmRWvUQDc9Xf9st8ev6
+HqVdjfvRDCkzkq7jm/MIq1x6hA==
+-----END CERTIFICATE-----
--- /dev/null
+-----BEGIN RSA PRIVATE KEY-----
+MIICXAIBAAKBgQDwtyKgLtIdQuNA89TdfN61vfaL8+LdEcL5banT2j8/dzKWvFZa
+aZ3fB8siLr9BVVxoVRFNcSluuugE11xAQPYfwIXiVwd/KISy/at+AlQ6Qq3nEfNS
+b3YENnG/fHb6DSggzk2pRxqyie3SQQcuLT5469cEC6WYhr4/t52FA3gHOwIDAQAB
+AoGABBhpi2YghwTrTuCXH4mPVHI97pWgp3g04/98ozEUYGULxErCAVnIqNG+H//B
+mz/ziYbg+3tQZCTj66kqVaGFTm6Krjd/mTdCoohOdoB4yoM0WAo/LRBbBE3yzxoH
+BNDojNFSFeiSWNtAc4f+G7FGory7y7H6FcYzY5ZBl+/XYZECQQD5Dwp9CttRM7NI
+q2fVsrPEJXhwc4AgCQsPJoUhlieHl749wy5IaMUdaFnF/cs19h0AycEgBoWTd0LK
+fPupoumZAkEA92yRGD/6M6X/QuRZdgjY65/Le1YxeIFBe/0nVgduNG6yfmzPVeIL
+XRFYPDXFX+c8m7f7kXDAsG1hHJy0L4OD8wJAT9IuPl0YZTH4p7WnlamsS5TmwMOD
+sMC1NqnVySniiWZspkbDsplBc2daPkZUtnqmWPZQWv88GEMEuPjNf1SjIQJBAIqp
+FUd500ZOqRdb0acMnkSucOLWEzNtfL13yiu0TlakEvQ3FpsS6ztlFQXpPIvak2TR
+XvLLNbGqGtpmF7TpB3ECQAKAa2h27Cjo/qZrLZnoEgj6BOcTFyoXeq1RtAzhZJbK
+QAb0MkYz+lVNL2XmPniiDAHZBD6BFPyK/1tNvM4eYQo=
+-----END RSA PRIVATE KEY-----
--- /dev/null
+#! /bin/sh
+
+
+
+for user in simulateur simulateur-user
+do
+echo "Création du certificat $user"
+#Création d'un certificat simulateur
+openssl req -new -out $user-req.pem -config $user-properties.txt
+
+#Signature
+openssl x509 -req -CAkey autorite_a_effacer-key.pem -CA autorite_a_effacer-cert.pem -in $user-req.pem -out $user-cert.pem -days 365
+
+#Transformation en PKCS12
+openssl pkcs12 -export -in $user-cert.pem -inkey $user-key.pem -passin pass:simulateur -passout pass:simulateur -out $user.p12
+
+#Import du certificat du simulateur
+keytool -importkeystore -srckeystore $user.p12 -keystore $user.keystore -srcstoretype pkcs12 -storepass simulateur
+
+#HACK : modification de l'alias par défaut...
+keytool -changealias -keystore simulateur.keystore -alias 1 -destalias $user -storepass simulateur
+echo "ok"
+done
+
+#Import d'une autorité de certification
+keytool -import -alias autorite -file autorite_a_effacer-cert.pem -trustcacerts -keystore simulateur.keystore -storepass simulateur
--- /dev/null
+-----BEGIN CERTIFICATE-----
+MIICYjCCAcsCAREwDQYJKoZIhvcNAQEFBQAwbDELMAkGA1UEBhMCRlIxDzANBgNV
+BAgTBkZyYW5jZTENMAsGA1UEBxMETHlvbjERMA8GA1UEChMIU2lnbWFsaXMxKjAo
+BgNVBAMTIWF1dG9yaXRlIGRldmVsb3BwZW1lbnQgc2l0ZSBzMmxvdzAeFw0wOTAz
+MTUyMDA2MjdaFw0xMDAzMTUyMDA2MjdaMIGGMQswCQYDVQQGEwJGUjEPMA0GA1UE
+CBMGRnJhbmNlMQ0wCwYDVQQHEwRMeW9uMREwDwYDVQQKEwhTaWdtYWxpczEQMA4G
+A1UECxMHVGVkZXRpczEyMDAGA1UEAxMpU2ltdWxhdGV1ciBkdSBtaW5pc3RlcmUg
+KHByb3RvY29sZSBBQ1RFUykwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALfd
+v8uIPJ+9RiVtwDkw+GWKGPNYi2z5KgOt0a5BLFf6LCxvU5YWYnxN1HHO/wPrYK3F
+Ye9/hrrLstEJimfAP8AEbuQrLd/FKCX24fgv1CG571YCUmuQauChXxIgvV9l1PfC
+aq4KetafEeDcF5T7xKhkqU1NOiF7E8MahGdf7vkRAgMBAAEwDQYJKoZIhvcNAQEF
+BQADgYEAfNus+V3KMIUsRDSFwxt2eHne8bE0j84GIN4YVz1fA00OFU3f+hEr22bt
+OOme4R6l4KVJPafoO4BsUTIqC65x7YNBA176qYzPZ6W/ypCNZo5CEbCn7goVxB4R
+BIs8+OZ8P4ar/k56Hbg4en+mqKszpN1mFIjmNT1e3UkzwZxPS2o=
+-----END CERTIFICATE-----
--- /dev/null
+-----BEGIN RSA PRIVATE KEY-----
+Proc-Type: 4,ENCRYPTED
+DEK-Info: DES-EDE3-CBC,D8B314A624FF37F9
+
+yuemvmQAMe1kqStHV2IBnM/wDwzqrD+fga90optj7cifAmE+/yzyBN72RqDMM05R
+TXS7ySLqbwpHrSY71cwhzeKFztq37fRpPREA9aO+qmX26W2OxH3IOgeOsq2FJBGl
+W5eqh0Jac51MpUw64IpETYJ709rPZIkUPzD91xdtHCAJ8KJALfGOgW0KIruHskFD
+4isvpGywxG09A8XenUW+WtRxilvd8Uz1eTGO+ox2wMlqMnlThYsW+knRjKdWhoQI
+0H/f/gwGvpQTNKgf31pC4dgt9yE4Pzz/+8pcEmjvszmKnzwdeIWXIbV50JkSjcBL
+8afmhd9KoGZ1ao2hzst/8cEOdygR0RQL0csU3Jydesnubs3fjB6WLGAo67/6I2PU
+fGjurc2S0W0yQJz4S1kNFkJ0ygLY3FsdXHPV8rjOHoUiW+l6JL3PWPebPnSWQyyh
+SfLFNWG+ZqeOBkcii0gw0Py24ebH7GVzpzs3wxTQnzDHBn9GwDIcBnKW/ssd6BDk
+LZz7iZiOwPHuAnXc9XR2ZvwWtG7s2yjIrHELqfTYYVRA8d7PazA8M3b+qfGKfaTi
+H7VPvw0dTYVLUZx+967fMSxpDpXtPHebti58GZRTPko4fmLrpwAx5NNH+tzQdvSb
+6x0vLPXQtymuKe34BauXm3quS8d51ra2AbQFVExQq2aenJWuZtRc4IxnNRGAuSFc
+3CMd8yxUr18EfyPRzxym/RUvpIT6etwCuhvj+oXmYcyQeFNKfJtn/Mw8yKEimWcg
+vcir7JLQi06QSQh6Em1PFpgGi0VgJnjnS/hAiN2q2/cokFHP8blfeQ==
+-----END RSA PRIVATE KEY-----
--- /dev/null
+RANDFILE = $ENV::HOME/.rnd
+
+[ req ]
+default_bits = 1024
+default_keyfile = simulateur-key.pem
+distinguished_name = req_distinguished_name
+prompt = no
+output_password = simulateur
+
+[ req_distinguished_name ]
+C = FR
+ST = France
+L = Lyon
+O = Sigmalis
+OU = Tedetis
+CN = Simulateur du ministere (protocole ACTES)
+
+
+
--- /dev/null
+-----BEGIN CERTIFICATE REQUEST-----
+MIIBxzCCATACAQAwgYYxCzAJBgNVBAYTAkZSMQ8wDQYDVQQIEwZGcmFuY2UxDTAL
+BgNVBAcTBEx5b24xETAPBgNVBAoTCFNpZ21hbGlzMRAwDgYDVQQLEwdUZWRldGlz
+MTIwMAYDVQQDEylTaW11bGF0ZXVyIGR1IG1pbmlzdGVyZSAocHJvdG9jb2xlIEFD
+VEVTKTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAt92/y4g8n71GJW3AOTD4
+ZYoY81iLbPkqA63RrkEsV/osLG9TlhZifE3Ucc7/A+tgrcVh73+Gusuy0QmKZ8A/
+wARu5Cst38UoJfbh+C/UIbnvVgJSa5Bq4KFfEiC9X2XU98Jqrgp61p8R4NwXlPvE
+qGSpTU06IXsTwxqEZ1/u+RECAwEAAaAAMA0GCSqGSIb3DQEBBQUAA4GBAEEAGhnH
+q1AWo6viMmn/v/r3JD+bPtJfHBF6VPEzFdsUmrkjZrtvqTOqztd0lC4V+0W48nq2
+bQrGaEK0O+vJsBb8IzrQFBcWuQwkaxYErUDQUuGKWXE00FtzC4ORVqW8NIFvPzjW
+2kWj5OpVBsX7UCFZJnfVtFHBcuw+LuMcABrW
+-----END CERTIFICATE REQUEST-----
--- /dev/null
+-----BEGIN CERTIFICATE-----
+MIICZDCCAc0CARIwDQYJKoZIhvcNAQEFBQAwbDELMAkGA1UEBhMCRlIxDzANBgNV
+BAgTBkZyYW5jZTENMAsGA1UEBxMETHlvbjERMA8GA1UEChMIU2lnbWFsaXMxKjAo
+BgNVBAMTIWF1dG9yaXRlIGRldmVsb3BwZW1lbnQgc2l0ZSBzMmxvdzAeFw0wOTAz
+MTUyMDA2MzVaFw0xMDAzMTUyMDA2MzVaMIGIMQswCQYDVQQGEwJGUjEPMA0GA1UE
+CBMGRnJhbmNlMQ0wCwYDVQQHEwRMeW9uMREwDwYDVQQKEwhTaWdtYWxpczEQMA4G
+A1UECxMHVGVkZXRpczE0MDIGA1UEAxMrVXRpbGlzYXRldXIgZHUgc2ltdWxhdGV1
+ciAocHJvdG9jb2xlIEFDVEVTKTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA
+uKr9FSs0FoKuPQ7rF8PhbqQu72Str4SqzcoNL0DHHuiCpmpdRLkD0++FaLXM/CoO
+gWAvwr3meglh4csQb9fF/FpjqV7swyVFyWvy4t7A0JNJUF1zzkMsXQ4LQ8jE6va8
+GP/XH2XFp7v1KahEN2p7vpoEYTJBC4KHdPBzj2Rh1XUCAwEAATANBgkqhkiG9w0B
+AQUFAAOBgQBpQeIuUJP5/A5QkwXDzn4NiRQky5kgnl99T9XcWT7hCgTC1VuGLSrM
+HGhcJ0Nq2T71vHzHFomvu5y0wkVE4k2nVCN4Sdf4ENJnGZxF13d2t6fHwxU+GktS
+yMpCTYiPxgzEZSOppy6UhuwuX0WtSHnheIT755a+VLSGlUJJjn4Reg==
+-----END CERTIFICATE-----
--- /dev/null
+-----BEGIN RSA PRIVATE KEY-----
+Proc-Type: 4,ENCRYPTED
+DEK-Info: DES-EDE3-CBC,886D697E0B0EFB1E
+
+kwgAeurBZU7COGPtJX/oXOVt9K9FOCoSID2ZzcWdLKdXnyszTDihXDpz0eYfwW3Z
+tXbtEMMGi7kWqrAZjj2g4vxYy21kThfE9e3jy1TEL1XXVyrN4r1y3rxazbcGpFo4
+ux0heYbDSaeMwDxnTDES1hk8r8JXwNeMZ6oBWUIP8bwv6GV9bN6P4KX3ClSMtntC
+n8PoyewbV/X//mKYdCUdQ+mERt4teZj1hZavP5oZJidkzbnuS69BfQdy5X3r4SDP
+A/cZzlOFpMq/AppX4oe3vzm1rmviqGhmJ6QmXDuqQdadkbSQREYL/taEmgqGdaX5
+OJCIslnzZ2uG5d3+prXP/DMbzFDAfwVxGc9N78xULYYkL3Pw7TRfwyM9l2lWSjv+
+OEewV+HGzP4HzBhufLViH2dtvpcaGQIYc5c9hYLe7dB1xVM9vggJPZibL0/upi9U
+sJ8iaThlyBNvZEZxF5XzYBu+pbdSa3Ix0aehVbgDW4C+XAosld3HkXbykofP75zh
+/I9SmgFZkdEDRuVGSYD4+oZuFEnxK6n1ZlDu1AJvneODvYd7xLb+5zyl7PQ93UB5
+hjS/zjYi0yAJja1EFcN2MnoOVghEE0KTluzbdkdaLrbbT5O1+ZghS686ozFwTSEK
+zS8AHjmoriVE+kDcVAbrBtmFeVJIF92R4RJIwI8qJgvfHv0eg2irK7ZZnHc1V3wV
+cj3ZIMZWzU2nnU6aqWLunRdI6xPz4s5TvDWFPqrx97PE1y0DMJF+Wlh5JpjhYOZh
+A+ww9iqPVVNPldWN5Cb4bAuDUO+rW8+vsiv6NpyGGE7zsGaCbxRNGg==
+-----END RSA PRIVATE KEY-----
--- /dev/null
+RANDFILE = $ENV::HOME/.rnd
+
+[ req ]
+default_bits = 1024
+default_keyfile = simulateur-user-key.pem
+distinguished_name = req_distinguished_name
+prompt = no
+output_password = simulateur
+
+[ req_distinguished_name ]
+C = FR
+ST = France
+L = Lyon
+O = Sigmalis
+OU = Tedetis
+CN = Utilisateur du simulateur (protocole ACTES)
+
+
+
--- /dev/null
+-----BEGIN CERTIFICATE REQUEST-----
+MIIByTCCATICAQAwgYgxCzAJBgNVBAYTAkZSMQ8wDQYDVQQIEwZGcmFuY2UxDTAL
+BgNVBAcTBEx5b24xETAPBgNVBAoTCFNpZ21hbGlzMRAwDgYDVQQLEwdUZWRldGlz
+MTQwMgYDVQQDEytVdGlsaXNhdGV1ciBkdSBzaW11bGF0ZXVyIChwcm90b2NvbGUg
+QUNURVMpMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC4qv0VKzQWgq49DusX
+w+FupC7vZK2vhKrNyg0vQMce6IKmal1EuQPT74Votcz8Kg6BYC/CveZ6CWHhyxBv
+18X8WmOpXuzDJUXJa/Li3sDQk0lQXXPOQyxdDgtDyMTq9rwY/9cfZcWnu/UpqEQ3
+anu+mgRhMkELgod08HOPZGHVdQIDAQABoAAwDQYJKoZIhvcNAQEFBQADgYEApFO8
+tNv6TUr75iHhLxXLJxDyD6nQxOnbMvRoyTjF+tzLkJXNAbHn5j0RPDZMywRwmeyl
++76MD0nmsQzg/nWSDIvVTNMqhAMQ/omptWdMJGY3CyTojtW2me8lRbYv8HPzJtZR
+fanggY0TZ3AJG8Ler7MkBCIUM29vWw3MFyDqSYQ=
+-----END CERTIFICATE REQUEST-----
--- /dev/null
+From no_response@adullact.org Sun Apr 5 09:56:53 2009
+Return-Path: <no_response@adullact.org>
+X-Original-To: eric@babette.com
+Delivered-To: eric@babette.com
+Received: from babette (localhost [127.0.0.1]) by babette (Postfix) with
+ ESMTP id 19F06DF9B; Sun, 5 Apr 2009 09:56:53 +0200 (CEST)
+From: no_response@adullact.org
+To: eric@babette.com
+To: epommate@gmail.com
+Message-ID: <3373197.01238918213043.JavaMail.eric@babette>
+Subject: Envoie de fichiers
+MIME-Version: 1.0
+Content-Type: multipart/mixed; boundary="----=_Part_0_16398807.1238918212976"
+X-Mailer: Simulateur ministere - protocole ACTES
+Date: Sun, 5 Apr 2009 09:56:53 +0200 (CEST)
+X-Evolution-Source: imap://eric@localhost/
+
+
+------=_Part_0_16398807.1238918212976
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+fichier attaché :001-123456789----7-2_0.xml
+fichier attaché :TACT--SPREF0011-123456789-20090405-0.xml
+
+------=_Part_0_16398807.1238918212976
+Content-Type: application/octet-stream; name=001-123456789----7-2_0.xml
+Content-Transfer-Encoding: base64
+Content-Disposition: attachment; filename=001-123456789----7-2_0.xml
+
+PGFjdGVzOlJldG91ckNsYXNzaWZpY2F0aW9uIHhtbG5zOmFjdGVzPSJodHRwOi8vd3d3LmludGVy
+aWV1ci5nb3V2LmZyL0FDVEVTI3YxLjEtMjAwNDAyMTYiIHhtbG5zOmluc2VlPSJodHRwOi8veG1s
+Lmluc2VlLmZyL3NjaGVtYSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNj
+aGVtYS1pbnN0YW5jZSIgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vd3d3LmludGVyaWV1ci5n
+b3V2LmZyL0FDVEVTI3YxLjEtMjAwNDAyMTYgYWN0ZXN2MV8xLnhzZCI+DQogIDxhY3RlczpEYXRl
+Q2xhc3NpZmljYXRpb24+MjAwMy0wNi0yNTwvYWN0ZXM6RGF0ZUNsYXNzaWZpY2F0aW9uPg0KICA8
+YWN0ZXM6TmF0dXJlc0FjdGVzPg0KICAgIDxhY3RlczpOYXR1cmVBY3RlIGFjdGVzOkNvZGVOYXR1
+cmVBY3RlPSIxIiBhY3RlczpMaWJlbGxlPSJEw6lsaWLDqXJhdGlvbnMiIGFjdGVzOlR5cGVBYnJl
+Z2U9IkRFIiAvPg0KICAgIDxhY3RlczpOYXR1cmVBY3RlIGFjdGVzOkNvZGVOYXR1cmVBY3RlPSIy
+IiBhY3RlczpMaWJlbGxlPSJBcnLDqnTDqXMgcsOpZ2xlbWVudGFpcmVzIiBhY3RlczpUeXBlQWJy
+ZWdlPSJBUiIgLz4NCiAgICA8YWN0ZXM6TmF0dXJlQWN0ZSBhY3RlczpDb2RlTmF0dXJlQWN0ZT0i
+MyIgYWN0ZXM6TGliZWxsZT0iQXJyw6p0w6lzIEluZGl2aWR1ZWxzIiBhY3RlczpUeXBlQWJyZWdl
+PSJBSSIgLz4NCiAgICA8YWN0ZXM6TmF0dXJlQWN0ZSBhY3RlczpDb2RlTmF0dXJlQWN0ZT0iNCIg
+YWN0ZXM6TGliZWxsZT0iQ29udHJhdHMgZXQgY29udmVudGlvbnMiIGFjdGVzOlR5cGVBYnJlZ2U9
+IkNDIiAvPg0KICAgIDxhY3RlczpOYXR1cmVBY3RlIGFjdGVzOkNvZGVOYXR1cmVBY3RlPSI1IiBh
+Y3RlczpMaWJlbGxlPSJEb2N1bWVudHMgYnVkZ8OpdGFpcmVzIGV0IGZpbmFuY2llcnMiIGFjdGVz
+OlR5cGVBYnJlZ2U9IkJGIiAvPg0KICAgIDxhY3RlczpOYXR1cmVBY3RlIGFjdGVzOkNvZGVOYXR1
+cmVBY3RlPSI2IiBhY3RlczpMaWJlbGxlPSJBdXRyZXMiIGFjdGVzOlR5cGVBYnJlZ2U9IkFVIiAv
+Pg0KICA8L2FjdGVzOk5hdHVyZXNBY3Rlcz4NCiAgPGFjdGVzOk1hdGllcmVzPg0KICAgIDxhY3Rl
+czpNYXRpZXJlMSBhY3RlczpDb2RlTWF0aWVyZT0iMSIgYWN0ZXM6TGliZWxsZT0iQ29tbWFuZGVQ
+dWJsaXF1ZSI+DQogICAgICA8YWN0ZXM6TWF0aWVyZTIgYWN0ZXM6Q29kZU1hdGllcmU9IjEiIGFj
+dGVzOkxpYmVsbGU9Ik1hcmNow6lzIHB1YmxpY3MiIC8+DQogICAgICA8YWN0ZXM6TWF0aWVyZTIg
+YWN0ZXM6Q29kZU1hdGllcmU9IjIiIGFjdGVzOkxpYmVsbGU9IkTDqWzDqWdhdGlvbnMgZGUgc2Vy
+dmljZSBwdWJsaWMiPg0KICAgICAgICA8YWN0ZXM6TWF0aWVyZTMgYWN0ZXM6Q29kZU1hdGllcmU9
+IjEiIGFjdGVzOkxpYmVsbGU9IlBhciB0eXBlIGRlIGNvbnRyYXQiIC8+DQogICAgICAgIDxhY3Rl
+czpNYXRpZXJlMyBhY3RlczpDb2RlTWF0aWVyZT0iMiIgYWN0ZXM6TGliZWxsZT0iUGFyIGNhdMOp
+Z29yaWUgZGUgc2VydmljZSBwdWJsaWMgY29uY2VybsOpIj4NCiAgICAgICAgICA8YWN0ZXM6TWF0
+aWVyZTQgYWN0ZXM6Q29kZU1hdGllcmU9IjEiIGFjdGVzOkxpYmVsbGU9IlNlcnZpY2UgcHVibGlj
+IGluZHVzdHJpZWwgZXQgY29tbWVyY2lhbCIgLz4NCiAgICAgICAgICA8YWN0ZXM6TWF0aWVyZTQg
+YWN0ZXM6Q29kZU1hdGllcmU9IjIiIGFjdGVzOkxpYmVsbGU9IlNlcnZpY2UgcHVibGljIGFkbWlu
+aXN0cmF0aWYiPg0KICAgICAgICAgICAgPGFjdGVzOk1hdGllcmU1IGFjdGVzOkNvZGVNYXRpZXJl
+PSIxIiBhY3RlczpMaWJlbGxlPSJFbnNlaWduZW1lbnQgcHVibGljIiAvPg0KICAgICAgICAgICAg
+PGFjdGVzOk1hdGllcmU1IGFjdGVzOkNvZGVNYXRpZXJlPSIyIiBhY3RlczpMaWJlbGxlPSJFbnNl
+aWduZW1lbnQgcHJpdsOpIiAvPg0KICAgICAgICAgIDwvYWN0ZXM6TWF0aWVyZTQ+DQogICAgICAg
+IDwvYWN0ZXM6TWF0aWVyZTM+DQogICAgICA8L2FjdGVzOk1hdGllcmUyPg0KICAgICAgPGFjdGVz
+Ok1hdGllcmUyIGFjdGVzOkNvZGVNYXRpZXJlPSIzIiBhY3RlczpMaWJlbGxlPSJBdXRyZXMgdHlw
+ZXMgZGUgY29udHJhdHMiIC8+DQogICAgPC9hY3RlczpNYXRpZXJlMT4NCiAgICA8YWN0ZXM6TWF0
+aWVyZTEgYWN0ZXM6Q29kZU1hdGllcmU9IjIiIGFjdGVzOkxpYmVsbGU9IlVyYmFuaXNtZSI+DQog
+ICAgICA8YWN0ZXM6TWF0aWVyZTIgYWN0ZXM6Q29kZU1hdGllcmU9IjEiIGFjdGVzOkxpYmVsbGU9
+IkRvY3VtZW50cyBkJ3VyYmFuaXNtZSIgLz4NCiAgICAgIDxhY3RlczpNYXRpZXJlMiBhY3RlczpD
+b2RlTWF0aWVyZT0iMiIgYWN0ZXM6TGliZWxsZT0iQXV0b3Jpc2F0aW9ucyBvdSBhY3RlcyByZWxh
+dGlmcyDDoCBsJ29jY3VwYXRpb24gb3Ugw6AgbCd1dGlsaXNhdGlvbiBkdSBzb2wiIC8+DQogICAg
+PC9hY3RlczpNYXRpZXJlMT4NCiAgICA8YWN0ZXM6TWF0aWVyZTEgYWN0ZXM6Q29kZU1hdGllcmU9
+IjgiIGFjdGVzOkxpYmVsbGU9IkF1dHJlcyI+DQogICAgICA8YWN0ZXM6TWF0aWVyZTIgYWN0ZXM6
+Q29kZU1hdGllcmU9IjEiIGFjdGVzOkxpYmVsbGU9Ik9yZHJlIGRlIHLDqXF1aXNpdGlvbiBkdSBj
+b21wdGFibGUiIC8+DQogICAgICA8YWN0ZXM6TWF0aWVyZTIgYWN0ZXM6Q29kZU1hdGllcmU9IjIi
+IGFjdGVzOkxpYmVsbGU9IkF1dHJlcyIgLz4NCiAgICA8L2FjdGVzOk1hdGllcmUxPg0KICA8L2Fj
+dGVzOk1hdGllcmVzPg0KPC9hY3RlczpSZXRvdXJDbGFzc2lmaWNhdGlvbj4=
+------=_Part_0_16398807.1238918212976
+Content-Type: application/octet-stream; name=TACT--SPREF0011-123456789-20090405-0.xml
+Content-Transfer-Encoding: 7bit
+Content-Disposition: attachment; filename=TACT--SPREF0011-123456789-20090405-0.xml
+
+<actes:EnveloppeMISILLCL xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216" xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd">
+ <actes:Emetteur>
+ <actes:IDSousPref actes:Departement="001" actes:Arrondissement="1" />
+ </actes:Emetteur>
+ <actes:FormulairesEnvoyes>
+ <actes:Formulaire>
+ <actes:NomFichier>001-123456789----7-2_0.xml</actes:NomFichier>
+ </actes:Formulaire>
+ </actes:FormulairesEnvoyes>
+ <actes:Destinataire insee:SIREN="123456789" />
+</actes:EnveloppeMISILLCL>
+------=_Part_0_16398807.1238918212976--
--- /dev/null
+<?xml version='1.0' encoding='ISO-8859-1' ?>
+<actes:AnomalieActe xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216" xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd">
+ <actes:Date>2010-07-01</actes:Date>
+ <actes:Nature>002</actes:Nature>
+ <actes:Detail>Version de la classification en sous-matières obsolète</actes:Detail>
+ <actes:Acte actes:Date="2010-06-28" actes:NumeroInterne="CCPD280610_1" actes:CodeNatureActe="1" xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd">
+ <actes:CodeMatiere1 actes:CodeMatiere="8" />
+ <actes:CodeMatiere2 actes:CodeMatiere="2" />
+ <actes:Objet>1- DASI Avances au titre du FSE</actes:Objet>
+ <actes:ClassificationDateVersion>2009-05-04</actes:ClassificationDateVersion>
+ <actes:Document>
+ <actes:NomFichier>011-221100019-20100628-CCPD280610_1-DE-1-1_1.pdf</actes:NomFichier>
+ </actes:Document>
+ <actes:Annexes actes:Nombre="0" />
+ </actes:Acte>
+ <actes:ClassificationDateVersionEnCours>2010-06-25</actes:ClassificationDateVersionEnCours>
+ <actes:Date>2010-07-01</actes:Date>
+ <actes:Nature>002</actes:Nature>
+ <actes:Detail>Version de la classification en sous-matières obsolète</actes:Detail>
+ <actes:ActeRecu actes:Date="2010-06-28" actes:NumeroInterne="CCPD280610_1" actes:CodeNatureActe="1">
+ <actes:CodeMatiere1 actes:CodeMatiere="8" />
+ <actes:CodeMatiere2 actes:CodeMatiere="2" />
+ <actes:Objet>1- DASI Avances au titre du FSE</actes:Objet>
+ <actes:ClassificationDateVersion>2009-05-04</actes:ClassificationDateVersion>
+ <actes:Document>
+ <actes:NomFichier>011-221100019-20100628-CCPD280610_1-DE-1-1_1.pdf</actes:NomFichier>
+ </actes:Document>
+ <actes:Annexes actes:Nombre="0" />
+ </actes:ActeRecu>
+ <actes:ClassificationDateVersionEnCours>2010-06-25</actes:ClassificationDateVersionEnCours>
+</actes:AnomalieActe>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<actes:AnomalieActe xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216
+actesv1_1.xsd">
+ <actes:Date>2003-07-17</actes:Date>
+ <actes:Nature>006</actes:Nature>
+ <actes:Detail>Le fichier acte.pdf est introuvable</actes:Detail>
+ <actes:ActeRecu actes:Date="2003-07-14"
+ actes:NumeroInterne="9999AAA" actes:CodeNatureActe="3">
+ <actes:CodeMatiere1 actes:CodeMatiere="2" />
+ <actes:CodeMatiere2 actes:CodeMatiere="2" />
+ <actes:Objet>Permis de construire au lieu-dit "Les Rochers"</actes:Objet>
+ <actes:ClassificationDateVersion>2003-06-10</actes:ClassificationDateVersion>
+ <actes:Document>
+ <actes:NomFichier>980-454545011-20080710-BEBE1-AI-1-1_1.pdf</actes:NomFichier>
+ </actes:Document>
+ <actes:Annexes actes:Nombre="1">
+ <actes:Annexe>
+ <actes:NomFichier>980-454545011-20080710-BEBE1-AI-1-1_2.pdf</actes:NomFichier>
+ </actes:Annexe>
+ </actes:Annexes>
+ </actes:ActeRecu>
+ <actes:ClassificationDateVersionEnCours>2003-06-10</actes:ClassificationDateVersionEnCours>
+</actes:AnomalieActe>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<actes:DemandeClassification
+ xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216
+actesv1_1.xsd">
+ <actes:DateClassification>2003-06-10</actes:DateClassification>
+</actes:DemandeClassification>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<actes:RetourClassification
+ xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216
+actesv1_1.xsd">
+ <actes:DateClassification>2003-06-25</actes:DateClassification>
+ <actes:NaturesActes>
+ <actes:NatureActe actes:CodeNatureActe="1"
+ actes:Libelle="Délibérations" actes:TypeAbrege="DE" />
+ <actes:NatureActe actes:CodeNatureActe="2"
+ actes:Libelle="Arrêtés réglementaires" actes:TypeAbrege="AR" />
+ <actes:NatureActe actes:CodeNatureActe="3"
+ actes:Libelle="Arrêtés Individuels" actes:TypeAbrege="AI" />
+ <actes:NatureActe actes:CodeNatureActe="4"
+ actes:Libelle="Contrats et conventions" actes:TypeAbrege="CC" />
+ <actes:NatureActe actes:CodeNatureActe="5"
+ actes:Libelle="Documents budgétaires et financiers" actes:TypeAbrege="BF" />
+ <actes:NatureActe actes:CodeNatureActe="6"
+ actes:Libelle="Autres" actes:TypeAbrege="AU" />
+ </actes:NaturesActes>
+ <actes:Matieres>
+ <actes:Matiere1 actes:CodeMatiere="1" actes:Libelle="CommandePublique">
+ <actes:Matiere2 actes:CodeMatiere="1" actes:Libelle="Marchés publics" />
+ <actes:Matiere2 actes:CodeMatiere="2"
+ actes:Libelle="Délégations de service public">
+ <actes:Matiere3 actes:CodeMatiere="1"
+ actes:Libelle="Par type de contrat" />
+ <actes:Matiere3 actes:CodeMatiere="2"
+ actes:Libelle="Par catégorie de service public concerné">
+ <actes:Matiere4 actes:CodeMatiere="1"
+ actes:Libelle="Service public industriel et commercial" />
+ <actes:Matiere4 actes:CodeMatiere="2"
+ actes:Libelle="Service public administratif">
+ <actes:Matiere5 actes:CodeMatiere="1"
+ actes:Libelle="Enseignement public" />
+ <actes:Matiere5 actes:CodeMatiere="2"
+ actes:Libelle="Enseignement privé" />
+ </actes:Matiere4>
+ </actes:Matiere3>
+ </actes:Matiere2>
+ <actes:Matiere2 actes:CodeMatiere="3"
+ actes:Libelle="Autres types de contrats" />
+ </actes:Matiere1>
+ <actes:Matiere1 actes:CodeMatiere="2" actes:Libelle="Urbanisme">
+ <actes:Matiere2 actes:CodeMatiere="1"
+ actes:Libelle="Documents d'urbanisme" />
+ <actes:Matiere2 actes:CodeMatiere="2"
+ actes:Libelle="Autorisations ou actes relatifs à l'occupation ou à l'utilisation du sol" />
+ </actes:Matiere1>
+ <actes:Matiere1 actes:CodeMatiere="8" actes:Libelle="Autres">
+ <actes:Matiere2 actes:CodeMatiere="1"
+ actes:Libelle="Ordre de réquisition du comptable" />
+ <actes:Matiere2 actes:CodeMatiere="2" actes:Libelle="Autres" />
+ </actes:Matiere1>
+ </actes:Matieres>
+</actes:RetourClassification>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<actes:ReponseClassificationSansChangement
+ xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216
+actesv1_1.xsd">
+ <actes:DateClassification>2003-06-10</actes:DateClassification>
+</actes:ReponseClassificationSansChangement>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<actes:Acte xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216
+actesv1_1.xsd"
+ actes:Date="2003-07-14" actes:NumeroInterne="9999AAA"
+ actes:CodeNatureActe="3">
+ <actes:CodeMatiere1 actes:CodeMatiere="2" />
+ <actes:CodeMatiere2 actes:CodeMatiere="2" />
+ <actes:Objet>Permis de construire au lieu-dit "Les Rochers"</actes:Objet>
+ <actes:ClassificationDateVersion>2003-06-10</actes:ClassificationDateVersion>
+ <actes:Document>
+ <actes:NomFichier>acte.pdf</actes:NomFichier>
+ </actes:Document>
+ <actes:Annexes actes:Nombre="1">
+ <actes:Annexe>
+ <actes:NomFichier>annexe_acte.pdf</actes:NomFichier>
+ </actes:Annexe>
+ </actes:Annexes>
+</actes:Acte>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<actes:ARActe xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216
+actesv1_1.xsd"
+ actes:DateReception="2003-07-17" actes:IDActe="035-123456789-20030714-9999AAA-AI">
+ <actes:ActeRecu actes:Date="2003-07-14"
+ actes:NumeroInterne="9999AAA" actes:CodeNatureActe="3">
+ <actes:CodeMatiere1 actes:CodeMatiere="2" />
+ <actes:CodeMatiere2 actes:CodeMatiere="2" />
+ <actes:Objet>Permis de construire au lieu-dit "Les Rochers"</actes:Objet>
+ <actes:ClassificationDateVersion>2003-06-10</actes:ClassificationDateVersion>
+ <actes:Document>
+ <actes:NomFichier>980-454545011-20080710-BEBE1-AI-1-1_2.pdf</actes:NomFichier>
+ </actes:Document>
+ <actes:Annexes actes:Nombre="1">
+ <actes:Annexe>
+ <actes:NomFichier>980-454545011-20080710-BEBE1-AI-1-1_3.pdf</actes:NomFichier>
+ </actes:Annexe>
+ </actes:Annexes>
+ </actes:ActeRecu>
+ <actes:ClassificationDateVersionEnCours>2003-06-10</actes:ClassificationDateVersionEnCours>
+</actes:ARActe>
--- /dev/null
+<actes:CourrierSimple xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216" xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd" actes:DateCourrierPref="2008-12-31" actes:IDActe="980-454545011-20080507-BEBE13-AI">
+ <actes:Document>
+ <actes:NomFichier>980-454545011-20080507-BEBE13-AI-2-1_1.pdf</actes:NomFichier>
+ </actes:Document>
+</actes:CourrierSimple>
\ No newline at end of file
--- /dev/null
+<actes:ReponseCourrierSimple xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216" xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd" actes:DateCourrierPref="2008-12-31" actes:IDActe="980-454545011-20080507-BEBE13-AI">
+ <actes:Document>
+ <actes:NomFichier>980-454545011-20080507-BEBE13-AI-2-2_1.pdf</actes:NomFichier>
+ </actes:Document>
+</actes:ReponseCourrierSimple>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<actes:DemandePieceComplementaire
+ xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216
+actesv1_1.xsd"
+ actes:DateCourrierPref="2003-08-01" actes:IDActe="035-123456789-20030714-9999AAA-AI">
+ <actes:DescriptionPieces>Plan du bâtiment</actes:DescriptionPieces>
+ <actes:Document>
+ <actes:NomFichier>courrier_demande.pdf</actes:NomFichier>
+ </actes:Document>
+</actes:DemandePieceComplementaire>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<actes:ARDemandePieceComplementaire
+ xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216
+actesv1_1.xsd"
+ actes:DateCourrierPref="2003-08-01" actes:IDActe="035-123456789-20030714-9999aaa-AI" />
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<actes:RefusPieceComplementaire
+ xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216
+actesv1_1.xsd"
+ actes:DateCourrierPref="2003-08-01" actes:IDActe="035-123456789-20030714-9999AAA-AI">
+ <actes:Document>
+ <actes:NomFichier>refus_motive.pdf</actes:NomFichier>
+ </actes:Document>
+</actes:RefusPieceComplementaire>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<actes:PieceComplementaire
+ xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216
+actesv1_1.xsd"
+ actes:DateCourrierPref="2003-08-01" actes:IDActe="035-123456789-20030714-9999AAA-AI">
+ <actes:Documents>
+ <actes:Document>
+ <actes:NomFichier>980-454545011-20080710-BEBE1-AI-3-4_1.pdf</actes:NomFichier>
+ </actes:Document>
+ </actes:Documents>
+</actes:PieceComplementaire>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<actes:ARPieceComplementaire
+ xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216
+actesv1_1.xsd"
+ actes:DateReception="2003-08-08">
+ <actes:InfosCourrierPref
+ actes:DateCourrierPref="2003-08-01" actes:IDActe="035-123456789-20030714-9999AAA-AI" />
+</actes:ARPieceComplementaire>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<actes:LettreObservations
+ xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216
+actesv1_1.xsd"
+ actes:DateCourrierPref="2003-08-13" actes:IDActe="035-123456789-20030714-9999AAA-AI">
+ <actes:Motif>Permis de construire en zone inondable</actes:Motif>
+ <actes:Document>
+ <actes:NomFichier>observations.pdf</actes:NomFichier>
+ </actes:Document>
+</actes:LettreObservations>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<actes:ARLettreObservations
+ xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216
+actesv1_1.xsd"
+ actes:DateCourrierPref="2003-08-13" actes:IDActe="035-123456789-20030714-9999AAA-AI" />
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<actes:RejetLettreObservations
+ xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216
+actesv1_1.xsd"
+ actes:DateCourrierPref="2003-08-13" actes:IDActe="035-123456789-20030714-9999aaa-AI">
+ <actes:Document>
+ <actes:NomFichier>RejetLO.pdf</actes:NomFichier>
+ </actes:Document>
+</actes:RejetLettreObservations>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<actes:ReponseLettreObservations
+ xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216
+actesv1_1.xsd"
+ actes:DateCourrierPref="2003-08-13" actes:IDActe="035-123456789-20030714-9999AAA-AI">
+ <actes:Document>
+ <actes:NomFichier>980-454545011-20080710-BEBE1-AI-4-4_1.pdf</actes:NomFichier>
+ </actes:Document>
+</actes:ReponseLettreObservations>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<actes:ARReponseRejetLettreObservations
+ xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216
+actesv1_1.xsd"
+ actes:DateReception="2003-08-27">
+ <actes:InfosCourrierPref
+ actes:DateCourrierPref="2003-08-13" actes:IDActe="035-123456789-20030714-9999aaa-AI" />
+</actes:ARReponseRejetLettreObservations>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<actes:DefereTA xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216
+actesv1_1.xsd"
+ actes:IDActe="035-123456789-20030714-9999aaa-AI">
+ <actes:DateDepot>2003-09-17</actes:DateDepot>
+ <actes:NatureIllegalite>Permis de construire en zone inondable</actes:NatureIllegalite>
+ <actes:PiecesJointes>
+ <actes:PieceJointe>
+ <actes:NomFichier>Courrier_defere.pdf</actes:NomFichier>
+ </actes:PieceJointe>
+ </actes:PiecesJointes>
+</actes:DefereTA>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<actes:Annulation xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216
+actesv1_1.xsd"
+ actes:IDActe="035-123456789-20030714-9999AAA-AI" />
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<actes:ARAnnulation xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+ xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216
+actesv1_1.xsd"
+ actes:DateReception="1967-08-13" actes:IDActe="035-123456789-20030714-9999AAA-AI" />
--- /dev/null
+<?xml version='1.0' encoding='ISO-8859-1' ?>
+<actes:ARActe xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216" xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd" actes:IDActe="077-217702968-20100708-A2010_926-AI" actes:DateReception="2010-07-08">
+ <actes:Acte actes:Date="2010-07-08" actes:NumeroInterne="A2010_926" actes:CodeNatureActe="3" xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd">
+ <actes:CodeMatiere1 actes:CodeMatiere="4" />
+ <actes:CodeMatiere2 actes:CodeMatiere="1" />
+ <actes:CodeMatiere3 actes:CodeMatiere="4" />
+ <actes:Objet>Nomination de Madame Florence ARTHUR
+En qualité d adjoint technique territorial de 2ème classe temporaire</actes:Objet>
+ <actes:ClassificationDateVersion>2008-02-20</actes:ClassificationDateVersion>
+ <actes:Document>
+ <actes:NomFichier>077-217702968-20100708-A2010_926-AI-1-1_1.pdf</actes:NomFichier>
+ </actes:Document>
+ <actes:Annexes actes:Nombre="0" />
+ </actes:Acte>
+ <actes:ClassificationDateVersionEnCours>2008-02-20</actes:ClassificationDateVersionEnCours>
+ <actes:ActeRecu actes:Date="2010-07-08" actes:NumeroInterne="A2010_926" actes:CodeNatureActe="3">
+ <actes:CodeMatiere1 actes:CodeMatiere="4" />
+ <actes:CodeMatiere2 actes:CodeMatiere="1" />
+ <actes:CodeMatiere3 actes:CodeMatiere="4" />
+ <actes:Objet>Nomination de Madame Florence ARTHUR
+En qualité d adjoint technique territorial de 2ème classe temporaire</actes:Objet>
+ <actes:ClassificationDateVersion>2008-02-20</actes:ClassificationDateVersion>
+ <actes:Document>
+ <actes:NomFichier>077-217702968-20100708-A2010_926-AI-1-1_1.pdf</actes:NomFichier>
+ </actes:Document>
+ <actes:Annexes actes:Nombre="0" />
+ </actes:ActeRecu>
+ <actes:ClassificationDateVersionEnCours />
+</actes:ARActe>
--- /dev/null
+<?xml version='1.0' encoding='ISO-8859-1' ?>
+<actes:ARActe xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216" xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd" actes:IDActe="077-217702968-20100708-A2010_926-AI" actes:DateReception="2010-07-08">
+ <actes:Acte actes:Date="2010-07-08" actes:NumeroInterne="A2010_926" actes:CodeNatureActe="3" xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd">
+ <actes:CodeMatiere1 actes:CodeMatiere="4" />
+ <actes:CodeMatiere2 actes:CodeMatiere="1" />
+ <actes:CodeMatiere3 actes:CodeMatiere="4" />
+ <actes:Objet>Nomination de Madame Florence ARTHUR
+En qualité d adjoint technique territorial de 2ème classe temporaire</actes:Objet>
+ <actes:ClassificationDateVersion>2008-02-20</actes:ClassificationDateVersion>
+ <actes:Document>
+ <actes:NomFichier>077-217702968-20100708-A2010_926-AI-1-1_1.pdf</actes:NomFichier>
+ </actes:Document>
+ <actes:Annexes actes:Nombre="0" />
+ </actes:Acte>
+ <actes:ClassificationDateVersionEnCours>2008-02-20</actes:ClassificationDateVersionEnCours>
+ <actes:ActeRecu actes:Date="2010-07-08" actes:NumeroInterne="A2010_926" actes:CodeNatureActe="3">
+ <actes:CodeMatiere1 actes:CodeMatiere="4" />
+ <actes:CodeMatiere2 actes:CodeMatiere="1" />
+ <actes:CodeMatiere3 actes:CodeMatiere="4" />
+ <actes:Objet>Nomination de Madame Florence ARTHUR
+En qualité d adjoint technique territorial de 2ème classe temporaire</actes:Objet>
+ <actes:ClassificationDateVersion>2008-02-20</actes:ClassificationDateVersion>
+ <actes:Document>
+ <actes:NomFichier>077-217702968-20100708-A2010_926-AI-1-1_1.pdf</actes:NomFichier>
+ </actes:Document>
+ <actes:Annexes actes:Nombre="0" />
+ </actes:ActeRecu>
+ <actes:ClassificationDateVersionEnCours />
+</actes:ARActe>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<actes:DemandeClassification
+xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216"
+xmlns:insee="http://xml.insee.fr/schema"
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd">
+ <actes:DateClassification>1970-01-01</actes:DateClassification>
+</actes:DemandeClassification>
--- /dev/null
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<actes:EnveloppeCLMISILL xmlns:actes="http://www.interieur.gouv.fr/ACTES#v1.1-20040216" xmlns:insee="http://xml.insee.fr/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd">
+ <actes:Emetteur>
+ <actes:IDCL insee:SIREN="123456789" actes:Departement="001" actes:Arrondissement="2" actes:Nature="31"/>
+ <actes:Referent>
+ <actes:Nom>acte Utilisateur</actes:Nom>
+ <actes:Telephone></actes:Telephone>
+ <actes:Email>epommate@gmail.com</actes:Email>
+ </actes:Referent>
+ </actes:Emetteur>
+ <actes:AdressesRetour>
+ <actes:Email>eric@babette.com</actes:Email>
+ </actes:AdressesRetour>
+ <actes:FormulairesEnvoyes>
+ <actes:Formulaire>
+ <actes:NomFichier>001-123456789----7-1_0.xml</actes:NomFichier>
+ </actes:Formulaire>
+ </actes:FormulairesEnvoyes>
+</actes:EnveloppeCLMISILL>
--- /dev/null
+-----BEGIN CERTIFICATE-----
+MIIDYzCCAsygAwIBAgIJAMrySM1jskRaMA0GCSqGSIb3DQEBBQUAMH8xCzAJBgNV
+BAYTAkZSMQ8wDQYDVQQIEwZGcmFuY2UxDTALBgNVBAcTBEx5b24xETAPBgNVBAoT
+CFNpZ21hbGlzMT0wOwYDVQQDEzRBdXRvcml0ZSBkZSBjZXJ0aWZpY2F0aW9uIEVE
+RE9TIChkZXZlbG9wcGVtZW50L3Rlc3QpMB4XDTA5MDMxNTA3NTYyMFoXDTE5MDMx
+MzA3NTYyMFowfzELMAkGA1UEBhMCRlIxDzANBgNVBAgTBkZyYW5jZTENMAsGA1UE
+BxMETHlvbjERMA8GA1UEChMIU2lnbWFsaXMxPTA7BgNVBAMTNEF1dG9yaXRlIGRl
+IGNlcnRpZmljYXRpb24gRURET1MgKGRldmVsb3BwZW1lbnQvdGVzdCkwgZ8wDQYJ
+KoZIhvcNAQEBBQADgY0AMIGJAoGBAKbbBmbJYEi3toUiVZh/dVT1lu/beIwJLm59
+pGUrbhz7dK1Ac0nudwggkYTcRRG1RQz8/1/GUDmda5AamiR/NE0X3wsRjjzjmOEs
+Nyz3qzEWKZouqet3jDn0yhkPlRa17m1A0nr/AZMkTl5OCCOFZspgKP8GpqVQPr6z
+14xCarV3AgMBAAGjgeYwgeMwHQYDVR0OBBYEFHy9Xh9yxB23Lj2okYJ5kP91CDGG
+MIGzBgNVHSMEgaswgaiAFHy9Xh9yxB23Lj2okYJ5kP91CDGGoYGEpIGBMH8xCzAJ
+BgNVBAYTAkZSMQ8wDQYDVQQIEwZGcmFuY2UxDTALBgNVBAcTBEx5b24xETAPBgNV
+BAoTCFNpZ21hbGlzMT0wOwYDVQQDEzRBdXRvcml0ZSBkZSBjZXJ0aWZpY2F0aW9u
+IEVERE9TIChkZXZlbG9wcGVtZW50L3Rlc3QpggkAyvJIzWOyRFowDAYDVR0TBAUw
+AwEB/zANBgkqhkiG9w0BAQUFAAOBgQAWWxwZgAne1j8U9qgLbEqifqe4QCWWJ4Go
+GpvZ5cUHMuX2O5GfDsyhJqDfiYnjJ5rElkGTAUmVJye546qPjY3PDL1pco7Q0P07
+t9LfzA4YuBMVnjjW1C844MUl1ccCoeSeEyYPs+lPtZFMJ2NNoIPVE7OP13v/vyEm
+K+xEcBQX6w==
+-----END CERTIFICATE-----
--- /dev/null
+-----BEGIN RSA PRIVATE KEY-----
+Proc-Type: 4,ENCRYPTED
+DEK-Info: DES-EDE3-CBC,5365CF11CB1EEFCD
+
+6rkqWcbMv3IHSqOlBzk6uSt5+EmhVzZFsl+EJbS5rf2U5CTxA1Hp/T6wRnvEp/AK
+iN/QEmI0OdxlWoresR3eQHupFTH7gHFAx9OCGdj1Q0awfTCvx3ZLyIvxlPE878T3
+u+GksWfmgEPTTOkyFbjLLWyvwgqgg4xg9rdYnr6+HIp1bXOLCBdKU15jZufCNK08
+XzPYbGz1i1dr92W0oZ55o0vF7fYUOs2ZUzqPEZF74f8/aVqkCvzime8yYRbs1xmm
+FVUq/wDUpFa864m9V6mNYVFhVIuLUFklXWiVo5Xzy/ocDhpWeLXrMzlVEcE0kQ1Y
+9/O/XU2NgQZIvvlkqlHVcJagi5tsBPLs4avc1fHvP4K3+Q3l+nOnfQP6Ws5lhyoL
+hrHYchJz6xItCNfroVgQse77yxXntsqEXpPyiaQ9LWROAbbDsy7a5OcaaYpGLkft
+cWG4IzS1dSjpC0DZJuCNfVz0c1dn7ApyxBq/KKLBl1VbEdaTe/D3nkplsdD7gM4V
+raciuDJ1Rc/Csp5NYWzmUs9npAslS9WfO+Nkh2jxg1esogpfpwhNfN1VMfN9Ff9W
+C0Ey5O/HwW3yV4VwoOXevfccicYuLvIOsAFOHAHQuvbffzOr+GxATHllGHOjt1ld
+agjUz7yTIgxGfBbM3HoCUOVL+qrhSvr8eFdFF2h+wiyN/Hr7/pnZvimZCo9JSJnO
+nlYnotlaYnAyemQQxCZqQ/dH4KzJWoLDZ8uVuRyrBQ9/QwkciRQ/Ns2mhal141AE
+q8Jdl7crusqYiDU5AIVwYrn0av46IO7QohLYrRt7EGr8eSdgywR/5A==
+-----END RSA PRIVATE KEY-----
--- /dev/null
+package com.adullact.tedetis;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.util.Properties;
+
+import org.dbunit.PropertiesBasedJdbcDatabaseTester;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.EnveloppePath;
+import com.adullact.tedetis.actes.NotificationActes;
+import com.adullact.tedetis.helios.FichierCompteur;
+import com.adullact.tedetis.util.ClientFTP;
+import com.adullact.tedetis.util.CriticalMailSender;
+import com.adullact.tedetis.util.FileSender;
+import com.adullact.tedetis.util.MailReceiver;
+import com.adullact.tedetis.util.MailSender;
+
+public class ConfigurationEnvironnement {
+
+ public static final String NOM_FICHIER = "tedetis.properties";
+
+ private Properties properties;
+
+ private String webcontent_path;
+
+ public ConfigurationEnvironnement(String pathDirectory) throws TedetisException{
+ properties = new Properties() ;
+ try {
+ properties.load(new FileInputStream(pathDirectory + NOM_FICHIER));
+ } catch (Exception e){
+ throw new TedetisException("Fichier de configuration introuvable",e);
+ }
+ }
+
+ public void setWebcontentPath(String webcontent_path){
+ this.webcontent_path = webcontent_path;
+ }
+
+ private String retrieveProperty(String property){
+ String value;
+ value = properties.getProperty(property);
+ if (value != null){
+ value = value.trim();
+ }
+ return value;
+ }
+
+ public String getTrigramme(){
+ return retrieveProperty("actes_trigramme");
+ }
+
+ public String getQuadrigramme(){
+ return retrieveProperty("actes_quadrigramme");
+ }
+
+ public Connection getJdbcConnection() throws SQLException, ClassNotFoundException {
+ Class.forName("org.postgresql.Driver");
+
+ System.setProperty( PropertiesBasedJdbcDatabaseTester.DBUNIT_DRIVER_CLASS, "org.postgresql.Driver" );
+ System.setProperty( PropertiesBasedJdbcDatabaseTester.DBUNIT_CONNECTION_URL, retrieveProperty("sgbd_url") );
+ System.setProperty( PropertiesBasedJdbcDatabaseTester.DBUNIT_USERNAME, retrieveProperty("sgbd_login") );
+ System.setProperty( PropertiesBasedJdbcDatabaseTester.DBUNIT_PASSWORD, retrieveProperty("sgbd_password") );
+
+
+ Connection jdbcConnection = DriverManager.getConnection(retrieveProperty("sgbd_url"),
+ retrieveProperty("sgbd_login"),
+ retrieveProperty("sgbd_password"));
+
+ PreparedStatement ps = jdbcConnection.prepareStatement("SET client_encoding TO UNICODE;");
+ ps.execute();
+
+ return jdbcConnection;
+ }
+
+ public EnveloppePath getTedetisUploadPath(){
+ return new EnveloppePath(retrieveProperty("tdt_upload_path"));
+ }
+
+ public Parapheur getParapheur(){
+
+ String certFile = retrieveProperty("timestamping_p12_file");
+ String password = retrieveProperty("timestamping_p12_password");
+ Parapheur parapheur = new Parapheur(certFile,password);
+ return parapheur;
+
+ }
+
+ public MailReceiver getMailReceveir(){
+
+ int mailPort = 143;
+
+ //TODO :
+ //private String mailForward;
+
+ String mailHost = retrieveProperty("mail_host");
+ if (retrieveProperty("mail_port") != null){
+ mailPort = Integer.parseInt(retrieveProperty("mail_port"));
+ }
+ String mailLogin = retrieveProperty("mail_login");
+ String mailPass = retrieveProperty("mail_pass");
+ //mailForward = getInitParameter("mailForward");
+
+ return new MailReceiver(mailHost,mailPort,mailLogin,mailPass);
+
+ }
+
+ public FileSender getFileSender(){
+
+ String urlMinistere = retrieveProperty("ministere_url");
+ String typeAuthentificationSecondaire = retrieveProperty("ministere_authentication");
+ String loginAuthentificationSecondaire = retrieveProperty("ministere_login");
+ String passwordAuthentificationSecondaire = retrieveProperty("ministere_password");
+
+ String keystorePath = retrieveProperty("keystore_path");
+ String keystorePassword = retrieveProperty("keystore_password");
+
+ String traceSSL = retrieveProperty("ministere_trace_ssl") ;
+
+ FileSender fileSender = new FileSender(urlMinistere);
+
+ if (traceSSL.compareTo("true") == 0) {
+ fileSender.setDebugSSL();
+ }
+
+ fileSender.setSSLParam(keystorePath,keystorePassword);
+ fileSender.setAuthentication(typeAuthentificationSecondaire, loginAuthentificationSecondaire, passwordAuthentificationSecondaire);
+ fileSender.setTimeout(getSendArchiveTimeoutInMillisecond());
+ return fileSender;
+
+ }
+
+ public CriticalMailSender getCriticalMailSender(){
+ String emailAdmin = retrieveProperty("email_admin");
+ String mailHost = retrieveProperty("mailer_host");
+ CriticalMailSender criticalMailSender = new CriticalMailSender(emailAdmin);
+ criticalMailSender.setMailHost(mailHost);
+ return criticalMailSender;
+ }
+
+ public NotificationActes getNotificationActes() throws SQLException, ClassNotFoundException{
+ return new NotificationActes(getMailFileSender());
+ }
+
+ public MailSender getMailFileSender() {
+ String mailFrom = retrieveProperty("mailer_from");
+ String xMailer = retrieveProperty("mailer_xmailer");
+ String subject = retrieveProperty("mailer_subject");
+ String mailHost = retrieveProperty("mailer_host");
+ String mailPort = retrieveProperty("mailer_port");
+
+ MailSender mailSender = new MailSender();
+ mailSender.setMailFrom(mailFrom);
+ mailSender.setXMailer(xMailer);
+ mailSender.setSubject(subject);
+ mailSender.setMailHost(mailHost);
+ mailSender.setMailPort(mailPort);
+ mailSender.setWebContentPath(webcontent_path);
+ return mailSender;
+ }
+
+ public FileSender getFileSenderForTesting(String AuthenticationType,boolean withSSL){
+ String property = "simulateur_url";
+ if (withSSL) {
+ property += "_ssl";
+ }
+ if (AuthenticationType.equals(FileSender.AUTHENTICATION_BASIC)) {
+ property += "_basic";
+ }
+ String url = retrieveProperty(property);
+ FileSender fileSender = new FileSender(url);
+ if (AuthenticationType.equals(FileSender.AUTHENTICATION_BASIC)) {
+ String loginAuthentificationSecondaire = retrieveProperty("ministere_login");
+ String passwordAuthentificationSecondaire = retrieveProperty("ministere_password");
+ fileSender.setAuthentication(FileSender.AUTHENTICATION_BASIC, loginAuthentificationSecondaire, passwordAuthentificationSecondaire);
+ }
+ if (withSSL){
+ String keystorePath = retrieveProperty("keystore_path");
+ String keystorePassword = retrieveProperty("keystore_password");
+ fileSender.setSSLParam(keystorePath, keystorePassword);
+ }
+
+ return fileSender;
+ }
+
+ public ClientFTP getClientFTP(){
+ String host = retrieveProperty("helios_host");
+ int port = Integer.parseInt(retrieveProperty("helios_port"));
+
+ String login = retrieveProperty("helios_login_test");
+ String password = retrieveProperty("helios_password_test");
+
+ String helios_demo = retrieveProperty("helios_demo");
+
+ ClientFTP clientFTP = new ClientFTP(host,port);
+ if (login != null){
+ clientFTP.setLogin(login,password);
+ }
+
+ if (helios_demo != null){
+ clientFTP.setDemoMode();
+ }
+
+ return clientFTP;
+ }
+
+ public String getClientFTPProperty(){
+ String result = "Host : " + retrieveProperty("helios_host")
+ + " Port : " + retrieveProperty("helios_port")
+ + " Login : " + retrieveProperty("helios_login_test") + " Mode démo : " + retrieveProperty("helios_demo");
+
+ return result;
+ }
+
+ public FichierCompteur getFichierCompteur(){
+ FichierCompteur f = new FichierCompteur(new File(retrieveProperty("helios_counter")));
+ return f;
+ }
+
+ public String getDiretoryHeliosSending(){
+ return retrieveProperty("helios_files_upload_root");
+ }
+
+ public String getDirectoryHeliosResponse(){
+ return retrieveProperty("helios_response_root");
+ }
+
+ public String getDirectoryHeliosResponseTmp(){
+ return retrieveProperty("helios_response_tmp");
+ }
+
+ public String getDirectoryServerHeliosResponse() {
+ return retrieveProperty("helios_response_server_root");
+ }
+
+ public String getEmailAdmin(){
+ return retrieveProperty("email_admin");
+ }
+
+ public boolean getActesSimulateurEmailInHTML(){
+ return ! retrieveProperty("actes_simulateur_email_in_html").equals("");
+ }
+
+ public boolean getZipMode(){
+ String helios_zip = retrieveProperty("helios_zip");
+ if ( helios_zip == null){
+ return false;
+ }
+ if (helios_zip.equals("1")){
+ return true;
+ }
+ return false;
+ }
+
+ public int getSendArchiveTimeoutInMillisecond(){
+ String tmp = retrieveProperty("send_archive_timeout_in_millisecond");
+ if ( tmp == null){
+ return 10000;
+ }
+ return Integer.parseInt(tmp);
+ }
+
+}
\ No newline at end of file
--- /dev/null
+/*
+Copyright Alternance-Soft
+contributeur : Frédéric Souchon, Août 2006
+
+contact@ntsys.fr, fsouchon@alternancesoft.com
+
+Ce logiciel est un programme informatique servant à la
+dématérialisation de l'administration.
+
+Ce logiciel est régi par la licence CeCILL soumise au droit français et
+respectant les principes de diffusion des logiciels libres. Vous pouvez
+utiliser, modifier et/ou redistribuer ce programme sous les conditions
+de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA
+sur le site "http://www.cecill.info".
+
+En contrepartie de l'accessibilité au code source et des droits de copie,
+de modification et de redistribution accordés par cette licence, il n'est
+offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons,
+seule une responsabilité restreinte pèse sur l'auteur du programme, le
+titulaire des droits patrimoniaux et les concédants successifs.
+
+A cet égard l'attention de l'utilisateur est attirée sur les risques
+associés au chargement, à l'utilisation, à la modification et/ou au
+développement et à la reproduction du logiciel par l'utilisateur étant
+donné sa spécificité de logiciel libre, qui peut le rendre complexe à
+manipuler et qui le réserve donc à des développeurs et des professionnels
+avertis possédant des connaissances informatiques approfondies. Les
+utilisateurs sont donc invités à charger et tester l'adéquation du
+logiciel à leurs besoins dans des conditions permettant d'assurer la
+sécurité de leurs systèmes et ou de leurs données et, plus généralement,
+à l'utiliser et l'exploiter dans les mêmes conditions de sécurité.
+
+Le fait que vous puissiez accéder à cet en-tête signifie que vous avez
+pris connaissance de la licence CeCILL, et que vous en avez accepté les
+termes.
+*/
+
+package com.adullact.tedetis.Exception;
+
+/**
+* Classe des exceptions relatives à TeDeTis.
+*
+* @author Frédéric Souchon
+* @version 1.0
+*
+*/
+public class TedetisException extends Exception {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Constructeur de base
+ */
+ public TedetisException() {
+ super();
+ // TODO Auto-generated constructor stub
+ }
+
+ /**
+ * Constructeur
+ * @param message message associé
+ * @param cause erreur de départ
+ */
+ public TedetisException(String message, Throwable cause) {
+ super(message, cause);
+ // TODO Auto-generated constructor stub
+ }
+
+ /**
+ * Constructeur
+ * @param message message associé
+ */
+ public TedetisException(String message) {
+ super(message);
+ // TODO Auto-generated constructor stub
+ }
+
+ /**
+ * Constructeur
+ * @param cause erreur de départ
+ */
+ public TedetisException(Throwable cause) {
+ super(cause);
+ // TODO Auto-generated constructor stub
+ }
+
+}
\ No newline at end of file
--- /dev/null
+package com.adullact.tedetis;
+
+import com.adullact.tedetis.sql.Horodatage;
+
+public class GlobalHorodatage {
+
+ static Horodatage horodatage;
+
+ public static void setInstance(Horodatage horodatage){
+ GlobalHorodatage.horodatage = horodatage;
+ }
+
+ public static Horodatage getInstance(){
+ return GlobalHorodatage.horodatage;
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis;
+
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.security.KeyStore;
+import java.security.PrivateKey;
+import java.security.Security;
+import java.security.cert.CertStore;
+import java.security.cert.CollectionCertStoreParameters;
+import java.security.cert.X509Certificate;
+import java.util.ArrayList;
+import java.util.Enumeration;
+
+import org.bouncycastle.cms.CMSProcessable;
+import org.bouncycastle.cms.CMSProcessableByteArray;
+import org.bouncycastle.cms.CMSSignedData;
+import org.bouncycastle.cms.CMSSignedDataGenerator;
+import org.bouncycastle.jce.provider.BouncyCastleProvider;
+import org.bouncycastle.util.encoders.Base64;
+
+
+public class Parapheur {
+
+ private String p12FilePath;
+ private char [] password;
+
+ private byte [] dataDER;
+
+ private static String debut_pem = "-----BEGIN PKCS7-----\n";
+ private static String fin_pem = "-----END PKCS7-----";
+
+ public Parapheur(String p12FilePath,String password){
+ this.p12FilePath = p12FilePath;
+ this.password = password.toCharArray();
+ Security.addProvider(new BouncyCastleProvider ());
+ }
+
+ public String getSignature(String stringToBeSigned) throws Exception {
+
+ KeyStore ks = null;
+
+ ks = KeyStore.getInstance("PKCS12");
+ ks.load(new FileInputStream(p12FilePath), password);
+
+ X509Certificate cert = null;
+ PrivateKey privatekey = null;
+
+ Enumeration<String> en = ks.aliases();
+
+ while (en.hasMoreElements() && cert == null) {
+ String alias = en.nextElement();
+ if (ks.isKeyEntry(alias)) {
+ privatekey = (PrivateKey)ks.getKey(alias, password);
+ cert = (X509Certificate)ks.getCertificate(alias);
+ }
+ }
+
+ ArrayList<X509Certificate> certList = new ArrayList<X509Certificate>();
+ certList.add(cert);
+ CertStore certs = CertStore.getInstance("Collection",
+ new CollectionCertStoreParameters(certList), "BC");
+
+ CMSSignedDataGenerator signGen = new CMSSignedDataGenerator();
+
+ signGen.addSigner(privatekey, cert, CMSSignedDataGenerator.DIGEST_SHA1);
+ signGen.addCertificatesAndCRLs(certs);
+ CMSProcessable content = new CMSProcessableByteArray(stringToBeSigned.getBytes());
+
+
+ CMSSignedData signedData = signGen.generate(content, false, "BC");
+ dataDER = signedData.getEncoded();
+ byte[] pem = Base64.encode(dataDER);
+ String s = new String(pem);
+ StringBuffer sb = new StringBuffer(s);
+
+ for (int i=65; i<sb.length(); i=i+65+1) {
+ sb.insert(i,"\n");
+ }
+
+ return debut_pem +sb.toString()+"\n" + fin_pem;
+ }
+
+ public void save2File(String fileName) throws Exception{
+ FileOutputStream f = new FileOutputStream(fileName);
+ f.write(dataDER);
+ f.close();
+ }
+
+
+}
--- /dev/null
+package com.adullact.tedetis.actes;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.List;
+import java.util.logging.Logger;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.sql.Horodatage;
+
+
+public class ActesEnveloppeReceiver {
+
+ private Logger logger;
+ private String trigramme;
+
+ private EnveloppePath cheminEnveloppe;
+ private Connection connexion;
+ private Archive archiveEnCours;
+ private NotificationActes notification;
+
+ private Horodatage horodatage;
+
+
+ public ActesEnveloppeReceiver(String trigramme,EnveloppePath cheminEnveloppe){
+ this.trigramme = trigramme;
+ this.cheminEnveloppe = cheminEnveloppe;
+ this.logger = Logger.getLogger("com.adullact.s2low");
+ }
+
+ public void setLoguer(Logger logger){
+ this.logger = logger;
+ }
+
+ public void setConnexion(Connection connexion){
+ this.connexion = connexion;
+ }
+
+ public void setNotification(NotificationActes notification){
+ this.notification = notification;
+ }
+
+ public void receive(List<File> lesFichiersRecus) throws TedetisException {
+ if (lesFichiersRecus.isEmpty()) {
+ logger.info("Aucun fichiers reçus");
+ return;
+ }
+ for(File f: lesFichiersRecus){
+ if (f.getName().startsWith("ANO_")){
+ logger.info("Réception d'une anomalie : " + f.getName());
+ try {
+ AnomalieEnveloppeXML ae = new AnomalieEnveloppeXML(f.getName(),new FileInputStream(f));
+ ae.updateDatabase(connexion, this.horodatage);
+ } catch (FileNotFoundException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ return;
+ }
+ }
+ setArchiveFromFile(lesFichiersRecus);
+ logger.info("Réception d'une archive : " + archiveEnCours);
+ updateDatabase();
+ archiveEnCours.sendNotification(notification);
+ }
+
+ private void setArchiveFromFile(List<File> lesFichiersRecus) throws TedetisException {
+ try {
+ archiveEnCours = new Archive(lesFichiersRecus, trigramme);
+ } catch (FileNotFoundException e){
+ throw new TedetisException("Fichier manquant",e);
+ }
+ }
+
+ private void updateDatabase() throws TedetisException {
+ try {
+ archiveEnCours.updateDatabase(connexion, cheminEnveloppe);
+ } catch (SQLException e){
+ e.printStackTrace();
+ throw new TedetisException("Erreur de base de données",e);
+ }
+ }
+
+ public void setHorodatage(Horodatage horodatage)
+ {
+ this.horodatage = horodatage;
+ }
+}
\ No newline at end of file
--- /dev/null
+package com.adullact.tedetis.actes;
+
+import java.io.FileInputStream;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+import org.jdom.Element;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.sql.EnveloppeSQL;
+import com.adullact.tedetis.sql.Horodatage;
+
+public class AnomalieEnveloppeXML extends FichierActesXML {
+
+ private String the_nom;
+
+ public AnomalieEnveloppeXML(String nom) throws TedetisException {
+ super(nom);
+ the_nom = nom;
+ }
+
+ public AnomalieEnveloppeXML(String name, FileInputStream fileInputStream) throws TedetisException {
+ super(name,fileInputStream);
+ the_nom = name;
+
+ }
+
+ @Override
+ protected Element getNewRacine() {
+ return null;
+ }
+
+ @Override
+ protected void validerContenuMessage() throws TedetisException {
+ }
+
+ public void updateDatabase(Connection connexion) {
+
+
+ String file_path = "%" + the_nom.substring(4, the_nom.length() - 3) + "%";
+
+ String sql = "SELECT id FROM actes_envelopes WHERE file_path LIKE ? ";
+
+ PreparedStatement ps;
+ try {
+ ps = connexion.prepareStatement(sql);
+
+ ps.setString(1, file_path);
+
+ ResultSet rs = ps.executeQuery();
+
+ int id;
+
+ if (! rs.next()){
+ System.out.println("L'anomalie ne correspond a aucune enveloppe dans la base " + file_path +"!");
+ return;
+ }
+ id = rs.getInt("id");
+ String detail = Racine.getChild("Detail",actesNS).getText();
+ System.out.println("Cause de l'anomalie : " + detail);
+
+ EnveloppeSQL enveloppeSQL = new EnveloppeSQL(connexion, id);
+
+ enveloppeSQL.setStatusTransaction(-1, "Enveloppe rejetee par le MIOCT (" + detail + ")", null);
+
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+
+
+ }
+
+ public void updateDatabase(Connection connexion, Horodatage horodatage) {
+
+ updateDatabase(connexion);
+
+
+ }
+}
--- /dev/null
+package com.adullact.tedetis.actes;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.nio.channels.FileChannel;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Vector;
+
+import javax.mail.MessagingException;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.messages.MessageMetier;
+import com.adullact.tedetis.util.MailSender;
+import com.adullact.tedetis.util.Tarball;
+
+/**
+ * Cette classe représente une archive TGZ du protocoles ACTES
+ *
+ * @author Eric Pommateau
+ *
+ */
+public class Archive {
+
+ private NomFichierXML nomArchive;
+
+ private List<MessageMetier> lesMessagesMetier;
+
+ private Hashtable<String,File> messageFiles;
+
+ private EnveloppeXML enveloppe;
+
+ private Tarball tarballFile;
+
+ public Archive(String nom) throws TedetisException {
+ initStructure(nom);
+ }
+
+ private void initStructure(String nom) throws TedetisException{
+ messageFiles = new Hashtable<String, File>();
+ lesMessagesMetier = new Vector<MessageMetier>();
+ setAndVerifyNomArchive(nom);
+ setEnveloppe();
+ }
+
+ private void setAndVerifyNomArchive(String nomArchive) throws TedetisException{
+ this.nomArchive = new NomFichierXML(nomArchive);
+ }
+
+ private void setEnveloppe() throws TedetisException {
+ enveloppe = new EnveloppeXML(getNomArchive().getNomEnveloppeMetier().toString());
+ }
+
+ //Création d'une nouvelle archive de réponse à partir d'une archive existante
+ public Archive(Archive theArchive, int newNumeroSequentiel) throws TedetisException {
+ nomArchive = theArchive.getNomArchiveResponse(newNumeroSequentiel);
+ initStructure(nomArchive.toString());
+ }
+
+ public NomFichierXML getNomArchiveResponse(int newNumeroSequentiel) throws TedetisException{
+ return nomArchive.getNomFichierReponse(newNumeroSequentiel);
+ }
+
+ public Archive(File messageTGZ) throws TedetisException, FileNotFoundException {
+ initStructure(messageTGZ.getName());
+ tarballFile = new Tarball(messageTGZ);
+ messageFiles = tarballFile.getFichiers();
+
+ debugMessageList(messageFiles);
+
+ retrieveAndVerifyEnveloppe(messageFiles);
+ tarballFile.supprimerTmp();
+ }
+
+ private void retrieveAndVerifyEnveloppe(Hashtable<String,File> messageFiles) throws TedetisException {
+
+ retrieveEnveloppe(messageFiles);
+
+ enveloppe.verifySiren(nomArchive.getSiren());
+
+ verifyFiles(messageFiles);
+
+ }
+
+ private void debugMessageList( Hashtable<String,File> messageFiles){
+ Enumeration<java.io.File> e = messageFiles.elements();
+ while(e.hasMoreElements()){
+ File f = e.nextElement();
+ System.out.println(f.getAbsolutePath() + " --- " + f.exists());
+ }
+ }
+
+ private void verifyFiles(Hashtable<String,File> messageFiles) throws TedetisException {
+
+
+ for (String fichierMetier : enveloppe.getFichierMetier()){
+ File fichierMetierF = messageFiles.get(fichierMetier);
+
+ try {
+ MessageMetier mm = MessageMetierFactory.getInstanceFromFile(fichierMetierF.getName(),
+ new FileInputStream(fichierMetierF));
+
+ if (nomArchive.getSens() == NomFichierXML.COLLECTIVITE_VERS_PREFECTURE){
+ //Cas spécifique des 1-3
+ /*if (! enveloppe.getDepartement().equals(mm.getDepartement())){
+
+ throw new TedetisException("Le numéro de département du fichier " + fichierMetier +
+ " ne correspond pas au département de l'enveloppe " + enveloppe.getDepartement());
+ }*/
+ }
+
+ lesMessagesMetier.add(mm);
+ for (String fichier : mm.getFichiers() ){
+
+ File f = messageFiles.get(fichier);
+ if (f == null ){
+ throw new TedetisException("Le ficher " + fichier + " n'est pas dans l'archive");
+ }
+
+ if ( ! f.exists()) {
+ System.out.println("echec");
+ System.out.println(f.exists());
+
+ throw new TedetisException("Le fichier " + f.getAbsolutePath() + " n'est pas dans l'archive !" );
+
+
+ }
+ }
+ } catch (FileNotFoundException e){
+ e.printStackTrace();
+ throw new TedetisException("Le fichier " + fichierMetierF.getAbsolutePath() + " n'est pas dans l'archive !" );
+ }
+ }
+ }
+
+ private void retrieveEnveloppe(Hashtable<String,File> messageFiles ) throws TedetisException{
+ //Validation de l'enveloppe métier
+ String nomEnveloppe = nomArchive.getNomEnveloppeMetier().toString();
+ File enveloppeMetierFichier = messageFiles.get(nomEnveloppe);
+
+ FileInputStream is;
+ try {
+ is = new FileInputStream(enveloppeMetierFichier);
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new TedetisException("Enveloppe métier (" + nomEnveloppe + ") introuvable dans l'archive",e);
+ }
+
+ enveloppe = new EnveloppeXML(nomEnveloppe, is);
+
+
+ }
+
+ public Archive(List<File> lesFichiers, String trigramme) throws TedetisException, FileNotFoundException {
+
+ messageFiles = new Hashtable<String, File>();
+ lesMessagesMetier = new Vector<MessageMetier>();
+ System.out.println("Ajout de fichier " );
+
+ for (File f : lesFichiers){
+ messageFiles.put(f.getName(), f);
+ }
+
+ getEnveloppeMetierFromFilesList(lesFichiers,trigramme);
+
+ retrieveAndVerifyEnveloppe(messageFiles);
+
+ }
+
+ private void getEnveloppeMetierFromFilesList(List<File> lesFichiers,String trigramme) throws TedetisException{
+ NomFichierXML enveloppeName = null;
+
+ for (File f : lesFichiers){
+ try {
+ enveloppeName = new NomFichierXML(f.getName());
+ } catch (TedetisException e) {};
+ }
+ if (enveloppeName == null ){
+ throw new TedetisException("La liste des fichiers ne contient pas d'enveloppe");
+ }
+ nomArchive = enveloppeName.getNomArchive(trigramme);
+ }
+
+ /**
+ * Ecrit l'ensemble des fichiers dans le répertoire passé en paramètre
+ * @param parent
+ * @return
+ * @throws TedetisException
+ * @throws IOException
+ */
+ public Vector<File> writeAllFichier(File parent) throws TedetisException, IOException{
+ Vector<File> vf = new Vector<File>();
+ /**Traitement de message 1-3 */
+ for(MessageMetier m1 : getMessageMetier()){
+ System.out.println("[WRITE ALL FICHIER] Code message : " + m1.getCodeMessage());
+ if (m1.getCodeMessage().equals("1-3")){
+ return vf;
+ }
+ }
+ /***/
+ String e = enveloppe.getXML();
+ File f = writeToFile(parent,nomArchive.getNomEnveloppeMetier().toString() , e);
+ vf.add(f);
+
+ for(MessageMetier m : getMessageMetier()){
+ e = m.getXML();
+ f = writeToFile(parent,m.getName() , e);
+ vf.add(f);
+ }
+
+ for (String mf : messageFiles.keySet()){
+ File g = new File(parent,mf);
+ copyFile(messageFiles.get(mf),g);
+ vf.add(g);
+ }
+
+ return vf;
+ }
+
+ private File writeToFile(File parent, String nomFichier, String contenu) throws IOException {
+ File f = new File(parent,nomFichier);
+ FileWriter fw = new FileWriter(f);
+ fw.write(contenu);
+ fw.close();
+ return f;
+ }
+
+ private void copyFile(File src, File dest) throws IOException {
+ FileInputStream fis = new FileInputStream(src);
+ FileOutputStream fos = new FileOutputStream(dest);
+
+ FileChannel channelSrc = fis.getChannel();
+ FileChannel channelDest = fos.getChannel();
+ channelSrc.transferTo(0, channelSrc.size() , channelDest);
+
+ fis.close();
+ fos.close();
+ }
+
+ public void generateTGZ(File parent) throws TedetisException, IOException {
+
+ Vector<File> vf = writeAllFichier(parent);
+
+ Tarball tgz = new Tarball();
+
+ for (File f : vf) {
+ tgz.addFichier(f);
+ }
+
+ String s = parent.getAbsolutePath() + System.getProperty("file.separator")+ nomArchive;
+
+ tgz.generate( s );
+
+ for (File file : vf){
+ //System.out.println("fichier a supprimer : "+file.getAbsolutePath());
+ if(file.exists()) {
+ file.delete();
+ }
+ }//fin du for parcourrant la liste des fichiers devenus inutiles
+ }
+
+ public Hashtable<String, File> getMessageFiles() {
+ return messageFiles;
+ }
+
+ public NomFichierXML getNomArchive(){
+ return nomArchive;
+ }
+
+ public String addMessageFiles(File fichier,MessageMetier m) throws TedetisException{
+
+ String fileName = fichier.getName();
+
+ if (! MessageMetier.isFichierAutorise(fileName)){
+ throw new TedetisException("Fichier non autorisé : "+ fileName);
+ }
+
+ String nextFileName = m.getNextFileName();
+
+ String f = nextFileName + fileName.substring(fileName.length() - 4);
+
+ messageFiles.put(f, fichier);
+ return f;
+ }
+
+ public List<MessageMetier> getMessageMetier() {
+ return lesMessagesMetier;
+ }
+
+ public MessageMetier getAMessageMetier(String name){
+ for(MessageMetier m : lesMessagesMetier) {
+ if (m.getName().equals(name)) {
+ return m;
+ }
+ }
+ return null;
+ }
+
+ public void addMessageMetier(MessageMetier m){
+ lesMessagesMetier.add(m);
+ enveloppe.addFichierMetier(m.getName());
+ }
+
+ public EnveloppeXML getEnveloppe() {
+ return enveloppe;
+ }
+
+ //TODO :ca n'a rien à faire là !
+ public void sendMail(Vector<String> adressesRetour) throws TedetisException, IOException, MessagingException {
+ MailSender mailSender = new MailSender();
+ sendMail(adressesRetour,mailSender,false);
+ }
+
+ public void sendMail(Vector<String> adressesRetour, MailSender mailSender,boolean send_mail_in_html) throws TedetisException, IOException, MessagingException {
+ Vector<File> vf = writeAllFichier(new File("/tmp"));
+ mailSender.setRecipient(adressesRetour);
+ mailSender.setFile(vf);
+ if (send_mail_in_html){
+ mailSender.sendHTML();
+ } else {
+ mailSender.send();
+ }
+ }
+
+ /**
+ * Permet de remplir les fichiers vides
+ * @param string
+ */
+ public void setFixturesFile(String fichier){
+ for (MessageMetier m : getMessageMetier()){
+ for (String nom : m.getFichiers()){
+ if (messageFiles.get(nom) == null){
+ messageFiles.put(nom, new File(fichier));
+ }
+ }
+ }
+ }
+
+ public void updateDatabase(Connection connexion,EnveloppePath cheminEnveloppe) throws TedetisException, SQLException {
+ String path = cheminEnveloppe.saveArchive(this);
+
+ for (MessageMetier m : getMessageMetier()){
+ m.updateDatabase(connexion, path);
+ for (String fichier : m.getFichiers()){
+ File f = messageFiles.get(fichier);
+ if (f == null){
+ throw new TedetisException ("Impossible de trouver le fichier " + fichier);
+ }
+ m.addFichierDatabase(fichier,f.length());
+
+ }
+ }
+ }
+
+ public void sendNotification(NotificationActes notification) throws TedetisException{
+ for (MessageMetier m : getMessageMetier()){
+ m.sendNotification(notification);
+ }
+ }
+
+ @Override
+ public String toString(){
+ return nomArchive.toString();
+ }
+
+}
\ No newline at end of file
--- /dev/null
+package com.adullact.tedetis.actes;
+
+import java.util.Hashtable;
+
+//TODO enumération java ?
+public class CodeMessage {
+
+ public static final String ACTE_CODE = "1-1";
+ public static final String ACTE_STRING = "Acte";
+
+ public static final String ARACTE_CODE = "1-2";
+ public static final String ARACTE_STRING = "ARActe";
+
+ public static final String ANOMALIEACTE_CODE = "1-3";
+ public static final String ANOMALIEACTE_STRING = "AnomalieActe";
+
+ public static final String COURRIERSIMPLE_CODE = "2-1";
+ public static final String COURRIERSIMPLE_STRING = "CourrierSimple";
+
+ public static final String REPONSECOURRIERSIMPLE_CODE = "2-2";
+ public static final String REPONSECOURRIERSIMPLE_STRING = "ReponseCourrierSimple";
+
+ public static final String DEMANDEPIECECOMPLEMENTAIRE_CODE = "3-1";
+ public static final String DEMANDEPIECECOMPLEMENTAIRE_STRING = "DemandePieceComplementaire";
+
+ public static final String ARDEMANDEPIECECOMPLEMENTAIRE_CODE = "3-2";
+ public static final String ARDEMANDEPIECECOMPLEMENTAIRE_STRING = "ARDemandePieceComplementaire";
+
+ public static final String REFUSPIECECOMPLEMENTAIRE_CODE = "3-3";
+ public static final String REFUSPIECECOMPLEMENTAIRE_STRING = "RefusPieceComplementaire";
+
+ public static final String PIECECOMPLEMENTAIRE_CODE = "3-4";
+ public static final String PIECECOMPLEMENTAIRE_STRING = "PieceComplementaire";
+
+ public static final String ARPIECECOMPLEMENTAIRE_CODE = "3-5";
+ public static final String ARPIECECOMPLEMENTAIRE_STRING = "ARPieceComplementaire";
+
+ public static final String LETTREOBSERVATIONS_CODE = "4-1";
+ public static final String LETTREOBSERVATIONS_STRING = "LettreObservations";
+
+ public static final String ARLETTREOBSERVATIONS_CODE = "4-2";
+ public static final String ARLETTREOBSERVATIONS_STRING = "ARLettreObservations";
+
+ public static final String REJETLETTREOBSERVATIONS_CODE = "4-3";
+ public static final String REJETLETTREOBSERVATIONS_STRING = "RejetLettreObservations";
+
+ public static final String REPONSELETTREOBSERVATIONS_CODE = "4-4";
+ public static final String REPONSELETTREOBSERVATIONS_STRING = "ReponseLettreObservations";
+
+ public static final String ARREJETREPONSELETTREOBSERVATIONS_CODE = "4-5";
+ public static final String ARREJETREPONSELETTREOBSERVATIONS_STRING = "ARReponseRejetLettreObservations";
+
+ public static final String DEFERETA_CODE = "5-1";
+ public static final String DEFERETA_STRING = "DefereTA";
+
+ public static final String ANNULATION_CODE = "6-1";
+ public static final String ANNULATION_STRING = "Annulation";
+
+ public static final String ARANNULATION_CODE = "6-2";
+ public static final String ARANNULATION_STRING = "ARAnnulation";
+
+ public static final String DEMANDECLASSIFICATION_CODE = "7-1";
+ public static final String DEMANDECLASSIFICATION_STRING = "DemandeClassification";
+
+ public static final String RETOURCLASSIFICATION_CODE = "7-2";
+ public static final String RETOURCLASSIFICATION_STRING = "RetourClassification";
+
+ public static final String REPONSECLASSIFICATIONSANSCHANGEMENT_CODE = "7-3";
+ public static final String REPONSECLASSIFICATIONSANSCHANGEMENT_STRING = "ReponseClassificationSansChangement";
+
+ private static Hashtable<String, String> h;
+
+ static {
+ h = new Hashtable<String, String>();
+
+ h.put(ACTE_CODE, ACTE_STRING);
+ h.put(ARACTE_CODE, ARACTE_STRING);
+ h.put(ANOMALIEACTE_CODE, ANOMALIEACTE_STRING);
+
+ h.put(COURRIERSIMPLE_CODE, COURRIERSIMPLE_STRING);
+ h.put(REPONSECOURRIERSIMPLE_CODE, REPONSECOURRIERSIMPLE_STRING);
+
+ h.put(DEMANDEPIECECOMPLEMENTAIRE_CODE, DEMANDEPIECECOMPLEMENTAIRE_STRING);
+ h.put(ARDEMANDEPIECECOMPLEMENTAIRE_CODE, ARDEMANDEPIECECOMPLEMENTAIRE_STRING);
+ h.put(REFUSPIECECOMPLEMENTAIRE_CODE, REFUSPIECECOMPLEMENTAIRE_STRING);
+ h.put(PIECECOMPLEMENTAIRE_CODE, PIECECOMPLEMENTAIRE_STRING);
+ h.put(ARPIECECOMPLEMENTAIRE_CODE, ARPIECECOMPLEMENTAIRE_STRING);
+
+ h.put(LETTREOBSERVATIONS_CODE, LETTREOBSERVATIONS_STRING);
+ h.put(ARLETTREOBSERVATIONS_CODE, ARLETTREOBSERVATIONS_STRING);
+ h.put(REJETLETTREOBSERVATIONS_CODE, REJETLETTREOBSERVATIONS_STRING);
+ h.put(REPONSELETTREOBSERVATIONS_CODE, REPONSELETTREOBSERVATIONS_STRING);
+ h.put(ARREJETREPONSELETTREOBSERVATIONS_CODE, ARREJETREPONSELETTREOBSERVATIONS_STRING);
+
+ h.put(DEFERETA_CODE, DEFERETA_STRING);
+
+ h.put(ANNULATION_CODE, ANNULATION_STRING);
+ h.put(ARANNULATION_CODE, ARANNULATION_STRING);
+
+ h.put(DEMANDECLASSIFICATION_CODE, DEMANDECLASSIFICATION_STRING);
+ h.put(RETOURCLASSIFICATION_CODE, RETOURCLASSIFICATION_STRING);
+ h.put(REPONSECLASSIFICATIONSANSCHANGEMENT_CODE, REPONSECLASSIFICATIONSANSCHANGEMENT_STRING);
+
+ }
+
+ public static final String get(String key){
+ return h.get(key);
+ }
+
+
+}
--- /dev/null
+package com.adullact.tedetis.actes;
+
+import java.util.Hashtable;
+
+
+//TODO enumération java ?
+public class CodeNature {
+
+ private static Hashtable<String, String> h;
+
+ static {
+ h = new Hashtable<String, String>();
+ h.put("DE", "1");
+ h.put("AR", "2");
+ h.put("AI", "3");
+ h.put("CC", "4");
+ h.put("BF", "5");
+ h.put("AU", "6");
+ h.put("1", "DE");
+ h.put("2", "AR");
+ h.put("3", "AI");
+ h.put("4", "CC");
+ h.put("5", "BF");
+ h.put("6", "AU");
+
+ }
+
+ public static final String get(String key){
+ return h.get(key);
+ }
+
+
+}
--- /dev/null
+package com.adullact.tedetis.actes;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.messages.MessageMetier;
+import com.adullact.tedetis.util.Util;
+
+public class EnveloppePath {
+
+ public String enveloppePath;
+
+ public EnveloppePath(String enveloppePath){
+ this.enveloppePath = enveloppePath;
+ }
+
+ public String saveArchive(Archive archive) throws TedetisException{
+ String lastArchivePath = null;
+
+ String sirenPath = archive.getNomArchive().getSiren();
+ String sirenRep = Util.concatenateRepository(enveloppePath,sirenPath);
+
+ getOrCreatePath(sirenRep);
+
+ String numero = null;
+ for(MessageMetier m : archive.getMessageMetier()) {
+ numero = m.getNumeroActe();
+ String numRep = Util.concatenateRepository(sirenRep,numero);
+ File numRepFile = getOrCreatePath(numRep);
+ try {
+ archive.generateTGZ(numRepFile);
+ } catch (IOException e){
+ throw new TedetisException(e);
+ }
+ lastArchivePath = Util.concatenateRepository(sirenPath,numero,archive.toString());
+ }
+ return lastArchivePath;
+ }
+
+ private File getOrCreatePath(String path){
+ File repository = new File (path);
+ if (! repository.exists()) {
+ repository.mkdir();
+ }
+ return repository;
+ }
+
+ public Archive retrieve(String relativePath) throws TedetisException{
+ Archive archive = null;
+ String archivePath = retrievePath(relativePath);
+ try {
+ archive = new Archive(new File(archivePath));
+ } catch (FileNotFoundException e) {
+ throw new TedetisException("Fichier " + archivePath + "introuvable",e);
+ }
+ return archive;
+ }
+
+
+ public String retrievePath(String relativePath) {
+ return Util.concatenateRepository(enveloppePath, relativePath);
+ }
+
+ @Override
+ public String toString(){
+ return enveloppePath;
+ }
+}
\ No newline at end of file
--- /dev/null
+package com.adullact.tedetis.actes;
+
+import java.io.InputStream;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Vector;
+
+import org.jdom.Element;
+
+import com.adullact.tedetis.Exception.TedetisException;
+
+
+/**
+ * Cette classe représente une enveloppe métier du protocole Actes
+ *
+ * @author Eric Pommateau
+ *
+ */
+public class EnveloppeXML extends FichierActesXML {
+
+ private NomFichierXML nomFichier;
+ private String idTypeSphereEtat;
+ private String arrondissement;
+ private String departement;
+ private String siren;
+ private String nature;
+ private Vector<String> fichierMetier;
+ private Vector<String> adressesRetour;
+
+ public static final Hashtable<String,String> codeIdSphereEtat;
+
+ static {
+ codeIdSphereEtat = new Hashtable<String, String>();
+ codeIdSphereEtat.put("IDSousPref", "SPREF");
+ codeIdSphereEtat.put("IDPref", "PREF");
+ codeIdSphereEtat.put("IDSGAR", "SGAR");
+ codeIdSphereEtat.put("SPREF", "IDSousPref");
+ codeIdSphereEtat.put("PREF", "IDPref");
+ codeIdSphereEtat.put("SGAR", "IDSGAR");
+ }
+
+ public EnveloppeXML(String nom, InputStream is) throws TedetisException {
+ super(nom, is);
+ }
+
+ public EnveloppeXML(String nom) throws TedetisException {
+ super(nom);
+ }
+
+
+ @Override
+ protected Element getNewRacine() {
+ if (getSens() == NomFichierXML.PREFECTURE_VERS_COLLECTIVITE) {
+ return new Element("EnveloppeMISILLCL",actesNS);
+ } else {
+ return new Element("EnveloppeCLMISILL",actesNS);
+ }
+ }
+
+ @Override
+ protected void validerNom(String nom) throws TedetisException {
+ super.validerNom(nom);
+ nomFichier = new NomFichierXML(nom);
+ setIdTypeSphereEtat(nomFichier.getIdTypeSphereEtat());
+ setDepartement(nomFichier.getDepartement());
+ setArrondissement(nomFichier.getArrondissement());
+ setSiren(nomFichier.getSiren());
+ }
+
+ @Override
+ public void validerContenuMessage() throws TedetisException {
+
+ if (Racine.getName() == "EnveloppeMISILLCL" && nomFichier.getSens() != NomFichierXML.PREFECTURE_VERS_COLLECTIVITE){
+ // On désactive ce test car les message 1-3 peuvent ne pas être nommé selon cette nomemclature.
+ //throw new TedetisException("Le sens indiquer dans le fichier xml n'est pas cohérent avec le nom du fichier");
+ }
+
+ if (Racine.getName() == "EnveloppeCLMISILL" && nomFichier.getSens() != NomFichierXML.COLLECTIVITE_VERS_PREFECTURE){
+ throw new TedetisException("Le sens indiquer dans le fichier xml n'est pas cohérent avec le nom du fichier");
+ }
+
+ Element destinataire = Racine.getChild("Destinataire",actesNS);
+ Element emetteur = Racine.getChild("Emetteur",actesNS);
+
+ if (Racine.getName() == "EnveloppeMISILLCL") {
+ //if (nomFichier.getSens() == NomFichierXML.PREFECTURE_VERS_COLLECTIVITE) {
+
+ siren = destinataire.getAttribute("SIREN", inseeNS).getValue();
+
+ //Non respect de la norme par la préfecture
+ /*List<?> LesId = emetteur.getChildren();
+ Element e = (Element) LesId.get(0);
+ if (! getIdTypeSphereEtat().equals(codeIdSphereEtat.get(e.getName()))) {
+ throw new TedetisException("Id Sphere état ne correspond pas " + getIdTypeSphereEtat() + " - " + e.getName());
+ }
+ if (! getDepartement().equals(e.getAttributeValue("Departement", actesNS))) {
+ throw new TedetisException("Departement non correspondant " + getDepartement() + " - " + e.getAttributeValue("Departement", actesNS));
+ }
+ if (! getArrondissement().equals(e.getAttributeValue("Arrondissement", actesNS))) {
+ throw new TedetisException("Arrondissement non correspondant " + getArrondissement() + " - " + e.getAttributeValue("Arrondissement", actesNS));
+ }*/
+ } else {
+
+ Element IDCL = emetteur.getChild("IDCL",actesNS);
+ siren = IDCL.getAttribute("SIREN", inseeNS).getValue();
+ departement = IDCL.getAttribute("Departement", actesNS).getValue();
+ arrondissement = IDCL.getAttribute("Arrondissement", actesNS).getValue();
+ setNature(IDCL.getAttribute("Nature",actesNS).getValue());
+ }
+
+ if (! siren.equals(nomFichier.getSiren())){
+ throw new TedetisException("Le siren du fichier XML ne correspond pas " + siren + " - " + nomFichier.getSiren());
+ }
+
+ fichierMetier = new Vector<String>();
+
+ // On récupère la liste des messages métier
+ Element formulairesEnvoyes = Racine.getChild("FormulairesEnvoyes", actesNS);
+ List<?> formulaires = formulairesEnvoyes.getChildren("Formulaire",actesNS);
+ Iterator<?> it = formulaires.iterator();
+ while (it.hasNext()) {
+ Element formulaire_courant = (Element) it.next();
+ fichierMetier.add(formulaire_courant.getChild("NomFichier",actesNS).getText());
+ }
+ adressesRetour = new Vector<String>();
+ // On récupère les adresses email
+ Element ar = Racine.getChild("AdressesRetour", actesNS);
+ if (ar != null) {
+ List<?> Email = ar.getChildren("Email",actesNS);
+ it = Email.iterator();
+ while (it.hasNext()) {
+ Element formulaire_courant = (Element) it.next();
+ adressesRetour.add(formulaire_courant.getText());
+ }
+ }
+
+ }
+
+ @Override
+ public String getXML() throws TedetisException {
+
+ Racine = getNewRacine();
+ setRacineAttribute();
+
+ //Pas dans les message 1-3...
+ //validPresent(getDepartement(), "Departement");
+ validPresent(getFichierMetier(), "Fichier métier");
+
+ Element destinataire = new Element("Destinataire",actesNS);
+ Element emetteur = new Element("Emetteur",actesNS);
+
+
+ Racine.addContent(emetteur);
+
+ if (getSens() == NomFichierXML.PREFECTURE_VERS_COLLECTIVITE) {
+
+ validPresent(getIdTypeSphereEtat(), "IdTypeSphereEtat");
+
+ Element typeSphereEtat = new Element(codeIdSphereEtat.get(getIdTypeSphereEtat()),actesNS);
+ emetteur.addContent(typeSphereEtat);
+ typeSphereEtat.setAttribute("Departement", getDepartement(), actesNS);
+ if (getArrondissement() != null) {
+ typeSphereEtat.setAttribute("Arrondissement", getArrondissement(), actesNS);
+ }
+ destinataire.setAttribute("SIREN", getSiren(), inseeNS);
+
+ } else {
+
+ validPresent(getNature(), "Nature");
+ //validPresent(getArrondissement(), "Arrondissement");
+ validPresent(getAdressesRetour(), "Mail retour");
+
+ Element IDCL = new Element("IDCL",actesNS);
+ IDCL.setAttribute("SIREN", getSiren(), inseeNS);
+ IDCL.setAttribute("Departement", getDepartement(), actesNS);
+ if (getArrondissement() != null ){
+ IDCL.setAttribute("Arrondissement", getArrondissement(), actesNS);
+ }
+ IDCL.setAttribute("Nature", getNature(), actesNS);
+ emetteur.addContent(IDCL);
+
+ Element adresses = new Element("AdressesRetour",actesNS);
+ Racine.addContent(adresses);
+
+ for (String s : getAdressesRetour()) {
+ addContentNode(adresses,"Email",s, actesNS);
+ }
+ }
+
+ addAllFichiers("FormulairesEnvoyes", "Formulaire", false, getFichierMetier());
+
+ if (getSens() == NomFichierXML.PREFECTURE_VERS_COLLECTIVITE) {
+ Racine.addContent(destinataire);
+ }
+
+ return super.getXML();
+ }
+
+
+ public void setSiren(String siren) {
+ this.siren = siren;
+ }
+
+ public void setIdTypeSphereEtat(String idTypeSphereEtat) {
+ this.idTypeSphereEtat = idTypeSphereEtat;
+ }
+
+ public void setArrondissement(String arrondissement) {
+ this.arrondissement = arrondissement;
+ }
+
+ public void setDepartement(String departement) {
+ this.departement = departement;
+ }
+
+ public int getSens(){
+ return nomFichier.getSens();
+ }
+
+ public String getSiren() {
+ return siren;
+ }
+
+ public String getIdTypeSphereEtat(){
+ return idTypeSphereEtat;
+ }
+
+ public String getArrondissement(){
+ return arrondissement;
+ }
+
+ public String getDepartement() {
+ return departement;
+ }
+
+ public Vector<String> getFichierMetier(){
+ return fichierMetier;
+ }
+
+ public void addFichierMetier(String s){
+ if (fichierMetier == null){
+ fichierMetier = new Vector<String>();
+ }
+ fichierMetier.add(s);
+
+ }
+
+ public Vector<String> getAdressesRetour(){
+ return adressesRetour;
+ }
+
+ public void setAdresseRetour(Vector<String> v){
+ adressesRetour = v;
+ }
+
+ public void addAdresseRetour(String adresse){
+ if (adressesRetour == null){
+ adressesRetour = new Vector<String>();
+ }
+ adressesRetour.addElement(adresse);
+ }
+
+ public void setNature(String nature) {
+ this.nature = nature;
+ }
+
+ public String getNature() {
+ return nature;
+ }
+
+ public String toString(){
+ return nomFichier.toString();
+ }
+
+ public void verifySiren(String siren) throws TedetisException {
+ if (! this.siren.equals(siren)) {
+ throw new TedetisException("Le SIREN de l'enveloppe métier ne correspond pas au SIREN de l'archive: " + this.siren + "-" + siren);
+ }
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.actes;
+
+import java.io.File;
+import java.io.InputStream;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Vector;
+
+import org.jdom.Document;
+import org.jdom.Element;
+import org.jdom.Namespace;
+import org.jdom.output.Format;
+import org.jdom.output.XMLOutputter;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.util.ValiderXML;
+
+/**
+ * Classe de base de l'ensemble des fichiers "métier" de la norme ACTES
+ * @author eric
+ *
+ */
+abstract public class FichierActesXML {
+
+ public static final Namespace actesNS;
+ public static final Namespace inseeNS;
+ public static final Namespace xsiNS;
+
+ public static final Format formatXMLSortie;
+
+ public static String schemaActesPath = "WebContent/xsds";
+
+ protected Element Racine;
+ protected Element originalRacine;
+
+
+ static {
+ formatXMLSortie = Format.getPrettyFormat();
+ formatXMLSortie.setEncoding("ISO-8859-1"); //Format du ministère
+ actesNS = Namespace.getNamespace("actes","http://www.interieur.gouv.fr/ACTES#v1.1-20040216");
+ inseeNS = Namespace.getNamespace("insee","http://xml.insee.fr/schema");
+ xsiNS = Namespace.getNamespace("xsi","http://www.w3.org/2001/XMLSchema-instance");
+ }
+
+ public static void setSchemaActePath(String path){
+ schemaActesPath = path;
+ }
+
+ //Constructeur utilisé lorsque l'on veut créer des documents XML
+ public FichierActesXML(String nom) throws TedetisException {
+ validerNom(nom);
+ Racine = getNewRacine();
+ setRacineAttribute();
+ }
+
+
+ protected ValiderXML getValidateur(){
+ return new ValiderXML();
+ }
+
+ //Constructeur utilisé lorsque l'on veut valider des documents XML
+ public FichierActesXML(String nom, InputStream is) throws TedetisException {
+ Document enveloppe;
+
+ try {
+ ValiderXML validateurXML = getValidateur();
+
+
+ validateurXML.setSchemaPath(new File(schemaActesPath));
+
+ validateurXML.isValid(is);
+ enveloppe = validateurXML.getDocument();
+
+ } catch (Exception e) {
+ throw new TedetisException("Impossible de valider l'enveloppe métier : " + nom,e);
+ }
+
+
+ Racine = enveloppe.getRootElement();
+ originalRacine = (Element) Racine.clone();
+ validerNom(nom);
+ validerContenuMessage();
+ }
+
+
+ public String getOriginalXML(){
+ XMLOutputter sortie = new XMLOutputter(FichierActesXML.formatXMLSortie);
+ return "<?xml version='1.0' encoding='ISO-8859-1' ?>\n" + sortie.outputString(originalRacine);
+ }
+
+
+ //Permet la validation du nom du fichier XML
+ protected void validerNom(String nom) throws TedetisException {
+ if (! nom.endsWith(".xml")){
+ throw new TedetisException( nom + "ne fini pas par .xml");
+ }
+ }
+
+ protected void setRacineAttribute(){
+ Racine.addNamespaceDeclaration(actesNS);
+ Racine.addNamespaceDeclaration(inseeNS);
+ Racine.addNamespaceDeclaration(xsiNS);
+ Racine.setAttribute("schemaLocation","http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd",xsiNS);
+ }
+
+ //Permet la création d'un nouvel élement racine
+ abstract protected Element getNewRacine();
+
+ abstract protected void validerContenuMessage() throws TedetisException;
+
+
+ //Renvoie une chaine de charactère contenant le document XML
+ public String getXML() throws TedetisException {
+ XMLOutputter sortie = new XMLOutputter(FichierActesXML.formatXMLSortie);
+
+ return "<?xml version='1.0' encoding='ISO-8859-1' ?>\n" + sortie.outputString(Racine);
+ }
+
+ protected void validPresent(Object value,String nom) throws TedetisException {
+ if (value == null){
+ throw new TedetisException(nom + " attendu. Null trouvé !");
+ }
+ }
+
+ protected void addContentNode(Element r,String name,String content, Namespace n){
+ Element e = new Element(name,n);
+ e.setText(content);
+ r.addContent(e);
+ }
+
+ /**
+ * Retourne l'ensemble des fichiers présents dans un noeud
+ * @param doc Le nom racine du document
+ * @param nomNoeud le nom des enfants
+ * @return
+ */
+ protected Vector<String> getAllFichiers(Element doc, String nomNoeud) {
+ Vector<String> theFichiers = new Vector<String>();
+
+ List<?> lesEnfants = doc.getChildren(nomNoeud, actesNS);
+ Iterator<?> it = lesEnfants.iterator();
+
+ while (it.hasNext()) {
+ Element e = (Element) it.next();
+ theFichiers.addElement(e.getChild("NomFichier",actesNS).getText());
+
+ }
+ return theFichiers;
+ }
+
+
+ protected void addAllFichiers(String racineDoc, String unDoc, boolean setNombre, Vector<String> fichiers) {
+
+ Element lesFichiers = Racine;
+
+ if (racineDoc != null) {
+ lesFichiers = new Element(racineDoc,actesNS);
+ Racine.addContent(lesFichiers);
+ if (setNombre){
+ lesFichiers.setAttribute("Nombre",new Integer(fichiers.size()).toString(),actesNS);
+ }
+ }
+
+ for(String f: fichiers) {
+ Element doc = new Element(unDoc,actesNS);
+ lesFichiers.addContent(doc);
+ addContentNode(doc,"NomFichier",f,actesNS);
+ }
+ }
+
+ public Element getRacine(){
+ return Racine;
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.actes;
+
+import java.io.InputStream;
+import java.util.regex.Pattern;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.messages.MessageMetier;
+import com.adullact.tedetis.actes.messages.MessageMetierARActe;
+import com.adullact.tedetis.actes.messages.MessageMetierARAnnulation;
+import com.adullact.tedetis.actes.messages.MessageMetierARDemandePC;
+import com.adullact.tedetis.actes.messages.MessageMetierARLO;
+import com.adullact.tedetis.actes.messages.MessageMetierARPC;
+import com.adullact.tedetis.actes.messages.MessageMetierARreponseLO;
+import com.adullact.tedetis.actes.messages.MessageMetierActe;
+import com.adullact.tedetis.actes.messages.MessageMetierAnnulation;
+import com.adullact.tedetis.actes.messages.MessageMetierAnomalieActe;
+import com.adullact.tedetis.actes.messages.MessageMetierCourrierSimple;
+import com.adullact.tedetis.actes.messages.MessageMetierDefereTA;
+import com.adullact.tedetis.actes.messages.MessageMetierDemandeClassification;
+import com.adullact.tedetis.actes.messages.MessageMetierDemandePC;
+import com.adullact.tedetis.actes.messages.MessageMetierLO;
+import com.adullact.tedetis.actes.messages.MessageMetierPC;
+import com.adullact.tedetis.actes.messages.MessageMetierRefusPC;
+import com.adullact.tedetis.actes.messages.MessageMetierRejetLO;
+import com.adullact.tedetis.actes.messages.MessageMetierReponseClassificationSansChangement;
+import com.adullact.tedetis.actes.messages.MessageMetierReponseCourrierSimple;
+import com.adullact.tedetis.actes.messages.MessageMetierReponseLO;
+import com.adullact.tedetis.actes.messages.MessageMetierRetourClassification;
+
+public class MessageMetierFactory {
+
+ public static MessageMetier getInstanceFromFile(String nom, InputStream is) throws TedetisException {
+
+ Pattern p = Pattern.compile("-");
+ String[] items = p.split(nom);
+ if (items.length != 7) {
+ throw new TedetisException("Le nom du fichier " +
+ "ne correspond pas à un message métier : " +
+ nom );
+ }
+
+ String codeMessage = items[5];
+ String fin = items[6];
+
+ int indexOfUnderscore = fin.indexOf('_') ;
+
+ if (indexOfUnderscore == -1) {
+ throw new TedetisException("Impossible de trouver le numéro du message metier");
+ }
+
+ codeMessage = codeMessage + "-" + fin.substring(0, indexOfUnderscore);
+
+ if (codeMessage.equals("1-1")) {
+ return new MessageMetierActe(nom,is);
+ }
+
+ if (codeMessage.equals("1-2")) {
+ return new MessageMetierARActe(nom,is);
+ }
+
+ if (codeMessage.equals("1-3")) {
+ return new MessageMetierAnomalieActe(nom,is);
+ }
+
+ if (codeMessage.equals("2-1")) {
+ return new MessageMetierCourrierSimple(nom,is);
+ }
+
+ if (codeMessage.equals("2-2")) {
+ return new MessageMetierReponseCourrierSimple(nom,is);
+ }
+
+ if (codeMessage.equals("3-1")) {
+ return new MessageMetierDemandePC(nom,is);
+ }
+
+ if (codeMessage.equals("3-2")) {
+ return new MessageMetierARDemandePC(nom,is);
+ }
+
+ if (codeMessage.equals("3-3")) {
+ return new MessageMetierRefusPC(nom,is);
+ }
+
+ if (codeMessage.equals("3-4")) {
+ return new MessageMetierPC(nom,is);
+ }
+
+ if (codeMessage.equals("3-5")) {
+ return new MessageMetierARPC(nom,is);
+ }
+
+ if (codeMessage.equals("4-1")) {
+ return new MessageMetierLO(nom,is);
+ }
+
+ if (codeMessage.equals("4-2")) {
+ return new MessageMetierARLO(nom,is);
+ }
+
+ if (codeMessage.equals("4-3")) {
+ return new MessageMetierRejetLO(nom,is);
+ }
+
+ if (codeMessage.equals("4-4")) {
+ return new MessageMetierReponseLO(nom,is);
+ }
+
+ if (codeMessage.equals("4-5")) {
+ return new MessageMetierARreponseLO(nom,is);
+ }
+
+ if (codeMessage.equals("5-1")) {
+ return new MessageMetierDefereTA(nom,is);
+ }
+ if (codeMessage.equals("6-1")) {
+ return new MessageMetierAnnulation(nom,is);
+ }
+ if (codeMessage.equals("6-2")) {
+ return new MessageMetierARAnnulation(nom,is);
+ }
+
+ if (codeMessage.equals(CodeMessage.DEMANDECLASSIFICATION_CODE) ) {
+ return new MessageMetierDemandeClassification(nom,is);
+ }
+
+ if (codeMessage.equals(CodeMessage.RETOURCLASSIFICATION_CODE) ) {
+ return new MessageMetierRetourClassification(nom,is);
+ }
+
+ if (codeMessage.equals("7-3")) {
+ return new MessageMetierReponseClassificationSansChangement(nom,is);
+ }
+
+
+
+ throw new TedetisException("Message inexistant ou non implémenter : " + codeMessage);
+
+ }
+
+ public static MessageMetier getInstanceFromActe(MessageMetierActe messageMetier, String codeMessage) throws TedetisException {
+
+ if (codeMessage.equals(CodeMessage.ARACTE_CODE) ) {
+ return new MessageMetierARActe(messageMetier,codeMessage);
+ }
+ if (codeMessage.equals(CodeMessage.COURRIERSIMPLE_CODE) ) {
+ return new MessageMetierCourrierSimple(messageMetier,codeMessage);
+ }
+ if (codeMessage.equals(CodeMessage.DEMANDEPIECECOMPLEMENTAIRE_CODE) ) {
+ return new MessageMetierDemandePC(messageMetier,codeMessage);
+ }
+ if (codeMessage.equals(CodeMessage.LETTREOBSERVATIONS_CODE) ) {
+ return new MessageMetierLO(messageMetier,codeMessage);
+ }
+ if (codeMessage.equals(CodeMessage.DEFERETA_CODE) ) {
+ return new MessageMetierDefereTA(messageMetier,codeMessage);
+ }
+
+ if (codeMessage.equals(CodeMessage.DEMANDECLASSIFICATION_CODE) ) {
+ return new MessageMetierDemandeClassification(messageMetier,codeMessage);
+ }
+
+ throw new TedetisException(codeMessage + " inconnu ou non implémenté");
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.actes;
+
+import java.util.regex.Pattern;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.util.Util;
+
+public class NomFichierXML {
+
+
+ public static final int COLLECTIVITE_VERS_PREFECTURE = 1;
+ public static final int PREFECTURE_VERS_COLLECTIVITE = 2;
+
+ public static final int ENVELOPPE_METIER = 1;
+ public static final int ARCHIVE = 2;
+
+ private String trigramme;
+
+ /**
+ * Désigne l'application
+ * */
+ private String quadrigramme;
+ private String infoAppli;
+
+ /**
+ * enveloppe Collectivité -> Prefecture : SIREN de la collectivité
+ * enveloppe Préfecture -> Collectivité : Numéro de service prefecture
+ * */
+ private String emmetteur;
+
+ /**
+ * enveloppe Prefecture -> Collectivité : SIREN de la collectivité
+ * enveloppe Collectivité -> Prefecture : vide
+ * */
+ private String destinataire;
+
+ private String date;
+
+ private String numero;
+
+ private String extension;
+
+ private int typeFichier;
+ private int sensFichier;
+
+ private String idTypeSphereEtat;
+
+ private String arrondissement;
+
+ private String departement;
+
+ private String nomFichier;
+
+ private boolean isAno;
+
+ /**
+ * Nom du fichier tel que défini dans la spécification ACTES (Annexe 1 - 5 : Nommage des fichiers échangés)
+ * @param nomFichier
+ */
+ public NomFichierXML(String nomFichier) throws TedetisException {
+
+ this.setNomFichier(nomFichier);
+
+ isAno = false;
+
+ if (nomFichier.startsWith("ANO_")) {
+ //nomFichier = nomFichier.substring(4);
+ isAno = true;
+ }
+
+ if (nomFichier.endsWith(".tar.gz")){
+ typeFichier = NomFichierXML.ARCHIVE;
+ } else if (nomFichier.endsWith(".xml")) {
+ typeFichier = NomFichierXML.ENVELOPPE_METIER;
+ } else {
+ throw new TedetisException("nom malformé (.tar.gz ou .xml attendu)" + nomFichier);
+ }
+
+ if (typeFichier == NomFichierXML.ENVELOPPE_METIER) {
+ nomFichier = "abc-" + nomFichier;
+ }
+
+
+ Pattern p = Pattern.compile("-");
+ String[] items = p.split(nomFichier);
+
+ if (items.length != 7) {
+ throw new TedetisException("Nom du message incomplet");
+ }
+
+ String fin;
+
+ trigramme = items[0];
+ quadrigramme = items[1];
+ infoAppli = items[2];
+ emmetteur = items[3];
+ destinataire = items[4];
+ date = items[5];
+ fin = items[6];
+
+
+ int indexOfPoint = fin.indexOf('.') ;
+
+ if (indexOfPoint != -1) {
+ numero = fin.substring(0, indexOfPoint);
+ extension = fin.substring(indexOfPoint,fin.length());
+ }
+
+ if (quadrigramme == null || infoAppli == null
+ || emmetteur == null || destinataire == null || date == null
+ || numero == null || extension == null) {
+ throw new TedetisException("Il manque un élement");
+ }
+
+
+ if (trigramme.length() != 3) {
+ throw new TedetisException("Trigramme invalide : >" + trigramme +"<");
+ }
+
+ if (quadrigramme.length() == 8){
+ quadrigramme = quadrigramme.substring(4);
+ }
+
+ if (quadrigramme.length() != 4 ) {
+ throw new TedetisException("Quadrigramme invalide : " + quadrigramme);
+ }
+
+ if (! Util.isDigit(date) || date.length() != 8){
+ throw new TedetisException("date malformée : " + date);
+
+ }
+
+ if (! Util.isDate(date)) {
+ throw new TedetisException("date malformée : " + date);
+ }
+
+ if (! Util.isDigit(numero) || numero.length()<1 || numero.length() > 5){
+ throw new TedetisException("numero malformé (chiffre attendu) : " + numero);
+ }
+
+ if (destinataire.equals("")) {
+ sensFichier = NomFichierXML.COLLECTIVITE_VERS_PREFECTURE;
+ } else {
+ sensFichier = NomFichierXML.PREFECTURE_VERS_COLLECTIVITE;
+
+ //emetteur
+ if (emmetteur.substring(0,4).equals("PREF")){
+ idTypeSphereEtat = "PREF";
+ departement = emmetteur.substring(4);
+ }
+ if (emmetteur.substring(0,4).equals("SGAR")){
+ idTypeSphereEtat = "SGAR";
+ departement = emmetteur.substring(4);
+ }
+ if (emmetteur.substring(0,5).equals("SPREF")){
+ idTypeSphereEtat = "SPREF";
+ departement = emmetteur.substring(5,8);
+ arrondissement = emmetteur.substring(8);
+ }
+ }
+
+ if (! Util.isSIREN(getSiren())) {
+ throw new TedetisException("Erreur de SIREN : " + getDestinataire());
+ }
+
+ }
+
+ public String getIdTypeSphereEtat() {
+ return idTypeSphereEtat;
+ }
+
+ public void setIdTypeSphereEtat(String idTypeSphereEtat) {
+ this.idTypeSphereEtat = idTypeSphereEtat;
+ }
+
+ public String getArrondissement() {
+ return arrondissement;
+ }
+
+ public void setArrondissement(String arrondissement) {
+ this.arrondissement = arrondissement;
+ }
+
+ public String getDepartement() {
+ return departement;
+ }
+
+ public void setDepartement(String departement) {
+ this.departement = departement;
+ }
+
+ public NomFichierXML getNomArchive(String trigramme) throws TedetisException{
+ String nomFichier= this.nomFichier;
+ if (typeFichier == NomFichierXML.ENVELOPPE_METIER ){
+ nomFichier = trigramme + "-" + getQuadrigramme() + "-" + getInfoAppli() + "-"
+ + getEmmetteur() + "-" + getDestinataire() + "-" + getDate() + "-" + getNumero() + ".tar.gz";
+ }
+
+ return new NomFichierXML(nomFichier);
+ }
+
+ public NomFichierXML getNomEnveloppeMetier() throws TedetisException {
+ String nomFichier= this.nomFichier;
+
+ if (typeFichier == NomFichierXML.ENVELOPPE_METIER ){
+ nomFichier = getQuadrigramme() + "-" + getInfoAppli() + "-"
+ + getEmmetteur() + "-" + getDestinataire() + "-" + getDate() + "-" + getNumero() + ".xml";
+ } else {
+ nomFichier = getQuadrigramme() + "-" + getInfoAppli() + "-"
+ + getEmmetteur() + "-" + getDestinataire() + "-" + getDate() + "-" + getNumero() + ".xml";
+ }
+
+ if (isAno){
+ nomFichier = "ANO_" + nomFichier ;
+ }
+
+ return new NomFichierXML(nomFichier);
+ }
+
+ public int getTypeFichier(){
+ return typeFichier;
+ }
+
+ public int getSens() {
+ return sensFichier;
+ }
+
+ public String getSiren() {
+ if (getSens() == COLLECTIVITE_VERS_PREFECTURE ){
+ return getEmmetteur();
+ } else {
+ return getDestinataire();
+ }
+ }
+
+ public String getTrigramme() {
+ if (typeFichier == NomFichierXML.ENVELOPPE_METIER ){
+ return null;
+ }
+ return trigramme;
+ }
+
+ public String getQuadrigramme() {
+ return quadrigramme;
+ }
+
+ public String getInfoAppli() {
+ return infoAppli;
+ }
+
+ public String getEmmetteur() {
+ return emmetteur;
+ }
+
+ public String getDestinataire() {
+ return destinataire;
+ }
+
+ public String getDate() {
+ return date;
+ }
+
+ public String getNumero() {
+ return numero;
+ }
+
+ public void setNomFichier(String nomFichier) {
+ this.nomFichier = nomFichier;
+ }
+
+ public String getNomFichier() {
+ return nomFichier;
+ }
+
+ public String toString(){
+ return nomFichier;
+ }
+
+ public NomFichierXML getNomFichierReponse(int numero) throws TedetisException{
+ String destinataire = this.destinataire;
+ String emmetteur = this.emmetteur;
+ if (this.destinataire.equals("")){
+ destinataire = "SPREF0011";
+ } else {
+ emmetteur = "";
+ }
+ String trigramme = "";
+ if (extension.equals(".tar.gz")){
+ trigramme = this.trigramme + "-";
+ }
+
+ String reponse = "" + trigramme + quadrigramme + "-"
+ + infoAppli + "-" + destinataire + "-" + emmetteur
+ + "-" + date + "-" + numero + extension;
+ return new NomFichierXML(reponse);
+
+ }
+}
--- /dev/null
+package com.adullact.tedetis.actes;
+
+import java.sql.SQLException;
+
+import javax.mail.MessagingException;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.sql.Transaction;
+import com.adullact.tedetis.util.MailSender;
+
+public class NotificationActes {
+
+ private Transaction transaction;
+ private MailSender mailSender;
+
+ public NotificationActes(MailSender mailSender) {
+ this.mailSender = mailSender;
+ }
+
+ public void setTransaction(Transaction transaction) {
+ this.transaction = transaction;
+ }
+
+ public void send() throws TedetisException {
+ String mail = null;
+ try {
+ mail = transaction.getUserEmail();
+ } catch (SQLException e) {
+ throw new TedetisException("Impossible de récuperer le mail de l'auteur de la transaction",e);
+ }
+ try {
+ mailSender.setSubject("Réception d'un courrier de la préfecture pour l'Acte "+ transaction.getNumberActe());
+ } catch (SQLException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ try {
+ mailSender.setMessage("La préfécture a envoyé un courrier relatif à l'acte " + transaction.getNumberActe() +". Vous pouvez le consulter en vous connectant sur votre Tiers de Télétransmission.");
+ } catch (SQLException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ mailSender.addRecipient(mail);
+ doSendMail();
+ }
+
+ private void doSendMail() throws TedetisException{
+ try {
+ mailSender.send();
+ } catch (MessagingException e) {
+ throw new TedetisException("Impossible d'envoyer les notifications ",e);
+ }
+ }
+}
--- /dev/null
+package com.adullact.tedetis.actes.messages;
+
+import java.io.InputStream;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.Arrays;
+import java.util.Vector;
+import java.util.regex.Pattern;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.CodeMessage;
+import com.adullact.tedetis.actes.FichierActesXML;
+import com.adullact.tedetis.actes.NotificationActes;
+import com.adullact.tedetis.sql.EnveloppeSQL;
+import com.adullact.tedetis.sql.Transaction;
+import com.adullact.tedetis.util.Util;
+
+/**
+ * Représente un fichier XML "métier", c'est à dire contenant un message metier
+ * @author eric
+ *
+ */
+abstract public class MessageMetier extends FichierActesXML {
+
+ public static final String [] NATURE_ACTE = {"DE","AR","AI","CC","BF","AU"};
+
+ private String departement;
+ private String siren;
+ private String dateActe;
+ private String numeroActe;
+ private String natureActe;
+ private String numero;
+ private String iDActe;
+
+ private String nomMessage;
+ private int numeroMessage = 0;
+ private String nomFichier;
+ private String dateMessageMetier;
+
+ private Transaction transactionSQL;
+
+ private Transaction transactionReponse;
+
+ public static boolean isDepartement(String departement){
+ if (departement.length() != 3) {
+ return false;
+ }
+ //Cas spécial pour la corse ...
+ if (departement.equals("02A") || departement.equals("02B")){
+ return true;
+ }
+ if (! Util.isDigit(departement)){
+ return false;
+ }
+ return true;
+ }
+
+ public static boolean isNumeroActe(String numeroActe){
+ return Pattern.matches("^[0-9A-Z][0-9A-Z_]{0,13}[0-9A-Z]$", numeroActe);
+ }
+
+ public static boolean isNatureActe(String natureActe){
+ if (Arrays.binarySearch(NATURE_ACTE, natureActe) != -1) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ public static boolean isFichierAutorise(String s){
+ return (s.endsWith(".pdf") || s.endsWith(".png") || s.endsWith(".jpg") );
+ }
+
+
+ /**
+ *
+ * @return le code du message, par exemple : "1-1"
+ */
+ abstract public String getCodeMessage();
+
+ /**
+ * @return la liste des fichiers que contient le message
+ */
+ public Vector<String> getFichiers(){
+ return new Vector<String>();
+ }
+
+ abstract public String getNomDateMessageMetier();
+
+ public MessageMetier(String nom) throws TedetisException{
+ super(nom);
+ nomFichier = nom;
+ }
+
+ public MessageMetier(String nom, InputStream is) throws TedetisException {
+ super(nom,is);
+ nomFichier = nom;
+ }
+
+ public MessageMetier(MessageMetier messageMetier, String codeMessage) throws TedetisException {
+ super(messageMetier.getMessageReponse(codeMessage));
+ nomFichier = messageMetier.getMessageReponse(codeMessage);
+ }
+
+
+ private String getMessageReponse(String codeMessage) {
+ return departement + "-" + siren + "-" + dateActe + "-" + numeroActe + "-" + natureActe + "-" + codeMessage + "_0.xml";
+ }
+
+ public String getDepartement() {
+ return departement;
+ }
+
+ public String getSiren() {
+ return siren;
+ }
+
+ public String getDateActe() {
+ return dateActe;
+ }
+
+ /**
+ *
+ * @return Numéro interne de l'acte
+ */
+ public String getNumeroActe() {
+ return numeroActe;
+ }
+
+ public String getNatureActe() {
+ return natureActe;
+ }
+
+ /**
+ * @return Numéro de fichier
+ */
+ public String getNumero() {
+ return numero;
+ }
+
+ public String getIDActe() {
+ if (iDActe == null) {
+ return departement + "-" + siren + "-" + dateActe + "-" + numeroActe + "-" + natureActe;
+ }
+
+ return iDActe;
+ }
+
+ public void setIDActe(String iDActe) {
+ this.iDActe = iDActe;
+ }
+
+ public void setDateMessageMetier(String date){
+ this.dateMessageMetier = date;
+ }
+
+ public String getDateMessageMetier() {
+ return dateMessageMetier;
+ }
+
+ /**
+ * Valide le contenu d'un message métier
+ * @throws TedetisException
+ */
+ @Override
+ public String getXML() throws TedetisException {
+
+ if (getIDActe() != null ) {
+ Racine.setAttribute("IDActe",getIDActe(),actesNS);
+ }
+ if (getNomDateMessageMetier() != null && getDateMessageMetier() != null){
+ Racine.setAttribute(getNomDateMessageMetier(),getDateMessageMetier(),actesNS);
+ }
+ return super.getXML();
+ }
+
+ @Override
+ protected void validerNom(String nom) throws TedetisException {
+
+ super.validerNom(nom);
+
+ Pattern p = Pattern.compile("-");
+ String[] items = p.split(nom);
+
+ if (items.length != 7) {
+ throw new TedetisException("Le message metier n'a pas un nom valide : " + nom);
+ }
+
+ departement = items[0];
+ siren = items[1];
+ dateActe = items[2];
+ numeroActe = items[3];
+ natureActe = items[4];
+ String tmpCodeMessage = items[5];
+
+
+ String fin = items[6];
+ int indexOfUnderscore = fin.indexOf('_') ;
+
+ nomMessage = nom.substring(0,nom.lastIndexOf('_'));
+
+ if (indexOfUnderscore != -1) {
+ tmpCodeMessage = tmpCodeMessage + "-" + fin.substring(0, indexOfUnderscore);
+ numero = fin.substring(indexOfUnderscore + 1 ,fin.length());
+ }
+
+ if (!tmpCodeMessage.equals(getCodeMessage())){
+ throw new TedetisException("Ce n'est pas un message de type " + getCodeMessage() + ": " + tmpCodeMessage);
+ }
+
+
+ int indexOfPoint = numero.indexOf('.');
+ if (indexOfPoint != -1) {
+ numero = numero.substring(0,indexOfPoint);
+ numeroMessage = Integer.parseInt(numero);
+ }
+
+ if (! MessageMetier.isDepartement(departement)) {
+ throw new TedetisException("Département invalide : " + departement) ;
+ }
+
+ if (! Util.isSIREN(siren)) {
+ throw new TedetisException("SIREN non conforme : " + siren );
+ }
+
+ if (isTransactionNomParticulier() ) {
+
+ if (!( dateActe.equals("") && numeroActe.equals("") && natureActe.equals(""))) {
+ throw new TedetisException("Information en trop pour des transaction 7-* ou 1-3 : " + nom );
+ }
+
+ } else {
+
+ if (! Util.isDate(dateActe)) {
+ throw new TedetisException("date malformée : " + dateActe);
+ }
+
+ if (! MessageMetier.isNumeroActe(numeroActe)){
+ throw new TedetisException("Numéro de l'acte malformée : " + numeroActe);
+ }
+
+ if (! MessageMetier.isNatureActe(natureActe)){
+ throw new TedetisException("Nature de l'acte inconnu : " + natureActe);
+ }
+ }
+ }
+
+ @Override
+ protected void validerContenuMessage() throws TedetisException {
+
+ //Validation du numéro avec le type de message
+ String type = Racine.getName();
+
+ if (! type.equals(CodeMessage.get(getCodeMessage()))) {
+ throw new TedetisException("Le type de message " + CodeMessage.get(getCodeMessage()) + " ne correspond pas au contenu : " + type );
+ }
+
+ if (!isTransactionNomParticulier()) {
+ setIDActe(Racine.getAttributeValue("IDActe", actesNS));
+ }
+
+ if (getNomDateMessageMetier() != null) {
+ setDateMessageMetier(Racine.getAttributeValue(getNomDateMessageMetier(),actesNS));
+ }
+
+ }
+
+ /**
+ * Permet de remplir les données manquantes
+ * @throws TedetisException
+ */
+ public void setFixturesData() throws TedetisException {
+ if (getNomDateMessageMetier() != null && getDateMessageMetier() == null){
+ Racine.setAttribute(getNomDateMessageMetier(),Util.getToday(),actesNS);
+ }
+ }
+
+ public boolean isNomFichierValide(String s){
+
+ if (! isFichierAutorise(s)) {
+ return false;
+ }
+
+ String IDActes =
+ getDepartement() + "-" + getSiren() + "-" +
+ getDateActe() + "-" + getNumeroActe() + "-" +
+ getNatureActe() + "-" + getCodeMessage() + "_" ;
+
+ if (s.length() < IDActes.length()) {
+ return false;
+ }
+
+ String debut = s.substring(0,IDActes.length());
+ if (! debut.equals(IDActes) ){
+ return false;
+ }
+
+ String fin = s.substring(IDActes.length(),s.indexOf('.'));
+ return Util.isDigit(fin);
+ }
+
+ protected String getFromRacineXML(String nomNoeud){
+ return Racine.getChild(nomNoeud,actesNS).getText();
+ }
+
+
+ protected boolean isTransactionNomParticulier(){
+ //Il faut surcharger cette méthode dans toutes les transactions "particulieres" (1-3, 7-1, 7-2 et 7-3)
+ return false;
+
+ }
+
+ public String getNextFileName() {
+ numeroMessage ++;
+ return nomMessage + "_" + numeroMessage;
+
+ }
+ /**
+ *
+ * @return le nom du fichier XML
+ */
+ public String getName() {
+ return nomFichier;
+ }
+
+ public boolean isCodeMessage(String acteCode) {
+ return getCodeMessage().equals(acteCode);
+ }
+
+
+ protected Transaction getTransaction() {
+ return transactionSQL;
+ }
+
+ public void updateDatabase(Connection connexion,String fichier) throws SQLException, TedetisException {
+ transactionSQL = Transaction.getTransaction(connexion, getSiren(), getNumeroActe());
+
+ if (enregistrementDocument() != 0){
+ EnveloppeSQL e = transactionSQL.getEnveloppe();
+ EnveloppeSQL envelopeReponse = e.createRelatedEnveloppe(fichier, 0);
+ transactionReponse = transactionSQL.createRelatedTransaction(envelopeReponse.getID(),enregistrementDocument(),getDateCreationDocument());
+ transactionReponse.setToStatus(Transaction.DOCUMENT_RECU, "Recu par le Tdt", null);
+ }
+ }
+
+ public void addFichierDatabase(String fichier, long length) throws SQLException {
+ if (enregistrementDocument() != 0){
+ transactionReponse.addIncludedFile(fichier, length);
+ }
+ }
+
+ /**
+ * Si 0, on enregistre pas les documents
+ * Sinon, on les enregistre dans la base avec comme type, le numéro
+ * retourné par la fonction
+ */
+ public int enregistrementDocument() {
+ return 0;
+ }
+
+ /**
+ * Date que l'on insère dans la base lors de la création de la transaction
+ * @return
+ */
+ public String getDateCreationDocument() {
+ return null;
+ }
+
+ public MessageMetier getAR() throws TedetisException {
+ return null;
+ }
+
+ public void sendNotification(NotificationActes notification) throws TedetisException {
+ notification.setTransaction(getTransaction());
+ }
+}
--- /dev/null
+package com.adullact.tedetis.actes.messages;
+
+import java.io.InputStream;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.Iterator;
+
+import org.apache.tools.ant.filters.StringInputStream;
+import org.jdom.Element;
+import org.jdom.output.XMLOutputter;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.CodeMessage;
+import com.adullact.tedetis.actes.CodeNature;
+import com.adullact.tedetis.actes.FichierActesXML;
+import com.adullact.tedetis.sql.Transaction;
+import com.adullact.tedetis.util.Util;
+
+public class MessageMetierARActe extends MessageMetier {
+
+ private String NumeroInterne;
+ private MessageMetierActe acteRelatif;
+ private String classificationDate;
+
+ public MessageMetierARActe(String nom) throws TedetisException {
+ super(nom);
+ }
+
+ public MessageMetierARActe(String nom, InputStream is) throws TedetisException {
+ super(nom, is);
+ }
+
+ public MessageMetierARActe(MessageMetier messageMetier, String codeMessage) throws TedetisException {
+ super(messageMetier,codeMessage);
+ acteRelatif = (MessageMetierActe) messageMetier;
+ }
+
+ @Override
+ public String getCodeMessage(){
+ return CodeMessage.ARACTE_CODE;
+ }
+
+ @Override
+ protected Element getNewRacine() {
+ return new Element(CodeMessage.ARACTE_STRING,actesNS);
+ }
+
+ @Override
+ public String getXML() throws TedetisException {
+
+ validPresent(getActe(), "Acte relatif");
+
+ Element acteR = new Element("ActeRecu",actesNS);
+ Iterator<?> i = acteRelatif.getRacine().getChildren().iterator();
+ while (i.hasNext()) {
+ Element next = (Element) i.next();
+ acteR.addContent((Element) next.clone());
+ }
+
+ acteR.setAttribute("Date",Util.getDateIso(acteRelatif.getDateActe()),actesNS);
+ acteR.setAttribute("NumeroInterne",acteRelatif.getNumeroActe(),actesNS);
+ acteR.setAttribute("CodeNatureActe",CodeNature.get(acteRelatif.getNatureActe()),actesNS);
+
+ Racine.addContent(acteR);
+
+ addContentNode(Racine, "ClassificationDateVersionEnCours", getClassificationDate(), actesNS);
+
+ return super.getXML();
+ }
+
+ private String getClassificationDate() {
+ return classificationDate;
+ }
+
+ public void setClassificationDate(String classificationDate) {
+ this.classificationDate = classificationDate;
+ }
+
+ @Override
+ public void validerContenuMessage() throws TedetisException {
+ super.validerContenuMessage();
+
+ Element ActeRecu = Racine.getChild("ActeRecu", actesNS);
+ setNumeroInterne(ActeRecu.getAttributeValue("NumeroInterne", actesNS));
+
+ ActeRecu.setName(CodeMessage.ACTE_STRING);
+ ActeRecu.addNamespaceDeclaration(actesNS);
+ ActeRecu.addNamespaceDeclaration(inseeNS);
+ ActeRecu.addNamespaceDeclaration(xsiNS);
+ ActeRecu.setAttribute("schemaLocation","http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd",xsiNS);
+
+ XMLOutputter sortie = new XMLOutputter(FichierActesXML.formatXMLSortie);
+ String s = sortie.outputString(ActeRecu);
+
+ acteRelatif = new MessageMetierActe(this.getIDActe() + "-1-1_0.xml",new StringInputStream(s));
+ if (! acteRelatif.getTrueIDActe().equals(this.getIDActe())){
+ throw new TedetisException("Le numéro de l'acte ("+ this.getIDActe()
+ +")ne correspont pas au nom du fichier" + acteRelatif.getTrueIDActe());
+ }
+ }
+
+ public void setDateReception(String dateReception) {
+ setDateMessageMetier(dateReception);
+ }
+
+ public String getDateReception() {
+ return getDateMessageMetier();
+ }
+
+ public void setNumeroInterne(String numeroInterne) {
+ NumeroInterne = numeroInterne;
+ }
+
+ public String getNumeroInterne() {
+ return NumeroInterne;
+ }
+
+ public void setActe(MessageMetierActe messageMetierActe) throws TedetisException {
+ if (! messageMetierActe.getTrueIDActe().equals(getIDActe())) {
+ throw new TedetisException("Les identifiants ne correspondent pas " + messageMetierActe.getTrueIDActe() + " - " + getIDActe());
+ }
+ acteRelatif = messageMetierActe;
+ }
+
+ public MessageMetierActe getActe() {
+ return acteRelatif;
+ }
+
+ public void setFixturesData() throws TedetisException{
+ super.setFixturesData();
+ setClassificationDate("2008-12-31");
+ }
+
+ @Override
+ public String getNomDateMessageMetier(){
+ return "DateReception";
+ }
+
+ @Override
+ public void updateDatabase(Connection connexion,String fichier) throws SQLException, TedetisException {
+ super.updateDatabase(connexion,fichier);
+ getTransaction().setUniqueID(getIDActe());
+ getTransaction().setToStatus(Transaction.ACQUITTER, "Recu par le MIOCT le " +
+ getDateReception(), getXML());
+ }
+}
--- /dev/null
+package com.adullact.tedetis.actes.messages;
+
+import java.io.InputStream;
+
+import com.adullact.tedetis.Exception.TedetisException;
+
+abstract public class MessageMetierARAdapter extends MessageMetier {
+
+ public MessageMetierARAdapter(String nom) throws TedetisException {
+ super(nom);
+ }
+
+ public MessageMetierARAdapter(String nom, InputStream is) throws TedetisException {
+ super(nom, is);
+ }
+
+ public MessageMetierARAdapter(MessageMetierActe messageMetier, String codeMessage) throws TedetisException {
+ super(messageMetier,codeMessage);
+ }
+
+ @Override
+ public String getXML() throws TedetisException {
+ return super.getXML();
+ }
+
+ @Override
+ public void validerContenuMessage() throws TedetisException {
+ super.validerContenuMessage();
+ }
+
+
+ @Override
+ public void setFixturesData() throws TedetisException{
+ super.setFixturesData();
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.actes.messages;
+
+import java.io.InputStream;
+import java.sql.Connection;
+import java.sql.SQLException;
+
+import org.jdom.Element;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.CodeMessage;
+import com.adullact.tedetis.sql.Transaction;
+
+public class MessageMetierARAnnulation extends MessageMetierARAdapter {
+
+ public MessageMetierARAnnulation(String nom) throws TedetisException {
+ super(nom);
+ }
+
+ public MessageMetierARAnnulation(String nom, InputStream is) throws TedetisException {
+ super(nom, is);
+ }
+
+ public MessageMetierARAnnulation(MessageMetierActe messageMetier, String codeMessage) throws TedetisException {
+ super(messageMetier,codeMessage);
+ }
+
+ @Override
+ public String getCodeMessage() {
+ return CodeMessage.ARANNULATION_CODE;
+ }
+
+ @Override
+ protected Element getNewRacine() {
+ return new Element(CodeMessage.ARANNULATION_STRING,actesNS);
+ }
+
+ @Override
+ public String getNomDateMessageMetier(){
+ return "DateReception";
+ }
+
+ public String getDateReception() {
+ return getDateMessageMetier();
+ }
+
+ @Override
+ public void updateDatabase(Connection connexion,String fichier) throws SQLException, TedetisException {
+ super.updateDatabase(connexion,fichier);
+ getTransaction().setToStatus(Transaction.ANNULER, "Annulation recu par le MIOCT le " +
+ getDateMessageMetier(), getXML());
+
+ Transaction.getTransactionAnnulation(connexion, getSiren(), getNumeroActe())
+ .setToStatus(Transaction.ACQUITTER, "Recu par le MIOCT le " + getDateReception(), getXML());
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.actes.messages;
+
+import java.io.InputStream;
+
+import org.jdom.Element;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.CodeMessage;
+
+public class MessageMetierARDemandePC extends MessageMetierARAdapter {
+
+ public MessageMetierARDemandePC(String nom) throws TedetisException {
+ super(nom);
+ }
+
+ public MessageMetierARDemandePC(String nom, InputStream is) throws TedetisException {
+ super(nom, is);
+ }
+
+ public MessageMetierARDemandePC(MessageMetierActe messageMetier, String codeMessage) throws TedetisException {
+ super(messageMetier,codeMessage);
+ }
+
+ @Override
+ public String getCodeMessage() {
+ return CodeMessage.ARDEMANDEPIECECOMPLEMENTAIRE_CODE;
+ }
+
+ @Override
+ protected Element getNewRacine() {
+ return new Element(CodeMessage.ARDEMANDEPIECECOMPLEMENTAIRE_STRING,actesNS);
+ }
+
+ @Override
+ public String getNomDateMessageMetier(){
+ return "DateCourrierPref";
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.actes.messages;
+
+import java.io.InputStream;
+
+import org.jdom.Element;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.CodeMessage;
+
+public class MessageMetierARLO extends MessageMetier {
+
+ public MessageMetierARLO(String nom) throws TedetisException {
+ super(nom);
+ }
+
+ public MessageMetierARLO(String nom, InputStream is) throws TedetisException {
+ super(nom, is);
+ }
+
+ public MessageMetierARLO(MessageMetierActe messageMetier, String codeMessage) throws TedetisException {
+ super(messageMetier,codeMessage);
+ }
+
+ @Override
+ public String getCodeMessage() {
+ return CodeMessage.ARLETTREOBSERVATIONS_CODE;
+ }
+
+ @Override
+ protected Element getNewRacine() {
+ return new Element(CodeMessage.ARLETTREOBSERVATIONS_STRING,actesNS);
+ }
+
+ @Override
+ public String getXML() throws TedetisException {
+ String result = super.getXML();
+ return result;
+ }
+
+ @Override
+ public void validerContenuMessage() throws TedetisException {
+ super.validerContenuMessage();
+ }
+
+
+ @Override
+ public String getNomDateMessageMetier(){
+ return "DateCourrierPref";
+ }
+
+ @Override
+ public void setFixturesData() throws TedetisException{
+ super.setFixturesData();
+ }
+}
--- /dev/null
+package com.adullact.tedetis.actes.messages;
+
+import java.io.InputStream;
+
+import org.jdom.Element;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.CodeMessage;
+
+public class MessageMetierARPC extends MessageMetierARPCLO {
+
+ public MessageMetierARPC(String nom) throws TedetisException {
+ super(nom);
+ }
+
+ public MessageMetierARPC(String nom, InputStream is) throws TedetisException {
+ super(nom, is);
+ }
+
+ public MessageMetierARPC(MessageMetierActe messageMetier, String codeMessage) throws TedetisException {
+ super(messageMetier,codeMessage);
+ }
+
+ @Override
+ public String getCodeMessage() {
+ return CodeMessage.ARPIECECOMPLEMENTAIRE_CODE;
+ }
+
+ @Override
+ protected Element getNewRacine() {
+ return new Element(CodeMessage.ARPIECECOMPLEMENTAIRE_STRING,actesNS);
+ }
+
+
+}
--- /dev/null
+package com.adullact.tedetis.actes.messages;
+
+import java.io.InputStream;
+import java.sql.Connection;
+import java.sql.SQLException;
+
+import org.jdom.Element;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.sql.Transaction;
+
+abstract public class MessageMetierARPCLO extends MessageMetier {
+
+ private String dateCourierPref;
+ private String CPIDActes;
+
+ public MessageMetierARPCLO(String nom) throws TedetisException {
+ super(nom);
+ }
+
+ public MessageMetierARPCLO(String nom, InputStream is) throws TedetisException {
+ super(nom, is);
+ }
+
+ public MessageMetierARPCLO(MessageMetierActe messageMetier, String codeMessage) throws TedetisException {
+ super(messageMetier,codeMessage);
+ }
+
+ @Override
+ public String getXML() throws TedetisException {
+
+ validPresent(getCPIDActes(), "CPIDActe");
+ validPresent(getDateCourierPref(), "DateCourrierPref");
+
+
+ Element InfosCourrierPref = new Element("InfosCourrierPref",actesNS);
+ InfosCourrierPref.setAttribute("IDActe",getCPIDActes(),actesNS);
+ InfosCourrierPref.setAttribute("DateCourrierPref",getDateCourierPref(),actesNS);
+ Racine.addContent(InfosCourrierPref);
+
+ return super.getXML();
+ }
+
+ @Override
+ public void validerContenuMessage() throws TedetisException {
+ super.validerContenuMessage();
+ Element InfosCourrierPref = Racine.getChild("InfosCourrierPref",actesNS);
+
+ setCPIDActes(InfosCourrierPref.getAttributeValue("IDActe",actesNS));
+ setDateCourierPref(InfosCourrierPref.getAttributeValue("DateCourrierPref",actesNS));
+ }
+
+ @Override
+ public String getNomDateMessageMetier(){
+ return "DateReception";
+ }
+
+ @Override
+ public void setFixturesData() throws TedetisException{
+ super.setFixturesData();
+
+ if (getDateCourierPref() == null){
+ setDateCourierPref("2008-12-31");
+ }
+ }
+
+ @Override
+ public String getIDActe(){
+ return null;
+ }
+
+ public void setDateCourierPref(String dateCourierPref) {
+ this.dateCourierPref = dateCourierPref;
+ }
+
+ public String getDateCourierPref() {
+ return dateCourierPref;
+ }
+
+ public void setCPIDActes(String cPIDActes) {
+ CPIDActes = cPIDActes;
+ }
+
+ public String getCPIDActes() {
+ return CPIDActes;
+ }
+
+ public String getDateReception() {
+ return getDateMessageMetier();
+ }
+
+ @Override
+ public void updateDatabase(Connection connexion,String fichier) throws SQLException, TedetisException {
+ super.updateDatabase(connexion,fichier);
+ Transaction transaction = Transaction.getRelatedTransaction(connexion,getSiren(), getNumeroActe(), getDateReception());
+ transaction.setToStatus(Transaction.ACQUITTEMENT_DOCUMENT_RECU, "Recu par le MIOCT le " +
+ getDateReception(), getXML());
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.actes.messages;
+
+import java.io.InputStream;
+
+import org.jdom.Element;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.CodeMessage;
+
+public class MessageMetierARreponseLO extends MessageMetierARPCLO {
+
+ public MessageMetierARreponseLO(String nom) throws TedetisException {
+ super(nom);
+ }
+
+ public MessageMetierARreponseLO(String nom, InputStream is) throws TedetisException {
+ super(nom, is);
+ }
+
+ public MessageMetierARreponseLO(MessageMetierActe messageMetier, String codeMessage) throws TedetisException {
+ super(messageMetier,codeMessage);
+ }
+
+ @Override
+ public String getCodeMessage() {
+ return CodeMessage.ARREJETREPONSELETTREOBSERVATIONS_CODE;
+ }
+
+ @Override
+ protected Element getNewRacine() {
+ return new Element(CodeMessage.ARREJETREPONSELETTREOBSERVATIONS_STRING,actesNS);
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.actes.messages;
+
+import java.io.InputStream;
+import java.util.Vector;
+
+import org.jdom.Element;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.CodeMessage;
+import com.adullact.tedetis.actes.CodeNature;
+import com.adullact.tedetis.util.Util;
+
+public class MessageMetierActe extends MessageMetier {
+
+ public MessageMetierActe(String nom) throws TedetisException {
+ super(nom);
+ }
+
+ public MessageMetierActe(String nom, InputStream is) throws TedetisException {
+ super(nom, is);
+ }
+
+ @Override
+ public String getCodeMessage() {
+ return CodeMessage.ACTE_CODE;
+ }
+
+ @Override
+ protected Element getNewRacine() {
+ return new Element(CodeMessage.ACTE_STRING,actesNS);
+ }
+
+ private void addCodeMatiereToXML(String nomElement,String valeurElement){
+ Element CodeMatiere = new Element(nomElement,actesNS);
+ CodeMatiere.setAttribute("CodeMatiere",valeurElement,actesNS);
+ Racine.addContent(CodeMatiere);
+ }
+
+ @Override
+ public String getXML() throws TedetisException {
+
+ validPresent(getDateActe(), "dateActe");
+ validPresent(getNumeroActe(), "numeroActe");
+ validPresent(getNatureActe(), "natureActe");
+ validPresent(getCodeMatiere1(), "codeMatiere1");
+ validPresent(getCodeMatiere2(), "codeMatiere2");
+ validPresent(getObjet(), "objet");
+ validPresent(getClassificationDateVersion(), "classificationDateVersion");
+ validPresent(getDocument(), "document");
+
+ Racine.setAttribute("Date",Util.getDateIso(getDateActe()),actesNS);
+ Racine.setAttribute("NumeroInterne",getNumeroActe(),actesNS);
+ Racine.setAttribute("CodeNatureActe",CodeNature.get(getNatureActe()),actesNS);
+
+ addCodeMatiereToXML("CodeMatiere1", getCodeMatiere1());
+ addCodeMatiereToXML("CodeMatiere2", getCodeMatiere2());
+
+ addContentNode(Racine,"Objet",getObjet(),actesNS);
+ addContentNode(Racine,"ClassificationDateVersion",getClassificationDateVersion(),actesNS);
+
+ Element document = new Element("Document",actesNS);
+ Racine.addContent(document);
+ addContentNode(document,"NomFichier",getDocument(),actesNS);
+
+ addAllFichiers("Annexes", "Annexe", true, getAnnexe());
+
+ return super.getXML();
+ }
+
+ @Override
+ public void validerContenuMessage() throws TedetisException {
+
+ super.validerContenuMessage();
+
+ // On récupère l'acte
+ Element doc = Racine.getChild("Document", actesNS);
+ Element nomFichier = doc.getChild("NomFichier",actesNS);
+
+ setDocument(nomFichier.getText());
+
+ setCodeMatiere1(Racine.getChild("CodeMatiere1",actesNS).getAttributeValue("CodeMatiere",actesNS));
+ setCodeMatiere2(Racine.getChild("CodeMatiere2",actesNS).getAttributeValue("CodeMatiere",actesNS));
+ setObjet(getFromRacineXML("Objet"));
+ setClassificationDateVersion(getFromRacineXML("ClassificationDateVersion"));
+
+ // On récupère les annexes
+ lesAnnexes = getAllFichiers(Racine.getChild("Annexes", actesNS), "Annexe");
+ }
+
+ private String codeMatiere1;
+ private String codeMatiere2;
+ private String objet;
+ private String classificationDateVersion;
+ private String document;
+ private Vector<String> lesAnnexes;
+
+ public String getCodeMatiere1() {
+ return codeMatiere1;
+ }
+
+ public void setCodeMatiere1(String codeMatiere1) {
+ this.codeMatiere1 = codeMatiere1;
+ }
+
+ public String getCodeMatiere2() {
+ return codeMatiere2;
+ }
+
+ public void setCodeMatiere2(String codeMatiere2) {
+ this.codeMatiere2 = codeMatiere2;
+ }
+
+ public String getObjet() {
+ return objet;
+ }
+
+ public void setObjet(String objet) {
+ this.objet = objet;
+ }
+
+ public String getClassificationDateVersion() {
+ return classificationDateVersion;
+ }
+
+ public void setClassificationDateVersion(String classificationDateVersion) {
+ this.classificationDateVersion = classificationDateVersion;
+ }
+
+ public String getDocument() {
+ return document;
+ }
+
+ public void setDocument(String document) throws TedetisException {
+ if (! isNomFichierValide(document) && ! (document.endsWith(".pdf") || document.endsWith(".xml"))){
+ throw new TedetisException("Le nom du fichier est invalide : " + document);
+ }
+ this.document = document;
+ }
+
+ public Vector<String> getAnnexe() {
+ if (lesAnnexes == null){
+ lesAnnexes = new Vector<String>();
+ }
+ return lesAnnexes;
+ }
+
+ public void addAnnexe(String f) throws TedetisException {
+ if (! isNomFichierValide(f)){
+ throw new TedetisException("Le nom du fichier est invalide : " + f);
+ }
+ getAnnexe().addElement(f);
+ }
+
+ @Override
+ public String getIDActe(){
+ //Les messages de type 1-1 n'ont pas d'IDActe
+ return null;
+ }
+
+ public String getTrueIDActe(){
+ return super.getIDActe();
+ }
+
+ @Override
+ public Vector<String> getFichiers() {
+ Vector<String> v = new Vector<String>(getAnnexe());
+ v.addElement(document);
+ return v;
+ }
+
+ @Override
+ public void setFixturesData(){
+ //Not impletmented
+ throw new RuntimeException("Not implemented");
+ }
+
+ @Override
+ public String getNomDateMessageMetier(){
+ return null;
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.actes.messages;
+
+import java.io.InputStream;
+
+import org.jdom.Element;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.CodeMessage;
+
+public class MessageMetierAnnulation extends MessageMetierARAdapter {
+
+ public MessageMetierAnnulation(String nom) throws TedetisException {
+ super(nom);
+ }
+
+ public MessageMetierAnnulation(String nom, InputStream is) throws TedetisException {
+ super(nom, is);
+ }
+
+ public MessageMetierAnnulation(MessageMetierActe messageMetier, String codeMessage) throws TedetisException {
+ super(messageMetier,codeMessage);
+ }
+
+ @Override
+ public String getCodeMessage() {
+ return CodeMessage.ANNULATION_CODE;
+ }
+
+ @Override
+ protected Element getNewRacine() {
+ return new Element(CodeMessage.ANNULATION_STRING,actesNS);
+ }
+
+ @Override
+ public String getNomDateMessageMetier(){
+ return null;
+ }
+
+ public MessageMetierARAnnulation getAR() throws TedetisException{
+ MessageMetierARAnnulation m = new MessageMetierARAnnulation(getIDActe() + "-" + CodeMessage.ARANNULATION_CODE + "_0.xml");
+ return m;
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.actes.messages;
+
+import java.io.InputStream;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.Iterator;
+
+import org.apache.tools.ant.filters.StringInputStream;
+import org.jdom.Element;
+import org.jdom.output.XMLOutputter;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.CodeMessage;
+import com.adullact.tedetis.actes.CodeNature;
+import com.adullact.tedetis.actes.FichierActesXML;
+import com.adullact.tedetis.sql.Transaction;
+import com.adullact.tedetis.util.Util;
+import com.adullact.tedetis.util.ValiderXML;
+
+public class MessageMetierAnomalieActe extends MessageMetier {
+
+ private String NumeroInterne;
+ private MessageMetierActe acteRelatif;
+ private String date;
+ private String nature;
+ private String detail;
+ private String classificationDate;
+
+ public MessageMetierAnomalieActe(String nom) throws TedetisException {
+ super(nom);
+ }
+
+ public MessageMetierAnomalieActe(String nom, InputStream is) throws TedetisException {
+ super(nom, is);
+ }
+
+ public MessageMetierAnomalieActe(MessageMetier messageMetier, String codeMessage) throws TedetisException {
+ super(messageMetier,codeMessage);
+ acteRelatif = (MessageMetierActe) messageMetier;
+ }
+
+ @Override
+ protected ValiderXML getValidateur(){
+ //Le ministère envoie des enveloppe invalide ...
+ ValiderXML v = new ValiderXML();
+ v.pasDeValidationDuSchema();
+ return v;
+ }
+
+ @Override
+ public String getCodeMessage(){
+ return CodeMessage.ANOMALIEACTE_CODE;
+ }
+
+ @Override
+ protected Element getNewRacine() {
+ return new Element(CodeMessage.ANOMALIEACTE_STRING,actesNS);
+ }
+
+
+ /**
+ * Pour les message anomalie, le numéro de l'acte est dans le XML et pas dans le titre du fichier
+ * */
+ public String getNumeroActe() {
+ return getNumeroInterne();
+ }
+
+ @Override
+ public String getXML() throws TedetisException {
+
+ validPresent(getActe(), "Acte relatif");
+ validPresent(getDate(), "Date");
+ validPresent(getNature(), "Nature");
+ validPresent(getDetail(), "Detail");
+
+ addContentNode(Racine,"Date", getDate(), actesNS);
+ addContentNode(Racine,"Nature", getNature(), actesNS);
+ addContentNode(Racine,"Detail", getDetail(), actesNS);
+
+ Element acteR = new Element("ActeRecu",actesNS);
+ Iterator<?> i = acteRelatif.getRacine().getChildren().iterator();
+ while (i.hasNext()) {
+ Element next = (Element) i.next();
+ acteR.addContent((Element) next.clone());
+ }
+
+ acteR.setAttribute("Date",Util.getDateIso(acteRelatif.getDateActe()),actesNS);
+ acteR.setAttribute("NumeroInterne",acteRelatif.getNumeroActe(),actesNS);
+ acteR.setAttribute("CodeNatureActe",CodeNature.get(acteRelatif.getNatureActe()),actesNS);
+
+ Racine.addContent(acteR);
+
+ addContentNode(Racine, "ClassificationDateVersionEnCours", getClassificationDate(), actesNS);
+
+ return super.getXML();
+ }
+
+ @Override
+ public void validerContenuMessage() throws TedetisException {
+ super.validerContenuMessage();
+
+ Element ActeRecu = Racine.getChild("ActeRecu", actesNS);
+ setNumeroInterne(ActeRecu.getAttributeValue("NumeroInterne", actesNS));
+
+ ActeRecu.setName(CodeMessage.ACTE_STRING);
+ ActeRecu.addNamespaceDeclaration(actesNS);
+ ActeRecu.addNamespaceDeclaration(inseeNS);
+ ActeRecu.addNamespaceDeclaration(xsiNS);
+ ActeRecu.setAttribute("schemaLocation","http://www.interieur.gouv.fr/ACTES#v1.1-20040216 actesv1_1.xsd",xsiNS);
+
+ XMLOutputter sortie = new XMLOutputter(FichierActesXML.formatXMLSortie);
+ String s = sortie.outputString(ActeRecu);
+
+ String numeroActe = getDepartement() + "-" +
+ getSiren() + "-" +
+ Util.getDateXML(ActeRecu.getAttributeValue("Date", actesNS)) + "-" +
+ ActeRecu.getAttributeValue("NumeroInterne",actesNS) + "-" +
+ CodeNature.get(ActeRecu.getAttributeValue("CodeNatureActe",actesNS));
+
+ acteRelatif = new MessageMetierActe(numeroActe + "-1-1_0.xml",new StringInputStream(s));
+
+ setClassificationDate(getFromRacineXML("ClassificationDateVersionEnCours"));
+ setDate(getFromRacineXML("Date"));
+ setNature(getFromRacineXML("Nature"));
+ setDetail(getFromRacineXML("Detail"));
+
+ }
+
+ @Override
+ public String getIDActe(){
+ //Les messages de type 1-1 n'ont pas d'IDActe
+ return null;
+ }
+
+ public String getTrueIDActe(){
+ return super.getIDActe();
+ }
+
+ public void setNumeroInterne(String numeroInterne) {
+ NumeroInterne = numeroInterne;
+ }
+
+ public String getNumeroInterne() {
+ return NumeroInterne;
+ }
+
+ public void setActe(MessageMetierActe messageMetierActe) throws TedetisException {
+ acteRelatif = messageMetierActe;
+ }
+
+ public MessageMetierActe getActe() {
+ return acteRelatif;
+ }
+
+ public void setFixturesData() throws TedetisException{
+ super.setFixturesData();
+ if (getClassificationDate() == null ){
+ setClassificationDate("2008-12-31");
+ }
+ if (getNature() == null){
+ setNature("007");
+ }
+ if (getDetail() == null) {
+ setDetail("anomalie de test");
+ }
+ if (getDate() == null ) {
+ setDate("2008-12-31");
+ }
+ }
+
+ @Override
+ public String getNomDateMessageMetier(){
+ return null;
+ }
+
+ @Override
+ public void updateDatabase(Connection connexion,String fichier) throws SQLException, TedetisException {
+ super.updateDatabase(connexion,fichier);
+
+ getTransaction().setToStatus(Transaction.ERREUR, "Anomalie signalee par le MIOCT : " +
+ getDetail(), getXML());
+
+ getTransaction().setUniqueID(getIDActe());
+ }
+
+ public void setNature(String nature) {
+ this.nature = nature;
+ }
+
+ public String getNature() {
+ return nature;
+ }
+
+ public void setDetail(String detail) {
+ this.detail = detail;
+ }
+
+
+
+ public String getDetail() {
+
+ return detail;
+ }
+
+ public void setDate(String date) {
+ this.date = date;
+ }
+
+ public String getDate() {
+ return date;
+ }
+
+ public void setClassificationDate(String classificationDate) {
+ this.classificationDate = classificationDate;
+ }
+
+ public String getClassificationDate() {
+ return classificationDate;
+ }
+
+ @Override
+ protected boolean isTransactionNomParticulier(){
+ return true;
+ }
+
+
+}
--- /dev/null
+package com.adullact.tedetis.actes.messages;
+
+import java.io.InputStream;
+
+import org.jdom.Element;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.CodeMessage;
+import com.adullact.tedetis.actes.NotificationActes;
+
+public class MessageMetierCourrierSimple extends MessageMetierDonneesCourrierPref {
+
+ public MessageMetierCourrierSimple(String nom) throws TedetisException {
+ super(nom);
+ }
+
+ public MessageMetierCourrierSimple(String nom, InputStream is) throws TedetisException {
+ super(nom, is);
+ }
+
+ public MessageMetierCourrierSimple(MessageMetierActe messageMetier, String codeMessage) throws TedetisException {
+ super(messageMetier,codeMessage);
+ }
+
+ @Override
+ public String getCodeMessage() {
+ return CodeMessage.COURRIERSIMPLE_CODE;
+ }
+
+ @Override
+ protected Element getNewRacine() {
+ return new Element(CodeMessage.COURRIERSIMPLE_STRING,actesNS);
+ }
+
+ public int enregistrementDocument() {
+ return 2;
+ }
+
+ @Override
+ public void sendNotification(NotificationActes notification) throws TedetisException {
+ super.sendNotification(notification);
+ notification.send();
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.actes.messages;
+
+import java.io.InputStream;
+import java.util.Vector;
+
+import org.jdom.Element;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.CodeMessage;
+import com.adullact.tedetis.actes.NotificationActes;
+import com.adullact.tedetis.util.Util;
+
+public class MessageMetierDefereTA extends MessageMetier {
+
+ private String dateDepot;
+ private String natureIllegalite;
+ private Vector<String> lesPJ;
+
+ private MessageMetierActe acteRelatif;
+
+ public MessageMetierDefereTA(String nom) throws TedetisException {
+ super(nom);
+ }
+
+ public MessageMetierDefereTA(String nom, InputStream is) throws TedetisException {
+ super(nom, is);
+ }
+
+ public MessageMetierDefereTA(MessageMetierActe messageMetier, String codeMessage) throws TedetisException {
+ super(messageMetier,codeMessage);
+ acteRelatif = messageMetier;
+ }
+
+ @Override
+ public String getCodeMessage() {
+ return CodeMessage.DEFERETA_CODE;
+ }
+
+ @Override
+ protected Element getNewRacine() {
+ return new Element(CodeMessage.DEFERETA_STRING,actesNS);
+ }
+
+ @Override
+ public String getXML() throws TedetisException {
+ validPresent(getDateDepot(), "dateDepot");
+ validPresent(getNatureIllegalite(), "natureIllegalite");
+ validPresent(getLesPJ(), "lesPJ");
+
+ addContentNode(Racine,"DateDepot",Util.getDateIso(getDateDepot()),actesNS);
+ addContentNode(Racine,"NatureIllegalite",getNatureIllegalite(),actesNS);
+
+ addAllFichiers("PiecesJointes","PieceJointe", false, getLesPJ());
+
+ return super.getXML();
+ }
+
+ @Override
+ public void validerContenuMessage() throws TedetisException {
+
+ super.validerContenuMessage();
+
+ dateDepot = getFromRacineXML("DateDepot");
+ natureIllegalite = getFromRacineXML("NatureIllegalite");
+ lesPJ = getAllFichiers(Racine.getChild("PiecesJointes", actesNS), "PieceJointe");
+
+ }
+
+ @Override
+ public Vector<String> getFichiers() {
+ return getLesPJ();
+ }
+
+ public String getDateDepot() {
+ return dateDepot;
+ }
+
+ public void setDateDepot(String dateDepot) {
+ this.dateDepot = dateDepot;
+ }
+
+ public String getNatureIllegalite() {
+ return natureIllegalite;
+ }
+
+ public void setNatureIllegalite(String natureIllegalite) {
+ this.natureIllegalite = natureIllegalite;
+ }
+
+ public Vector<String> getLesPJ() {
+ if (lesPJ == null) {
+ //TODO : c'est pas beau
+ lesPJ = new Vector<String>();
+ }
+ return lesPJ;
+ }
+
+ public void addPJ(String pj) throws TedetisException {
+ if (! isNomFichierValide(pj)){
+ throw new TedetisException("Le nom du fichier est invalide : " + pj);
+ }
+ //TODO :c'est bizarre ...
+ getLesPJ().addElement(pj);
+ }
+
+ public void setFixturesData() throws TedetisException{
+ super.setFixturesData();
+ if (getDateDepot() == null) {
+ if (acteRelatif != null) {
+ setDateDepot(acteRelatif.getDateActe());
+ } else {
+ setDateDepot("20083112");
+ }
+ }
+ if (getNatureIllegalite() == null) {
+ setNatureIllegalite("NATURE_TEST");
+ }
+
+ if (getLesPJ().size() == 0) {
+ addPJ(getNextFileName() + ".pdf");
+ }
+
+ }
+
+ @Override
+ public String getNomDateMessageMetier(){
+ return null;
+ }
+
+ @Override
+ public int enregistrementDocument(){
+ return 5;
+ }
+
+ @Override
+ public String getDateCreationDocument() {
+ return getDateDepot();
+ }
+
+ @Override
+ public void sendNotification(NotificationActes notification) throws TedetisException {
+ super.sendNotification(notification);
+ notification.send();
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.actes.messages;
+
+import java.io.InputStream;
+
+import org.jdom.Element;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.CodeMessage;
+
+public class MessageMetierDemandeClassification extends MessageMetier {
+
+ private String dateClassification ;
+
+ public MessageMetierDemandeClassification(String nom) throws TedetisException {
+ super(nom);
+ }
+
+ public MessageMetierDemandeClassification(String nom, InputStream is) throws TedetisException {
+ super(nom, is);
+ }
+
+ public MessageMetierDemandeClassification(MessageMetierActe messageMetier, String codeMessage) throws TedetisException {
+ super(messageMetier,codeMessage);
+ }
+
+ @Override
+ public String getCodeMessage() {
+ return CodeMessage.DEMANDECLASSIFICATION_CODE;
+ }
+
+ @Override
+ protected Element getNewRacine() {
+ return new Element(CodeMessage.DEMANDECLASSIFICATION_STRING,actesNS);
+ }
+
+ @Override
+ public String getXML() throws TedetisException {
+ validPresent(getDateClassification(), "Date classification");
+ addContentNode(Racine,"DateClassification",getDateClassification(),actesNS);
+ return super.getXML();
+ }
+
+ @Override
+ public void validerContenuMessage() throws TedetisException {
+ super.validerContenuMessage();
+ try {
+ setDateClassification(getFromRacineXML("DateClassification"));
+ } catch (Exception e){
+ setDateClassification("1970-01-01");
+ }
+ }
+
+
+ @Override
+ public String getNomDateMessageMetier(){
+ return null;
+ }
+
+ @Override
+ public void setFixturesData() throws TedetisException{
+ if (getDateClassification() == null){
+ setDateClassification("2008-12-31");
+ }
+ super.setFixturesData();
+ }
+
+ @Override
+ public String getIDActe(){
+ return null;
+ }
+
+ public void setDateClassification(String dateClassification) {
+ this.dateClassification = dateClassification;
+ }
+
+ public String getDateClassification() {
+ return dateClassification;
+ }
+
+ @Override
+ protected boolean isTransactionNomParticulier(){
+ return true;
+ }
+
+ public MessageMetier getReponseFromFile(String fichierClassification) throws TedetisException{
+ MessageMetierRetourClassification classification = new MessageMetierRetourClassification(this,CodeMessage.RETOURCLASSIFICATION_CODE);
+ classification.setFichierClassification(fichierClassification);
+ if (classification.getDateClassification().compareTo(getDateClassification()) > 0){
+ return classification;
+ } else {
+ MessageMetierReponseClassificationSansChangement r = new MessageMetierReponseClassificationSansChangement(this,CodeMessage.REPONSECLASSIFICATIONSANSCHANGEMENT_CODE);
+ r.setDateClassification(classification.getDateClassification());
+ return r;
+ }
+ }
+}
--- /dev/null
+package com.adullact.tedetis.actes.messages;
+
+import java.io.InputStream;
+
+import org.jdom.Element;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.CodeMessage;
+import com.adullact.tedetis.actes.NotificationActes;
+
+public class MessageMetierDemandePC extends MessageMetierDonneesCourrierPref {
+
+ private String descriptionPieces;
+
+ public MessageMetierDemandePC(String nom) throws TedetisException {
+ super(nom);
+ }
+
+ public MessageMetierDemandePC(String nom, InputStream is) throws TedetisException {
+ super(nom, is);
+ }
+
+ public MessageMetierDemandePC(MessageMetierActe messageMetier, String codeMessage) throws TedetisException {
+ super(messageMetier,codeMessage);
+ }
+
+ @Override
+ public String getCodeMessage() {
+ return CodeMessage.DEMANDEPIECECOMPLEMENTAIRE_CODE;
+ }
+
+ @Override
+ protected Element getNewRacine() {
+ return new Element(CodeMessage.DEMANDEPIECECOMPLEMENTAIRE_STRING,actesNS);
+ }
+
+ @Override
+ public String getXML() throws TedetisException {
+
+ validPresent(descriptionPieces,"Description pièces");
+
+ addContentNode(Racine, "DescriptionPieces", getDescriptionPieces(), actesNS);
+
+ return super.getXML();
+ }
+
+ @Override
+ public void validerContenuMessage() throws TedetisException {
+ super.validerContenuMessage();
+ setDescriptionPieces(getFromRacineXML("DescriptionPieces"));
+ }
+
+ @Override
+ public String getNomDateMessageMetier(){
+ return "DateCourrierPref";
+ }
+
+ @Override
+ public void setFixturesData() throws TedetisException{
+ super.setFixturesData();
+ if (getDescriptionPieces() == null) {
+ setDescriptionPieces("demande de pièces en plus");
+ }
+ }
+
+ public void setDescriptionPieces(String descriptionPieces) {
+ this.descriptionPieces = descriptionPieces;
+ }
+ public String getDescriptionPieces(){
+ return descriptionPieces;
+ }
+
+ public MessageMetierARDemandePC getAR() throws TedetisException{
+ MessageMetierARDemandePC m = new MessageMetierARDemandePC(getIDActe() + "-" + CodeMessage.ARDEMANDEPIECECOMPLEMENTAIRE_CODE + "_0.xml");
+ m.setDateMessageMetier(getDateMessageMetier());
+ return m;
+ }
+
+ public int enregistrementDocument() {
+ return 3;
+ }
+
+ @Override
+ public void sendNotification(NotificationActes notification) throws TedetisException {
+ super.sendNotification(notification);
+ notification.send();
+ }
+}
--- /dev/null
+package com.adullact.tedetis.actes.messages;
+
+import java.io.InputStream;
+import java.util.Vector;
+
+import com.adullact.tedetis.Exception.TedetisException;
+
+public abstract class MessageMetierDonneesCourrierPref extends MessageMetier {
+
+ private String document;
+
+ public MessageMetierDonneesCourrierPref(String nom) throws TedetisException {
+ super(nom);
+ }
+
+ public MessageMetierDonneesCourrierPref(String nom, InputStream is) throws TedetisException {
+ super(nom, is);
+ }
+
+ public MessageMetierDonneesCourrierPref(MessageMetierActe messageMetier, String codeMessage) throws TedetisException {
+ super(messageMetier,codeMessage);
+ }
+
+ @Override
+ public String getXML() throws TedetisException {
+ validPresent(document, "Document");
+ addAllFichiers(null,"Document", false, getFichiers());
+
+ return super.getXML();
+ }
+
+ @Override
+ public void validerContenuMessage() throws TedetisException {
+ super.validerContenuMessage();
+ document = getAllFichiers(Racine, "Document").get(0);
+ }
+
+ @Override
+ public Vector<String> getFichiers() {
+ Vector<String> lesDoc = new Vector<String>();
+ lesDoc.add(document);
+ return lesDoc;
+ }
+
+ @Override
+ public String getNomDateMessageMetier(){
+ return "DateCourrierPref";
+ }
+
+ @Override
+ public void setFixturesData() throws TedetisException{
+ super.setFixturesData();
+ if (document == null){
+ document = getNextFileName() + ".pdf";
+ }
+ }
+
+ public String getDocument() {
+ return document;
+ }
+
+ public void setDocument(String document) throws TedetisException {
+ this.document = document;
+ }
+
+ public String getDateCreationDocument() {
+ return getDateMessageMetier();
+ }
+}
--- /dev/null
+package com.adullact.tedetis.actes.messages;
+
+import java.io.InputStream;
+
+import org.jdom.Element;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.CodeMessage;
+import com.adullact.tedetis.actes.NotificationActes;
+
+public class MessageMetierLO extends MessageMetierDonneesCourrierPref {
+
+ private String motif;
+
+ public MessageMetierLO(String nom) throws TedetisException {
+ super(nom);
+ }
+
+ public MessageMetierLO(String nom, InputStream is) throws TedetisException {
+ super(nom, is);
+ }
+
+ public MessageMetierLO(MessageMetierActe messageMetier, String codeMessage) throws TedetisException {
+ super(messageMetier,codeMessage);
+ }
+
+ @Override
+ public String getCodeMessage() {
+ return CodeMessage.LETTREOBSERVATIONS_CODE;
+ }
+
+ @Override
+ protected Element getNewRacine() {
+ return new Element(CodeMessage.LETTREOBSERVATIONS_STRING,actesNS);
+ }
+
+ @Override
+ public String getXML() throws TedetisException {
+
+ validPresent(motif,"Motif");
+ addContentNode(Racine, "Motif", getMotif(), actesNS);
+
+ return super.getXML();
+ }
+
+ @Override
+ public void validerContenuMessage() throws TedetisException {
+ super.validerContenuMessage();
+ setMotif(getFromRacineXML("Motif"));
+ }
+
+ @Override
+ public String getNomDateMessageMetier(){
+ return "DateCourrierPref";
+ }
+
+ @Override
+ public void setFixturesData() throws TedetisException{
+ super.setFixturesData();
+ if (getMotif() == null) {
+ setMotif("un motif");
+ }
+ }
+
+ public void setMotif(String motif) {
+ this.motif = motif;
+ }
+ public String getMotif(){
+ return motif;
+ }
+
+ public MessageMetierARLO getAR() throws TedetisException{
+ MessageMetierARLO m = new MessageMetierARLO(getIDActe() + "-" + CodeMessage.ARLETTREOBSERVATIONS_CODE + "_0.xml");
+ m.setDateMessageMetier(getDateMessageMetier());
+ return m;
+ }
+
+ public int enregistrementDocument() {
+ return 4;
+ }
+
+ @Override
+ public void sendNotification(NotificationActes notification) throws TedetisException {
+ super.sendNotification(notification);
+ notification.send();
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.actes.messages;
+
+import java.io.InputStream;
+import java.util.Vector;
+
+import org.jdom.Element;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.CodeMessage;
+
+public class MessageMetierPC extends MessageMetier {
+
+ private Vector<String> lesDocuments;
+
+ public MessageMetierPC(String nom) throws TedetisException {
+ super(nom);
+ }
+
+ public MessageMetierPC(String nom, InputStream is) throws TedetisException {
+ super(nom, is);
+ }
+
+ public MessageMetierPC(MessageMetierActe messageMetier, String codeMessage) throws TedetisException {
+ super(messageMetier,codeMessage);
+ }
+
+ @Override
+ public String getXML() throws TedetisException {
+ validPresent(lesDocuments, "Documents");
+ addAllFichiers("Documents","Document", false, getFichiers());
+ return super.getXML();
+ }
+
+ @Override
+ public void validerContenuMessage() throws TedetisException {
+ super.validerContenuMessage();
+ lesDocuments = getAllFichiers(Racine.getChild("Documents", actesNS), "Document");
+ }
+
+ @Override
+ public Vector<String> getFichiers() {
+ return lesDocuments;
+ }
+
+ @Override
+ public String getNomDateMessageMetier(){
+ return "DateCourrierPref";
+ }
+
+ @Override
+ public void setFixturesData() throws TedetisException{
+ super.setFixturesData();
+ addDocument(getNextFileName() + ".pdf");
+ }
+
+ public void addDocument(String document) throws TedetisException {
+ if (! isNomFichierValide(document)){
+ throw new TedetisException("Le nom du fichier est invalide : " + document);
+ }
+ if (lesDocuments == null){
+ lesDocuments = new Vector<String>();
+ }
+ lesDocuments.add(document);
+ }
+
+ public String getDateCreationDocument() {
+ return getDateMessageMetier();
+ }
+
+ @Override
+ public String getCodeMessage() {
+ return CodeMessage.PIECECOMPLEMENTAIRE_CODE;
+ }
+
+ @Override
+ protected Element getNewRacine() {
+ return new Element(CodeMessage.PIECECOMPLEMENTAIRE_STRING,actesNS);
+ }
+
+ @Override
+ public int enregistrementDocument() {
+ return 3;
+ }
+
+ public MessageMetierARPC getAR() throws TedetisException{
+ MessageMetierARPC m = new MessageMetierARPC(getIDActe() + "-" + CodeMessage.ARPIECECOMPLEMENTAIRE_CODE + "_0.xml");
+ m.setDateMessageMetier(getDateMessageMetier());
+ m.setDateCourierPref(getDateMessageMetier());
+ m.setCPIDActes(getIDActe());
+ return m;
+ }
+}
--- /dev/null
+package com.adullact.tedetis.actes.messages;
+
+import java.io.InputStream;
+
+import org.jdom.Element;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.CodeMessage;
+
+public class MessageMetierRefusPC extends MessageMetierDonneesCourrierPref {
+
+ public MessageMetierRefusPC(String nom) throws TedetisException {
+ super(nom);
+ }
+
+ public MessageMetierRefusPC(String nom, InputStream is) throws TedetisException {
+ super(nom, is);
+ }
+
+ public MessageMetierRefusPC(MessageMetierActe messageMetier, String codeMessage) throws TedetisException {
+ super(messageMetier,codeMessage);
+ }
+
+ @Override
+ public String getCodeMessage() {
+ return CodeMessage.REFUSPIECECOMPLEMENTAIRE_CODE;
+ }
+
+ @Override
+ protected Element getNewRacine() {
+ return new Element(CodeMessage.REFUSPIECECOMPLEMENTAIRE_STRING,actesNS);
+ }
+
+ public int enregistrementDocument() {
+ return 3;
+ }
+
+ public MessageMetierARPC getAR() throws TedetisException{
+ MessageMetierARPC m = new MessageMetierARPC(getIDActe() + "-" + CodeMessage.ARPIECECOMPLEMENTAIRE_CODE + "_0.xml");
+ m.setDateMessageMetier(getDateMessageMetier());
+ m.setDateCourierPref(getDateMessageMetier());
+ m.setCPIDActes(getIDActe());
+ return m;
+ }
+}
--- /dev/null
+package com.adullact.tedetis.actes.messages;
+
+import java.io.InputStream;
+
+import org.jdom.Element;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.CodeMessage;
+
+public class MessageMetierRejetLO extends MessageMetierDonneesCourrierPref {
+
+ public MessageMetierRejetLO(String nom) throws TedetisException {
+ super(nom);
+ }
+
+ public MessageMetierRejetLO(String nom, InputStream is) throws TedetisException {
+ super(nom, is);
+ }
+
+ public MessageMetierRejetLO(MessageMetierActe messageMetier, String codeMessage) throws TedetisException {
+ super(messageMetier,codeMessage);
+ }
+
+ @Override
+ public String getCodeMessage() {
+ return CodeMessage.REJETLETTREOBSERVATIONS_CODE;
+ }
+
+ @Override
+ protected Element getNewRacine() {
+ return new Element(CodeMessage.REJETLETTREOBSERVATIONS_STRING,actesNS);
+ }
+
+ public int enregistrementDocument() {
+ return 4;
+ }
+
+ public MessageMetierARreponseLO getAR() throws TedetisException{
+ MessageMetierARreponseLO m = new MessageMetierARreponseLO(getIDActe() + "-" + CodeMessage.ARREJETREPONSELETTREOBSERVATIONS_CODE + "_0.xml");
+ m.setDateMessageMetier(getDateMessageMetier());
+ m.setDateCourierPref(getDateMessageMetier());
+ m.setCPIDActes(getIDActe());
+ return m;
+ }
+}
--- /dev/null
+package com.adullact.tedetis.actes.messages;
+
+import java.io.InputStream;
+import java.sql.Connection;
+import java.sql.SQLException;
+
+import org.jdom.Element;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.CodeMessage;
+
+public class MessageMetierReponseClassificationSansChangement extends MessageMetier {
+
+ private String dateClassification ;
+
+ public MessageMetierReponseClassificationSansChangement(String nom) throws TedetisException {
+ super(nom);
+ }
+
+ public MessageMetierReponseClassificationSansChangement(String nom, InputStream is) throws TedetisException {
+ super(nom, is);
+ }
+
+ public MessageMetierReponseClassificationSansChangement(MessageMetier messageMetier, String codeMessage) throws TedetisException {
+ super(messageMetier,codeMessage);
+ }
+
+ @Override
+ public String getCodeMessage() {
+ return CodeMessage.REPONSECLASSIFICATIONSANSCHANGEMENT_CODE;
+ }
+
+ @Override
+ protected Element getNewRacine() {
+ return new Element(CodeMessage.REPONSECLASSIFICATIONSANSCHANGEMENT_STRING,actesNS);
+ }
+
+ @Override
+ public String getXML() throws TedetisException {
+ validPresent(getDateClassification(), "Date classification");
+ addContentNode(Racine,"DateClassification",getDateClassification(),actesNS);
+ return super.getXML();
+ }
+
+ @Override
+ public void validerContenuMessage() throws TedetisException {
+ super.validerContenuMessage();
+ setDateClassification(getFromRacineXML("DateClassification"));
+ }
+
+ @Override
+ public String getNomDateMessageMetier(){
+ return null;
+ }
+
+ @Override
+ public void setFixturesData() throws TedetisException{
+ if (getDateClassification() == null){
+ setDateClassification("2008-12-31");
+ }
+ super.setFixturesData();
+ }
+
+ @Override
+ public String getIDActe(){
+ return null;
+ }
+
+ public void setDateClassification(String dateClassification) {
+ this.dateClassification = dateClassification;
+ }
+
+ public String getDateClassification() {
+ return dateClassification;
+ }
+
+ @Override
+ protected boolean isTransactionNomParticulier(){
+ return true;
+ }
+
+ @Override
+ public void updateDatabase(Connection connexion,String fichier) throws SQLException, TedetisException {
+ System.out.println("Classification déjà à jour : " + getSiren());
+ //super.updateDatabase(connexion, fichier);
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.actes.messages;
+
+import java.io.InputStream;
+
+import org.jdom.Element;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.CodeMessage;
+
+public class MessageMetierReponseCourrierSimple extends MessageMetierDonneesCourrierPref {
+
+ public MessageMetierReponseCourrierSimple(String nom) throws TedetisException {
+ super(nom);
+ }
+
+ public MessageMetierReponseCourrierSimple(String nom, InputStream is) throws TedetisException {
+ super(nom, is);
+ }
+
+ public MessageMetierReponseCourrierSimple(MessageMetierActe messageMetier, String codeMessage) throws TedetisException {
+ super(messageMetier,codeMessage);
+ }
+
+ @Override
+ public String getCodeMessage() {
+ return CodeMessage.REPONSECOURRIERSIMPLE_CODE;
+ }
+
+ @Override
+ protected Element getNewRacine() {
+ return new Element(CodeMessage.REPONSECOURRIERSIMPLE_STRING,actesNS);
+ }
+
+ @Override
+ public int enregistrementDocument() {
+ return 2;
+ }
+
+}
\ No newline at end of file
--- /dev/null
+package com.adullact.tedetis.actes.messages;
+
+import java.io.InputStream;
+
+import org.jdom.Element;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.CodeMessage;
+
+public class MessageMetierReponseLO extends MessageMetierDonneesCourrierPref {
+
+ public MessageMetierReponseLO(String nom) throws TedetisException {
+ super(nom);
+ }
+
+ public MessageMetierReponseLO(String nom, InputStream is) throws TedetisException {
+ super(nom, is);
+ }
+
+ public MessageMetierReponseLO(MessageMetierActe messageMetier, String codeMessage) throws TedetisException {
+ super(messageMetier,codeMessage);
+ }
+
+ @Override
+ public String getCodeMessage() {
+ return CodeMessage.REPONSELETTREOBSERVATIONS_CODE;
+ }
+
+ @Override
+ protected Element getNewRacine() {
+ return new Element(CodeMessage.REPONSELETTREOBSERVATIONS_STRING,actesNS);
+ }
+
+ public int enregistrementDocument() {
+ return 4;
+ }
+
+ public MessageMetierARreponseLO getAR() throws TedetisException{
+ MessageMetierARreponseLO m = new MessageMetierARreponseLO(getIDActe() + "-" + CodeMessage.ARREJETREPONSELETTREOBSERVATIONS_CODE + "_0.xml");
+ m.setDateMessageMetier(getDateMessageMetier());
+ m.setDateCourierPref(getDateMessageMetier());
+ m.setCPIDActes(getIDActe());
+ return m;
+ }
+}
--- /dev/null
+package com.adullact.tedetis.actes.messages;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.sql.Connection;
+import java.sql.SQLException;
+
+import org.jdom.Element;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.CodeMessage;
+import com.adullact.tedetis.sql.Classification;
+import com.adullact.tedetis.util.ValiderXML;
+
+public class MessageMetierRetourClassification extends MessageMetier {
+
+ private String dateClassification ;
+ private Element nature;
+ private Element matiere;
+
+
+// private String originalMessage;
+
+ public MessageMetierRetourClassification(String nom) throws TedetisException {
+ super(nom);
+ }
+
+ public MessageMetierRetourClassification(String nom, InputStream is) throws TedetisException {
+ super(nom, is);
+ }
+
+ public MessageMetierRetourClassification(MessageMetier messageMetier, String codeMessage) throws TedetisException {
+ super(messageMetier,codeMessage);
+ }
+
+ @Override
+ public String getCodeMessage() {
+ return CodeMessage.RETOURCLASSIFICATION_CODE;
+ }
+
+ @Override
+ protected Element getNewRacine() {
+ return new Element(CodeMessage.RETOURCLASSIFICATION_STRING,actesNS);
+ }
+
+
+
+ @Override
+ public String getXML() throws TedetisException {
+ validPresent(getDateClassification(), "Date classification");
+ validPresent(getNature(), "Natures Actes");
+ validPresent(getMatiere(), "Matieres");
+
+ addContentNode(Racine,"DateClassification",getDateClassification(),actesNS);
+ Racine.addContent((Element) nature.clone());
+ Racine.addContent((Element) matiere.clone());
+ return super.getXML();
+ }
+
+ @Override
+ public void validerContenuMessage() throws TedetisException {
+ super.validerContenuMessage();
+ setDateClassification(getFromRacineXML("DateClassification"));
+ setNature(Racine.getChild("NaturesActes",actesNS));
+ setMatiere(Racine.getChild("Matieres",actesNS));
+ }
+
+ @Override
+ public String getNomDateMessageMetier(){
+ return null;
+ }
+
+ @Override
+ public void setFixturesData() throws TedetisException {
+ if (getDateClassification() == null){
+ setDateClassification("2008-12-31");
+ }
+
+ if (getNature() == null || getMatiere() == null) {
+ setFichierClassification("fixtures/classification/classification.xml");
+ }
+ super.setFixturesData();
+ }
+
+ @Override
+ public String getIDActe(){
+ return null;
+ }
+
+ @Override
+ protected boolean isTransactionNomParticulier(){
+ return true;
+ }
+
+ public void setDateClassification(String dateClassification) {
+ this.dateClassification = dateClassification;
+ }
+
+ public String getDateClassification() {
+ return dateClassification;
+ }
+
+ public void setNature(Element nature) {
+ this.nature = nature;
+ }
+
+ public Element getNature() {
+ return nature;
+ }
+
+ public void setMatiere(Element matiere) {
+ this.matiere = matiere;
+ }
+
+ public Element getMatiere() {
+ return matiere;
+ }
+
+ public void setFichierClassification(String fichier) throws TedetisException {
+ Element classification = null;
+
+ try {
+ ValiderXML validateurXML = new ValiderXML();
+ validateurXML.setSchemaPath(new File(schemaActesPath));
+
+ FileInputStream fip = new FileInputStream(fichier);
+ fip = new FileInputStream(fichier);
+ validateurXML.isValid(fip);
+ classification = validateurXML.getDocument().getRootElement();
+ } catch (Exception e){
+ throw new TedetisException("Problème sur le fichier " + fichier,e);
+ }
+
+ setNature(classification.getChild("NaturesActes",actesNS));
+ setMatiere(classification.getChild("Matieres",actesNS));
+ setDateClassification(classification.getChild("DateClassification",actesNS).getText());
+ }
+
+ @Override
+ public void updateDatabase(Connection connexion,String fichier) throws SQLException, TedetisException {
+ Classification classification;
+ classification = new Classification(connexion,getSiren());
+ classification.doClassification(this);
+ System.out.println("Mise à jour de la classification : " + getSiren());
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.helios;
+
+import java.io.FileOutputStream;
+import java.io.PrintStream;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.sql.Timestamp;
+import java.util.Properties;
+import java.util.Vector;
+
+import javax.activation.DataHandler;
+import javax.activation.FileDataSource;
+import javax.mail.Message;
+import javax.mail.Multipart;
+import javax.mail.Session;
+import javax.mail.Transport;
+import javax.mail.internet.InternetAddress;
+import javax.mail.internet.MimeBodyPart;
+import javax.mail.internet.MimeMessage;
+import javax.mail.internet.MimeMultipart;
+
+import com.adullact.tedetis.Exception.TedetisException;
+
+/**
+* Cette classe inclut les paramètres de configuration et permet de faire des
+* opérations générales sur la base de données (récupération des informations
+* relatives aux transactions, insertion d'un statut dans la BD)
+*
+*
+* @author Cristina Pop
+* @version 1.0
+*/
+
+public class Base {
+
+ public final static int MAX_TRY = 6;
+
+ public final static int WAITING_TIME = 5000;
+
+ /**
+ * Incrémente les fichiers temporaires
+ */
+ static int cpt = 0;
+
+
+ public static Vector<Integer> getValide(Statement stmt) throws SQLException
+ {
+ Vector<Integer> transId= new Vector<Integer>();
+ StringBuffer sql = new StringBuffer();
+ sql.append("SELECT DISTINCT transaction_id FROM");
+ sql.append(" helios_transactions_workflow htw WHERE");
+ sql.append(" status_id = 1 AND transaction_id NOT IN ");
+ sql.append("(");
+ sql
+ .append("SELECT DISTINCT transaction_id FROM helios_transactions_workflow WHERE status_id=2 OR status_id=-1");
+ sql.append(")");
+
+ // System.out.println("BASE: SQL: "+sql);
+ ResultSet rs = stmt.executeQuery(sql.toString());
+ while (rs.next()) {
+ // System.out.println("BASE: citeste... "+rs.getInt(1));
+ transId.addElement(new Integer(rs.getInt(1)));
+ }
+
+ return transId;
+ }
+
+
+ /**
+ * Cette methode est utilisée pour l'obtention du nom d efichier auquel est
+ * attache la trasaction
+ * @param trasnaction_id id d ela tarsnaction
+ * @param request point d'entréé dsan la base de données
+ * @return le nom du fichier + sha1
+ * @throws SQLException
+ */
+
+ /*public static String[] returnFileName(int transaction_id, Statement stmt)
+ throws SQLException {
+ String[] res = new String[2];
+ ResultSet rs;
+ StringBuffer sql = new StringBuffer();
+ sql = new StringBuffer("SELECT ");
+ sql.append(" filename, sha1 ");
+ sql.append("FROM helios_transactions ");
+ sql.append(" WHERE id=" + transaction_id);
+ rs = stmt.executeQuery(sql.toString());
+ rs.next();
+ res[0] = rs.getString("filename");
+ res[1] = rs.getString("sha1");
+ return res;
+ }*/
+
+ public static int getUserfromTrans(int transaction_id, Statement stmt)
+ throws SQLException {
+ ResultSet rs;
+ StringBuffer sql = new StringBuffer();
+ sql = new StringBuffer("SELECT user_id ");
+ sql.append("FROM helios_transactions ");
+ sql.append(" WHERE id=" + transaction_id);
+ rs = stmt.executeQuery(sql.toString());
+ rs.next();
+ return rs.getInt(1);
+ }
+
+ /**
+ * Replace all instances of a String in a String.
+ *
+ * @param s
+ * String to alter.
+ * @param f
+ * String to look for.
+ * @param r
+ * String to replace it with, or null to just remove it.
+ * @return resulting chain
+ */
+ public static String replace(String s, String f, String r) {
+ if (s == null)
+ return s;
+ if (f == null)
+ return s;
+ if (r == null)
+ r = "";
+
+ int index01 = s.indexOf(f);
+ while (index01 != -1) {
+ s = s.substring(0, index01) + r + s.substring(index01 + f.length());
+ index01 += r.length();
+ index01 = s.indexOf(f, index01);
+ }
+ return s;
+ }
+
+ /**
+ * Envoi d'un mail notifiant une erreur critique au super-administrateur
+ *
+ * @param message
+ * message relatif au message d'erreur
+ * @param o
+ * Objet à l'origine de l'erreur
+ * @param exc
+ * exception signalée
+ * @param stmt
+ * statement pour retrouver les super-admins
+ * @throws TeDeTisException
+ */
+ public static void critical_mail(String message, Object o, Exception exc,
+ Statement stmt) throws TedetisException {
+ try {
+ Properties props = System.getProperties();
+ // définition des propriétés
+ props.put("mail.smtp.host", "127.0.0.1");
+ Session session = Session.getDefaultInstance(props, null);
+
+ // Création du mail
+ Message msg = new MimeMessage(session);
+ msg.setFrom(new InternetAddress(
+ "NE_PAS_REPONDRE@alternancesoft.com"));
+ msg.setSubject("ERREUR CRITIQUE : " + "MODULE HELIOS");
+ msg.setHeader("X-Mailer", "LOTONtechEmail");
+
+ // on crée la première partie du mail
+ MimeBodyPart mbp = new MimeBodyPart();
+ MimeBodyPart mbp2 = null;
+
+ // On construit le corps textuel du mail
+ StringBuffer corps = new StringBuffer(
+ "Nous vous invitons à transmettre cet e-mail au service de maintenance. \n\nERREUR CRITIQUE : ");
+ if (message != null)
+ corps.append(message);
+ if (o != null)
+ corps.append('\n' + o.toString());
+ mbp.setText(corps.toString());
+
+ // si une exception est associée on met la pile d'exécution en pièce jointe
+ if (exc != null) {
+ // on stocke la trace dans un fichier texte
+ String trace = "temp/trace_" + ++cpt + ".txt";
+ FileOutputStream fos = new FileOutputStream(trace);
+ exc.printStackTrace(new PrintStream(fos));
+ fos.close();
+
+ // on met ce fichier dans une pièce jointe
+ mbp2 = new MimeBodyPart();
+ FileDataSource fds = new FileDataSource(trace);
+ mbp2.setDataHandler(new DataHandler(fds));
+ mbp2.setFileName(fds.getName());
+ }
+
+ // On crée un objet MultiPart à mettre dans le mail
+ Multipart mp = new MimeMultipart();
+
+ // On y ajoute le corps textuel
+ mp.addBodyPart(mbp);
+ // si il y a une pièce jointe on l'ajoute
+ if (mbp2 != null)
+ mp.addBodyPart(mbp2);
+
+ // on met le multipart dans le mail
+ msg.setContent(mp);
+
+ // on récupère les adresses de super-admins
+ ResultSet rs = stmt
+ .executeQuery("SELECT email FROM users WHERE role = 'SADM' AND status = 1");
+
+ // on met tout les super-admins en destinataires du mail
+ while (rs.next()) {
+ msg.addRecipients(Message.RecipientType.TO, InternetAddress
+ .parse(rs.getString(1)));
+ }
+ // Envoi du mail
+ Transport.send(msg);
+ } catch (Exception e) {
+ System.out.println("Erreur pendant la tentative d'envoi d'un mail d'erreur critique : "
+ + e.getMessage());
+ StringWriter sw=new StringWriter();
+ PrintWriter pw=new PrintWriter(sw);
+ e.printStackTrace(pw);
+ throw new TedetisException(sw.toString(),e);
+ }
+ }
+
+
+
+
+
+ public static void addAcquitFilename(int transaction_id, String filename, Statement stmt)
+ throws SQLException {
+ StringBuffer sql;
+ stmt.execute("BEGIN");
+
+ sql = new StringBuffer("UPDATE helios_transactions ");
+ sql.append("SET acquit_filename = '"+filename+"'");
+ sql.append("WHERE id = "+transaction_id);
+
+ stmt.executeUpdate(sql.toString());
+ stmt.execute("COMMIT");
+ }
+
+ public static void addToHeliosRetour(Timestamp date, String filename, String siren, Statement stmt)
+ throws SQLException {
+ StringBuffer sql;
+ stmt.execute("BEGIN");
+
+ sql = new StringBuffer("INSERT ");
+ sql.append("INTO helios_retour ");
+ sql.append("(id, siren, filename, status, date) ");
+ sql.append("VALUES (nextval('helios_transactions_workflow_id_seq'), '"
+ + siren + "', '" + filename + "', 0, '"+date+"')");
+ stmt.executeUpdate(sql.toString());
+
+ stmt.execute("COMMIT");
+ }
+
+ public static boolean checkHeliosRetourSiren(String siren,Statement stmt) throws SQLException
+ {
+ StringBuffer sql;
+ ResultSet rs;
+
+ sql = new StringBuffer("SELECT id FROM authority_group_siren ");
+ sql.append("WHERE siren = '"+siren+"'");
+
+ rs = stmt.executeQuery(sql.toString());
+ //rs.
+ if (rs.next())
+ return true;
+ else
+ return false;
+ }
+
+ public static void addCompleteName(int transaction_id, String completeName, Statement stmt)
+ throws SQLException {
+ StringBuffer sql;
+ stmt.execute("BEGIN");
+
+ sql = new StringBuffer("UPDATE helios_transactions ");
+ sql.append("SET complete_name = '"+completeName+"'");
+ sql.append("WHERE id = "+transaction_id);
+
+ stmt.executeUpdate(sql.toString());
+ stmt.execute("COMMIT");
+ }
+
+
+
+
+
+}
--- /dev/null
+package com.adullact.tedetis.helios;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.text.DecimalFormat;
+
+import com.adullact.tedetis.Exception.TedetisException;
+
+public class FichierCompteur {
+
+ private File fichierCompteur;
+
+ public FichierCompteur(File fichierCompteur){
+ this.fichierCompteur = fichierCompteur;
+ }
+
+ public String getNouveauNumeroOrdre() throws TedetisException{
+
+ String numOrdre;
+
+ try {
+
+ numOrdre = getNumber();
+ FileWriter fw = new FileWriter(fichierCompteur);
+ fw.write(numOrdre,0,numOrdre.length());
+ fw.flush();
+ fw.close();
+ } catch (IOException e) {
+ throw new TedetisException(e);
+ }
+ return numOrdre;
+ }
+
+ public String getNumber() throws IOException {
+ BufferedReader br;
+ String numOrdre;
+ br = new BufferedReader(new InputStreamReader(new FileInputStream(fichierCompteur)));
+ numOrdre = br.readLine();
+
+ int tmpInt=Integer.parseInt(numOrdre);
+
+ tmpInt++;
+
+ DecimalFormat df1 = new DecimalFormat("000");
+ numOrdre=df1.format(tmpInt);
+
+ return numOrdre;
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.helios;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.nio.channels.FileChannel;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.sql.FenetreEnvoie;
+import com.adullact.tedetis.sql.HeliosTransactions;
+import com.adullact.tedetis.util.ClientFTP;
+
+public class FichierHeliosPostage {
+
+ private HeliosTransactions heliosTransaction;
+ private boolean zipFileBeforeSend;
+ private ClientFTP clientFTP;
+ private FichierCompteur fichierCompteur;
+
+ private FichierHeliosValidation heliosValidation;
+
+ //public static final String P_DEST = "VHPCE21";
+ public static final String P_APPLI = "GHELPES2";
+
+ public FichierHeliosPostage(HeliosTransactions heliosTransaction,ClientFTP clientFTP,FichierCompteur fichierCompteur, FichierHeliosValidation heliosValidation){
+ this.heliosTransaction = heliosTransaction;
+ this.clientFTP = clientFTP;
+ this.fichierCompteur = fichierCompteur;
+ this.heliosValidation = heliosValidation;
+
+ zipFileBeforeSend = false;
+ }
+
+ public void setZipFileBeforeSend(){
+ zipFileBeforeSend = true;
+ }
+
+ public boolean sendFile(FenetreEnvoie fenetreEnvoie, String directoryPath) throws TedetisException, SQLException, Exception {
+
+
+ String sendFileName = createFile2Send(directoryPath);
+
+ // On vérifie qu'il y a une fenêtre de transmission ouverte
+ if (heliosTransaction.canSend(fenetreEnvoie)) {
+ sendFile2FTP(heliosTransaction, sendFileName,directoryPath);
+ } else {
+ //TODO notifier
+ return false;
+ }
+
+ String msg = "Transaction " + heliosTransaction.getID() + " transmise au serveur.";
+ heliosTransaction.addToHeliosTransactionWorkflow(HeliosTransactions.TRANSMIS, msg);
+ eraseFile(sendFileName, directoryPath);
+ return true;
+ }
+
+
+ /**
+ * Création de zip
+ *
+ * @param filename nom du fichier à zipper
+ * @param zipname nom du fichier zip
+ * @return taille du fichier zippé
+ * @throws TedetisException
+ */
+ private String createFile2Send(String directoryPath)
+ throws TedetisException, SQLException{
+ String sendFileName = null;
+
+
+ String completeName = createCompleteName(fichierCompteur, heliosTransaction.getSiren());
+ heliosTransaction.addCompleteName(completeName);
+
+ try{
+ // helios_zip==0 et on ne zip pas le fichier.
+ //justment le renomer et calculer la taille.
+ if (! zipFileBeforeSend) {
+
+ FileChannel in = new FileInputStream(directoryPath + heliosTransaction.getSha1()).getChannel();
+ FileChannel out = new FileOutputStream(directoryPath + completeName).getChannel();
+
+ in.transferTo(0, in.size(), out);
+
+ sendFileName=completeName;
+
+ } else {
+ //buffer pour lire le fichier
+ byte[] buffer = new byte[1024];
+ File fileZip = new File( directoryPath + heliosTransaction.getSha1() + ".zip");
+ ZipOutputStream out = new ZipOutputStream(new FileOutputStream(fileZip));
+ String filepath = heliosTransaction.getSha1();
+ FileInputStream in = new FileInputStream(directoryPath + filepath);
+ //ajout d'une entree au zip
+ //avec le nom de la forme PESALR2_idColl_date_numOrdre.xml
+ // String completeName = createCompleteName(transaction_id,siren);
+ out.putNextEntry(new ZipEntry(completeName));
+ //Transfer bytes from the file to the ZIP file
+ int len;
+ while ((len = in.read(buffer)) > 0)
+ out.write(buffer, 0, len);
+ //Complete the entry
+ out.closeEntry();
+ in.close();
+ //Complete the ZIP file
+ out.close();
+ sendFileName=heliosTransaction.getSha1()+".zip";
+
+ }
+ }catch (Exception e) {
+ String msg = "Erreur lors de la création du zip du fichier "+heliosTransaction.getSha1();
+
+
+ throw new TedetisException(msg, e);
+ }
+
+
+ return sendFileName;
+ }
+
+
+ //nom du fichier à envoyer de la forme PESALR2_idColl_date_numOrdre.xml avec :
+ //idColl : numéro siret de la collectivité,
+ //date : date d'envoi à Helios sous la forme AAMMJJ,
+ //numOrdr : numéro d'ordre d'envoi sur 3 chiffres.
+ private String createCompleteName(FichierCompteur fichierCompteur,String siren) throws SQLException, TedetisException{
+ SimpleDateFormat sdf = new SimpleDateFormat("yyMMdd");
+
+ String numOrdre = fichierCompteur.getNouveauNumeroOrdre();
+ String completeName = "PESALR2_" + siren + "_" + sdf.format(new Date()) + "_" + numOrdre + ".xml";
+ return completeName;
+ }
+
+
+ private String extractInfo(String directoryPath) throws TedetisException{
+ try {
+ return heliosValidation.getPMsg(directoryPath);
+
+
+ } catch (Exception e) {
+ throw new TedetisException("Erreur lors de l'exctration des informations du fichier XML",e);
+ }
+ }
+
+ private void sendFile2FTP(HeliosTransactions ht, String filename,String directoryPath)
+ throws TedetisException, SQLException {
+
+ ResultSet rs = ht.getFTPConnexionInfo();
+
+ String login = rs.getString("helios_ftp_login");
+ String password = rs.getString("helios_ftp_password");
+ String ftp_dest = rs.getString("helios_ftp_dest");
+
+ String filenamePath = directoryPath + filename;
+
+ clientFTP.setLogin(login,password);
+ clientFTP.resetFTPCommande();
+
+ clientFTP.addFTPCommande("P_DEST " + ftp_dest);
+ clientFTP.addFTPCommande("P_APPLI " + P_APPLI);
+
+ String p_msg = extractInfo(directoryPath);
+
+ clientFTP.addFTPCommande("P_MSG " + p_msg);
+
+
+ clientFTP.sendFile(new File(filenamePath), directoryPath);
+
+ }
+
+ public static boolean eraseFile(String filename, String directoryPath) throws Exception {
+ String filenamePath = directoryPath + filename;
+ File file = new File(filenamePath);
+
+ //Verifier si le fichier existe
+ if (!file.exists()) {
+ throw new Exception("le fichier est introuvable !");
+ }
+ //Tester les proprietes et les droits sur le fichier
+ if (!file.canWrite()) {
+ throw new Exception("Droit insuffisant pour acceder au fichier");
+ }
+
+ return file.delete();
+ }//fin methode de suppression d'un fichier
+}
--- /dev/null
+package com.adullact.tedetis.helios;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.sql.Connection;
+import java.sql.SQLException;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.sql.Authority;
+import com.adullact.tedetis.sql.HeliosTransactions;
+import com.adullact.tedetis.util.CriticalMailSender;
+import com.adullact.tedetis.util.ValiderXML;
+
+public class FichierHeliosReception {
+
+ private Connection connexion;
+ private ValiderXML validateurXML;
+ private CriticalMailSender mailSender;
+
+ public FichierHeliosReception(Connection connexion,ValiderXML validateurXML){
+ this.connexion = connexion;
+ this.validateurXML = validateurXML;
+ }
+
+ public void setMailSender(CriticalMailSender mailSender){
+ this.mailSender = mailSender;
+ }
+
+ public void analyse(String tmpReceptionDirectory, String finalReceptionDirectory) throws TedetisException {
+
+ File path = new File(tmpReceptionDirectory);
+ File[] children = path.listFiles();
+
+ if (children == null){
+ System.out.println("Erreur lors de la lecture du répertoire " + tmpReceptionDirectory);
+ return;
+ }
+
+ System.out.println("Traitement des " +children.length + " fichiers trouvés");
+ for(int i=0; i<children.length; i++){
+ File fichier = children[i];
+ System.out.println("Traitement de : " + fichier.getAbsolutePath());
+
+ try {
+ validateurXML.isValid(new FileInputStream(fichier.getAbsolutePath()));
+ } catch (Exception e){
+ //NOTE : Dans le code de base (NTSys) on ne valide pas les fichier retours
+ //Les schémas indiqué sur les ACK ont l'air pour le moins étrange...
+ //throw new TedetisException(e);
+
+ String message = "[Reception de fichier HELIOS] Le fichier " + fichier.getAbsolutePath() + " a été ignoré";
+ message += "\n\nMessage de l'exception : " + e.getMessage();
+ message += "\n\nTrace de l'exception : \n";
+
+ for (StackTraceElement s : e.getStackTrace()){
+ message += s.toString() + "\n";
+ }
+ System.out.println(message);
+ mailSender.send( message);
+ continue;
+
+ }
+
+ String type = validateurXML.getDocument().getRootElement().getName().toLowerCase();
+
+ if (type.equalsIgnoreCase("pes_acquit")) {
+ traitementACK(fichier.getName());
+ } else if (type.equalsIgnoreCase("pes_nonacquit")) {
+ traitementNACK(fichier.getName());
+ }else if (type.equalsIgnoreCase("pes_retour")) {
+ traitementPESRetour(fichier.getName());
+ } else {
+ String message = "[Reception de fichier HELIOS] Le fichier " + fichier.getAbsolutePath() + " a été ignoré";
+ message += "\n\nType inconnu: " + type + " \n";
+ System.out.println(message);
+ mailSender.send( message);
+ continue;
+ }
+
+ boolean success = fichier.renameTo(new File( new File(finalReceptionDirectory), fichier.getName()));
+ if (!success) {
+ String message = "[Reception de fichier HELIOS] Le fichier " + fichier.getAbsolutePath() + " n'a pas pu être déplacé !";
+ System.out.println(message);
+ mailSender.send( message);
+ continue;
+ }
+ }
+
+ }
+
+ private HeliosTransactions geHeliosTransactionFromValidateur() throws TedetisException{
+
+ String NomFic = null;
+ try {
+ NomFic = validateurXML.getDocument().getRootElement().getChild("Enveloppe").getChild("Parametres").getChild("NomFic").getAttribute("V").getValue();
+
+ HeliosTransactions heliosTransaction = HeliosTransactions.getTransactionFromXmlNomFic(connexion, NomFic);
+
+ return heliosTransaction;
+
+ } catch (TedetisException e){
+ mailSender.send("Le fichier de réponse "+NomFic+" a été récupéré mais n'a pu être relié à une transaction\n");
+ System.out.println("Le fichier de réponse "+NomFic+" a été récupéré mais n'a pu être relié à une transaction\n");
+ } catch (Exception e){
+ throw new TedetisException(e);
+ }
+ return null;
+ }
+
+ private void traitementACK(String filename) throws TedetisException {
+ try {
+ HeliosTransactions heliosTransaction = geHeliosTransactionFromValidateur();
+ if (heliosTransaction == null){
+ return;
+ }
+
+ if (validateurXML.getDocument().getRootElement().getChild("ACQUIT") == null){
+ String msg = "Transaction " + heliosTransaction.getID() + " acceptee";
+ heliosTransaction.addToHeliosTransactionWorkflow(HeliosTransactions.ACQUITTER, msg);
+ } else {
+ String msg = "Transaction " + heliosTransaction.getID() + " : information disponible";
+ heliosTransaction.addToHeliosTransactionWorkflow(HeliosTransactions.INFORMATION_DISPONIBLE, msg);
+ }
+
+ heliosTransaction.addAcquitFilename(filename);
+
+ } catch (Exception e){
+ throw new TedetisException(e);
+ }
+
+ }
+
+ private void traitementNACK(String filename) throws TedetisException {
+ try {
+ HeliosTransactions heliosTransaction = geHeliosTransactionFromValidateur();
+ String msg = "Transaction " + heliosTransaction.getID() + " rejeté";
+ heliosTransaction.addToHeliosTransactionWorkflow(HeliosTransactions.REFUSER, msg);
+ heliosTransaction.addAcquitFilename(filename);
+
+ } catch (Exception e){
+ throw new TedetisException(e);
+ }
+ }
+
+ private void traitementPESRetour(String filename) throws TedetisException {
+ try {
+ String siren =validateurXML.getDocument().getRootElement().getChild("EnTetePES").getChild("IdColl").getAttribute("V").getValue();
+ Authority authority = new Authority(connexion,siren);
+
+ try {
+ authority.addToHeliosRetour(filename);
+ } catch (Exception e){
+ mailSender.send("La collectivité "+siren+ " n'est pas abonnée à l'application Comptabilité Publique du TdT, elle n'est donc pas autorisée à recevoir le PES_Retour "+e.getMessage());
+ }
+ } catch (Exception e){
+ throw new TedetisException(e);
+ }
+
+ }
+
+
+}
--- /dev/null
+package com.adullact.tedetis.helios;
+
+import java.io.FileInputStream;
+
+import org.jdom.Document;
+import org.jdom.Element;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.sql.HeliosTransactions;
+import com.adullact.tedetis.util.ValiderXML;
+
+public class FichierHeliosValidation {
+
+ private HeliosTransactions heliosTransaction;
+ private ValiderXML validateurXML;
+
+ private boolean validateurOK;
+
+
+ public FichierHeliosValidation(HeliosTransactions heliosTransaction,ValiderXML validateurXML){
+ this.heliosTransaction = heliosTransaction;
+ this.validateurXML = validateurXML;
+ validateurOK = false;
+ }
+
+ private void getValidateur(String directoryPath) throws Exception {
+ if (validateurOK){
+ return;
+ }
+ validateurXML.isValid(new FileInputStream( directoryPath + heliosTransaction.getSha1()) );
+ }
+
+ public void validate(String directoryPath) throws Exception {
+
+ int transaction_id = heliosTransaction.getID();
+ String msg = "Transaction " + transaction_id + " en cours de traitement";
+ heliosTransaction.addToHeliosTransactionWorkflow(HeliosTransactions.EN_TRAITEMENT,msg);
+
+ try {
+
+ validateurXML.isValid(new FileInputStream( directoryPath + heliosTransaction.getSha1()) );
+ String NomFic =validateurXML.getDocument().getRootElement().getChild("Enveloppe").getChild("Parametres").getChild("NomFic").getAttribute("V").getValue();
+
+ heliosTransaction.addXML_NomFic(NomFic);
+
+ } catch (TedetisException e){
+ heliosTransaction.addToHeliosTransactionWorkflow(HeliosTransactions.ERREUR,"Transation "+ transaction_id + " non valide");
+ throw e;
+ }
+
+ msg = "Transaction " + transaction_id + " dans la file d'attente";
+ heliosTransaction.addToHeliosTransactionWorkflow(HeliosTransactions.ATTENTE,msg);
+ }
+
+ public String getPMsg(String directoryPath) throws Exception{
+ getValidateur(directoryPath);
+ Document document = validateurXML.getDocument();
+ Element element = document.getRootElement().getChild("EnTetePES");
+
+ String cod_col = element.getChild("CodCol").getAttribute("V").getValue();
+ String id_post = element.getChild("IdPost").getAttribute("V").getValue();
+ String cod_bud = element.getChild("CodBud").getAttribute("V").getValue();
+ return "PES#" + cod_col + "#" + id_post + "#" + cod_bud;
+ }
+
+
+
+
+}
--- /dev/null
+package com.adullact.tedetis.helios;
+
+/*
+* just pour traiter login et mot de passe facilement pour un arraylist
+*/
+public class LoginPsw{
+ public String login;
+ public String psw;
+}
\ No newline at end of file
--- /dev/null
+package com.adullact.tedetis.servlet;
+
+import java.io.File;
+import java.io.IOException;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.helios.FichierHeliosReception;
+import com.adullact.tedetis.sql.Horodatage;
+import com.adullact.tedetis.util.ValiderXML;
+
+public class AnalyseFichierHelios extends GenericTedetisServlet {
+
+ private static final long serialVersionUID = 2604069646105721499L;
+
+ /**
+ * Indique si la servlet est en cours d'exécution
+ */
+ private boolean executing;
+
+ // Répertoire temporaire pour les réponses
+ private String receptionDirectory;
+ private String tmpReceptionDirectory;
+
+
+
+ private ValiderXML validateurXML;
+
+ /**
+ * Initialisation de la servlet par la récupération d'une connexion à la
+ * base de données
+ *
+ * @throws ServletException
+ * sera signalée en cas d'erreur lors de l'établissement de la
+ * connexion à la base
+ * @see javax.servlet.GenericServlet#init()
+ */
+ @Override
+ public void init() throws ServletException {
+ super.init();
+
+ validateurXML = new ValiderXML();
+ validateurXML.setSchemaPath(new File(getServletContext().getRealPath("xsds")));
+ validateurXML.setExternalSchemaLocation("http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller",new File(getServletContext().getRealPath("xsds/schemas_helios/PES_V2/Rev0/PES_Aller.xsd")));
+
+ Horodatage horo = getHorodatage();
+ horo.setModule("helios");
+
+
+ receptionDirectory = getConfiguration().getDirectoryHeliosResponse();
+ tmpReceptionDirectory = getConfiguration().getDirectoryHeliosResponseTmp();
+
+ }
+
+ protected void doGet(HttpServletRequest req, HttpServletResponse resp)
+ throws ServletException, IOException {
+
+ // Si la servlet est déjà en cours d'exécution, on sort
+ if (executing) {
+ this.log("WakeupServletResponse est déjà en cours d'exécution...");
+ return;
+ }
+
+ executing = true;
+
+ FichierHeliosReception reception = new FichierHeliosReception(getConnexion(),validateurXML);
+ reception.setMailSender(getConfiguration().getCriticalMailSender());
+ try {
+ reception.analyse(tmpReceptionDirectory, receptionDirectory);
+
+ } catch (TedetisException e){
+ executing = false;
+ sendCriticalMail(e);
+
+ throw new ServletException(e);
+ }
+ executing = false;
+ }
+
+
+}
\ No newline at end of file
--- /dev/null
+package com.adullact.tedetis.servlet;
+
+import java.io.IOException;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.sql.EnveloppeSQL;
+import com.adullact.tedetis.sql.Horodatage;
+import com.adullact.tedetis.util.FileSender;
+
+/**
+ * Servlet implementation class EnvoieArchive
+ */
+public class EnvoieArchive extends GenericTedetisServlet {
+
+ private static final long serialVersionUID = 1L;
+
+ private FileSender fileSender;
+
+
+ public void init() throws ServletException {
+ super.init();
+ fileSender = getConfiguration().getFileSender();
+ }
+
+ /**
+ * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
+ */
+ @Override
+ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+
+ try {
+ logger.info("Appel de la Servlet EnvoieArchive");
+ response.setContentType("text/html");
+ response.setCharacterEncoding("UTF-8");
+
+ EnveloppeSQL.envoyerEnvelope(getConnexion(), getFileSender() ,getEnveloppePath(),getFenetreEnvoieActes(),getHorodatage());
+
+ } catch (Exception e) {
+ doLogger("Erreur : ",e);
+ sendCriticalMail(e);
+ }
+
+ }
+
+ private FileSender getFileSender(){
+ return fileSender;
+ }
+
+ private void doLogger(String msg,Throwable e) throws ServletException {
+ this.log(msg);
+
+ Horodatage horodatage = getHorodatage();
+ try {
+ horodatage.save(msg);
+ } catch (TedetisException e1) {
+ this.log("Erreur aditionnel : impossible d'enregistrer l'erreur dans la base de données");
+ }
+
+ throw new ServletException(msg,e);
+ }
+}
--- /dev/null
+package com.adullact.tedetis.servlet;
+
+import java.io.File;
+import java.io.IOException;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.helios.FichierCompteur;
+import com.adullact.tedetis.helios.FichierHeliosPostage;
+import com.adullact.tedetis.helios.FichierHeliosValidation;
+import com.adullact.tedetis.sql.HeliosTransactions;
+import com.adullact.tedetis.sql.Horodatage;
+import com.adullact.tedetis.util.ClientFTP;
+import com.adullact.tedetis.util.ValiderXML;
+
+public class EnvoieFichierHelios extends GenericTedetisServlet {
+
+ private static final long serialVersionUID = 8134517387856933709L;
+ private boolean executing;
+
+ private boolean helios_zip = false;
+
+ private ClientFTP clientFTP;
+ private FichierCompteur fichierCompteur;
+ private ValiderXML validateurXML;
+ private String tempDirectory;
+
+ @Override
+ public void init() throws ServletException {
+
+ super.init();
+
+ clientFTP = getConfiguration().getClientFTP();
+
+ fichierCompteur = getConfiguration().getFichierCompteur();
+ Horodatage horo = getHorodatage();
+ horo.setModule("helios");
+
+ tempDirectory = getConfiguration().getDiretoryHeliosSending();
+ helios_zip = getConfiguration().getZipMode();
+
+ validateurXML = new ValiderXML();
+ validateurXML.setSchemaPath(new File(getServletContext().getRealPath("xsds")));
+ validateurXML.setExternalSchemaLocation("http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller",new File(getServletContext().getRealPath("xsds/schemas_helios/PES_V2/Rev0/PES_Aller.xsd")));
+ }
+
+ @Override
+ protected void doGet(HttpServletRequest req, HttpServletResponse resp)
+ throws ServletException {
+
+ // Si la servlet est déjà en cours d'exécution, on sort
+ if (executing) {
+ this.log("EnvoieFichierHelios est déjà en cours d'exécution...");
+ return;
+ }
+
+ executing = true;
+
+ try {
+ validerTransactionPoste();
+ envoyerTransactionValide();
+ } catch (TedetisException e){
+ executing = false;
+ sendCriticalMail(e);
+ throw new ServletException(e);
+ }
+
+ executing = false;
+ }
+
+ /**
+ * On passe les transactions "valider" à "en attente"
+ * @throws TedetisException
+ */
+ private void validerTransactionPoste() throws TedetisException{
+ int transaction_id;
+ ResultSet rs = null;
+ try {
+
+ rs = HeliosTransactions.getTransactionByStatus(getConnexion(), HeliosTransactions.POSTE);
+ while(rs.next()) {
+
+ transaction_id = rs.getInt("transaction_id");
+ HeliosTransactions heliosTransaction = new HeliosTransactions(getConnexion(),transaction_id);
+
+ this.log("Transaction " + transaction_id + " en cours de validation");
+
+ FichierHeliosValidation fHelios = new FichierHeliosValidation(heliosTransaction,validateurXML);
+ fHelios.validate(tempDirectory);
+ }
+ } catch (Exception e) {
+ throw new TedetisException(e);
+ }
+ }
+
+ private void envoyerTransactionValide() throws TedetisException {
+ try {
+ ResultSet rs = HeliosTransactions.getTransactionByStatus(getConnexion(), HeliosTransactions.ATTENTE);
+
+ while (rs.next()){
+
+ int transaction_id = rs.getInt("transaction_id");
+
+ HeliosTransactions ht = new HeliosTransactions(getConnexion(),transaction_id);
+ FichierHeliosValidation fHelios = new FichierHeliosValidation(ht,validateurXML);
+ FichierHeliosPostage fh = new FichierHeliosPostage(ht,clientFTP,fichierCompteur,fHelios);
+ //System.out.println("helios_zip : "+ helios_zip);
+ if (helios_zip){
+ fh.setZipFileBeforeSend();
+ }
+ this.log("Debut d'envoi de la transaction " + transaction_id);
+ boolean result_send = fh.sendFile(getFenetreEnvoieHelios(),tempDirectory);
+ this.log("La transaction " + transaction_id+" a ete envoye");
+ if (result_send){
+ this.log("Transaction " + transaction_id + " envoyee avec succes.");
+ }
+
+ }
+ } catch (Exception e){
+ throw new TedetisException(e);
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+package com.adullact.tedetis.servlet;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+public class ExceptionServlet2 extends GenericTedetisServlet {
+
+ private static final long serialVersionUID = 1L;
+
+ protected void doGet(HttpServletRequest request,
+ HttpServletResponse response) throws ServletException, IOException {
+ response.setContentType("text/html");
+ response.setCharacterEncoding("UTF-8");
+ PrintWriter pw = response.getWriter();
+
+ pw = response.getWriter();
+ pw.write("<h1>Test de l'environnement Tedetis</h1>");
+ sendCriticalMail(new ServletException("Exception de test"));
+
+ }
+
+}
\ No newline at end of file
--- /dev/null
+package com.adullact.tedetis.servlet;
+
+import java.sql.Connection;
+import java.util.logging.Logger;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+
+import com.adullact.tedetis.ConfigurationEnvironnement;
+import com.adullact.tedetis.GlobalHorodatage;
+import com.adullact.tedetis.actes.EnveloppePath;
+import com.adullact.tedetis.actes.FichierActesXML;
+import com.adullact.tedetis.sql.FenetreEnvoie;
+import com.adullact.tedetis.sql.FenetreEnvoieActes;
+import com.adullact.tedetis.sql.FenetreEnvoieHelios;
+import com.adullact.tedetis.sql.Horodatage;
+import com.adullact.tedetis.util.CriticalMailSender;
+
+public abstract class GenericTedetisServlet extends HttpServlet {
+
+ private static final long serialVersionUID = 1L;
+ private EnveloppePath cheminEnveloppes;
+ private Horodatage horodatage;
+ private Connection jdbcConnection;
+
+ protected static Logger logger = Logger.getLogger("com.adullact.s2low");
+
+ ConfigurationEnvironnement configuration;
+
+ public void initConfig() throws ServletException {
+ try {
+ configuration = ServletUtil.getConfigurationEnvironnement(this);
+ } catch (Exception e){
+ throw new ServletException("Fichiers " + ConfigurationEnvironnement.NOM_FICHIER + " introuvable",e);
+ }
+ }
+
+ @Override
+ public void init() throws ServletException {
+
+ initConfig();
+
+
+ try {
+ jdbcConnection = configuration.getJdbcConnection();
+ } catch (Exception e) {
+ throw new ServletException("Connexion à la base de données impossible",e);
+ }
+
+ FichierActesXML.setSchemaActePath(getServletContext().getRealPath("xsds"));
+
+ cheminEnveloppes = configuration.getTedetisUploadPath();
+
+ logger.finest("Chemin des enveloppes : " + cheminEnveloppes);
+
+ horodatage = new Horodatage(getConnexion(),configuration.getParapheur());
+ horodatage.setModule("actes");
+ horodatage.setIssuer("TdT");
+ horodatage.setSeverity(Horodatage.ERROR);
+ horodatage.setVisibility("SADM");
+ GlobalHorodatage.setInstance(horodatage);
+ }
+
+ public Connection getConnexion() {
+ return jdbcConnection;
+ }
+
+ public EnveloppePath getEnveloppePath(){
+ return cheminEnveloppes;
+ }
+
+ public Horodatage getHorodatage(){
+ return horodatage;
+ }
+
+ public ConfigurationEnvironnement getConfiguration(){
+ return configuration;
+ }
+
+ public FenetreEnvoie getFenetreEnvoieActes(){
+ FenetreEnvoie fenetreEnvoie = new FenetreEnvoieActes(getConnexion());
+ fenetreEnvoie.setMailSender(getConfiguration().getCriticalMailSender());
+ return fenetreEnvoie;
+ }
+
+ public FenetreEnvoie getFenetreEnvoieHelios(){
+ FenetreEnvoie fenetreEnvoie = new FenetreEnvoieHelios(getConnexion());
+ fenetreEnvoie.setMailSender(getConfiguration().getCriticalMailSender());
+ return fenetreEnvoie;
+ }
+
+ public void sendCriticalMail(Exception e){
+ String message;
+ message = "Détection d'une exception non gérée !";
+ message += "\n\nMessage de l'exception : " + e.getMessage();
+ message += "\n\nTrace de l'exception : \n";
+
+ for (StackTraceElement s : e.getStackTrace()){
+ message += s.toString() + "\n";
+ }
+
+ CriticalMailSender criticalMailSender = getConfiguration().getCriticalMailSender();
+ criticalMailSender.send(message);
+ }
+
+
+}
--- /dev/null
+package com.adullact.tedetis.servlet;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.List;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import com.adullact.tedetis.actes.ActesEnveloppeReceiver;
+import com.adullact.tedetis.util.MailReceiver;
+import com.adullact.tedetis.util.Transcoder;
+
+public class MailReception extends GenericTedetisServlet {
+
+ private static final long serialVersionUID = 1L;
+
+ private MailReceiver mailReceiver;
+
+ @Override
+ public void init() throws ServletException {
+ super.init();
+ mailReceiver = getConfiguration().getMailReceveir();
+ }
+
+ /**
+ * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
+ */
+ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+
+ Transcoder transcoder = new Transcoder();
+
+ response.setContentType("text/html");
+ response.setCharacterEncoding("UTF-8");
+
+ PrintWriter pw = response.getWriter();
+
+ try {
+ ActesEnveloppeReceiver receiver = new ActesEnveloppeReceiver(configuration.getTrigramme(),getEnveloppePath());
+
+ List<File> lesFichiers;
+
+ receiver.setConnexion(getConnexion());
+ receiver.setLoguer(logger);
+ receiver.setNotification(configuration.getNotificationActes());
+ receiver.setHorodatage(getHorodatage());
+ lesFichiers = mailReceiver.getMail("/tmp");
+
+ //Hack pour transformer les fichiers soit disant iso qui contiennent de l'utf8
+ for(File f : lesFichiers){
+ transcoder.transcode(f);
+
+ }
+
+ pw.println("Fichier recu : " + lesFichiers.size());
+ receiver.receive(lesFichiers);
+
+ //suppression des fichiers extraits du mail dans /tmp
+ for(File f : lesFichiers){
+ f.delete();
+ }
+ } catch (Exception e){
+ pw.println("Erreur dans la réception du mail : " + e.getMessage());
+ e.printStackTrace();
+ sendCriticalMail(e);
+
+ }
+ }
+
+
+}
--- /dev/null
+package com.adullact.tedetis.servlet;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.List;
+import java.util.Properties;
+
+import javax.mail.Message;
+import javax.mail.Session;
+import javax.mail.internet.MimeMessage;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import com.adullact.tedetis.actes.ActesEnveloppeReceiver;
+import com.adullact.tedetis.util.Mail2File;
+
+public class MailReceptionByRequest extends GenericTedetisServlet {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void init() throws ServletException {
+ super.init();
+ }
+
+ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+
+ response.setContentType("text/html");
+ response.setCharacterEncoding("UTF-8");
+
+ PrintWriter pw = response.getWriter();
+
+ try {
+ ActesEnveloppeReceiver receiver = new ActesEnveloppeReceiver(configuration.getTrigramme(),getEnveloppePath());
+ receiver.setConnexion(getConnexion());
+ receiver.setLoguer(logger);
+ receiver.setNotification(configuration.getNotificationActes());
+
+ List<File> lesFichiers;
+
+ Properties props = System.getProperties();
+ Session session = Session.getDefaultInstance(props, null);
+ Message message = new MimeMessage(session, request.getInputStream());
+ Mail2File mail2File = new Mail2File("/tmp");
+ lesFichiers = mail2File.getFiles(message);
+
+ receiver.receive(lesFichiers);
+
+
+ } catch (Exception e){
+ pw.println("Erreur dans la réception du mail : " + e.getMessage());
+ e.printStackTrace();
+ }
+ }
+}
--- /dev/null
+package com.adullact.tedetis.servlet;
+
+import java.io.IOException;
+import java.util.ArrayList;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.util.ClientFTP;
+
+public class ReceptionFichierHelios extends GenericTedetisServlet {
+
+ private static final long serialVersionUID = 2604069646105721499L;
+
+ private boolean executing;
+
+ // Répertoire temporaire pour les réponses
+ private ClientFTP clientFTP;
+ private String ftpGetDirectory;
+ private String receptionDirectory;
+
+ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+
+ if (executing) {
+ this.log("WakeupServletResponse est déjà en cours d'exécution...");
+ return;
+ }
+
+ initConfig();
+ clientFTP = getConfiguration().getClientFTP();
+ receptionDirectory = getConfiguration().getDirectoryHeliosResponseTmp();
+ ftpGetDirectory = getConfiguration().getDirectoryServerHeliosResponse();
+
+ executing = true;
+ System.out.println("Lancement de ReceptionFichierHelios");
+ try {
+ ArrayList<String> files = clientFTP.getFichier(ftpGetDirectory,receptionDirectory);
+ System.out.println("Nombre de fichiers téléchargés : " +files.size() );
+ } catch (TedetisException e){
+ executing = false;
+ sendCriticalMail(e);
+ throw new ServletException(e);
+ }
+ executing = false;
+ }
+
+
+}
\ No newline at end of file
--- /dev/null
+package com.adullact.tedetis.servlet;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.Vector;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import com.adullact.tedetis.util.MailSender;
+
+public class SendMailWithAttachment extends GenericTedetisServlet {
+
+ private static final long serialVersionUID = 1L;
+
+ protected void doGet(HttpServletRequest request,
+ HttpServletResponse response) throws ServletException, IOException {
+ response.setContentType("text/html");
+ response.setCharacterEncoding("UTF-8");
+ PrintWriter pw = response.getWriter();
+
+ pw = response.getWriter();
+ pw.write("Un email a été envoyé");
+
+
+ MailSender mailSender = configuration.getMailFileSender();
+ //mailSender.setWebContentPath( getServletContext().getRealPath("."));
+
+ try {
+
+ Vector<String> recipient = new Vector<String>();
+
+ recipient.add(configuration.getEmailAdmin());
+
+ mailSender.setRecipient(recipient);
+
+ String file_path = getServletContext().getRealPath("fixtures/test.pdf");
+ mailSender.addFile(new File(file_path));
+
+ mailSender.setMessage("Ceci est un message texte");
+
+ file_path = getServletContext().getRealPath("fixtures/classification/classification.xml");
+ mailSender.addFile(new File(file_path));
+
+ mailSender.sendHTML();
+
+ } catch(Exception e){
+ sendCriticalMail(e);
+ }
+
+
+
+
+ }
+
+}
\ No newline at end of file
--- /dev/null
+package com.adullact.tedetis.servlet;
+
+import javax.servlet.http.HttpServlet;
+
+import com.adullact.tedetis.ConfigurationEnvironnement;
+import com.adullact.tedetis.Exception.TedetisException;
+
+public class ServletUtil {
+
+ public static final String propertiesFileRelativePath = "/../../conf/";
+
+ public static String getPropertiesFilePath(HttpServlet s){
+ return s.getServletContext().getRealPath(".") + propertiesFileRelativePath;
+ }
+
+ public static ConfigurationEnvironnement getConfigurationEnvironnement(HttpServlet s) throws TedetisException{
+ ConfigurationEnvironnement c = new ConfigurationEnvironnement(getPropertiesFilePath(s));
+ c.setWebcontentPath( s.getServletContext().getRealPath("."));
+ return c;
+ }
+
+
+}
--- /dev/null
+/*
+ Copyright NTSys/Alternance-Soft
+ conbtributeur : Frédéric Souchon, Août 2006
+
+ contact@ntsys.fr, fsouchon@alternancesoft.com
+
+ Ce logiciel est un programme informatique servant à la
+ dématérialisation de l'administration.
+
+ Ce logiciel est régi par la licence CeCILL soumise au droit français et
+ respectant les principes de diffusion des logiciels libres. Vous pouvez
+ utiliser, modifier et/ou redistribuer ce programme sous les conditions
+ de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA
+ sur le site "http://www.cecill.info".
+
+ En contrepartie de l'accessibilité au code source et des droits de copie,
+ de modification et de redistribution accordés par cette licence, il n'est
+ offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons,
+ seule une responsabilité restreinte pèse sur l'auteur du programme, le
+ titulaire des droits patrimoniaux et les concédants successifs.
+
+ A cet égard l'attention de l'utilisateur est attirée sur les risques
+ associés au chargement, à l'utilisation, à la modification et/ou au
+ développement et à la reproduction du logiciel par l'utilisateur étant
+ donné sa spécificité de logiciel libre, qui peut le rendre complexe à
+ manipuler et qui le réserve donc à des développeurs et des professionnels
+ avertis possédant des connaissances informatiques approfondies. Les
+ utilisateurs sont donc invités à charger et tester l'adéquation du
+ logiciel à leurs besoins dans des conditions permettant d'assurer la
+ sécurité de leurs systèmes et ou de leurs données et, plus généralement,
+ à l'utiliser et l'exploiter dans les mêmes conditions de sécurité.
+
+ Le fait que vous puissiez accéder à cet en-tête signifie que vous avez
+ pris connaissance de la licence CeCILL, et que vous en avez accepté les
+ termes.
+ */
+package com.adullact.tedetis.servlet;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Vector;
+import java.util.logging.Logger;
+
+import javax.mail.MessagingException;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.fileupload.disk.DiskFileItemFactory;
+import org.apache.commons.fileupload.servlet.ServletFileUpload;
+
+import com.adullact.tedetis.ConfigurationEnvironnement;
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.Archive;
+import com.adullact.tedetis.actes.CodeMessage;
+import com.adullact.tedetis.actes.FichierActesXML;
+import com.adullact.tedetis.actes.MessageMetierFactory;
+import com.adullact.tedetis.actes.messages.MessageMetier;
+import com.adullact.tedetis.actes.messages.MessageMetierActe;
+import com.adullact.tedetis.actes.messages.MessageMetierDemandeClassification;
+/**
+ * Servlet implementation class SimulateurMinistere
+ */
+public class SimulateurMinistere extends HttpServlet {
+
+ private static final long serialVersionUID = 1L;
+ private static final long MAX_ARCHIVE = 10;
+
+ private static Logger logger = Logger.getLogger(SimulateurMinistere.class.getName());
+
+ private LinkedList<Archive> lesDernieresArchives;
+
+ private File tmpDir;
+ private int numeroArchiveSerial = 0;
+
+ ConfigurationEnvironnement configuration;
+
+ public void initConfig() throws ServletException {
+ try {
+ configuration = ServletUtil.getConfigurationEnvironnement(this);
+ } catch (Exception e){
+ throw new ServletException("Fichiers " + ConfigurationEnvironnement.NOM_FICHIER + " introuvable",e);
+ }
+ }
+
+ @Override
+ public void init() throws ServletException {
+ super.init();
+
+ initConfig();
+
+ lesDernieresArchives = new LinkedList<Archive>();
+
+ logger.fine("Servlet SimulateurMinistère initialisé");
+
+ FichierActesXML.setSchemaActePath(getServletContext().getRealPath("xsds"));
+ tmpDir = (File) getServletContext().getAttribute("javax.servlet.context.tempdir");
+ }
+
+ synchronized private void addArchive(Archive a){
+ if (lesDernieresArchives.size() == MAX_ARCHIVE) {
+ lesDernieresArchives.removeFirst();
+ }
+ lesDernieresArchives.add(a);
+ }
+
+ public LinkedList<Archive> getArchive(){
+ return lesDernieresArchives;
+ }
+
+ /**
+ * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
+ */
+ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+
+ String message = request.getParameter("message");
+ String acte = request.getParameter("acte");
+
+ String error = null;
+
+ if (message != null) {
+ error = doSendMessage(acte,message);
+ }
+
+ response.setContentType("text/html");
+ response.setCharacterEncoding("UTF-8");
+
+ PrintWriter pw = response.getWriter();
+ pw.println("<h1>Simulateur de messages ACTES du ministère</h1>");
+
+ if (message != null) {
+ pw.println("envoie d'un message " + message + " pour l'acte " + acte + " : " + error);
+ }
+ pw.println("<h2>Flux ACTES 1.4</h2>");
+ pw.println("2.1- envoi courrier simple : ministère → collectivitéi<br>");
+ pw.println("2.2- réponse courrier simple : collectivité → ministère<br><br>");
+ pw.println("3.1- demande de pièces complémentaires: ministère → collectivité<br>");
+ pw.println("3.2- accusé réception du 3.1: collectivité → ministère<br>");
+ pw.println("3.3- refus: collectivité → ministère<br>");
+ pw.println("3.4- envoi de pièces complémentaires: collectivité → ministère<br>");
+ pw.println("3.5- accusé réception 3.4: ministère → collectivité<br><br>");
+ pw.println("4.1- envoi de lettre d'observation: ministère → collectivité<br>");
+ pw.println("4.2- accusé réception 4.1: collectivité → ministère<br>");
+ pw.println("4.3- refus 4.1 : collectivité → ministère<br>");
+ pw.println("4.4- réponse 4.1: collectivité → ministère<br>");
+ pw.println("4.5- accusé réception 4.4: ministère → collectivité<br><br>");
+ pw.println("5.1- déféré: ministère → collectivité<br>");
+
+ pw.println("<h2>Listes des dernières archives postées (" + lesDernieresArchives.size() + ")</h2>");
+
+ pw.println("<table border='1'><tr><th>Nom fichier métier</th><th>type message</th><th>mail</th><th>envoie de message</th></tr>");
+
+ for (Archive a : lesDernieresArchives) {
+ for (MessageMetier m : a.getMessageMetier()) {
+ pw.println("<tr>");
+ pw.println("<td>" + m.getName() + "</td>");
+ pw.println("<td>" + m.getCodeMessage() + "</td>");
+ if (m.getCodeMessage().equals(CodeMessage.ACTE_CODE)) {
+ StringBuffer mail = new StringBuffer();
+ if ( a.getEnveloppe().getAdressesRetour() != null){
+ for(String s : a.getEnveloppe().getAdressesRetour() ) {
+ mail.append(s).append("<br/>");
+ }
+ }
+ pw.println("<td>" + mail + "</td>");
+ pw.println("<td><form method='GET'>");
+ pw.println("<input type='hidden' name='acte' value='" + m.getName() + "'>");
+ pw.println("<select name='message' >");
+ pw.println("<option value='2-1'>Courier simple (2-1)</option>");
+ pw.println("<option value='3-1'>Demande de pièces complémentaires (3-1)</option>");
+ pw.println("<option value='4-1'>Lettre d'observation (4-1)</option>");
+ pw.println("<option value='5-1'>Deferé TA (5-1)</option>");
+ pw.println("</select><input type='submit'></form></td>");
+ } else {
+ pw.println("<td> </td><td> </td>");
+ }
+ pw.println("</tr>");
+ }
+ }
+ pw.println("</table> ");
+ }
+
+ private void sendArchiveReponse(Archive theArchive, MessageMetier messageReponse) throws TedetisException, IOException, MessagingException {
+
+ Archive nouvelleArchive = new Archive(theArchive, numeroArchiveSerial ++);
+ nouvelleArchive.addMessageMetier(messageReponse);
+ messageReponse.setFixturesData();
+ nouvelleArchive.setFixturesFile(getServletContext( ).getRealPath("fixtures/test.pdf"));
+ Vector<String> mail = theArchive.getEnveloppe().getAdressesRetour();
+ logger.info("SimulateurMinistere : Mail envoyé à " + mail);
+ nouvelleArchive.sendMail(mail,configuration.getMailFileSender(),configuration.getActesSimulateurEmailInHTML());
+ }
+
+ private void doReponse(Archive a) throws Exception {
+ for( MessageMetier m : a.getMessageMetier() ){
+ if (m.isCodeMessage(CodeMessage.ACTE_CODE)){
+ MessageMetier messageReponse = MessageMetierFactory.getInstanceFromActe((MessageMetierActe) m,CodeMessage.ARACTE_CODE);
+ sendArchiveReponse(a,messageReponse);
+ } else if (m.isCodeMessage(CodeMessage.DEMANDECLASSIFICATION_CODE)) {
+ MessageMetierDemandeClassification demande = (MessageMetierDemandeClassification) m;
+ MessageMetier reponse = demande.getReponseFromFile(getServletContext().getRealPath("fixtures/classification/classification.xml"));
+ sendArchiveReponse(a,reponse);
+ } else {
+ MessageMetier messageReponse = m.getAR();
+ if (messageReponse != null) {
+ sendArchiveReponse(a,messageReponse);
+ }
+ }
+ }
+ }
+
+ private String doSendMessage(String acte, String codeMessage) {
+
+ MessageMetier messageMetier = null;
+ Archive theArchive = null;
+
+ for (Archive a : lesDernieresArchives) {
+ MessageMetier m = a.getAMessageMetier(acte);
+ if (m != null) {
+ theArchive = a;
+ messageMetier = m;
+ }
+ }
+ if (messageMetier == null){
+ return "Erreur : impossible de trouver le message métier";
+ }
+
+ if (! messageMetier.getCodeMessage().equals(CodeMessage.ACTE_CODE)){
+ return "Erreur : Le message doit être un acte (1-1)";
+ }
+
+ if(CodeMessage.get(codeMessage) == null){
+ return "Erreur : impossible de trouver le code du message";
+ }
+ try {
+ MessageMetier messageReponse = MessageMetierFactory.getInstanceFromActe((MessageMetierActe) messageMetier,codeMessage);
+ sendArchiveReponse(theArchive,messageReponse);
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ return "Erreur : " + e.getMessage();
+ }
+ return "ok";
+ }
+
+ /**
+ * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
+ */
+ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+
+ logger.entering("SimulateurMinistere", "doPost");
+ /*try {
+ Thread.sleep(10000);
+ } catch (Exception e){
+
+ }*/
+
+ // Préparation de la construction de la réponse
+ response.setContentType("text/html");
+ response.setCharacterEncoding("ISO-8859-1");
+
+ //Un message doit contenir une enveloppe
+ if (! isMultipartPost(request)){
+ returnError(response, "Erreur : le message ne contient pas d'enveloppe");
+ return;
+ }
+
+ File uploadedFile = null;
+
+ DiskFileItemFactory factory = new DiskFileItemFactory();
+
+ ServletFileUpload upload = new ServletFileUpload(factory);
+
+ try {
+ List<?> items = upload.parseRequest(request);
+ Iterator<?> iter = items.iterator();
+ while (iter.hasNext()) {
+ FileItem item = (FileItem) iter.next();
+ if (! item.isFormField()) {
+ uploadedFile = new File(tmpDir,item.getFieldName());
+ uploadedFile.deleteOnExit();
+ item.write(uploadedFile);
+ }
+ }
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.severe("Erreur innatendu" + e.getMessage());
+ throw new ServletException("Exception de base : " + e.getMessage(), e);
+ }
+
+ logger.info("Traitement de : " + uploadedFile.getName());
+
+ try {
+ Archive a = new Archive(uploadedFile);
+ addArchive(a);
+ doReponse(a);
+ } catch (Exception e) {
+ e.printStackTrace();
+ returnError(response,"Erreur TeDeTis : impossible d'envoyer le mail pour " + uploadedFile.getName() + " : " + e.getMessage());
+ return;
+ }
+ }
+
+ @SuppressWarnings("deprecation")
+ private boolean isMultipartPost(HttpServletRequest request){
+ //Méthode spécifique car isMultipartContent est deprecié dans la classe mère (FileUpload), mais
+ //pas dans la classe fille (ServletFileUpload)
+ return ServletFileUpload.isMultipartContent(request);
+ }
+
+ private void returnError(HttpServletResponse response, String msg) throws IOException {
+
+ response.setStatus(417);
+
+ PrintWriter pw = response.getWriter();
+ pw.println(msg);
+
+ logger.info(msg);
+
+ }
+
+
+}
--- /dev/null
+package com.adullact.tedetis.servlet;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import javax.servlet.ServletException;
+
+import junit.framework.Assert;
+
+import org.apache.cactus.ServletTestCase;
+import org.apache.cactus.WebRequest;
+import org.apache.cactus.WebResponse;
+
+import HTTPClient.Codecs;
+import HTTPClient.NVPair;
+
+
+
+public class SimulateurMinistereTest extends ServletTestCase {
+
+ public static final String archivePath = "fixtures/archive/adl-TACT--999888777--20070411-1.tar.gz";
+
+ NVPair[] hdrs = new NVPair[1];
+
+ SimulateurMinistere servlet;
+
+ public SimulateurMinistereTest(){
+ //TODO : il faut mettre ca dans un fichier de configuration...
+ System.setProperty("cactus.contextURL", "http://127.0.0.1:8180/ActesSimulateurMinistere");
+ }
+
+
+ /**
+ * Appel de l'URL du simulateur du ministère
+ * @param theRequest
+ */
+ public void begin(WebRequest theRequest){
+ theRequest.setURL("jakarta.apache.org", "/ActesSimulateurMinistere", "/SimulateurMinistere", null, null);
+ }
+
+ /**
+ * On crée la servlet, on l'initialise et on fait la méthode post
+ */
+ public void setUp() throws ServletException,IOException {
+ servlet = new SimulateurMinistere();
+ config.setInitParameter("trigramme", "abc");
+ config.setInitParameter("quadrigramme", "abc");
+ servlet.init(config);
+ servlet.doPost(request,response);
+ }
+
+ public void testAucuneEnveloppe() throws ServletException,IOException {}
+
+ public void endAucuneEnveloppe(WebResponse theResponse){
+ assertEquals(theResponse.getStatusCode(), 417);
+ }
+
+ public void beginFichierInconnu(WebRequest theRequest) throws IOException {
+ NVPair[] opts = null;
+ NVPair[] file = { new NVPair("un_nom_bidon", "/home/eric/modif_sql_miam") };
+ byte[] data = Codecs.mpFormDataEncode(opts, file, hdrs);
+ InputStream i = new ByteArrayInputStream(data);
+ theRequest.setUserData(i);
+ theRequest.setContentType(hdrs[0].getValue());
+ i.close();
+ }
+
+ public void testFichierInconnu() throws ServletException,IOException {}
+
+ public void endFichierInconnu(WebResponse theResponse){
+ assertEquals(theResponse.getStatusCode(), 417);
+ }
+
+ public void beginActe(WebRequest theRequest) throws IOException{
+ NVPair[] opts = null;
+ NVPair[] file = { new NVPair("adl-TACT--999888777--20070411-1.tar.gz", "fixtures/archive/adl-TACT--999888777--20070411-1.tar.gz") };
+ byte[] data = Codecs.mpFormDataEncode(opts, file, hdrs);
+ InputStream i = new ByteArrayInputStream(data);
+ theRequest.setUserData(i);
+ theRequest.setContentType(hdrs[0].getValue());
+ i.close();
+ }
+
+ public void testActe() throws ServletException,IOException {}
+
+ public void endActe(WebResponse theResponse){
+ Assert.assertEquals(theResponse.getStatusCode(), 200);
+ }
+
+ public void beginListeArchive(WebRequest theRequest) throws IOException{
+ NVPair[] opts = null;
+ NVPair[] file = { new NVPair("adl-TACT--999888777--20070411-1.tar.gz", archivePath ) };
+ byte[] data = Codecs.mpFormDataEncode(opts, file, hdrs);
+ InputStream i = new ByteArrayInputStream(data);
+ theRequest.setUserData(i);
+ theRequest.setContentType(hdrs[0].getValue());
+ i.close();
+ }
+
+ public void testListeArchive() throws ServletException,IOException {
+ assertNotNull(servlet);
+ assertNotNull(servlet.getArchive());
+ Assert.assertEquals(servlet.getArchive().size(), 1);
+ Assert.assertEquals(servlet.getArchive().get(0).getNomArchive().getNomFichier(), "adl-TACT--999888777--20070411-1.tar.gz");
+ }
+
+
+
+}
--- /dev/null
+package com.adullact.tedetis.servlet;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import com.adullact.tedetis.ConfigurationEnvironnement;
+import com.adullact.tedetis.Parapheur;
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.helios.FichierCompteur;
+import com.adullact.tedetis.util.ClientFTP;
+import com.adullact.tedetis.util.FileSender;
+
+public class TestEnvironnement extends GenericTedetisServlet {
+
+ private static final long serialVersionUID = 1L;
+
+ private ConfigurationEnvironnement configuration;
+ private PrintWriter pw;
+ private Parapheur parapheur;
+ private String lastError;
+
+
+ public TestEnvironnement() {
+ super();
+ lastError = "";
+ }
+
+ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+ response.setContentType("text/html");
+ response.setCharacterEncoding("UTF-8");
+
+ pw = response.getWriter();
+ pw.write("<h1>Test de l'environnement Tedetis</h1>");
+
+ pw.write("<h2>Variable tedetis</h2>");
+ pw.write("<ul>");
+ listItem("Présence du fichier " + ConfigurationEnvironnement.NOM_FICHIER ,testFichiersActes());
+ listItem("Emplacement fichier de configuration",ServletUtil.getPropertiesFilePath(this));
+ listItem("Connexion à la base de données",testDatabaseConnection());
+ listItem("Test du parapheur", testParapheur());
+ pw.write("</ul>");
+
+ pw.write("<h2>Variable ACTES</h2>");
+ pw.write("<ul>");
+ listItem("Trigramme" , configuration.getTrigramme());
+ listItem("Quadrigramme" , configuration.getQuadrigramme());
+ listItem("Connexion au serveur de mail",testMailReceiver());
+ listItem("Connexion au serveur du ministère (ACTES)",testFileSender());
+ listItem("Chemin vers les enveloppes ACTES",testUploadPath());
+ pw.write("</ul>");
+
+ pw.write("<h2>Variable HELIOS</h2>");
+ pw.write("<ul>");
+ listItem("Propriété connexion FTP" , configuration.getClientFTPProperty());
+ listItem("Connexion au serveur FTP (Helios)",testFTPServer());
+ listItem("Contenu du fichier compteur",testFichierCompteur());
+ listItem("Emplacement fichier a envoyer",configuration.getDiretoryHeliosSending());
+ listItem("Emplacement définitif des fichiers reçu",configuration.getDirectoryHeliosResponse());
+ listItem("Emplacement temporaire des fichiers à traiter",configuration.getDirectoryHeliosResponseTmp());
+ listItem("Emplacement des fichiers réponses sur le serveur",configuration.getDirectoryServerHeliosResponse());
+
+ pw.write("</ul>");
+ pw.write("<a href='ExceptionServlet2'>Déclencher une exception</a><br/>");
+ pw.write("<a href='SendMailWithAttachment'>Envoyer un mail de test ARActe</a><br/>");
+ }
+
+ private String testFichierCompteur() {
+ try {
+ FichierCompteur f = configuration.getFichierCompteur();
+ return f.getNumber();
+ } catch (Exception e) {
+ lastError = e.getMessage();
+ return lastError;
+ }
+
+ }
+
+ private boolean testFTPServer() {
+ try {
+ ClientFTP clientFTP = configuration.getClientFTP();
+ clientFTP.test();
+ } catch (Exception e) {
+ lastError = e.getMessage();
+ return false;
+ }
+ lastError = "";
+ return true;
+ }
+
+ private String testUploadPath() {
+ String uploadPath = "Not Found";
+ try {
+ uploadPath = configuration.getTedetisUploadPath().toString();
+ } catch (Exception e){}
+ return uploadPath;
+ }
+
+ private boolean testMailReceiver() {
+ try {
+ configuration.getMailReceveir().testConnection();
+ } catch (Exception e){
+ lastError = e.getMessage();
+ return false;
+ }
+ lastError = "";
+ return true;
+ }
+
+ private void listItem(String texte, boolean test){
+ pw.write("<li> "+texte+": ");
+ if (test){
+ pw.write("OK");
+ } else {
+ pw.write("FAIL");
+ pw.write("<" + lastError + ">");
+ }
+ pw.write("</li>");
+ }
+
+ private void listItem(String texte, String value){
+ pw.write("<li> "+texte+": " + value);
+ pw.write("</li>");
+ }
+
+ private boolean testFichiersActes(){
+ try {
+ configuration = ServletUtil.getConfigurationEnvironnement(this);
+ } catch (TedetisException a){
+ lastError = a.getMessage();
+ return false;
+ }
+ lastError = "";
+ return true;
+ }
+
+ private boolean testDatabaseConnection(){
+ try {
+ configuration.getJdbcConnection();
+ } catch (Exception e) {
+ lastError = e.getMessage();
+ return false;
+ }
+ lastError = "";
+ return true;
+ }
+
+ private boolean testParapheur(){
+
+ try {
+ parapheur = configuration.getParapheur();
+ parapheur.getSignature("test");
+ } catch (Exception e){
+ lastError = e.getMessage();
+ return false;
+ }
+ lastError = "";
+ return true;
+ }
+
+ private boolean testFileSender(){
+ try {
+ FileSender fs = configuration.getFileSender();
+ fs.send();
+
+ } catch (Exception e){
+ lastError = e.getMessage();
+ return false;
+ }
+ lastError = "";
+ return true;
+ }
+
+}
\ No newline at end of file
--- /dev/null
+package com.adullact.tedetis.servlet;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintWriter;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import com.adullact.tedetis.actes.Archive;
+
+public class ValideArchive extends GenericTedetisServlet {
+ private static final long serialVersionUID = 1L;
+
+ public ValideArchive() {
+ super();
+ }
+
+ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+
+
+
+ response.setContentType("text/html");
+ response.setCharacterEncoding("UTF-8");
+ PrintWriter out = response.getWriter();
+
+ try {
+ String path =getEnveloppePath() + request.getParameter("file");
+
+ File tgz = new File(path);
+ new Archive(tgz);
+ out.write("OK");
+ } catch (Exception e){
+ out.write("KO");
+ e.printStackTrace();
+ out.write(e.getMessage());
+ sendCriticalMail(e);
+
+ }
+
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.sql;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+public class Authority extends BaseSQL {
+
+ private String siren;
+ private Integer authorityID;
+
+ public Authority(Connection connexion,String siren) {
+ super(connexion);
+ this.siren = siren;
+ }
+
+ public int getAuthorityID() throws SQLException{
+ if (authorityID == null){
+ String siren9=siren.substring(0, 9);
+ PreparedStatement ps = prepareStatement("SELECT id FROM authorities WHERE siren = ?");
+ ps.setString(1, siren9);
+ ResultSet rs = ps.executeQuery();
+ rs.next();
+ authorityID = rs.getInt("id");
+ }
+ return authorityID;
+ }
+
+ public ResultSet getHeliosConnexionInfo() throws SQLException{
+ PreparedStatement ps = prepareStatement("SELECT helios_ftp_password,helios_ftp_login,helios_ftp_dest FROM authorities WHERE siren = ?");
+ ps.setString(1, siren);
+ ResultSet rs = ps.executeQuery();
+ rs.next();
+ return rs;
+ }
+
+ public void addToHeliosRetour(String filename) throws SQLException {
+ //Permet de vérifier que le siren existe
+ getAuthorityID();
+
+ String sql = "INSERT INTO helios_retour(id, siren, filename, status, date) " +
+ " VALUES (nextval('helios_transactions_workflow_id_seq'), ?,?,0,now()) ";
+
+ String siren9=siren.substring(0, 9);
+ PreparedStatement ps = prepareStatement(sql);
+ ps.setString(1, siren9);
+ ps.setString(2, filename);
+ ps.executeUpdate();
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.sql;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+import com.adullact.tedetis.GlobalHorodatage;
+import com.adullact.tedetis.Exception.TedetisException;
+
+abstract public class BaseSQL {
+
+ private Connection connexion;
+ protected Horodatage horodatage;
+
+ public BaseSQL(Connection connexion){
+ this.connexion = connexion;
+ horodatage = GlobalHorodatage.getInstance();
+
+ }
+
+ public void setHorodatage(Horodatage horodatage){
+ this.horodatage = horodatage;
+ }
+
+ public PreparedStatement prepareStatement(String sql) throws SQLException {
+ return connexion.prepareStatement(sql);
+ }
+
+ public Connection getConnexion(){
+ return connexion;
+ }
+
+ public void horodate(String message) throws TedetisException {
+ try {
+ horodatage.save(message);
+ } catch (Exception e){
+ throw new TedetisException(e.getMessage(),e);
+ }
+ }
+
+ public int getNextVal(String sequence) throws SQLException{
+ PreparedStatement ps = connexion.prepareStatement("SELECT nextval(?)");
+ ps.setString(1, sequence);
+ ResultSet rs = ps.executeQuery();
+ rs.next();
+ return rs.getInt(1);
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.sql;
+
+import java.sql.Connection;
+import java.sql.Date;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.Iterator;
+import java.util.List;
+
+import org.jdom.Element;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.messages.MessageMetier;
+import com.adullact.tedetis.actes.messages.MessageMetierRetourClassification;
+
+public class Classification extends BaseSQL {
+
+ private Connection connexion;
+ private String siren;
+
+ private Integer authorityID;
+
+ public Classification(Connection c,String siren){
+ super(c);
+ connexion = c;
+ this.siren = siren;
+ }
+
+ public void updateClassificationRequest(String date, String xmlData) throws SQLException{
+
+ String sql = "UPDATE actes_classification_requests SET version_date = ?, xml_data = ? " +
+ "WHERE version_date IS NULL AND requested_by IN ( SELECT users.id FROM users, authorities" +
+ " WHERE users.authority_id = authorities.id AND authorities.siren = ? )";
+ PreparedStatement ps = connexion.prepareStatement(sql);
+
+ ps.setDate(1, Date.valueOf(date));
+ ps.setString(2, xmlData);
+ ps.setString(3, siren);
+
+ ps.executeUpdate();
+ }
+
+ public ResultSet selectClassificationRequest() throws SQLException{
+ String sql = "SELECT * FROM actes_classification_requests WHERE requested_by IN " +
+ "( SELECT users.id FROM users, authorities" +
+ " WHERE users.authority_id = authorities.id AND authorities.siren = ? )";
+ PreparedStatement ps = connexion.prepareStatement(sql);
+
+ ps.setString(1, siren);
+
+ ResultSet rs = ps.executeQuery();
+ return rs;
+ }
+
+ public void deleteActeNature() throws SQLException{
+ PreparedStatement ps = connexion.prepareStatement("DELETE FROM actes_natures");
+ ps.executeUpdate();
+ }
+
+ public void insertActeNature(int CodeNatureActe, String TypeAbrege, String Libelle) throws SQLException{
+ PreparedStatement ps = connexion.prepareStatement("INSERT into actes_natures (id, short_descr, descr) VALUES (?,?,?)");
+ ps.setInt(1, CodeNatureActe);
+ ps.setString(2, TypeAbrege);
+ ps.setString(3,Libelle);
+ ps.executeUpdate();
+ }
+
+ public ResultSet selectActeNature() throws SQLException {
+ PreparedStatement ps = connexion.prepareStatement("SELECT * FROM actes_natures");
+ return ps.executeQuery();
+ }
+
+ public void deleteClassification() throws SQLException{
+ PreparedStatement ps = connexion.prepareStatement("DELETE FROM actes_classification_codes WHERE authority_id = ?");
+ ps.setInt(1, getAuthorityID());
+ ps.executeUpdate();
+ }
+
+ public ResultSet selectClassification() throws SQLException {
+ PreparedStatement ps = connexion.prepareStatement("SELECT * FROM actes_classification_codes WHERE authority_id = ? ORDER BY id");
+ ps.setInt(1, getAuthorityID());
+ return ps.executeQuery();
+ }
+
+ public int insertClassification(int level, int code, Integer parent_id, String description) throws SQLException {
+
+ int id = getNextVal("actes_classification_codes_id_seq");
+
+ PreparedStatement ps = connexion.prepareStatement("INSERT INTO actes_classification_codes (id,level, code, parent_id, description, authority_id)" +
+ " VALUES (?,?,?,?,?,?)");
+
+ ps.setInt(1,id);
+ ps.setInt(2, level);
+ ps.setInt(3, code);
+ if (parent_id == null){
+ ps.setNull(4,java.sql.Types.INTEGER);
+ } else {
+ ps.setInt(4, parent_id);
+ }
+ ps.setString(5, description);
+ ps.setInt(6, getAuthorityID());
+
+ ps.executeUpdate();
+
+ return id;
+ }
+
+ private int getAuthorityID() throws SQLException {
+ if (authorityID == null) {
+ Authority authority = new Authority(connexion,siren);
+ authorityID = authority.getAuthorityID();
+ }
+ return authorityID.intValue();
+ }
+
+ public void doClassification(MessageMetierRetourClassification message) throws SQLException, TedetisException {
+
+ boolean autocommit = connexion.getAutoCommit();
+ connexion.setAutoCommit(false);
+
+ updateClassificationRequest(message.getDateClassification(),message.getOriginalXML());
+ deleteActeNature();
+
+ Element Racine = message.getRacine();
+ Element naturesactes = Racine.getChild("NaturesActes", MessageMetier.actesNS);
+
+ List<?> natures_actes = naturesactes.getChildren();
+ Iterator<?> it = natures_actes.iterator();
+
+ while (it.hasNext()) {
+ Element nature = (Element) it.next();
+ insertActeNature(new Integer(nature.getAttributeValue("CodeNatureActe",MessageMetier.actesNS)) ,
+ nature.getAttributeValue("TypeAbrege",MessageMetier.actesNS) ,
+ nature.getAttributeValue("Libelle",MessageMetier.actesNS) );
+ }
+
+ deleteClassification();
+ Element matieres = Racine.getChild("Matieres", MessageMetier.actesNS);
+ ajoutMatieres(matieres,null,1);
+
+ connexion.commit();
+ connexion.setAutoCommit(autocommit);
+ }
+
+
+ private void ajoutMatieres(Element matiere,Integer parent, int level) throws SQLException {
+
+ List<?> les_matieres = matiere.getChildren();
+ Iterator<?> it = les_matieres.iterator();
+
+ while (it.hasNext()) {
+ Element matiereCourante = (Element) it.next();
+ int code = new Integer(matiereCourante.getAttributeValue("CodeMatiere",MessageMetier.actesNS));
+ String libelle = matiereCourante.getAttributeValue("Libelle", MessageMetier.actesNS);
+
+ int parentID = insertClassification(level,code,parent,libelle);
+ ajoutMatieres(matiereCourante,parentID,level + 1);
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+package com.adullact.tedetis.sql;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+public class EnvelopeSerialNumber extends BaseSQL {
+
+ public EnvelopeSerialNumber(Connection connexion) {
+ super(connexion);
+ }
+
+ public int getNextSerial(String siren) throws SQLException{
+
+ Authority authority = new Authority(getConnexion(),siren);
+ int authorityID = authority.getAuthorityID();
+ String sql = "SELECT serial FROM actes_envelope_serials WHERE authority_id= ?";
+ PreparedStatement ps = prepareStatement(sql);
+ ps.setInt(1, authorityID);
+ ResultSet rs = ps.executeQuery();
+ rs.next();
+ int nextSerial = rs.getInt("serial");
+
+ sql = "UPDATE actes_envelope_serials SET serial=serial+1 WHERE authority_id= ?";
+ ps = prepareStatement(sql);
+ ps.setInt(1, authorityID);
+ ps.executeUpdate();
+
+ return nextSerial;
+ }
+
+
+
+
+}
--- /dev/null
+package com.adullact.tedetis.sql;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.SocketTimeoutException;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.Arrays;
+import java.util.Vector;
+import java.util.logging.Logger;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.Archive;
+import com.adullact.tedetis.actes.EnveloppePath;
+import com.adullact.tedetis.actes.EnveloppeXML;
+import com.adullact.tedetis.actes.messages.MessageMetier;
+import com.adullact.tedetis.util.FileSender;
+
+public class EnveloppeSQL extends BaseSQL implements Envoyable {
+
+ public static final long sendWarningAfterSecond = 172800l;
+
+ private static Logger logger = Logger.getLogger("com.adullact.s2low");
+
+ private int envelopeID;
+
+ public static Vector<EnveloppeSQL> getEnveloppeFromStatus(Connection conn, int status, boolean antivirus_check) throws SQLException {
+
+ Vector<EnveloppeSQL> lesEnvelopes = new Vector<EnveloppeSQL>();
+
+ String sql = "SELECT DISTINCT envelope_id FROM actes_transactions WHERE last_status_id=? AND antivirus_check=?";
+
+ PreparedStatement ps = conn.prepareStatement(sql);
+ ps.setInt(1, status);
+ ps.setBoolean(2, antivirus_check);
+
+ ResultSet rs = ps.executeQuery();
+
+ while (rs.next()) {
+ lesEnvelopes.addElement(new EnveloppeSQL(conn,rs.getInt("envelope_id")));
+ }
+ return lesEnvelopes;
+ }
+
+ /**
+ * Récupère l'ensemble des enveloppe à envoyer, les tests et les envoie sur le FileSender
+ * @param connexion
+ * @param fileSender
+ * @param cheminEnveloppe
+ * @throws SQLException
+ * @throws TedetisException
+ * @throws IOException
+ */
+ public static void envoyerEnvelope(Connection connexion, FileSender fileSender, EnveloppePath cheminEnveloppe,FenetreEnvoie fenetreEnvoie,Horodatage horodatage) throws SQLException, TedetisException, IOException{
+ logger.entering("Enveloppe", "envoyerEnveloppe");
+ Vector<EnveloppeSQL> lesEnveloppes = new Vector<EnveloppeSQL>();
+
+ lesEnveloppes = EnveloppeSQL.getEnveloppeFromStatus(connexion,Transaction.POSTER,true);
+
+ for (EnveloppeSQL envelope : lesEnveloppes) {
+ String path = envelope.getArchivePath();
+ path = cheminEnveloppe + System.getProperty("file.separator")+ path;
+
+ logger.info("Gestion (POSTER->ATTENTE) de : " + path);
+
+ try {
+ new Archive(new File(path));
+ envelope.setStatusTransaction(Transaction.ATTENTE,"Accepte par le TdT : validation OK","");
+
+ logger.info("Accepte par le TDT : " + path);
+ } catch (Exception e) {
+ envelope.setStatusTransaction(Transaction.ERREUR,"Enveloppe invalide :" + e.getMessage(),"");
+ logger.info("Erreur sur le TDT : " + path);
+ logger.info("Cause de l'erreur : " + e.getMessage());
+ e.printStackTrace();
+ }
+ }
+
+ lesEnveloppes = EnveloppeSQL.getEnveloppeFromStatus(connexion,Transaction.ATTENTE,true);
+ for (EnveloppeSQL enveloppe : lesEnveloppes) {
+ if (! enveloppe.canSend(fenetreEnvoie)) {
+ continue;
+ }
+ String path = enveloppe.getArchivePath();
+ logger.info("Gestion (ATTENTE->TRANSMIS) de : " + path);
+
+ path = cheminEnveloppe.retrievePath(path);
+
+ fileSender.setFichier(new File(path));
+
+ try {
+ String reponse = fileSender.send();
+ enveloppe.setStatusTransaction(Transaction.TRANSMIS,"Transmis au MIOCT",reponse);
+ logger.info("Transmis au MIOCT : " + path);
+ } catch (SocketTimeoutException e){
+ logger.info("Erreur lors de l'envoi au ministère : timeout : " + path);
+ logger.info("Message : " + e.getMessage());
+ throw e;
+ //continue;
+ }
+ }
+
+ //TODO traiter les document recu ?
+ lesEnveloppes = EnveloppeSQL.getEnveloppeFromStatus(connexion,Transaction.DOCUMENT_RECU,false);
+ logger.info("Traitement des documents reçu");
+
+ for (EnveloppeSQL enveloppe : lesEnveloppes) {
+ String path = enveloppe.getArchivePath();
+ path = cheminEnveloppe + System.getProperty("file.separator")+ path;
+
+ logger.info("Gestion de (RECU): " + path);
+
+ try {
+ Archive a = new Archive(new File(path));
+
+ for (MessageMetier m : a.getMessageMetier()) {
+ MessageMetier mmReponse = m.getAR();
+ if (mmReponse != null){
+ EnvelopeSerialNumber serialNumber = new EnvelopeSerialNumber(connexion);
+
+ int serial = serialNumber.getNextSerial(mmReponse.getSiren());
+ Archive neoArchive = new Archive(a.getNomArchive().getNomFichierReponse(serial).getNomArchive(a.getNomArchive().getTrigramme()).toString());
+ neoArchive.addMessageMetier(mmReponse);
+ EnveloppeXML e = neoArchive.getEnveloppe();
+
+
+ String arrondissement = enveloppe.getArrondissement();
+ System.out.println("Arrondissement => " + arrondissement);
+
+ e.setDepartement(a.getEnveloppe().getDepartement());
+ //e.setArrondissement(a.getEnveloppe().getArrondissement());
+ e.setArrondissement(arrondissement);
+
+ e.setNature(enveloppe.getTransactions().get(0).getNatureCode());
+ e.setAdresseRetour(enveloppe.getReturnMail());
+
+ String enveloppe_to_send = e.getXML();
+
+ neoArchive.generateTGZ(new File("/tmp"));
+ File f = new File("/tmp/" + neoArchive.getNomArchive());
+ fileSender.setFichier(f);
+ //String reponse = fileSender.send();
+ fileSender.send();
+ enveloppe.setStatusTransaction(Transaction.ACQUITTEMENT_ENVOYE,"Aquittement envoye",enveloppe_to_send);
+ logger.info("Aquitter au MIOCT : " + path);
+ }
+ }
+ } catch (Exception e){
+ e.printStackTrace();
+ enveloppe.setStatusTransaction(Transaction.ERREUR,"Impossible d'envoyer l'accquitement ! ",null);
+ logger.info("Erreur sur le TDT (impossible d'envoyer l'accquitement ): " + e.getMessage());
+
+ }
+
+ }
+
+ logger.exiting("Enveloppe", "envoyerEnveloppe");
+ }
+
+ private Vector<String> getReturnMail() throws SQLException {
+ String sql = "SELECT return_mail FROM actes_envelopes WHERE actes_envelopes.id = ?";
+ PreparedStatement ps = prepareStatement(sql);
+ ps.setInt(1, envelopeID);
+ ResultSet rs = ps.executeQuery();
+ rs.next();
+ String s = rs.getString("return_mail");
+ return new Vector<String>(Arrays.asList(s.split("\\|")));
+ }
+
+ public EnveloppeSQL(Connection c,int envelopeID){
+ super(c);
+ this.envelopeID = envelopeID;
+ }
+
+ public int getID(){
+ return envelopeID;
+ }
+
+ public String getArchivePath() throws SQLException{
+ String sql = "SELECT file_path FROM actes_envelopes WHERE actes_envelopes.id = ?";
+ PreparedStatement ps = prepareStatement(sql);
+ ps.setInt(1, envelopeID);
+ ResultSet rs = ps.executeQuery();
+ rs.next();
+ return rs.getString("file_path");
+ }
+
+ public EnveloppeSQL createRelatedEnveloppe(String file_path, int file_size) throws SQLException {
+
+ int id = getNextVal("actes_envelopes_id_seq");
+
+ String sql = "INSERT INTO actes_envelopes(id,user_id,submission_date,siren,department,district," +
+ "authority_type_code,name,telephone,email,file_path,file_size,return_mail)" +
+ " SELECT ?,user_id,now(), siren,department,district,authority_type_code,name,telephone," +
+ "email,?,?,return_mail FROM actes_envelopes WHERE id= ?";
+
+ PreparedStatement ps = prepareStatement(sql);
+ ps.setInt(1, id);
+ ps.setString(2, file_path);
+ ps.setInt(3, file_size);
+ ps.setInt(4, envelopeID);
+ ps.executeUpdate();
+ return new EnveloppeSQL(getConnexion(),id);
+ }
+
+ public Vector<Transaction> getTransactions() throws SQLException{
+ Vector<Transaction> lesTransactions = new Vector<Transaction>();
+
+ String sql = "SELECT id from actes_transactions where envelope_id = ? ";
+ PreparedStatement ps = prepareStatement(sql);
+ ps.setInt(1, envelopeID);
+ ResultSet rs = ps.executeQuery();
+
+ while (rs.next()) {
+ lesTransactions.add(new Transaction(getConnexion(),rs.getInt("id")));
+ }
+
+ return lesTransactions;
+ }
+
+ public void setStatusTransaction(int status, String message, String fluxRetour) throws SQLException {
+ for (Transaction t : getTransactions()){
+ t.setToStatus(status, message, fluxRetour);
+ }
+ }
+
+ public String getNextArchiveName(){
+ return null;
+ }
+
+ public int getFileSize() throws SQLException{
+ String sql = "SELECT file_size FROM actes_envelopes WHERE id = ?";
+ PreparedStatement ps = prepareStatement(sql);
+ ps.setInt(1, envelopeID);
+ ResultSet rs = ps.executeQuery();
+ rs.next();
+ int fileSize = rs.getInt("file_size");
+ return fileSize;
+ }
+
+ public boolean canSend(FenetreEnvoie fenetreEnvoie) throws SQLException, TedetisException {
+ return fenetreEnvoie.windowAvailable(this);
+ }
+
+
+ public boolean mustSendWarning() throws SQLException {
+ String sql = "SELECT submission_date, user_id " +
+ " FROM actes_envelopes " +
+ " WHERE id = ? " +
+ " AND warning_sent IS NULL" +
+ " AND date_part('epoch', now()) - date_part('epoch', submission_date) > ? ";
+
+ PreparedStatement ps = prepareStatement(sql);
+ ps.setInt(1, envelopeID);
+ ps.setLong(2,sendWarningAfterSecond);
+
+ ResultSet rs = ps.executeQuery();
+
+ if (rs.next()){
+ return true;
+ }
+ return false;
+ }
+
+ public void setSendWarning() throws SQLException {
+ String sql = "UPDATE actes_envelopes SET warning_sent = 'O' WHERE id = ?";
+ PreparedStatement ps = prepareStatement(sql);
+ ps.setInt(1, envelopeID);
+ ps.executeUpdate();
+ }
+
+ public String getArrondissement() throws SQLException {
+ String sql ="SELECT district FROM actes_envelopes " +
+ " WHERE actes_envelopes.id=?";
+ PreparedStatement ps = prepareStatement(sql);
+ ps.setInt(1, envelopeID);
+ ResultSet rs = ps.executeQuery();
+ rs.next();
+ return rs.getString("district");
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.sql;
+
+import java.sql.SQLException;
+
+import com.adullact.tedetis.Exception.TedetisException;
+
+
+public interface Envoyable {
+
+ int getID();
+ int getFileSize() throws SQLException;
+ boolean mustSendWarning() throws SQLException;
+ void setSendWarning() throws SQLException;
+ boolean canSend(FenetreEnvoie fenetreEnvoie) throws SQLException, TedetisException;
+
+}
--- /dev/null
+package com.adullact.tedetis.sql;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.Date;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.util.CriticalMailSender;
+
+public abstract class FenetreEnvoie extends BaseSQL {
+
+ private int hoursID;
+ private int resteQuota;
+ private CriticalMailSender mailSender;
+
+ public static final int NO_QUOTA = Integer.MIN_VALUE;
+
+ abstract protected String getTableName();
+
+ public FenetreEnvoie(Connection connexion) {
+ super(connexion);
+ }
+
+ public void setMailSender(CriticalMailSender mailSender){
+ this.mailSender = mailSender;
+ }
+
+ public boolean windowAvailable(Envoyable enveloppe) throws SQLException, TedetisException {
+
+ int fileSize = enveloppe.getFileSize();
+ getResteQuota();
+
+ if (resteQuota == NO_QUOTA) {
+ return true;
+ }
+ if (fileSize < resteQuota) {
+ addConsumedTime(fileSize);
+ return true;
+ }
+
+ if (enveloppe.mustSendWarning()) {
+
+ String message = "L'enveloppe " + enveloppe.getID()
+ + " est en attente depuis plus de 48H !";
+
+ mailSender.send(message);
+
+ enveloppe.setSendWarning();
+ horodate(message);
+
+ }
+ return false;
+ }
+
+ private int getHoursId() throws SQLException{
+ if ( hoursID == 0) {
+ getInfoQuota();
+ }
+ return hoursID;
+ }
+
+ public int getResteQuota() throws SQLException{
+ if (resteQuota == 0){
+ getInfoQuota();
+ }
+ return resteQuota;
+ }
+
+ private void getInfoQuota() throws SQLException{
+ String sql = "SELECT rate_limit - consumed as reste, " + getTableName() +"_transmission_window_hours.id AS id " +
+ " FROM " + getTableName() + "_transmission_windows" +
+ " JOIN " + getTableName() + "_transmission_window_hours " +
+ " ON " + getTableName() + "_transmission_windows.id = " +
+ getTableName() + "_transmission_window_hours.transmission_window_id" +
+ " WHERE window_begin <= ? AND window_end >= ? ";
+
+ PreparedStatement ps = prepareStatement(sql);
+
+ Date date = new java.util.Date();
+ java.sql.Timestamp t = new java.sql.Timestamp(date.getTime());
+ ps.setTimestamp(1, t);
+ ps.setTimestamp(2,t);
+
+ ResultSet rs = ps.executeQuery();
+
+
+ if (rs.next()) {
+ resteQuota = rs.getInt("reste");
+ hoursID = rs.getInt("id");
+ } else {
+ resteQuota = NO_QUOTA;
+ }
+ }
+
+ public void addConsumedTime(int fileSize) throws SQLException {
+
+ String sql = "UPDATE " + getTableName() + "_transmission_window_hours" +
+ " SET consumed = consumed + ? " +
+ " WHERE id = ? ";
+
+ PreparedStatement ps = prepareStatement(sql);
+
+ ps.setInt(1,fileSize);
+ ps.setInt(2,getHoursId());
+ ps.executeUpdate();
+ getInfoQuota();
+ }
+
+ public void deleteAllWindow() throws SQLException{
+ String sql = "DELETE FROM " + getTableName() + "_transmission_window_hours";
+ PreparedStatement ps = prepareStatement(sql);
+ ps.executeUpdate();
+ }
+}
\ No newline at end of file
--- /dev/null
+package com.adullact.tedetis.sql;
+
+import java.sql.Connection;
+
+public class FenetreEnvoieActes extends FenetreEnvoie {
+
+ public FenetreEnvoieActes(Connection connexion) {
+ super(connexion);
+ }
+
+ @Override
+ protected String getTableName() {
+ return "actes";
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.sql;
+
+import java.sql.Connection;
+
+public class FenetreEnvoieHelios extends FenetreEnvoie {
+
+ public FenetreEnvoieHelios(Connection connexion) {
+ super(connexion);
+ }
+
+ @Override
+ protected String getTableName() {
+ return "helios";
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.sql;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+import com.adullact.tedetis.Exception.TedetisException;
+
+public class HeliosTransactions extends BaseSQL implements Envoyable {
+
+ public static final long sendWarningAfterSecond = 172800l;
+
+ public static final int ERREUR = -1;
+ public static final int ANNULE = 0;
+ public static final int POSTE = 1;
+ public static final int ATTENTE = 2;
+ public static final int TRANSMIS = 3;
+ public static final int ACQUITTER = 4;
+ public static final int VALIDER = 5; //non utilisé
+ public static final int REFUSER = 6;
+ public static final int EN_TRAITEMENT = 7;
+ public static final int INFORMATION_DISPONIBLE = 8;
+
+ public static ResultSet getTransactionByStatus(Connection connexion,int status)
+ throws SQLException {
+
+ String sql = "SELECT DISTINCT transaction_id,filename,sha1,xml_nomfic,siren,complete_name " +
+ " FROM helios_transactions hw,helios_transactions_workflow htw " +
+ " WHERE hw.id = htw.transaction_id " +
+ " AND ? = (SELECT htw2.status_id FROM helios_transactions_workflow AS htw2 " +
+ " WHERE htw2.transaction_id = hw.id " +
+ " ORDER BY htw2.date DESC, htw2.id DESC LIMIT 1)";
+
+ PreparedStatement ps = connexion.prepareStatement(sql);
+ ps.setInt(1, status);
+ ResultSet rs = ps.executeQuery();
+ return rs;
+ }
+
+
+
+ public static ResultSet getInfoConnexionHelios(Connection connexion) throws SQLException{
+ String sql = "SELECT helios_ftp_login, helios_ftp_password FROM authorities WHERE helios_ftp_login != ''";
+ PreparedStatement ps = connexion.prepareStatement(sql);
+ ResultSet rs = ps.executeQuery();
+ return rs;
+ }
+
+ public static HeliosTransactions getTransactionFromXmlNomFic(Connection connexion, String NomFic) throws SQLException, TedetisException {
+
+ String sql = "SELECT id FROM helios_transactions WHERE xml_nomfic = ?";
+ PreparedStatement ps = connexion.prepareStatement(sql);
+ ps.setString(1, NomFic);
+ ResultSet rs = ps.executeQuery();
+
+ if (! rs.next()){
+ throw new TedetisException("Le fichier " + NomFic + " est associé a aucune transaction");
+ }
+
+ return new HeliosTransactions(connexion,rs.getInt("id"));
+ }
+
+ private int transaction_id;
+ private ResultSet info;
+
+ public HeliosTransactions(Connection connexion,int transaction_id) throws TedetisException {
+ super(connexion);
+ this.transaction_id = transaction_id;
+ hydrate();
+ }
+
+ private void hydrate() throws TedetisException{
+ try {
+ String sql = "SELECT * FROM helios_transactions WHERE id=?";
+ PreparedStatement ps = getConnexion().prepareStatement(sql);
+ ps.setInt(1, transaction_id);
+ info = ps.executeQuery();
+ info.next();
+ } catch (SQLException e){
+ throw new TedetisException("Impossible de récuperer la transaction " + transaction_id,e);
+ }
+
+ }
+
+ public void addToHeliosTransactionWorkflow(int status,String message) throws SQLException {
+ String sql = "INSERT INTO helios_transactions_workflow (id, transaction_id, status_id, date, message) " +
+ " VALUES (nextval('helios_transactions_workflow_id_seq'),?,?,now(),? )";
+
+ PreparedStatement ps = getConnexion().prepareStatement(sql);
+ ps.setInt(1, transaction_id);
+ ps.setInt(2, status);
+ ps.setString(3, message);
+ ps.execute();
+
+ String sql2 = "UPDATE helios_transactions SET last_status_id=? WHERE id=?";
+ PreparedStatement ps2 = getConnexion().prepareStatement(sql2);
+ ps2.setInt(1, status);
+ ps2.setInt(2, transaction_id);
+ ps2.execute();
+
+
+ try {
+
+ horodatage.setVisibility("USER");
+ horodatage.setSeverity(Horodatage.INFO);
+ horodatage.setUserId(getUserID());
+ horodatage.setModule("helios");
+
+ String message_h = "Transaction "+transaction_id + " " + getStatusName(status);
+
+ horodate(message_h);
+ } catch (TedetisException e){
+ e.printStackTrace();
+ throw new SQLException(e.getMessage());
+ }
+ }
+
+ private String getStatusName(int status) {
+ switch(status){
+ case POSTE: return "en cours de traitement";
+ case ATTENTE : return "dans la file d'attente";
+ case TRANSMIS : return "transmise au serveur";
+ case ACQUITTER : return "acceptee";
+ case EN_TRAITEMENT : return "en cours de traitement";
+ case REFUSER : return "rejete";
+ case ERREUR : return "en erreur";
+ } ;
+
+ return "" + status;
+ }
+
+
+ public int getID() {
+ return transaction_id;
+ }
+
+ public void addXML_NomFic(String NomFic) throws SQLException,TedetisException {
+ String sql = "SELECT * FROM helios_transactions WHERE xml_nomfic= ?";
+ PreparedStatement ps = getConnexion().prepareStatement(sql);
+ ps.setString(1, NomFic);
+ ResultSet rs = ps.executeQuery();
+ if (rs.next()){
+ throw new TedetisException("Le nom " + NomFic + " existe déjà dans la base");
+ }
+
+ sql = "UPDATE helios_transactions SET xml_nomfic = ? WHERE id= ?";
+ ps = getConnexion().prepareStatement(sql);
+ ps.setString(1,NomFic);
+ ps.setInt(2, transaction_id);
+ ps.execute();
+ }
+
+ public void addCompleteName(String completeName) throws SQLException {
+ String sql = "UPDATE helios_transactions SET complete_name = ? WHERE id= ?";
+ PreparedStatement ps = getConnexion().prepareStatement(sql);
+ ps.setString(1,completeName);
+ ps.setInt(2, transaction_id);
+ ps.execute();
+ }
+
+ public int getFileSize() throws SQLException{
+ String sql = "SELECT file_size FROM helios_transactions WHERE id = ?";
+ PreparedStatement ps = prepareStatement(sql);
+ ps.setInt(1, transaction_id);
+ ResultSet rs = ps.executeQuery();
+ rs.next();
+ int fileSize = rs.getInt("file_size");
+ return fileSize;
+ }
+
+ public boolean canSend(FenetreEnvoie fenetreEnvoie) throws SQLException, TedetisException {
+ return fenetreEnvoie.windowAvailable(this);
+ }
+
+
+ public boolean mustSendWarning() throws SQLException {
+ String sql = "SELECT submission_date, user_id " +
+ " FROM helios_transactions " +
+ " WHERE id = ? " +
+ " AND warning_sent IS NULL" +
+ " AND date_part('epoch', now()) - date_part('epoch', submission_date) > ? ";
+
+ PreparedStatement ps = prepareStatement(sql);
+ ps.setInt(1, transaction_id);
+ ps.setLong(2,sendWarningAfterSecond);
+
+ ResultSet rs = ps.executeQuery();
+
+ if (rs.next()){
+ return true;
+ }
+ return false;
+ }
+
+ public void setSendWarning() throws SQLException {
+ String sql = "UPDATE helios_transactions SET warning_sent = 1 WHERE id = ?";
+ PreparedStatement ps = prepareStatement(sql);
+ ps.setInt(1, transaction_id);
+ ps.executeUpdate();
+ }
+
+ public ResultSet getFTPConnexionInfo() throws SQLException {
+ ResultSet rs;
+ String sql = "SELECT authorities.helios_ftp_login, authorities.helios_ftp_password, authorities.helios_ftp_dest " +
+ " FROM helios_transactions,users, authorities" +
+ " WHERE helios_transactions.user_id = users.id " +
+ " AND users.authority_id = authorities.id " +
+ " AND helios_transactions.id = ?";
+ PreparedStatement ps = prepareStatement(sql);
+ ps.setInt(1, transaction_id);
+
+ rs = ps.executeQuery();
+ rs.next();
+ return rs;
+ }
+
+
+ public String getFileName() throws SQLException {
+ return info.getString("filename");
+ }
+
+ public String getSiren() throws SQLException {
+ return info.getString("siren");
+ }
+
+ public String getSha1() throws SQLException {
+ return info.getString("sha1");
+ }
+
+ public int getUserID() throws SQLException {
+ return info.getInt("user_id");
+ }
+
+ public void addAcquitFilename(String filename) throws SQLException{
+ String sql = "UPDATE helios_transactions SET acquit_filename = ? WHERE id = ?";
+ PreparedStatement ps = prepareStatement(sql);
+ ps.setString(1, filename);
+ ps.setInt(2, transaction_id);
+ ps.executeUpdate();
+ }
+
+
+
+}
--- /dev/null
+package com.adullact.tedetis.sql;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Types;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import com.adullact.tedetis.Parapheur;
+import com.adullact.tedetis.Exception.TedetisException;
+
+public class Horodatage extends BaseSQL {
+
+ public static final int DEBUG = 0;
+ public static final int INFO = 1;
+ public static final int WARNING = 2;
+ public static final int ERROR = 3;
+ public static final int CRITICAL = 4;
+
+
+ public static final String DEFAULT_MODULE = "actes";
+ public static final int DEFAULT_SEVERITY = Horodatage.INFO;
+ public static final String DEFAULT_VISIBILITY = "SADM";
+ public static final String DEFAULT_ISSUER = "TdT";
+
+ public static final String SEPARATOR = "**||**";
+
+ private Connection connexion;
+ private Parapheur parapheur;
+
+ private String module;
+ private String issuer;
+ private int userID;
+ private String visibility;
+ private String message;
+ private int severity;
+ private int logID;
+ private Date date;
+
+ private SimpleDateFormat formateurISO;
+
+ public Horodatage(Connection c,Parapheur parapheur){
+ super(c);
+ connexion = c;
+ this.parapheur = parapheur;
+
+ setModule(DEFAULT_MODULE);
+ setIssuer("");
+ setVisibility(DEFAULT_VISIBILITY);
+ setUserId(0);
+ setIssuer(DEFAULT_ISSUER);
+ setSeverity(DEFAULT_SEVERITY);
+
+ formateurISO = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ }
+
+ public void setModule(String module){
+ this.module = module;
+ }
+
+ public void setIssuer(String issuer){
+ this.issuer = issuer;
+ }
+
+ public void setVisibility(String visibility){
+ this.visibility = visibility;
+ }
+
+ public void setUserId(int user_id) {
+ this.userID = user_id;
+ }
+
+ public void setSeverity(int severity){
+ this.severity = severity;
+ }
+
+ public int save(String message, int severity) throws TedetisException{
+ setSeverity(severity);
+ return save(message);
+ }
+
+ public int save(String message) throws TedetisException{
+
+ this.message = message;
+ System.out.println("Horodatage de " + message);
+ try {
+ PreparedStatement ps = connexion.prepareStatement("BEGIN");
+ ps.execute();
+
+ insertLog();
+ String messageToBeSigned = getMessageToBeSigned();
+ String signature = parapheur.getSignature(messageToBeSigned);
+ updateLog(signature);
+
+ ps = connexion.prepareStatement("COMMIT");
+ ps.execute();
+
+ } catch (Exception e) {
+ try {
+ PreparedStatement ps = connexion.prepareStatement("ROLLBACK");
+ ps.execute();
+ } catch (SQLException s) {};
+ throw new TedetisException(e.getMessage(),e);
+ }
+ return logID;
+ }
+
+ private void insertLog() throws SQLException{
+
+ int authority_id = 0;
+ int authority_group_id = 0;
+
+ if (userID != 0){
+ String sql = "SELECT authority_id FROM users WHERE id=?";
+ PreparedStatement ps = connexion.prepareStatement(sql);
+ ps.setInt(1, userID);
+ ResultSet rs = ps.executeQuery();
+ rs.next();
+ authority_id = rs.getInt("authority_id");
+ }
+
+ if (authority_id != 0){
+ String sql = "SELECT authority_group_id FROM authorities WHERE id=?";
+ PreparedStatement ps = connexion.prepareStatement(sql);
+ ps.setInt(1, authority_id);
+ ResultSet rs = ps.executeQuery();
+ rs.next();
+ authority_group_id = rs.getInt("authority_group_id");
+ }
+
+
+
+ int id = getNextVal("logs_id_seq");
+
+ String sql = "INSERT INTO logs (id,date, module, issuer, user_id, message, visibility, severity, authority_id,authority_group_id) VALUES (?,?,?,?,?,?,?,?,?,?)";
+ PreparedStatement ps = connexion.prepareStatement(sql);
+
+ date = new java.util.Date();
+
+ ps.setInt(1, id);
+
+ ps.setTimestamp(2, new java.sql.Timestamp(date.getTime()));
+ ps.setString(3, module);
+ ps.setString(4, issuer);
+ if (userID != 0) {
+ ps.setInt(5, userID);
+ } else {
+ ps.setNull(5, Types.INTEGER);
+ }
+ ps.setString(6, message);
+ ps.setString(7, visibility);
+ ps.setInt(8, severity);
+
+ if (authority_id != 0){
+ ps.setInt(9,authority_id);
+ } else {
+ ps.setNull(9,Types.INTEGER);
+ }
+
+ if (authority_group_id !=0 ){
+ ps.setInt(10,authority_group_id);
+ } else {
+ ps.setNull(10,Types.INTEGER);
+ }
+
+ ps.executeUpdate();
+ logID = id;
+ }
+
+ private String getMessageToBeSigned(){
+
+ String user;
+
+ if (userID == 0) {
+ user = "";
+ } else {
+ user = "" + userID;
+ }
+
+ return "" + logID +
+ Horodatage.SEPARATOR +
+ formateurISO.format(date.getTime()) +
+ Horodatage.SEPARATOR +
+ module +
+ Horodatage.SEPARATOR +
+ severity +
+ Horodatage.SEPARATOR +
+ issuer +
+ Horodatage.SEPARATOR +
+ user +
+ Horodatage.SEPARATOR +
+ visibility +
+ Horodatage.SEPARATOR +
+ message;
+ }
+
+ private void updateLog(String signature) throws SQLException{
+ String sql = "UPDATE logs SET timestamp = ? WHERE id = ?";
+ PreparedStatement ps = connexion.prepareStatement(sql);
+ ps.setString(1, signature);
+ ps.setInt(2, logID);
+ ps.executeUpdate();
+ }
+}
--- /dev/null
+package com.adullact.tedetis.sql;
+
+import java.sql.Connection;
+import java.sql.Date;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.util.Util;
+
+public class Transaction extends BaseSQL {
+
+ public static final int ERREUR = -1;
+ public static final int ANNULER = 0;
+ public static final int POSTER = 1;
+ public static final int ATTENTE = 2;
+ public static final int TRANSMIS = 3;
+ public static final int ACQUITTER = 4;
+ public static final int VALIDER = 5;
+ public static final int REFUSER = 6;
+ public static final int DOCUMENT_RECU = 7;
+ public static final int ACQUITTEMENT_ENVOYE = 8;
+ public static final int DOCUMENT_ENVOYE = 9;
+ public static final int DOCUMENT_REFUSE = 10;
+ public static final int ACQUITTEMENT_DOCUMENT_RECU = 11;
+
+
+ private Connection connexion;
+ private EnveloppeSQL envelope;
+ private int transactionID;
+
+ public static Transaction getTransaction(Connection connexion, String siren, String numeroInterne) throws SQLException, TedetisException {
+ String sql = "SELECT actes_transactions.id from actes_transactions " +
+ " JOIN actes_envelopes ON actes_transactions.envelope_id = actes_envelopes.id" +
+ " WHERE siren=? AND number=? AND type='1'";
+ PreparedStatement ps = connexion.prepareStatement(sql);
+ ps.setString(1, siren);
+ ps.setString(2, numeroInterne);
+ ResultSet rs = ps.executeQuery();
+ if (! rs.next()){
+ throw new TedetisException("Cette transaction n'existe pas siren : " + siren + " - numero : " + numeroInterne);
+ }
+ return new Transaction(connexion,rs.getInt("id"));
+ }
+
+ public static Transaction getTransactionAnnulation(Connection connexion, String siren, String numeroInterne) throws SQLException, TedetisException {
+ String sql = "SELECT actes_transactions.id from actes_transactions " +
+ " JOIN actes_envelopes ON actes_transactions.envelope_id = actes_envelopes.id" +
+ " WHERE siren=? AND number=? AND type='6'";
+ PreparedStatement ps = connexion.prepareStatement(sql);
+ ps.setString(1, siren);
+ ps.setString(2, numeroInterne);
+ ResultSet rs = ps.executeQuery();
+ if (! rs.next()){
+ throw new TedetisException("Cette transaction n'existe pas siren : " + siren + " - numero : " + numeroInterne);
+ }
+ return new Transaction(connexion,rs.getInt("id"));
+ }
+
+
+ public static Transaction getRelatedTransaction(Connection connexion, String siren, String numeroInterne, String dateReception) throws SQLException, TedetisException{
+ String sql = "SELECT actes_transactions.id from actes_transactions " +
+ " JOIN actes_envelopes ON actes_transactions.envelope_id = actes_envelopes.id" +
+ " WHERE siren=? AND number=? AND decision_date=? ORDER by submission_date DESC LIMIT 1";
+ PreparedStatement ps = connexion.prepareStatement(sql);
+ ps.setString(1, siren);
+ ps.setString(2, numeroInterne);
+ ps.setDate(3, Date.valueOf(dateReception));
+
+ ResultSet rs = ps.executeQuery();
+ if (! rs.next()){
+ throw new TedetisException("Cette transaction n'existe pas siren : " + siren + " - numero : " + numeroInterne);
+ }
+ return new Transaction(connexion,rs.getInt("id"));
+ }
+
+ public Transaction(Connection c,int transactionID){
+ super(c);
+ connexion = c;
+ this.transactionID = transactionID;
+ }
+
+ public int getID(){
+ return transactionID;
+ }
+
+ public EnveloppeSQL getEnveloppe() throws SQLException{
+ if (envelope == null){
+ String sql="SELECT envelope_id FROM actes_transactions WHERE id = ?";
+ PreparedStatement ps = connexion.prepareStatement(sql);
+ ps.setInt(1, transactionID);
+ ResultSet rs = ps.executeQuery();
+ rs.next();
+ envelope = new EnveloppeSQL(connexion, rs.getInt("envelope_id"));
+ }
+ return envelope;
+ }
+
+ public void setToStatus(int status, String message, String fluxRetour) throws SQLException {
+
+ if (message.length() > 512){
+ message = message.substring(0,511);
+ }
+
+ String sql = "INSERT INTO actes_transactions_workflow (transaction_id, status_id, date, message,flux_retour) VALUES (?,?,now(),?,?)";
+
+ PreparedStatement ps = connexion.prepareStatement(sql);
+ ps.setInt(1, transactionID);
+ ps.setInt(2, status);
+ ps.setString(3, message);
+ ps.setString(4, fluxRetour);
+
+ ps.execute();
+
+ String sql2 = "UPDATE actes_transactions SET last_status_id=? WHERE id=?";
+ PreparedStatement ps2 = connexion.prepareStatement(sql2);
+ ps2.setInt(1, status);
+ ps2.setInt(2, transactionID);
+
+ ps2.execute();
+
+ try {
+
+ horodatage.setVisibility("USER");
+ horodatage.setSeverity(Horodatage.INFO);
+ horodatage.setUserId(getUserID());
+ horodatage.setModule("actes");
+ String message_h = "L'archive : "+transactionID + " passe a l'etat " + getStatusName(status);
+
+ if (status == Transaction.ACQUITTER) {
+ message_h = "L'acte : " + transactionID + " passe en recu.";
+ }
+ if (status == Transaction.ANNULER) {
+ message_h = "L'acte : " + transactionID + " passe en annulee.";
+ }
+
+ horodate(message_h);
+ } catch (TedetisException e){
+ e.printStackTrace();
+ throw new SQLException(e.getMessage());
+ }
+ }
+
+ public void setUniqueID(String acteID) throws SQLException {
+ String sql = "UPDATE actes_transactions SET unique_id=? WHERE id=?";
+ PreparedStatement ps = connexion.prepareStatement(sql);
+ ps.setString(1, acteID);
+ ps.setInt(2, transactionID);
+ ps.executeUpdate();
+ }
+
+ public String getUniqueID() throws SQLException{
+ String sql = "SELECT unique_id from actes_transactions where id = ?";
+ PreparedStatement ps = connexion.prepareStatement(sql);
+ ps.setInt(1, transactionID);
+ ResultSet rs = ps.executeQuery();
+ rs.next();
+ return rs.getString("unique_id");
+ }
+
+ public Transaction createRelatedTransaction(int envelopeID, int type, String date) throws SQLException {
+
+ int id = getNextVal("actes_transactions_id_seq");
+
+ String sql = "INSERT INTO actes_transactions (id,envelope_id,type,related_transaction_id," +
+ " nature_code,nature_descr,title, subject, number,classification,classification_date,decision_date," +
+ " unique_id, archive_url,broadcast_emails,broadcast_send_sources, broadcasted,user_id,authority_id) " +
+ " SELECT ?,?,?,?,nature_code,nature_descr,title, subject, number,classification" +
+ ",classification_date,?,unique_id, archive_url,broadcast_emails,broadcast_send_sources, broadcasted,user_id,authority_id " +
+ " FROM actes_transactions where id = ? ";
+ PreparedStatement ps = connexion.prepareStatement(sql);
+
+ ps.setInt(1, id);
+ ps.setInt(2, envelopeID);
+ ps.setInt(3, type);
+ ps.setInt(4, transactionID);
+ ps.setDate(5, Date.valueOf(date));
+ ps.setInt(6, transactionID);
+ ps.executeUpdate();
+
+ return new Transaction(connexion,id);
+ }
+
+ public void addIncludedFile(String filename, long filesize) throws SQLException{
+ String sql = "INSERT into actes_included_files(envelope_id," +
+ "transaction_id,filename," +
+ " filetype,filesize,signature,posted_filename) VALUES (?,?,?,?,?,?,?)";
+ PreparedStatement ps = connexion.prepareStatement(sql);
+
+ ps.setInt(1, getEnveloppe().getID());
+ ps.setInt(2, transactionID);
+ ps.setString(3, filename);
+ ps.setString(4, Util.getContentType(filename));
+ ps.setLong(5, filesize);
+ ps.setString(6, null);
+ ps.setString(7, filename);
+
+ ps.executeUpdate();
+ }
+
+ public String getUserEmail() throws SQLException {
+ String sql = "SELECT users.email " +
+ "FROM actes_transactions " +
+ "JOIN actes_envelopes ON actes_transactions.envelope_id = actes_envelopes.id " +
+ "JOIN users ON actes_envelopes.user_id=users.id " +
+ "WHERE actes_transactions.id = ?";
+ PreparedStatement ps = connexion.prepareStatement(sql);
+ ps.setInt(1, transactionID);
+ ResultSet rs = ps.executeQuery();
+ rs.next();
+ return rs.getString("email");
+ }
+
+ public int getUserID() throws SQLException{
+ String sql = "SELECT users.id FROM actes_transactions " +
+ "JOIN actes_envelopes ON actes_transactions.envelope_id = actes_envelopes.id " +
+ "JOIN users ON actes_envelopes.user_id=users.id " +
+ "WHERE actes_transactions.id = ?";
+ PreparedStatement ps = prepareStatement(sql);
+ ps.setInt(1, transactionID);
+ ResultSet rs = ps.executeQuery();
+ rs.next();
+ return rs.getInt("id");
+
+ }
+
+ public String getStatusName(int status_id) throws SQLException {
+
+ switch (status_id){
+ case Transaction.ATTENTE: return "en attente";
+ case Transaction.TRANSMIS: return "transmis";
+ case Transaction.ACQUITTER: return "recu";
+ }
+
+ String sql = "SELECT name FROM actes_status " +
+ " WHERE id = ?";
+ PreparedStatement ps = prepareStatement(sql);
+ ps.setInt(1, status_id);
+ ResultSet rs = ps.executeQuery();
+ rs.next();
+ return rs.getString("name");
+ }
+
+ public String getNatureCode() throws SQLException {
+ String sql = "SELECT nature_code from actes_transactions where id = ?";
+ PreparedStatement ps = connexion.prepareStatement(sql);
+ ps.setInt(1, transactionID);
+ ResultSet rs = ps.executeQuery();
+ rs.next();
+ return String.format("%02d", Integer.parseInt(rs.getString("nature_code")));
+ }
+
+ public String getNumberActe() throws SQLException {
+ String sql = "SELECT number from actes_transactions where id = ?";
+ PreparedStatement ps = connexion.prepareStatement(sql);
+ ps.setInt(1, transactionID);
+ ResultSet rs = ps.executeQuery();
+ rs.next();
+ return rs.getString("number");
+ }
+}
\ No newline at end of file
--- /dev/null
+package com.adullact.tedetis.test;
+
+import java.io.FileInputStream;
+import java.sql.Connection;
+
+import org.dbunit.DBTestCase;
+import org.dbunit.database.DatabaseConfig;
+import org.dbunit.database.DatabaseConnection;
+import org.dbunit.database.IDatabaseConnection;
+import org.dbunit.dataset.IDataSet;
+import org.dbunit.dataset.xml.FlatXmlDataSet;
+
+import com.adullact.tedetis.ConfigurationEnvironnement;
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.EnveloppePath;
+
+abstract public class ActesDBTest extends DBTestCase {
+
+ protected Connection jdbcConnection;
+
+ private EnveloppePath tedetisUploadPath;
+
+ public ActesDBTest(String name) throws TedetisException {
+ super( name );
+ ConfigurationEnvironnement c;
+ try {
+ c = new ConfigurationEnvironnement("config/");
+ jdbcConnection = c.getJdbcConnection();
+ } catch (Exception a){
+ throw new TedetisException("pas de fichier de conf",a);
+ }
+
+
+ tedetisUploadPath = c.getTedetisUploadPath();
+
+ }
+
+ @Override
+ protected IDatabaseConnection getConnection() throws Exception {
+ DatabaseConnection dbConn = new DatabaseConnection(jdbcConnection);
+ DatabaseConfig config = dbConn.getConfig();
+ config.setFeature("http://www.dbunit.org/features/caseSensitiveTableNames", false);
+ config.setFeature("http://www.dbunit.org/features/qualifiedTableNames", true);
+ return dbConn;
+ }
+
+ @Override
+ protected IDataSet getDataSet() throws Exception {
+ return new FlatXmlDataSet(new FileInputStream("fixtures/dataset/base_tedetis.xml"));
+ }
+
+ public EnveloppePath getTedetisUploadPath(){
+ return tedetisUploadPath;
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.test;
+
+import java.io.File;
+import java.util.Vector;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.ActesEnveloppeReceiver;
+import com.adullact.tedetis.actes.EnveloppePath;
+import com.adullact.tedetis.actes.NotificationActes;
+
+public class ActesEnveloppeReceiverTest extends ActesDBTest {
+
+ public ActesEnveloppeReceiverTest(String name)
+ throws TedetisException {
+ super(name);
+ }
+
+ Vector<File> lesFichiers;
+
+ public void setUp(){
+ lesFichiers = new Vector<File>();
+ lesFichiers.add(new File("fixtures/enveloppe/defereTA/TACT--SPREF0011-123456789-20090115-1/TACT--SPREF0011-123456789-20090115-1.xml"));
+ lesFichiers.add(new File("fixtures/enveloppe/defereTA/TACT--SPREF0011-123456789-20090115-1/001-123456789-20090107-8789789-AU-5-1_0.xml"));
+ lesFichiers.add(new File("fixtures/enveloppe/defereTA/TACT--SPREF0011-123456789-20090115-1/001-123456789-20090107-8789789-AU-5-1_1.pdf"));
+ }
+
+ public void testReceive() throws Exception {
+ EnveloppePath cheminEnveloppe = new EnveloppePath("/tmp");
+ ActesEnveloppeReceiver receiver = new ActesEnveloppeReceiver("abc",cheminEnveloppe);
+ receiver.setConnexion(getConnection().getConnection());
+ receiver.setNotification(new NotificationActes(null) { public void send(){}});
+ receiver.receive(lesFichiers);
+ }
+}
--- /dev/null
+package com.adullact.tedetis.test;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+public class AllTests {
+
+ public static Test suite() {
+
+ TestSuite suite = new TestSuite("Test for com.adullact.s2low.test");
+ //$JUnit-BEGIN$
+ suite.addTestSuite(ParapheurTest.class);
+ suite.addTestSuite(FenetreEnvoieActesTest.class);
+ suite.addTestSuite(MessageMetierSQLTest.class);
+ suite.addTestSuite(MessageMetierARDemandePCTest.class);
+ suite.addTestSuite(ArchiveTest.class);
+ suite.addTestSuite(ValidationTest.class);
+ suite.addTestSuite(ClassificationTest.class);
+ suite.addTestSuite(EnveloppeSQLTest.class);
+ suite.addTestSuite(MessageMetierReponseClassificationSansChangementTest.class);
+ suite.addTestSuite(TransactionTest.class);
+ suite.addTestSuite(MessageMetierTest.class);
+ suite.addTestSuite(MessageMetierARActeTest.class);
+ suite.addTestSuite(MessageMetierAnomalisActeTest.class);
+ suite.addTestSuite(MessageMetierDefereTATest.class);
+ suite.addTestSuite(FileSenderTest.class);
+ suite.addTestSuite(MessageMetierPCTest.class);
+ suite.addTestSuite(MailTest.class);
+ suite.addTestSuite(EnveloppeXMLTest.class);
+ suite.addTestSuite(MessageMetierDemandeClassificationTest.class);
+ suite.addTestSuite(UtilRecursifDeleteTest.class);
+ suite.addTestSuite(MessageMetierARPCTest.class);
+ suite.addTestSuite(MessageMetierLOTest.class);
+ suite.addTestSuite(MessageMetierFactoryTest.class);
+ suite.addTestSuite(NomFichierXMLTest.class);
+ suite.addTestSuite(MessageMetierARLOTest.class);
+ suite.addTestSuite(TarBallTest.class);
+ suite.addTestSuite(MessageMetierDemandePCTest.class);
+ suite.addTestSuite(CodeMessageTest.class);
+ suite.addTestSuite(MessageMetierRetourClassificationTest.class);
+ suite.addTestSuite(EnveloppeGenerationTest.class);
+ suite.addTestSuite(MessageMetierReponseCourrierSimpleTest.class);
+ suite.addTestSuite(MessageMetierReponseLOTest.class);
+ suite.addTestSuite(MessageMetierCourrierSimpleTest.class);
+ suite.addTestSuite(EnveloppePathTest.class);
+ suite.addTestSuite(UtilTest.class);
+ suite.addTestSuite(ActesEnveloppeReceiverTest.class);
+ suite.addTestSuite(ClientFTPTest.class);
+ suite.addTestSuite(HeliosTransactionsTest.class);
+ suite.addTestSuite(FichierHeliosTest.class);
+ suite.addTestSuite(AuthorityTest.class);
+
+ //$JUnit-END$
+ return suite;
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.test;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.Vector;
+
+import javax.mail.MessagingException;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.Archive;
+import com.adullact.tedetis.actes.CodeMessage;
+import com.adullact.tedetis.actes.messages.MessageMetier;
+import com.adullact.tedetis.actes.messages.MessageMetierActe;
+
+public class ArchiveTest extends TestCase {
+
+ public void testMauvaisNom(){
+ try {
+ new Archive("aaa");
+ fail();
+ } catch (TedetisException e) {}
+ }
+
+ public void testArchive() throws TedetisException, FileNotFoundException {
+ Archive a = new Archive(new File("fixtures/archive/adl-TACT--999888777--20070411-1.tar.gz"));
+
+ Assert.assertNotNull(a.getEnveloppe());
+ Assert.assertEquals(a.getEnveloppe().getSiren(),"999888777");
+
+ Assert.assertEquals(a.getMessageFiles().size(), 3);
+ Assert.assertEquals(a.getMessageMetier().size(), 1);
+
+ MessageMetier m = a.getMessageMetier().get(0);
+ Assert.assertNotNull(m);
+ Assert.assertEquals(m.getCodeMessage(),CodeMessage.ACTE_CODE);
+ Assert.assertNotNull(a.getEnveloppe().getAdressesRetour());
+
+
+ }
+
+ public void testOK() throws TedetisException, IOException {
+ Archive a = new Archive("adl-TACT--999888777--20070410-1.tar.gz");
+
+ a.getEnveloppe().setDepartement("069");
+ a.getEnveloppe().setArrondissement("1");
+ a.getEnveloppe().setNature("11");
+ a.getEnveloppe().addAdresseRetour("epommate@gmail.com");
+
+ MessageMetierActe m = new MessageMetierActe("069-999888777-20070411-PK_20070411_1-AR-1-1_0.xml");
+ a.addMessageMetier(m);
+
+ String nom = a.addMessageFiles(new File("fixtures/test.pdf"), m);
+ Assert.assertEquals(nom, "069-999888777-20070411-PK_20070411_1-AR-1-1_1.pdf");
+ String nom2 = a.addMessageFiles(new File("fixtures/test.pdf"), m);
+
+ m.setDocument(nom);
+ m.addAnnexe(nom2);
+ m.setCodeMatiere1("12");
+ m.setCodeMatiere2("13");
+ m.setObjet("Permis de construire pour M. Tartempion");
+ m.setClassificationDateVersion("2008-12-12");
+
+ a.generateTGZ(new File("/tmp/"));
+
+ new Archive(new File ("/tmp/adl-TACT--999888777--20070410-1.tar.gz"));
+ }
+
+ public void testGetAMessageMetier() throws FileNotFoundException, TedetisException {
+ Archive a = new Archive(new File("fixtures/archive/adl-TACT--999888777--20070411-1.tar.gz"));
+ MessageMetier m = a.getAMessageMetier("069-999888777-20070411-PK_20070411_1-AR-1-1_0.xml");
+ Assert.assertNotNull(m);
+ Assert.assertEquals(m.getName(), "069-999888777-20070411-PK_20070411_1-AR-1-1_0.xml");
+ }
+
+ public void testReponse() throws TedetisException, IOException {
+ Archive a = new Archive("adl-TACT--999888777--20070410-1.tar.gz");
+ Archive b = new Archive(a,42);
+ Assert.assertNotNull(b.getEnveloppe());
+ Assert.assertEquals(b.getEnveloppe().getSiren(),"999888777");
+ Assert.assertEquals(b.getNomArchive().getTrigramme(),"adl");
+ }
+
+ public void testSendMail() throws TedetisException, IOException, MessagingException {
+ Archive a = new Archive("adl-TACT--999888777--20070410-1.tar.gz");
+
+ a.getEnveloppe().setDepartement("069");
+ a.getEnveloppe().setArrondissement("1");
+ a.getEnveloppe().setNature("11");
+ a.getEnveloppe().addAdresseRetour("epommate@gmail.com");
+
+ MessageMetierActe m = new MessageMetierActe("069-999888777-20070411-PK_20070411_1-AR-1-1_0.xml");
+ a.addMessageMetier(m);
+
+ String nom = a.addMessageFiles(new File("fixtures/test.pdf"), m);
+ Assert.assertEquals(nom, "069-999888777-20070411-PK_20070411_1-AR-1-1_1.pdf");
+ String nom2 = a.addMessageFiles(new File("fixtures/test.pdf"), m);
+
+ m.setDocument(nom);
+ m.addAnnexe(nom2);
+ m.setCodeMatiere1("12");
+ m.setCodeMatiere2("13");
+ m.setObjet("Permis de construire pour M. Tartempion");
+ m.setClassificationDateVersion("2008-12-12");
+ Vector<String> destinataires = new Vector<String>();
+
+ destinataires.add("eric@babette");
+ a.sendMail(destinataires);
+ }
+
+ public void testCreationArchive() throws Exception {
+ Vector<File> lesFichiers = new Vector<File>();
+ lesFichiers.add(new File("fixtures/enveloppe/ARacte/TACT--999888777--20070411-1.xml"));
+ lesFichiers.add(new File("fixtures/enveloppe/ARacte/069-999888777-20070411-PK_20070411_1-AR-1-2_0.xml"));
+ Archive archive = new Archive(lesFichiers,"abc");
+ Assert.assertEquals("abc-TACT--999888777--20070411-1.tar.gz", archive.toString());
+ }
+
+ public void testLectureArchive() throws Exception {
+ Archive a = new Archive(new File("fixtures/archive/abc-TACT--123456789--20090410-7.tar.gz"));
+
+ Assert.assertNotNull(a.getEnveloppe());
+ Assert.assertEquals(a.getEnveloppe().getSiren(),"123456789");
+
+ Assert.assertEquals(a.getNomArchive().getTrigramme(),"abc");
+ }
+
+
+}
\ No newline at end of file
--- /dev/null
+package com.adullact.tedetis.test;
+
+import java.io.File;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.Archive;
+import com.adullact.tedetis.actes.EnveloppePath;
+
+public class ArchiveUpdateDBTest extends ActesDBTest {
+
+
+ String archive72 = "fixtures/archive/adl-TACT--SPREF0011-123456789-20090122-72.tar.gz";
+ String cheminEnveloppe = "/tdt-workspace/actes/uploads/";
+
+
+ public ArchiveUpdateDBTest(String name) throws TedetisException {
+ super(name);
+ }
+
+ public void testArchive72() throws Exception{
+ Archive a = new Archive(new File(archive72));
+ a.updateDatabase(jdbcConnection, new EnveloppePath(cheminEnveloppe));
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.test;
+
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+import junit.framework.Assert;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.sql.Authority;
+
+public class AuthorityTest extends ActesDBTest {
+
+ public AuthorityTest(String name) throws TedetisException {
+ super(name);
+ }
+
+ public void testGetAuthorityID() throws SQLException{
+ Authority authority = new Authority(jdbcConnection,"123456789");
+ Assert.assertEquals(99999,authority.getAuthorityID());
+ }
+
+ public void testgetHeliosConnexionInfo() throws SQLException {
+ Authority authority = new Authority(jdbcConnection,"123456789");
+ ResultSet rs = authority.getHeliosConnexionInfo();
+ Assert.assertEquals("eric", rs.getString("helios_ftp_login"));
+ Assert.assertEquals("winfield", rs.getString("helios_ftp_password"));
+ Assert.assertEquals("testhelios", rs.getString("helios_ftp_dest"));
+
+ }
+
+ public void testtraitementPESRetour() throws SQLException {
+ Authority authority = new Authority(jdbcConnection,"123456789");
+ authority.addToHeliosRetour("toto.txt");
+ }
+
+
+}
--- /dev/null
+package com.adullact.tedetis.test;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+import junit.framework.Assert;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.messages.MessageMetierRetourClassification;
+import com.adullact.tedetis.sql.Classification;
+
+public class ClassificationTest extends ActesDBTest {
+
+ private Classification classification;
+
+ public ClassificationTest(String name) throws TedetisException {
+ super(name);
+ }
+
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+ classification = new Classification(jdbcConnection,"123456789");
+ }
+
+ public void testUpdateClassificationRequest() throws SQLException{
+ classification.updateClassificationRequest("2008-12-31", "OK");
+ ResultSet rs = classification.selectClassificationRequest();
+ Assert.assertTrue(rs.next());
+ Assert.assertEquals("OK",rs.getString("xml_data"));
+ }
+
+ public void testDeleteActeNature() throws SQLException{
+ classification.deleteActeNature();
+ ResultSet rs = classification.selectActeNature();
+ Assert.assertFalse(rs.next());
+ }
+
+ public void testInsertActeNature() throws SQLException {
+ classification.deleteActeNature();
+ classification.insertActeNature(1, "TT", "Code de test");
+ ResultSet rs = classification.selectActeNature();
+ Assert.assertTrue(rs.next());
+ Assert.assertEquals(1, rs.getInt("id"));
+ Assert.assertEquals("TT", rs.getString("short_descr"));
+ Assert.assertEquals("Code de test", rs.getString("descr"));
+ Assert.assertFalse(rs.next());
+ }
+
+ public void testCRUDCassification() throws SQLException {
+ classification.deleteClassification();
+ ResultSet rs = classification.selectClassification();
+ Assert.assertFalse(rs.next());
+ int p = classification.insertClassification(1, 123, null, "une matiere de test");
+ classification.insertClassification(2, 124, p, "une matiere de test fils");
+ rs = classification.selectClassification();
+ Assert.assertTrue(rs.next());
+ Assert.assertEquals(1, rs.getInt("level"));
+ Assert.assertEquals(123, rs.getInt("code"));
+ Assert.assertEquals(0, rs.getInt("parent_id"));
+ Assert.assertTrue(rs.wasNull());
+ Assert.assertEquals("une matiere de test", rs.getString("description"));
+ Assert.assertTrue(rs.next());
+ Assert.assertEquals(2, rs.getInt("level"));
+ Assert.assertEquals(124, rs.getInt("code"));
+ Assert.assertEquals(p, rs.getInt("parent_id"));
+ Assert.assertEquals("une matiere de test fils", rs.getString("description"));
+ Assert.assertFalse(rs.next());
+ }
+
+ public void testDoClassification() throws SQLException, FileNotFoundException, TedetisException {
+ MessageMetierRetourClassification m = new MessageMetierRetourClassification("980-454545011----7-2_53.xml",
+ new FileInputStream("fixtures/enveloppe/demande_classification/980-454545011----7-2_53.xml"));
+ classification.doClassification(m);
+ ResultSet rs = classification.selectClassification();
+ Assert.assertTrue(rs.next());
+ Assert.assertEquals(1, rs.getInt("level"));
+ Assert.assertEquals(1, rs.getInt("code"));
+ Assert.assertEquals(0, rs.getInt("parent_id"));
+ Assert.assertTrue(rs.wasNull());
+ Assert.assertEquals("CommandePublique", rs.getString("description"));
+ int i = 1;
+ while (rs.next()){ i++; }
+ Assert.assertEquals(16, i);
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.test;
+
+import java.io.File;
+
+import junit.framework.TestCase;
+
+import com.adullact.tedetis.ConfigurationEnvironnement;
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.util.ClientFTP;
+
+//FIXME les tests ne sont pas indépendant de la plateforme et nécessite un serveur FTP défini dans la configuration
+
+public class ClientFTPTest extends TestCase {
+
+ private ClientFTP clientFTP;
+
+ public void setUp(){
+ ConfigurationEnvironnement c;
+ try {
+ c = new ConfigurationEnvironnement("config/");
+ clientFTP = c.getClientFTP();
+ } catch (TedetisException e) {
+ e.printStackTrace();
+ }
+ }
+
+ public void testSend() throws Exception {
+ clientFTP.sendFile(new File("fixtures/f1.txt"), "/tmp");
+ }
+
+ //Les commandes n'existe pas sur un serveur FTP classique ...
+ //Le test échoue donc...
+ public void testCommand() throws Exception {
+ clientFTP.setDemoMode();
+ clientFTP.addFTPCommande("quote site P_DEST VHPCE21");
+ clientFTP.addFTPCommande("quote site P_APPLI GHELPES2");
+ clientFTP.addFTPCommande("quote site P_MSG PES#710#044090#09");
+ clientFTP.sendFile(new File("fixtures/f1.txt"), "/tmp");
+ }
+
+ public void testRetrieve() throws TedetisException {
+ clientFTP.getFichier("/tmp/123456789/8789789/","fixtures/ftp_test/");
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.test;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import com.adullact.tedetis.actes.CodeMessage;
+
+public class CodeMessageTest extends TestCase {
+
+ public void testCodeMessage(){
+ Assert.assertEquals(CodeMessage.get("1-1"), "Acte");
+ Assert.assertEquals(CodeMessage.get("1-2"), "ARActe");
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.test;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import org.apache.tools.ant.filters.StringInputStream;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.EnveloppeXML;
+import com.adullact.tedetis.actes.NomFichierXML;
+
+public class EnveloppeGenerationTest extends TestCase {
+
+ public void testGenerationEtatVersCollectivite() throws TedetisException{
+ EnveloppeXML e = new EnveloppeXML("EACT--SPREF9801-454545011-20080710-4.xml");
+ Assert.assertEquals(e.getArrondissement(),"1");
+ Assert.assertEquals(e.getDepartement(),"980");
+ Assert.assertEquals(e.getIdTypeSphereEtat(),"SPREF");
+ Assert.assertEquals(e.getSens(),NomFichierXML.PREFECTURE_VERS_COLLECTIVITE);
+ Assert.assertEquals(e.getSiren(),"454545011");
+ }
+
+ public void testGenerationValidation() throws TedetisException{
+ EnveloppeXML e = new EnveloppeXML("EACT--SPREF9801-454545011-20080710-4.xml");
+ e.addFichierMetier("980-454545011-20080507-BEBE13-AI-5-1_12.xml");
+ String s = e.getXML();
+ new EnveloppeXML("EACT--SPREF9801-454545011-20080710-4.xml",new StringInputStream(s));
+ }
+
+ public void testGenerationCollectiviteVersEtat() throws TedetisException{
+ EnveloppeXML e = new EnveloppeXML("EACT--454545011--20080710-4.xml");
+ Assert.assertEquals(e.getSens(),NomFichierXML.COLLECTIVITE_VERS_PREFECTURE);
+ Assert.assertEquals(e.getSiren(),"454545011");
+ }
+
+ public void testGenerationValidationCollectiviteVersEtat() throws TedetisException{
+ EnveloppeXML e = new EnveloppeXML("EACT--454545011--20080710-4.xml");
+ e.setDepartement("001");
+ e.setArrondissement("1");
+ e.setNature("11");
+ e.addFichierMetier("980-454545011-20080507-BEBE13-AI-1-1_12.xml");
+ e.addAdresseRetour("epommate@gmail.com");
+ String s = e.getXML();
+ //System.out.println(s);
+ new EnveloppeXML("EACT--454545011--20080710-4.xml",new StringInputStream(s));
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.test;
+
+import java.io.File;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.Archive;
+import com.adullact.tedetis.actes.EnveloppePath;
+import com.adullact.tedetis.util.Util;
+
+public class EnveloppePathTest extends TestCase {
+
+ Archive archive;
+ EnveloppePath enveloppePath;
+ String tmpPath;
+ String archivePath ;
+
+ public EnveloppePathTest() throws Exception{
+ tmpPath = Util.concatenateRepository(System.getProperty("java.io.tmpdir"),"EnveloppePathTest");
+ archivePath = Util.concatenateRepository(tmpPath, "999888777","PK_20070411_1","adl-TACT--999888777--20070411-1.tar.gz");
+ }
+
+ @Override
+ public void setUp(){
+ try {
+ archive = new Archive(new File("fixtures/archive/adl-TACT--999888777--20070411-1.tar.gz"));
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ fail();
+ }
+ enveloppePath = new EnveloppePath(tmpPath);
+ File tmpFile = new File(tmpPath);
+ tmpFile.mkdir();
+ }
+
+ public void testSaveArchive() throws TedetisException{
+ String result = enveloppePath.saveArchive(archive);
+ Assert.assertEquals(Util.concatenateRepository("999888777","PK_20070411_1","adl-TACT--999888777--20070411-1.tar.gz"),result);
+ File tmpFile = new File(archivePath);
+ Assert.assertTrue(tmpFile.exists());
+ }
+
+ public void testSaveManyMessageMetier(){
+ fail();
+ }
+
+ public void testRetrieve() throws TedetisException{
+ String path = enveloppePath.saveArchive(archive);
+ Archive a = enveloppePath.retrieve(path);
+ Assert.assertEquals(archive.toString(), a.toString());
+ }
+
+ public void testRetrievePath() throws TedetisException {
+ String path = enveloppePath.saveArchive(archive);
+ String result = enveloppePath.retrievePath(path);
+ Assert.assertEquals(archivePath,result);
+ }
+
+ public void testRetrieveNotFound(){
+ try {
+ enveloppePath.retrieve(tmpPath);
+ fail();
+ } catch (Exception a){}
+ }
+
+ @Override
+ public void tearDown(){
+ Util.recursifDelete(new File(tmpPath));
+ }
+}
--- /dev/null
+package com.adullact.tedetis.test;
+
+import java.io.IOException;
+import java.sql.SQLException;
+import java.util.Vector;
+
+import junit.framework.Assert;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.EnveloppePath;
+import com.adullact.tedetis.sql.EnveloppeSQL;
+import com.adullact.tedetis.sql.FenetreEnvoie;
+import com.adullact.tedetis.sql.Transaction;
+import com.adullact.tedetis.test.mock.FenetreEnvoieMock;
+import com.adullact.tedetis.test.mock.HorodatageMock;
+import com.adullact.tedetis.util.FileSender;
+
+public class EnveloppeSQLTest extends ActesDBTest {
+
+ private EnveloppeSQL envelope;
+ private FenetreEnvoie fenetreEnvoieMock;
+
+ private EnveloppePath cheminEnvelope;
+
+ public EnveloppeSQLTest(String name) throws TedetisException {
+ super( name );
+ fenetreEnvoieMock = new FenetreEnvoieMock();
+ cheminEnvelope = new EnveloppePath(System.getProperty("java.io.tmpdir"));
+ }
+
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+ envelope = new EnveloppeSQL(jdbcConnection,99999);
+ }
+
+ public void testGetArchivePath() throws SQLException{
+ String path = envelope.getArchivePath();
+ Assert.assertEquals("123456789/adl-TACT--123456789--20090113-1.tar.gz", path);
+ }
+
+ public void testCreateRelatedEnveloppe() throws SQLException {
+ EnveloppeSQL e2 = envelope.createRelatedEnveloppe("test", 1000);
+ Assert.assertEquals("test",e2.getArchivePath());
+ }
+
+ public void testGetTransactionIDFromEnveloppeID() throws SQLException {
+ Vector<Transaction> v = envelope.getTransactions();
+ Assert.assertEquals(1,v.size());
+ Assert.assertEquals(99999,v.get(0).getID());
+ }
+
+ public void testGetEnveloppeFromStatus() throws SQLException{
+ Vector<EnveloppeSQL> v = EnveloppeSQL.getEnveloppeFromStatus(jdbcConnection,Transaction.POSTER,true);
+ Assert.assertEquals(2,v.size());
+ }
+
+
+ //TODO test pas bon => il ne prend pas les documents dans fixtures ...
+ public void testEnvoyerEnvelope() throws SQLException, TedetisException, IOException {
+ FileSender fsMock = new FileSender(null) {
+ public String send(){return "ok";}
+ };
+ Vector<EnveloppeSQL> v ;
+
+ v = EnveloppeSQL.getEnveloppeFromStatus(jdbcConnection,Transaction.POSTER,true);
+ int nb_poster = v.size();
+
+ EnveloppeSQL.envoyerEnvelope(jdbcConnection,fsMock,cheminEnvelope,fenetreEnvoieMock,new HorodatageMock(null, null));
+
+ v = EnveloppeSQL.getEnveloppeFromStatus(jdbcConnection,Transaction.POSTER,true);
+ Assert.assertEquals(0,v.size());
+
+ v = EnveloppeSQL.getEnveloppeFromStatus(jdbcConnection,Transaction.TRANSMIS,true);
+ Assert.assertEquals(nb_poster,v.size());
+ }
+
+ public void testTailleFenetre() throws SQLException{
+ Assert.assertEquals(665,envelope.getFileSize());
+ }
+
+ public void testMustSendWarning() throws SQLException{
+ Assert.assertTrue(envelope.mustSendWarning());
+ }
+
+ public void testSetSendWarning() throws SQLException {
+ envelope.setSendWarning();
+ Assert.assertFalse(envelope.mustSendWarning());
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.test;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.util.List;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.EnveloppeXML;
+
+public class EnveloppeXMLTest extends TestCase {
+
+ public static final String cheminEnveloppeOK = "fixtures/enveloppe/courrier_simple/courrier_2.1/EACT--SPREF9801-454545011-20080710-4.xml";
+
+ private EnveloppeXML enveloppeOK;
+
+ public void setUp() throws TedetisException,FileNotFoundException {
+ enveloppeOK = new EnveloppeXML("EACT--SPREF9801-454545011-20080710-4.xml", new FileInputStream(cheminEnveloppeOK));
+ }
+
+
+ public void testEnveloppeSiren() {
+ Assert.assertEquals(enveloppeOK.getSiren(), "454545011");
+ }
+
+ public void testEnveloppeDepartement() throws TedetisException {
+ Assert.assertEquals(enveloppeOK.getDepartement(), "980");
+ }
+
+ public void testEnveloppeArrondissement() throws TedetisException {
+ Assert.assertEquals(enveloppeOK.getArrondissement(), "1");
+ }
+
+ public void testEnveloppeFichier() throws TedetisException, FileNotFoundException {
+ EnveloppeXML e = new EnveloppeXML("EACT--SPREF9801-454545011-20080710-4.xml", new FileInputStream(cheminEnveloppeOK));
+ List<String> l = e.getFichierMetier();
+ Assert.assertEquals(l.size(), 1);
+ Assert.assertEquals(l.get(0),"980-454545011-20080710-BEBE1-AI-1-2_5.xml");
+ }
+
+ public void testEnveloppeNom() throws TedetisException {
+ new EnveloppeXML("EACT--SPREF9801-454545011-20080710-4.xml");
+ }
+
+ public void testEnveloppeMail() throws TedetisException, FileNotFoundException {
+ EnveloppeXML e = new EnveloppeXML("TACT--999888777--20070411-1.xml",new FileInputStream("fixtures/enveloppe/acte/TACT--999888777--20070411-1.xml"));
+ Assert.assertNotNull(e);
+ Assert.assertNotNull(e.getAdressesRetour());
+ Assert.assertEquals(e.getAdressesRetour().size(),2);
+ Assert.assertEquals(e.getAdressesRetour().get(0),"eric@babette.com");
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.test;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+
+import junit.framework.Assert;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.sql.EnveloppeSQL;
+import com.adullact.tedetis.sql.FenetreEnvoie;
+import com.adullact.tedetis.sql.FenetreEnvoieActes;
+import com.adullact.tedetis.test.mock.HorodatageMock;
+import com.adullact.tedetis.util.CriticalMailSender;
+
+public class FenetreEnvoieActesTest extends ActesDBTest {
+
+ private FenetreEnvoie fenetre;
+
+ public FenetreEnvoieActesTest(String name) throws TedetisException {
+ super(name);
+ // TODO Auto-generated constructor stub
+ }
+
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+ fenetre = new FenetreEnvoieActes(jdbcConnection);
+ fenetre.setMailSender(new CriticalMailSenderMock());
+ fenetre.setHorodatage(new HorodatageMock(null,null));
+ }
+
+ public void testWindowAvailable() throws Exception{
+ EnveloppeSQL e = new EnveloppeMock(600);
+ Assert.assertTrue(fenetre.windowAvailable(e));
+ }
+
+ public void testGetResteQuota() throws Exception {
+ Assert.assertEquals(1000,fenetre.getResteQuota());
+ }
+
+ public void testAddConsumedTime() throws Exception {
+ fenetre.addConsumedTime(600);
+ Assert.assertEquals(400,fenetre.getResteQuota());
+ }
+
+ public void testTooBigEnvelope() throws Exception {
+ EnveloppeSQL e = new EnveloppeMock(6000);
+ Assert.assertFalse(fenetre.windowAvailable(e));
+ }
+
+ public void testWithoutWindow() throws SQLException, TedetisException{
+ fenetre.deleteAllWindow();
+ Assert.assertEquals(FenetreEnvoie.NO_QUOTA,fenetre.getResteQuota());
+ fenetre.addConsumedTime(60000);
+ Assert.assertEquals(FenetreEnvoie.NO_QUOTA,fenetre.getResteQuota());
+ Assert.assertTrue(fenetre.windowAvailable(new EnveloppeMock(60000)));
+ }
+
+}
+
+class EnveloppeMock extends EnveloppeSQL{
+
+ int fileSize;
+ public EnveloppeMock(int fileSize){
+ this(null,0);
+ this.fileSize = fileSize;
+ }
+
+ public EnveloppeMock(Connection c, int envelopeID) {
+ super(c, envelopeID);
+ }
+
+ @Override
+ public int getID(){
+ return 0;
+ }
+
+ @Override
+ public int getFileSize(){
+ return fileSize;
+ }
+
+ @Override
+ public boolean mustSendWarning(){
+ return true;
+ }
+
+ @Override
+ public void setSendWarning(){}
+
+}
+
+class CriticalMailSenderMock extends CriticalMailSender {
+ public CriticalMailSenderMock() {
+ super("test@test.fr");
+ }
+
+ public void sendCritical(String message) {}
+}
+
+
--- /dev/null
+package com.adullact.tedetis.test;
+
+import java.io.File;
+import java.io.FileWriter;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import com.adullact.tedetis.helios.FichierCompteur;
+
+public class FichierCompteurTest extends TestCase {
+
+ public void testGetNouveauNumeroOrdre() throws Exception {
+ File fichier = File.createTempFile("compteur","txt");
+ fichier.deleteOnExit();
+
+ FileWriter fw = new FileWriter(fichier);
+ fw.write("045");
+ fw.close();
+
+ FichierCompteur compteur = new FichierCompteur(fichier);
+ Assert.assertEquals("046",compteur.getNouveauNumeroOrdre());
+ Assert.assertEquals("047",compteur.getNouveauNumeroOrdre());
+ Assert.assertEquals("048",compteur.getNouveauNumeroOrdre());
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.test;
+
+import java.io.File;
+import java.sql.ResultSet;
+
+import junit.framework.Assert;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.helios.FichierHeliosValidation;
+import com.adullact.tedetis.sql.HeliosTransactions;
+import com.adullact.tedetis.util.ValiderXML;
+
+public class FichierHeliosTest extends ActesDBTest {
+
+ public FichierHeliosTest(String name) throws TedetisException {
+ super(name);
+ }
+
+ public void testValidate() throws Exception{
+
+ HeliosTransactions ht = new HeliosTransactions(jdbcConnection,99999);
+ ValiderXML validateurXML = new ValiderXML();
+ validateurXML.setExternalSchemaLocation("http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller",new File("WebContent/xsds/schemas_helios/PES_V2/Rev0/PES_Aller.xsd"));
+ validateurXML.setSchemaPath(new File("WebContent/xsds"));
+
+ FichierHeliosValidation f =new FichierHeliosValidation(ht,validateurXML);
+ f.validate("fixtures/helios/sha1/");
+
+ ResultSet rs = HeliosTransactions.getTransactionByStatus(jdbcConnection, HeliosTransactions.ATTENTE);
+ Assert.assertTrue(rs.next());
+ Assert.assertEquals(99999,rs.getInt("transaction_id"));
+ }
+
+ public void testGetIdPost() throws Exception{
+ HeliosTransactions ht = new HeliosTransactions(jdbcConnection,99999);
+ ValiderXML validateurXML = new ValiderXML();
+ validateurXML.setExternalSchemaLocation("http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller",new File("WebContent/xsds/schemas_helios/PES_V2/Rev0/PES_Aller.xsd"));
+ validateurXML.setSchemaPath(new File("WebContent/xsds"));
+
+ FichierHeliosValidation f =new FichierHeliosValidation(ht,validateurXML);
+ f.validate("fixtures/helios/sha1/");
+ String p_msg = f.getPMsg("fixtures/helios/sha1/");
+ Assert.assertEquals("PES#123#123456#12",p_msg);
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.test;
+
+import java.io.File;
+import java.io.IOException;
+
+import junit.framework.TestCase;
+
+import com.adullact.tedetis.ConfigurationEnvironnement;
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.util.FileSender;
+
+public class FileSenderTest extends TestCase {
+
+ private ConfigurationEnvironnement configuration;
+ private FileSender fileSender;
+ private File testingFile;
+
+ public FileSenderTest() throws TedetisException{
+ configuration = new ConfigurationEnvironnement("config/");
+ }
+
+ @Override
+ public void setUp(){
+ testingFile = new File("fixtures/archive/adl-TACT--999888777--20070411-1.tar.gz");
+ }
+
+ public void testSend() throws IOException{
+ fileSender = configuration.getFileSenderForTesting(FileSender.AUTHENTICATION_NONE, false);
+ }
+
+ public void testSendWithBASIC(){
+ fileSender = configuration.getFileSenderForTesting(FileSender.AUTHENTICATION_BASIC, false);
+ }
+
+ public void testSendWithPOST(){
+ fileSender = configuration.getFileSenderForTesting(FileSender.AUTHENTICATION_POST, false);
+ }
+
+
+ public void testSendSSL() {
+ fileSender = configuration.getFileSenderForTesting(FileSender.AUTHENTICATION_NONE, true);
+ }
+
+ public void testSendSSLWithBASIC() {
+ fileSender = configuration.getFileSenderForTesting(FileSender.AUTHENTICATION_BASIC, true);
+ }
+
+ public void testSendSSLWithPOST() {
+ fileSender = configuration.getFileSenderForTesting(FileSender.AUTHENTICATION_POST, true);
+ }
+
+ @Override
+ public void tearDown(){
+ fileSender.setFichier(testingFile);
+ try {
+ fileSender.send();
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ fail(e.getMessage());
+ }
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.test;
+
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+import junit.framework.Assert;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.sql.HeliosTransactions;
+
+public class HeliosTransactionsTest extends ActesDBTest{
+
+ private HeliosTransactions ht;
+ public HeliosTransactionsTest(String name) throws TedetisException {
+ super(name);
+ }
+
+ @Override
+ public void setUp() throws Exception{
+ super.setUp();
+ ht = new HeliosTransactions(jdbcConnection,99999);
+ }
+
+ public void testGetTransactionByStatus() throws SQLException{
+ ResultSet rs = HeliosTransactions.getTransactionByStatus(jdbcConnection, HeliosTransactions.POSTE);
+ Assert.assertTrue(rs.next());
+ Assert.assertEquals(99999,rs.getInt("transaction_id"));
+ }
+
+ public void testGetId(){
+ Assert.assertEquals(ht.getID(),99999);
+ }
+
+ public void testaddToHeliosTransactionWorkflow() throws SQLException {
+ ht.addToHeliosTransactionWorkflow(HeliosTransactions.EN_TRAITEMENT,"Passage en traitement");
+ ResultSet rs = HeliosTransactions.getTransactionByStatus(jdbcConnection, HeliosTransactions.EN_TRAITEMENT);
+ Assert.assertTrue(rs.next());
+ Assert.assertEquals(99999,rs.getInt("transaction_id"));
+ }
+
+ public void testaddXML_NomFic() throws SQLException, TedetisException{
+
+ ht.addXML_NomFic("fichier_xml");
+ ResultSet rs = HeliosTransactions.getTransactionByStatus(jdbcConnection, HeliosTransactions.POSTE);
+ Assert.assertTrue(rs.next());
+ Assert.assertEquals(99999,rs.getInt("transaction_id"));
+ Assert.assertEquals("fichier_xml",rs.getString("xml_nomfic"));
+ }
+
+ public void testaddXML_NomFicFail() throws SQLException, TedetisException{
+ ht.addXML_NomFic("fichier_xml");
+ try {
+ ht.addXML_NomFic("fichier_xml");
+ fail("Accepte deux fois le même fichier");
+ } catch (TedetisException e){
+ Assert.assertEquals("Le nom fichier_xml existe déjà dans la base", e.getMessage());
+ }
+
+ }
+
+ public void testTailleFenetre() throws SQLException{
+ Assert.assertEquals(14677,ht.getFileSize());
+ }
+
+ public void testMustSendWarning() throws SQLException{
+ Assert.assertFalse(ht.mustSendWarning());
+ }
+
+ public void testSetSendWarning() throws SQLException {
+ ht.setSendWarning();
+ Assert.assertFalse(ht.mustSendWarning());
+ }
+
+
+
+}
\ No newline at end of file
--- /dev/null
+package com.adullact.tedetis.test;
+
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+import junit.framework.Assert;
+
+import com.adullact.tedetis.Parapheur;
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.sql.Horodatage;
+
+public class HorodatageTest extends ActesDBTest {
+
+ public static final String logFixtures = "Chaîne de test pour les logs";
+
+ private Parapheur parapheurMock;
+ private Horodatage horodatage;
+
+ public HorodatageTest(String name) throws TedetisException {
+ super(name);
+ parapheurMock = new ParapheurMock();
+ }
+
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+ horodatage = new Horodatage(jdbcConnection,parapheurMock);
+ }
+
+ public void testNewHorodatage() throws Exception {
+ int id_log = horodatage.save(HorodatageTest.logFixtures);
+ ResultSet rs = getInfoFromLogs(id_log);
+
+ Assert.assertEquals(Horodatage.DEFAULT_MODULE, rs.getString("module"));
+ Assert.assertEquals(Horodatage.DEFAULT_ISSUER, rs.getString("issuer"));
+ rs.getInt("user_id");
+ Assert.assertTrue(rs.wasNull());
+ Assert.assertEquals(HorodatageTest.logFixtures, rs.getString("message"));
+ Assert.assertEquals(Horodatage.DEFAULT_VISIBILITY,rs.getString("visibility"));
+ Assert.assertEquals(Horodatage.DEFAULT_SEVERITY, rs.getInt("severity"));
+ }
+
+ public void testSettingParameter() throws Exception {
+ horodatage.setIssuer("PHP");
+ horodatage.setModule("helios");
+ horodatage.setUserId(99999);
+ horodatage.setVisibility("USER");
+ horodatage.setSeverity(Horodatage.CRITICAL);
+
+ int id_log = horodatage.save(HorodatageTest.logFixtures);
+ ResultSet rs = getInfoFromLogs(id_log);
+
+ Assert.assertEquals("helios", rs.getString("module"));
+ Assert.assertEquals("PHP", rs.getString("issuer"));
+ Assert.assertEquals(99999,rs.getInt("user_id"));
+ Assert.assertEquals(HorodatageTest.logFixtures, rs.getString("message"));
+ Assert.assertEquals("USER",rs.getString("visibility"));
+ Assert.assertEquals(Horodatage.CRITICAL, rs.getInt("severity"));
+ }
+
+ private ResultSet getInfoFromLogs(int id_log) throws SQLException {
+ String sql = "SELECT * from logs WHERE id = ?";
+ PreparedStatement ps = jdbcConnection.prepareStatement(sql);
+ ps.setInt(1, id_log);
+ ResultSet rs = ps.executeQuery();
+ rs.next();
+ return rs;
+ }
+}
+
+class ParapheurMock extends Parapheur {
+
+ public ParapheurMock() {
+ super("", "");
+ }
+ @Override
+ public String getSignature(String stringToBeSigned) {
+ return stringToBeSigned;
+ }
+
+}
\ No newline at end of file
--- /dev/null
+package com.adullact.tedetis.test;
+
+import java.io.File;
+import java.io.IOException;
+
+import junit.framework.TestCase;
+
+import com.adullact.tedetis.util.FileSender;
+
+public class IntegrationTest extends TestCase {
+
+ //TODO : c'est un test d'intégraton... a virer
+ public void testSendDemandeClassification() throws IOException {
+
+ fail();
+ String URL = ""; //TODO
+ File fichier = new File("fixtures/tdt-upload/123456789/adl-TACT--123456789--20090113-1.tar.gz");
+ FileSender fs = new FileSender(URL);
+ fs.setFichier(fichier);
+ fs.send();
+ }
+
+
+}
--- /dev/null
+package com.adullact.tedetis.test;
+
+import java.io.File;
+import java.util.List;
+import java.util.Vector;
+
+import javax.mail.MessagingException;
+import javax.mail.internet.AddressException;
+import javax.mail.internet.InternetAddress;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import com.adullact.tedetis.ConfigurationEnvironnement;
+import com.adullact.tedetis.util.MailReceiver;
+import com.adullact.tedetis.util.MailSender;
+
+
+//TODO on test l'envoi et la réception ensemble : bof ...
+public class MailTest extends TestCase {
+
+ private ConfigurationEnvironnement configuration;
+ private MailReceiver mailReceiver;
+ private String destinataire = "eric@babette.com";
+
+ public static final String [] testFiles = {"test.pdf","exemple.xml"};
+
+
+ public MailTest() throws Exception {
+ configuration = new ConfigurationEnvironnement("config/");
+ }
+
+ public void setUp() throws Exception {
+ mailReceiver = configuration.getMailReceveir();
+ mailReceiver.deleteAllFolder();
+ }
+
+ public void testTestConnect(){
+ Assert.assertTrue(mailReceiver.testConnection());
+ }
+
+ public void testInternetAdresse() throws AddressException{
+ String adresse = "tedetis@demo.local.s2low.org";
+ InternetAddress [] inetAddr = InternetAddress.parse(adresse);
+ Assert.assertNotNull(inetAddr);
+ Assert.assertEquals(inetAddr.length, 1);
+ Assert.assertEquals(adresse,inetAddr[0].toString());
+ }
+
+ public void testSendMail() throws Exception {
+
+ Vector<File> fichiers = new Vector<File>();
+ for (String s : testFiles) {
+ fichiers.add(new File("fixtures/" + s));
+ }
+
+ Vector<String> destinataires = new Vector<String>();
+ destinataires.add(destinataire);
+
+ MailSender mailSender = new MailSender();
+ mailSender.setFile(fichiers);
+ mailSender.setRecipient(destinataires);
+ mailSender.send();
+
+ List<File> fichiersRecu = mailReceiver.getMail("/tmp");
+ Vector<String> nomF = new Vector<String>();
+ for (File f : fichiersRecu){
+ nomF.add(f.getName());
+ }
+ for (String s: testFiles){
+ if (! nomF.contains(s)){
+ throw new MessagingException("Fichier "+ s + " non trouvé dans le mail");
+ }
+ }
+
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.test;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import org.apache.tools.ant.filters.StringInputStream;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.messages.MessageMetierARActe;
+import com.adullact.tedetis.actes.messages.MessageMetierActe;
+
+public class MessageMetierARActeTest extends TestCase {
+
+ public String ARActeOK = "fixtures/message/980-454545011-20080710-BEBE1-AI-1-2_0.xml";
+ public String ActeOK = "fixtures/message/980-454545011-20080710-BEBE1-AI-1-1_0.xml";
+
+ public void testValidation() throws FileNotFoundException, TedetisException {
+ MessageMetierARActe m = new MessageMetierARActe("035-123456789-20030714-9999AAA-AI-1-2_12.xml", new FileInputStream(ARActeOK));
+ Assert.assertEquals(m.getDateReception(), "2003-07-17");
+ Assert.assertEquals(m.getIDActe(), "035-123456789-20030714-9999AAA-AI");
+ MessageMetierActe a = m.getActe();
+ Assert.assertNotNull(a);
+ Assert.assertEquals(a.getName(),"035-123456789-20030714-9999AAA-AI-1-1_0.xml");
+ Assert.assertEquals(a.getCodeMatiere1(), "2");
+ Assert.assertEquals(a.getCodeMatiere2(), "2");
+ Assert.assertEquals(a.getObjet(), "Permis de construire au lieu-dit \"Les Rochers\"");
+ Assert.assertEquals(a.getClassificationDateVersion(), "2003-06-10");
+ Assert.assertEquals(a.getDocument(), "980-454545011-20080710-BEBE1-AI-1-1_2.pdf");
+ Assert.assertEquals(a.getNumeroActe(), "9999AAA");
+ }
+
+ public void testGeneration() throws TedetisException, FileNotFoundException{
+ MessageMetierARActe m = new MessageMetierARActe("980-454545011-20080507-BEBE13-AI-1-2_12.xml");
+ m.setDateReception("2003-07-17");
+ m.setActe(new MessageMetierActe("980-454545011-20080507-BEBE13-AI-1-1_0.xml",new FileInputStream(ActeOK)));
+ m.setClassificationDate("2003-04-12");
+
+ String s = m.getXML();
+ new MessageMetierARActe("980-454545011-20080507-BEBE13-AI-1-2_12.xml",new StringInputStream(s));
+
+ }
+
+ public void testFichierPasOK() throws TedetisException, FileNotFoundException{
+ try {
+ MessageMetierARActe m = new MessageMetierARActe("980-454545011-20080507-BEBE13-AI-1-2_12.xml");
+ m.setDateReception("2003-07-17");
+ m.setActe(new MessageMetierActe("980-454545011-20080507-BEBE14-AI-1-1_0.xml",new FileInputStream(ActeOK)));
+ fail("Les noms de fichiers ne correspondent pas");
+ } catch (Exception e) {}
+ }
+
+ public void testFixtures() throws TedetisException, FileNotFoundException {
+ MessageMetierARActe m = new MessageMetierARActe("980-454545011-20080507-BEBE13-AI-1-2_12.xml");
+ m.setFixturesData();
+ m.setActe(new MessageMetierActe("980-454545011-20080507-BEBE13-AI-1-1_0.xml",new FileInputStream(ActeOK)));
+
+ String s = m.getXML();
+ new MessageMetierARActe("980-454545011-20080507-BEBE13-AI-1-2_12.xml",new StringInputStream(s));
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.test;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+
+import junit.framework.TestCase;
+
+import org.apache.tools.ant.filters.StringInputStream;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.messages.MessageMetierARDemandePC;
+
+public class MessageMetierARDemandePCTest extends TestCase {
+
+ public void testValidation() throws TedetisException, FileNotFoundException {
+ new MessageMetierARDemandePC("980-454545011-20080702-BEBE5-AI-3-2_53.xml",
+ new FileInputStream("fixtures/enveloppe/demande_pieces_complementaires/AR_PC_3.2/980-454545011-20080702-BEBE5-AI-3-2_53.xml"));
+ }
+
+ public void testGeneration() throws TedetisException{
+ MessageMetierARDemandePC m = new MessageMetierARDemandePC("980-454545011-20080702-BEBE5-AI-3-2_53.xml");
+ m.setDateMessageMetier("2008-12-31");
+ String s = m.getXML();
+ new MessageMetierARDemandePC("980-454545011-20080702-BEBE5-AI-3-2_53.xml",new StringInputStream(s));
+ }
+
+ public void testFixtures() throws TedetisException {
+ MessageMetierARDemandePC m = new MessageMetierARDemandePC("980-454545011-20080702-BEBE5-AI-3-2_53.xml");
+ m.setFixturesData();
+ String s = m.getXML();
+ new MessageMetierARDemandePC("980-454545011-20080702-BEBE5-AI-3-2_53.xml",new StringInputStream(s));
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.test;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+
+import junit.framework.TestCase;
+
+import org.apache.tools.ant.filters.StringInputStream;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.messages.MessageMetierARLO;
+
+public class MessageMetierARLOTest extends TestCase {
+
+ public static final String nomOK = "980-454545011-20080710-BEBE1-AI-4-2_0.xml";
+ public static final String emplacementOK = "fixtures/message/" + nomOK;
+
+
+ public void testValidation() throws TedetisException, FileNotFoundException {
+ new MessageMetierARLO(nomOK,
+ new FileInputStream(emplacementOK));
+ }
+
+ public void testGeneration() throws TedetisException{
+ MessageMetierARLO m = new MessageMetierARLO(nomOK);
+ m.setDateMessageMetier("2008-12-31");
+ String s = m.getXML();
+ new MessageMetierARLO(nomOK,new StringInputStream(s));
+ }
+
+ public void testFixtures() throws TedetisException {
+ MessageMetierARLO m = new MessageMetierARLO(nomOK);
+ m.setFixturesData();
+ String s = m.getXML();
+ new MessageMetierARLO(nomOK,new StringInputStream(s));
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.test;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import org.apache.tools.ant.filters.StringInputStream;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.messages.MessageMetierARPC;
+
+public class MessageMetierARPCTest extends TestCase {
+
+ public static final String nomOK = "980-454545011-20080710-BEBE1-AI-3-5_0.xml";
+ public static final String emplacementOK = "fixtures/message/" + nomOK;
+
+ public void testValidation() throws TedetisException, FileNotFoundException {
+ MessageMetierARPC m = new MessageMetierARPC(nomOK,
+ new FileInputStream(emplacementOK));
+ Assert.assertEquals("035-123456789-20030714-9999AAA-AI", m.getCPIDActes());
+ Assert.assertEquals("2003-08-08", m.getDateMessageMetier());
+ Assert.assertEquals("2003-08-01", m.getDateCourierPref());
+ }
+
+ public void testGeneration() throws TedetisException{
+ MessageMetierARPC m = new MessageMetierARPC(nomOK);
+ m.setDateMessageMetier("2008-12-31");
+ m.setDateCourierPref("2008-12-30");
+ m.setCPIDActes("035-123456789-20030714-9999aaa-AI");
+ String s = m.getXML();
+ new MessageMetierARPC(nomOK,new StringInputStream(s));
+ }
+
+ public void testFixtures() throws TedetisException {
+ MessageMetierARPC m = new MessageMetierARPC(nomOK);
+ m.setFixturesData();
+ m.setCPIDActes("035-123456789-20030714-9999aaa-AI");
+ String s = m.getXML();
+ new MessageMetierARPC(nomOK,new StringInputStream(s));
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.test;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import org.apache.tools.ant.filters.StringInputStream;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.messages.MessageMetierARAnnulation;
+import com.adullact.tedetis.actes.messages.MessageMetierAnnulation;
+
+public class MessageMetierAnnulationTest extends TestCase {
+
+ public static final String nomOK = "980-454545011-20080710-BEBE1-AI-6-1_0.xml";
+ public static final String emplacementOK = "fixtures/message/" + nomOK;
+
+
+ public void testValidation() throws TedetisException, FileNotFoundException {
+ new MessageMetierAnnulation(nomOK,
+ new FileInputStream(emplacementOK));
+ }
+
+ public void testGeneration() throws TedetisException{
+ MessageMetierAnnulation m = new MessageMetierAnnulation(nomOK);
+ m.setDateMessageMetier("2008-12-31");
+ String s = m.getXML();
+ new MessageMetierAnnulation(nomOK,new StringInputStream(s));
+ }
+
+ public void testFixtures() throws TedetisException {
+ MessageMetierAnnulation m = new MessageMetierAnnulation(nomOK);
+ m.setFixturesData();
+ String s = m.getXML();
+ new MessageMetierAnnulation(nomOK,new StringInputStream(s));
+ }
+
+ public void testAR() throws FileNotFoundException, TedetisException {
+ MessageMetierAnnulation m = new MessageMetierAnnulation(nomOK,
+ new FileInputStream(emplacementOK));
+ MessageMetierARAnnulation mar = m.getAR();
+ mar.setDateMessageMetier("2008-12-31");
+ Assert.assertEquals("035-123456789-20030714-9999AAA-AI-6-2_0.xml", mar.getName());
+ Assert.assertEquals(mar.getIDActe(), m.getIDActe());
+ String s = mar.getXML();
+ new MessageMetierARAnnulation("035-123456789-20030714-9999AAA-AI-6-2_0.xml",new StringInputStream(s));
+
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.test;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import org.apache.tools.ant.filters.StringInputStream;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.messages.MessageMetierActe;
+import com.adullact.tedetis.actes.messages.MessageMetierAnomalieActe;
+
+public class MessageMetierAnomalisActeTest extends TestCase {
+
+ public String AnomalieActeOK = "fixtures/message/980-454545011----1-3_0.xml";
+ public String ActeOK = "fixtures/message/980-454545011-20080710-BEBE1-AI-1-1_0.xml";
+
+ public String nomOK = "980-454545011----1-3_0.xml";
+
+
+ public void testValidation() throws FileNotFoundException, TedetisException {
+ MessageMetierAnomalieActe m = new MessageMetierAnomalieActe(nomOK,
+ new FileInputStream(AnomalieActeOK));
+ //Assert.assertEquals("035-123456789-20030714-9999AAA-AI" , m.getIDActe());
+ Assert.assertEquals("2003-07-17", m.getDate());
+ Assert.assertEquals("006", m.getNature());
+ Assert.assertEquals("Le fichier acte.pdf est introuvable", m.getDetail());
+ MessageMetierActe a = m.getActe();
+ Assert.assertNotNull(a);
+ Assert.assertEquals("980-454545011-20030714-9999AAA-AI-1-1_0.xml" , a.getName());
+ Assert.assertEquals("2" , a.getCodeMatiere1());
+ Assert.assertEquals("2",a.getCodeMatiere2());
+ Assert.assertEquals( "Permis de construire au lieu-dit \"Les Rochers\"", a.getObjet());
+ Assert.assertEquals("2003-06-10" , a.getClassificationDateVersion());
+ Assert.assertEquals("980-454545011-20080710-BEBE1-AI-1-1_1.pdf" , a.getDocument());
+ Assert.assertEquals("9999AAA",a.getNumeroActe());
+ }
+
+ public void testGeneration() throws TedetisException, FileNotFoundException{
+ MessageMetierAnomalieActe m = new MessageMetierAnomalieActe(nomOK);
+ m.setDetail("un test");
+ m.setNature("007");
+ m.setDate("2003-07-10");
+ m.setActe(new MessageMetierActe("980-454545011-20080507-BEBE13-AI-1-1_0.xml",new FileInputStream(ActeOK)));
+ m.setClassificationDate("2003-04-12");
+
+ String s = m.getXML();
+ new MessageMetierAnomalieActe(nomOK,new StringInputStream(s));
+ }
+
+ public void testFixtures() throws TedetisException, FileNotFoundException {
+ MessageMetierAnomalieActe m = new MessageMetierAnomalieActe(nomOK);
+ m.setFixturesData();
+ m.setActe(new MessageMetierActe("980-454545011-20080507-BEBE13-AI-1-1_0.xml",new FileInputStream(ActeOK)));
+ String s = m.getXML();
+ new MessageMetierAnomalieActe(nomOK,new StringInputStream(s));
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.test;
+
+import junit.framework.TestCase;
+
+import org.apache.tools.ant.filters.StringInputStream;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.messages.MessageMetierCourrierSimple;
+
+public class MessageMetierCourrierSimpleTest extends TestCase {
+
+ public void testGeneration() throws TedetisException{
+ MessageMetierCourrierSimple m = new MessageMetierCourrierSimple("980-454545011-20080507-BEBE13-AI-2-1_12.xml");
+ m.setDocument("980-454545011-20080507-BEBE13-AI-5-1_13.pdf");
+ m.setDateMessageMetier("2008-12-31");
+ String s = m.getXML();
+ new MessageMetierCourrierSimple("980-454545011-20080507-BEBE13-AI-2-1_12.xml",new StringInputStream(s));
+ }
+
+ public void testFixtures() throws TedetisException {
+ MessageMetierCourrierSimple m = new MessageMetierCourrierSimple("980-454545011-20080507-BEBE13-AI-2-1_12.xml");
+ m.setFixturesData();
+ String s = m.getXML();
+ //System.out.println(s);
+ new MessageMetierCourrierSimple("980-454545011-20080507-BEBE13-AI-2-1_12.xml",new StringInputStream(s));
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.test;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import org.apache.tools.ant.filters.StringInputStream;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.messages.MessageMetierDefereTA;
+
+public class MessageMetierDefereTATest extends TestCase {
+
+ public String messageOK = "fixtures/message/980-454545011-20080710-BEBE1-AI-5-1_0.xml";
+
+ public void testValidation() throws FileNotFoundException, TedetisException {
+ MessageMetierDefereTA m = new MessageMetierDefereTA("980-454545011-20080507-BEBE13-AI-5-1_12.xml", new FileInputStream(messageOK));
+ Assert.assertEquals(m.getDateDepot(), "2003-09-17");
+ Assert.assertEquals(m.getNatureIllegalite(), "Permis de construire en zone inondable");
+ }
+
+ public void testGeneration() throws TedetisException{
+ MessageMetierDefereTA m = new MessageMetierDefereTA("980-454545011-20080507-BEBE13-AI-5-1_12.xml");
+ m.setDateDepot("20080207");
+ m.setNatureIllegalite("blublibal");
+ m.addPJ("980-454545011-20080507-BEBE13-AI-5-1_13.pdf");
+ String s = m.getXML();
+ new MessageMetierDefereTA("980-454545011-20080507-BEBE13-AI-5-1_12.xml",new StringInputStream(s));
+ }
+
+ public void testFixtures() throws TedetisException {
+ MessageMetierDefereTA m = new MessageMetierDefereTA("980-454545011-20080507-BEBE13-AI-5-1_12.xml");
+ m.setFixturesData();
+ String s = m.getXML();
+ //System.out.println(s);
+ new MessageMetierDefereTA("980-454545011-20080507-BEBE13-AI-5-1_12.xml",new StringInputStream(s));
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.test;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import org.apache.tools.ant.filters.StringInputStream;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.messages.MessageMetierDemandeClassification;
+import com.adullact.tedetis.actes.messages.MessageMetierReponseClassificationSansChangement;
+import com.adullact.tedetis.actes.messages.MessageMetierRetourClassification;
+
+public class MessageMetierDemandeClassificationTest extends TestCase {
+
+ public void testValidation() throws TedetisException, FileNotFoundException {
+ new MessageMetierDemandeClassification("980-454545011----7-1_53.xml",
+ new FileInputStream("fixtures/enveloppe/demande_classification/980-454545011----7-1_53.xml"));
+ }
+
+ public void testGeneration() throws TedetisException{
+ MessageMetierDemandeClassification m = new MessageMetierDemandeClassification("980-454545011----7-1_53.xml");
+ m.setDateClassification("2008-12-31");
+ String s = m.getXML();
+ new MessageMetierDemandeClassification("980-454545011----7-1_53.xml",new StringInputStream(s));
+ }
+
+ public void testFixtures() throws TedetisException {
+ MessageMetierDemandeClassification m = new MessageMetierDemandeClassification("980-454545011----7-1_53.xml");
+ m.setFixturesData();
+ String s = m.getXML();
+ new MessageMetierDemandeClassification("980-454545011----7-1_53.xml",new StringInputStream(s));
+ }
+
+ public void testGetReponseFromFileBefore() throws TedetisException {
+ MessageMetierDemandeClassification m = new MessageMetierDemandeClassification("980-454545011----7-1_53.xml");
+ m.setDateClassification("1970-01-01");
+ MessageMetierRetourClassification reponse = (MessageMetierRetourClassification) m.getReponseFromFile("fixtures/classification/classification.xml");
+ Assert.assertNotNull(reponse);
+ Assert.assertEquals("2003-06-25",reponse.getDateClassification());
+ }
+
+ public void testGetReponseFromFileAfter() throws TedetisException {
+ MessageMetierDemandeClassification m = new MessageMetierDemandeClassification("980-454545011----7-1_53.xml");
+ m.setDateClassification("2008-31-12");
+ MessageMetierReponseClassificationSansChangement reponse = (MessageMetierReponseClassificationSansChangement) m.getReponseFromFile("fixtures/classification/classification.xml");
+ Assert.assertNotNull(reponse);
+ Assert.assertEquals("2003-06-25",reponse.getDateClassification());
+ }
+
+
+}
--- /dev/null
+package com.adullact.tedetis.test;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import org.apache.tools.ant.filters.StringInputStream;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.messages.MessageMetierARDemandePC;
+import com.adullact.tedetis.actes.messages.MessageMetierDemandePC;
+
+public class MessageMetierDemandePCTest extends TestCase {
+
+ public void testValidation() throws TedetisException, FileNotFoundException {
+ new MessageMetierDemandePC("980-454545011-20080702-BEBE5-AI-3-1_53.xml",
+ new FileInputStream("fixtures/enveloppe/demande_pieces_complementaires/PC_3.1/980-454545011-20080702-BEBE5-AI-3-1_53.xml"));
+ }
+
+ public void testGeneration() throws TedetisException{
+ MessageMetierDemandePC m = new MessageMetierDemandePC("980-454545011-20080702-BEBE5-AI-3-1_53.xml");
+ m.setDocument("980-454545011-20080702-BEBE5-AI-3-1_52.pdf");
+ m.setDateMessageMetier("2008-12-31");
+ m.setDescriptionPieces("Ceci est une description des pieces");
+ String s = m.getXML();
+ new MessageMetierDemandePC("980-454545011-20080702-BEBE5-AI-3-1_53.xml",new StringInputStream(s));
+ }
+
+ public void testFixtures() throws TedetisException {
+ MessageMetierDemandePC m = new MessageMetierDemandePC("980-454545011-20080702-BEBE5-AI-3-1_53.xml");
+ m.setFixturesData();
+ String s = m.getXML();
+ new MessageMetierDemandePC("980-454545011-20080702-BEBE5-AI-3-1_53.xml",new StringInputStream(s));
+ }
+
+ public void testAR() throws FileNotFoundException, TedetisException {
+ MessageMetierDemandePC m = new MessageMetierDemandePC("980-454545011-20080702-BEBE5-AI-3-1_53.xml",
+ new FileInputStream("fixtures/enveloppe/demande_pieces_complementaires/PC_3.1/980-454545011-20080702-BEBE5-AI-3-1_53.xml"));
+ MessageMetierARDemandePC mar = m.getAR();
+ Assert.assertEquals(mar.getName(), "980-454545011-20080702-BEBE5-AI-3-2_0.xml");
+ Assert.assertEquals(mar.getDateMessageMetier(), m.getDateMessageMetier());
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.test;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.CodeMessage;
+import com.adullact.tedetis.actes.MessageMetierFactory;
+import com.adullact.tedetis.actes.messages.MessageMetier;
+import com.adullact.tedetis.actes.messages.MessageMetierActe;
+
+public class MessageMetierFactoryTest extends TestCase {
+
+ public void testGetInstanceFromActe() throws TedetisException, FileNotFoundException{
+ File f = new File("fixtures/enveloppe/acte/069-999888777-20070411-PK_20070411_1-AR-1-1_0.xml");
+ MessageMetierActe m = new MessageMetierActe(f.getName(),new FileInputStream(f));
+
+ MessageMetier messageReponse = MessageMetierFactory.getInstanceFromActe(m,CodeMessage.DEFERETA_CODE);
+ Assert.assertEquals(messageReponse.getName(), "069-999888777-20070411-PK_20070411_1-AR-5-1_0.xml");
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.test;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import org.apache.tools.ant.filters.StringInputStream;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.messages.MessageMetierARLO;
+import com.adullact.tedetis.actes.messages.MessageMetierLO;
+
+public class MessageMetierLOTest extends TestCase {
+
+ public static final String nomOK = "980-454545011-20080710-BEBE1-AI-4-1_0.xml";
+ public static final String emplacementOK = "fixtures/message/" + nomOK;
+
+
+ public void testValidation() throws TedetisException, FileNotFoundException {
+ new MessageMetierLO(nomOK,
+ new FileInputStream(emplacementOK));
+ }
+
+ public void testGeneration() throws TedetisException{
+ MessageMetierLO m = new MessageMetierLO(nomOK);
+ m.setDocument("980-454545011-20080702-BEBE5-AI-4-1_52.pdf");
+ m.setDateMessageMetier("2008-12-31");
+ m.setMotif("Ceci est une description des pieces");
+ String s = m.getXML();
+ new MessageMetierLO(nomOK,new StringInputStream(s));
+ }
+
+ public void testFixtures() throws TedetisException {
+ MessageMetierLO m = new MessageMetierLO(nomOK);
+ m.setFixturesData();
+ String s = m.getXML();
+ new MessageMetierLO(nomOK,new StringInputStream(s));
+ }
+
+ public void testAR() throws FileNotFoundException, TedetisException {
+ MessageMetierLO m = new MessageMetierLO(nomOK,
+ new FileInputStream(emplacementOK));
+ MessageMetierARLO mar = m.getAR();
+ Assert.assertEquals(mar.getName(), "035-123456789-20030714-9999AAA-AI-4-2_0.xml");
+ Assert.assertEquals(mar.getDateMessageMetier(), m.getDateMessageMetier());
+ }
+
+
+}
--- /dev/null
+package com.adullact.tedetis.test;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import org.apache.tools.ant.filters.StringInputStream;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.messages.MessageMetierARPC;
+import com.adullact.tedetis.actes.messages.MessageMetierPC;
+
+public class MessageMetierPCTest extends TestCase {
+
+ public static final String nomOK = "980-454545011-20080710-BEBE1-AI-3-4_0.xml";
+ public static final String emplacementOK = "fixtures/message/" + nomOK;
+ public static final String docOK = "980-454545011-20080710-BEBE1-AI-3-4_1.pdf";
+
+ public void testValidation() throws TedetisException, FileNotFoundException {
+ MessageMetierPC m = new MessageMetierPC(nomOK, new FileInputStream(emplacementOK));
+ Assert.assertEquals("2003-08-01",m.getDateMessageMetier());
+ Assert.assertEquals("035-123456789-20030714-9999AAA-AI", m.getIDActe());
+ Assert.assertEquals(docOK, m.getFichiers().get(0));
+ }
+
+ public void testGeneration() throws TedetisException{
+ MessageMetierPC m = new MessageMetierPC(nomOK);
+ m.addDocument(docOK);
+ m.setDateMessageMetier("2008-12-31");
+ String s = m.getXML();
+ new MessageMetierPC(nomOK,new StringInputStream(s));
+ }
+
+ public void testFixtures() throws TedetisException {
+ MessageMetierPC m = new MessageMetierPC(nomOK);
+ m.setFixturesData();
+ String s = m.getXML();
+ new MessageMetierPC(nomOK,new StringInputStream(s));
+ }
+
+ public void testAR() throws FileNotFoundException, TedetisException {
+ MessageMetierPC m = new MessageMetierPC(nomOK,
+ new FileInputStream(emplacementOK));
+ MessageMetierARPC mar = m.getAR();
+ Assert.assertEquals(mar.getName(), "035-123456789-20030714-9999AAA-AI-3-5_0.xml");
+ Assert.assertEquals(mar.getDateMessageMetier(), m.getDateMessageMetier());
+ Assert.assertEquals(m.getIDActe(),mar.getCPIDActes());
+ mar.getXML();
+
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.test;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+
+import junit.framework.TestCase;
+
+import org.apache.tools.ant.filters.StringInputStream;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.messages.MessageMetierReponseClassificationSansChangement;
+
+public class MessageMetierReponseClassificationSansChangementTest extends TestCase {
+
+ public void testValidation() throws TedetisException, FileNotFoundException {
+ new MessageMetierReponseClassificationSansChangement("980-454545011----7-3_53.xml",
+ new FileInputStream("fixtures/enveloppe/demande_classification/980-454545011----7-3_53.xml"));
+ }
+
+ public void testGeneration() throws TedetisException{
+ MessageMetierReponseClassificationSansChangement m = new MessageMetierReponseClassificationSansChangement("980-454545011----7-3_53.xml");
+ m.setDateClassification("2008-12-31");
+ String s = m.getXML();
+ new MessageMetierReponseClassificationSansChangement("980-454545011----7-3_53.xml",new StringInputStream(s));
+ }
+
+ public void testFixtures() throws TedetisException {
+ MessageMetierReponseClassificationSansChangement m = new MessageMetierReponseClassificationSansChangement("980-454545011----7-3_53.xml");
+ m.setFixturesData();
+ String s = m.getXML();
+ new MessageMetierReponseClassificationSansChangement("980-454545011----7-3_53.xml",new StringInputStream(s));
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.test;
+
+import junit.framework.TestCase;
+
+import org.apache.tools.ant.filters.StringInputStream;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.messages.MessageMetierReponseCourrierSimple;
+
+public class MessageMetierReponseCourrierSimpleTest extends TestCase {
+
+ public void testGeneration() throws TedetisException{
+ MessageMetierReponseCourrierSimple m = new MessageMetierReponseCourrierSimple("980-454545011-20080507-BEBE13-AI-2-2_12.xml");
+ m.setDocument("980-454545011-20080507-BEBE13-AI-2-2_13.pdf");
+ m.setDateMessageMetier("2008-12-31");
+ String s = m.getXML();
+ new MessageMetierReponseCourrierSimple("980-454545011-20080507-BEBE13-AI-2-2_12.xml",new StringInputStream(s));
+ }
+
+ public void testFixtures() throws TedetisException {
+ MessageMetierReponseCourrierSimple m = new MessageMetierReponseCourrierSimple("980-454545011-20080507-BEBE13-AI-2-2_12.xml");
+ m.setFixturesData();
+ String s = m.getXML();
+ new MessageMetierReponseCourrierSimple("980-454545011-20080507-BEBE13-AI-2-2_12.xml",new StringInputStream(s));
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.test;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import org.apache.tools.ant.filters.StringInputStream;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.messages.MessageMetierARreponseLO;
+import com.adullact.tedetis.actes.messages.MessageMetierReponseLO;
+
+public class MessageMetierReponseLOTest extends TestCase {
+
+ public static final String nomOK = "980-454545011-20080710-BEBE1-AI-4-4_0.xml";
+ public static final String emplacementOK = "fixtures/message/" + nomOK;
+ public static final String docOK = "980-454545011-20080710-BEBE1-AI-4-4_1.pdf";
+
+ public void testValidation() throws TedetisException, FileNotFoundException {
+ MessageMetierReponseLO m = new MessageMetierReponseLO(nomOK, new FileInputStream(emplacementOK));
+ Assert.assertEquals("2003-08-13",m.getDateMessageMetier());
+ Assert.assertEquals("035-123456789-20030714-9999AAA-AI", m.getIDActe());
+ Assert.assertEquals(docOK, m.getFichiers().get(0));
+ }
+
+ public void testGeneration() throws TedetisException{
+ MessageMetierReponseLO m = new MessageMetierReponseLO(nomOK);
+ m.setDocument(docOK);
+ m.setDateMessageMetier("2008-12-31");
+ String s = m.getXML();
+ new MessageMetierReponseLO(nomOK,new StringInputStream(s));
+ }
+
+ public void testFixtures() throws TedetisException {
+ MessageMetierReponseLO m = new MessageMetierReponseLO(nomOK);
+ m.setFixturesData();
+ String s = m.getXML();
+ new MessageMetierReponseLO(nomOK,new StringInputStream(s));
+ }
+
+ public void testAR() throws FileNotFoundException, TedetisException {
+ MessageMetierReponseLO m = new MessageMetierReponseLO(nomOK,
+ new FileInputStream(emplacementOK));
+ MessageMetierARreponseLO mar = m.getAR();
+ Assert.assertEquals(mar.getName(), "035-123456789-20030714-9999AAA-AI-4-5_0.xml");
+ Assert.assertEquals(mar.getDateMessageMetier(), m.getDateMessageMetier());
+ Assert.assertEquals(m.getIDActe(),mar.getCPIDActes());
+ mar.getXML();
+
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.test;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+
+import junit.framework.TestCase;
+
+import org.apache.tools.ant.filters.StringInputStream;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.messages.MessageMetier;
+import com.adullact.tedetis.actes.messages.MessageMetierRetourClassification;
+
+public class MessageMetierRetourClassificationTest extends TestCase {
+
+ public void testValidation() throws TedetisException, FileNotFoundException {
+ MessageMetier m = new MessageMetierRetourClassification("980-454545011----7-2_53.xml",
+ new FileInputStream("fixtures/enveloppe/demande_classification/980-454545011----7-2_53.xml"));
+ m.getXML();
+ }
+
+ public void testGeneration(){
+ try {
+ MessageMetierRetourClassification m = new MessageMetierRetourClassification("980-454545011----7-2_53.xml");
+ m.setDateClassification("2008-12-31");
+ m.getXML();
+ fail("classification matiere");
+ } catch( TedetisException e){}
+ }
+
+ public void testFixtures() throws TedetisException {
+ MessageMetierRetourClassification m = new MessageMetierRetourClassification("980-454545011----7-2_53.xml");
+ m.setFixturesData();
+ String s = m.getXML();
+ new MessageMetierRetourClassification("980-454545011----7-2_53.xml",new StringInputStream(s));
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.test;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.sql.SQLException;
+import java.util.Vector;
+
+import junit.framework.Assert;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.Archive;
+import com.adullact.tedetis.actes.messages.MessageMetierARActe;
+import com.adullact.tedetis.actes.messages.MessageMetierDefereTA;
+import com.adullact.tedetis.sql.EnveloppeSQL;
+import com.adullact.tedetis.sql.Transaction;
+
+public class MessageMetierSQLTest extends ActesDBTest {
+
+ public MessageMetierSQLTest(String name) throws TedetisException {
+ super( name );
+ }
+
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+ }
+
+ public void testMessageMetierARActe() throws SQLException, FileNotFoundException, TedetisException{
+
+ MessageMetierARActe m = new MessageMetierARActe(
+ "001-123456789-20090107-8789789-AU-1-2_0.xml",
+ new FileInputStream("fixtures/enveloppe/ARacte/001-123456789-20090107-8789789-AU-1-2_0.xml")
+ );
+ Vector<EnveloppeSQL> v = EnveloppeSQL.getEnveloppeFromStatus(jdbcConnection,Transaction.ACQUITTER,true);
+ int nb = v.size();
+ m.updateDatabase(jdbcConnection,"test");
+ v = EnveloppeSQL.getEnveloppeFromStatus(jdbcConnection,Transaction.ACQUITTER,true);
+ Assert.assertEquals(nb +1 , v.size());
+ }
+
+ public void testMessageMetierDefereTA() throws FileNotFoundException, TedetisException, SQLException{
+ MessageMetierDefereTA m = new MessageMetierDefereTA(
+ "001-123456789-20090107-8789789-AU-5-1_0.xml",
+ new FileInputStream("fixtures/enveloppe/defereTA/001-123456789-20090107-8789789-AU-5-1_0.xml")
+ );
+ Vector<EnveloppeSQL> v = EnveloppeSQL.getEnveloppeFromStatus(jdbcConnection,Transaction.DOCUMENT_RECU,true);
+ int nb = v.size();
+ m.updateDatabase(jdbcConnection,"test");
+ v = EnveloppeSQL.getEnveloppeFromStatus(jdbcConnection,Transaction.DOCUMENT_RECU,true);
+ Assert.assertEquals(nb +1 , v.size());
+ }
+
+ public void testAddArchive() throws TedetisException, IOException, SQLException {
+ Archive a = new Archive(new File("fixtures/archive/adl-TACT--SPREF0011-123456789-20090115-1.tar.gz"));
+ a.updateDatabase(jdbcConnection, getTedetisUploadPath());
+ }
+
+ public void testArchiveCourrierSimple() throws Exception {
+ Archive a = new Archive(new File("fixtures/archive/adl-TACT--SPREF0011-123456789-20090115-2.tar.gz"));
+ a.updateDatabase(jdbcConnection, getTedetisUploadPath());
+ }
+
+}
--- /dev/null
+/*
+ * Projet ActesSimulateurMinistere
+ *
+ * Créer le :6 janv. 2009
+ * Auteur : eric
+ * Licence : GPL - voir fichier licence joint.
+ *
+ */
+package com.adullact.tedetis.test;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import org.apache.tools.ant.filters.StringInputStream;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.MessageMetierFactory;
+import com.adullact.tedetis.actes.messages.MessageMetier;
+import com.adullact.tedetis.actes.messages.MessageMetierARActe;
+import com.adullact.tedetis.actes.messages.MessageMetierActe;
+
+public class MessageMetierTest extends TestCase {
+
+ public static final String cheminFichierMetierOK = "fixtures/enveloppe/courrier_simple/courrier_2.1/980-454545011-20080710-BEBE1-AI-1-2_5.xml";
+
+ public static final String cheminFichierBad = "fixtures/bad/messageMetier/";
+
+ public void testFichierValide() throws TedetisException {
+ MessageMetierActe m = new MessageMetierActe("980-454545011-20080710-BEBE1-AI-1-1_1.xml");
+ Assert.assertTrue(m.isNomFichierValide("980-454545011-20080710-BEBE1-AI-1-1_2.pdf"));
+ Assert.assertTrue(m.isNomFichierValide("980-454545011-20080710-BEBE1-AI-1-1_2.png"));
+ Assert.assertTrue(m.isNomFichierValide("980-454545011-20080710-BEBE1-AI-1-1_3.jpg"));
+ Assert.assertFalse(m.isNomFichierValide("toto.pdf"));
+ Assert.assertFalse(m.isNomFichierValide("980-454545011-20080710-BEBE1-AI-1-1_4.doc"));
+ Assert.assertFalse(m.isNomFichierValide("980-454545011-20080710-BEBE1-AI-1-1_4toto.pdf"));
+ //m = new MessageMetierActe("001-123456789-19991130-8789789-AU_0.xml");
+
+ }
+
+ public void testGeneration() throws TedetisException {
+ MessageMetier m = new MessageMetierActe("980-454545011-20080710-BEBE1-AI-1-1_1.xml");
+ Assert.assertEquals(m.getDepartement(), "980");
+ Assert.assertEquals(m.getSiren(), "454545011");
+ Assert.assertEquals(m.getDateActe(), "20080710");
+ Assert.assertEquals(m.getNumeroActe(), "BEBE1");
+ Assert.assertEquals(m.getNatureActe(), "AI");
+ Assert.assertEquals(m.getCodeMessage(), "1-1");
+ Assert.assertEquals(m.getNumero(), "1");
+ }
+
+ public void testGenerationVerification() throws TedetisException {
+ MessageMetierActe m = new MessageMetierActe("980-454545011-20080710-BEBE1-AI-1-1_1.xml");
+ m.setCodeMatiere1("2");
+ m.setCodeMatiere2("2");
+ m.setObjet("Permis de construire au lieu-dit Les Rochers");
+ m.setClassificationDateVersion("2003-06-10");
+ m.setDocument("980-454545011-20080710-BEBE1-AI-1-1_2.pdf");
+ m.addAnnexe("980-454545011-20080710-BEBE1-AI-1-1_3.pdf");
+
+ String xml = m.getXML();
+
+ MessageMetierActe t = new MessageMetierActe("980-454545011-20080710-BEBE1-AI-1-1_1.xml",new StringInputStream(xml));
+ Assert.assertEquals(t.getCodeMatiere1(), "2");
+ Assert.assertEquals(t.getCodeMatiere2(), "2");
+ Assert.assertEquals(t.getObjet(), "Permis de construire au lieu-dit Les Rochers");
+ Assert.assertEquals(t.getClassificationDateVersion(), "2003-06-10");
+ Assert.assertEquals(t.getDocument(), "980-454545011-20080710-BEBE1-AI-1-1_2.pdf");
+ }
+
+
+ public void testEnveloppeNom() throws TedetisException, FileNotFoundException {
+ File f = new File (cheminFichierMetierOK);
+ MessageMetierARActe messageMetierOK = new MessageMetierARActe(f.getName(),new FileInputStream(f));
+ Assert.assertEquals(messageMetierOK.getDepartement(), "980");
+ Assert.assertEquals(messageMetierOK.getSiren(), "454545011");
+ Assert.assertEquals(messageMetierOK.getDateActe(), "20080710");
+ Assert.assertEquals(messageMetierOK.getNumeroActe(), "BEBE1");
+ Assert.assertEquals(messageMetierOK.getNatureActe(), "AI");
+ Assert.assertEquals(messageMetierOK.getCodeMessage(), "1-2");
+ Assert.assertEquals(messageMetierOK.getNumero(), "5");
+
+ Assert.assertEquals(messageMetierOK.getDateReception(), "2008-07-10");
+ Assert.assertEquals(messageMetierOK.getIDActe(), "980-454545011-20080507-BEBE1-AI");
+ Assert.assertEquals(messageMetierOK.getNumeroInterne(), "BEBE1");
+
+
+ }
+
+
+ public void testDate() throws FileNotFoundException {
+ try {
+ String f = cheminFichierBad + "980-454545011-20070229-BEBE1-AI-1-2_5.xml";
+ new MessageMetierActe(f,new FileInputStream(f));
+ fail("La date ne devrait pas être bonne");
+ } catch (TedetisException e){}
+ }
+
+ public void testDepartement(){
+ Assert.assertTrue(MessageMetier.isDepartement("001"));
+ Assert.assertTrue(MessageMetier.isDepartement("980"));
+ Assert.assertTrue(MessageMetier.isDepartement("02A"));
+ Assert.assertTrue(MessageMetier.isDepartement("02B"));
+ Assert.assertFalse(MessageMetier.isDepartement("FOO"));
+ }
+
+ public void testNumeroActe(){
+ Assert.assertTrue(MessageMetier.isNumeroActe("BEBE1"));
+ Assert.assertTrue(MessageMetier.isNumeroActe("BEBE_1"));
+ Assert.assertFalse("trop long",MessageMetier.isNumeroActe("1234567890ABCDEF"));
+ Assert.assertFalse("trop court",MessageMetier.isNumeroActe(""));
+ Assert.assertFalse("minuscule",MessageMetier.isNumeroActe("bebe1"));
+ Assert.assertFalse("Accent",MessageMetier.isNumeroActe("BEÊBE1"));
+ }
+
+ public void isNatureActe(){
+ Assert.assertTrue(MessageMetier.isNatureActe("AU"));
+ Assert.assertFalse(MessageMetier.isNatureActe("FO"));
+ }
+
+ public void testTransactionNomSpecial(){
+ try {
+ String f = cheminFichierBad + "980-454545011----7-3_5.xml";
+ MessageMetier messageMetierOK = new MessageMetierActe(f,new FileInputStream(f));
+ Assert.assertEquals(messageMetierOK.getDepartement(), "980");
+ Assert.assertEquals(messageMetierOK.getCodeMessage(), "7-3");
+ Assert.assertEquals(messageMetierOK.getNumero(), "5");
+ } catch (Exception e) {
+
+ }
+ }
+
+ public void testActe() throws TedetisException, FileNotFoundException{
+ File f = new File("fixtures/enveloppe/acte/069-999888777-20070411-PK_20070411_1-AR-1-1_0.xml");
+ new MessageMetierActe(f.getName(),new FileInputStream(f));
+ }
+
+ public void testMessageMetierFactory() throws Exception {
+ String chemin = "fixtures/message";
+ File rep = new File(chemin);
+ for (File f : rep.listFiles()){
+ if (f.getName().endsWith(".xml")) {
+ MessageMetierFactory.getInstanceFromFile(f.getName(), new FileInputStream(f));
+ }
+ }
+ }
+
+
+
+}
--- /dev/null
+package com.adullact.tedetis.test;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.NomFichierXML;
+
+public class NomFichierXMLTest extends TestCase {
+
+ public static final String nomEnveloppeOK = "abc-EACT--123456789--20021231-2.tar.gz";
+
+ public static final String TRIGRAMME = "abc";
+ public static final String QUADRIGRAMME = "EACT";
+ public static final String INFOAPPLI = "";
+ public static final String EMETTEUR = "123456789";
+ public static final String DESTINATAIRE = "";
+ public static final String DATE = "20021231";
+ public static final String NUMERO = "2";
+
+ NomFichierXML nomMessage;
+
+ private String numero = "42";
+
+ String [] aTester;
+
+ public void setUp(){
+ aTester = new String[0];
+ }
+
+
+ public void testNomMessage() {
+ try {
+ new NomFichierXML("toto");
+ fail("Accepte des noms invalides");
+ } catch (TedetisException e) {}
+ }
+
+ public void testNomMessageFail(){
+ try {
+ new NomFichierXML("abcEACT--123456789--20021231-2.tar.gz");
+ fail();
+ } catch (TedetisException e) {}
+ }
+
+ public void testArchiveOK() throws TedetisException {
+
+ NomFichierXML n = new NomFichierXML(nomEnveloppeOK);
+ Assert.assertEquals(n.getTrigramme(),TRIGRAMME);
+ Assert.assertEquals(n.getQuadrigramme(),QUADRIGRAMME);
+ Assert.assertEquals(n.getInfoAppli(),INFOAPPLI);
+ Assert.assertEquals(n.getEmmetteur(),EMETTEUR);
+ Assert.assertEquals(n.getDestinataire(),DESTINATAIRE);
+ Assert.assertEquals(n.getSiren(),EMETTEUR);
+ Assert.assertEquals(n.getDate(),DATE);
+ Assert.assertEquals(n.getNumero(),NUMERO);
+ Assert.assertEquals(n.getNomEnveloppeMetier().toString(), "EACT--123456789--20021231-2.xml");
+ Assert.assertEquals(n.getSens(), NomFichierXML.COLLECTIVITE_VERS_PREFECTURE);
+ Assert.assertEquals(n.getTypeFichier(), NomFichierXML.ARCHIVE);
+ }
+
+ public void testInfoAppli(){
+ try {
+ new NomFichierXML("abc-EACT-123456789--20021231-2.tar.gz");
+ fail();
+ } catch (TedetisException e) {}
+ try {
+ new NomFichierXML("abc-EACT123456789--20021231-2.tar.gz");
+ fail();
+ } catch (TedetisException e) {}
+ }
+
+ public void testEmmetteur(){
+ try {
+ new NomFichierXML("abc-EACT--12345678--20021231-2.tar.gz");
+ fail();
+ } catch (TedetisException e) {}
+ }
+
+ public void testEmmetteur2(){
+ try {
+ new NomFichierXML("abc-EACT--1234567890--20021231-2.tar.gz");
+ fail();
+ } catch (TedetisException e) {}
+ }
+
+ public void testEmmetteur3(){
+ try {
+ new NomFichierXML("abc-EACT--1234567890--20021231-2.tar.gz");
+ fail();
+ } catch (TedetisException e) {}
+ }
+
+ public void testDestinataire(){
+ aTester = new String [] { "abc-EACT--123456789-20081231-2.tar.gz",
+ "abc-EACT--12345678920081231-2.tar.gz",
+ };
+ }
+
+ public void testDate(){
+ aTester = new String [] { "abc-EACT--123456789--20021331-2.tar.gz",
+ "abc-EACT--123456789--20023112-2.tar.gz",
+ "abc-EACT--123456789--19000229-2.tar.gz",
+ "abc-EACT--123456789--toto0229-2.tar.gz",
+ "abc-EACT--123456789--2008123-2.tar.gz",
+ "abc-EACT--123456789--200812312-2.tar.gz",
+ };
+ }
+
+ public void testNumero() {
+ aTester = new String [] { "abc-EACT--123456789--2008123122.tar.gz",
+ "abc-EACT--123456789--200812312-a.tar.gz",
+ "abc-EACT--123456789--200812312-13456.tar.gz"
+
+ };
+ }
+
+ public void testArchivePrefecture() throws TedetisException {
+ NomFichierXML n = new NomFichierXML("abc-EACT--SPREF9801-454545011-20080710-4.tar.gz");
+ Assert.assertEquals(n.getTrigramme(),"abc");
+ Assert.assertEquals(n.getQuadrigramme(),"EACT");
+ Assert.assertEquals(n.getInfoAppli(),"");
+ Assert.assertEquals(n.getEmmetteur(),"SPREF9801");
+ Assert.assertEquals(n.getDestinataire(),"454545011");
+ Assert.assertEquals(n.getSiren(),"454545011");
+ Assert.assertEquals(n.getDate(),"20080710");
+ Assert.assertEquals(n.getNumero(),"4");
+ Assert.assertEquals(n.getNomEnveloppeMetier().toString(), "EACT--SPREF9801-454545011-20080710-4.xml");
+ Assert.assertEquals(n.getSens(), NomFichierXML.PREFECTURE_VERS_COLLECTIVITE);
+ Assert.assertEquals(n.getTypeFichier(), NomFichierXML.ARCHIVE);
+ Assert.assertEquals(n.getIdTypeSphereEtat(), "SPREF");
+ Assert.assertEquals(n.getDepartement(), "980");
+ Assert.assertEquals(n.getArrondissement(), "1");
+
+
+ }
+
+ public void testEnveloppeMetier() throws TedetisException {
+ NomFichierXML n = new NomFichierXML("EACT--123456789--20021231-2.xml");
+ Assert.assertEquals(n.getTrigramme(),null);
+ Assert.assertEquals(n.getQuadrigramme(),"EACT");
+ Assert.assertEquals(n.getInfoAppli(),"");
+ Assert.assertEquals(n.getEmmetteur(),"123456789");
+ Assert.assertEquals(n.getDestinataire(),"");
+ Assert.assertEquals(n.getSiren(),"123456789");
+ Assert.assertEquals(n.getDate(),"20021231");
+ Assert.assertEquals(n.getNumero(),"2");
+ Assert.assertEquals(n.toString(), "EACT--123456789--20021231-2.xml");
+ Assert.assertEquals(n.getSens(), NomFichierXML.COLLECTIVITE_VERS_PREFECTURE);
+ Assert.assertEquals(n.getTypeFichier(), NomFichierXML.ENVELOPPE_METIER);
+ }
+
+
+ public void testNomReponse() throws TedetisException {
+ NomFichierXML n = new NomFichierXML("abc-EACT--SPREF9801-123456789-20021231-4.tar.gz");
+
+
+ NomFichierXML reponse = n.getNomFichierReponse(Integer.parseInt(numero));
+ Assert.assertEquals(reponse.getTrigramme(),TRIGRAMME);
+ Assert.assertEquals(reponse.getQuadrigramme(),QUADRIGRAMME);
+ Assert.assertEquals(reponse.getInfoAppli(),INFOAPPLI);
+ Assert.assertEquals(reponse.getEmmetteur(),EMETTEUR);
+ Assert.assertEquals(reponse.getDestinataire(),"");
+ Assert.assertEquals(reponse.getSiren(),EMETTEUR);
+ Assert.assertEquals(reponse.getDate(),DATE);
+ Assert.assertEquals(numero, reponse.getNumero());
+ }
+
+ public void testNomReponseXml() throws TedetisException {
+ NomFichierXML n = new NomFichierXML("EACT--123456789--20021231-2.xml");
+ NomFichierXML reponse = n.getNomFichierReponse(Integer.parseInt(numero));
+ Assert.assertEquals(reponse.getQuadrigramme(),QUADRIGRAMME);
+ Assert.assertEquals(reponse.getInfoAppli(),INFOAPPLI);
+ Assert.assertEquals(reponse.getDestinataire(),EMETTEUR);
+ Assert.assertEquals(reponse.getSiren(),EMETTEUR);
+ Assert.assertEquals(reponse.getDate(),DATE);
+ Assert.assertEquals(numero, reponse.getNumero());
+ }
+
+ public void testNomReponse2() throws TedetisException {
+ NomFichierXML n = new NomFichierXML(nomEnveloppeOK);
+ NomFichierXML reponse = n.getNomFichierReponse(Integer.parseInt(numero));
+ Assert.assertEquals(reponse.getTrigramme(),TRIGRAMME);
+ Assert.assertEquals(reponse.getQuadrigramme(),QUADRIGRAMME);
+ Assert.assertEquals(reponse.getInfoAppli(),INFOAPPLI);
+ Assert.assertNotSame(reponse.getEmmetteur(),"");
+ Assert.assertEquals(reponse.getDestinataire(),EMETTEUR);
+ Assert.assertEquals(reponse.getSiren(),EMETTEUR);
+ Assert.assertEquals(reponse.getDate(),DATE);
+ Assert.assertEquals(numero, reponse.getNumero());
+ }
+
+ public void testAno() throws TedetisException {
+ NomFichierXML n = new NomFichierXML("ANO_EACT--123456789--20100531-2.xml");
+ NomFichierXML reponse = n.getNomFichierReponse(Integer.parseInt(numero));
+ Assert.assertEquals(reponse.getQuadrigramme(),QUADRIGRAMME);
+ Assert.assertEquals(reponse.getDestinataire(),"123456789");
+
+ }
+
+ public void tearDown(){
+ for (int i = 0; i<aTester.length; i++)
+ try {
+ new NomFichierXML(aTester[i]);
+ fail(i + " passe (la date est fausse) !");
+ } catch (TedetisException e) {}
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.test;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import com.adullact.tedetis.Parapheur;
+
+public class ParapheurTest extends TestCase {
+
+
+ public void testAllGood() throws Exception {
+ Parapheur parapheur = new Parapheur("fixtures/timestamp/tedetis_timestamp_cert.p12","toto");
+ String s = parapheur.getSignature("Test de signature");
+ System.out.println(s);
+ Assert.assertTrue(s.startsWith("-----BEGIN PKCS7-----"));
+ Assert.assertTrue(s.endsWith("-----END PKCS7-----" ));
+ }
+}
--- /dev/null
+package com.adullact.tedetis.test;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.Hashtable;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import com.adullact.tedetis.util.Tarball;
+
+public class TarBallTest extends TestCase {
+
+ File grosFichier;
+ Hashtable<String,File> h ;
+
+ String tmpFilePath = System.getProperty("java.io.tmpdir") + System.getProperty("file.separator") +
+ "test.tar.gz";
+
+
+ public void testList() throws FileNotFoundException {
+ grosFichier = new File("fixtures/grosfichier.tar.gz");
+
+ Tarball t1 = new Tarball(grosFichier);
+ h = t1.getFichiers();
+ Assert.assertTrue(h.containsKey("apache-log4j-1.2.15"));
+ t1.supprimerTmp();
+ }
+
+ public void testTar() throws IOException {
+ Tarball tgz = new Tarball();
+
+ tgz.addFichier(new File("fixtures/f1.txt"));
+ tgz.addFichier(new File("fixtures/f2.txt"));
+ tgz.addFichier(new File("fixtures/f3.txt"));
+
+ tgz.generate(tmpFilePath);
+
+ File fichier = new File(tmpFilePath);
+ Tarball t = new Tarball(fichier);
+ h = t.getFichiers();
+ Assert.assertTrue(h.containsKey("f1.txt"));
+ File f1 = h.get("f1.txt");
+ BufferedReader fr = new BufferedReader(new FileReader(f1));
+ Assert.assertEquals("Ceci est un fichier", fr.readLine());
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.test;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.util.List;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.actes.Archive;
+import com.adullact.tedetis.actes.EnveloppeXML;
+import com.adullact.tedetis.actes.FichierActesXML;
+import com.adullact.tedetis.actes.messages.MessageMetier;
+import com.adullact.tedetis.actes.messages.MessageMetierActe;
+import com.adullact.tedetis.actes.messages.MessageMetierAnomalieActe;
+import com.adullact.tedetis.actes.messages.MessageMetierRetourClassification;
+
+public class TestRapide {
+
+ public void testPbCG34() throws FileNotFoundException, TedetisException {
+ String f = "/home/eric/slow/TedetisJava/fixtures/enveloppe/acte/034-223400011-20100630-39316-DE-1-1_0.xml";
+
+ new MessageMetierActe("034-223400011-20100630-39316-DE-1-1_0.xml",new FileInputStream(f));
+
+ }
+
+ public void testPbEnveloppeAno() throws Exception{
+ String archive = "/home/eric/slow/TedetisJava/fixtures/archive/SLO-EACT--SPREF0111-221100019-20100701-583.tar.gz";
+ //String archive = "/home/eric/slow/TedetisJava/fixtures/archive/abc-TACT--123456789--20090410-7.tar.gz";
+
+
+ Archive a = new Archive(new File(archive));
+ List<MessageMetier> l = a.getMessageMetier();
+ MessageMetier m = l.get(0);
+ System.out.println(m.getNumeroActe());
+ }
+ public void testPbMessageAno() throws Exception{
+ String e = "/home/eric/slow/TedetisJava/fixtures/message/011-221100019----1-3_2940.xml";
+ MessageMetierAnomalieActe m = new MessageMetierAnomalieActe("011-221100019----1-3_2940.xml",new FileInputStream(e));
+ System.out.println(m.getDetail());
+ }
+
+ public void testXSDclassif() throws Exception {
+ FichierActesXML.setSchemaActePath("/home/eric/slow/TedetisJava/WebContent/xsds/");
+ String e = "/home/eric/Bureau/test/038-213801293----7-2_3289.xml";
+ new MessageMetierRetourClassification("038-213801293----7-2_3289.xml",new FileInputStream(e));
+ }
+ /**
+ * @param args
+ * @throws TedetisException
+ * @throws FileNotFoundException
+ */
+ public static void main(String[] args) throws Exception {
+ /*TestRapide testRapide = new TestRapide();
+ testRapide.testPbCG34();
+ testRapide.testPbMessageAno();
+ */
+ String e = "fixtures/enveloppe/EACT--PREF0133-211301031-20100707-4301.xml";
+ new EnveloppeXML("EACT--PREF0133-211301031-20100707-4301.xml",new FileInputStream(e));
+
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.test;
+
+import java.sql.SQLException;
+import java.util.Vector;
+
+import junit.framework.Assert;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.sql.EnveloppeSQL;
+import com.adullact.tedetis.sql.Transaction;
+
+public class TransactionTest extends ActesDBTest {
+
+ private Transaction transaction;
+
+ public static final String cheminEnvelope = "fixtures/tdt-upload";
+
+ public TransactionTest(String name) throws TedetisException {
+ super( name );
+ }
+
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+ transaction = new Transaction(jdbcConnection,99999);
+ }
+
+ public void testSetToStatus() throws SQLException {
+ Vector<EnveloppeSQL> v = EnveloppeSQL.getEnveloppeFromStatus(jdbcConnection,Transaction.POSTER,true);
+ int nb_poster = v.size();
+
+ v = EnveloppeSQL.getEnveloppeFromStatus(jdbcConnection,Transaction.ATTENTE,true);
+ Assert.assertEquals(0,v.size());
+ transaction.setToStatus(Transaction.ATTENTE, "En attente de postage", null);
+ v = EnveloppeSQL.getEnveloppeFromStatus(jdbcConnection,Transaction.ATTENTE,true);
+ Assert.assertEquals(1,v.size());
+ v = EnveloppeSQL.getEnveloppeFromStatus(jdbcConnection,Transaction.POSTER,true);
+ Assert.assertEquals(nb_poster - 1,v.size());
+ }
+
+ public void testgetTransactionID() throws SQLException, TedetisException{
+
+ Transaction t = Transaction.getTransaction(jdbcConnection, "123456789", "8789789");
+ Assert.assertEquals(99998, t.getID());
+
+ }
+
+ public void testGetRelatedTransaction() throws SQLException, TedetisException {
+ Transaction t = Transaction.getRelatedTransaction(jdbcConnection, "123456789", "8789789","2009-01-07");
+ Assert.assertEquals(99998, t.getID());
+
+ }
+
+
+ public void testSetUniqueID() throws SQLException{
+ Transaction t = new Transaction(jdbcConnection,99998);
+ t.setUniqueID("TEST");
+ Assert.assertEquals("TEST", t.getUniqueID());
+ }
+
+ public void testGetEnveloppeID() throws SQLException{
+ EnveloppeSQL e = transaction.getEnveloppe();
+ Assert.assertEquals(99999,e.getID());
+ }
+
+ public void testCreateRelatedTransaction() throws SQLException {
+ Transaction t = new Transaction(jdbcConnection,99998);
+ t.setUniqueID("CECI EST UN TEST");
+ Transaction e= t.createRelatedTransaction(99998,5,"2008-01-01");
+ Assert.assertEquals("CECI EST UN TEST",e.getUniqueID());
+ }
+
+ public void testAddIncludedFile() throws SQLException {
+ Transaction t = new Transaction(jdbcConnection,99998);
+ t.addIncludedFile("TEST.TEST", 1000);
+
+ }
+
+ public void testgetUserEmail() throws SQLException{
+ Transaction t = new Transaction(jdbcConnection,99998);
+ Assert.assertEquals("eric@babette.com", t.getUserEmail());
+ }
+}
--- /dev/null
+package com.adullact.tedetis.test;
+
+import java.io.File;
+import java.io.IOException;
+
+import junit.framework.TestCase;
+
+import com.adullact.tedetis.util.Util;
+
+
+
+public class UtilRecursifDeleteTest extends TestCase {
+
+ File tmpDir;
+ File f;
+
+ public void setUp(){
+ tmpDir = new File(System.getProperty("java.io.tmpdir"));
+ }
+
+ public void testDeleteEmptyFile() throws IOException {
+ f = File.createTempFile("test", "");
+ }
+
+ public void testDeleteEmptyDirectory() {
+ f = new File(tmpDir,"testdelete");
+ f.mkdir();
+ }
+
+ public void testDeleteDirectory() throws IOException {
+ f = new File(tmpDir,"testdelete");
+ f.mkdir();
+ File.createTempFile("test", "1", f);
+ File.createTempFile("test", "1", f);
+ File.createTempFile("test", "1", f);
+ File.createTempFile("test", "1", f);
+ }
+
+ public void testDeleteDirectory2() throws IOException {
+ f = new File(tmpDir,"testdelete");
+ f.mkdir();
+ File f2 = new File(f,"test2");
+ f2.mkdir();
+ File f3 = new File(f,"test3");
+ f3.mkdir();
+ File.createTempFile("test", "1", f);
+ File.createTempFile("test", "1", f2);
+ File.createTempFile("test", "1", f2);
+ File.createTempFile("test", "1", f3);
+ }
+
+ public void tearDown(){
+ assertTrue(f.exists());
+ Util.recursifDelete(f);
+ assertFalse(f.exists());
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.test;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import com.adullact.tedetis.util.Util;
+
+public class UtilTest extends TestCase {
+
+ String separator ;
+
+ public UtilTest(){
+ separator = System.getProperty("file.separator");
+ }
+
+ public void testConcatenateRepository(){
+ Assert.assertEquals("abc",Util.concatenateRepository("abc"));
+ }
+
+ public void testConcatenate2Rep(){
+ Assert.assertEquals("abc" + separator + "def",Util.concatenateRepository("abc", "def"));
+ }
+
+ public void testConcatenate3Rep(){
+ Assert.assertEquals("abc" + separator + "def" + separator + "ghi"
+ ,Util.concatenateRepository("abc","def","ghi"));
+ }
+
+}
--- /dev/null
+
+package com.adullact.tedetis.test;
+
+import java.io.File;
+import java.io.FileInputStream;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import com.adullact.tedetis.util.ValiderXML;
+
+
+public class ValidationTest extends TestCase {
+
+ public File schemas = new File("WebContent/xsds");
+
+ public ValiderXML validateurXML;
+
+ @Override
+ public void setUp(){
+ validateurXML = new ValiderXML();
+ validateurXML.setSchemaPath(schemas);
+ }
+
+ public void testValidation() throws Exception {
+ Assert.assertTrue(new File("WebContent/xsds/siret.xsd").exists());
+
+ File xml = new File("fixtures/enveloppe/courrier_simple/courrier_2.1/EACT--SPREF9801-454545011-20080710-4.xml");
+ Assert.assertTrue(xml.exists());
+ validateurXML.isValid(new FileInputStream(xml));
+ }
+
+
+
+ public void testValidation2() throws Exception {
+
+ File xml = new File("fixtures/enveloppe/courrier_simple/courrier_2.1/980-454545011-20080710-BEBE1-AI-1-2_5.xml");
+ Assert.assertTrue(xml.exists());
+ validateurXML.isValid(new FileInputStream(xml));
+ }
+
+ public void testPasValide(){
+ try {
+ File xml = new File("fixtures/bad/EACT--SPREF9801-454545011-20080710-4.xml");
+ validateurXML.isValid(new FileInputStream(xml));
+ fail("Le fichier est testé comme valide !");
+ } catch (Exception e){
+
+ }
+ }
+
+
+ public void testHeliosPESAller() throws Exception {
+ File xml = new File("fixtures/helios/HELIOS_SIMU_ALR2_123456725_091103_049.xml");
+ validateurXML.setExternalSchemaLocation("http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller",new File("WebContent/xsds/schemas_helios/PES_V2/Rev0/PES_Aller.xsd"));
+
+ validateurXML.isValid(new FileInputStream(xml));
+ }
+
+ public void testHeliosPESAck() throws Exception {
+ File xml = new File("fixtures/helios/PES_AckOfficiel.xml");
+ //validateurXML.setExternalSchemaLocation("http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller",new File("WebContent/xsds/schemas_helios/PES_V2/Rev0/PES_Aller.xsd"));
+ //validateurXML.setExternalSchemaLocation("http://www.minefi.gouv.fr/cp/helios/pes/Rev0/aller ..\\Schemas_PES\\PES_V2\\Rev0\\PES_Ack.xsd",new File("WebContent/xsds/schemas_helios/PES_V2/Rev0/PES_Ack.xsd"));
+
+ validateurXML.isValid(new FileInputStream(xml));
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.test.mock;
+
+import java.sql.SQLException;
+
+import com.adullact.tedetis.Exception.TedetisException;
+import com.adullact.tedetis.sql.EnveloppeSQL;
+import com.adullact.tedetis.sql.FenetreEnvoieActes;
+import com.adullact.tedetis.util.MailSender;
+
+
+public class FenetreEnvoieMock extends FenetreEnvoieActes {
+
+ public FenetreEnvoieMock() {
+ super(null);
+ }
+
+ public void setMailSender(MailSender mailSender){}
+
+ public boolean windowAvailable(EnveloppeSQL enveloppe) throws SQLException, TedetisException {
+ return true;
+ }
+
+ public int getResteQuota(){
+ return Integer.MAX_VALUE;
+ }
+
+ public void addConsumedTime(int fileSize) throws SQLException {}
+
+}
--- /dev/null
+package com.adullact.tedetis.test.mock;
+
+import java.sql.Connection;
+
+import com.adullact.tedetis.Parapheur;
+import com.adullact.tedetis.sql.Horodatage;
+
+public class HorodatageMock extends Horodatage {
+
+ public HorodatageMock(Connection c, Parapheur parapheur) {
+ super(null,null);
+ }
+ public int save(String message) {
+ return 0;
+ }
+}
--- /dev/null
+package com.adullact.tedetis.util;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+
+import org.apache.commons.net.ftp.FTP;
+import org.apache.commons.net.ftp.FTPClient;
+import org.apache.commons.net.ftp.FTPReply;
+
+import com.adullact.tedetis.Exception.TedetisException;
+
+public class ClientFTP {
+
+ private String host;
+ private int port;
+ private String login;
+ private String password;
+
+ private FTPClient ftp;
+
+ private ArrayList<String> commande;
+ private boolean mode_demo;
+
+ public ClientFTP(String host,int port){
+ this.host = host;
+ this.port = port;
+ ftp = new FTPClient();
+ commande = new ArrayList<String>();
+ mode_demo = false;
+ }
+
+ public void setDemoMode(){
+ mode_demo = true;
+ }
+
+ public void setLogin(String login,String password){
+ this.login = login;
+ this.password = password;
+ }
+
+ public void resetFTPCommande(){
+ this.commande.clear();
+ }
+
+ public void addFTPCommande(String commande){
+ this.commande.add(commande);
+ }
+
+ private int testFTPReply(String message) throws TedetisException{
+ int reply = ftp.getReplyCode();
+ if ( ! FTPReply.isPositiveCompletion(reply) ) {
+ try {
+ ftp.disconnect();
+ } catch (IOException e){
+ //Nothing to do
+ }
+ throw new TedetisException(message + " - Cause : " + reply);
+ }
+ return reply;
+ }
+
+ private void sendScriptCommands() throws TedetisException {
+ for(String strLine : commande ) {
+ try {
+ if (sendCommande(strLine) ) {
+ ftp.sendSiteCommand(strLine);
+ testFTPReply("Command failed : " + strLine);
+ }
+ } catch (Exception e){
+ throw new TedetisException(e);
+ }
+ }
+ }
+
+
+ private boolean sendCommande(String commande){
+ if (mode_demo){
+ return false;
+ }
+ return ! commande.startsWith("quote");
+ }
+
+ private void connexion() throws TedetisException {
+ try {
+ System.out.println("Connexion FTP : "+ host +" "+ port);
+ System.out.println("authentification FTP : "+ login +" "+ password);
+ ftp.connect(host,port);
+ testFTPReply("Connexion refused");
+ ftp.login(login, password);
+ testFTPReply("Authentication failed pour le login " + login);
+ sendScriptCommands();
+
+ } catch (IOException e){
+ throw new TedetisException(e);
+ }
+ }
+
+ public void sendFile(File file2send,String destination) throws TedetisException{
+
+ try {
+ connexion();
+ InputStream fileInputStream = new FileInputStream(file2send);
+
+ if (mode_demo){
+ //Le simulateur HELIOS a besoin d'un repertoire sending
+ //pour recevoir le fichier
+ ftp.changeWorkingDirectory("sending");
+ testFTPReply("Could not change directory to " + destination);
+ }
+
+ ftp.setFileType(FTP.BINARY_FILE_TYPE);
+ testFTPReply("Could not switch to binary transfer");
+
+ boolean res = ftp.storeFile(file2send.getName(), fileInputStream);
+ int reply = testFTPReply("Error sending file " + file2send.getName());
+
+ if (! res || reply != 226){
+ throw new TedetisException("Error sending file " + file2send.getName() + " (code " + reply +")");
+ }
+
+ fileInputStream.close();
+ ftp.logout();
+ ftp.disconnect();
+ } catch (IOException e){
+ throw new TedetisException(e);
+ }
+ }
+
+
+ public ArrayList<String> getFichier(String serverDirectory,String receptionDirectory) throws TedetisException{
+
+ ArrayList<String> filesName=new ArrayList<String>();
+
+ try {
+ connexion();
+
+ ftp.changeWorkingDirectory(serverDirectory);
+ testFTPReply("Could not change directory to " + serverDirectory);
+
+ String[] files = ftp.listNames();
+ if ( files == null || files.length == 0 ) {
+ return filesName;
+ }
+
+ for(String file :files){
+ System.out.println("Trouvé sur le serveur : " + file);
+ if (file.equals("shared"))
+ continue;
+ FileOutputStream fos = new FileOutputStream(receptionDirectory+file);
+ ftp.retrieveFile(file, fos);
+ testFTPReply("Could not retrieve " + file);
+ filesName.add(file);
+
+ }
+ ftp.disconnect();
+
+
+ } catch (IOException e){
+ throw new TedetisException(e);
+ }
+ return filesName;
+ }
+
+ public void test() throws TedetisException, IOException {
+ connexion();
+ }
+
+}
\ No newline at end of file
--- /dev/null
+package com.adullact.tedetis.util;
+
+import javax.mail.MessagingException;
+
+public class CriticalMailSender extends MailSender {
+
+ public static final String SUBJECT_CRITICAL_MAIL = "[Tedetis] Rapport d'erreur critique";
+
+ public CriticalMailSender(String emailAdmin){
+ super();
+ setSubject(SUBJECT_CRITICAL_MAIL);
+ addRecipient(emailAdmin);
+ }
+
+ public void send(String message) {
+ setMessage(message);
+ try {
+ super.send();
+ } catch (MessagingException e){
+ System.out.println("PANIC ! Impossible d'envoyer un rapport d'erreur critique");
+ System.out.println(e.getMessage());
+ e.printStackTrace();
+ }
+
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.util;
+
+import java.io.BufferedReader;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+
+public class FileBufferedReader extends BufferedReader {
+
+ public FileBufferedReader(String filePath) throws FileNotFoundException{
+ super(new FileReader(filePath));
+ }
+
+
+}
--- /dev/null
+package com.adullact.tedetis.util;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.HttpException;
+import org.apache.commons.httpclient.HttpStatus;
+import org.apache.commons.httpclient.UsernamePasswordCredentials;
+import org.apache.commons.httpclient.auth.AuthScope;
+import org.apache.commons.httpclient.methods.PostMethod;
+import org.apache.commons.httpclient.methods.multipart.FilePart;
+import org.apache.commons.httpclient.methods.multipart.MultipartRequestEntity;
+import org.apache.commons.httpclient.methods.multipart.Part;
+import org.apache.commons.httpclient.params.HttpClientParams;
+
+public class FileSender {
+
+ private String authenticationType;
+ private String authenticationLogin;
+ private String authenticationPassword;
+
+ private File fichier;
+ private String url;
+
+ private int timeout;
+
+ public static final String AUTHENTICATION_NONE = "NONE";
+ public static final String AUTHENTICATION_BASIC = "BASIC";
+ public static final String AUTHENTICATION_POST = "POST";
+
+
+ public FileSender(String url){
+ this.url = url;
+ this.authenticationType = AUTHENTICATION_NONE;
+ }
+
+ public void setFichier(File fichier) {
+ this.fichier = fichier;
+ }
+
+ public void setSSLParam(String keystorePath,String keystorePassword){
+ System.setProperty("javax.net.ssl.trustStore",keystorePath);
+ System.setProperty("javax.net.ssl.trustStorePassword",keystorePassword);
+ System.setProperty("javax.net.ssl.keyStore",keystorePath);
+ System.setProperty("javax.net.ssl.keyStorePassword",keystorePassword);
+ }
+
+ public void setDebugSSL(){
+ System.setProperty("javax.net.debug", "ssl, handshake");
+ }
+
+ public void setAuthentication(String type, String login, String password){
+ authenticationType = type;
+ authenticationLogin = login;
+ authenticationPassword = password;
+ }
+
+ public void setTimeout(int millisecond){
+ timeout = millisecond;
+ }
+
+ public String send() throws IOException {
+
+ PostMethod method = setAuthentication();
+ HttpClient client = getHTTPClient();
+
+ if (fichier != null ){
+ addFileToRequest(method);
+ }
+ method.setRequestHeader("Connection", "close");
+
+ int status_code = client.executeMethod(method);
+
+ // Si le code de retour HTTP est 200, on considère le fichier comme bien posté
+ if (fichier != null && status_code != HttpStatus.SC_OK) {
+ throw new HttpException("Erreur (" + status_code
+ + " : " + HttpStatus.getStatusText(status_code)
+ + ") lors du POST du fichier " + fichier.getName());
+ }
+
+ /*String response = method.getResponseBodyAsString();
+ method.releaseConnection();
+ return response;*/
+ return "";
+ }
+
+ private PostMethod setAuthentication() {
+ String urlParameter = "";
+
+ if (authenticationType.equals(AUTHENTICATION_POST)) {
+ urlParameter = "?user=" + authenticationLogin + "&password=" + authenticationPassword;
+ }
+
+ return new PostMethod(url + urlParameter);
+ }
+
+ private HttpClient getHTTPClient() {
+ HttpClientParams p = new HttpClientParams();
+ p.setConnectionManagerTimeout(timeout);
+ p.setSoTimeout(timeout);
+
+ HttpClient client= new HttpClient(p);
+
+ if (authenticationType.equals(AUTHENTICATION_BASIC)) {
+ AuthScope authScope = new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT);
+ UsernamePasswordCredentials credentials = new UsernamePasswordCredentials(authenticationLogin,authenticationPassword);
+ client.getState().setCredentials(authScope,credentials);
+ }
+ return client;
+ }
+
+ private void addFileToRequest(PostMethod method) throws FileNotFoundException {
+ Part[] parts = { new FilePart(fichier.getName(), fichier) };
+ method.setRequestEntity(new MultipartRequestEntity(parts,
+ method.getParams()));
+ }
+}
--- /dev/null
+package com.adullact.tedetis.util;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Vector;
+
+import javax.mail.Message;
+import javax.mail.MessagingException;
+import javax.mail.internet.MimeBodyPart;
+import javax.mail.internet.MimeMultipart;
+
+//TODO classe non testé
+public class Mail2File {
+
+ private String savePath;
+
+ public Mail2File(String savePath){
+ this.savePath = savePath;
+ }
+
+ public Vector<File> getFiles(Message message) throws MessagingException, IOException {
+
+ Vector<File> fichiers = new Vector<File>();
+
+ if (message.isMimeType("multipart/mixed")){
+ MimeMultipart myMulti = (MimeMultipart)(message.getContent());
+
+ for (int i = 0; i < myMulti.getCount(); i ++ ){
+ MimeBodyPart myPart = (MimeBodyPart) myMulti.getBodyPart(i);
+ if (myPart.isMimeType("application/octet-stream") ||
+ myPart.isMimeType("text/xml") ||
+ myPart.isMimeType("application/xml")
+ || myPart.isMimeType("application/pdf")
+ ){
+ String pathf = savePath + System.getProperty("file.separator") + myPart.getFileName();
+ myPart.saveFile(pathf);
+ fichiers.add(new File(pathf));
+ System.out.println("Copie du fichier :" + pathf);
+ } else {
+ System.out.println("Le fichier "+ myPart.getFileName() + " n'est pas dans un format reconnu");
+ }
+ }
+ }
+ return fichiers;
+ }
+
+ //Horrible copier/coller, mais comme il est prévu une réécriutre en PHP ou au pire un abandon de la méthode précédente,
+ //on accepte un peu de dette technique
+ public Vector<File> getFilesFromHTMLMessage(Message message) throws MessagingException, IOException {
+
+ System.out.println("Analyse du mail au nouveau format HTML !");
+
+ Vector<File> fichiers = new Vector<File>();
+
+ MimeMultipart alternativeParts = (MimeMultipart)(message.getContent());
+
+ for (int j = 0; j < alternativeParts.getCount(); j ++ ){
+
+ MimeBodyPart the_part = (MimeBodyPart) alternativeParts.getBodyPart(j);
+
+ if (the_part.isMimeType("multipart/related")){
+
+ MimeMultipart myMulti = (MimeMultipart)(the_part.getContent());
+
+ for (int i = 0; i < myMulti.getCount(); i ++ ){
+ MimeBodyPart myPart = (MimeBodyPart) myMulti.getBodyPart(i);
+ if (myPart.isMimeType("application/octet-stream") ||
+ myPart.isMimeType("text/xml") ||
+ myPart.isMimeType("application/xml")
+ || myPart.isMimeType("application/pdf")
+ ){
+ String pathf = savePath + System.getProperty("file.separator") + myPart.getFileName();
+ myPart.saveFile(pathf);
+ fichiers.add(new File(pathf));
+ System.out.println("Copie du fichier :" + pathf);
+ } else {
+ System.out.println("Le fichier "+ myPart.getFileName() + " n'est pas dans un format reconnu");
+ }
+ }
+ } else {
+ System.out.println("La partie " + the_part.getContentType() + " a été ignoré");
+ }
+
+ }
+
+
+
+
+
+
+ return fichiers;
+ }
+
+
+
+}
--- /dev/null
+package com.adullact.tedetis.util;
+
+
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+import java.util.Properties;
+import java.util.Vector;
+
+import javax.mail.Flags;
+import javax.mail.Folder;
+import javax.mail.Message;
+import javax.mail.MessagingException;
+import javax.mail.Session;
+import javax.mail.Store;
+
+public class MailReceiver {
+
+ public static String protocol = "imap";
+
+ public String login;
+ public String password ;
+ public String host ;
+ public int port;
+
+ private Store myStore ;
+ private Folder myFolder;
+ private Message [] myMessages;
+ private Mail2File mail2File;
+
+ public MailReceiver(String host, int port,String login, String password){
+ this.host = host;
+ this.port = port;
+ this.login = login;
+ this.password = password;
+ }
+
+ public boolean testConnection(){
+ try {
+ connect();
+ disconnect();
+ } catch (Exception e){
+ return false;
+ }
+ return true;
+ }
+
+ private void connect() throws MessagingException{
+ Properties props = System.getProperties();
+
+ Session mySession;
+ mySession = Session.getDefaultInstance(props,null);
+ mySession.setDebug(false);
+
+ myStore = mySession.getStore(protocol);
+ myStore.connect(host, port, login, password);
+ openDefaultFolder();
+
+ }
+
+ private void disconnect() throws MessagingException {
+ myFolder.expunge();
+ myStore.close();
+ }
+
+ public List<File> getMail(String savePath) throws IOException, MessagingException{
+
+ List<File> fichiers = new Vector<File>();
+
+ mail2File = new Mail2File(savePath);
+
+ connect();
+
+ if (isDefaultFolderEmpty()) {
+ disconnect();
+ return fichiers;
+ }
+
+ myMessages = myFolder.getMessages();
+
+ Message message = myMessages[0];
+
+ System.out.println("Réception du message (sujet) : " + message.getSubject() );
+ String[] message_id = message.getHeader("Message-ID");
+ if (message_id.length > 0) {
+ System.out.println("Message-ID : " + message_id[0]);
+ }
+
+ if (message.isMimeType("multipart/mixed")){
+ fichiers = mail2File.getFiles(message);
+ } else if (message.isMimeType("multipart/alternative")) {
+ fichiers = mail2File.getFilesFromHTMLMessage(message);
+ } else {
+ System.out.println("Le mail n'est pas au format multipart/mixed ou multipart/alternative");
+ }
+
+ deleteMessage(message);
+
+ disconnect();
+ return fichiers;
+ }
+
+ private void openDefaultFolder() throws MessagingException {
+ myFolder = myStore.getDefaultFolder();
+ if(myFolder == null) {
+ throw new MessagingException("Pas de boite aux lettres par défaut");
+ }
+ myFolder = myFolder.getFolder("INBOX");
+ myFolder.open(Folder.READ_WRITE);
+ }
+
+ private boolean isDefaultFolderEmpty() throws MessagingException{
+ int nbMessage = myFolder.getMessageCount();
+ return nbMessage == 0;
+
+ }
+
+ private void deleteMessage(Message message) throws MessagingException{
+ message.setFlag(Flags.Flag.DELETED,true);
+ }
+
+ public void deleteAllFolder() throws MessagingException {
+ connect();
+ myMessages = myFolder.getMessages();
+
+ for (int i = 0 ; i < myMessages.length; i++){
+ deleteMessage(myMessages[i]);
+ }
+ disconnect();
+ }
+}
\ No newline at end of file
--- /dev/null
+package com.adullact.tedetis.util;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.Hashtable;
+import java.util.Properties;
+import java.util.Vector;
+
+import javax.activation.DataHandler;
+import javax.activation.FileDataSource;
+import javax.mail.BodyPart;
+import javax.mail.Message;
+import javax.mail.MessagingException;
+import javax.mail.Multipart;
+import javax.mail.Session;
+import javax.mail.Transport;
+import javax.mail.internet.InternetAddress;
+import javax.mail.internet.MimeBodyPart;
+import javax.mail.internet.MimeMessage;
+import javax.mail.internet.MimeMultipart;
+
+public class MailSender {
+
+ public static final String XMAILER_DEFAULT = "Simulateur ministere - protocole ACTES ";
+ public static final String SUBJECT_DEFAULT = "Envoie de fichiers";
+ public static final String MAIL_FROM_DEFAULT = "no_response@adullact.org";
+ public static final String MAILER_HOST_DEFAULT = "127.0.0.1";
+ public static final String MAILER_PORT_DEFAULT = "25";
+
+
+ private String mailFrom;
+ private String xMailer;
+ private String subject;
+ private String mailHost;
+ private String mailPort;
+
+ private Vector<String> recipient;
+ private String message;
+ private Vector<File> filesToSend;
+
+ private Message mimeMessage;
+
+ private String web_content_path;
+
+ public MailSender(){
+ setMailFrom(MAIL_FROM_DEFAULT);
+ setXMailer(XMAILER_DEFAULT);
+ setSubject(SUBJECT_DEFAULT);
+ setMailHost(MAILER_HOST_DEFAULT);
+ setMailPort(MAILER_PORT_DEFAULT);
+
+ recipient = new Vector<String>();
+ filesToSend = new Vector<File>();
+
+ }
+
+ public void setMailFrom(String mailFrom){
+ this.mailFrom = mailFrom;
+ }
+
+ public void setXMailer(String mailer) {
+ xMailer = mailer;
+ }
+
+ public void setSubject(String subject) {
+ this.subject = subject;
+ }
+
+ public void setMailHost(String mailHost) {
+ this.mailHost = mailHost;
+ }
+
+ public void setMailPort(String mailPort){
+ this.mailPort = mailPort;
+ }
+
+ public void addRecipient(String recipient){
+ this.recipient.add(recipient);
+ }
+
+ public void setRecipient(Vector<String> recipient){
+ this.recipient = recipient;
+ }
+
+ public void setMessage(String message){
+ this.message = message;
+ }
+
+ public void addFile(File f){
+ filesToSend.add(f);
+ }
+
+ public void setFile(Vector<File> filesToSend){
+ this.filesToSend = filesToSend;
+ }
+
+ public void setWebContentPath(String web_content_path){
+ this.web_content_path = web_content_path;
+ }
+
+
+ //En php : file_get_contents($filePath), quel langage de merde
+ //et je peux pas utiliser la super fonction java7 qui le fait en seulement 3 lignes!
+ private String readFileAsString(String filePath) throws IOException {
+ StringBuffer fileData = new StringBuffer();
+ BufferedReader reader = new BufferedReader(
+ new InputStreamReader(
+ new FileInputStream(filePath),"UTF-8"));
+ char[] buf = new char[1024];
+ int numRead=0;
+ while((numRead=reader.read(buf)) != -1){
+ String readData = String.valueOf(buf, 0, numRead);
+ fileData.append(readData);
+ }
+ reader.close();
+ return fileData.toString();
+ }
+
+
+ public void sendHTML() throws MessagingException,IOException {
+
+ System.out.println("put port " + mailPort);
+
+ Properties props = System.getProperties();
+ props.put("mail.smtp.host", mailHost);
+ props.put("mail.smtp.port", mailPort);
+
+ Session session = Session.getDefaultInstance(props, null);
+
+ mimeMessage = new MimeMessage(session);
+ mimeMessage.setFrom(new InternetAddress(mailFrom));
+ mimeMessage.setSubject(subject);
+ mimeMessage.setHeader("X-Mailer", xMailer);
+
+
+ MimeMultipart alternativePart = new MimeMultipart("alternative");
+
+ BodyPart bodyTxt = new MimeBodyPart();
+ bodyTxt.setText("true");
+
+
+ alternativePart.addBodyPart(bodyTxt);
+
+ BodyPart mainBody = new MimeBodyPart();
+
+ MimeMultipart relatedPart = new MimeMultipart("related");
+
+ BodyPart htmlPart = new MimeBodyPart();
+ String html_content = readFileAsString(web_content_path + "/fixtures/reponse-prefecture.html");
+ htmlPart.setContent(html_content, "text/html; charset=UTF-8");
+ relatedPart.addBodyPart(htmlPart);
+
+ MimeBodyPart imagePart = new MimeBodyPart();
+ imagePart.setDataHandler(new DataHandler(new FileDataSource(web_content_path + "/fixtures/logo_s2low.jpg")));
+ imagePart.setFileName("logo_s2low.jpg");
+ imagePart.setDisposition("inline");
+ imagePart.setContentID("logo_s2low.jpg");
+ relatedPart.addBodyPart(imagePart);
+
+
+
+ Hashtable<String, File> hm = new Hashtable<String, File>();
+ for (File f : filesToSend) {
+ hm.put(f.getName(), f);
+ }
+
+ for(String s : hm.keySet()) {
+ MimeBodyPart partFile = new MimeBodyPart();
+ FileDataSource fds = new FileDataSource(hm.get(s));
+ partFile.setDataHandler(new DataHandler(fds));
+ partFile.setFileName(s);
+ partFile.setDisposition("inline");
+ relatedPart.addBodyPart(partFile);
+ }
+
+ mainBody.setContent(relatedPart);
+
+ alternativePart. addBodyPart(mainBody);
+
+ mimeMessage.setContent(alternativePart);
+
+ for (String add : recipient) {
+ InternetAddress [] adresse = InternetAddress.parse(add);
+ if (adresse.length != 0) {
+ mimeMessage.addRecipients(Message.RecipientType.TO,adresse);
+ }
+ }
+
+ mimeMessage.saveChanges();
+
+ Transport.send(mimeMessage);
+ }
+
+
+ public void send() throws MessagingException {
+ Properties props = System.getProperties();
+ props.put("mail.smtp.host", mailHost);
+ props.put("mail.smtp.port", mailPort);
+ System.out.println("put port " + mailPort);
+ Session session = Session.getDefaultInstance(props, null);
+
+ mimeMessage = new MimeMessage(session);
+ mimeMessage.setFrom(new InternetAddress(mailFrom));
+ mimeMessage.setSubject(subject);
+ mimeMessage.setHeader("X-Mailer", xMailer);
+
+ if (filesToSend.size() != 0) {
+ attacheFile();
+ } else {
+ mimeMessage.setText(message);
+ }
+
+ for (String add : recipient) {
+ InternetAddress [] adresse = InternetAddress.parse(add);
+ if (adresse.length != 0) {
+ mimeMessage.addRecipients(Message.RecipientType.TO,adresse);
+ }
+ }
+
+ Transport.send(mimeMessage);
+ }
+
+
+
+
+ private void attacheFile() throws MessagingException {
+
+ Hashtable<String, File> hm = new Hashtable<String, File>();
+ for (File f : filesToSend) {
+ hm.put(f.getName(), f);
+ }
+
+ StringBuffer contenu = new StringBuffer();
+ for(String s : hm.keySet()) {
+ contenu.append("fichier joint :" + s + "\n");
+ }
+
+ Multipart multiPartContent = new MimeMultipart();
+ MimeBodyPart partText = new MimeBodyPart();
+ if (message != null){
+ partText.setText(message);
+ } else {
+ partText.setText(contenu.toString());
+ }
+ multiPartContent.addBodyPart(partText);
+
+ for(String s : hm.keySet()) {
+ MimeBodyPart partFile = new MimeBodyPart();
+ FileDataSource fds = new FileDataSource(hm.get(s));
+ partFile.setDataHandler(new DataHandler(fds));
+ partFile.setFileName(s);
+ multiPartContent.addBodyPart(partFile);
+ }
+
+ mimeMessage.setContent(multiPartContent);
+
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.util;
+
+import java.util.Vector;
+
+public class SansAccent {
+ /** Index du 1er caractere accentué **/
+ private static final int MIN = 192;
+ /** Index du dernier caractere accentué **/
+ private static final int MAX = 255;
+ /** Vecteur de correspondance entre accent / sans accent **/
+ private static final Vector<String> map = initMap();
+
+ /** Initialisation du tableau de correspondance entre les caractéres accentués
+ * et leur homologues non accentués
+ */
+ private static Vector<String> initMap()
+ { Vector<String> Result = new Vector<String> ();
+ java.lang.String car = null;
+
+ car = new java.lang.String("A");
+ Result.add( car ); /* '\u00C0' À alt-0192 */
+ Result.add( car ); /* '\u00C1' Á alt-0193 */
+ Result.add( car ); /* '\u00C2' Â alt-0194 */
+ Result.add( car ); /* '\u00C3' Ã alt-0195 */
+ Result.add( car ); /* '\u00C4' Ä alt-0196 */
+ Result.add( car ); /* '\u00C5' Å alt-0197 */
+ car = new java.lang.String("AE");
+ Result.add( car ); /* '\u00C6' Æ alt-0198 */
+ car = new java.lang.String("C");
+ Result.add( car ); /* '\u00C7' Ç alt-0199 */
+ car = new java.lang.String("E");
+ Result.add( car ); /* '\u00C8' È alt-0200 */
+ Result.add( car ); /* '\u00C9' É alt-0201 */
+ Result.add( car ); /* '\u00CA' Ê alt-0202 */
+ Result.add( car ); /* '\u00CB' Ë alt-0203 */
+ car = new java.lang.String("I");
+ Result.add( car ); /* '\u00CC' Ì alt-0204 */
+ Result.add( car ); /* '\u00CD' Í alt-0205 */
+ Result.add( car ); /* '\u00CE' Î alt-0206 */
+ Result.add( car ); /* '\u00CF' Ï alt-0207 */
+ car = new java.lang.String("D");
+ Result.add( car ); /* '\u00D0' Ð alt-0208 */
+ car = new java.lang.String("N");
+ Result.add( car ); /* '\u00D1' Ñ alt-0209 */
+ car = new java.lang.String("O");
+ Result.add( car ); /* '\u00D2' Ò alt-0210 */
+ Result.add( car ); /* '\u00D3' Ó alt-0211 */
+ Result.add( car ); /* '\u00D4' Ô alt-0212 */
+ Result.add( car ); /* '\u00D5' Õ alt-0213 */
+ Result.add( car ); /* '\u00D6' Ö alt-0214 */
+ car = new java.lang.String("*");
+ Result.add( car ); /* '\u00D7' × alt-0215 */
+ car = new java.lang.String("0");
+ Result.add( car ); /* '\u00D8' Ø alt-0216 */
+ car = new java.lang.String("U");
+ Result.add( car ); /* '\u00D9' Ù alt-0217 */
+ Result.add( car ); /* '\u00DA' Ú alt-0218 */
+ Result.add( car ); /* '\u00DB' Û alt-0219 */
+ Result.add( car ); /* '\u00DC' Ü alt-0220 */
+ car = new java.lang.String("Y");
+ Result.add( car ); /* '\u00DD' Ý alt-0221 */
+ car = new java.lang.String("Þ");
+ Result.add( car ); /* '\u00DE' Þ alt-0222 */
+ car = new java.lang.String("B");
+ Result.add( car ); /* '\u00DF' ß alt-0223 */
+ car = new java.lang.String("a");
+ Result.add( car ); /* '\u00E0' à alt-0224 */
+ Result.add( car ); /* '\u00E1' á alt-0225 */
+ Result.add( car ); /* '\u00E2' â alt-0226 */
+ Result.add( car ); /* '\u00E3' ã alt-0227 */
+ Result.add( car ); /* '\u00E4' ä alt-0228 */
+ Result.add( car ); /* '\u00E5' å alt-0229 */
+ car = new java.lang.String("ae");
+ Result.add( car ); /* '\u00E6' æ alt-0230 */
+ car = new java.lang.String("c");
+ Result.add( car ); /* '\u00E7' ç alt-0231 */
+ car = new java.lang.String("e");
+ Result.add( car ); /* '\u00E8' è alt-0232 */
+ Result.add( car ); /* '\u00E9' é alt-0233 */
+ Result.add( car ); /* '\u00EA' ê alt-0234 */
+ Result.add( car ); /* '\u00EB' ë alt-0235 */
+ car = new java.lang.String("i");
+ Result.add( car ); /* '\u00EC' ì alt-0236 */
+ Result.add( car ); /* '\u00ED' í alt-0237 */
+ Result.add( car ); /* '\u00EE' î alt-0238 */
+ Result.add( car ); /* '\u00EF' ï alt-0239 */
+ car = new java.lang.String("d");
+ Result.add( car ); /* '\u00F0' ð alt-0240 */
+ car = new java.lang.String("n");
+ Result.add( car ); /* '\u00F1' ñ alt-0241 */
+ car = new java.lang.String("o");
+ Result.add( car ); /* '\u00F2' ò alt-0242 */
+ Result.add( car ); /* '\u00F3' ó alt-0243 */
+ Result.add( car ); /* '\u00F4' ô alt-0244 */
+ Result.add( car ); /* '\u00F5' õ alt-0245 */
+ Result.add( car ); /* '\u00F6' ö alt-0246 */
+ car = new java.lang.String("/");
+ Result.add( car ); /* '\u00F7' ÷ alt-0247 */
+ car = new java.lang.String("0");
+ Result.add( car ); /* '\u00F8' ø alt-0248 */
+ car = new java.lang.String("u");
+ Result.add( car ); /* '\u00F9' ù alt-0249 */
+ Result.add( car ); /* '\u00FA' ú alt-0250 */
+ Result.add( car ); /* '\u00FB' û alt-0251 */
+ Result.add( car ); /* '\u00FC' ü alt-0252 */
+ car = new java.lang.String("y");
+ Result.add( car ); /* '\u00FD' ý alt-0253 */
+ car = new java.lang.String("þ");
+ Result.add( car ); /* '\u00FE' þ alt-0254 */
+ car = new java.lang.String("y");
+ Result.add( car ); /* '\u00FF' ÿ alt-0255 */
+ Result.add( car ); /* '\u00FF' alt-0255 */
+
+ return Result;
+ }
+
+ /** Transforme une chaine pouvant contenir des accents dans une version sans accent
+ * @param chaine Chaine a convertir sans accent
+ * @return Chaine dont les accents ont été supprimé
+ **/
+ public static java.lang.String sansAccent(java.lang.String chaine)
+ { java.lang.StringBuffer Result = new StringBuffer(chaine);
+
+ for(int bcl = 0 ; bcl < Result.length() ; bcl++)
+ { int carVal = chaine.charAt(bcl);
+ if( carVal >= MIN && carVal <= MAX )
+ { // Remplacement
+ java.lang.String newVal = (java.lang.String)map.get( carVal - MIN );
+ Result.replace(bcl, bcl+1,newVal);
+ }
+ }
+ return Result.toString();
+ }
+}
--- /dev/null
+package com.adullact.tedetis.util;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.Hashtable;
+
+import de.schlichtherle.io.DefaultArchiveDetector;
+import de.schlichtherle.io.File;
+
+/**
+ * Cette classe transforme une archive tar en une liste vers un ensemble de fichier
+ * @author Eric Pommateau
+ *
+ */
+public class Tarball {
+
+ private Hashtable<String, java.io.File> fichiers;
+
+ private File tmpDir;
+
+ public Tarball(){
+ fichiers = new Hashtable<String, java.io.File>();
+ }
+
+ public Tarball(java.io.File fichierTgz) throws FileNotFoundException {
+ this();
+
+ if (! fichierTgz.exists()) {
+ throw new FileNotFoundException("Le fichier " + fichierTgz.getAbsolutePath() + " n'existe pas");
+ }
+
+ File.setDefaultArchiveDetector(new DefaultArchiveDetector("tar.gz"));
+
+ tmpDir = new File(fichierTgz.getParentFile(),fichierTgz.getName() + "_temp");
+
+ if (tmpDir.exists()) {
+ Util.recursifDelete(tmpDir);
+ }
+ if (! tmpDir.exists()){
+ tmpDir.mkdir();
+ }
+
+ if (! tmpDir.exists()){
+ throw new FileNotFoundException("Impossible de créer le répertoire ! ");
+ }
+
+ File fichierTgzTrans = new File(fichierTgz);
+ fichierTgzTrans.copyAllTo(tmpDir);
+
+ File [] listFichier = (File [] ) tmpDir.listFiles();
+ if (listFichier != null){
+ for (int i = 0; i < listFichier.length; i++) {
+ fichiers.put(listFichier[i].getName(), listFichier[i]);
+ }
+ }
+ }
+
+ public void supprimerTmp(){
+ fichiers = new Hashtable<String, java.io.File>();
+ Util.recursifDelete(tmpDir);
+ }
+
+ public Hashtable<String,java.io.File> getFichiers(){
+ return fichiers;
+ }
+
+ public void addFichier(java.io.File f){
+ if (fichiers == null){
+ fichiers = new Hashtable<String, java.io.File>();
+ }
+ fichiers.put(f.getName(), f);
+ }
+
+ public void generate(String path) throws IOException {
+ File fichierTgz = new File(path,new DefaultArchiveDetector("tar.gz"));
+ if (fichierTgz.exists()) {
+ fichierTgz.delete();
+ }
+ fichierTgz.mkdir();
+ for(String nomFichier : fichiers.keySet()){
+ File f = new File(fichiers.get(nomFichier));
+ f.archiveCopyTo(new File(fichierTgz,nomFichier));
+ }
+ File.umount(fichierTgz);
+ }
+}
--- /dev/null
+package com.adullact.tedetis.util;
+
+import java.io.File;
+
+public class Transcoder {
+
+
+ public void transcode(File f) {
+
+
+ try {
+ System.out.println("transcodage de " + f.getAbsolutePath());
+ Process p = Runtime.getRuntime().exec("/opt/transcode.sh " + f.getAbsolutePath());
+ p.waitFor();
+
+ Thread.sleep(1000);
+
+
+ } catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+
+
+
+ public static void main(String argc[]){
+ Transcoder transcoder = new Transcoder();
+ File f = new File("fixtures/message/good-encodage.xml");
+ transcoder.transcode(f);
+ f = new File("fixtures/message/bad-encodage.xml");
+ transcoder.transcode(f);
+
+ }
+
+
+
+}
--- /dev/null
+package com.adullact.tedetis.util;
+
+import java.io.File;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.regex.Pattern;
+
+public class Util {
+
+ public static void recursifDelete(File path) {
+
+ if (!path.exists()) return;
+
+ if (path.isDirectory()) {
+ File[] children = path.listFiles();
+ for (int i=0; children != null && i<children.length; i++) {
+ recursifDelete(children[i]);
+ }
+ }
+ path.delete();
+ }
+
+ public static boolean isDigit(String s){
+ return Pattern.matches("^[0-9]*$", s);
+
+ }
+
+ public static boolean isSIREN(String s){
+ return (s.length() == 9 && Util.isDigit(s));
+ }
+
+ public static boolean isDate(String date) {
+ DateFormat formatter = new SimpleDateFormat("yyyyMMdd");
+ formatter.setLenient(false);
+ try {
+ formatter.parse(date);
+ } catch (Exception e) {
+ return false;
+ }
+ return true;
+ }
+
+ public static String getContentType(String fichier) {
+ if (fichier.endsWith(".pdf")) {
+ return "application/pdf";
+ }
+ if (fichier.endsWith(".xml")) {
+ return "text/xml";
+ }
+ if (fichier.endsWith(".png")) {
+ return "image/png";
+ }
+ if (fichier.endsWith(".jpg")) {
+ return "image/jpeg";
+ }
+ return null;
+ }
+
+ static private DateFormat formatIn = new SimpleDateFormat("yyyyMMdd");
+ static private DateFormat formatIso = new SimpleDateFormat("yyyy-MM-dd");
+
+ public static String getDateIso(String date){
+ try {
+ return formatIso.format(formatIn.parse(date));
+ } catch (Exception e) {
+ return null;
+ }
+ }
+
+ public static String getDateXML(String date){
+ try {
+ return formatIn.format(formatIso.parse(date));
+ } catch (Exception e) {
+ return null;
+ }
+ }
+
+ public static String getToday(){
+ return formatIso.format(new java.util.Date());
+ }
+
+ public static String concatenateRepository(String firstRepository,String ... otherRepository) {
+ StringBuffer path = new StringBuffer(firstRepository);
+ for (int i = 0; i < otherRepository.length; i++) {
+ path.append(System.getProperty("file.separator"));
+ path.append(otherRepository [i]);
+ }
+ return path.toString();
+ }
+
+}
--- /dev/null
+package com.adullact.tedetis.util;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.jdom.Document;
+import org.jdom.input.SAXBuilder;
+import org.xml.sax.EntityResolver;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+import org.xml.sax.helpers.DefaultHandler;
+
+public class ValiderXML extends DefaultHandler implements EntityResolver {
+
+
+ private boolean isValid;
+
+ private File schemaPath;
+ private String externalSchemaLocation;
+
+ private Throwable cause;
+
+ private Document document;
+
+ private boolean validation = true;
+
+ public void setSchemaPath(File schemaPath){
+ this.schemaPath = schemaPath;
+ }
+
+ public void setExternalSchemaLocation(String uri,File schemaLocation){
+ this.externalSchemaLocation = uri + " file://" + schemaLocation.getAbsolutePath();
+ }
+
+ public void pasDeValidationDuSchema(){
+ validation = false;
+ }
+
+
+ private void readFile(InputStream xml) throws Exception{
+ //validation = false;
+
+ if (schemaPath == null){
+ throw new Exception("Impossible de trouver les schéma ");
+ }
+ if (! schemaPath.exists()) {
+ throw new Exception("Impossible de trouver les schéma : " + schemaPath.getAbsolutePath());
+ }
+
+ isValid = true;
+
+ SAXBuilder sxb = new SAXBuilder();
+ if (validation){
+ sxb.setEntityResolver(this);
+ sxb.setErrorHandler(this);
+ sxb.setValidation(true);
+ sxb.setFeature("http://apache.org/xml/features/validation/schema", true);
+
+ if (externalSchemaLocation != null ){
+ sxb.setProperty("http://apache.org/xml/properties/schema/external-schemaLocation",externalSchemaLocation);
+ } else {
+ sxb.setProperty("http://apache.org/xml/properties/schema/external-schemaLocation", "http://www.interieur.gouv.fr/ACTES#v1.1-20040216 xsds/actesv1_1.xsd");
+ }
+ }
+
+ document = sxb.build(xml);
+ }
+
+
+ public void read(InputStream xml) throws Exception {
+ readFile(xml);
+ }
+
+ public void isValid(InputStream xml) throws Exception {
+
+ readFile(xml);
+
+ if (! isValid ) {
+ throw new Exception("Le document n'est pas valide", cause);
+ }
+
+ }
+
+
+ public Document getDocument(){
+ return document;
+ }
+
+ //Implémentation des méthodes de DefaultHandler
+ @Override
+ public void error(SAXParseException e) {
+ cause = e;
+
+ isValid = false;
+ }
+
+ @Override
+ public void fatalError(SAXParseException e) {
+ error(e);
+ }
+
+ @Override
+ public void warning(SAXParseException e) {
+ error(e);
+ }
+
+ //Implementation des méthodes de EntityResolver
+ @Override
+ public InputSource resolveEntity(String publicId, String systemId)
+ throws SAXException, IOException {
+
+
+ if (!systemId.startsWith("file:")) {
+ return null;
+ }
+
+ systemId = systemId.substring(7);
+
+ File f = new File(schemaPath + systemId);
+ if (f.exists()){
+ System.out.println("Impossible de trouver : " + f.getAbsolutePath());
+
+ return null;
+ }
+
+ //f = new File(schemaPath + System.getProperty("file.separator") +f.getName());
+
+ InputSource is;
+ try {
+ is = new InputSource(new FileInputStream(f));
+ } catch (FileNotFoundException e) {
+ is = null;
+ }
+
+ return is;
+ }
+
+
+}