--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright © FYLAB and the Conseil Régional d'Île-de-France, 2009
+ ~ This file is part of L'Interface Libre et Interactive de l'Enseignement (Lilie).
+ ~
+ ~ Lilie is free software. You can redistribute it and/or modify since
+ ~ you respect the terms of either (at least one of the both license) :
+ ~ - under the terms of the GNU Affero General Public License as
+ ~ published by the Free Software Foundation, either version 3 of the
+ ~ License, or (at your option) any later version.
+ ~ - the CeCILL-C as published by CeCILL-C; either version 1 of the
+ ~ License, or any later version
+ ~
+ ~ There are special exceptions to the terms and conditions of the
+ ~ licenses as they are applied to this software. View the full text of
+ ~ the exception in file LICENSE.txt in the directory of this software
+ ~ distribution.
+ ~
+ ~ Lilie is distributed in the hope that it will be useful,
+ ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ ~ Licenses for more details.
+ ~
+ ~ You should have received a copy of the GNU General Public License
+ ~ and the CeCILL-C along with Lilie. If not, see :
+ ~ <http://www.gnu.org/licenses/> and
+ ~ <http://www.cecill.info/licences.fr.html>.
+ -->
+
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+ xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <!-- Pour une raison inconnue le projet ne build pas si on indique le projet parent -->
+
+ <parent>
+ <artifactId>eliot-commons</artifactId>
+ <groupId>org.lilie.services.eliot</groupId>
+ <version>2.9.5-SNAPSHOT</version>
+ </parent>
+
+ <groupId>org.lilie.services.eliot</groupId>
+ <artifactId>eliot-notes-applet</artifactId>
+ <name>eliot-notes-applet [${version}]</name>
+ <version>2.9.5-SNAPSHOT</version>
+ <packaging>jar</packaging>
+ <description>Applets pour eliot-notes</description>
+
+ <properties>
+ <version.gmaven>1.3</version.gmaven>
+ <version.groovy>1.7.6</version.groovy>
+ <version.junit>3.8.2</version.junit>
+ </properties>
+
+ <profiles>
+ <profile>
+ <id>DEV</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-jarsigner-plugin</artifactId>
+ <version>1.2</version>
+ <executions>
+ <execution>
+ <id>sign</id>
+ <goals>
+ <goal>sign</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <keystore>${project.basedir}/keystore.jks</keystore>
+ <alias>selfsigned</alias>
+ <storepass>applet</storepass>
+ <keypass>applet</keypass>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+
+ </profiles>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>1.2.15</version>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.codehaus.groovy</groupId>
+ <artifactId>groovy-all</artifactId>
+ </dependency>
+
+ <dependency>
+ <!-- Groovy activation -->
+ <groupId>org.codehaus.gmaven.runtime</groupId>
+ <artifactId>gmaven-runtime-1.7</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>org.codehaus.groovy</groupId>
+ <artifactId>groovy-all</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <resources>
+ <resource>
+ <directory>src/main/resources</directory>
+ <filtering>true</filtering>
+ </resource>
+ <resource>
+ <targetPath>META-INF</targetPath>
+ <directory>src/main/groovy/org/lilie/services/eliot/notes/applet/</directory>
+ <includes>
+ <include>MANIFEST.MF</include>
+ </includes>
+ </resource>
+ </resources>
+
+ <plugins>
+
+ <plugin>
+ <groupId>org.codehaus.gmaven</groupId>
+ <artifactId>gmaven-plugin</artifactId>
+ <version>${version.gmaven}</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>compile</goal>
+ <goal>testCompile</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <version>2.3</version>
+ <configuration>
+ <descriptorRefs>
+ <descriptorRef>jar-with-dependencies</descriptorRef>
+ </descriptorRefs>
+ <archive>
+ <manifestFile>src/main/groovy/org/lilie/services/eliot/notes/applet/MANIFEST.MF</manifestFile>
+ </archive>
+ </configuration>
+
+ <executions>
+ <execution>
+ <id>make-my-applet-jar</id>
+ <phase>package</phase>
+ <goals>
+ <goal>single</goal>
+ </goals>
+
+ </execution>
+ </executions>
+
+ </plugin>
+
+ </plugins>
+ </build>
+
+ <distributionManagement>
+ <repository>
+ <id>releases</id>
+ <name>Internal Releases</name>
+ <url>http://dev.axess-education.com:8080/nexus/content/repositories/releases</url>
+ </repository>
+ <snapshotRepository>
+ <id>snapshots</id>
+ <name>Internal Snapshots</name>
+ <url>http://dev.axess-education.com:8080/nexus/content/repositories/snapshots</url>
+ <uniqueVersion>false</uniqueVersion>
+ </snapshotRepository>
+ </distributionManagement>
+
+</project>
-package org.lilie.services.eliot.notes.applet\r
-\r
-/**\r
- * Applications pour quelles on a des versions differentes d'applet\r
- * @author msan\r
- */\r
-public enum ApplicationEnum {\r
- ADMISSION_POST_BAC ('Admission Post-Bac'),\r
- NOTANET ('Notanet')\r
-\r
- String nom\r
-\r
- ApplicationEnum(String nom) {\r
- this.nom = nom\r
- }\r
+package org.lilie.services.eliot.notes.applet
+
+/**
+ * Applications pour quelles on a des versions differentes d'applet
+ * @author msan
+ */
+public enum ApplicationEnum {
+ ADMISSION_POST_BAC('Admission Post-Bac'),
+ NOTANET('Notanet')
+
+ String nom
+
+ private ApplicationEnum(){}
+
+ private ApplicationEnum(String nom) {
+ this.nom = nom
+ }
}
\ No newline at end of file
--- /dev/null
+Manifest-Version: 1.0
+Application-Name: eliot-notes-applet
+Permissions: all-permissions
+Main-Class: org.lilie.services.eliot.notes.applet.NotanetApplet
+Codebase: *
+
package org.lilie.services.eliot.notes.applet
-import org.apache.log4j.Logger
-import org.lilie.services.eliot.notes.applet.panels.composants.panneaux.AppletPanel
-import org.lilie.services.eliot.notes.applet.panels.utils.EvenementPanel
-import org.lilie.services.eliot.notes.applet.panels.utils.PanelListener
-import org.lilie.services.eliot.notes.applet.utils.ParametresCourant
-import org.lilie.services.eliot.notes.applet.utils.log4j.LoggerInit
-
import java.awt.BorderLayout
import java.awt.Color
import java.awt.Container
import javax.swing.JApplet
import javax.swing.JOptionPane
import javax.swing.SwingWorker
-
import org.lilie.services.eliot.notes.applet.jobs.*
import org.lilie.services.eliot.notes.applet.jobs.exceptions.*
import org.lilie.services.eliot.notes.applet.panels.*
+import org.lilie.services.eliot.notes.applet.panels.utils.PanelListener
+import org.lilie.services.eliot.notes.applet.panels.composants.panneaux.AppletPanel
import org.lilie.services.eliot.notes.applet.jobs.notanet.NotanetMergeJob
+import org.lilie.services.eliot.notes.applet.utils.ParametresCourant
+import org.lilie.services.eliot.notes.applet.utils.log4j.LoggerInit
+import org.lilie.services.eliot.notes.applet.panels.utils.EvenementPanel
import org.lilie.services.eliot.notes.applet.jobs.notanet.NotanetMergeJobParams
import org.lilie.services.eliot.notes.applet.jobs.notanet.RapportMergeNotanet
+import org.apache.log4j.Logger
+import org.lilie.services.eliot.notes.applet.utils.UncaughtExceptionHandlerApplet
-class NotanetApplet extends JApplet implements PanelListener, PropertyChangeListener {
- private static final Logger LOGGER = Logger.getLogger(NotanetApplet.class)
+class NotanetApplet extends JApplet implements PanelListener, PropertyChangeListener {
+ Logger LOGGER
AppletPanel appletPanel
PanelPreparation panelPreparation
PanelTraitementFichiers panelTraitementFichiers
PanelExportFini panelExportFini
- PanelExportEchec panelExportEchec
-
NotanetMergeJob mergeJob
Runtime runtime = Runtime.getRuntime()
public void init() {
-// UIManager.setLookAndFeel(
-// UIManager.getSystemLookAndFeelClassName())
+ println "Test console"
+
+ LOGGER = Logger.getLogger(NotanetApplet.class)
// initialisation de la gestion des paramètres
ParametresCourant.get().setApplet(this)
* @author othe
*/
private void gestionExceptionNonGerees() {
- Thread.defaultUncaughtExceptionHandler = new UncaughtExceptionHandler() {
- public void uncaughtException(Thread t, Throwable e) {
- LOGGER.error "Exception"
- LOGGER.error "Thread : " + t.dump()
- LOGGER.error "Exception : " + e.getMessage()
- LOGGER.error "Details : " + e.dump()
- LOGGER.error "Classe : " + e.getClass().getCanonicalName()
- }
- }
+ Thread.defaultUncaughtExceptionHandler = new UncaughtExceptionHandlerApplet(LOGGER:LOGGER)
+// void uncaughtException(Thread t, Throwable e) {
+// LOGGER.error "Exception"
+// LOGGER.error "Thread : " + t.dump()
+// LOGGER.error "Exception : " + e.getMessage()
+// LOGGER.error "Details : " + e.dump()
+// LOGGER.error "Classe : " + e.getClass().getCanonicalName()
+// }
+ //}
}
/**
cheminAPB: panelPreparation.selectionAPB.getFilePath(),
cheminDossierCible: panelPreparation.selectionExport.getFilePath(),
uajEtablissement: ParametresCourant.get().uajEtablissement,
- anneeEnCours: ParametresCourant.get().anneeEnCours,
- docBase: ParametresCourant.get().docBase,
- codeBase: this.getCodeBase()
+ anneeEnCours: ParametresCourant.get().anneeEnCours
))
mergeJob.addPropertyChangeListener(panelTraitementFichiers)
mergeJob.addPropertyChangeListener(this)
import java.awt.Container
import javax.swing.JApplet
import org.lilie.services.eliot.notes.applet.panels.*
-import org.lilie.services.eliot.notes.applet.jobs.RapportMerge
-import org.lilie.services.eliot.notes.applet.jobs.apb.ExportJob
import java.beans.PropertyChangeListener
import java.beans.PropertyChangeEvent
import javax.swing.SwingWorker
import javax.swing.JOptionPane
-
+import java.lang.Thread.UncaughtExceptionHandler
+import org.apache.log4j.Logger
+import org.lilie.services.eliot.notes.applet.panels.utils.PanelListener
+import org.lilie.services.eliot.notes.applet.panels.composants.panneaux.AppletPanel
+import org.lilie.services.eliot.notes.applet.jobs.apb.ApbMergeJob
+import org.lilie.services.eliot.notes.applet.jobs.apb.ExportJob
+import org.lilie.services.eliot.notes.applet.utils.ParametresCourant
+import org.lilie.services.eliot.notes.applet.utils.log4j.LoggerInit
+import org.lilie.services.eliot.notes.applet.panels.utils.EvenementPanel
+import org.lilie.services.eliot.notes.applet.jobs.RapportExport
+import org.lilie.services.eliot.notes.applet.jobs.RapportMerge
+import org.lilie.services.eliot.notes.applet.jobs.apb.ApbMergeJobParams
import org.lilie.services.eliot.notes.applet.jobs.RapportTraitement
+import org.lilie.services.eliot.notes.applet.jobs.exceptions.AffichableException
import org.lilie.services.eliot.notes.applet.jobs.exceptions.MauvaiseAnneeException
import org.lilie.services.eliot.notes.applet.jobs.exceptions.MauvaisEtablissementException
import org.lilie.services.eliot.notes.applet.jobs.exceptions.MauvaisFichierException
import org.lilie.services.eliot.notes.applet.jobs.exceptions.MauvaisDossierException
-import org.lilie.services.eliot.notes.applet.jobs.RapportExport
-import org.lilie.services.eliot.notes.applet.panels.composants.panneaux.AppletPanel
-import org.lilie.services.eliot.notes.applet.panels.utils.PanelListener
-import org.lilie.services.eliot.notes.applet.panels.utils.EvenementPanel
import org.lilie.services.eliot.notes.applet.jobs.apb.ExportJobParams
-import java.lang.Thread.UncaughtExceptionHandler
-import org.apache.log4j.Logger
-import org.lilie.services.eliot.notes.applet.utils.log4j.LoggerInit
-import org.lilie.services.eliot.notes.applet.utils.ParametresCourant
-import org.lilie.services.eliot.notes.applet.jobs.apb.ApbMergeJob
-import org.lilie.services.eliot.notes.applet.jobs.apb.ApbMergeJobParams
-import org.lilie.services.eliot.notes.applet.jobs.exceptions.AffichableException
+import org.lilie.services.eliot.notes.applet.utils.UncaughtExceptionHandlerApplet
/**
* L'applet d'export APB.
* @author othe
*/
private void gestionExceptionNonGerees() {
- Thread.defaultUncaughtExceptionHandler = new UncaughtExceptionHandler() {
- public void uncaughtException(Thread t, Throwable e) {
- LOGGER.error "Exception"
- LOGGER.error "Thread : " + t.dump()
- LOGGER.error "Exception : " + e.getMessage()
- LOGGER.error "Details : " + e.dump()
- LOGGER.error "Classe : " + e.getClass().getCanonicalName()
- }
- }
+ Thread.defaultUncaughtExceptionHandler = new UncaughtExceptionHandlerApplet(LOGGER:LOGGER)
+// Thread.defaultUncaughtExceptionHandler = new UncaughtExceptionHandler() {
+// public void uncaughtException(Thread t, Throwable e) {
+// LOGGER.error "Exception"
+// LOGGER.error "Thread : " + t.dump()
+// LOGGER.error "Exception : " + e.getMessage()
+// LOGGER.error "Details : " + e.dump()
+// LOGGER.error "Classe : " + e.getClass().getCanonicalName()
+// }
+// }
}
/**
cheminAPB: panelPreparation.selectionAPB.getFilePath(),
cheminDossierCible: panelPreparation.selectionExport.getFilePath(),
uajEtablissement: ParametresCourant.get().uajEtablissement,
- anneeEnCours: ParametresCourant.get().anneeEnCours,
- docBase: ParametresCourant.get().docBase,
- codeBase: this.getCodeBase()
+ anneeEnCours: ParametresCourant.get().anneeEnCours
))
mergeJob.addPropertyChangeListener(panelTraitementFichiers)
mergeJob.addPropertyChangeListener(this)
package org.lilie.services.eliot.notes.applet.data
-import org.lilie.services.eliot.notes.applet.data.apb.dto.ClasseAPB
-import org.lilie.services.eliot.notes.applet.xml.XMLAbstractObject
+import javax.xml.stream.XMLStreamReader
import org.lilie.services.eliot.notes.applet.xml.XMLStreamExtractor
import org.lilie.services.eliot.notes.applet.services.FichierImportExport
import org.lilie.services.eliot.notes.applet.utils.Cartouche
-import org.lilie.services.eliot.notes.applet.data.apb.dto.EtablissementAPB
+import org.lilie.services.eliot.notes.applet.xml.XMLAbstractObject
import org.lilie.services.eliot.notes.applet.data.apb.dto.FichierAPB
import org.lilie.services.eliot.notes.applet.utils.ParametresCourant
-import javax.xml.stream.XMLStreamReader
+import org.lilie.services.eliot.notes.applet.data.apb.dto.EtablissementAPB
+import org.lilie.services.eliot.notes.applet.data.apb.dto.ClasseAPB
/**
* Gestion des données destinées au cartouche. Ce service extrait des données
-package org.lilie.services.eliot.notes.applet.data\r
-\r
-/**\r
- * L'information sur un eleve\r
- * @author msan\r
- */\r
-class EleveInfo {\r
-\r
- String idSconet // idSconet d'eleve\r
- String ine // INE d'eleve\r
- String nom // nom d'eleve\r
- String prenom // prenom d'eleve\r
- String dateNaissance // date de naissance\r
- String classe // classe d'appartenance\r
-}\r
+package org.lilie.services.eliot.notes.applet.data
+
+/**
+ * L'information sur un eleve
+ * @author msan
+ */
+class EleveInfo {
+
+ String idSconet // idSconet d'eleve
+ String ine // INE d'eleve
+ String nom // nom d'eleve
+ String prenom // prenom d'eleve
+ String dateNaissance // date de naissance
+ String classe // classe d'appartenance
+}
-package org.lilie.services.eliot.notes.applet.data\r
-\r
-import org.lilie.services.eliot.notes.applet.data.apb.ServiceNotationInfo\r
-\r
-/**\r
- * L'information sur un eleve et l'annee scolaire\r
- * @author msan\r
- */\r
-class EleveInfoEtendu extends EleveInfo {\r
-\r
- String idEliotNotes // id d'eleve genere par eliot notes\r
- String annee // code d'annee scolaire (2012, ..)\r
- List<ModaliteInfo> modalites // info sur les modalites de fichierSconet\r
- List<ServiceNotationInfo> services // services d'eleve\r
-}\r
+package org.lilie.services.eliot.notes.applet.data
+
+import org.lilie.services.eliot.notes.applet.data.apb.ServiceNotationInfo
+
+/**
+ * L'information sur un eleve et l'annee scolaire
+ * @author msan
+ */
+class EleveInfoEtendu extends EleveInfo {
+
+ String idEliotNotes // id d'eleve genere par eliot notes
+ String annee // code d'annee scolaire (2012, ..)
+ List<ModaliteInfo> modalites // info sur les modalites de fichierSconet
+ List<ServiceNotationInfo> services // services d'eleve
+}
-package org.lilie.services.eliot.notes.applet.data\r
-\r
-/**\r
- * Information sur un matiere\r
- * @author msan\r
- */\r
-class MatiereInfo {\r
- String codeSconet\r
- String libelleSconet\r
-}\r
+package org.lilie.services.eliot.notes.applet.data
+
+/**
+ * Information sur un matiere
+ * @author msan
+ */
+class MatiereInfo {
+ String codeSconet
+ String libelleSconet
+}
-package org.lilie.services.eliot.notes.applet.data\r
-\r
-/**\r
- * Info sur une modalite changee\r
- * @author msan\r
- */\r
-class ModaliteChangeeInfo {\r
- String ine = null // INE d'eleve\r
- String matiereIdSconet = null\r
- ModaliteElection modalite = null\r
-}\r
+package org.lilie.services.eliot.notes.applet.data
+
+/**
+ * Info sur une modalite changee
+ * @author msan
+ */
+class ModaliteChangeeInfo {
+ String ine = null // INE d'eleve
+ String matiereIdSconet = null
+ ModaliteElection modalite = null
+}
-package org.lilie.services.eliot.notes.applet.data\r
-\r
-/**\r
- * Modalite d'election\r
- * @author msan\r
- */\r
-public enum ModaliteElection {\r
- S ('Tronc commun'), // Enseignement suivi en tronc commun\r
- O ('Obligatoire'), // Enseignement en option obligatoire\r
- // (Il s’agit d’un enseignement choisi par l’élève parmi une liste d’options obligatoires)\r
- F ('Facultative'), // Enseignement en option facultative\r
- N ('Inconnu') // pas encore choisie\r
-\r
- private String libelle\r
- \r
- ModaliteElection(String libelle) {\r
- this.libelle = libelle\r
- }\r
- \r
- String getLibelle() {\r
- return this.libelle\r
- }\r
-\r
- static ModaliteElection findByLibelle(String libelle) {\r
- switch(libelle) {\r
- case O.libelle: return O\r
- case F.libelle: return F\r
- case N.libelle: return N\r
- case S.libelle: return S\r
- default:\r
- return null\r
- }\r
- }\r
-\r
- static ModaliteElection findByCode(String code) {\r
- switch(code) {\r
- case 'O': return O\r
- case 'F': return F\r
- case 'N': return N\r
- case 'S': return S\r
- default:\r
- return null\r
- }\r
- }\r
-\r
- String toString() {\r
- return this.libelle\r
- }\r
+package org.lilie.services.eliot.notes.applet.data
+
+/**
+ * Modalite d'election
+ * @author msan
+ */
+public enum ModaliteElection {
+ S('Tronc commun'), // Enseignement suivi en tronc commun
+ O('Obligatoire'), // Enseignement en option obligatoire
+ // (Il s’agit d’un enseignement choisi par l’élève parmi une liste d’options obligatoires)
+ F('Facultative'), // Enseignement en option facultative
+ N('Inconnu') // pas encore choisie
+
+ public String libelle
+
+ private ModaliteElection(){}
+
+ private ModaliteElection(String libelle) {
+ this.libelle = libelle
+ }
+
+ String getLibelle() {
+ return this.libelle
+ }
+
+ static ModaliteElection findByLibelle(String libelle) {
+ switch(libelle) {
+ case O.libelle: return O
+ case F.libelle: return F
+ case N.libelle: return N
+ case S.libelle: return S
+ default:
+ return null
+ }
+ }
+
+ static ModaliteElection findByCode(String code) {
+ switch(code) {
+ case 'O': return O
+ case 'F': return F
+ case 'N': return N
+ case 'S': return S
+ default:
+ return null
+ }
+ }
+
+ String toString() {
+ return this.libelle
+ }
}
\ No newline at end of file
-package org.lilie.services.eliot.notes.applet.data\r
-\r
-/**\r
- * @author msan\r
- */\r
-class ModaliteInfo {\r
- String matiereIdSconet // idSconet de matiere\r
- ModaliteElection modalite // modalite d'election pour l'eleve + annee + matiere\r
-}\r
+package org.lilie.services.eliot.notes.applet.data
+
+/**
+ * @author msan
+ */
+class ModaliteInfo {
+ String matiereIdSconet // idSconet de matiere
+ ModaliteElection modalite // modalite d'election pour l'eleve + annee + matiere
+}
package org.lilie.services.eliot.notes.applet.data.apb
+import javax.xml.stream.XMLStreamReader
+import org.lilie.services.eliot.notes.applet.xml.XMLStreamExtractor
+import org.lilie.services.eliot.notes.applet.data.EleveInfoEtendu
import org.lilie.services.eliot.notes.applet.data.MatiereInfo
import org.lilie.services.eliot.notes.applet.data.apb.dto.EleveAPB
-import org.lilie.services.eliot.notes.applet.data.apb.dto.MatiereAPB
-import org.lilie.services.eliot.notes.applet.data.apb.dto.NotesAPB
import org.lilie.services.eliot.notes.applet.data.apb.dto.ServiceNotationAPB
+import org.lilie.services.eliot.notes.applet.data.apb.dto.MatiereAPB
import org.lilie.services.eliot.notes.applet.xml.XMLAbstractObject
-import org.lilie.services.eliot.notes.applet.xml.XMLStreamExtractor
-
-import javax.xml.stream.XMLStreamReader
-import org.lilie.services.eliot.notes.applet.data.EleveInfoEtendu
+import org.lilie.services.eliot.notes.applet.data.apb.dto.NotesAPB
/**
* Extraction des donnees des fichiers APB
-package org.lilie.services.eliot.notes.applet.data.apb\r
-\r
-import org.lilie.services.eliot.notes.applet.data.EleveInfoEtendu\r
-import org.lilie.services.eliot.notes.applet.data.MatiereInfo\r
-\r
-/**\r
- * Donnees venants de fichier Admission Post-Bac brut, genere par eliot-notes\r
- * @author msan\r
- */\r
-class DonneesAPB {\r
- List<EleveInfoEtendu> eleveInfos\r
- List<MatiereInfo> matiereInfos\r
- List<ServiceNotationInfo> serviceNotationInfos\r
-}\r
+package org.lilie.services.eliot.notes.applet.data.apb
+
+import org.lilie.services.eliot.notes.applet.data.EleveInfoEtendu
+import org.lilie.services.eliot.notes.applet.data.MatiereInfo
+
+/**
+ * Donnees venants de fichier Admission Post-Bac brut, genere par eliot-notes
+ * @author msan
+ */
+class DonneesAPB {
+ List<EleveInfoEtendu> eleveInfos
+ List<MatiereInfo> matiereInfos
+ List<ServiceNotationInfo> serviceNotationInfos
+}
-package org.lilie.services.eliot.notes.applet.data.apb\r
-\r
-/**\r
- * Information sur un service de notation\r
- * @author msan\r
- */\r
-class ServiceNotationInfo {\r
- String idInterne\r
- String idMatiereInterne\r
- String codeMatiereSconet\r
-}\r
+package org.lilie.services.eliot.notes.applet.data.apb
+
+/**
+ * Information sur un service de notation
+ * @author msan
+ */
+class ServiceNotationInfo {
+ String idInterne
+ String idMatiereInterne
+ String codeMatiereSconet
+}
package org.lilie.services.eliot.notes.applet.data.apb.dto
import org.lilie.services.eliot.notes.applet.xml.XMLBindAnnotation
-import org.lilie.services.eliot.notes.applet.xml.XMLDataTypeEnum
import org.lilie.services.eliot.notes.applet.xml.XMLAbstractObject
+import org.lilie.services.eliot.notes.applet.xml.XMLDataTypeEnum
/**
* Dans le fichier APB chaque année scolaire est associée à une classe(mef)
import org.lilie.services.eliot.notes.applet.xml.XMLBindAnnotation
import org.lilie.services.eliot.notes.applet.xml.XMLAbstractObject
import org.lilie.services.eliot.notes.applet.xml.XMLDataTypeEnum
-
import org.lilie.services.eliot.notes.applet.data.EleveInfoEtendu
/**
package org.lilie.services.eliot.notes.applet.data.apb.dto
-import org.lilie.services.eliot.notes.applet.xml.XMLAbstractObject
import org.lilie.services.eliot.notes.applet.xml.XMLBindAnnotation
+import org.lilie.services.eliot.notes.applet.xml.XMLAbstractObject
import org.lilie.services.eliot.notes.applet.xml.XMLDataTypeEnum
import org.lilie.services.eliot.notes.applet.i18n.Constantes
package org.lilie.services.eliot.notes.applet.data.apb.dto
-import org.lilie.services.eliot.notes.applet.xml.XMLAbstractObject
import org.lilie.services.eliot.notes.applet.xml.XMLBindAnnotation
+import org.lilie.services.eliot.notes.applet.xml.XMLAbstractObject
import org.lilie.services.eliot.notes.applet.xml.XMLDataTypeEnum
/**
package org.lilie.services.eliot.notes.applet.data.apb.dto
-import org.lilie.services.eliot.notes.applet.xml.XMLAbstractObject
import org.lilie.services.eliot.notes.applet.xml.XMLBindAnnotation
+import org.lilie.services.eliot.notes.applet.xml.XMLAbstractObject
import org.lilie.services.eliot.notes.applet.xml.XMLDataTypeEnum
/**
package org.lilie.services.eliot.notes.applet.data.apb.dto
-import org.lilie.services.eliot.notes.applet.xml.XMLAbstractObject
import org.lilie.services.eliot.notes.applet.xml.XMLBindAnnotation
+import org.lilie.services.eliot.notes.applet.xml.XMLAbstractObject
import org.lilie.services.eliot.notes.applet.xml.XMLDataTypeEnum
/**
package org.lilie.services.eliot.notes.applet.data.notanet
-import org.lilie.services.eliot.notes.applet.xml.XMLAbstractObject
-import org.lilie.services.eliot.notes.applet.xml.XMLStreamExtractor
-
import javax.xml.stream.XMLStreamReader
-
+import org.lilie.services.eliot.notes.applet.xml.XMLStreamExtractor
import org.lilie.services.eliot.notes.applet.data.notanet.dto.EleveNotanet
+import org.lilie.services.eliot.notes.applet.xml.XMLAbstractObject
/**
* Extraction des donnees des fichiers Notanet
-package org.lilie.services.eliot.notes.applet.data.notanet\r
-\r
-/**\r
- * Resultat d'une erpeuve\r
- * @author msan\r
- */\r
-class NotanetResultatInfo {\r
- String codeEpreuve = null // code epreuve: 101, 130, TOT, ..\r
- String note = null // note numerique, DI, AB, NV, VA\r
-}\r
+package org.lilie.services.eliot.notes.applet.data.notanet
+
+/**
+ * Resultat d'une erpeuve
+ * @author msan
+ */
+class NotanetResultatInfo {
+ String codeEpreuve = null // code epreuve: 101, 130, TOT, ..
+ String note = null // note numerique, DI, AB, NV, VA
+}
-package org.lilie.services.eliot.notes.applet.data.notanet.dto\r
-\r
-import org.lilie.services.eliot.notes.applet.xml.XMLBindAnnotation\r
-import org.lilie.services.eliot.notes.applet.xml.XMLAbstractObject\r
-import org.lilie.services.eliot.notes.applet.xml.XMLDataTypeEnum\r
-\r
-/**\r
- * Eleve exporte avec ces notes d'epreuves\r
- * @author msan\r
- */\r
-@XMLBindAnnotation(name = 'eleve')\r
-class EleveNotanet extends XMLAbstractObject {\r
-\r
- @XMLBindAnnotation(name = 'nom', type = XMLDataTypeEnum.ATTRIBUT)\r
- String nom\r
-\r
- @XMLBindAnnotation(name = 'prenom', type = XMLDataTypeEnum.ATTRIBUT)\r
- String prenom\r
-\r
- @XMLBindAnnotation(name = 'date-naissance', type = XMLDataTypeEnum.ATTRIBUT)\r
- String dateNaissance\r
-\r
- @XMLBindAnnotation(name = 'id-sconet', type = XMLDataTypeEnum.ATTRIBUT)\r
- String idSconet\r
-\r
- @XMLBindAnnotation(name = 'classe', type = XMLDataTypeEnum.ATTRIBUT)\r
- String classe\r
-\r
- @XMLBindAnnotation(name = 'note', type = XMLDataTypeEnum.ELEMENT)\r
- List<NoteNotanet> notes\r
-\r
+package org.lilie.services.eliot.notes.applet.data.notanet.dto
+
+import org.lilie.services.eliot.notes.applet.xml.XMLBindAnnotation
+import org.lilie.services.eliot.notes.applet.xml.XMLAbstractObject
+import org.lilie.services.eliot.notes.applet.xml.XMLDataTypeEnum
+
+/**
+ * Eleve exporte avec ces notes d'epreuves
+ * @author msan
+ */
+@XMLBindAnnotation(name = 'eleve')
+class EleveNotanet extends XMLAbstractObject {
+
+ @XMLBindAnnotation(name = 'nom', type = XMLDataTypeEnum.ATTRIBUT)
+ String nom
+
+ @XMLBindAnnotation(name = 'prenom', type = XMLDataTypeEnum.ATTRIBUT)
+ String prenom
+
+ @XMLBindAnnotation(name = 'date-naissance', type = XMLDataTypeEnum.ATTRIBUT)
+ String dateNaissance
+
+ @XMLBindAnnotation(name = 'id-sconet', type = XMLDataTypeEnum.ATTRIBUT)
+ String idSconet
+
+ @XMLBindAnnotation(name = 'classe', type = XMLDataTypeEnum.ATTRIBUT)
+ String classe
+
+ @XMLBindAnnotation(name = 'note', type = XMLDataTypeEnum.ELEMENT)
+ List<NoteNotanet> notes
+
}
\ No newline at end of file
-package org.lilie.services.eliot.notes.applet.data.notanet.dto\r
-\r
-import org.lilie.services.eliot.notes.applet.xml.XMLBindAnnotation\r
-import org.lilie.services.eliot.notes.applet.xml.XMLAbstractObject\r
-import org.lilie.services.eliot.notes.applet.xml.XMLDataTypeEnum\r
-\r
-/**\r
- * Note d'une epreuve\r
- * @author msan\r
- */\r
-@XMLBindAnnotation(name = 'note')\r
-class NoteNotanet extends XMLAbstractObject {\r
-\r
- @XMLBindAnnotation(name = 'code-epreuve', type = XMLDataTypeEnum.ATTRIBUT)\r
- String codeEpreuve\r
-\r
- @XMLBindAnnotation(name = 'note', type = XMLDataTypeEnum.ATTRIBUT)\r
- String note\r
-\r
+package org.lilie.services.eliot.notes.applet.data.notanet.dto
+
+import org.lilie.services.eliot.notes.applet.xml.XMLBindAnnotation
+import org.lilie.services.eliot.notes.applet.xml.XMLAbstractObject
+import org.lilie.services.eliot.notes.applet.xml.XMLDataTypeEnum
+
+/**
+ * Note d'une epreuve
+ * @author msan
+ */
+@XMLBindAnnotation(name = 'note')
+class NoteNotanet extends XMLAbstractObject {
+
+ @XMLBindAnnotation(name = 'code-epreuve', type = XMLDataTypeEnum.ATTRIBUT)
+ String codeEpreuve
+
+ @XMLBindAnnotation(name = 'note', type = XMLDataTypeEnum.ATTRIBUT)
+ String note
+
}
\ No newline at end of file
-package org.lilie.services.eliot.notes.applet.data.sconet\r
-\r
-import org.lilie.services.eliot.notes.applet.data.sconet.dto.EleveSconet\r
-\r
-/**\r
- * Donnees venants de fichier Sconet\r
- * @author msan\r
- */\r
-class DonneesSconet {\r
- List<EleveSconet> elevesSconet\r
- String uaj\r
- String anneeScolaire\r
- String dateExport\r
-}\r
+package org.lilie.services.eliot.notes.applet.data.sconet
+
+import org.lilie.services.eliot.notes.applet.data.sconet.dto.EleveSconet
+
+/**
+ * Donnees venants de fichier Sconet
+ * @author msan
+ */
+class DonneesSconet {
+ List<EleveSconet> elevesSconet
+ String uaj
+ String anneeScolaire
+ String dateExport
+}
package org.lilie.services.eliot.notes.applet.data.sconet
-import org.lilie.services.eliot.notes.applet.xml.XMLAbstractObject
-import org.lilie.services.eliot.notes.applet.xml.XMLStreamExtractor
import javax.xml.stream.XMLStreamReader
import org.lilie.services.eliot.notes.applet.data.sconet.dto.EleveSconet
import org.lilie.services.eliot.notes.applet.data.sconet.dto.OptionEleveSconet
import org.lilie.services.eliot.notes.applet.data.sconet.dto.ParamSconet
+import org.lilie.services.eliot.notes.applet.xml.XMLStreamExtractor
+import org.lilie.services.eliot.notes.applet.xml.XMLAbstractObject
/**
* Extraction des donnees des fichiers Sconet
package org.lilie.services.eliot.notes.applet.data.sconet.dto
import org.lilie.services.eliot.notes.applet.xml.XMLBindAnnotation
-import org.lilie.services.eliot.notes.applet.xml.XMLDataTypeEnum
import org.lilie.services.eliot.notes.applet.xml.XMLAbstractObject
+import org.lilie.services.eliot.notes.applet.xml.XMLDataTypeEnum
/**
* Mappe l'élément 'PARAMETRES' dans les fichiers issus de Sconet.
package org.lilie.services.eliot.notes.applet.jobs
import javax.swing.SwingWorker
-import org.lilie.services.eliot.notes.applet.services.FichierImportExport
-
import javax.xml.stream.XMLStreamReader
+import org.apache.log4j.Logger
import org.lilie.services.eliot.notes.applet.data.sconet.DonneesSconet
+import org.lilie.services.eliot.notes.applet.services.FichierImportExport
+import org.lilie.services.eliot.notes.applet.data.sconet.SconetInfoFactory
import org.lilie.services.eliot.notes.applet.jobs.exceptions.MauvaisEtablissementException
import org.lilie.services.eliot.notes.applet.jobs.exceptions.MauvaiseAnneeException
-import org.apache.log4j.Logger
-import org.lilie.services.eliot.notes.applet.data.sconet.SconetInfoFactory
/**
* Parent commun de jobs de merge des fichiers Sconet
String uajEtablissement = null
String anneeEnCours = null
File dossierExport = null
- String docBase = null
- URL codeBase = null
RapportMerge rapportMerge = null
-package org.lilie.services.eliot.notes.applet.jobs\r
-\r
-/**\r
- * Les phases de traitement\r
- * @author msan\r
- */\r
-enum Phase {\r
- VERIFICATION_FICHIER_NOTANET,\r
- VERIFICATION_FICHIER_APB,\r
- CREATION_DOSSIER_EXPORT,\r
- PARSING_SCONET,\r
- PARSING_APB,\r
- PARSING_NOTANET,\r
- MERGE,\r
- PASSAGE_A_EXPORT,\r
- EXPORT_NOTANET,\r
- EXPORT_APB,\r
- EXPORT_RAPPORT,\r
- FIN\r
-}\r
+package org.lilie.services.eliot.notes.applet.jobs
+
+/**
+ * Les phases de traitement
+ * @author msan
+ */
+enum Phase {
+ VERIFICATION_FICHIER_NOTANET,
+ VERIFICATION_FICHIER_APB,
+ CREATION_DOSSIER_EXPORT,
+ PARSING_SCONET,
+ PARSING_APB,
+ PARSING_NOTANET,
+ MERGE,
+ PASSAGE_A_EXPORT,
+ EXPORT_NOTANET,
+ EXPORT_APB,
+ EXPORT_RAPPORT,
+ FIN
+}
-package org.lilie.services.eliot.notes.applet.jobs\r
-\r
-/**\r
- * Rapport d'export.\r
- * Utilise pour passer l'infos d'une phase de traitement a l'autre.\r
- * @author msan\r
- */\r
-class RapportExport extends RapportTraitement {\r
-\r
- Phase phase = null // utilise si une exception est levee pendant le traitement\r
- Boolean traitementOk = false // positione a la fin de job\r
- File fichierRapport = null\r
- File fichierAPBetendu = null\r
- Long totalElevesExportes = 0 // nombre d'eleves exportes\r
-\r
+package org.lilie.services.eliot.notes.applet.jobs
+
+/**
+ * Rapport d'export.
+ * Utilise pour passer l'infos d'une phase de traitement a l'autre.
+ * @author msan
+ */
+class RapportExport extends RapportTraitement {
+
+ Phase phase = null // utilise si une exception est levee pendant le traitement
+ Boolean traitementOk = false // positione a la fin de job
+ File fichierRapport = null
+ File fichierAPBetendu = null
+ Long totalElevesExportes = 0 // nombre d'eleves exportes
+
}
\ No newline at end of file
-package org.lilie.services.eliot.notes.applet.jobs\r
-\r
-import org.lilie.services.eliot.notes.applet.jobs.exceptions.EleveSansCorrespondanceException\r
-\r
-/**\r
- * Rapport de merge.\r
- * Utilise pour passer l'infos d'une phase de traitement a l'autre.\r
- * @author msan\r
- */\r
-class RapportMerge extends RapportTraitement {\r
-\r
- Phase phase = null // utilise si une exception est levee pendant le traitement\r
- \r
- Boolean dossierExportOk = false\r
- Boolean sconetParseOk = false\r
- Boolean mergeOk = false\r
-\r
- Boolean traitementOk = false // positione a la fin de job\r
-\r
- List<EleveSansCorrespondanceException> elevesManquants = [] // eleves pas present dans le fichier Sconet\r
-\r
-}\r
+package org.lilie.services.eliot.notes.applet.jobs
+
+import org.lilie.services.eliot.notes.applet.jobs.exceptions.EleveSansCorrespondanceException
+
+/**
+ * Rapport de merge.
+ * Utilise pour passer l'infos d'une phase de traitement a l'autre.
+ * @author msan
+ */
+class RapportMerge extends RapportTraitement {
+
+ Phase phase = null // utilise si une exception est levee pendant le traitement
+
+ Boolean dossierExportOk = false
+ Boolean sconetParseOk = false
+ Boolean mergeOk = false
+
+ Boolean traitementOk = false // positione a la fin de job
+
+ List<EleveSansCorrespondanceException> elevesManquants = [] // eleves pas present dans le fichier Sconet
+
+}
-package org.lilie.services.eliot.notes.applet.jobs\r
-\r
-/**\r
- * Rapport de traitement general.\r
- * Utilise pour passer l'infos d'une phase de traitement a l'autre.\r
- * @author msan\r
- */\r
-class RapportTraitement {\r
- List<Throwable> exceptions = []\r
-}\r
+package org.lilie.services.eliot.notes.applet.jobs
+
+/**
+ * Rapport de traitement general.
+ * Utilise pour passer l'infos d'une phase de traitement a l'autre.
+ * @author msan
+ */
+class RapportTraitement {
+ List<Throwable> exceptions = []
+}
package org.lilie.services.eliot.notes.applet.jobs.apb
-import org.apache.log4j.Logger
+import org.xml.sax.SAXException
+import javax.xml.stream.XMLStreamReader
+import java.util.logging.Logger
+import org.lilie.services.eliot.notes.applet.jobs.MergeJob
import org.lilie.services.eliot.notes.applet.data.EleveInfoEtendu
-import org.lilie.services.eliot.notes.applet.data.MatiereInfo
-import org.lilie.services.eliot.notes.applet.data.apb.APBInfoFactory
-import org.lilie.services.eliot.notes.applet.data.apb.DonneesAPB
import org.lilie.services.eliot.notes.applet.data.apb.ServiceNotationInfo
-
-import org.lilie.services.eliot.notes.applet.jobs.Phase
+import org.lilie.services.eliot.notes.applet.data.MatiereInfo
+import org.lilie.services.eliot.notes.applet.services.apb.ApbMergeService
+import org.lilie.services.eliot.notes.applet.utils.ParametresCourant
+import org.lilie.services.eliot.notes.applet.utils.log4j.LoggerInit
import org.lilie.services.eliot.notes.applet.jobs.RapportMerge
-
import org.lilie.services.eliot.notes.applet.jobs.exceptions.FichierAPBInvalideException
+import org.lilie.services.eliot.notes.applet.jobs.Phase
import org.lilie.services.eliot.notes.applet.services.FichierImportExport
-import org.lilie.services.eliot.notes.applet.services.apb.ApbMergeService
import org.lilie.services.eliot.notes.applet.services.apb.MergeResultatApb
-import org.lilie.services.eliot.notes.applet.utils.ParametresCourant
-import org.lilie.services.eliot.notes.applet.utils.log4j.LoggerInit
-import org.xml.sax.SAXException
-
-import javax.xml.stream.XMLStreamReader
-import org.lilie.services.eliot.notes.applet.jobs.MergeJob
+import org.lilie.services.eliot.notes.applet.data.apb.APBInfoFactory
+import org.lilie.services.eliot.notes.applet.data.apb.DonneesAPB
/**
* Job de merge des fichiers Sconet et APB d'eliot-notes
cheminDossierCible = params.cheminDossierCible
uajEtablissement = params.uajEtablissement
anneeEnCours = params.anneeEnCours
- docBase = params.docBase
- codeBase = params.codeBase
apbMergeService = new ApbMergeService()
if (ParametresCourant.get().log()) {
void verifieFichierAPB(RapportMerge rapportMerge) {
rapportMerge.phase = Phase.VERIFICATION_FICHIER_APB
try {
- FichierImportExport.valideFichierAPB(cheminAPB, codeBase, docBase)
+ FichierImportExport.valideFichierAPB(cheminAPB)
} catch (SAXException e) {
LOGGER.error("Fichier APB brut n'est pas valide par rapport à XSD", e)
throw new FichierAPBInvalideException(cheminAPB, e)
-package org.lilie.services.eliot.notes.applet.jobs.apb\r
-\r
-/**\r
- * Parametres de ApbMergeJob\r
- * @author msan\r
- */\r
-class ApbMergeJobParams {\r
- String cheminAPB // chemin vers le fichier APB\r
- String cheminSconet // chemin vers le fichier Sconet\r
- String cheminDossierCible // chemin vers le dossier d'export\r
- \r
- String uajEtablissement = null // rne/uaj d'etablissement\r
- String anneeEnCours = null // l'annee scolaire en cours\r
-\r
- String docBase // dossier contenant les fichiers auxiliaires\r
- URL codeBase // codebase d'applet\r
-}\r
+package org.lilie.services.eliot.notes.applet.jobs.apb
+
+/**
+ * Parametres de ApbMergeJob
+ * @author msan
+ */
+class ApbMergeJobParams {
+ String cheminAPB // chemin vers le fichier APB
+ String cheminSconet // chemin vers le fichier Sconet
+ String cheminDossierCible // chemin vers le dossier d'export
+
+ String uajEtablissement = null // rne/uaj d'etablissement
+ String anneeEnCours = null // l'annee scolaire en cours
+
+ String docBase // dossier contenant les fichiers auxiliaires
+ URL codeBase // codebase d'applet
+}
package org.lilie.services.eliot.notes.applet.jobs.apb
import javax.swing.SwingWorker
-
+import org.apache.log4j.Logger
+import org.lilie.services.eliot.notes.applet.data.EleveInfoEtendu
+import org.lilie.services.eliot.notes.applet.jobs.RapportExport
+import org.lilie.services.eliot.notes.applet.data.ModaliteChangeeInfo
+import org.lilie.services.eliot.notes.applet.jobs.exceptions.EleveSansCorrespondanceException
import org.lilie.services.eliot.notes.applet.data.apb.ServiceNotationInfo
-
import org.lilie.services.eliot.notes.applet.services.ExportService
-import org.lilie.services.eliot.notes.applet.services.ExportParams
import org.lilie.services.eliot.notes.applet.services.RapportService
+import org.lilie.services.eliot.notes.applet.services.ExportParams
import org.lilie.services.eliot.notes.applet.services.RapportParams
-import org.lilie.services.eliot.notes.applet.data.ModaliteChangeeInfo
-import org.lilie.services.eliot.notes.applet.jobs.RapportExport
-
import org.lilie.services.eliot.notes.applet.jobs.Phase
import org.lilie.services.eliot.notes.applet.i18n.Constantes
-import org.lilie.services.eliot.notes.applet.jobs.exceptions.EleveSansCorrespondanceException
-import org.lilie.services.eliot.notes.applet.data.EleveInfoEtendu
-import org.apache.log4j.Logger
-import org.lilie.services.eliot.notes.applet.utils.ParametresCourant
-import org.lilie.services.eliot.notes.applet.utils.log4j.LoggerInit
/**
* Job d'export de fichier APB etendu (avec les INEs et les modalites d'election)
-/*\r
- * Copyright © FYLAB and the Conseil Régional d'Île-de-France, 2009\r
- * This file is part of L'Interface Libre et Interactive de l'Enseignement (Lilie).\r
- *\r
- * Lilie is free software. You can redistribute it and/or modify since\r
- * you respect the terms of either (at least one of the both license) :\r
- * - under the terms of the GNU Affero General Public License as\r
- * published by the Free Software Foundation, either version 3 of the\r
- * License, or (at your option) any later version.\r
- * - the CeCILL-C as published by CeCILL-C; either version 1 of the\r
- * License, or any later version\r
- *\r
- * There are special exceptions to the terms and conditions of the\r
- * licenses as they are applied to this software. View the full text of\r
- * the exception in file LICENSE.txt in the directory of this software\r
- * distribution.\r
- *\r
- * Lilie is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- * Licenses for more details.\r
- *\r
- * You should have received a copy of the GNU General Public License\r
- * and the CeCILL-C along with Lilie. If not, see :\r
- * <http://www.gnu.org/licenses/> and\r
- * <http://www.cecill.info/licences.fr.html>.\r
- */\r
-\r
-package org.lilie.services.eliot.notes.applet.jobs.apb\r
-\r
-import org.lilie.services.eliot.notes.applet.data.EleveInfoEtendu\r
-import org.lilie.services.eliot.notes.applet.data.apb.ServiceNotationInfo\r
-import org.lilie.services.eliot.notes.applet.data.ModaliteChangeeInfo\r
-import org.lilie.services.eliot.notes.applet.jobs.exceptions.EleveSansCorrespondanceException\r
-\r
-/**\r
- * Parametres d'ExportJob\r
- * @author msan\r
- */\r
-class ExportJobParams {\r
- File fichierAPBbrut // fichier APB brut (exporte d'eliot-notes)\r
- File dossierCible // dossier d'export\r
- List<EleveInfoEtendu> eleveInfos = [] // eleve infos\r
- List<ModaliteChangeeInfo> modaliteChangeeInfos = [] // modalites choisises dans la grille\r
- List<EleveSansCorrespondanceException> elevesManquants = [] // eleves absents dans le fichier Sconet\r
- String rneEtablissement // RNE d'establissement\r
- Integer typeExport // type d'export\r
- List<ServiceNotationInfo> serviceNotationInfos = [] // infos de srvices de notation\r
- String anneeScolaireSconet // annee pour laquelle sont les donnes dans le fichier Sconet\r
-}\r
+/*
+ * Copyright © FYLAB and the Conseil Régional d'Île-de-France, 2009
+ * This file is part of L'Interface Libre et Interactive de l'Enseignement (Lilie).
+ *
+ * Lilie is free software. You can redistribute it and/or modify since
+ * you respect the terms of either (at least one of the both license) :
+ * - under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ * - the CeCILL-C as published by CeCILL-C; either version 1 of the
+ * License, or any later version
+ *
+ * There are special exceptions to the terms and conditions of the
+ * licenses as they are applied to this software. View the full text of
+ * the exception in file LICENSE.txt in the directory of this software
+ * distribution.
+ *
+ * Lilie is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * Licenses for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * and the CeCILL-C along with Lilie. If not, see :
+ * <http://www.gnu.org/licenses/> and
+ * <http://www.cecill.info/licences.fr.html>.
+ */
+
+package org.lilie.services.eliot.notes.applet.jobs.apb
+
+import org.lilie.services.eliot.notes.applet.data.EleveInfoEtendu
+import org.lilie.services.eliot.notes.applet.data.ModaliteChangeeInfo
+import org.lilie.services.eliot.notes.applet.jobs.exceptions.EleveSansCorrespondanceException
+import org.lilie.services.eliot.notes.applet.data.apb.ServiceNotationInfo
+
+/**
+ * Parametres d'ExportJob
+ * @author msan
+ */
+class ExportJobParams {
+ File fichierAPBbrut // fichier APB brut (exporte d'eliot-notes)
+ File dossierCible // dossier d'export
+ List<EleveInfoEtendu> eleveInfos = [] // eleve infos
+ List<ModaliteChangeeInfo> modaliteChangeeInfos = [] // modalites choisises dans la grille
+ List<EleveSansCorrespondanceException> elevesManquants = [] // eleves absents dans le fichier Sconet
+ String rneEtablissement // RNE d'establissement
+ Integer typeExport // type d'export
+ List<ServiceNotationInfo> serviceNotationInfos = [] // infos de srvices de notation
+ String anneeScolaireSconet // annee pour laquelle sont les donnes dans le fichier Sconet
+}
-package org.lilie.services.eliot.notes.applet.jobs.apb\r
-\r
-import org.lilie.services.eliot.notes.applet.data.EleveInfoEtendu\r
-import org.lilie.services.eliot.notes.applet.data.MatiereInfo\r
-import org.lilie.services.eliot.notes.applet.data.apb.ServiceNotationInfo\r
-\r
-import org.lilie.services.eliot.notes.applet.jobs.RapportMerge\r
-\r
-/**\r
- * Rapport de merge.\r
- * Utilise pour passer l'infos d'une phase de traitement a l'autre.\r
- * @author msan\r
- */\r
-class RapportMergeApb extends RapportMerge {\r
-\r
- Boolean modalitesApositioner = true // s'il y a des modalites d'election a positionner\r
- Boolean apbParseOk = false\r
- List<EleveInfoEtendu> eleveInfos = []\r
- List<EleveInfoEtendu> eleveInfosModalites = [] // eleves ou il y a besoin de positionner la modalite d'election\r
- List<ServiceNotationInfo> serviceNotationInfos = []\r
- List<MatiereInfo> matiereInfos = []\r
- String anneeScolaireSconet = null // l'annee scolaire dans le fichier Sconet\r
-\r
-}\r
+package org.lilie.services.eliot.notes.applet.jobs.apb
+
+import org.lilie.services.eliot.notes.applet.jobs.RapportMerge
+import org.lilie.services.eliot.notes.applet.data.EleveInfoEtendu
+import org.lilie.services.eliot.notes.applet.data.apb.ServiceNotationInfo
+import org.lilie.services.eliot.notes.applet.data.MatiereInfo
+
+/**
+ * Rapport de merge.
+ * Utilise pour passer l'infos d'une phase de traitement a l'autre.
+ * @author msan
+ */
+class RapportMergeApb extends RapportMerge {
+
+ Boolean modalitesApositioner = true // s'il y a des modalites d'election a positionner
+ Boolean apbParseOk = false
+ List<EleveInfoEtendu> eleveInfos = []
+ List<EleveInfoEtendu> eleveInfosModalites = [] // eleves ou il y a besoin de positionner la modalite d'election
+ List<ServiceNotationInfo> serviceNotationInfos = []
+ List<MatiereInfo> matiereInfos = []
+ String anneeScolaireSconet = null // l'annee scolaire dans le fichier Sconet
+
+}
-package org.lilie.services.eliot.notes.applet.jobs.exceptions\r
-\r
-/**\r
- * L'exception qu'on peut afficher a l'utilisateur\r
- * @author msan\r
- */\r
-abstract class AffichableException extends RuntimeException {\r
-}\r
+package org.lilie.services.eliot.notes.applet.jobs.exceptions
+
+/**
+ * L'exception qu'on peut afficher a l'utilisateur
+ * @author msan
+ */
+abstract class AffichableException extends RuntimeException {
+}
-package org.lilie.services.eliot.notes.applet.jobs.exceptions\r
-\r
-import org.lilie.services.eliot.notes.applet.data.EleveInfo\r
-\r
-/**\r
- * Jette que une correspondance entre un eleve de fichier APB n'est pas trouve\r
- * dans le fichier Sconet\r
- * @author msan\r
- */\r
-class EleveSansCorrespondanceException extends Exception {\r
- static final int ID_SCONET = 1 // eleve pas trouve par sont id sconet\r
- static final int TRIO_AUCUN = 2 // aucun eleve trouve par la recherche sur nom/prenom/date de naissance\r
- static final int TRIO_PLUSIEURS = 3 // multiples eleves trouves par la recherche sur nom/prenom/date de naissance\r
-\r
- int typeErreur\r
- EleveInfo eleveInfo\r
-\r
- EleveSansCorrespondanceException(int typeErreur, EleveInfo eleveInfo) {\r
- this.eleveInfo = eleveInfo\r
- this.typeErreur = typeErreur\r
- }\r
-\r
- public String getMessage() {\r
- String message = "Correspondance n'a pas ete trouvee pour eleve "+\r
- "${eleveInfo.nom} ${eleveInfo.prenom} ${eleveInfo.dateNaissance}."\r
- switch (typeErreur) {\r
- case ID_SCONET:\r
- message+=" ID Sconet ${eleveInfo.idSconet} n'a pas ete trouve dans le fichier Sconet."\r
- break\r
- case TRIO_AUCUN:\r
- message+=" Aucun élève ne corresponde à la recherche « nom-prénom-date de naissance."\r
- break\r
- case TRIO_PLUSIEURS:\r
- message+=" Plusieurs élèves correspondent à la recherche « nom-prénom-date de naissance."\r
- break\r
- }\r
- return message\r
- }\r
-}\r
+package org.lilie.services.eliot.notes.applet.jobs.exceptions
+
+import org.lilie.services.eliot.notes.applet.data.EleveInfo
+
+/**
+ * Jette que une correspondance entre un eleve de fichier APB n'est pas trouve
+ * dans le fichier Sconet
+ * @author msan
+ */
+class EleveSansCorrespondanceException extends Exception {
+ static final int ID_SCONET = 1 // eleve pas trouve par sont id sconet
+ static final int TRIO_AUCUN = 2 // aucun eleve trouve par la recherche sur nom/prenom/date de naissance
+ static final int TRIO_PLUSIEURS = 3 // multiples eleves trouves par la recherche sur nom/prenom/date de naissance
+
+ int typeErreur
+ EleveInfo eleveInfo
+
+ EleveSansCorrespondanceException(int typeErreur, EleveInfo eleveInfo) {
+ this.eleveInfo = eleveInfo
+ this.typeErreur = typeErreur
+ }
+
+ public String getMessage() {
+ String message = "Correspondance n'a pas ete trouvee pour eleve "+
+ "${eleveInfo.nom} ${eleveInfo.prenom} ${eleveInfo.dateNaissance}."
+ switch (typeErreur) {
+ case ID_SCONET:
+ message+=" ID Sconet ${eleveInfo.idSconet} n'a pas ete trouve dans le fichier Sconet."
+ break
+ case TRIO_AUCUN:
+ message+=" Aucun élève ne corresponde à la recherche « nom-prénom-date de naissance."
+ break
+ case TRIO_PLUSIEURS:
+ message+=" Plusieurs élèves correspondent à la recherche « nom-prénom-date de naissance."
+ break
+ }
+ return message
+ }
+}
-package org.lilie.services.eliot.notes.applet.jobs.exceptions\r
-\r
-import org.xml.sax.SAXException\r
-\r
-/**\r
- * Fichier APB n'est pas valide par rapport a XSD\r
- * @author msan\r
- */\r
-class FichierAPBInvalideException extends AffichableException {\r
-\r
- String nomFichier = null\r
- SAXException exception = null\r
-\r
- /**\r
- * Contructeur\r
- * @param nomFichier nom de fichier apb\r
- * @param e exception leve\r
- */\r
- FichierAPBInvalideException(String nomFichier, SAXException e) {\r
- this.nomFichier = nomFichier\r
- this.exception = e\r
- }\r
-\r
- /**\r
- * Message d'exception\r
- */\r
- String toString() {\r
- return ("Le fichier d'Admission Post-Bac d'eliot-notes ${nomFichier} n'est "+\r
- "pas valide. Détails techiques: "+exception.message)\r
- }\r
-}\r
+package org.lilie.services.eliot.notes.applet.jobs.exceptions
+
+import org.xml.sax.SAXException
+
+/**
+ * Fichier APB n'est pas valide par rapport a XSD
+ * @author msan
+ */
+class FichierAPBInvalideException extends AffichableException {
+
+ String nomFichier = null
+ SAXException exception = null
+
+ /**
+ * Contructeur
+ * @param nomFichier nom de fichier apb
+ * @param e exception leve
+ */
+ FichierAPBInvalideException(String nomFichier, SAXException e) {
+ this.nomFichier = nomFichier
+ this.exception = e
+ }
+
+ /**
+ * Message d'exception
+ */
+ String toString() {
+ return ("Le fichier d'Admission Post-Bac d'eliot-notes ${nomFichier} n'est "+
+ "pas valide. Détails techiques: "+exception.message)
+ }
+}
-package org.lilie.services.eliot.notes.applet.jobs.exceptions\r
-\r
-import org.xml.sax.SAXException\r
-\r
-/**\r
- * Fichier Notanet n'est pas valide par rapport a XSD\r
- * @author msan\r
- */\r
-class FichierNotanetInvalideException extends AffichableException {\r
-\r
- String nomFichier = null\r
- SAXException exception = null\r
-\r
- /**\r
- * Contructeur\r
- * @param nomFichier nom de fichier notanet\r
- * @param e exception leve\r
- */\r
- FichierNotanetInvalideException(String nomFichier, SAXException e) {\r
- this.nomFichier = nomFichier\r
- this.exception = e\r
- }\r
-\r
- /**\r
- * Message d'exception\r
- */\r
- String toString() {\r
- return ("Le fichier Notanet exporté d'eliot-notes ${nomFichier} n'est "+\r
- "pas valide. Détails techiques: "+exception.message)\r
- }\r
-}\r
+package org.lilie.services.eliot.notes.applet.jobs.exceptions
+
+import org.xml.sax.SAXException
+
+/**
+ * Fichier Notanet n'est pas valide par rapport a XSD
+ * @author msan
+ */
+class FichierNotanetInvalideException extends AffichableException {
+
+ String nomFichier = null
+ SAXException exception = null
+
+ /**
+ * Contructeur
+ * @param nomFichier nom de fichier notanet
+ * @param e exception leve
+ */
+ FichierNotanetInvalideException(String nomFichier, SAXException e) {
+ this.nomFichier = nomFichier
+ this.exception = e
+ }
+
+ /**
+ * Message d'exception
+ */
+ String toString() {
+ return ("Le fichier Notanet exporté d'eliot-notes ${nomFichier} n'est "+
+ "pas valide. Détails techiques: "+exception.message)
+ }
+}
-/*\r
- * Copyright © FYLAB and the Conseil Régional d'Île-de-France, 2009\r
- * This file is part of L'Interface Libre et Interactive de l'Enseignement (Lilie).\r
- *\r
- * Lilie is free software. You can redistribute it and/or modify since\r
- * you respect the terms of either (at least one of the both license) :\r
- * - under the terms of the GNU Affero General Public License as\r
- * published by the Free Software Foundation, either version 3 of the\r
- * License, or (at your option) any later version.\r
- * - the CeCILL-C as published by CeCILL-C; either version 1 of the\r
- * License, or any later version\r
- *\r
- * There are special exceptions to the terms and conditions of the\r
- * licenses as they are applied to this software. View the full text of\r
- * the exception in file LICENSE.txt in the directory of this software\r
- * distribution.\r
- *\r
- * Lilie is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- * Licenses for more details.\r
- *\r
- * You should have received a copy of the GNU General Public License\r
- * and the CeCILL-C along with Lilie. If not, see :\r
- * <http://www.gnu.org/licenses/> and\r
- * <http://www.cecill.info/licences.fr.html>.\r
- */\r
-\r
-package org.lilie.services.eliot.notes.applet.jobs.exceptions\r
-\r
-/**\r
- * Il y a un probleme avec un dossier\r
- * @author msan\r
- */\r
-class MauvaisDossierException extends AffichableException {\r
-\r
- String message\r
-\r
- /**\r
- * Constructeur\r
- * @param message message d'exception\r
- */\r
- MauvaisDossierException(String message) {\r
- this.message = message\r
- }\r
-\r
- /**\r
- * Message d'exception\r
- */\r
- String toString() {\r
- return message\r
- }\r
-}\r
+/*
+ * Copyright © FYLAB and the Conseil Régional d'Île-de-France, 2009
+ * This file is part of L'Interface Libre et Interactive de l'Enseignement (Lilie).
+ *
+ * Lilie is free software. You can redistribute it and/or modify since
+ * you respect the terms of either (at least one of the both license) :
+ * - under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ * - the CeCILL-C as published by CeCILL-C; either version 1 of the
+ * License, or any later version
+ *
+ * There are special exceptions to the terms and conditions of the
+ * licenses as they are applied to this software. View the full text of
+ * the exception in file LICENSE.txt in the directory of this software
+ * distribution.
+ *
+ * Lilie is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * Licenses for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * and the CeCILL-C along with Lilie. If not, see :
+ * <http://www.gnu.org/licenses/> and
+ * <http://www.cecill.info/licences.fr.html>.
+ */
+
+package org.lilie.services.eliot.notes.applet.jobs.exceptions
+
+/**
+ * Il y a un probleme avec un dossier
+ * @author msan
+ */
+class MauvaisDossierException extends AffichableException {
+
+ String message
+
+ /**
+ * Constructeur
+ * @param message message d'exception
+ */
+ MauvaisDossierException(String message) {
+ this.message = message
+ }
+
+ /**
+ * Message d'exception
+ */
+ String toString() {
+ return message
+ }
+}
-package org.lilie.services.eliot.notes.applet.jobs.exceptions\r
-\r
-/**\r
- * Le RNE/UAJ d'etablissement dans le fichier Sconet ne matche pas l'uaj attendu\r
- * @author msan\r
- */\r
-class MauvaisEtablissementException extends AffichableException {\r
-\r
- String uajAttendu = null\r
- String uajTrouve = null\r
-\r
- /**\r
- * Constructeur\r
- * @param uajAttendu UAJ/RNE attendu\r
- * @param uajTrouve UAJ/RNE trouve\r
- */\r
- MauvaisEtablissementException(String uajAttendu, String uajTrouve) {\r
- this.uajAttendu = uajAttendu\r
- this.uajTrouve = uajTrouve\r
- }\r
-\r
- /**\r
- * Message d'exception\r
- */\r
- String toString() {\r
- return "Le RNE d'établissement de fichier Sconet ($uajTrouve) ne correspond"+\r
- " pas avec RNE de votre établissement ($uajAttendu)"\r
- }\r
-}\r
+package org.lilie.services.eliot.notes.applet.jobs.exceptions
+
+/**
+ * Le RNE/UAJ d'etablissement dans le fichier Sconet ne matche pas l'uaj attendu
+ * @author msan
+ */
+class MauvaisEtablissementException extends AffichableException {
+
+ String uajAttendu = null
+ String uajTrouve = null
+
+ /**
+ * Constructeur
+ * @param uajAttendu UAJ/RNE attendu
+ * @param uajTrouve UAJ/RNE trouve
+ */
+ MauvaisEtablissementException(String uajAttendu, String uajTrouve) {
+ this.uajAttendu = uajAttendu
+ this.uajTrouve = uajTrouve
+ }
+
+ /**
+ * Message d'exception
+ */
+ String toString() {
+ return "Le RNE d'établissement de fichier Sconet ($uajTrouve) ne correspond"+
+ " pas avec RNE de votre établissement ($uajAttendu)"
+ }
+}
-package org.lilie.services.eliot.notes.applet.jobs.exceptions\r
-\r
-/**\r
- * Fichier APB n'a pas le nom attendu\r
- * @author msan\r
- */\r
-class MauvaisFichierAPBException extends AffichableException {\r
-\r
- String nomAttendu = null\r
- String nomTrouve = null\r
-\r
- /**\r
- * Constructeur\r
- * @param nomAttendu nom attendu\r
- * @param nomTrouve nom trouve\r
- */\r
- MauvaisFichierAPBException(String nomAttendu, String nomTrouve) {\r
- this.nomAttendu = nomAttendu\r
- this.nomTrouve = nomTrouve\r
- }\r
-\r
- /**\r
- * Message d'exception\r
- */\r
- String toString() {\r
- return "Le fichier fourni d'Admission Post-Bac d'eliot notes ($nomTrouve)"+\r
- " n'a pas le nom attendu ($nomAttendu)"\r
- }\r
-}\r
+package org.lilie.services.eliot.notes.applet.jobs.exceptions
+
+/**
+ * Fichier APB n'a pas le nom attendu
+ * @author msan
+ */
+class MauvaisFichierAPBException extends AffichableException {
+
+ String nomAttendu = null
+ String nomTrouve = null
+
+ /**
+ * Constructeur
+ * @param nomAttendu nom attendu
+ * @param nomTrouve nom trouve
+ */
+ MauvaisFichierAPBException(String nomAttendu, String nomTrouve) {
+ this.nomAttendu = nomAttendu
+ this.nomTrouve = nomTrouve
+ }
+
+ /**
+ * Message d'exception
+ */
+ String toString() {
+ return "Le fichier fourni d'Admission Post-Bac d'eliot notes ($nomTrouve)"+
+ " n'a pas le nom attendu ($nomAttendu)"
+ }
+}
-package org.lilie.services.eliot.notes.applet.jobs.exceptions\r
-\r
-/**\r
- * Il y a un probleme avec un fichier\r
- * @author msan\r
- */\r
-class MauvaisFichierException extends AffichableException {\r
-\r
- String message\r
-\r
- /**\r
- * Constructeur\r
- * @param message message d'exception\r
- */\r
- MauvaisFichierException(String message) {\r
- this.message = message\r
- }\r
-\r
- /**\r
- * Message d'exception\r
- */\r
- String toString() {\r
- return message\r
- }\r
-}\r
+package org.lilie.services.eliot.notes.applet.jobs.exceptions
+
+/**
+ * Il y a un probleme avec un fichier
+ * @author msan
+ */
+class MauvaisFichierException extends AffichableException {
+
+ String message
+
+ /**
+ * Constructeur
+ * @param message message d'exception
+ */
+ MauvaisFichierException(String message) {
+ this.message = message
+ }
+
+ /**
+ * Message d'exception
+ */
+ String toString() {
+ return message
+ }
+}
-package org.lilie.services.eliot.notes.applet.jobs.exceptions\r
-\r
-/**\r
- * L'annee scolaire dans le fichier Sconet ne matche pas l'annee scolaire attendue\r
- * @author msan\r
- */\r
-class MauvaiseAnneeException extends AffichableException {\r
-\r
- String anneeAttendue = null\r
- String anneeTrouvee = null\r
-\r
- /**\r
- * Constructeur\r
- * @param anneeAttendue annee attendue\r
- * @param anneeTrouvee annee trouvee\r
- */\r
- MauvaiseAnneeException(String anneeAttendue, String anneeTrouvee) {\r
- this.anneeAttendue = anneeAttendue\r
- this.anneeTrouvee = anneeTrouvee\r
- }\r
-\r
- /**\r
- * Message d'exception\r
- */\r
- String toString() {\r
- return "L'année scolaire de fichier Sconet ($anneeTrouvee) ne correspond "+\r
- "pas avec l'année scolaire en cours"\r
- }\r
-}\r
+package org.lilie.services.eliot.notes.applet.jobs.exceptions
+
+/**
+ * L'annee scolaire dans le fichier Sconet ne matche pas l'annee scolaire attendue
+ * @author msan
+ */
+class MauvaiseAnneeException extends AffichableException {
+
+ String anneeAttendue = null
+ String anneeTrouvee = null
+
+ /**
+ * Constructeur
+ * @param anneeAttendue annee attendue
+ * @param anneeTrouvee annee trouvee
+ */
+ MauvaiseAnneeException(String anneeAttendue, String anneeTrouvee) {
+ this.anneeAttendue = anneeAttendue
+ this.anneeTrouvee = anneeTrouvee
+ }
+
+ /**
+ * Message d'exception
+ */
+ String toString() {
+ return "L'année scolaire de fichier Sconet ($anneeTrouvee) ne correspond "+
+ "pas avec l'année scolaire en cours ($anneeAttendue)"
+ }
+}
import org.apache.log4j.Logger
-import org.lilie.services.eliot.notes.applet.jobs.Phase
-import org.lilie.services.eliot.notes.applet.jobs.RapportMerge
-import org.lilie.services.eliot.notes.applet.services.FichierImportExport
-import org.lilie.services.eliot.notes.applet.utils.ParametresCourant
-import org.lilie.services.eliot.notes.applet.utils.log4j.LoggerInit
import org.xml.sax.SAXException
import javax.xml.stream.XMLStreamReader
+import org.lilie.services.eliot.notes.applet.jobs.MergeJob
import org.lilie.services.eliot.notes.applet.data.notanet.NotanetEleveInfo
import org.lilie.services.eliot.notes.applet.services.notanet.NotanetMergeService
-import org.lilie.services.eliot.notes.applet.data.notanet.NotanetInfoFactory
-import org.lilie.services.eliot.notes.applet.services.notanet.MergeResultatNotanet
-import org.lilie.services.eliot.notes.applet.jobs.MergeJob
-import org.lilie.services.eliot.notes.applet.jobs.exceptions.FichierNotanetInvalideException
-import org.lilie.services.eliot.notes.applet.services.notanet.NotanetWriter
-import org.lilie.services.eliot.notes.applet.services.RapportParams
import org.lilie.services.eliot.notes.applet.services.RapportService
+import org.lilie.services.eliot.notes.applet.utils.ParametresCourant
+import org.lilie.services.eliot.notes.applet.utils.log4j.LoggerInit
+import org.lilie.services.eliot.notes.applet.jobs.RapportMerge
+import org.lilie.services.eliot.notes.applet.services.RapportParams
+import org.lilie.services.eliot.notes.applet.jobs.Phase
import org.lilie.services.eliot.notes.applet.i18n.Constantes
+import org.lilie.services.eliot.notes.applet.services.notanet.NotanetWriter
+import org.lilie.services.eliot.notes.applet.services.notanet.MergeResultatNotanet
+import org.lilie.services.eliot.notes.applet.jobs.exceptions.FichierNotanetInvalideException
+import org.lilie.services.eliot.notes.applet.services.FichierImportExport
+import org.lilie.services.eliot.notes.applet.data.notanet.NotanetInfoFactory
/**
* Job de merge des fichiers Sconet et Notanet d'eliot-notes
if (anneeEnCours) {
codeAnneeScolaire = "$anneeEnCours-${Integer.parseInt(anneeEnCours) + 1}"
}
- docBase = params.docBase
- codeBase = params.codeBase
dossierCible = params.dossierCible
notanetMergeService = new NotanetMergeService()
rapportService = new RapportService()
void verifieFichierNotanet(RapportMerge rapportMerge) {
rapportMerge.phase = Phase.VERIFICATION_FICHIER_NOTANET
try {
- FichierImportExport.valideFichierNotanet(cheminNotanet, codeBase, docBase)
+ FichierImportExport.valideFichierNotanet(cheminNotanet)
} catch (SAXException e) {
LOGGER.error("Fichier Notanet n'est pas valide par rapport à XSD", e)
throw new FichierNotanetInvalideException(cheminNotanet, e)
-package org.lilie.services.eliot.notes.applet.jobs.notanet\r
-\r
-/**\r
- * Parametres de NotanetMergeJob\r
- * @author msan\r
- */\r
-class NotanetMergeJobParams {\r
- String cheminAPB // chemin vers le fichier APB\r
- String cheminSconet // chemin vers le fichier Sconet\r
- String cheminDossierCible // chemin vers le dossier d'export\r
- \r
- String uajEtablissement = null // rne/uaj d'etablissement\r
- String anneeEnCours = null // l'annee scolaire en cours\r
-\r
- String docBase // dossier contenant les fichiers auxiliaires\r
- URL codeBase // codebase d'applet\r
-\r
- File dossierCible // dossier cible\r
-\r
-}\r
+package org.lilie.services.eliot.notes.applet.jobs.notanet
+
+/**
+ * Parametres de NotanetMergeJob
+ * @author msan
+ */
+class NotanetMergeJobParams {
+ String cheminAPB // chemin vers le fichier APB
+ String cheminSconet // chemin vers le fichier Sconet
+ String cheminDossierCible // chemin vers le dossier d'export
+
+ String uajEtablissement = null // rne/uaj d'etablissement
+ String anneeEnCours = null // l'annee scolaire en cours
+
+ String docBase // dossier contenant les fichiers auxiliaires
+ URL codeBase // codebase d'applet
+
+ File dossierCible // dossier cible
+
+}
-package org.lilie.services.eliot.notes.applet.jobs.notanet\r
-\r
-import org.lilie.services.eliot.notes.applet.jobs.RapportMerge\r
-import org.lilie.services.eliot.notes.applet.data.notanet.NotanetEleveInfo\r
-\r
-/**\r
- * Rapport de merge.\r
- * Utilise pour passer l'infos d'une phase de traitement a l'autre.\r
- * @author msan\r
- */\r
-class RapportMergeNotanet extends RapportMerge {\r
-\r
- List<NotanetEleveInfo> eleveInfos = []\r
-\r
- File fichierRapport = null\r
- File fichierNotanetFinal = null\r
- Long totalElevesExportes = 0 // nombre d'eleves exportes\r
-\r
-}\r
+package org.lilie.services.eliot.notes.applet.jobs.notanet
+
+import org.lilie.services.eliot.notes.applet.jobs.RapportMerge
+import org.lilie.services.eliot.notes.applet.data.notanet.NotanetEleveInfo
+
+/**
+ * Rapport de merge.
+ * Utilise pour passer l'infos d'une phase de traitement a l'autre.
+ * @author msan
+ */
+class RapportMergeNotanet extends RapportMerge {
+
+ List<NotanetEleveInfo> eleveInfos = []
+
+ File fichierRapport = null
+ File fichierNotanetFinal = null
+ Long totalElevesExportes = 0 // nombre d'eleves exportes
+
+}
package org.lilie.services.eliot.notes.applet.panels
-import org.lilie.services.eliot.notes.applet.panels.composants.panneaux.AbstractPanel
import javax.swing.JComponent
-
import javax.swing.JLabel
-import org.lilie.services.eliot.notes.applet.utils.Cartouche
import java.awt.GridLayout
import javax.swing.JPanel
import java.awt.Color
-import org.lilie.services.eliot.notes.applet.i18n.Constantes
-import org.lilie.services.eliot.notes.applet.panels.composants.JFontLabelGras
+import org.lilie.services.eliot.notes.applet.panels.composants.panneaux.AbstractPanel
+import org.lilie.services.eliot.notes.applet.utils.Cartouche
import org.lilie.services.eliot.notes.applet.panels.composants.panneaux.JEliotBoxPanel
+import org.lilie.services.eliot.notes.applet.panels.composants.JFontLabelGras
+import org.lilie.services.eliot.notes.applet.i18n.Constantes
/**
* Cartouche affichant les informations concernant le fichier d'export
-package org.lilie.services.eliot.notes.applet.panels\r
-\r
-/**\r
- * Parametres qui configure le panel de cartouche\r
- * @author msan\r
- */\r
-class PanelCartoucheParams {\r
- Boolean afficheEtablissement = true // affiche l'etablissemnet dans la cartouche\r
- Boolean afficheAnneeScolaire = true // affiche l'annee scolaire dans la cartouche\r
- Boolean afficheClasses = true // affiche les classes dans la cartouche\r
- Boolean afficheTypeExport = true // affiche le type d'export dans la cartouche\r
-\r
- // affiche le RNE d'etablissement au lieu de son nom\r
- Boolean afficheRNEEtablissement = false\r
-\r
- // charge les donnees de cartouche depuis un fichier XML\r
- Boolean chargeDonneesDeXML = false\r
-\r
- // charge les donnees de cartouche depuis le nom de fichier\r
- Boolean chargeDonneesDeNomFichier = false\r
-\r
- PanelCartoucheParams(PanelPreparationParams preparationParams) {\r
- this.afficheEtablissement = preparationParams.cartoucheAfficheEtablissement\r
- this.afficheAnneeScolaire = preparationParams.cartoucheAfficheAnneeScolaire\r
- this.afficheClasses = preparationParams.cartoucheAfficheClasses\r
- this.afficheTypeExport = preparationParams.cartoucheAfficheTypeExport\r
- this.chargeDonneesDeXML = preparationParams.cartoucheChargeDonneesDeXML\r
- this.chargeDonneesDeNomFichier = preparationParams.cartoucheChargeDonneesDeNomFichier\r
- this.afficheRNEEtablissement = preparationParams.cartoucheAfficheRNEEtablissement\r
-\r
- }\r
-}\r
+package org.lilie.services.eliot.notes.applet.panels
+
+/**
+ * Parametres qui configure le panel de cartouche
+ * @author msan
+ */
+class PanelCartoucheParams {
+ Boolean afficheEtablissement = true // affiche l'etablissemnet dans la cartouche
+ Boolean afficheAnneeScolaire = true // affiche l'annee scolaire dans la cartouche
+ Boolean afficheClasses = true // affiche les classes dans la cartouche
+ Boolean afficheTypeExport = true // affiche le type d'export dans la cartouche
+
+ // affiche le RNE d'etablissement au lieu de son nom
+ Boolean afficheRNEEtablissement = false
+
+ // charge les donnees de cartouche depuis un fichier XML
+ Boolean chargeDonneesDeXML = false
+
+ // charge les donnees de cartouche depuis le nom de fichier
+ Boolean chargeDonneesDeNomFichier = false
+
+ PanelCartoucheParams(PanelPreparationParams preparationParams) {
+ this.afficheEtablissement = preparationParams.cartoucheAfficheEtablissement
+ this.afficheAnneeScolaire = preparationParams.cartoucheAfficheAnneeScolaire
+ this.afficheClasses = preparationParams.cartoucheAfficheClasses
+ this.afficheTypeExport = preparationParams.cartoucheAfficheTypeExport
+ this.chargeDonneesDeXML = preparationParams.cartoucheChargeDonneesDeXML
+ this.chargeDonneesDeNomFichier = preparationParams.cartoucheChargeDonneesDeNomFichier
+ this.afficheRNEEtablissement = preparationParams.cartoucheAfficheRNEEtablissement
+
+ }
+}
import java.awt.Component
import java.awt.Dimension
-import org.lilie.services.eliot.notes.applet.i18n.Constantes
-import org.lilie.services.eliot.notes.applet.panels.composants.JOuvreExplorateur
+import javax.swing.*
import org.lilie.services.eliot.notes.applet.panels.composants.panneaux.AbstractPanel
+import org.lilie.services.eliot.notes.applet.panels.composants.JOuvreExplorateur
import org.lilie.services.eliot.notes.applet.panels.composants.panneaux.JEliotBoxPanel
-import javax.swing.*
+import org.lilie.services.eliot.notes.applet.i18n.Constantes
import org.lilie.services.eliot.notes.applet.panels.composants.JFontLabelGras
/**
package org.lilie.services.eliot.notes.applet.panels
-import org.lilie.services.eliot.notes.applet.panels.composants.panneaux.AbstractPanel
import javax.swing.JComponent
import javax.swing.JLabel
import javax.swing.JPanel
-import org.lilie.services.eliot.notes.applet.i18n.Constantes
-import org.lilie.services.eliot.notes.applet.panels.composants.panneaux.JEliotBoxPanel
-import org.lilie.services.eliot.notes.applet.panels.composants.JOuvreExplorateur
import javax.swing.Box
import java.awt.Component
import java.awt.Dimension
+import org.lilie.services.eliot.notes.applet.panels.composants.panneaux.AbstractPanel
+import org.lilie.services.eliot.notes.applet.panels.composants.JOuvreExplorateur
+import org.lilie.services.eliot.notes.applet.i18n.Constantes
+import org.lilie.services.eliot.notes.applet.panels.composants.panneaux.JEliotBoxPanel
import org.lilie.services.eliot.notes.applet.panels.composants.JFontLabelGras
import org.lilie.services.eliot.notes.applet.panels.composants.multilines.JMultilinesLabel
-package org.lilie.services.eliot.notes.applet.panels\r
-\r
-import javax.swing.JComponent\r
-import javax.swing.JPanel\r
-import java.awt.BorderLayout\r
-import java.awt.FlowLayout\r
-import javax.swing.JButton\r
-import javax.swing.JTable\r
-\r
-import org.lilie.services.eliot.notes.applet.data.ModaliteElection\r
-\r
-import javax.swing.table.TableColumn\r
-\r
-import javax.swing.DefaultCellEditor\r
-import javax.swing.JScrollPane\r
-\r
-import java.awt.event.ActionEvent\r
-import org.lilie.services.eliot.notes.applet.data.EleveInfoEtendu\r
-\r
-import java.awt.event.ActionListener\r
-import org.lilie.services.eliot.notes.applet.utils.StringUtils\r
-import javax.swing.event.TableModelListener\r
-import javax.swing.event.TableModelEvent\r
-import org.lilie.services.eliot.notes.applet.panels.composants.panneaux.AbstractPanel\r
-import org.lilie.services.eliot.notes.applet.panels.composants.ModaliteComboBox\r
-import org.lilie.services.eliot.notes.applet.panels.composants.EleveInfoCellRenderer\r
-import org.lilie.services.eliot.notes.applet.panels.composants.ModaliteCellRenderer\r
-import org.lilie.services.eliot.notes.applet.panels.composants.EleveTableModel\r
-import org.lilie.services.eliot.notes.applet.panels.utils.EvenementPanel\r
-import org.lilie.services.eliot.notes.applet.data.MatiereInfo\r
-import org.lilie.services.eliot.notes.applet.panels.composants.panneaux.JEliotPanel\r
-import java.awt.Color\r
-import org.lilie.services.eliot.notes.applet.i18n.Constantes\r
-import javax.swing.JLabel\r
-import org.lilie.services.eliot.notes.applet.data.ModaliteInfo\r
-import org.lilie.services.eliot.notes.applet.data.ModaliteChangeeInfo\r
-\r
-/**\r
- * Panel de saisie des modalites d'election\r
- * @author msan\r
- */\r
-class PanelGrille extends AbstractPanel implements ActionListener,\r
- TableModelListener {\r
-\r
- EleveTableModel elevesTableModel\r
-\r
- List<EleveInfoEtendu> eleveInfos = []\r
- List<MatiereInfo> matiereInfos = []\r
-\r
- JButton openFileButton\r
-\r
- private JPanel panelGeneral\r
- private JPanel panelBas\r
- private JButton buttonEnregistrer\r
- private JTable tableEleves\r
-\r
- JScrollPane jScrollPane\r
- ModaliteComboBox modaliteComboBox\r
-\r
- PanelGrille(List<EleveInfoEtendu> eleveInfos, List<MatiereInfo> matiereInfos) {\r
- this.eleveInfos = eleveInfos\r
- this.matiereInfos = matiereInfos\r
-\r
- elevesTableModel = new EleveTableModel()\r
-\r
- panelGeneral = new JEliotPanel()\r
- \r
- JLabel lblTitre=new JLabel(Constantes.PANEL_GRILLE_TITRE)\r
- lblTitre.setFont(Constantes.getFontGras())\r
- panelGeneral.add(lblTitre,BorderLayout.NORTH)\r
-\r
- // Buttons en bas\r
- panelBas = new JPanel();\r
- panelBas.setBackground(Color.WHITE)\r
- panelBas.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5))\r
- panelGeneral.add(panelBas, BorderLayout.SOUTH);\r
-\r
- buttonEnregistrer = new JButton(Constantes.ENREGISTRER)\r
- buttonEnregistrer.addActionListener(this)\r
- buttonEnregistrer.setEnabled(false)\r
- panelBas.add(buttonEnregistrer);\r
-\r
- // Grid d'eleves\r
- tableEleves = new JTable(elevesTableModel)\r
- tableEleves.setBackground(Color.WHITE)\r
- tableEleves.setEnabled(true);\r
-\r
- tableEleves.setDefaultRenderer(String.class, new EleveInfoCellRenderer())\r
- tableEleves.setDefaultRenderer(ModaliteElection.class, new ModaliteCellRenderer())\r
-\r
- tableEleves.getModel().addTableModelListener(this)\r
-\r
- TableColumn modaliteColumn = tableEleves.getColumnModel().getColumn(3)\r
- modaliteComboBox = new ModaliteComboBox()\r
- modaliteColumn.setCellEditor(new DefaultCellEditor(modaliteComboBox))\r
- jScrollPane = new JScrollPane(tableEleves)\r
- jScrollPane.setBackground(Color.WHITE)\r
- panelGeneral.add(jScrollPane, BorderLayout.CENTER);\r
-\r
- affichEleveInfos(this.eleveInfos, this.matiereInfos)\r
- }\r
-\r
- protected JComponent getComponentRacine() {\r
- return panelGeneral\r
- }\r
-\r
- public void actionPerformed(ActionEvent e) {\r
- if (e.getSource() == buttonEnregistrer) {\r
- actionButtonExporter()\r
- }\r
- }\r
- \r
- private List trieData(List data) {\r
- // trie les infos. classe - nom - prenom - matiere\r
- return data.sort { def a, def b ->\r
- // classe\r
- int cmp = a[0] <=> b[0]\r
- if (cmp) {\r
- return cmp\r
- }\r
-\r
- // nom, prenom\r
- cmp = StringUtils.normalise(a[1]) <=> StringUtils.normalise(b[1])\r
- if (cmp) {\r
- return cmp\r
- }\r
-\r
- // libelle matiere\r
- return a[2] <=> b[2]\r
- }\r
- }\r
-\r
- /**\r
- * Affiche eleve infos\r
- */\r
- void affichEleveInfos(List<EleveInfoEtendu> eleveInfos, List<MatiereInfo> matiereInfos ) {\r
-\r
- Map<String, String> matiereMap = [:]\r
- matiereInfos.each {\r
- matiereMap.put(it.codeSconet, it.libelleSconet)\r
- }\r
-\r
- List data = []\r
-\r
- eleveInfos.each { EleveInfoEtendu eleveInfo ->\r
- eleveInfo.modalites.each { ModaliteInfo modaliteInfo ->\r
- data.add([\r
- eleveInfo.classe,\r
- eleveInfo.nom + ' ' + eleveInfo.prenom,\r
- // si on a un libelle on l'affiche, sinon on affiche le code sconet\r
- getLibelleMatiere(modaliteInfo.matiereIdSconet, matiereMap),\r
- modaliteInfo.modalite,\r
- eleveInfo.ine,\r
- modaliteInfo.matiereIdSconet,\r
- eleveInfo.idSconet,\r
- eleveInfo.annee\r
- ])\r
- }\r
- }\r
-\r
- data = trieData(data)\r
- Object[][] dataAsArray = data.collect {it.toArray()}.toArray()\r
- elevesTableModel.setData(dataAsArray)\r
- }\r
-\r
- /**\r
- * Libelle Sconet de matiere.\r
- * Si on a un libelle on l'affiche, sinon on affiche le code sconet\r
- */\r
- private String getLibelleMatiere(String idSconet, Map<String, String> matiereMap) {\r
- // si on a un libelle on l'affiche, sinon on affiche le code sconet\r
- return matiereMap.get(idSconet) ?: idSconet\r
- }\r
-\r
- void actionButtonExporter() {\r
- firePanelEvenement(EvenementPanel.EXPORT_LANCE)\r
- }\r
-\r
- /**\r
- * Gestion d'evenement qu'une modalite a change\r
- */\r
- void tableChanged(TableModelEvent e) {\r
- // desactive le button Enregistrer s'il reste des modalites a positionner\r
- if (elevesTableModel.modalitesApositioner()) {\r
- buttonEnregistrer.setEnabled(false)\r
- } else {\r
- buttonEnregistrer.setEnabled(true)\r
- }\r
- }\r
-\r
- /**\r
- * Modalites choisises dans la grille\r
- */\r
- List<ModaliteChangeeInfo> getModalites() {\r
- return this.elevesTableModel.getModalites()\r
- }\r
-}\r
+package org.lilie.services.eliot.notes.applet.panels
+
+import javax.swing.JComponent
+import javax.swing.JPanel
+import java.awt.BorderLayout
+import java.awt.FlowLayout
+import javax.swing.JButton
+import javax.swing.JTable
+import javax.swing.table.TableColumn
+import javax.swing.DefaultCellEditor
+import javax.swing.JScrollPane
+import java.awt.event.ActionListener
+import javax.swing.event.TableModelListener
+import javax.swing.event.TableModelEvent
+import java.awt.Color
+import javax.swing.JLabel
+import org.lilie.services.eliot.notes.applet.panels.composants.panneaux.AbstractPanel
+import org.lilie.services.eliot.notes.applet.panels.composants.EleveTableModel
+import org.lilie.services.eliot.notes.applet.data.EleveInfoEtendu
+import org.lilie.services.eliot.notes.applet.data.MatiereInfo
+import org.lilie.services.eliot.notes.applet.panels.composants.ModaliteComboBox
+import org.lilie.services.eliot.notes.applet.panels.composants.panneaux.JEliotPanel
+import org.lilie.services.eliot.notes.applet.i18n.Constantes
+import org.lilie.services.eliot.notes.applet.panels.composants.EleveInfoCellRenderer
+import org.lilie.services.eliot.notes.applet.data.ModaliteElection
+import org.lilie.services.eliot.notes.applet.panels.composants.ModaliteCellRenderer
+import java.awt.event.ActionEvent
+import org.lilie.services.eliot.notes.applet.utils.StringUtils
+import org.lilie.services.eliot.notes.applet.data.ModaliteInfo
+import org.lilie.services.eliot.notes.applet.panels.utils.EvenementPanel
+import org.lilie.services.eliot.notes.applet.data.ModaliteChangeeInfo
+
+/**
+ * Panel de saisie des modalites d'election
+ * @author msan
+ */
+class PanelGrille extends AbstractPanel implements ActionListener,
+ TableModelListener {
+
+ EleveTableModel elevesTableModel
+
+ List<EleveInfoEtendu> eleveInfos = []
+ List<MatiereInfo> matiereInfos = []
+
+ JButton openFileButton
+
+ private JPanel panelGeneral
+ private JPanel panelBas
+ private JButton buttonEnregistrer
+ private JTable tableEleves
+
+ JScrollPane jScrollPane
+ ModaliteComboBox modaliteComboBox
+
+ PanelGrille(List<EleveInfoEtendu> eleveInfos, List<MatiereInfo> matiereInfos) {
+ this.eleveInfos = eleveInfos
+ this.matiereInfos = matiereInfos
+
+ elevesTableModel = new EleveTableModel()
+
+ panelGeneral = new JEliotPanel()
+
+ JLabel lblTitre=new JLabel(Constantes.PANEL_GRILLE_TITRE)
+ lblTitre.setFont(Constantes.getFontGras())
+ panelGeneral.add(lblTitre,BorderLayout.NORTH)
+
+ // Buttons en bas
+ panelBas = new JPanel();
+ panelBas.setBackground(Color.WHITE)
+ panelBas.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5))
+ panelGeneral.add(panelBas, BorderLayout.SOUTH);
+
+ buttonEnregistrer = new JButton(Constantes.ENREGISTRER)
+ buttonEnregistrer.addActionListener(this)
+ buttonEnregistrer.setEnabled(false)
+ panelBas.add(buttonEnregistrer);
+
+ // Grid d'eleves
+ tableEleves = new JTable(elevesTableModel)
+ tableEleves.setBackground(Color.WHITE)
+ tableEleves.setEnabled(true);
+
+ tableEleves.setDefaultRenderer(String.class, new EleveInfoCellRenderer())
+ tableEleves.setDefaultRenderer(ModaliteElection.class, new ModaliteCellRenderer())
+
+ tableEleves.getModel().addTableModelListener(this)
+
+ TableColumn modaliteColumn = tableEleves.getColumnModel().getColumn(3)
+ modaliteComboBox = new ModaliteComboBox()
+ modaliteColumn.setCellEditor(new DefaultCellEditor(modaliteComboBox))
+ jScrollPane = new JScrollPane(tableEleves)
+ jScrollPane.setBackground(Color.WHITE)
+ panelGeneral.add(jScrollPane, BorderLayout.CENTER);
+
+ affichEleveInfos(this.eleveInfos, this.matiereInfos)
+ }
+
+ protected JComponent getComponentRacine() {
+ return panelGeneral
+ }
+
+ public void actionPerformed(ActionEvent e) {
+ if (e.getSource() == buttonEnregistrer) {
+ actionButtonExporter()
+ }
+ }
+
+ private List trieData(List data) {
+ // trie les infos. classe - nom - prenom - matiere
+ return data.sort { def a, def b ->
+ // classe
+ int cmp = a[0] <=> b[0]
+ if (cmp) {
+ return cmp
+ }
+
+ // nom, prenom
+ cmp = StringUtils.normalise(a[1]) <=> StringUtils.normalise(b[1])
+ if (cmp) {
+ return cmp
+ }
+
+ // libelle matiere
+ return a[2] <=> b[2]
+ }
+ }
+
+ /**
+ * Affiche eleve infos
+ */
+ void affichEleveInfos(List<EleveInfoEtendu> eleveInfos, List<MatiereInfo> matiereInfos ) {
+
+ Map<String, String> matiereMap = [:]
+ matiereInfos.each {
+ matiereMap.put(it.codeSconet, it.libelleSconet)
+ }
+
+ List data = []
+
+ eleveInfos.each { EleveInfoEtendu eleveInfo ->
+ eleveInfo.modalites.each { ModaliteInfo modaliteInfo ->
+ data.add([
+ eleveInfo.classe,
+ eleveInfo.nom + ' ' + eleveInfo.prenom,
+ // si on a un libelle on l'affiche, sinon on affiche le code sconet
+ getLibelleMatiere(modaliteInfo.matiereIdSconet, matiereMap),
+ modaliteInfo.modalite,
+ eleveInfo.ine,
+ modaliteInfo.matiereIdSconet,
+ eleveInfo.idSconet,
+ eleveInfo.annee
+ ])
+ }
+ }
+
+ data = trieData(data)
+ Object[][] dataAsArray = data.collect {it.toArray()}.toArray()
+ elevesTableModel.setData(dataAsArray)
+ }
+
+ /**
+ * Libelle Sconet de matiere.
+ * Si on a un libelle on l'affiche, sinon on affiche le code sconet
+ */
+ private String getLibelleMatiere(String idSconet, Map<String, String> matiereMap) {
+ // si on a un libelle on l'affiche, sinon on affiche le code sconet
+ return matiereMap.get(idSconet) ?: idSconet
+ }
+
+ void actionButtonExporter() {
+ firePanelEvenement(EvenementPanel.EXPORT_LANCE)
+ }
+
+ /**
+ * Gestion d'evenement qu'une modalite a change
+ */
+ void tableChanged(TableModelEvent e) {
+ // desactive le button Enregistrer s'il reste des modalites a positionner
+ if (elevesTableModel.modalitesApositioner()) {
+ buttonEnregistrer.setEnabled(false)
+ } else {
+ buttonEnregistrer.setEnabled(true)
+ }
+ }
+
+ /**
+ * Modalites choisises dans la grille
+ */
+ List<ModaliteChangeeInfo> getModalites() {
+ return this.elevesTableModel.getModalites()
+ }
+}
import javax.swing.event.DocumentListener
import java.awt.event.ActionListener
-import org.lilie.services.eliot.notes.applet.panels.composants.panneaux.AbstractPanel
import java.awt.event.ActionEvent
import javax.swing.event.DocumentEvent
import javax.swing.JComponent
-import org.lilie.services.eliot.notes.applet.panels.composants.panneaux.JEliotBoxPanel
-import org.lilie.services.eliot.notes.applet.i18n.Constantes
import javax.swing.JButton
import java.awt.BorderLayout
import java.awt.FlowLayout
-import org.lilie.services.eliot.notes.applet.panels.composants.panneaux.JEliotPanel
import javax.swing.JPanel
-import org.lilie.services.eliot.notes.applet.panels.utils.EvenementPanel
import javax.swing.JOptionPane
import javax.swing.Box
-import org.lilie.services.eliot.notes.applet.data.CartoucheService
-import org.lilie.services.eliot.notes.applet.panels.composants.multilines.JMultilinesLabel
import java.awt.Color
-import org.lilie.services.eliot.notes.applet.data.DonneesCartouche
import javax.swing.JSeparator
+import org.lilie.services.eliot.notes.applet.panels.composants.panneaux.AbstractPanel
+import org.lilie.services.eliot.notes.applet.panels.composants.panneaux.JEliotBoxPanel
import org.lilie.services.eliot.notes.applet.panels.composants.JInputFile
+import org.lilie.services.eliot.notes.applet.panels.composants.multilines.JMultilinesLabel
+import org.lilie.services.eliot.notes.applet.i18n.Constantes
+import org.lilie.services.eliot.notes.applet.data.CartoucheService
+import org.lilie.services.eliot.notes.applet.panels.composants.panneaux.JEliotPanel
+import org.lilie.services.eliot.notes.applet.data.DonneesCartouche
+import org.lilie.services.eliot.notes.applet.panels.utils.EvenementPanel
/**
* Construit l'écran de sélection des fichiers, tel qu'elle est décrit dans la
-package org.lilie.services.eliot.notes.applet.panels\r
-\r
-import org.lilie.services.eliot.notes.applet.ApplicationEnum\r
-\r
-/**\r
- * Parametres qui configure le panel de preparation\r
- * @author msan\r
- */\r
-class PanelPreparationParams {\r
- Boolean cartoucheAfficheEtablissement = true // affiche l'etablissemnet dans la cartouche\r
- Boolean cartoucheAfficheAnneeScolaire = true // affiche l'annee scolaire dans la cartouche\r
- Boolean cartoucheAfficheClasses = true // affiche les classes dans la cartouche\r
- Boolean cartoucheAfficheTypeExport = true // affiche le type d'export dans la cartouche\r
-\r
- // affiche le RNE d'etablissement au lieu de sont nom\r
- Boolean cartoucheAfficheRNEEtablissement = false\r
-\r
- // charge les donnees de cartouche depuis un fichier XML\r
- Boolean cartoucheChargeDonneesDeXML = false\r
-\r
- // charge les donnees de cartouche depuis le nom de fichier\r
- Boolean cartoucheChargeDonneesDeNomFichier = false\r
-\r
- ApplicationEnum application = null\r
-}\r
+package org.lilie.services.eliot.notes.applet.panels
+
+import org.lilie.services.eliot.notes.applet.ApplicationEnum
+
+/**
+ * Parametres qui configure le panel de preparation
+ * @author msan
+ */
+class PanelPreparationParams {
+ Boolean cartoucheAfficheEtablissement = true // affiche l'etablissemnet dans la cartouche
+ Boolean cartoucheAfficheAnneeScolaire = true // affiche l'annee scolaire dans la cartouche
+ Boolean cartoucheAfficheClasses = true // affiche les classes dans la cartouche
+ Boolean cartoucheAfficheTypeExport = true // affiche le type d'export dans la cartouche
+
+ // affiche le RNE d'etablissement au lieu de sont nom
+ Boolean cartoucheAfficheRNEEtablissement = false
+
+ // charge les donnees de cartouche depuis un fichier XML
+ Boolean cartoucheChargeDonneesDeXML = false
+
+ // charge les donnees de cartouche depuis le nom de fichier
+ Boolean cartoucheChargeDonneesDeNomFichier = false
+
+ ApplicationEnum application = null
+}
-package org.lilie.services.eliot.notes.applet.panels\r
-\r
-import javax.swing.JPanel\r
-import javax.swing.JProgressBar\r
-import javax.swing.JLabel\r
-import java.awt.Color\r
-\r
-import javax.swing.JComponent\r
-import java.beans.PropertyChangeListener\r
-import java.beans.PropertyChangeEvent\r
-import org.lilie.services.eliot.notes.applet.panels.composants.panneaux.AbstractPanel\r
-import org.lilie.services.eliot.notes.applet.panels.composants.panneaux.JEliotBoxPanel\r
-import javax.swing.Box\r
-import org.lilie.services.eliot.notes.applet.i18n.Constantes\r
-\r
-/**\r
- * Panel de progress bar\r
- * @author msan\r
- */\r
-class PanelTraitementFichiers extends AbstractPanel implements PropertyChangeListener {\r
- \r
- JPanel panel1\r
- JProgressBar progressBar\r
-\r
- PanelTraitementFichiers() {\r
- panel1 = new JEliotBoxPanel()\r
- panel1.add(Box.createVerticalStrut(60))\r
- panel1.add(new JLabel(Constantes.TRAITEMENT_EN_COURS))\r
- progressBar = new JProgressBar()\r
- progressBar.setForeground(new Color(-13395457))\r
- progressBar.setValue(0)\r
- panel1.add(progressBar)\r
- }\r
-\r
- protected JComponent getComponentRacine() {\r
- return panel1\r
- }\r
-\r
- void propertyChange(PropertyChangeEvent evt) {\r
- if ("progress".equals(evt.getPropertyName())) {\r
- progressBar.setValue((Integer)evt.getNewValue())\r
- }\r
- }\r
-\r
- /**\r
- * Remet le panel dans l'etat initial\r
- */\r
- public reset() {\r
- this.progressBar.setValue(0)\r
- }\r
-}\r
+package org.lilie.services.eliot.notes.applet.panels
+
+import javax.swing.JPanel
+import javax.swing.JProgressBar
+import javax.swing.JLabel
+import java.awt.Color
+import javax.swing.JComponent
+import java.beans.PropertyChangeListener
+import java.beans.PropertyChangeEvent
+import javax.swing.Box
+import org.lilie.services.eliot.notes.applet.panels.composants.panneaux.AbstractPanel
+import org.lilie.services.eliot.notes.applet.panels.composants.panneaux.JEliotBoxPanel
+import org.lilie.services.eliot.notes.applet.i18n.Constantes
+
+/**
+ * Panel de progress bar
+ * @author msan
+ */
+class PanelTraitementFichiers extends AbstractPanel implements PropertyChangeListener {
+
+ JPanel panel1
+ JProgressBar progressBar
+
+ PanelTraitementFichiers() {
+ panel1 = new JEliotBoxPanel()
+ panel1.add(Box.createVerticalStrut(60))
+ panel1.add(new JLabel(Constantes.TRAITEMENT_EN_COURS))
+ progressBar = new JProgressBar()
+ progressBar.setForeground(new Color(-13395457))
+ progressBar.setValue(0)
+ panel1.add(progressBar)
+ }
+
+ protected JComponent getComponentRacine() {
+ return panel1
+ }
+
+ void propertyChange(PropertyChangeEvent evt) {
+ if ("progress".equals(evt.getPropertyName())) {
+ progressBar.setValue((Integer)evt.getNewValue())
+ }
+ }
+
+ /**
+ * Remet le panel dans l'etat initial
+ */
+ public reset() {
+ this.progressBar.setValue(0)
+ }
+}
-/*\r
- * Copyright © FYLAB and the Conseil Régional d'Île-de-France, 2009\r
- * This file is part of L'Interface Libre et Interactive de l'Enseignement (Lilie).\r
- *\r
- * Lilie is free software. You can redistribute it and/or modify since\r
- * you respect the terms of either (at least one of the both license) :\r
- * - under the terms of the GNU Affero General Public License as\r
- * published by the Free Software Foundation, either version 3 of the\r
- * License, or (at your option) any later version.\r
- * - the CeCILL-C as published by CeCILL-C; either version 1 of the\r
- * License, or any later version\r
- *\r
- * There are special exceptions to the terms and conditions of the\r
- * licenses as they are applied to this software. View the full text of\r
- * the exception in file LICENSE.txt in the directory of this software\r
- * distribution.\r
- *\r
- * Lilie is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- * Licenses for more details.\r
- *\r
- * You should have received a copy of the GNU General Public License\r
- * and the CeCILL-C along with Lilie. If not, see :\r
- * <http://www.gnu.org/licenses/> and\r
- * <http://www.cecill.info/licences.fr.html>.\r
- */\r
-\r
-package org.lilie.services.eliot.notes.applet.panels.composants\r
-\r
-import javax.swing.table.DefaultTableCellRenderer\r
-import java.awt.Component\r
-import javax.swing.JTable\r
-import org.lilie.services.eliot.notes.applet.data.ModaliteElection\r
-import java.awt.Color\r
-\r
-/**\r
- * Renderer qui affiche en rouge les lignes ou il faut choisir une modalite\r
- * d'election.\r
- * @author msan\r
- */\r
-class EleveInfoCellRenderer extends DefaultTableCellRenderer {\r
-\r
- Color colorErronnee = new Color(0xff, 0xa4, 0xa4)\r
- Color colorOk = new Color(0xff, 0xff, 0xff)\r
-\r
- Component getTableCellRendererComponent(JTable table, Object value,\r
- boolean isSelected, boolean hasFocus, int row, int column) {\r
- Component component = super.getTableCellRendererComponent(table, value,\r
- isSelected, hasFocus, row, column)\r
- // set background\r
- if (estErronee(table, row)) {\r
- component.setBackground(colorErronnee)\r
- } else {\r
- component.setBackground(colorOk)\r
- }\r
- return component\r
- }\r
-\r
- /**\r
- * Si il faut marquer cette ligne comme erronnee\r
- */\r
- private Boolean estErronee(JTable table, int row) {\r
- def modalite = table.getValueAt(row, 3)\r
- return (modalite == ModaliteElection.N)\r
- }\r
-}\r
+/*
+ * Copyright © FYLAB and the Conseil Régional d'Île-de-France, 2009
+ * This file is part of L'Interface Libre et Interactive de l'Enseignement (Lilie).
+ *
+ * Lilie is free software. You can redistribute it and/or modify since
+ * you respect the terms of either (at least one of the both license) :
+ * - under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ * - the CeCILL-C as published by CeCILL-C; either version 1 of the
+ * License, or any later version
+ *
+ * There are special exceptions to the terms and conditions of the
+ * licenses as they are applied to this software. View the full text of
+ * the exception in file LICENSE.txt in the directory of this software
+ * distribution.
+ *
+ * Lilie is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * Licenses for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * and the CeCILL-C along with Lilie. If not, see :
+ * <http://www.gnu.org/licenses/> and
+ * <http://www.cecill.info/licences.fr.html>.
+ */
+
+package org.lilie.services.eliot.notes.applet.panels.composants
+
+import javax.swing.table.DefaultTableCellRenderer
+import java.awt.Component
+import javax.swing.JTable
+import java.awt.Color
+import org.lilie.services.eliot.notes.applet.data.ModaliteElection
+
+/**
+ * Renderer qui affiche en rouge les lignes ou il faut choisir une modalite
+ * d'election.
+ * @author msan
+ */
+class EleveInfoCellRenderer extends DefaultTableCellRenderer {
+
+ Color colorErronnee = new Color(0xff, 0xa4, 0xa4)
+ Color colorOk = new Color(0xff, 0xff, 0xff)
+
+ Component getTableCellRendererComponent(JTable table, Object value,
+ boolean isSelected, boolean hasFocus, int row, int column) {
+ Component component = super.getTableCellRendererComponent(table, value,
+ isSelected, hasFocus, row, column)
+ // set background
+ if (estErronee(table, row)) {
+ component.setBackground(colorErronnee)
+ } else {
+ component.setBackground(colorOk)
+ }
+ return component
+ }
+
+ /**
+ * Si il faut marquer cette ligne comme erronnee
+ */
+ private Boolean estErronee(JTable table, int row) {
+ def modalite = table.getValueAt(row, 3)
+ return (modalite == ModaliteElection.N)
+ }
+}
-/*\r
- * Copyright © FYLAB and the Conseil Régional d'Île-de-France, 2009\r
- * This file is part of L'Interface Libre et Interactive de l'Enseignement (Lilie).\r
- *\r
- * Lilie is free software. You can redistribute it and/or modify since\r
- * you respect the terms of either (at least one of the both license) :\r
- * - under the terms of the GNU Affero General Public License as\r
- * published by the Free Software Foundation, either version 3 of the\r
- * License, or (at your option) any later version.\r
- * - the CeCILL-C as published by CeCILL-C; either version 1 of the\r
- * License, or any later version\r
- *\r
- * There are special exceptions to the terms and conditions of the\r
- * licenses as they are applied to this software. View the full text of\r
- * the exception in file LICENSE.txt in the directory of this software\r
- * distribution.\r
- *\r
- * Lilie is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- * Licenses for more details.\r
- *\r
- * You should have received a copy of the GNU General Public License\r
- * and the CeCILL-C along with Lilie. If not, see :\r
- * <http://www.gnu.org/licenses/> and\r
- * <http://www.cecill.info/licences.fr.html>.\r
- */\r
-\r
-package org.lilie.services.eliot.notes.applet.panels.composants\r
-\r
-import javax.swing.table.AbstractTableModel\r
-import org.lilie.services.eliot.notes.applet.data.ModaliteElection\r
-\r
-import org.lilie.services.eliot.notes.applet.data.ModaliteChangeeInfo\r
-\r
-/**\r
- * Modele de grille de saisie des modalites d'election.\r
- * @author msan\r
- */\r
-class EleveTableModel extends AbstractTableModel {\r
- String[] columnNames = [\r
- "Classe",\r
- "Nom",\r
- "Matiére",\r
- "Modalité",\r
- "INE",\r
- "Code Modalite",\r
- "idSconet",\r
- "annee"\r
- ]\r
-\r
- Object[][] data = []\r
-\r
- public int getColumnCount() {\r
- return 4 // les dernieres colonnes ne sont pas affichees\r
- }\r
-\r
- public int getRowCount() {\r
- return data.length;\r
- }\r
-\r
- public String getColumnName(int col) {\r
- return columnNames[col];\r
- }\r
-\r
- public Object getValueAt(int row, int col) {\r
- return data[row][col];\r
- }\r
-\r
- public Class getColumnClass(int c) {\r
- if (columnCount==3 ) {\r
- return ModaliteElection.class\r
- } else {\r
- return String.class\r
- }\r
- }\r
-\r
- public void setValueAt(Object value, int row, int column) {\r
- data[row][column] = value;\r
- fireTableRowsUpdated(row, row);\r
- }\r
-\r
- public boolean isCellEditable(int row, int col) {\r
- //Note that the data/cell address is constant,\r
- //no matter where the cell appears onscreen.\r
- if (col == 3) {\r
- return true;\r
- } else {\r
- return false;\r
- }\r
- }\r
-\r
- /**\r
- * True s'il y a des modalites a positionner\r
- */\r
- Boolean modalitesApositioner() {\r
- return data.any { it[3] == ModaliteElection.N }\r
- }\r
-\r
- /**\r
- * Modalites choisies dans la grille\r
- */\r
- List<ModaliteChangeeInfo> getModalites() {\r
-\r
- return this.data.collect() {\r
- new ModaliteChangeeInfo(\r
- ine: it[4],\r
- matiereIdSconet: it[5],\r
- modalite: it[3]\r
- )\r
- }\r
- }\r
-}\r
+/*
+ * Copyright © FYLAB and the Conseil Régional d'Île-de-France, 2009
+ * This file is part of L'Interface Libre et Interactive de l'Enseignement (Lilie).
+ *
+ * Lilie is free software. You can redistribute it and/or modify since
+ * you respect the terms of either (at least one of the both license) :
+ * - under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ * - the CeCILL-C as published by CeCILL-C; either version 1 of the
+ * License, or any later version
+ *
+ * There are special exceptions to the terms and conditions of the
+ * licenses as they are applied to this software. View the full text of
+ * the exception in file LICENSE.txt in the directory of this software
+ * distribution.
+ *
+ * Lilie is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * Licenses for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * and the CeCILL-C along with Lilie. If not, see :
+ * <http://www.gnu.org/licenses/> and
+ * <http://www.cecill.info/licences.fr.html>.
+ */
+
+package org.lilie.services.eliot.notes.applet.panels.composants
+
+import javax.swing.table.AbstractTableModel
+import org.lilie.services.eliot.notes.applet.data.ModaliteElection
+import org.lilie.services.eliot.notes.applet.data.ModaliteChangeeInfo
+
+/**
+ * Modele de grille de saisie des modalites d'election.
+ * @author msan
+ */
+class EleveTableModel extends AbstractTableModel {
+ String[] columnNames = [
+ "Classe",
+ "Nom",
+ "Matiére",
+ "Modalité",
+ "INE",
+ "Code Modalite",
+ "idSconet",
+ "annee"
+ ]
+
+ Object[][] data = []
+
+ public int getColumnCount() {
+ return 4 // les dernieres colonnes ne sont pas affichees
+ }
+
+ public int getRowCount() {
+ return data.length;
+ }
+
+ public String getColumnName(int col) {
+ return columnNames[col];
+ }
+
+ public Object getValueAt(int row, int col) {
+ return data[row][col];
+ }
+
+ public Class getColumnClass(int c) {
+ if (columnCount==3 ) {
+ return ModaliteElection.class
+ } else {
+ return String.class
+ }
+ }
+
+ public void setValueAt(Object value, int row, int column) {
+ data[row][column] = value;
+ fireTableRowsUpdated(row, row);
+ }
+
+ public boolean isCellEditable(int row, int col) {
+ //Note that the data/cell address is constant,
+ //no matter where the cell appears onscreen.
+ if (col == 3) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ /**
+ * True s'il y a des modalites a positionner
+ */
+ Boolean modalitesApositioner() {
+ return data.any { it[3] == ModaliteElection.N }
+ }
+
+ /**
+ * Modalites choisies dans la grille
+ */
+ List<ModaliteChangeeInfo> getModalites() {
+
+ return this.data.collect() {
+ new ModaliteChangeeInfo(
+ ine: it[4],
+ matiereIdSconet: it[5],
+ modalite: it[3]
+ )
+ }
+ }
+}
package org.lilie.services.eliot.notes.applet.panels.composants
-import org.lilie.services.eliot.notes.applet.i18n.Constantes
import javax.swing.JLabel
+import org.lilie.services.eliot.notes.applet.i18n.Constantes
/**
* Label avec une écriture simple
package org.lilie.services.eliot.notes.applet.panels.composants
-import org.lilie.services.eliot.notes.applet.i18n.Constantes
import javax.swing.JLabel
+import org.lilie.services.eliot.notes.applet.i18n.Constantes
/**
* Label avec une écriture en gras
import java.awt.event.ActionEvent
import java.awt.event.ActionListener
import javax.swing.*
-import org.lilie.services.eliot.notes.applet.utils.BureauService
-import org.lilie.services.eliot.notes.applet.i18n.Constantes
import javax.swing.event.DocumentListener
import javax.swing.event.DocumentEvent
+import org.lilie.services.eliot.notes.applet.utils.BureauService
+import org.lilie.services.eliot.notes.applet.i18n.Constantes
/**
* Réalisation en swing d'un contrôle destiné à afficher un répertoire et
-/*\r
- * Copyright © FYLAB and the Conseil Régional d'Île-de-France, 2009\r
- * This file is part of L'Interface Libre et Interactive de l'Enseignement (Lilie).\r
- *\r
- * Lilie is free software. You can redistribute it and/or modify since\r
- * you respect the terms of either (at least one of the both license) :\r
- * - under the terms of the GNU Affero General Public License as\r
- * published by the Free Software Foundation, either version 3 of the\r
- * License, or (at your option) any later version.\r
- * - the CeCILL-C as published by CeCILL-C; either version 1 of the\r
- * License, or any later version\r
- *\r
- * There are special exceptions to the terms and conditions of the\r
- * licenses as they are applied to this software. View the full text of\r
- * the exception in file LICENSE.txt in the directory of this software\r
- * distribution.\r
- *\r
- * Lilie is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- * Licenses for more details.\r
- *\r
- * You should have received a copy of the GNU General Public License\r
- * and the CeCILL-C along with Lilie. If not, see :\r
- * <http://www.gnu.org/licenses/> and\r
- * <http://www.cecill.info/licences.fr.html>.\r
- */\r
-\r
-package org.lilie.services.eliot.notes.applet.panels.composants\r
-\r
-import org.lilie.services.eliot.notes.applet.data.ModaliteElection\r
-\r
-/**\r
- * Renderer qui affiche le libelle de modalite d'election\r
- * @author msan\r
- */\r
-class ModaliteCellRenderer extends EleveInfoCellRenderer {\r
-\r
- void setValue(Object value) {\r
- setText(((ModaliteElection)value).libelle)\r
- }\r
-\r
-}\r
+/*
+ * Copyright © FYLAB and the Conseil Régional d'Île-de-France, 2009
+ * This file is part of L'Interface Libre et Interactive de l'Enseignement (Lilie).
+ *
+ * Lilie is free software. You can redistribute it and/or modify since
+ * you respect the terms of either (at least one of the both license) :
+ * - under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ * - the CeCILL-C as published by CeCILL-C; either version 1 of the
+ * License, or any later version
+ *
+ * There are special exceptions to the terms and conditions of the
+ * licenses as they are applied to this software. View the full text of
+ * the exception in file LICENSE.txt in the directory of this software
+ * distribution.
+ *
+ * Lilie is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * Licenses for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * and the CeCILL-C along with Lilie. If not, see :
+ * <http://www.gnu.org/licenses/> and
+ * <http://www.cecill.info/licences.fr.html>.
+ */
+
+package org.lilie.services.eliot.notes.applet.panels.composants
+
+import org.lilie.services.eliot.notes.applet.data.ModaliteElection
+
+/**
+ * Renderer qui affiche le libelle de modalite d'election
+ * @author msan
+ */
+class ModaliteCellRenderer extends EleveInfoCellRenderer {
+
+ void setValue(Object value) {
+ setText(((ModaliteElection)value).libelle)
+ }
+
+}
-/*\r
- * Copyright © FYLAB and the Conseil Régional d'Île-de-France, 2009\r
- * This file is part of L'Interface Libre et Interactive de l'Enseignement (Lilie).\r
- *\r
- * Lilie is free software. You can redistribute it and/or modify since\r
- * you respect the terms of either (at least one of the both license) :\r
- * - under the terms of the GNU Affero General Public License as\r
- * published by the Free Software Foundation, either version 3 of the\r
- * License, or (at your option) any later version.\r
- * - the CeCILL-C as published by CeCILL-C; either version 1 of the\r
- * License, or any later version\r
- *\r
- * There are special exceptions to the terms and conditions of the\r
- * licenses as they are applied to this software. View the full text of\r
- * the exception in file LICENSE.txt in the directory of this software\r
- * distribution.\r
- *\r
- * Lilie is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- * Licenses for more details.\r
- *\r
- * You should have received a copy of the GNU General Public License\r
- * and the CeCILL-C along with Lilie. If not, see :\r
- * <http://www.gnu.org/licenses/> and\r
- * <http://www.cecill.info/licences.fr.html>.\r
- */\r
-\r
-package org.lilie.services.eliot.notes.applet.panels.composants\r
-\r
-import javax.swing.JComboBox\r
-import org.lilie.services.eliot.notes.applet.data.ModaliteElection\r
-\r
-/**\r
- * ComboBox pour la selection de modalite d'election\r
- * @author msan\r
- */\r
-class ModaliteComboBox extends JComboBox {\r
- \r
- ModaliteComboBox() {\r
- super([\r
- ModaliteElection.O,\r
- ModaliteElection.F,\r
- ModaliteElection.N\r
- ].toArray())\r
- }\r
-\r
-}\r
+/*
+ * Copyright © FYLAB and the Conseil Régional d'Île-de-France, 2009
+ * This file is part of L'Interface Libre et Interactive de l'Enseignement (Lilie).
+ *
+ * Lilie is free software. You can redistribute it and/or modify since
+ * you respect the terms of either (at least one of the both license) :
+ * - under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ * - the CeCILL-C as published by CeCILL-C; either version 1 of the
+ * License, or any later version
+ *
+ * There are special exceptions to the terms and conditions of the
+ * licenses as they are applied to this software. View the full text of
+ * the exception in file LICENSE.txt in the directory of this software
+ * distribution.
+ *
+ * Lilie is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * Licenses for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * and the CeCILL-C along with Lilie. If not, see :
+ * <http://www.gnu.org/licenses/> and
+ * <http://www.cecill.info/licences.fr.html>.
+ */
+
+package org.lilie.services.eliot.notes.applet.panels.composants
+
+import javax.swing.JComboBox
+import org.lilie.services.eliot.notes.applet.data.ModaliteElection
+
+/**
+ * ComboBox pour la selection de modalite d'election
+ * @author msan
+ */
+class ModaliteComboBox extends JComboBox {
+
+ ModaliteComboBox() {
+ super([
+ ModaliteElection.O,
+ ModaliteElection.F,
+ ModaliteElection.N
+ ].toArray())
+ }
+
+}
package org.lilie.services.eliot.notes.applet.panels.composants.multilines
-import org.lilie.services.eliot.notes.applet.i18n.Constantes
import javax.swing.JTextPane
import javax.swing.text.StyleConstants
import javax.swing.text.SimpleAttributeSet
+import org.lilie.services.eliot.notes.applet.i18n.Constantes
/**
* Composant label multiligne, destiné à contourner le bug de Java/Swing
-package org.lilie.services.eliot.notes.applet.panels.composants.panneaux\r
-\r
-import javax.swing.JComponent\r
-import org.lilie.services.eliot.notes.applet.panels.utils.PanelListener\r
-import org.lilie.services.eliot.notes.applet.panels.utils.EvenementPanel\r
-\r
-/**\r
- * Un ancetre commun des panneaux d'applet\r
- * @author msan\r
- */\r
-abstract class AbstractPanel {\r
- private List<PanelListener> listeners = []\r
-\r
- /**\r
- * Component racine de panel\r
- */\r
- abstract protected JComponent getComponentRacine()\r
-\r
- /**\r
- * Ajout de listener des evenements\r
- */\r
- void addPanelListener(PanelListener panelListener) {\r
- listeners.add(panelListener)\r
- }\r
-\r
- /**\r
- * Leve un evenement lie aux panneaux\r
- */\r
- void firePanelEvenement(EvenementPanel evenement) {\r
- listeners.each { PanelListener panelListener ->\r
- panelListener.evenementLeve(evenement)\r
- }\r
- }\r
-}\r
+package org.lilie.services.eliot.notes.applet.panels.composants.panneaux
+
+import javax.swing.JComponent
+import org.lilie.services.eliot.notes.applet.panels.utils.PanelListener
+import org.lilie.services.eliot.notes.applet.panels.utils.EvenementPanel
+
+/**
+ * Un ancetre commun des panneaux d'applet
+ * @author msan
+ */
+abstract class AbstractPanel {
+ private List<PanelListener> listeners = []
+
+ /**
+ * Component racine de panel
+ */
+ abstract protected JComponent getComponentRacine()
+
+ /**
+ * Ajout de listener des evenements
+ */
+ void addPanelListener(PanelListener panelListener) {
+ listeners.add(panelListener)
+ }
+
+ /**
+ * Leve un evenement lie aux panneaux
+ */
+ void firePanelEvenement(EvenementPanel evenement) {
+ listeners.each { PanelListener panelListener ->
+ panelListener.evenementLeve(evenement)
+ }
+ }
+}
-package org.lilie.services.eliot.notes.applet.panels.composants.panneaux\r
-\r
-import javax.swing.JComponent\r
-import javax.swing.JPanel\r
-import java.awt.BorderLayout\r
-\r
-\r
-/**\r
- * Container des panneaux.\r
- * Panneau principal d'applet.\r
- * @author msan\r
- */\r
-class AppletPanel extends AbstractPanel {\r
- JPanel panelGeneral\r
- JPanel panelContenu\r
-\r
- AppletPanel () { \r
- panelGeneral = new JEliotPanel();\r
- panelContenu = new JEliotPanel();\r
- panelGeneral.add(panelContenu, BorderLayout.CENTER);\r
- }\r
-\r
- JComponent getComponentRacine() {\r
- return panelGeneral\r
- }\r
-\r
- /**\r
- * Change le contenu de panneau.\r
- */\r
- void setContenuCentre(AbstractPanel panel) {\r
- this.panelContenu.removeAll()\r
- this.panelContenu.revalidate()\r
- this.panelContenu.add(panel.getComponentRacine(), BorderLayout.CENTER)\r
- }\r
-}\r
+package org.lilie.services.eliot.notes.applet.panels.composants.panneaux
+
+import javax.swing.JComponent
+import javax.swing.JPanel
+import java.awt.BorderLayout
+
+
+/**
+ * Container des panneaux.
+ * Panneau principal d'applet.
+ * @author msan
+ */
+class AppletPanel extends AbstractPanel {
+ JPanel panelGeneral
+ JPanel panelContenu
+
+ AppletPanel () {
+ panelGeneral = new JEliotPanel();
+ panelContenu = new JEliotPanel();
+ panelGeneral.add(panelContenu, BorderLayout.CENTER);
+ }
+
+ JComponent getComponentRacine() {
+ return panelGeneral
+ }
+
+ /**
+ * Change le contenu de panneau.
+ */
+ void setContenuCentre(AbstractPanel panel) {
+ this.panelContenu.removeAll()
+ this.panelContenu.revalidate()
+ this.panelContenu.add(panel.getComponentRacine(), BorderLayout.CENTER)
+ }
+}
-package org.lilie.services.eliot.notes.applet.panels.utils\r
-\r
-/**\r
- * Evenements lies aux panneaux\r
- * @author msan\r
- */\r
-public enum EvenementPanel {\r
- MERGE_LANCE,\r
- MERGE_FINI,\r
- EXPORT_LANCE,\r
- EXPORT_FINI,\r
+package org.lilie.services.eliot.notes.applet.panels.utils
+
+/**
+ * Evenements lies aux panneaux
+ * @author msan
+ */
+public enum EvenementPanel {
+ MERGE_LANCE,
+ MERGE_FINI,
+ EXPORT_LANCE,
+ EXPORT_FINI
}
\ No newline at end of file
-package org.lilie.services.eliot.notes.applet.panels.utils\r
-\r
-/**\r
- * Listener des evenements lies aux panneaux\r
- * @author msan\r
- */\r
-interface PanelListener {\r
- void evenementLeve(EvenementPanel evenement)\r
-}\r
+package org.lilie.services.eliot.notes.applet.panels.utils
+
+/**
+ * Listener des evenements lies aux panneaux
+ * @author msan
+ */
+interface PanelListener {
+ void evenementLeve(EvenementPanel evenement)
+}
-package org.lilie.services.eliot.notes.applet.services\r
-\r
-import org.lilie.services.eliot.notes.applet.data.apb.ServiceNotationInfo\r
-\r
-import org.lilie.services.eliot.notes.applet.data.ModaliteChangeeInfo\r
-import org.lilie.services.eliot.notes.applet.data.EleveInfoEtendu\r
-\r
-/**\r
- * Parametres d'export\r
- * @author msan\r
- */\r
-class ExportParams {\r
- File fichierAPBbrut\r
- File fichierAPBetendu\r
- List<ServiceNotationInfo> serviceNotationInfos = []\r
- List<EleveInfoEtendu> eleveInfos = []\r
- List<ModaliteChangeeInfo> modaliteChangeeInfos = []\r
- String anneeScolaireSconet = null\r
-}\r
+package org.lilie.services.eliot.notes.applet.services
+
+import org.lilie.services.eliot.notes.applet.data.apb.ServiceNotationInfo
+import org.lilie.services.eliot.notes.applet.data.EleveInfoEtendu
+import org.lilie.services.eliot.notes.applet.data.ModaliteChangeeInfo
+
+/**
+ * Parametres d'export
+ * @author msan
+ */
+class ExportParams {
+ File fichierAPBbrut
+ File fichierAPBetendu
+ List<ServiceNotationInfo> serviceNotationInfos = []
+ List<EleveInfoEtendu> eleveInfos = []
+ List<ModaliteChangeeInfo> modaliteChangeeInfos = []
+ String anneeScolaireSconet = null
+}
import javax.xml.stream.XMLStreamReader
import javax.xml.stream.XMLStreamWriter
import javax.xml.stream.events.XMLEvent
-import org.lilie.services.eliot.notes.applet.data.ModaliteElection
-import org.lilie.services.eliot.notes.applet.data.apb.ServiceNotationInfo
-import org.lilie.services.eliot.notes.applet.data.EleveInfoEtendu
-import org.apache.log4j.Logger
+import java.util.logging.Logger
import org.lilie.services.eliot.notes.applet.utils.log4j.LoggerInit
import org.lilie.services.eliot.notes.applet.utils.ParametresCourant
+import org.lilie.services.eliot.notes.applet.data.EleveInfoEtendu
+import org.lilie.services.eliot.notes.applet.data.ModaliteElection
import org.lilie.services.eliot.notes.applet.data.ModaliteChangeeInfo
+import org.lilie.services.eliot.notes.applet.data.apb.ServiceNotationInfo
import org.lilie.services.eliot.notes.applet.data.ModaliteInfo
/**
import java.util.zip.ZipFile
import org.lilie.services.eliot.notes.applet.jobs.exceptions.MauvaisDossierException
import org.lilie.services.eliot.notes.applet.jobs.exceptions.MauvaisFichierException
-import org.lilie.services.eliot.notes.applet.utils.ParametresCourant
+import org.lilie.services.eliot.notes.applet.NotanetApplet
/**
* Ensemble de fonctions destinées à manipuler les fichiers sur disque
/**
* lecture d'un fichier xml. Vérifie si le chemin existe et est accessible
*/
- static public XMLStreamReader lisFichierImport(String path){
+ static public XMLStreamReader lisFichierImport(String path) {
return streamToXML(
- ouvreFichierDansFlux(path)
+ ouvreFichierDansFlux(path)
)
}
/**
* ouvre un fichier disque ou zip et le charge dans un flux
*/
- static public InputStream ouvreFichierDansFlux(String path){
+ static public InputStream ouvreFichierDansFlux(String path) {
File file = new File(path)
verifieFichier(file)
InputStream inputStream = null
/**
* Validation du fichier APB
*/
- static public void valideFichier(InputStream fluxXml, String nomXsd,
- URL urlBase, String docBase) {
- valideXML(fluxXml, getXsd(nomXsd, urlBase, docBase))
+ static public void valideFichier(InputStream fluxXml, String nomXsd) {
+ valideXML(fluxXml, getXsd(nomXsd))
}
/**
* Récupère le fichier xsd
*/
- static public InputStream getXsd(String nomXsd, URL urlBase, String docBase) {
- getFile(urlBase, docBase, "../applet/$nomXsd")
+ static public InputStream getXsd(String nomXsd) {
+ URLClassLoader classLoader = (URLClassLoader) NotanetApplet.classLoader
+ return classLoader.getResourceAsStream(nomXsd)
}
/**
- * Récupère un fichier local ou distant si le fichier local n'existe pas
+ * Validation de fichier
*/
- static public InputStream getFile(URL urlBase, String docBase, String filename) {
-// if (ParametresCourant.get().log()) {
-// println("getFile params: urlBase: $urlBase docBase: $docBase filename: $filename")
-// }
-
- // cherche le fichier local d'abord
- if (docBase) {
- File docLocal = new File(docBase, filename)
- if (docLocal.exists()) {
-// if (ParametresCourant.get().log()) {
-// println('getFile docLocal: '+docLocal.getAbsolutePath())
-// }
- return new FileInputStream(docLocal)
- }
- }
-
- // s'il nexiste pas ou docbase n'est pas specifie, prends le fichier distant
- URL url = new URL(urlBase, filename)
-// if (ParametresCourant.get().log()) {
-// println('getFile URL: '+(url.toString()))
-// }
- return url.openStream()
+ static public void valideFichier(String cheminFichier, String nomXsd) {
+ valideFichier(new FileInputStream(cheminFichier), nomXsd)
}
/**
* Validation de fichier APB
*/
- static public void valideFichierAPB(String cheminAPB, URL urlBase, String docBase){
- valideFichier(new FileInputStream(cheminAPB), FILENAME_XSD_APB, urlBase, docBase)
+ static public void valideFichierAPB(String cheminAPB) {
+ valideFichier(cheminAPB, FILENAME_XSD_APB)
}
/**
* Validation de fichier Notanet
*/
- static public void valideFichierNotanet(String cheminNotanet, URL urlBase, String docBase){
- valideFichier(new FileInputStream(cheminNotanet), FILENAME_XSD_NOTANET, urlBase, docBase)
- }
-
- /**
- * Validation de fichier APB
- * @param nom de fichier XSD
- */
- static public void valideFichier(String cheminFichier, String nomXsd, URL urlBase, String docBase){
- valideFichier(new FileInputStream(cheminFichier), nomXsd, urlBase, docBase)
+ static public void valideFichierNotanet(String cheminNotanet) {
+ valideFichier(cheminNotanet, FILENAME_XSD_NOTANET)
}
package org.lilie.services.eliot.notes.applet.services
-import org.lilie.services.eliot.notes.applet.data.sconet.dto.EleveSconet
-
-import org.lilie.services.eliot.notes.applet.utils.StringUtils
import org.apache.log4j.Logger
import org.lilie.services.eliot.notes.applet.utils.ParametresCourant
import org.lilie.services.eliot.notes.applet.utils.log4j.LoggerInit
-import org.lilie.services.eliot.notes.applet.jobs.exceptions.EleveSansCorrespondanceException
-
+import org.lilie.services.eliot.notes.applet.data.sconet.dto.EleveSconet
import org.lilie.services.eliot.notes.applet.data.EleveInfo
+import org.lilie.services.eliot.notes.applet.jobs.exceptions.EleveSansCorrespondanceException
+import org.lilie.services.eliot.notes.applet.utils.StringUtils
/**
* Parent commun des services de merge avec les fichiers Sconet
-/*\r
- * Copyright © FYLAB and the Conseil Régional d'Île-de-France, 2009\r
- * This file is part of L'Interface Libre et Interactive de l'Enseignement (Lilie).\r
- *\r
- * Lilie is free software. You can redistribute it and/or modify since\r
- * you respect the terms of either (at least one of the both license) :\r
- * - under the terms of the GNU Affero General Public License as\r
- * published by the Free Software Foundation, either version 3 of the\r
- * License, or (at your option) any later version.\r
- * - the CeCILL-C as published by CeCILL-C; either version 1 of the\r
- * License, or any later version\r
- *\r
- * There are special exceptions to the terms and conditions of the\r
- * licenses as they are applied to this software. View the full text of\r
- * the exception in file LICENSE.txt in the directory of this software\r
- * distribution.\r
- *\r
- * Lilie is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- * Licenses for more details.\r
- *\r
- * You should have received a copy of the GNU General Public License\r
- * and the CeCILL-C along with Lilie. If not, see :\r
- * <http://www.gnu.org/licenses/> and\r
- * <http://www.cecill.info/licences.fr.html>.\r
- */\r
-\r
-package org.lilie.services.eliot.notes.applet.services\r
-\r
-import org.lilie.services.eliot.notes.applet.jobs.Phase\r
-import org.lilie.services.eliot.notes.applet.jobs.exceptions.EleveSansCorrespondanceException\r
-\r
-/**\r
- * Parametres de rapport d'export\r
- * @author msan\r
- */\r
-class RapportParams {\r
-\r
- String titre = '' // titre de rapport\r
- String nomExport ='' // nom d'export Admission Post-Bac, Notanet ...\r
- Long totalElevesExportes = 0\r
- File fichierRapport\r
- List<EleveSansCorrespondanceException> elevesManquants\r
- Date dateCreationRapport\r
- List<Throwable> exceptions\r
- Phase phase\r
-\r
-}\r
+/*
+ * Copyright © FYLAB and the Conseil Régional d'Île-de-France, 2009
+ * This file is part of L'Interface Libre et Interactive de l'Enseignement (Lilie).
+ *
+ * Lilie is free software. You can redistribute it and/or modify since
+ * you respect the terms of either (at least one of the both license) :
+ * - under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ * - the CeCILL-C as published by CeCILL-C; either version 1 of the
+ * License, or any later version
+ *
+ * There are special exceptions to the terms and conditions of the
+ * licenses as they are applied to this software. View the full text of
+ * the exception in file LICENSE.txt in the directory of this software
+ * distribution.
+ *
+ * Lilie is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * Licenses for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * and the CeCILL-C along with Lilie. If not, see :
+ * <http://www.gnu.org/licenses/> and
+ * <http://www.cecill.info/licences.fr.html>.
+ */
+
+package org.lilie.services.eliot.notes.applet.services
+
+import org.lilie.services.eliot.notes.applet.jobs.exceptions.EleveSansCorrespondanceException
+import org.lilie.services.eliot.notes.applet.jobs.Phase
+
+/**
+ * Parametres de rapport d'export
+ * @author msan
+ */
+class RapportParams {
+
+ String titre = '' // titre de rapport
+ String nomExport ='' // nom d'export Admission Post-Bac, Notanet ...
+ Long totalElevesExportes = 0
+ File fichierRapport
+ List<EleveSansCorrespondanceException> elevesManquants
+ Date dateCreationRapport
+ List<Throwable> exceptions
+ Phase phase
+
+}
-/*\r
- * Copyright © FYLAB and the Conseil Régional d'Île-de-France, 2009\r
- * This file is part of L'Interface Libre et Interactive de l'Enseignement (Lilie).\r
- *\r
- * Lilie is free software. You can redistribute it and/or modify since\r
- * you respect the terms of either (at least one of the both license) :\r
- * - under the terms of the GNU Affero General Public License as\r
- * published by the Free Software Foundation, either version 3 of the\r
- * License, or (at your option) any later version.\r
- * - the CeCILL-C as published by CeCILL-C; either version 1 of the\r
- * License, or any later version\r
- *\r
- * There are special exceptions to the terms and conditions of the\r
- * licenses as they are applied to this software. View the full text of\r
- * the exception in file LICENSE.txt in the directory of this software\r
- * distribution.\r
- *\r
- * Lilie is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- * Licenses for more details.\r
- *\r
- * You should have received a copy of the GNU General Public License\r
- * and the CeCILL-C along with Lilie. If not, see :\r
- * <http://www.gnu.org/licenses/> and\r
- * <http://www.cecill.info/licences.fr.html>.\r
- */\r
-\r
-package org.lilie.services.eliot.notes.applet.services\r
-\r
-import groovy.xml.MarkupBuilder\r
-import java.text.SimpleDateFormat\r
-import org.lilie.services.eliot.notes.applet.utils.StringUtils\r
-import org.lilie.services.eliot.notes.applet.utils.ExceptionUtils\r
-import org.lilie.services.eliot.notes.applet.utils.log4j.MemoryAppender\r
-import org.lilie.services.eliot.notes.applet.jobs.exceptions.EleveSansCorrespondanceException\r
-import org.lilie.services.eliot.notes.applet.i18n.Constantes\r
-import org.lilie.services.eliot.notes.applet.data.EleveInfo\r
-import java.nio.charset.Charset\r
-\r
-/**\r
- * Creation de rapport d'export\r
- * @author msan\r
- */\r
-class RapportService {\r
-\r
- private SimpleDateFormat sdf = new SimpleDateFormat('dd/MM/yyyy HH:mm:ss', Locale.FRANCE)\r
- private SimpleDateFormat sdfAPB = new SimpleDateFormat('yyyy-MM-dd', Locale.FRANCE)\r
- private SimpleDateFormat sdfRapport = new SimpleDateFormat('dd/MM/yyyy', Locale.FRANCE)\r
-\r
- /**\r
- * Formate le string de date naissance de 1996-12-20 a 20-12-1996\r
- */\r
- String formateDateNaissance(String str) {\r
- if (str==null || str=='') {\r
- return ''\r
- }\r
- return sdfRapport.format(sdfAPB.parse(str))\r
- }\r
-\r
- void construisRapport(RapportParams params) {\r
-\r
- // tri les eleves\r
- params.elevesManquants = trieEleves(params.elevesManquants)\r
-\r
- OutputStreamWriter osw = new OutputStreamWriter(\r
- new FileOutputStream(params.fichierRapport),\r
- Charset.forName('UTF-8')\r
- )\r
- MarkupBuilder builder = new MarkupBuilder(osw)\r
-\r
- this.ecritRapport(builder, params)\r
-\r
- }\r
-\r
- /**\r
- * Trie eleves par la classe, nom, prenom\r
- */\r
- List<EleveSansCorrespondanceException> trieEleves(List<EleveSansCorrespondanceException> exceptions) {\r
-\r
- // trie les infos. classe - nom - prenom - matiere\r
- return exceptions.sort { EleveSansCorrespondanceException exA,\r
- EleveSansCorrespondanceException exB ->\r
- EleveInfo a = exA.eleveInfo\r
- EleveInfo b = exB.eleveInfo\r
- int cmp = a.classe <=> b.classe\r
- if (cmp) {\r
- return cmp\r
- }\r
-\r
- cmp = StringUtils.normalise(a.nom) <=> StringUtils.normalise(b.nom)\r
- if (cmp) {\r
- return cmp\r
- }\r
-\r
- return StringUtils.normalise(a.prenom) <=> StringUtils.normalise(b.prenom)\r
- }\r
-\r
- }\r
-\r
- /**\r
- * Construis le fichier HTML avec le rapport d'export\r
- */\r
- @SuppressWarnings(['AbcComplexity', 'MethodSize']) // JTRA : Il s'agit d'un rapport\r
- void ecritRapport(MarkupBuilder builder, RapportParams params) {\r
-\r
- Long totalElevesManquants = params.elevesManquants?.size() ?: 0\r
- Boolean erreurArrivee = totalElevesManquants > 0\r
- Boolean exceptionArrivee = params.exceptions?.size() > 0\r
-\r
- builder.html {\r
- head {\r
- meta("http-equiv": "Content-Type", "content": "text/html; charset=UTF-8")\r
- style(type: "text/css", """\r
-.error {color:red;}\r
-.details td {\r
- font-family : 'courier new',courier,monospace;\r
- font-size: 12px;\r
- vertical-align:top;\r
-}""")\r
- script('language': "javascript", "type": "text/javascript", """\r
- function afficheDetails() {\r
- document.getElementById('details_techniques').style.display = 'block';\r
- document.getElementById('cacherDetails').style.display = 'block';\r
- document.getElementById('afficherDetails').style.display = 'none';\r
- };\r
- function cacheDetails() {\r
- document.getElementById('details_techniques').style.display = 'none';\r
- document.getElementById('cacherDetails').style.display = 'none';\r
- document.getElementById('afficherDetails').style.display = 'block';\r
- };\r
- """)\r
- }\r
- body {\r
- center {\r
- h1(Constantes.RAPPORT_TITRE+params.nomExport)\r
-\r
- h4 {\r
- p("${Constantes.RAPPORT_DATE_CREATION} : " + sdf.format(params.dateCreationRapport))\r
- if (exceptionArrivee) {\r
- p('class': 'error', "${Constantes.PROBLEME_PENDANT_EXPORT} : " +\r
- params.exceptions.collect {it.getMessage()}.join(' '))\r
- } else if (params.totalElevesExportes>0){\r
- p(Constantes.EXPORT_OK_1+params.nomExport+Constantes.EXPORT_OK_2)\r
- } else {\r
- p(Constantes.EXPORT_NOK_1+params.nomExport+Constantes.EXPORT_NOK_2)\r
- }\r
- p("${Constantes.NB_ELEVES_TRAITES} : " + params.totalElevesExportes)\r
- p("class": erreurArrivee ? 'error' : 'ok',\r
- "${Constantes.NB_ELEVES_IGNORES} : " + totalElevesManquants)\r
- }\r
- if (params?.elevesManquants?.size()>0) {\r
- div {\r
- table {\r
- tr {\r
- td ('colspan':'3',"${Constantes.DETAIL_IGNORES} :")\r
- }\r
- params.elevesManquants.each { EleveSansCorrespondanceException ex ->\r
- EleveInfo eleveInfo = ex.eleveInfo\r
- tr {\r
- td("${eleveInfo.nom} "+\r
- "${eleveInfo.prenom} "+\r
- "${formateDateNaissance(eleveInfo.dateNaissance)}"+\r
- (eleveInfo.classe?" (${eleveInfo.classe})":""))\r
- td(" -> ")\r
- String messageErreur = ""\r
- switch (ex.typeErreur) {\r
- case EleveSansCorrespondanceException.ID_SCONET:\r
- messageErreur = Constantes.IDSCONET_PAS_TROUVE\r
- break\r
- case EleveSansCorrespondanceException.TRIO_AUCUN:\r
- messageErreur = Constantes.RECHERCHE_PAS_ABOUTI\r
- break\r
- case EleveSansCorrespondanceException.TRIO_PLUSIEURS:\r
- messageErreur = Constantes.RECHERCHE_PAS_ABOUTI\r
- break\r
- }\r
- td(messageErreur)\r
- }\r
- }\r
- }\r
- }\r
- }\r
- if (exceptionArrivee) {\r
- div('id': 'afficherDetails', 'style': 'display:block') {\r
- a('href': '#', 'onclick': "afficheDetails();return false",\r
- Constantes.AFFICHER_LOG)\r
- }\r
- div('id': 'cacherDetails', 'style': 'display:none') {\r
- a('href': '#', 'onclick': "cacheDetails();return false",\r
- Constantes.CACHER_LOG)\r
- }\r
- div("id": "details_techniques", "class": "details",\r
- "style": "display:none") {\r
- params.exceptions.each { Exception exception ->\r
- table ("class": "details", 'width':'80%'){\r
- tr {\r
- td("Message")\r
- td(exception.getMessage())\r
- }\r
-\r
- tr {\r
- td("Classname")\r
- td(exception.getClass().getCanonicalName())\r
- }\r
-\r
- tr {\r
- td("Stacktrace")\r
- td(ExceptionUtils.printStacktrace(exception))\r
- }\r
- }\r
- br {}\r
- }\r
- br {}\r
- table{\r
- tr{\r
- td("Journal")\r
- }\r
- MemoryAppender.getAppender().rapport.each{ String ligneRapport ->\r
- tr{\r
- td(ligneRapport)\r
- }\r
- }\r
- MemoryAppender.getAppender().clear()\r
- }\r
- }\r
- }\r
- }\r
- }\r
- }\r
-\r
- }\r
-}\r
+/*
+ * Copyright © FYLAB and the Conseil Régional d'Île-de-France, 2009
+ * This file is part of L'Interface Libre et Interactive de l'Enseignement (Lilie).
+ *
+ * Lilie is free software. You can redistribute it and/or modify since
+ * you respect the terms of either (at least one of the both license) :
+ * - under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ * - the CeCILL-C as published by CeCILL-C; either version 1 of the
+ * License, or any later version
+ *
+ * There are special exceptions to the terms and conditions of the
+ * licenses as they are applied to this software. View the full text of
+ * the exception in file LICENSE.txt in the directory of this software
+ * distribution.
+ *
+ * Lilie is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * Licenses for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * and the CeCILL-C along with Lilie. If not, see :
+ * <http://www.gnu.org/licenses/> and
+ * <http://www.cecill.info/licences.fr.html>.
+ */
+
+package org.lilie.services.eliot.notes.applet.services
+
+import groovy.xml.MarkupBuilder
+import java.text.SimpleDateFormat
+import java.nio.charset.Charset
+import org.lilie.services.eliot.notes.applet.jobs.exceptions.EleveSansCorrespondanceException
+import org.lilie.services.eliot.notes.applet.data.EleveInfo
+import org.lilie.services.eliot.notes.applet.utils.StringUtils
+import org.lilie.services.eliot.notes.applet.i18n.Constantes
+import org.lilie.services.eliot.notes.applet.utils.ExceptionUtils
+import org.lilie.services.eliot.notes.applet.utils.log4j.MemoryAppender
+
+/**
+ * Creation de rapport d'export
+ * @author msan
+ */
+class RapportService {
+
+ private SimpleDateFormat sdf = new SimpleDateFormat('dd/MM/yyyy HH:mm:ss', Locale.FRANCE)
+ private SimpleDateFormat sdfAPB = new SimpleDateFormat('yyyy-MM-dd', Locale.FRANCE)
+ private SimpleDateFormat sdfRapport = new SimpleDateFormat('dd/MM/yyyy', Locale.FRANCE)
+
+ /**
+ * Formate le string de date naissance de 1996-12-20 a 20-12-1996
+ */
+ String formateDateNaissance(String str) {
+ if (str==null || str=='') {
+ return ''
+ }
+ return sdfRapport.format(sdfAPB.parse(str))
+ }
+
+ void construisRapport(RapportParams params) {
+
+ // tri les eleves
+ params.elevesManquants = trieEleves(params.elevesManquants)
+
+ OutputStreamWriter osw = new OutputStreamWriter(
+ new FileOutputStream(params.fichierRapport),
+ Charset.forName('UTF-8')
+ )
+ MarkupBuilder builder = new MarkupBuilder(osw)
+
+ this.ecritRapport(builder, params)
+
+ }
+
+ /**
+ * Trie eleves par la classe, nom, prenom
+ */
+ List<EleveSansCorrespondanceException> trieEleves(List<EleveSansCorrespondanceException> exceptions) {
+
+ // trie les infos. classe - nom - prenom - matiere
+ return exceptions.sort { EleveSansCorrespondanceException exA,
+ EleveSansCorrespondanceException exB ->
+ EleveInfo a = exA.eleveInfo
+ EleveInfo b = exB.eleveInfo
+ int cmp = a.classe <=> b.classe
+ if (cmp) {
+ return cmp
+ }
+
+ cmp = StringUtils.normalise(a.nom) <=> StringUtils.normalise(b.nom)
+ if (cmp) {
+ return cmp
+ }
+
+ return StringUtils.normalise(a.prenom) <=> StringUtils.normalise(b.prenom)
+ }
+
+ }
+
+ /**
+ * Construis le fichier HTML avec le rapport d'export
+ */
+ @SuppressWarnings(['AbcComplexity', 'MethodSize']) // JTRA : Il s'agit d'un rapport
+ void ecritRapport(MarkupBuilder builder, RapportParams params) {
+
+ Long totalElevesManquants = params.elevesManquants?.size() ?: 0
+ Boolean erreurArrivee = totalElevesManquants > 0
+ Boolean exceptionArrivee = params.exceptions?.size() > 0
+
+ builder.html {
+ head {
+ meta("http-equiv": "Content-Type", "content": "text/html; charset=UTF-8")
+ style(type: "text/css", """
+.error {color:red;}
+.details td {
+ font-family : 'courier new',courier,monospace;
+ font-size: 12px;
+ vertical-align:top;
+}""")
+ script('language': "javascript", "type": "text/javascript", """
+ function afficheDetails() {
+ document.getElementById('details_techniques').style.display = 'block';
+ document.getElementById('cacherDetails').style.display = 'block';
+ document.getElementById('afficherDetails').style.display = 'none';
+ };
+ function cacheDetails() {
+ document.getElementById('details_techniques').style.display = 'none';
+ document.getElementById('cacherDetails').style.display = 'none';
+ document.getElementById('afficherDetails').style.display = 'block';
+ };
+ """)
+ }
+ body {
+ center {
+ h1(Constantes.RAPPORT_TITRE+params.nomExport)
+
+ h4 {
+ p("${Constantes.RAPPORT_DATE_CREATION} : " + sdf.format(params.dateCreationRapport))
+ if (exceptionArrivee) {
+ p('class': 'error', "${Constantes.PROBLEME_PENDANT_EXPORT} : " +
+ params.exceptions.collect {it.getMessage()}.join(' '))
+ } else if (params.totalElevesExportes>0){
+ p(Constantes.EXPORT_OK_1+params.nomExport+Constantes.EXPORT_OK_2)
+ } else {
+ p(Constantes.EXPORT_NOK_1+params.nomExport+Constantes.EXPORT_NOK_2)
+ }
+ p("${Constantes.NB_ELEVES_TRAITES} : " + params.totalElevesExportes)
+ p("class": erreurArrivee ? 'error' : 'ok',
+ "${Constantes.NB_ELEVES_IGNORES} : " + totalElevesManquants)
+ }
+ if (params?.elevesManquants?.size()>0) {
+ div {
+ table {
+ tr {
+ td ('colspan':'3',"${Constantes.DETAIL_IGNORES} :")
+ }
+ params.elevesManquants.each { EleveSansCorrespondanceException ex ->
+ EleveInfo eleveInfo = ex.eleveInfo
+ tr {
+ td("${eleveInfo.nom} "+
+ "${eleveInfo.prenom} "+
+ "${formateDateNaissance(eleveInfo.dateNaissance)}"+
+ (eleveInfo.classe?" (${eleveInfo.classe})":""))
+ td(" -> ")
+ String messageErreur = ""
+ switch (ex.typeErreur) {
+ case EleveSansCorrespondanceException.ID_SCONET:
+ messageErreur = Constantes.IDSCONET_PAS_TROUVE
+ break
+ case EleveSansCorrespondanceException.TRIO_AUCUN:
+ messageErreur = Constantes.RECHERCHE_PAS_ABOUTI
+ break
+ case EleveSansCorrespondanceException.TRIO_PLUSIEURS:
+ messageErreur = Constantes.RECHERCHE_PAS_ABOUTI
+ break
+ }
+ td(messageErreur)
+ }
+ }
+ }
+ }
+ }
+ if (exceptionArrivee) {
+ div('id': 'afficherDetails', 'style': 'display:block') {
+ a('href': '#', 'onclick': "afficheDetails();return false",
+ Constantes.AFFICHER_LOG)
+ }
+ div('id': 'cacherDetails', 'style': 'display:none') {
+ a('href': '#', 'onclick': "cacheDetails();return false",
+ Constantes.CACHER_LOG)
+ }
+ div("id": "details_techniques", "class": "details",
+ "style": "display:none") {
+ params.exceptions.each { Exception exception ->
+ table ("class": "details", 'width':'80%'){
+ tr {
+ td("Message")
+ td(exception.getMessage())
+ }
+
+ tr {
+ td("Classname")
+ td(exception.getClass().getCanonicalName())
+ }
+
+ tr {
+ td("Stacktrace")
+ td(ExceptionUtils.printStacktrace(exception))
+ }
+ }
+ br {}
+ }
+ br {}
+ table{
+ tr{
+ td("Journal")
+ }
+ MemoryAppender.getAppender().rapport.each{ String ligneRapport ->
+ tr{
+ td(ligneRapport)
+ }
+ }
+ MemoryAppender.getAppender().clear()
+ }
+ }
+ }
+ }
+ }
+ }
+
+ }
+}
-package org.lilie.services.eliot.notes.applet.services\r
-\r
-import javax.xml.stream.XMLStreamReader\r
-import javax.xml.stream.XMLStreamWriter\r
-import org.lilie.services.eliot.notes.applet.data.apb.ServiceNotationInfo\r
-import org.lilie.services.eliot.notes.applet.data.EleveInfoEtendu\r
-import org.lilie.services.eliot.notes.applet.data.ModaliteChangeeInfo\r
-\r
-/**\r
- * Parametres de traitement des modalites d'election\r
- * @author msan\r
- */\r
-class TraitementModaliteParams {\r
- XMLStreamReader reader \r
- XMLStreamWriter writer\r
- EleveInfoEtendu eleveInfo\r
- String codeAnneeScolaireCourante\r
- String anneeScolaireSconet\r
- List<ServiceNotationInfo> serviceNotationInfos\r
- List<ModaliteChangeeInfo> modaliteChangeeInfos\r
-}\r
+package org.lilie.services.eliot.notes.applet.services
+
+import javax.xml.stream.XMLStreamReader
+import javax.xml.stream.XMLStreamWriter
+import org.lilie.services.eliot.notes.applet.data.EleveInfoEtendu
+import org.lilie.services.eliot.notes.applet.data.apb.ServiceNotationInfo
+import org.lilie.services.eliot.notes.applet.data.ModaliteChangeeInfo
+
+/**
+ * Parametres de traitement des modalites d'election
+ * @author msan
+ */
+class TraitementModaliteParams {
+ XMLStreamReader reader
+ XMLStreamWriter writer
+ EleveInfoEtendu eleveInfo
+ String codeAnneeScolaireCourante
+ String anneeScolaireSconet
+ List<ServiceNotationInfo> serviceNotationInfos
+ List<ModaliteChangeeInfo> modaliteChangeeInfos
+}
package org.lilie.services.eliot.notes.applet.services.apb
import org.apache.log4j.Logger
-
-import org.lilie.services.eliot.notes.applet.data.ModaliteElection
-import org.lilie.services.eliot.notes.applet.data.ModaliteInfo
-import org.lilie.services.eliot.notes.applet.data.sconet.dto.EleveSconet
-import org.lilie.services.eliot.notes.applet.jobs.exceptions.EleveSansCorrespondanceException
-
import org.lilie.services.eliot.notes.applet.services.MergeService
import org.lilie.services.eliot.notes.applet.data.EleveInfoEtendu
+import org.lilie.services.eliot.notes.applet.data.sconet.dto.EleveSconet
+import org.lilie.services.eliot.notes.applet.jobs.exceptions.EleveSansCorrespondanceException
+import org.lilie.services.eliot.notes.applet.data.ModaliteInfo
+import org.lilie.services.eliot.notes.applet.data.ModaliteElection
/**
* Merge des fichiers Sconet et APB
-/*\r
- * Copyright © FYLAB and the Conseil Régional d'Île-de-France, 2009\r
- * This file is part of L'Interface Libre et Interactive de l'Enseignement (Lilie).\r
- *\r
- * Lilie is free software. You can redistribute it and/or modify since\r
- * you respect the terms of either (at least one of the both license) :\r
- * - under the terms of the GNU Affero General Public License as\r
- * published by the Free Software Foundation, either version 3 of the\r
- * License, or (at your option) any later version.\r
- * - the CeCILL-C as published by CeCILL-C; either version 1 of the\r
- * License, or any later version\r
- *\r
- * There are special exceptions to the terms and conditions of the\r
- * licenses as they are applied to this software. View the full text of\r
- * the exception in file LICENSE.txt in the directory of this software\r
- * distribution.\r
- *\r
- * Lilie is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- * Licenses for more details.\r
- *\r
- * You should have received a copy of the GNU General Public License\r
- * and the CeCILL-C along with Lilie. If not, see :\r
- * <http://www.gnu.org/licenses/> and\r
- * <http://www.cecill.info/licences.fr.html>.\r
- */\r
-\r
-package org.lilie.services.eliot.notes.applet.services.apb\r
-\r
-import org.lilie.services.eliot.notes.applet.data.EleveInfoEtendu\r
-import org.lilie.services.eliot.notes.applet.jobs.exceptions.EleveSansCorrespondanceException\r
-\r
-/**\r
- * Resultat de merge APB\r
- * @author msan\r
- */\r
-class MergeResultatApb {\r
- List<EleveInfoEtendu> eleveInfosTous // tous les eleves merges\r
- List<EleveInfoEtendu> eleveInfosModalites // eleves ou il y a besoin de choisir la modalite d'election\r
- List<EleveSansCorrespondanceException> elevesPasPresantDansSconet // eleves presents dans le fichier APB\r
- // mais manquants dans le fichier Sconet\r
-}\r
+/*
+ * Copyright © FYLAB and the Conseil Régional d'Île-de-France, 2009
+ * This file is part of L'Interface Libre et Interactive de l'Enseignement (Lilie).
+ *
+ * Lilie is free software. You can redistribute it and/or modify since
+ * you respect the terms of either (at least one of the both license) :
+ * - under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ * - the CeCILL-C as published by CeCILL-C; either version 1 of the
+ * License, or any later version
+ *
+ * There are special exceptions to the terms and conditions of the
+ * licenses as they are applied to this software. View the full text of
+ * the exception in file LICENSE.txt in the directory of this software
+ * distribution.
+ *
+ * Lilie is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * Licenses for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * and the CeCILL-C along with Lilie. If not, see :
+ * <http://www.gnu.org/licenses/> and
+ * <http://www.cecill.info/licences.fr.html>.
+ */
+
+package org.lilie.services.eliot.notes.applet.services.apb
+
+import org.lilie.services.eliot.notes.applet.data.EleveInfoEtendu
+import org.lilie.services.eliot.notes.applet.jobs.exceptions.EleveSansCorrespondanceException
+
+/**
+ * Resultat de merge APB
+ * @author msan
+ */
+class MergeResultatApb {
+ List<EleveInfoEtendu> eleveInfosTous // tous les eleves merges
+ List<EleveInfoEtendu> eleveInfosModalites // eleves ou il y a besoin de choisir la modalite d'election
+ List<EleveSansCorrespondanceException> elevesPasPresantDansSconet // eleves presents dans le fichier APB
+ // mais manquants dans le fichier Sconet
+}
-/*\r
- * Copyright © FYLAB and the Conseil Régional d'Île-de-France, 2009\r
- * This file is part of L'Interface Libre et Interactive de l'Enseignement (Lilie).\r
- *\r
- * Lilie is free software. You can redistribute it and/or modify since\r
- * you respect the terms of either (at least one of the both license) :\r
- * - under the terms of the GNU Affero General Public License as\r
- * published by the Free Software Foundation, either version 3 of the\r
- * License, or (at your option) any later version.\r
- * - the CeCILL-C as published by CeCILL-C; either version 1 of the\r
- * License, or any later version\r
- *\r
- * There are special exceptions to the terms and conditions of the\r
- * licenses as they are applied to this software. View the full text of\r
- * the exception in file LICENSE.txt in the directory of this software\r
- * distribution.\r
- *\r
- * Lilie is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- * Licenses for more details.\r
- *\r
- * You should have received a copy of the GNU General Public License\r
- * and the CeCILL-C along with Lilie. If not, see :\r
- * <http://www.gnu.org/licenses/> and\r
- * <http://www.cecill.info/licences.fr.html>.\r
- */\r
-\r
-package org.lilie.services.eliot.notes.applet.services.notanet\r
-\r
-import org.lilie.services.eliot.notes.applet.jobs.exceptions.EleveSansCorrespondanceException\r
-import org.lilie.services.eliot.notes.applet.data.notanet.NotanetEleveInfo\r
-\r
-/**\r
- * Resultat de merge Notanet\r
- * @author msan\r
- */\r
-class MergeResultatNotanet {\r
- List<NotanetEleveInfo> eleveInfosTous // tous les eleves merges\r
- List<EleveSansCorrespondanceException> elevesPasPresantDansSconet\r
- // eleves presents dans le fichier Notanet\r
- // mais manquants dans le fichier Sconet\r
-}\r
+/*
+ * Copyright © FYLAB and the Conseil Régional d'Île-de-France, 2009
+ * This file is part of L'Interface Libre et Interactive de l'Enseignement (Lilie).
+ *
+ * Lilie is free software. You can redistribute it and/or modify since
+ * you respect the terms of either (at least one of the both license) :
+ * - under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ * - the CeCILL-C as published by CeCILL-C; either version 1 of the
+ * License, or any later version
+ *
+ * There are special exceptions to the terms and conditions of the
+ * licenses as they are applied to this software. View the full text of
+ * the exception in file LICENSE.txt in the directory of this software
+ * distribution.
+ *
+ * Lilie is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * Licenses for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * and the CeCILL-C along with Lilie. If not, see :
+ * <http://www.gnu.org/licenses/> and
+ * <http://www.cecill.info/licences.fr.html>.
+ */
+
+package org.lilie.services.eliot.notes.applet.services.notanet
+
+import org.lilie.services.eliot.notes.applet.data.notanet.NotanetEleveInfo
+import org.lilie.services.eliot.notes.applet.jobs.exceptions.EleveSansCorrespondanceException
+
+/**
+ * Resultat de merge Notanet
+ * @author msan
+ */
+class MergeResultatNotanet {
+ List<NotanetEleveInfo> eleveInfosTous // tous les eleves merges
+ List<EleveSansCorrespondanceException> elevesPasPresantDansSconet
+ // eleves presents dans le fichier Notanet
+ // mais manquants dans le fichier Sconet
+}
package org.lilie.services.eliot.notes.applet.services.notanet
import org.apache.log4j.Logger
-import org.lilie.services.eliot.notes.applet.data.sconet.dto.EleveSconet
-import org.lilie.services.eliot.notes.applet.jobs.exceptions.EleveSansCorrespondanceException
import org.lilie.services.eliot.notes.applet.services.MergeService
import org.lilie.services.eliot.notes.applet.data.notanet.NotanetEleveInfo
-
+import org.lilie.services.eliot.notes.applet.data.sconet.dto.EleveSconet
+import org.lilie.services.eliot.notes.applet.jobs.exceptions.EleveSansCorrespondanceException
import org.lilie.services.eliot.notes.applet.data.EleveInfo
/**
package org.lilie.services.eliot.notes.applet.services.notanet
import org.lilie.services.eliot.notes.applet.data.notanet.NotanetEleveInfo
-import org.lilie.services.eliot.notes.utils.PSVWriter
+import org.lilie.services.eliot.notes.applet.utils.PSVWriter
/**
* Outil pour exporter les donnes notanet dans un format demande par Notanet.
-package org.lilie.services.eliot.notes.applet.utils\r
-\r
-/**\r
- * Gestion d'exceptions\r
- * @author msan\r
- */\r
-class ExceptionUtils {\r
-\r
- /**\r
- * Imprimme une stacktrace dans le string\r
- */\r
- static String printStacktrace(Exception e) {\r
- StringWriter stringWriter = new StringWriter()\r
- PrintWriter printWriter = new PrintWriter(stringWriter)\r
- e.printStackTrace(printWriter)\r
- return stringWriter.toString()\r
- }\r
-}\r
+package org.lilie.services.eliot.notes.applet.utils
+
+/**
+ * Gestion d'exceptions
+ * @author msan
+ */
+class ExceptionUtils {
+
+ /**
+ * Imprimme une stacktrace dans le string
+ */
+ static String printStacktrace(Exception e) {
+ StringWriter stringWriter = new StringWriter()
+ PrintWriter printWriter = new PrintWriter(stringWriter)
+ e.printStackTrace(printWriter)
+ return stringWriter.toString()
+ }
+}
-package org.lilie.services.eliot.notes.utils\r
-\r
-/**\r
- * Writer pour ecrire les donnees dans le format demande par Notanet.\r
- * Valeurs separes per une pipe (pipe separated values - PSV)\r
- * @author msan\r
- */\r
-class PSVWriter {\r
-\r
- final Writer writer\r
-\r
- String pipe = '|'\r
- String eol = "\n"\r
-\r
- PSVWriter(Writer writer) {\r
- this.writer = writer\r
- }\r
-\r
- /**\r
- * Ecris une ligne des valeurs\r
- */\r
- void write(Collection<String> row) {\r
- row.eachWithIndex { String element, int i ->\r
- writer.write(element)\r
- writer.write(pipe)\r
- if (i==row.size()-1) {\r
- writer.write(eol)\r
- }\r
- }\r
- }\r
-\r
- /**\r
- * Ecris une collection des lignes des valeurs\r
- */\r
- void writeAll(Collection<Collection<String>> rows) {\r
- rows.each { this.write(it) }\r
- }\r
-\r
-}\r
+package org.lilie.services.eliot.notes.applet.utils
+
+/**
+ * Writer pour ecrire les donnees dans le format demande par Notanet.
+ * Valeurs separes per une pipe (pipe separated values - PSV)
+ * @author msan
+ */
+class PSVWriter {
+
+ final Writer writer
+
+ String pipe = '|'
+ String eol = "\n"
+
+ PSVWriter(Writer writer) {
+ this.writer = writer
+ }
+
+ /**
+ * Ecris une ligne des valeurs
+ */
+ void write(Collection<String> row) {
+ row.eachWithIndex { String element, int i ->
+ writer.write(element)
+ writer.write(pipe)
+ if (i==row.size()-1) {
+ writer.write(eol)
+ }
+ }
+ }
+
+ /**
+ * Ecris une collection des lignes des valeurs
+ */
+ void writeAll(Collection<Collection<String>> rows) {
+ rows.each { this.write(it) }
+ }
+
+}
package org.lilie.services.eliot.notes.applet.utils
import javax.swing.JApplet
-import org.apache.log4j.Level
+import java.util.logging.Level
/**
* Permet de gérer les paramètres courant de l'applet. Ces paramètres peuvent
-package org.lilie.services.eliot.notes.applet.utils\r
-\r
-import java.text.Normalizer\r
-import java.util.regex.Pattern\r
-\r
-/**\r
- * Copie de plugin, car il n'est pas accesible par l'applet.\r
- * @author jtra\r
- */\r
-class StringUtils {\r
-\r
- /**\r
- * Normalise une chaine de caractère\r
- * @param s la chaine d'origine\r
- * @return la chaine correspondant à s, en majuscule, et sans accent\r
- * @author jtra\r
- */\r
- static String normalise(String s) {\r
- String temp = Normalizer.normalize(s, Normalizer.Form.NFD);\r
- Pattern pattern = Pattern.compile("\\p{InCombiningDiacriticalMarks}+");\r
- return pattern.matcher(temp).replaceAll("").toUpperCase();\r
- }\r
-\r
- /**\r
- * Convertis un string '[a,b,c]' a une array de string ['a','b','c']\r
- * @param stringListe string '[a,b,c]'\r
- * @param separateur separateur des valeur optionel. ',' par defaut\r
- * @returnarray de string ['a','b','c']\r
- */\r
- static List<String> parseStringListe(String stringListe,\r
- String separateur = ',') {\r
- if ('null'.equals(stringListe) || stringListe == null) {\r
- return []\r
- }\r
- if (stringListe.startsWith('[')) {\r
- stringListe = stringListe.substring(1)\r
- }\r
- if (stringListe.endsWith(']')) {\r
- stringListe = stringListe.substring(0, stringListe.length() - 1)\r
- }\r
- String[] strArray = stringListe.split(separateur)\r
- return strArray.toList()\r
- }\r
-\r
- static String escapeXML(String text, Boolean escapeApostrophe = true) {\r
- String result = text\r
-\r
- result = result.replaceAll(/&(?!#?\w*;)/, '&')\r
- result = result.replaceAll(/>/, '>')\r
- result = result.replaceAll(/</, '<')\r
- result = result.replaceAll(/\"/, '"')\r
-\r
- // L'apostrophe est accepté dans le contenu d'un élément\r
- // mais ne l'est pas dans l'attribut.\r
- if (escapeApostrophe) {\r
- result = result.replaceAll(/\'/, ''')\r
- }\r
-\r
- return result\r
- }\r
-}\r
+package org.lilie.services.eliot.notes.applet.utils
+
+import java.text.Normalizer
+import java.util.regex.Pattern
+
+/**
+ * Copie de plugin, car il n'est pas accesible par l'applet.
+ * @author jtra
+ */
+class StringUtils {
+
+ /**
+ * Normalise une chaine de caractère
+ * @param s la chaine d'origine
+ * @return la chaine correspondant à s, en majuscule, et sans accent
+ * @author jtra
+ */
+ static String normalise(String s) {
+ String temp = Normalizer.normalize(s, Normalizer.Form.NFD);
+ Pattern pattern = Pattern.compile("\\p{InCombiningDiacriticalMarks}+");
+ return pattern.matcher(temp).replaceAll("").toUpperCase();
+ }
+
+ /**
+ * Convertis un string '[a,b,c]' a une array de string ['a','b','c']
+ * @param stringListe string '[a,b,c]'
+ * @param separateur separateur des valeur optionel. ',' par defaut
+ * @returnarray de string ['a','b','c']
+ */
+ static List<String> parseStringListe(String stringListe,
+ String separateur = ',') {
+ if ('null'.equals(stringListe) || stringListe == null) {
+ return []
+ }
+ if (stringListe.startsWith('[')) {
+ stringListe = stringListe.substring(1)
+ }
+ if (stringListe.endsWith(']')) {
+ stringListe = stringListe.substring(0, stringListe.length() - 1)
+ }
+ String[] strArray = stringListe.split(separateur)
+ return strArray.toList()
+ }
+
+ static String escapeXML(String text, Boolean escapeApostrophe = true) {
+ String result = text
+
+ result = result.replaceAll(/&(?!#?\w*;)/, '&')
+ result = result.replaceAll(/>/, '>')
+ result = result.replaceAll(/</, '<')
+ result = result.replaceAll(/\"/, '"')
+
+ // L'apostrophe est accepté dans le contenu d'un élément
+ // mais ne l'est pas dans l'attribut.
+ if (escapeApostrophe) {
+ result = result.replaceAll(/\'/, ''')
+ }
+
+ return result
+ }
+}
--- /dev/null
+package org.lilie.services.eliot.notes.applet.utils
+
+import org.apache.log4j.Logger
+
+class UncaughtExceptionHandlerApplet implements Thread.UncaughtExceptionHandler{
+
+ Logger LOGGER
+
+ @Override
+ void uncaughtException(Thread t, Throwable e) {
+ LOGGER.error "Exception"
+ LOGGER.error "Thread : " + t.dump()
+ LOGGER.error "Exception : " + e.getMessage()
+ LOGGER.error "Details : " + e.dump()
+ LOGGER.error "Classe : " + e.getClass().getCanonicalName()
+ }
+}
package org.lilie.services.eliot.notes.applet.utils.log4j
-import org.apache.log4j.Logger
+import org.lilie.services.eliot.notes.applet.utils.ParametresCourant
import org.apache.log4j.Appender
import org.apache.log4j.PatternLayout
-import org.lilie.services.eliot.notes.applet.utils.ParametresCourant
+import org.apache.log4j.Logger
/**
* Classe d'initialisation du logger en mémoire
-<?xml version="1.0" encoding="utf-8" ?>\r
-<!--\r
- ~ Copyright © FYLAB and the Conseil Régional d'Île-de-France, 2009\r
- ~ This file is part of L'Interface Libre et Interactive de l'Enseignement (Lilie).\r
- ~\r
- ~ Lilie is free software. You can redistribute it and/or modify since\r
- ~ you respect the terms of either (at least one of the both license) :\r
- ~ - under the terms of the GNU Affero General Public License as\r
- ~ published by the Free Software Foundation, either version 3 of the\r
- ~ License, or (at your option) any later version.\r
- ~ - the CeCILL-C as published by CeCILL-C; either version 1 of the\r
- ~ License, or any later version\r
- ~\r
- ~ There are special exceptions to the terms and conditions of the\r
- ~ licenses as they are applied to this software. View the full text of\r
- ~ the exception in file LICENSE.txt in the directory of this software\r
- ~ distribution.\r
- ~\r
- ~ Lilie is distributed in the hope that it will be useful,\r
- ~ but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- ~ Licenses for more details.\r
- ~\r
- ~ You should have received a copy of the GNU General Public License\r
- ~ and the CeCILL-C along with Lilie. If not, see :\r
- ~ <http://www.gnu.org/licenses/> and\r
- ~ <http://www.cecill.info/licences.fr.html>.\r
- -->\r
-\r
-<!--\r
-Les differences entre Export_APB_brut et Export_APB final:\r
- - eleve@ine interdit\r
- - eleve@id-sconet ajoute\r
- - fichier@type-export ajoute\r
--->\r
-\r
-<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"\r
- xmlns:xs="http://www.w3.org/2001/XMLSchema">\r
- <xs:element name="fichier">\r
- <xs:complexType>\r
- <xs:sequence>\r
- <xs:element name="etablissement">\r
- <xs:complexType>\r
- <xs:sequence>\r
- <xs:element name="classes">\r
- <xs:annotation>\r
- <xs:documentation>Les classes de l'établissements</xs:documentation>\r
- </xs:annotation>\r
- <xs:complexType>\r
- <xs:sequence>\r
- <xs:element name="classe" maxOccurs="unbounded">\r
- <xs:annotation>\r
- <xs:documentation>Les classes des élèves présents dans le fichier (toute année confondue)</xs:documentation>\r
- </xs:annotation>\r
- <xs:complexType>\r
- <xs:attribute name="code" type="TCle" use="required">\r
- <xs:annotation>\r
- <xs:documentation>Identifiant unique de la classe dans le fichier propre au logiciel de notes</xs:documentation>\r
- </xs:annotation>\r
- </xs:attribute>\r
- <xs:attribute name="annee" use="required">\r
- <xs:annotation>\r
- <xs:documentation>Année d'existance de la classe</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="TAnnee"/>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- <xs:attribute name="nom" type="xs:string"\r
- use="required">\r
- <xs:annotation>\r
- <xs:documentation>Nom de la classe dans le logiciel</xs:documentation>\r
- </xs:annotation>\r
- </xs:attribute>\r
- <xs:attribute name="niveau" use="required">\r
- <xs:annotation>\r
- <xs:documentation>Premiere ou Terminale</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="xs:string">\r
- <xs:enumeration value="premiere"/>\r
- <xs:enumeration value="terminale"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- <xs:attribute name="professeur-principal"\r
- type="TCle">\r
- <xs:annotation>\r
- <xs:documentation>Référence à l'enseignant "professeur principal"</xs:documentation>\r
- </xs:annotation>\r
- </xs:attribute>\r
- <xs:attribute name="decoupage" use="required">\r
- <xs:annotation>\r
- <xs:documentation>Découpage annuel des bulletins scolaires (3=trimestre ou 2=semestre)</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="xs:positiveInteger">\r
- <xs:minInclusive value="2"/>\r
- <xs:maxInclusive value="3"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- <xs:attribute name="id-structure-sconet"\r
- type="TStructure">\r
- <xs:annotation>\r
- <xs:documentation>Identifiant SCONET de la structure (division)</xs:documentation>\r
- </xs:annotation>\r
- </xs:attribute>\r
- </xs:complexType>\r
- </xs:element>\r
- </xs:sequence>\r
- </xs:complexType>\r
- </xs:element>\r
- <xs:element name="services-notations">\r
- <xs:complexType>\r
- <xs:sequence>\r
- <xs:element name="service-notation" maxOccurs="unbounded">\r
- <xs:complexType>\r
- <xs:sequence>\r
- <xs:element name="moyenne-classe" type="TNote"\r
- minOccurs="0">\r
- <xs:annotation>\r
- <xs:documentation>Moyenne du groupe sur 20</xs:documentation>\r
- </xs:annotation>\r
- </xs:element>\r
- <xs:element name="moyenne-haute" type="TNote"\r
- minOccurs="0">\r
- <xs:annotation>\r
- <xs:documentation>Moyenne la plus haute du groupe sur 20</xs:documentation>\r
- </xs:annotation>\r
- </xs:element>\r
- <xs:element name="moyenne-basse" minOccurs="0">\r
- <xs:annotation>\r
- <xs:documentation>Moyenne la plus basse du groupe sur 20</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="TNote">\r
- <xs:minInclusive value="0.0"/>\r
- <xs:maxInclusive value="20.0"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- </xs:element>\r
- <xs:element name="effectif">\r
- <xs:annotation>\r
- <xs:documentation>Nombre total d'élèves dans le groupe</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="xs:positiveInteger">\r
- <xs:minInclusive value="1"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- </xs:element>\r
- </xs:sequence>\r
- <xs:attribute name="code" use="required">\r
- <xs:annotation>\r
- <xs:documentation>Identifiant unique dans le fichier</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="TCle"/>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- <xs:attribute name="annee" use="required">\r
- <xs:annotation>\r
- <xs:documentation>Année concernée</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="TAnnee"/>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- <xs:attribute name="trimestre" use="required">\r
- <xs:annotation>\r
- <xs:documentation>Trimestre ou Semestre concerné</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="TTrimestre">\r
- <xs:minInclusive value="1"/>\r
- <xs:maxInclusive value="3"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- <xs:attribute name="code-enseignant" use="required">\r
- <xs:annotation>\r
- <xs:documentation>Enseignant qui a donné la note</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="TCle"/>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- <xs:attribute name="code-matiere" use="required">\r
- <xs:annotation>\r
- <xs:documentation>La matière associée</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="TCle">\r
- <xs:maxLength value="30"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- <xs:attribute name="nom-groupe" type="xs:string">\r
- <xs:annotation>\r
- <xs:documentation>Libellé du groupe dans le logiciel</xs:documentation>\r
- </xs:annotation>\r
- </xs:attribute>\r
- <xs:attribute name="id-structure-sconet"\r
- type="TStructure">\r
- <xs:annotation>\r
- <xs:documentation>Identifiant SCONET de la structure (groupe)\r
-</xs:documentation>\r
- </xs:annotation>\r
- </xs:attribute>\r
- </xs:complexType>\r
- </xs:element>\r
- </xs:sequence>\r
- </xs:complexType>\r
- </xs:element>\r
- <xs:element name="matieres">\r
- <xs:annotation>\r
- <xs:documentation>Toutes les matières présentes dans les bulletins scolaires du fichier</xs:documentation>\r
- </xs:annotation>\r
- <xs:complexType>\r
- <xs:sequence>\r
- <xs:element name="matiere" maxOccurs="unbounded">\r
- <xs:annotation>\r
- <xs:documentation>Les matières présentes dans les bulletins scolaires (toute année et classe confondues)</xs:documentation>\r
- </xs:annotation>\r
- <xs:complexType>\r
- <xs:attribute name="code" use="required">\r
- <xs:annotation>\r
- <xs:documentation>Identifiant unique dans le fichier propre au logiciel</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="TCle"/>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- <xs:attribute name="libelle-sconet" use="required">\r
- <xs:annotation>\r
- <xs:documentation>Libelle court dans la nomenclature SCONET</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="xs:string">\r
- <xs:maxLength value="30"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- <xs:attribute name="libelle" type="xs:string"\r
- use="required">\r
- <xs:annotation>\r
- <xs:documentation>Libellé édition de la matière</xs:documentation>\r
- </xs:annotation>\r
- </xs:attribute>\r
- <xs:attribute name="code-sconet" use="required">\r
- <xs:annotation>\r
- <xs:documentation>Code numérique SCONET de la matière</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="xs:string">\r
- </xs:restriction>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- </xs:complexType>\r
- </xs:element>\r
- </xs:sequence>\r
- </xs:complexType>\r
- </xs:element>\r
- <xs:element name="enseignants">\r
- <xs:complexType>\r
- <xs:sequence>\r
- <xs:element name="enseignant" maxOccurs="unbounded">\r
- <xs:annotation>\r
- <xs:documentation>Les enseignants présents sur les bulletins scolaires</xs:documentation>\r
- </xs:annotation>\r
- <xs:complexType>\r
- <xs:attribute name="code" use="required">\r
- <xs:annotation>\r
- <xs:documentation>Identifiant unique d'un enseignant dans le fichier propre au logiciel</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="TCle"/>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- <xs:attribute name="nom" type="xs:string"\r
- use="required"/>\r
- <xs:attribute name="prenom" type="xs:string"\r
- use="required"/>\r
- </xs:complexType>\r
- </xs:element>\r
- </xs:sequence>\r
- </xs:complexType>\r
- </xs:element>\r
- <xs:element name="eleves">\r
- <xs:complexType>\r
- <xs:sequence>\r
- <xs:element name="eleve" maxOccurs="unbounded">\r
- <xs:annotation>\r
- <xs:documentation>Les élèves de l'établissements </xs:documentation>\r
- </xs:annotation>\r
- <xs:complexType>\r
- <xs:sequence>\r
- <xs:element name="annees-scolaires">\r
- <xs:complexType>\r
- <xs:sequence>\r
- <xs:element name="annee-scolaire"\r
- maxOccurs="unbounded">\r
- <xs:annotation>\r
- <xs:documentation>Les années de scolarités dans l'établissement</xs:documentation>\r
- </xs:annotation>\r
- <xs:complexType>\r
- <xs:sequence>\r
- <xs:element name="bulletins">\r
- <xs:complexType>\r
- <xs:sequence>\r
- <xs:element name="bulletin" maxOccurs="unbounded">\r
- <xs:annotation>\r
- <xs:documentation>Les bulletins scolaires de l'année</xs:documentation>\r
- </xs:annotation>\r
- <xs:complexType>\r
- <xs:sequence>\r
- <xs:element name="notes" maxOccurs="unbounded">\r
- <xs:complexType>\r
- <xs:sequence>\r
- <xs:element name="moyenne" type="TNote"\r
- minOccurs="0">\r
- <xs:annotation>\r
- <xs:documentation>Moyenne de l'élève</xs:documentation>\r
- </xs:annotation>\r
- </xs:element>\r
- <xs:element name="rang" minOccurs="0">\r
- <xs:annotation>\r
- <xs:documentation>Rang de l'élève dans le groupe</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="xs:int">\r
- <xs:minInclusive value="0"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- </xs:element>\r
- <xs:element name="appreciation" type="xs:string"\r
- minOccurs="0">\r
- <xs:annotation>\r
- <xs:documentation>Appréciation du professeur</xs:documentation>\r
- </xs:annotation>\r
- </xs:element>\r
- </xs:sequence>\r
- <xs:attribute name="code-service-notation"\r
- use="required">\r
- <xs:annotation>\r
- <xs:documentation>Référence vers le service de notation associé</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="TCle">\r
- <xs:maxLength value="30"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- <xs:attribute name="etat" default="S">\r
- <xs:annotation>\r
- <xs:documentation>Etat de l'enseignement : 'S':Enseignement suivi, 'D': Dispensé, 'N': Pas de notes</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="xs:string">\r
- <xs:enumeration value="N"/>\r
- <xs:enumeration value="D"/>\r
- <xs:enumeration value="S"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- <xs:attribute name="modalite-election"\r
- use="required">\r
- <xs:annotation>\r
- <xs:documentation>Type d'option: 'O:Obligatoire','F:Option facultative','N:Option facultative ou obligatoire','S:Option du tronc commun','I:Option inconnue'</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="xs:string">\r
- <xs:enumeration value="O"/>\r
- <xs:enumeration value="S"/>\r
- <xs:enumeration value="F"/>\r
- <xs:enumeration value="N"/>\r
- <xs:enumeration value="I"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- </xs:complexType>\r
- </xs:element>\r
- </xs:sequence>\r
- <xs:attribute name="trimestre" use="required">\r
- <xs:simpleType>\r
- <xs:restriction base="TTrimestre">\r
- <xs:minInclusive value="1"/>\r
- <xs:maxInclusive value="3"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- </xs:complexType>\r
- </xs:element>\r
- </xs:sequence>\r
- </xs:complexType>\r
- </xs:element>\r
- </xs:sequence>\r
- <xs:attribute name="annee" use="required">\r
- <xs:annotation>\r
- <xs:documentation>Année concernée</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="TAnnee"/>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- <xs:attribute name="code-classe" type="TCle"\r
- use="required">\r
- <xs:annotation>\r
- <xs:documentation>Référence au code de la classe de l'élève</xs:documentation>\r
- </xs:annotation>\r
- </xs:attribute>\r
- <xs:attribute name="code-mef" use="required">\r
- <xs:annotation>\r
- <xs:documentation>Code MEF (numérique ou libellé court) de l'élève durant l'année scolaire</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="xs:string">\r
- <xs:maxLength value="11"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- <xs:attribute name="libelle-mef" type="xs:string"\r
- use="required"/>\r
- </xs:complexType>\r
- </xs:element>\r
- </xs:sequence>\r
- </xs:complexType>\r
- </xs:element>\r
- </xs:sequence>\r
- <xs:attribute name="code" use="required">\r
- <xs:annotation>\r
- <xs:documentation>Identifiant unique d'un élève dans le fichier propre au logiciel</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="TCle"/>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- <!-- MSAN ine interdit -->\r
- <xs:attribute name="ine" use="prohibited">\r
- <xs:simpleType>\r
- <xs:restriction base="xs:string">\r
- <xs:pattern value="\d{10}[A-Z]"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- <!-- MSAN id-sconet ajoute -->\r
- <xs:attribute name="id-sconet" type="xs:string" use="required"/>\r
- <xs:attribute name="nom" type="xs:string"\r
- use="required"/>\r
- <xs:attribute name="prenom" type="xs:string"\r
- use="required"/>\r
- <xs:attribute name="date-naissance" type="xs:date"\r
- use="required"/>\r
- </xs:complexType>\r
- </xs:element>\r
- </xs:sequence>\r
- </xs:complexType>\r
- </xs:element>\r
- </xs:sequence>\r
- <xs:attribute name="rne" use="required">\r
- <xs:annotation>\r
- <xs:documentation>N° UAI de l'établissement</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="xs:string">\r
- <xs:pattern value="\d{7}[A-Z]"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- <xs:attribute name="nom" use="required">\r
- <xs:simpleType>\r
- <xs:restriction base="xs:string"/>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- <xs:attribute name="cp" use="required">\r
- <xs:annotation>\r
- <xs:documentation>code postal</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="xs:string">\r
- <xs:pattern value="\d{5}"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- </xs:complexType>\r
- <xs:key name="classeKey">\r
- <xs:selector xpath="classes/classe"/>\r
- <xs:field xpath="@code"/>\r
- </xs:key>\r
- <xs:key name="service-notationKey">\r
- <xs:selector xpath="services-notations/service-notation"/>\r
- <xs:field xpath="@code"/>\r
- </xs:key>\r
- <xs:key name="matiereKey">\r
- <xs:selector xpath="matieres/matiere"/>\r
- <xs:field xpath="@code"/>\r
- </xs:key>\r
- <xs:key name="enseignantKey">\r
- <xs:selector xpath="enseignants/enseignant"/>\r
- <xs:field xpath="@code"/>\r
- </xs:key>\r
- <xs:key name="eleveKey">\r
- <xs:selector xpath="eleves/eleve"/>\r
- <xs:field xpath="@code"/>\r
- </xs:key>\r
- <xs:keyref name="classeKeyRef" refer="classeKey">\r
- <xs:selector xpath="eleves/eleve/annees-scolaires/annee-scolaire"/>\r
- <xs:field xpath="@code-classe"/>\r
- </xs:keyref>\r
- <xs:keyref name="service-notationKeyRef" refer="service-notationKey">\r
- <xs:selector\r
- xpath="eleves/eleve/annees-scolaires/annee-scolaire/bulletins/bulletin/notes"/>\r
- <xs:field xpath="@code-service-notation"/>\r
- </xs:keyref>\r
- <xs:keyref name="matiereKeyRef" refer="matiereKey">\r
- <xs:selector xpath="services-notations/service-notation"/>\r
- <xs:field xpath="@code-matiere"/>\r
- </xs:keyref>\r
- <xs:keyref name="enseignantKeyRef" refer="enseignantKey">\r
- <xs:selector xpath="services-notations/service-notation"/>\r
- <xs:field xpath="@code-enseignant"/>\r
- </xs:keyref>\r
- <xs:keyref name="classeEnseignantKeyRef" refer="enseignantKey">\r
- <xs:selector xpath="classes/classe"/>\r
- <xs:field xpath="@professeur-principal"/>\r
- </xs:keyref>\r
- </xs:element>\r
- </xs:sequence>\r
- <xs:attribute name="logiciel" use="required">\r
- <xs:annotation>\r
- <xs:documentation>identifie le logiciel qui a généré le fichier</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="xs:string">\r
- <xs:enumeration value="notes"/>\r
- <xs:enumeration value="campus"/>\r
- <xs:enumeration value="telescol"/>\r
- <xs:enumeration value="notabene"/>\r
- <xs:enumeration value="pronotes"/>\r
- <xs:enumeration value="educhorus"/>\r
- <xs:enumeration value="charlemagne"/>\r
- <xs:enumeration value="scolawin"/>\r
- <xs:enumeration value="sconetnotes"/>\r
- <xs:enumeration value="gepi"/>\r
- <xs:enumeration value="garennes"/>\r
- <xs:enumeration value="visascol"/>\r
- <!-- BPER : Ajouté suite à la demade d'utiliser 'eliot-notes' comme nom du logiciel -->\r
- <xs:enumeration value="eliot-notes"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- <xs:attribute name="version" type="xs:string" use="required">\r
- <xs:annotation>\r
- <xs:documentation>Version du logiciel </xs:documentation>\r
- </xs:annotation>\r
- </xs:attribute>\r
- <xs:attribute name="date-creation" type="xs:date">\r
- <xs:annotation>\r
- <xs:documentation>Date de génération du fichier</xs:documentation>\r
- </xs:annotation>\r
- </xs:attribute>\r
- <!-- MSAN Ajout de type d'export -->\r
- <xs:attribute name="type-export" use="required">\r
- <xs:annotation>\r
- <xs:documentation>type d'export: 1, 2 ou 3</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="xs:positiveInteger">\r
- <xs:enumeration value="1"/>\r
- <xs:enumeration value="2"/>\r
- <xs:enumeration value="3"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- </xs:complexType>\r
- </xs:element>\r
- <xs:simpleType name="TNote">\r
- <xs:restriction base="xs:float">\r
- <xs:minInclusive value="0.0"/>\r
- <xs:maxInclusive value="20.0"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- <xs:simpleType name="TAnnee">\r
- <xs:restriction base="xs:positiveInteger">\r
- <!--MSAN 6.9.2012 verification d'intervalle enlevee - Mantis 21491 -->\r
- <!--<xs:minInclusive value="2005"/>-->\r
- <!--<xs:maxInclusive value="2020"/>-->\r
- </xs:restriction>\r
- </xs:simpleType>\r
- <xs:simpleType name="TTrimestre">\r
- <xs:restriction base="xs:positiveInteger">\r
- <xs:minInclusive value="1"/>\r
- <xs:maxInclusive value="3"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- <xs:simpleType name="TCle">\r
- <xs:restriction base="xs:string">\r
- <xs:pattern value="[A-Za-z0-9_-]*"/>\r
- <xs:maxLength value="30"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- <xs:simpleType name="TStructure">\r
- <xs:restriction base="xs:string">\r
- <xs:maxLength value="8"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
-</xs:schema>\r
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+ ~ Copyright © FYLAB and the Conseil Régional d'Île-de-France, 2009
+ ~ This file is part of L'Interface Libre et Interactive de l'Enseignement (Lilie).
+ ~
+ ~ Lilie is free software. You can redistribute it and/or modify since
+ ~ you respect the terms of either (at least one of the both license) :
+ ~ - under the terms of the GNU Affero General Public License as
+ ~ published by the Free Software Foundation, either version 3 of the
+ ~ License, or (at your option) any later version.
+ ~ - the CeCILL-C as published by CeCILL-C; either version 1 of the
+ ~ License, or any later version
+ ~
+ ~ There are special exceptions to the terms and conditions of the
+ ~ licenses as they are applied to this software. View the full text of
+ ~ the exception in file LICENSE.txt in the directory of this software
+ ~ distribution.
+ ~
+ ~ Lilie is distributed in the hope that it will be useful,
+ ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ ~ Licenses for more details.
+ ~
+ ~ You should have received a copy of the GNU General Public License
+ ~ and the CeCILL-C along with Lilie. If not, see :
+ ~ <http://www.gnu.org/licenses/> and
+ ~ <http://www.cecill.info/licences.fr.html>.
+ -->
+
+<!--
+Les differences entre Export_APB_brut et Export_APB final:
+ - eleve@ine interdit
+ - eleve@id-sconet ajoute
+ - fichier@type-export ajoute
+-->
+
+<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:element name="fichier">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="etablissement">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="classes">
+ <xs:annotation>
+ <xs:documentation>Les classes de l'établissements</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="classe" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>Les classes des élèves présents dans le fichier (toute année confondue)</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:attribute name="code" type="TCle" use="required">
+ <xs:annotation>
+ <xs:documentation>Identifiant unique de la classe dans le fichier propre au logiciel de notes</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="annee" use="required">
+ <xs:annotation>
+ <xs:documentation>Année d'existance de la classe</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="TAnnee"/>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="nom" type="xs:string"
+ use="required">
+ <xs:annotation>
+ <xs:documentation>Nom de la classe dans le logiciel</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="niveau" use="required">
+ <xs:annotation>
+ <xs:documentation>Premiere ou Terminale</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="premiere"/>
+ <xs:enumeration value="terminale"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="professeur-principal"
+ type="TCle">
+ <xs:annotation>
+ <xs:documentation>Référence à l'enseignant "professeur principal"</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="decoupage" use="required">
+ <xs:annotation>
+ <xs:documentation>Découpage annuel des bulletins scolaires (3=trimestre ou 2=semestre)</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:positiveInteger">
+ <xs:minInclusive value="2"/>
+ <xs:maxInclusive value="3"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="id-structure-sconet"
+ type="TStructure">
+ <xs:annotation>
+ <xs:documentation>Identifiant SCONET de la structure (division)</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="services-notations">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="service-notation" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="moyenne-classe" type="TNote"
+ minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Moyenne du groupe sur 20</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="moyenne-haute" type="TNote"
+ minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Moyenne la plus haute du groupe sur 20</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="moyenne-basse" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Moyenne la plus basse du groupe sur 20</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="TNote">
+ <xs:minInclusive value="0.0"/>
+ <xs:maxInclusive value="20.0"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="effectif">
+ <xs:annotation>
+ <xs:documentation>Nombre total d'élèves dans le groupe</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:positiveInteger">
+ <xs:minInclusive value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="code" use="required">
+ <xs:annotation>
+ <xs:documentation>Identifiant unique dans le fichier</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="TCle"/>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="annee" use="required">
+ <xs:annotation>
+ <xs:documentation>Année concernée</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="TAnnee"/>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="trimestre" use="required">
+ <xs:annotation>
+ <xs:documentation>Trimestre ou Semestre concerné</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="TTrimestre">
+ <xs:minInclusive value="1"/>
+ <xs:maxInclusive value="3"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="code-enseignant" use="required">
+ <xs:annotation>
+ <xs:documentation>Enseignant qui a donné la note</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="TCle"/>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="code-matiere" use="required">
+ <xs:annotation>
+ <xs:documentation>La matière associée</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="TCle">
+ <xs:maxLength value="30"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="nom-groupe" type="xs:string">
+ <xs:annotation>
+ <xs:documentation>Libellé du groupe dans le logiciel</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="id-structure-sconet"
+ type="TStructure">
+ <xs:annotation>
+ <xs:documentation>Identifiant SCONET de la structure (groupe)
+</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="matieres">
+ <xs:annotation>
+ <xs:documentation>Toutes les matières présentes dans les bulletins scolaires du fichier</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="matiere" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>Les matières présentes dans les bulletins scolaires (toute année et classe confondues)</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:attribute name="code" use="required">
+ <xs:annotation>
+ <xs:documentation>Identifiant unique dans le fichier propre au logiciel</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="TCle"/>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="libelle-sconet" use="required">
+ <xs:annotation>
+ <xs:documentation>Libelle court dans la nomenclature SCONET</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="30"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="libelle" type="xs:string"
+ use="required">
+ <xs:annotation>
+ <xs:documentation>Libellé édition de la matière</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="code-sconet" use="required">
+ <xs:annotation>
+ <xs:documentation>Code numérique SCONET de la matière</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="enseignants">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="enseignant" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>Les enseignants présents sur les bulletins scolaires</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:attribute name="code" use="required">
+ <xs:annotation>
+ <xs:documentation>Identifiant unique d'un enseignant dans le fichier propre au logiciel</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="TCle"/>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="nom" type="xs:string"
+ use="required"/>
+ <xs:attribute name="prenom" type="xs:string"
+ use="required"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="eleves">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="eleve" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>Les élèves de l'établissements </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="annees-scolaires">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="annee-scolaire"
+ maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>Les années de scolarités dans l'établissement</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="bulletins">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="bulletin" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>Les bulletins scolaires de l'année</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="notes" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="moyenne" type="TNote"
+ minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Moyenne de l'élève</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="rang" minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Rang de l'élève dans le groupe</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:int">
+ <xs:minInclusive value="0"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element name="appreciation" type="xs:string"
+ minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>Appréciation du professeur</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="code-service-notation"
+ use="required">
+ <xs:annotation>
+ <xs:documentation>Référence vers le service de notation associé</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="TCle">
+ <xs:maxLength value="30"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="etat" default="S">
+ <xs:annotation>
+ <xs:documentation>Etat de l'enseignement : 'S':Enseignement suivi, 'D': Dispensé, 'N': Pas de notes</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="N"/>
+ <xs:enumeration value="D"/>
+ <xs:enumeration value="S"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="modalite-election"
+ use="required">
+ <xs:annotation>
+ <xs:documentation>Type d'option: 'O:Obligatoire','F:Option facultative','N:Option facultative ou obligatoire','S:Option du tronc commun','I:Option inconnue'</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="O"/>
+ <xs:enumeration value="S"/>
+ <xs:enumeration value="F"/>
+ <xs:enumeration value="N"/>
+ <xs:enumeration value="I"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="trimestre" use="required">
+ <xs:simpleType>
+ <xs:restriction base="TTrimestre">
+ <xs:minInclusive value="1"/>
+ <xs:maxInclusive value="3"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="annee" use="required">
+ <xs:annotation>
+ <xs:documentation>Année concernée</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="TAnnee"/>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="code-classe" type="TCle"
+ use="required">
+ <xs:annotation>
+ <xs:documentation>Référence au code de la classe de l'élève</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="code-mef" use="required">
+ <xs:annotation>
+ <xs:documentation>Code MEF (numérique ou libellé court) de l'élève durant l'année scolaire</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="11"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="libelle-mef" type="xs:string"
+ use="required"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="code" use="required">
+ <xs:annotation>
+ <xs:documentation>Identifiant unique d'un élève dans le fichier propre au logiciel</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="TCle"/>
+ </xs:simpleType>
+ </xs:attribute>
+ <!-- MSAN ine interdit -->
+ <xs:attribute name="ine" use="prohibited">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="\d{10}[A-Z]"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <!-- MSAN id-sconet ajoute -->
+ <xs:attribute name="id-sconet" type="xs:string" use="required"/>
+ <xs:attribute name="nom" type="xs:string"
+ use="required"/>
+ <xs:attribute name="prenom" type="xs:string"
+ use="required"/>
+ <xs:attribute name="date-naissance" type="xs:date"
+ use="required"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="rne" use="required">
+ <xs:annotation>
+ <xs:documentation>N° UAI de l'établissement</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="\d{7}[A-Z]"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="nom" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="cp" use="required">
+ <xs:annotation>
+ <xs:documentation>code postal</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="\d{5}"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:key name="classeKey">
+ <xs:selector xpath="classes/classe"/>
+ <xs:field xpath="@code"/>
+ </xs:key>
+ <xs:key name="service-notationKey">
+ <xs:selector xpath="services-notations/service-notation"/>
+ <xs:field xpath="@code"/>
+ </xs:key>
+ <xs:key name="matiereKey">
+ <xs:selector xpath="matieres/matiere"/>
+ <xs:field xpath="@code"/>
+ </xs:key>
+ <xs:key name="enseignantKey">
+ <xs:selector xpath="enseignants/enseignant"/>
+ <xs:field xpath="@code"/>
+ </xs:key>
+ <xs:key name="eleveKey">
+ <xs:selector xpath="eleves/eleve"/>
+ <xs:field xpath="@code"/>
+ </xs:key>
+ <xs:keyref name="classeKeyRef" refer="classeKey">
+ <xs:selector xpath="eleves/eleve/annees-scolaires/annee-scolaire"/>
+ <xs:field xpath="@code-classe"/>
+ </xs:keyref>
+ <xs:keyref name="service-notationKeyRef" refer="service-notationKey">
+ <xs:selector
+ xpath="eleves/eleve/annees-scolaires/annee-scolaire/bulletins/bulletin/notes"/>
+ <xs:field xpath="@code-service-notation"/>
+ </xs:keyref>
+ <xs:keyref name="matiereKeyRef" refer="matiereKey">
+ <xs:selector xpath="services-notations/service-notation"/>
+ <xs:field xpath="@code-matiere"/>
+ </xs:keyref>
+ <xs:keyref name="enseignantKeyRef" refer="enseignantKey">
+ <xs:selector xpath="services-notations/service-notation"/>
+ <xs:field xpath="@code-enseignant"/>
+ </xs:keyref>
+ <xs:keyref name="classeEnseignantKeyRef" refer="enseignantKey">
+ <xs:selector xpath="classes/classe"/>
+ <xs:field xpath="@professeur-principal"/>
+ </xs:keyref>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="logiciel" use="required">
+ <xs:annotation>
+ <xs:documentation>identifie le logiciel qui a généré le fichier</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="notes"/>
+ <xs:enumeration value="campus"/>
+ <xs:enumeration value="telescol"/>
+ <xs:enumeration value="notabene"/>
+ <xs:enumeration value="pronotes"/>
+ <xs:enumeration value="educhorus"/>
+ <xs:enumeration value="charlemagne"/>
+ <xs:enumeration value="scolawin"/>
+ <xs:enumeration value="sconetnotes"/>
+ <xs:enumeration value="gepi"/>
+ <xs:enumeration value="garennes"/>
+ <xs:enumeration value="visascol"/>
+ <!-- BPER : Ajouté suite à la demade d'utiliser 'eliot-notes' comme nom du logiciel -->
+ <xs:enumeration value="eliot-notes"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="version" type="xs:string" use="required">
+ <xs:annotation>
+ <xs:documentation>Version du logiciel </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="date-creation" type="xs:date">
+ <xs:annotation>
+ <xs:documentation>Date de génération du fichier</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <!-- MSAN Ajout de type d'export -->
+ <xs:attribute name="type-export" use="required">
+ <xs:annotation>
+ <xs:documentation>type d'export: 1, 2 ou 3</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:positiveInteger">
+ <xs:enumeration value="1"/>
+ <xs:enumeration value="2"/>
+ <xs:enumeration value="3"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ <xs:simpleType name="TNote">
+ <xs:restriction base="xs:float">
+ <xs:minInclusive value="0.0"/>
+ <xs:maxInclusive value="20.0"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="TAnnee">
+ <xs:restriction base="xs:positiveInteger">
+ <!--MSAN 6.9.2012 verification d'intervalle enlevee - Mantis 21491 -->
+ <!--<xs:minInclusive value="2005"/>-->
+ <!--<xs:maxInclusive value="2020"/>-->
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="TTrimestre">
+ <xs:restriction base="xs:positiveInteger">
+ <xs:minInclusive value="1"/>
+ <xs:maxInclusive value="3"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="TCle">
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[A-Za-z0-9_-]*"/>
+ <xs:maxLength value="30"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="TStructure">
+ <xs:restriction base="xs:string">
+ <xs:maxLength value="8"/>
+ </xs:restriction>
+ </xs:simpleType>
+</xs:schema>
-<?xml version="1.0" encoding="UTF-8"?>\r
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">\r
- <xs:element name="export-notanet">\r
- <xs:complexType>\r
- <xs:sequence>\r
- <xs:element maxOccurs="unbounded" ref="eleve" minOccurs="0"/>\r
- </xs:sequence>\r
- <xs:attribute name="version" type="xs:string"/>\r
- </xs:complexType>\r
- </xs:element>\r
- <xs:element name="eleve">\r
- <xs:complexType>\r
- <xs:sequence>\r
- <xs:element maxOccurs="unbounded" ref="note" minOccurs="0"/>\r
- </xs:sequence>\r
- <xs:attribute name="date-naissance" use="required" type="xs:date"/>\r
- <xs:attribute name="id-sconet" use="required" type="xs:string"/>\r
- <xs:attribute name="nom" use="required" type="xs:string"/>\r
- <xs:attribute name="prenom" use="required" type="xs:string"/>\r
- <xs:attribute name="classe" use="required" type="xs:string"/>\r
- </xs:complexType>\r
- </xs:element>\r
- <xs:element name="note">\r
- <xs:complexType>\r
- <xs:attribute name="code-epreuve" use="required">\r
- <xs:simpleType>\r
- <xs:restriction base="xs:string">\r
- <xs:minLength value="3"/>\r
- <xs:maxLength value="3"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- <xs:attribute name="note" use="required">\r
- <xs:simpleType>\r
- <xs:restriction base="xs:string">\r
- <xs:minLength value="2"/>\r
- <xs:maxLength value="6"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- </xs:complexType>\r
- </xs:element>\r
-</xs:schema>\r
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+ <xs:element name="export-notanet">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="eleve" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="version" type="xs:string"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="eleve">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="note" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="date-naissance" use="required" type="xs:date"/>
+ <xs:attribute name="id-sconet" use="required" type="xs:string"/>
+ <xs:attribute name="nom" use="required" type="xs:string"/>
+ <xs:attribute name="prenom" use="required" type="xs:string"/>
+ <xs:attribute name="classe" use="required" type="xs:string"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="note">
+ <xs:complexType>
+ <xs:attribute name="code-epreuve" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:minLength value="3"/>
+ <xs:maxLength value="3"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="note" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:minLength value="2"/>
+ <xs:maxLength value="6"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
// enabled native2ascii conversion of i18n properties files
grails.enable.native2ascii = true
-plugins {
- applet {
- //préciser le répertoire de la librairie log4j
- log4jJar = 'lib/log4j-1.2.16.jar'
- groovyJar = '/usr/share/groovy/embeddable/groovy-all-1.6.4.jar'
- jars {
- // Applet par défaut pour les exports APB et Notanet.
- // Cette cofig peut être utilisée pour compiler est tester l'applet en local.
- /*
- 'web-app/applet/eliot-notes-export-applet.jar' {
- log4j = true
- groovy = true; // set to false to skip including groovy-all-* in the jar
- classes = [
- 'org.lilie.services.eliot.notes.applet.**.class',
- 'org.lilie.services.eliot.notes.utils.PSVWriter.class'
- ]
- sign {
- alias = 'selfsigned' //your alias in keystore
- keystore = '/usr/lib/jvm/java-6-sun/bin/keystore.jks'
- keypass = 'password'
- storepass = 'password' //alternatively, use a system property with -Dstorepass=password
- }
- pack200 = true
- manifest = 'src/groovy/org/lilie/services/eliot/notes/applet/MANIFEST.MF'
- version = "${appVersion}"
- }
- */
-
- // Applet compilée pour la production. Cette applet est mis dans le dossier
- // "target" et doit être livrée avec en plus du WAR de l'application.
- // L'applet n'est pas signée, C'est à la charge de l'intégrateur de la signer
- // et la mettre sur son Tomcat.
- 'target/eliot-notes-export-applet.jar' {
- log4j = true
- groovy = true; // set to false to skip including groovy-all-* in the jar
- classes = [
- 'org.lilie.services.eliot.notes.applet.**.class',
- 'org.lilie.services.eliot.notes.utils.PSVWriter.class'
- ]
- pack200 = true
- manifest = 'src/groovy/org/lilie/services/eliot/notes/applet/MANIFEST.MF'
- version = "${appVersion}"
- }
- }
- }
-}
-
// Paramètre l'emplacement des fichiers pour la bascule d'année scolarité
eliot.racineDossiersBasculeAnnee = '/tmp/rapportsBascules'
import org.lilie.services.eliot.notes.export.admissionpostbac.dto.*
import org.lilie.services.eliot.scolarite.AnneeScolaire
import org.lilie.services.eliot.scolarite.anneescolaire.AnneeScolaireService
-import org.lilie.services.eliot.notes.applet.utils.StringUtils
+import StringUtils
/**
* Export des resultats pour l'Admission Post-Bac
+++ /dev/null
-import org.sourceforge.autojar.Autojar
-
-includeTargets << grailsScript("_GrailsPackage")
-
-//taskdef(name:'pack200',classname:'com.sun.tools.apache.ant.pack200.Pack200Task',classpath:'')
-
-target(packageApplet: "The description of the script goes here!") {
- depends(packageApp)
-
- def jars = config.'plugins'.'applet'.'jars'
- jars?.each {name, cfg ->
- //def jarPath = cfg.'version' ? "web-app/${name.substring(0, name.size() - 4)}-${cfg.'version'}.jar" : "web-app/$name"
-
- def jarPath = cfg.'version' ? "${name.substring(0, name.size() - 4)}-${cfg.'version'}.jar" : "$name"
-
- File directory = new File(jarPath).getParentFile()
- if (!directory.exists()) {
- directory.mkdirs();
- }
-
- /**
- * Step 1: build a jar with Autojar
- */
- def autojarArgs = []
- autojarArgs << '-o' << jarPath
-
- if (cfg.'manifest') {
- autojarArgs << '-m' << cfg.'manifest'
- }
-
- autojarArgs << '-c' << classesDir
-
- if (cfg.'groovy' == true) {
- autojarArgs << (config.'plugins'.'applet'.'groovyJar' ?: "${grailsHome}/lib/groovy-all-1.6.0.jar")
- }
-
- if (cfg.'log4j' == true) {
- autojarArgs << config.'plugins'.'applet'.'log4jJar'
- }
-
- cfg.'classes'?.each {
- autojarArgs << it
- }
- echo message: "Building $jarPath with the following Autojar arguments: ${autojarArgs.collect {it}}"
- Autojar.main(autojarArgs as String[])
-
- if (cfg.'pack200') {
- echo message: "pack200 is enabled, packing jar..."
-
- ant.condition(property: "winOS") {
- os(family: "windows")
- }
- ant.condition(property: "linuxOS") {
- os(family: "unix")
- }
- def entry = ant.project.getProperties().find { it.key ==~ /.*OS$/}
-
- switch (entry.key) {
- case 'winOS':
- ant.exec(executable: "cmd") {
- arg(line: "/c pack200 -G -r ${jarPath}")
- }
- break
- case 'linuxOS':
- ant.exec(executable: "pack200") {
- arg(line: "-G -r ${jarPath}")
- }
- break
- default:
- echo message: "OS not supported for pack!"
- }
- }
-
- if (cfg.'sign') {
- def alias = cfg.'sign'.'alias'
- def storepass = cfg.'sign'.'storepass'
- def keypass = cfg.'sign'.'keypass' ?: storepass
- def keystore = cfg.'sign'.'keystore'
- echo message: "Signing $jarPath as alias: $alias"
- if (keystore) {
- // Use spesified keystore
- ant.signjar(jar: jarPath, alias: alias, storepass: storepass, keypass: keypass, keystore: keystore)
- } else {
- // Use default keystore
- ant.signjar(jar: jarPath, alias: alias, storepass: storepass, keypass: keypass)
- }
- }
- }
-}
-setDefaultTarget(packageApplet)
\ No newline at end of file
+++ /dev/null
-Manifest-Version: 1.0
-Application-Name: eliot-notes
-Permissions: all-permissions
-Codebase: *
-
package org.lilie.services.eliot.notes
import grails.test.GrailsUnitTestCase
-import org.lilie.services.eliot.notes.applet.utils.Cartouche
-import org.lilie.services.eliot.notes.applet.services.FichierImportExport
-import org.lilie.services.eliot.notes.applet.services.RapportService
-import org.lilie.services.eliot.notes.applet.services.RapportParams
-import org.lilie.services.eliot.notes.applet.data.EleveInfoEtendu
+import Cartouche
+import FichierImportExport
+import RapportService
+import RapportParams
+import EleveInfoEtendu
-import org.lilie.services.eliot.notes.applet.jobs.Phase
+import Phase
import javax.xml.stream.XMLStreamReader
-import org.lilie.services.eliot.notes.applet.data.apb.DonneesAPB
-import org.lilie.services.eliot.notes.applet.data.DonneesCartouche
-import org.lilie.services.eliot.notes.applet.data.CartoucheService
-import org.lilie.services.eliot.notes.applet.data.sconet.DonneesSconet
-import org.lilie.services.eliot.notes.applet.jobs.exceptions.EleveSansCorrespondanceException
-import org.lilie.services.eliot.notes.applet.data.sconet.SconetInfoFactory
-
-import org.lilie.services.eliot.notes.applet.data.apb.APBInfoFactory
+import DonneesAPB
+import DonneesCartouche
+import CartoucheService
+import DonneesSconet
+import EleveSansCorrespondanceException
+import SconetInfoFactory
+
+import APBInfoFactory
/**
* Tests applet APB
package org.lilie.services.eliot.notes
import grails.test.GrailsUnitTestCase
-import org.lilie.services.eliot.notes.applet.services.FichierImportExport
+import FichierImportExport
import javax.xml.stream.XMLStreamReader
-import org.lilie.services.eliot.notes.applet.data.notanet.NotanetInfoFactory
-import org.lilie.services.eliot.notes.applet.data.notanet.NotanetEleveInfo
+import NotanetInfoFactory
+import NotanetEleveInfo
/**
* Tests applet Notanet
-package org.lilie.services.eliot.notes\r
-\r
-import org.lilie.services.eliot.notes.applet.data.ModaliteElection\r
-import org.lilie.services.eliot.notes.applet.data.sconet.dto.EleveSconet\r
-\r
-import org.lilie.services.eliot.notes.applet.data.sconet.dto.OptionSconet\r
-import org.lilie.services.eliot.notes.applet.data.apb.ServiceNotationInfo\r
-import org.lilie.services.eliot.notes.applet.services.apb.ApbMergeService\r
-import org.lilie.services.eliot.notes.applet.services.apb.MergeResultatApb\r
-import org.lilie.services.eliot.notes.applet.data.EleveInfoEtendu\r
-\r
-/**\r
- * Testes unitaires de merge APB\r
- * @author msan\r
- */\r
-\r
-class ApbMergeServiceTests extends GroovyTestCase {\r
-\r
- private static final String PREFIX_SCONET = "sconet_"\r
- private static final String PREFIX_INE = "ine_"\r
-\r
- private static final String CODE_MATIERE_SCONET = 'mat'\r
- private static final String INE_TRIO = '111222333'\r
- private static final String DATE_NAISSANCE_APB = '1992-06-23'\r
- private static final String DATE_NAISSANCE_SCONET = '23/06/1992'\r
- /**\r
- * Test la fusion des donnes venant de fichier APB et de fichier Sconet\r
- */\r
- void testMerge() {\r
-\r
- ApbMergeService apbMergeService = new ApbMergeService()\r
- List<EleveInfoEtendu> eleveInfos = getEleveInfos()\r
- List<EleveSconet> elevesSconet = getElevesSconet()\r
-\r
- MergeResultatApb resultat = apbMergeService.mergeInfos(eleveInfos, elevesSconet)\r
- \r
- verifieINEsMerges(resultat)\r
-\r
- verifieModalitesPositiones(resultat, eleveInfos, elevesSconet)\r
-\r
- verifieModalitesAchoisirMarquees(resultat, eleveInfos, elevesSconet)\r
-\r
- verifieElevesAbsent(resultat)\r
- \r
- }\r
-\r
- /**\r
- * Verifie que les eleves ou il y a besoin de choisir une modalite d'election \r
- * sont bien marques\r
- */\r
- void verifieModalitesAchoisirMarquees(MergeResultatApb mergeResultat,\r
- List<EleveInfoEtendu> eleveInfos,\r
- List<EleveSconet> eleveSconets) {\r
- List<EleveInfoEtendu> infosModalites = mergeResultat.eleveInfosModalites\r
- Long modalitesCount = 0\r
- eleveSconets.each { EleveSconet eleveSconet ->\r
- if (eleveSconet.options.first().modaliteElection == 'N') {\r
- assertNotNull("Eleve $eleveSconet n'a pas ete marque comme necessitant "+\r
- "de devoir choisir une modalite d'election",\r
- infosModalites.find { it.idSconet == eleveSconet.idSconet })\r
- modalitesCount++\r
- }\r
- }\r
- assertEquals("La taille de la liste des eleves ou il faut positionner la "+\r
- "modalite d'election n'est pas comme prevu",\r
- modalitesCount, infosModalites.size())\r
-\r
- }\r
-\r
- /**\r
- * Verifife que les modalites sont bien positiones\r
- */\r
- void verifieModalitesPositiones(MergeResultatApb mergeResultat, List<EleveInfoEtendu> eleveInfos, List<EleveSconet> eleveSconets) {\r
- mergeResultat.eleveInfosTous.each { EleveInfoEtendu infoMerge ->\r
- EleveSconet eleveSconet = eleveSconets.find { it.idSconet == infoMerge.idSconet }\r
- if (eleveSconet) {\r
- assertTrue("Modalite d'election n'est pas positionnee comme prevu",\r
- infoMerge.modalites.first().modalite.name() ==\r
- eleveSconet.options.get(0).modaliteElection)\r
- }\r
- }\r
- }\r
-\r
- /**\r
- * Verifie que les eleves absant dans le fichier Sconet sont bien detectes\r
- */\r
- void verifieElevesAbsent(MergeResultatApb mergeResultat) {\r
- List<String> elevesAbsants = mergeResultat.elevesPasPresantDansSconet.\r
- collect { it.eleveInfo.idSconet }\r
- assertTrue("Eleve 0 n'est pas trouve dans la liste des eleves absent dans "+\r
- "le fichier Sconet",\r
- elevesAbsants.size()==1 && elevesAbsants.get(0) == PREFIX_SCONET+"0")\r
- }\r
-\r
- /**\r
- * Verifie que les INEs sont bien matches avec les id Sconet\r
- */\r
- void verifieINEsMerges(MergeResultatApb mergeResultat) {\r
- List<EleveInfoEtendu> eleves = mergeResultat.eleveInfosTous\r
- eleves[0..98].each { EleveInfoEtendu eleveInfo ->\r
- assertTrue("INE n'est pas bien positionne pour eleveInfo: $eleveInfo",\r
- eleveInfo.idSconet.substring(PREFIX_SCONET.length()) ==\r
- eleveInfo.ine.substring(PREFIX_INE.length()))\r
- }\r
- assertTrue("INE n'est pas bien positionne pour eleveInfo: ${eleves[100]}",\r
- eleves[99].ine == INE_TRIO)\r
- }\r
-\r
- /**\r
- * Création d'une liste d'élèves\r
- * @return : une liste d'élèves\r
- */\r
- private List<EleveInfoEtendu> getEleveInfos() {\r
-\r
- List<EleveInfoEtendu> lstInfo = []\r
-\r
- for (int i = 0; i < 100; i++) {\r
- lstInfo << new EleveInfoEtendu(\r
- idEliotNotes: i,\r
- annee: "2012",\r
- idSconet: PREFIX_SCONET + i.toString(),\r
- ine: null,\r
- nom: 'nom eleve' + i.toString(),\r
- prenom: 'prenom ' + i.toString(),\r
- classe: 'term A' + i.toString(), // classe d'appartenance\r
- services: [\r
- new ServiceNotationInfo(\r
- codeMatiereSconet: CODE_MATIERE_SCONET\r
- )\r
- ]\r
- )\r
- }\r
- lstInfo << new EleveInfoEtendu(\r
- idEliotNotes: 100,\r
- annee: "2012",\r
- idSconet: null,\r
- ine: null,\r
- nom: 'nom',\r
- prenom: 'prenom',\r
- dateNaissance: DATE_NAISSANCE_APB,\r
- classe: 'term A',\r
- services: [\r
- new ServiceNotationInfo(\r
- codeMatiereSconet: CODE_MATIERE_SCONET\r
- )\r
- ]\r
- )\r
- return lstInfo\r
- }\r
-\r
-\r
- /**\r
- * Création d'une liste d'élèves\r
- * @return : une liste d'élèves\r
- */\r
- private List<EleveSconet> getElevesSconet() {\r
-\r
- List<EleveSconet> lstInfo = []\r
-\r
- for (int i = 1; i < 100; i++) {\r
- String modaliteElection =\r
- (i%2 == 1 ? ModaliteElection.N.name() : ModaliteElection.F.name())\r
-\r
- List<OptionSconet> options = [\r
- new OptionSconet(\r
- codeMatiere: CODE_MATIERE_SCONET,\r
- modaliteElection: modaliteElection\r
- )\r
- ]\r
- \r
- lstInfo << new EleveSconet(\r
- idSconet: PREFIX_SCONET + i.toString(),\r
- ine: PREFIX_INE + i.toString(),\r
- dateNaissance: '',\r
- options: options,\r
- annee: "2012"\r
- )\r
- }\r
- lstInfo << new EleveSconet(\r
- idSconet: null,\r
- ine: INE_TRIO,\r
- nom: 'nom',\r
- prenom: 'prenom',\r
- dateNaissance: DATE_NAISSANCE_SCONET,\r
- options: [new OptionSconet(\r
- codeMatiere: CODE_MATIERE_SCONET,\r
- modaliteElection: ModaliteElection.S.name()\r
- )],\r
- annee: "2012"\r
- )\r
- return lstInfo\r
- }\r
-\r
-}\r
+package org.lilie.services.eliot.notes
+
+import ModaliteElection
+import EleveSconet
+
+import OptionSconet
+import ServiceNotationInfo
+import ApbMergeService
+import MergeResultatApb
+import EleveInfoEtendu
+
+/**
+ * Testes unitaires de merge APB
+ * @author msan
+ */
+
+class ApbMergeServiceTests extends GroovyTestCase {
+
+ private static final String PREFIX_SCONET = "sconet_"
+ private static final String PREFIX_INE = "ine_"
+
+ private static final String CODE_MATIERE_SCONET = 'mat'
+ private static final String INE_TRIO = '111222333'
+ private static final String DATE_NAISSANCE_APB = '1992-06-23'
+ private static final String DATE_NAISSANCE_SCONET = '23/06/1992'
+ /**
+ * Test la fusion des donnes venant de fichier APB et de fichier Sconet
+ */
+ void testMerge() {
+
+ ApbMergeService apbMergeService = new ApbMergeService()
+ List<EleveInfoEtendu> eleveInfos = getEleveInfos()
+ List<EleveSconet> elevesSconet = getElevesSconet()
+
+ MergeResultatApb resultat = apbMergeService.mergeInfos(eleveInfos, elevesSconet)
+
+ verifieINEsMerges(resultat)
+
+ verifieModalitesPositiones(resultat, eleveInfos, elevesSconet)
+
+ verifieModalitesAchoisirMarquees(resultat, eleveInfos, elevesSconet)
+
+ verifieElevesAbsent(resultat)
+
+ }
+
+ /**
+ * Verifie que les eleves ou il y a besoin de choisir une modalite d'election
+ * sont bien marques
+ */
+ void verifieModalitesAchoisirMarquees(MergeResultatApb mergeResultat,
+ List<EleveInfoEtendu> eleveInfos,
+ List<EleveSconet> eleveSconets) {
+ List<EleveInfoEtendu> infosModalites = mergeResultat.eleveInfosModalites
+ Long modalitesCount = 0
+ eleveSconets.each { EleveSconet eleveSconet ->
+ if (eleveSconet.options.first().modaliteElection == 'N') {
+ assertNotNull("Eleve $eleveSconet n'a pas ete marque comme necessitant "+
+ "de devoir choisir une modalite d'election",
+ infosModalites.find { it.idSconet == eleveSconet.idSconet })
+ modalitesCount++
+ }
+ }
+ assertEquals("La taille de la liste des eleves ou il faut positionner la "+
+ "modalite d'election n'est pas comme prevu",
+ modalitesCount, infosModalites.size())
+
+ }
+
+ /**
+ * Verifife que les modalites sont bien positiones
+ */
+ void verifieModalitesPositiones(MergeResultatApb mergeResultat, List<EleveInfoEtendu> eleveInfos, List<EleveSconet> eleveSconets) {
+ mergeResultat.eleveInfosTous.each { EleveInfoEtendu infoMerge ->
+ EleveSconet eleveSconet = eleveSconets.find { it.idSconet == infoMerge.idSconet }
+ if (eleveSconet) {
+ assertTrue("Modalite d'election n'est pas positionnee comme prevu",
+ infoMerge.modalites.first().modalite.name() ==
+ eleveSconet.options.get(0).modaliteElection)
+ }
+ }
+ }
+
+ /**
+ * Verifie que les eleves absant dans le fichier Sconet sont bien detectes
+ */
+ void verifieElevesAbsent(MergeResultatApb mergeResultat) {
+ List<String> elevesAbsants = mergeResultat.elevesPasPresantDansSconet.
+ collect { it.eleveInfo.idSconet }
+ assertTrue("Eleve 0 n'est pas trouve dans la liste des eleves absent dans "+
+ "le fichier Sconet",
+ elevesAbsants.size()==1 && elevesAbsants.get(0) == PREFIX_SCONET+"0")
+ }
+
+ /**
+ * Verifie que les INEs sont bien matches avec les id Sconet
+ */
+ void verifieINEsMerges(MergeResultatApb mergeResultat) {
+ List<EleveInfoEtendu> eleves = mergeResultat.eleveInfosTous
+ eleves[0..98].each { EleveInfoEtendu eleveInfo ->
+ assertTrue("INE n'est pas bien positionne pour eleveInfo: $eleveInfo",
+ eleveInfo.idSconet.substring(PREFIX_SCONET.length()) ==
+ eleveInfo.ine.substring(PREFIX_INE.length()))
+ }
+ assertTrue("INE n'est pas bien positionne pour eleveInfo: ${eleves[100]}",
+ eleves[99].ine == INE_TRIO)
+ }
+
+ /**
+ * Création d'une liste d'élèves
+ * @return : une liste d'élèves
+ */
+ private List<EleveInfoEtendu> getEleveInfos() {
+
+ List<EleveInfoEtendu> lstInfo = []
+
+ for (int i = 0; i < 100; i++) {
+ lstInfo << new EleveInfoEtendu(
+ idEliotNotes: i,
+ annee: "2012",
+ idSconet: PREFIX_SCONET + i.toString(),
+ ine: null,
+ nom: 'nom eleve' + i.toString(),
+ prenom: 'prenom ' + i.toString(),
+ classe: 'term A' + i.toString(), // classe d'appartenance
+ services: [
+ new ServiceNotationInfo(
+ codeMatiereSconet: CODE_MATIERE_SCONET
+ )
+ ]
+ )
+ }
+ lstInfo << new EleveInfoEtendu(
+ idEliotNotes: 100,
+ annee: "2012",
+ idSconet: null,
+ ine: null,
+ nom: 'nom',
+ prenom: 'prenom',
+ dateNaissance: DATE_NAISSANCE_APB,
+ classe: 'term A',
+ services: [
+ new ServiceNotationInfo(
+ codeMatiereSconet: CODE_MATIERE_SCONET
+ )
+ ]
+ )
+ return lstInfo
+ }
+
+
+ /**
+ * Création d'une liste d'élèves
+ * @return : une liste d'élèves
+ */
+ private List<EleveSconet> getElevesSconet() {
+
+ List<EleveSconet> lstInfo = []
+
+ for (int i = 1; i < 100; i++) {
+ String modaliteElection =
+ (i%2 == 1 ? ModaliteElection.N.name() : ModaliteElection.F.name())
+
+ List<OptionSconet> options = [
+ new OptionSconet(
+ codeMatiere: CODE_MATIERE_SCONET,
+ modaliteElection: modaliteElection
+ )
+ ]
+
+ lstInfo << new EleveSconet(
+ idSconet: PREFIX_SCONET + i.toString(),
+ ine: PREFIX_INE + i.toString(),
+ dateNaissance: '',
+ options: options,
+ annee: "2012"
+ )
+ }
+ lstInfo << new EleveSconet(
+ idSconet: null,
+ ine: INE_TRIO,
+ nom: 'nom',
+ prenom: 'prenom',
+ dateNaissance: DATE_NAISSANCE_SCONET,
+ options: [new OptionSconet(
+ codeMatiere: CODE_MATIERE_SCONET,
+ modaliteElection: ModaliteElection.S.name()
+ )],
+ annee: "2012"
+ )
+ return lstInfo
+ }
+
+}
-package org.lilie.services.eliot.notes\r
-\r
-import org.lilie.services.eliot.notes.applet.data.sconet.dto.EleveSconet\r
-import org.lilie.services.eliot.notes.applet.services.notanet.NotanetMergeService\r
-import org.lilie.services.eliot.notes.applet.data.notanet.NotanetEleveInfo\r
-import org.lilie.services.eliot.notes.applet.services.notanet.MergeResultatNotanet\r
-\r
-/**\r
- * Testes unitaires de merge Notanet\r
- * @author msan\r
- */\r
-\r
-class NotanetMergeServiceTests extends GroovyTestCase {\r
-\r
-\r
- private static final String ID_SCONET_1 = '11x11'\r
- private static final String INE_1 = 'ine111'\r
-\r
- private static final String INE_TRIO = '111222333'\r
- private static final String NOM_TRIO = 'nom'\r
- private static final String PRENOM_TRIO = 'prenom'\r
- private static final String DATE_NAISSANCE_TRIO_NORMALISE = '1992-06-23'\r
- private static final String DATE_NAISSANCE_TRIO_SCONET = '23/06/1992'\r
-\r
- private static final String NOM_TRIO_MANQUANT = 'nom'\r
-\r
- /**\r
- * Test la fusion des donnes venant de fichier Notanet et de fichier Sconet\r
- */\r
- void testMerge() {\r
-\r
- NotanetMergeService notanetMergeService = new NotanetMergeService()\r
- List<NotanetEleveInfo> eleveInfos = getEleveInfos()\r
- List<EleveSconet> elevesSconet = getElevesSconet()\r
-\r
- MergeResultatNotanet resultat = notanetMergeService.mergeInfos(eleveInfos, elevesSconet)\r
- \r
- verifieINEsMerges(resultat)\r
-\r
- verifieElevesAbsent(resultat)\r
- \r
- }\r
-\r
- /**\r
- * Verifie que les eleves absant dans le fichier Sconet sont bien detectes\r
- */\r
- void verifieElevesAbsent(MergeResultatNotanet mergeResultat) {\r
- List<String> elevesAbsants = mergeResultat.elevesPasPresantDansSconet.\r
- collect { it.eleveInfo.idSconet }\r
- assertTrue("Eleve absent dans le fichier Sconet n'est pas trouve dans la "+\r
- "liste des eleves absent", elevesAbsants.size()==1)\r
- }\r
-\r
- /**\r
- * Verifie que les INEs sont bien matches avec les id Sconet ou les trios\r
- */\r
- void verifieINEsMerges(MergeResultatNotanet mergeResultat) {\r
- List<NotanetEleveInfo> eleves = mergeResultat.eleveInfosTous\r
- assertTrue("INE n'est pas bien positionne pour eleveInfo: ${eleves[0]}",\r
- eleves[0].ine == INE_1)\r
- assertTrue("INE n'est pas bien positionne pour eleveInfo: ${eleves[1]}",\r
- eleves[1].ine == INE_TRIO)\r
- }\r
-\r
- /**\r
- * Création d'une liste d'élèves\r
- * @return : une liste d'élèves\r
- */\r
- private List<NotanetEleveInfo> getEleveInfos() {\r
-\r
- List<NotanetEleveInfo> lstInfo = []\r
-\r
- // trouve par id sconet\r
- lstInfo << new NotanetEleveInfo(\r
- idSconet: ID_SCONET_1,\r
- ine: INE_1,\r
- dateNaissance: ''\r
- )\r
-\r
- // trouve par trio\r
- lstInfo << new NotanetEleveInfo(\r
- idSconet: null,\r
- ine: INE_TRIO,\r
- nom: NOM_TRIO,\r
- prenom: PRENOM_TRIO,\r
- dateNaissance: DATE_NAISSANCE_TRIO_NORMALISE\r
- )\r
-\r
- // manquant dans le fichier sconet\r
- lstInfo << new NotanetEleveInfo(\r
- idSconet: null,\r
- ine: null,\r
- nom: NOM_TRIO_MANQUANT,\r
- prenom: '',\r
- dateNaissance: ''\r
- )\r
- return lstInfo\r
- }\r
-\r
- /**\r
- * Création d'une liste d'élèves\r
- * @return : une liste d'élèves\r
- */\r
- private List<EleveSconet> getElevesSconet() {\r
-\r
- List<EleveSconet> lstInfo = []\r
-\r
- lstInfo << new EleveSconet(\r
- idSconet: ID_SCONET_1,\r
- ine: INE_1,\r
- dateNaissance: ''\r
- )\r
-\r
- lstInfo << new EleveSconet(\r
- idSconet: null,\r
- ine: INE_TRIO,\r
- nom: 'nom',\r
- prenom: 'prenom',\r
- dateNaissance: DATE_NAISSANCE_TRIO_SCONET\r
- )\r
- return lstInfo\r
- }\r
-\r
-}\r
+package org.lilie.services.eliot.notes
+
+import EleveSconet
+import NotanetMergeService
+import NotanetEleveInfo
+import MergeResultatNotanet
+
+/**
+ * Testes unitaires de merge Notanet
+ * @author msan
+ */
+
+class NotanetMergeServiceTests extends GroovyTestCase {
+
+
+ private static final String ID_SCONET_1 = '11x11'
+ private static final String INE_1 = 'ine111'
+
+ private static final String INE_TRIO = '111222333'
+ private static final String NOM_TRIO = 'nom'
+ private static final String PRENOM_TRIO = 'prenom'
+ private static final String DATE_NAISSANCE_TRIO_NORMALISE = '1992-06-23'
+ private static final String DATE_NAISSANCE_TRIO_SCONET = '23/06/1992'
+
+ private static final String NOM_TRIO_MANQUANT = 'nom'
+
+ /**
+ * Test la fusion des donnes venant de fichier Notanet et de fichier Sconet
+ */
+ void testMerge() {
+
+ NotanetMergeService notanetMergeService = new NotanetMergeService()
+ List<NotanetEleveInfo> eleveInfos = getEleveInfos()
+ List<EleveSconet> elevesSconet = getElevesSconet()
+
+ MergeResultatNotanet resultat = notanetMergeService.mergeInfos(eleveInfos, elevesSconet)
+
+ verifieINEsMerges(resultat)
+
+ verifieElevesAbsent(resultat)
+
+ }
+
+ /**
+ * Verifie que les eleves absant dans le fichier Sconet sont bien detectes
+ */
+ void verifieElevesAbsent(MergeResultatNotanet mergeResultat) {
+ List<String> elevesAbsants = mergeResultat.elevesPasPresantDansSconet.
+ collect { it.eleveInfo.idSconet }
+ assertTrue("Eleve absent dans le fichier Sconet n'est pas trouve dans la "+
+ "liste des eleves absent", elevesAbsants.size()==1)
+ }
+
+ /**
+ * Verifie que les INEs sont bien matches avec les id Sconet ou les trios
+ */
+ void verifieINEsMerges(MergeResultatNotanet mergeResultat) {
+ List<NotanetEleveInfo> eleves = mergeResultat.eleveInfosTous
+ assertTrue("INE n'est pas bien positionne pour eleveInfo: ${eleves[0]}",
+ eleves[0].ine == INE_1)
+ assertTrue("INE n'est pas bien positionne pour eleveInfo: ${eleves[1]}",
+ eleves[1].ine == INE_TRIO)
+ }
+
+ /**
+ * Création d'une liste d'élèves
+ * @return : une liste d'élèves
+ */
+ private List<NotanetEleveInfo> getEleveInfos() {
+
+ List<NotanetEleveInfo> lstInfo = []
+
+ // trouve par id sconet
+ lstInfo << new NotanetEleveInfo(
+ idSconet: ID_SCONET_1,
+ ine: INE_1,
+ dateNaissance: ''
+ )
+
+ // trouve par trio
+ lstInfo << new NotanetEleveInfo(
+ idSconet: null,
+ ine: INE_TRIO,
+ nom: NOM_TRIO,
+ prenom: PRENOM_TRIO,
+ dateNaissance: DATE_NAISSANCE_TRIO_NORMALISE
+ )
+
+ // manquant dans le fichier sconet
+ lstInfo << new NotanetEleveInfo(
+ idSconet: null,
+ ine: null,
+ nom: NOM_TRIO_MANQUANT,
+ prenom: '',
+ dateNaissance: ''
+ )
+ return lstInfo
+ }
+
+ /**
+ * Création d'une liste d'élèves
+ * @return : une liste d'élèves
+ */
+ private List<EleveSconet> getElevesSconet() {
+
+ List<EleveSconet> lstInfo = []
+
+ lstInfo << new EleveSconet(
+ idSconet: ID_SCONET_1,
+ ine: INE_1,
+ dateNaissance: ''
+ )
+
+ lstInfo << new EleveSconet(
+ idSconet: null,
+ ine: INE_TRIO,
+ nom: 'nom',
+ prenom: 'prenom',
+ dateNaissance: DATE_NAISSANCE_TRIO_SCONET
+ )
+ return lstInfo
+ }
+
+}
-package org.lilie.services.eliot.notes\r
-\r
-import org.lilie.services.eliot.notes.applet.services.notanet.NotanetWriter\r
-import org.lilie.services.eliot.notes.applet.data.notanet.NotanetEleveInfo\r
-import org.lilie.services.eliot.notes.applet.data.notanet.NotanetResultatInfo\r
-\r
-/**\r
- * Testes unitaires de notanetWriter\r
- * @author msan\r
- */\r
-class NotanetWriterTests extends GroovyTestCase {\r
-\r
- /**\r
- * Test d'export Notanet\r
- */\r
- void testWrite() {\r
-\r
- NotanetWriter notanetWriter = new NotanetWriter()\r
- String psv = notanetWriter.exporteVersString(getEleveInfos())\r
- String psvAttendu =\r
- "1111111111X|100|18.00|\n" +\r
- "1111111111X|TOT|18.00|\n" +\r
- "1497003648D|121|18.00|\n" +\r
- "1497003648D|130|NV|\n" +\r
- "1497003648D|TOT|094.50|\n"\r
-\r
- assertEquals("String exporte ne correspond pas a l'attente", psvAttendu, psv)\r
-\r
- }\r
-\r
- /**\r
- * prepare les donnes de test\r
- */\r
- List<NotanetEleveInfo> getEleveInfos() {\r
- return [\r
- new NotanetEleveInfo(\r
- ine: '1497003648D',\r
- resultats: [\r
- new NotanetResultatInfo(\r
- codeEpreuve: 'TOT',\r
- note: '094.50'),\r
- new NotanetResultatInfo(\r
- codeEpreuve: '130',\r
- note: 'NV'),\r
- new NotanetResultatInfo(\r
- codeEpreuve: '121',\r
- note: '18.00')\r
- ]\r
- ),\r
- new NotanetEleveInfo(\r
- ine: '1111111111X',\r
- resultats: [\r
- new NotanetResultatInfo(\r
- codeEpreuve: 'TOT',\r
- note: '18.00'),\r
- new NotanetResultatInfo(\r
- codeEpreuve: '100',\r
- note: '18.00')\r
- ]\r
- )\r
- ]\r
- }\r
-\r
-}\r
+package org.lilie.services.eliot.notes
+
+import NotanetWriter
+import NotanetEleveInfo
+import NotanetResultatInfo
+
+/**
+ * Testes unitaires de notanetWriter
+ * @author msan
+ */
+class NotanetWriterTests extends GroovyTestCase {
+
+ /**
+ * Test d'export Notanet
+ */
+ void testWrite() {
+
+ NotanetWriter notanetWriter = new NotanetWriter()
+ String psv = notanetWriter.exporteVersString(getEleveInfos())
+ String psvAttendu =
+ "1111111111X|100|18.00|\n" +
+ "1111111111X|TOT|18.00|\n" +
+ "1497003648D|121|18.00|\n" +
+ "1497003648D|130|NV|\n" +
+ "1497003648D|TOT|094.50|\n"
+
+ assertEquals("String exporte ne correspond pas a l'attente", psvAttendu, psv)
+
+ }
+
+ /**
+ * prepare les donnes de test
+ */
+ List<NotanetEleveInfo> getEleveInfos() {
+ return [
+ new NotanetEleveInfo(
+ ine: '1497003648D',
+ resultats: [
+ new NotanetResultatInfo(
+ codeEpreuve: 'TOT',
+ note: '094.50'),
+ new NotanetResultatInfo(
+ codeEpreuve: '130',
+ note: 'NV'),
+ new NotanetResultatInfo(
+ codeEpreuve: '121',
+ note: '18.00')
+ ]
+ ),
+ new NotanetEleveInfo(
+ ine: '1111111111X',
+ resultats: [
+ new NotanetResultatInfo(
+ codeEpreuve: 'TOT',
+ note: '18.00'),
+ new NotanetResultatInfo(
+ codeEpreuve: '100',
+ note: '18.00')
+ ]
+ )
+ ]
+ }
+
+}
+++ /dev/null
-<?xml version="1.0" encoding="utf-8" ?>\r
-<!--\r
- ~ Copyright © FYLAB and the Conseil Régional d'Île-de-France, 2009\r
- ~ This file is part of L'Interface Libre et Interactive de l'Enseignement (Lilie).\r
- ~\r
- ~ Lilie is free software. You can redistribute it and/or modify since\r
- ~ you respect the terms of either (at least one of the both license) :\r
- ~ - under the terms of the GNU Affero General Public License as\r
- ~ published by the Free Software Foundation, either version 3 of the\r
- ~ License, or (at your option) any later version.\r
- ~ - the CeCILL-C as published by CeCILL-C; either version 1 of the\r
- ~ License, or any later version\r
- ~\r
- ~ There are special exceptions to the terms and conditions of the\r
- ~ licenses as they are applied to this software. View the full text of\r
- ~ the exception in file LICENSE.txt in the directory of this software\r
- ~ distribution.\r
- ~\r
- ~ Lilie is distributed in the hope that it will be useful,\r
- ~ but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- ~ Licenses for more details.\r
- ~\r
- ~ You should have received a copy of the GNU General Public License\r
- ~ and the CeCILL-C along with Lilie. If not, see :\r
- ~ <http://www.gnu.org/licenses/> and\r
- ~ <http://www.cecill.info/licences.fr.html>.\r
- -->\r
-\r
-<!--Created with Liquid XML Studio Developer Edition (Trial) 8.1.2.2399 (http://www.liquid-technologies.com)-->\r
-<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"\r
- xmlns:xs="http://www.w3.org/2001/XMLSchema">\r
- <xs:element name="fichier">\r
- <xs:complexType>\r
- <xs:sequence>\r
- <xs:element name="etablissement">\r
- <xs:complexType>\r
- <xs:sequence>\r
- <xs:element name="classes">\r
- <xs:annotation>\r
- <xs:documentation>Les classes de l'établissements</xs:documentation>\r
- </xs:annotation>\r
- <xs:complexType>\r
- <xs:sequence>\r
- <xs:element name="classe" maxOccurs="unbounded">\r
- <xs:annotation>\r
- <xs:documentation>Les classes des élèves présents dans le fichier (toute année confondue)</xs:documentation>\r
- </xs:annotation>\r
- <xs:complexType>\r
- <xs:attribute name="code" type="TCle" use="required">\r
- <xs:annotation>\r
- <xs:documentation>Identifiant unique de la classe dans le fichier propre au logiciel de notes</xs:documentation>\r
- </xs:annotation>\r
- </xs:attribute>\r
- <xs:attribute name="annee" use="required">\r
- <xs:annotation>\r
- <xs:documentation>Année d'existance de la classe</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="TAnnee"/>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- <xs:attribute name="nom" type="xs:string"\r
- use="required">\r
- <xs:annotation>\r
- <xs:documentation>Nom de la classe dans le logiciel</xs:documentation>\r
- </xs:annotation>\r
- </xs:attribute>\r
- <xs:attribute name="niveau" use="required">\r
- <xs:annotation>\r
- <xs:documentation>Premiere ou Terminale</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="xs:string">\r
- <xs:enumeration value="premiere"/>\r
- <xs:enumeration value="terminale"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- <xs:attribute name="professeur-principal"\r
- type="TCle">\r
- <xs:annotation>\r
- <xs:documentation>Référence à l'enseignant "professeur principal"</xs:documentation>\r
- </xs:annotation>\r
- </xs:attribute>\r
- <xs:attribute name="decoupage" use="required">\r
- <xs:annotation>\r
- <xs:documentation>Découpage annuel des bulletins scolaires (3=trimestre ou 2=semestre)</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="xs:positiveInteger">\r
- <xs:minInclusive value="2"/>\r
- <xs:maxInclusive value="3"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- <xs:attribute name="id-structure-sconet"\r
- type="TStructure">\r
- <xs:annotation>\r
- <xs:documentation>Identifiant SCONET de la structure (division)</xs:documentation>\r
- </xs:annotation>\r
- </xs:attribute>\r
- </xs:complexType>\r
- </xs:element>\r
- </xs:sequence>\r
- </xs:complexType>\r
- </xs:element>\r
- <xs:element name="services-notations">\r
- <xs:complexType>\r
- <xs:sequence>\r
- <xs:element name="service-notation" maxOccurs="unbounded">\r
- <xs:complexType>\r
- <xs:sequence>\r
- <xs:element name="moyenne-classe" type="TNote"\r
- minOccurs="0">\r
- <xs:annotation>\r
- <xs:documentation>Moyenne du groupe sur 20</xs:documentation>\r
- </xs:annotation>\r
- </xs:element>\r
- <xs:element name="moyenne-haute" type="TNote"\r
- minOccurs="0">\r
- <xs:annotation>\r
- <xs:documentation>Moyenne la plus haute du groupe sur 20</xs:documentation>\r
- </xs:annotation>\r
- </xs:element>\r
- <xs:element name="moyenne-basse" minOccurs="0">\r
- <xs:annotation>\r
- <xs:documentation>Moyenne la plus basse du groupe sur 20</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="TNote">\r
- <xs:minInclusive value="0.0"/>\r
- <xs:maxInclusive value="20.0"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- </xs:element>\r
- <xs:element name="effectif">\r
- <xs:annotation>\r
- <xs:documentation>Nombre total d'élèves dans le groupe</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="xs:positiveInteger">\r
- <xs:minInclusive value="1"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- </xs:element>\r
- </xs:sequence>\r
- <xs:attribute name="code" use="required">\r
- <xs:annotation>\r
- <xs:documentation>Identifiant unique dans le fichier</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="TCle"/>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- <xs:attribute name="annee" use="required">\r
- <xs:annotation>\r
- <xs:documentation>Année concernée</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="TAnnee"/>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- <xs:attribute name="trimestre" use="required">\r
- <xs:annotation>\r
- <xs:documentation>Trimestre ou Semestre concerné</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="TTrimestre">\r
- <xs:minInclusive value="1"/>\r
- <xs:maxInclusive value="3"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- <xs:attribute name="code-enseignant" use="required">\r
- <xs:annotation>\r
- <xs:documentation>Enseignant qui a donné la note</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="TCle"/>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- <xs:attribute name="code-matiere" use="required">\r
- <xs:annotation>\r
- <xs:documentation>La matière associée</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="TCle">\r
- <xs:maxLength value="30"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- <xs:attribute name="nom-groupe" type="xs:string">\r
- <xs:annotation>\r
- <xs:documentation>Libellé du groupe dans le logiciel</xs:documentation>\r
- </xs:annotation>\r
- </xs:attribute>\r
- <xs:attribute name="id-structure-sconet"\r
- type="TStructure">\r
- <xs:annotation>\r
- <xs:documentation>Identifiant SCONET de la structure (groupe)\r
-</xs:documentation>\r
- </xs:annotation>\r
- </xs:attribute>\r
- </xs:complexType>\r
- </xs:element>\r
- </xs:sequence>\r
- </xs:complexType>\r
- </xs:element>\r
- <xs:element name="matieres">\r
- <xs:annotation>\r
- <xs:documentation>Toutes les matières présentes dans les bulletins scolaires du fichier</xs:documentation>\r
- </xs:annotation>\r
- <xs:complexType>\r
- <xs:sequence>\r
- <xs:element name="matiere" maxOccurs="unbounded">\r
- <xs:annotation>\r
- <xs:documentation>Les matières présentes dans les bulletins scolaires (toute année et classe confondues)</xs:documentation>\r
- </xs:annotation>\r
- <xs:complexType>\r
- <xs:attribute name="code" use="required">\r
- <xs:annotation>\r
- <xs:documentation>Identifiant unique dans le fichier propre au logiciel</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="TCle"/>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- <xs:attribute name="libelle-sconet" use="required">\r
- <xs:annotation>\r
- <xs:documentation>Libelle court dans la nomenclature SCONET</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="xs:string">\r
- <xs:maxLength value="30"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- <xs:attribute name="libelle" type="xs:string"\r
- use="required">\r
- <xs:annotation>\r
- <xs:documentation>Libellé édition de la matière</xs:documentation>\r
- </xs:annotation>\r
- </xs:attribute>\r
- <xs:attribute name="code-sconet" use="required">\r
- <xs:annotation>\r
- <xs:documentation>Code numérique SCONET de la matière</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="xs:string">\r
- </xs:restriction>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- </xs:complexType>\r
- </xs:element>\r
- </xs:sequence>\r
- </xs:complexType>\r
- </xs:element>\r
- <xs:element name="enseignants">\r
- <xs:complexType>\r
- <xs:sequence>\r
- <xs:element name="enseignant" maxOccurs="unbounded">\r
- <xs:annotation>\r
- <xs:documentation>Les enseignants présents sur les bulletins scolaires</xs:documentation>\r
- </xs:annotation>\r
- <xs:complexType>\r
- <xs:attribute name="code" use="required">\r
- <xs:annotation>\r
- <xs:documentation>Identifiant unique d'un enseignant dans le fichier propre au logiciel</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="TCle"/>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- <xs:attribute name="nom" type="xs:string"\r
- use="required"/>\r
- <xs:attribute name="prenom" type="xs:string"\r
- use="required"/>\r
- </xs:complexType>\r
- </xs:element>\r
- </xs:sequence>\r
- </xs:complexType>\r
- </xs:element>\r
- <xs:element name="eleves">\r
- <xs:complexType>\r
- <xs:sequence>\r
- <xs:element name="eleve" maxOccurs="unbounded">\r
- <xs:annotation>\r
- <xs:documentation>Les élèves de l'établissements </xs:documentation>\r
- </xs:annotation>\r
- <xs:complexType>\r
- <xs:sequence>\r
- <xs:element name="annees-scolaires">\r
- <xs:complexType>\r
- <xs:sequence>\r
- <xs:element name="annee-scolaire"\r
- maxOccurs="unbounded">\r
- <xs:annotation>\r
- <xs:documentation>Les années de scolarités dans l'établissement</xs:documentation>\r
- </xs:annotation>\r
- <xs:complexType>\r
- <xs:sequence>\r
- <xs:element name="bulletins">\r
- <xs:complexType>\r
- <xs:sequence>\r
- <xs:element name="bulletin" maxOccurs="unbounded">\r
- <xs:annotation>\r
- <xs:documentation>Les bulletins scolaires de l'année</xs:documentation>\r
- </xs:annotation>\r
- <xs:complexType>\r
- <xs:sequence>\r
- <xs:element name="notes" maxOccurs="unbounded">\r
- <xs:complexType>\r
- <xs:sequence>\r
- <xs:element name="moyenne" type="TNote"\r
- minOccurs="0">\r
- <xs:annotation>\r
- <xs:documentation>Moyenne de l'élève</xs:documentation>\r
- </xs:annotation>\r
- </xs:element>\r
- <xs:element name="rang" minOccurs="0">\r
- <xs:annotation>\r
- <xs:documentation>Rang de l'élève dans le groupe</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="xs:int">\r
- <xs:minInclusive value="0"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- </xs:element>\r
- <xs:element name="appreciation" type="xs:string"\r
- minOccurs="0">\r
- <xs:annotation>\r
- <xs:documentation>Appréciation du professeur</xs:documentation>\r
- </xs:annotation>\r
- </xs:element>\r
- </xs:sequence>\r
- <xs:attribute name="code-service-notation"\r
- use="required">\r
- <xs:annotation>\r
- <xs:documentation>Référence vers le service de notation associé</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="TCle">\r
- <xs:maxLength value="30"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- <xs:attribute name="etat" default="S">\r
- <xs:annotation>\r
- <xs:documentation>Etat de l'enseignement : 'S':Enseignement suivi, 'D': Dispensé, 'N': Pas de notes</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="xs:string">\r
- <xs:enumeration value="N"/>\r
- <xs:enumeration value="D"/>\r
- <xs:enumeration value="S"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- <xs:attribute name="modalite-election"\r
- use="required">\r
- <xs:annotation>\r
- <xs:documentation>Type d'option: 'O:Obligatoire','F:Option facultative','N:Option facultative ou obligatoire','S:Option du tronc commun','I:Option inconnue'</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="xs:string">\r
- <xs:enumeration value="O"/>\r
- <xs:enumeration value="S"/>\r
- <xs:enumeration value="F"/>\r
- <xs:enumeration value="N"/>\r
- <xs:enumeration value="I"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- </xs:complexType>\r
- </xs:element>\r
- </xs:sequence>\r
- <xs:attribute name="trimestre" use="required">\r
- <xs:simpleType>\r
- <xs:restriction base="TTrimestre">\r
- <xs:minInclusive value="1"/>\r
- <xs:maxInclusive value="3"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- </xs:complexType>\r
- </xs:element>\r
- </xs:sequence>\r
- </xs:complexType>\r
- </xs:element>\r
- </xs:sequence>\r
- <xs:attribute name="annee" use="required">\r
- <xs:annotation>\r
- <xs:documentation>Année concernée</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="TAnnee"/>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- <xs:attribute name="code-classe" type="TCle"\r
- use="required">\r
- <xs:annotation>\r
- <xs:documentation>Référence au code de la classe de l'élève</xs:documentation>\r
- </xs:annotation>\r
- </xs:attribute>\r
- <xs:attribute name="code-mef" use="required">\r
- <xs:annotation>\r
- <xs:documentation>Code MEF (numérique ou libellé court) de l'élève durant l'année scolaire</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="xs:string">\r
- <xs:maxLength value="11"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- <xs:attribute name="libelle-mef" type="xs:string"\r
- use="required"/>\r
- </xs:complexType>\r
- </xs:element>\r
- </xs:sequence>\r
- </xs:complexType>\r
- </xs:element>\r
- </xs:sequence>\r
- <xs:attribute name="code" use="required">\r
- <xs:annotation>\r
- <xs:documentation>Identifiant unique d'un élève dans le fichier propre au logiciel</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="TCle"/>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- <xs:attribute name="ine" use="required">\r
- <xs:simpleType>\r
- <xs:restriction base="xs:string">\r
- <xs:pattern value="\d{10}[A-Z]"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- <xs:attribute name="nom" type="xs:string"\r
- use="required"/>\r
- <xs:attribute name="prenom" type="xs:string"\r
- use="required"/>\r
- <xs:attribute name="date-naissance" type="xs:date"\r
- use="required"/>\r
- </xs:complexType>\r
- </xs:element>\r
- </xs:sequence>\r
- </xs:complexType>\r
- </xs:element>\r
- </xs:sequence>\r
- <xs:attribute name="rne" use="required">\r
- <xs:annotation>\r
- <xs:documentation>N° UAI de l'établissement</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="xs:string">\r
- <xs:pattern value="\d{7}[A-Z]"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- <xs:attribute name="nom" use="required">\r
- <xs:simpleType>\r
- <xs:restriction base="xs:string"/>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- <xs:attribute name="cp" use="required">\r
- <xs:annotation>\r
- <xs:documentation>code postal</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="xs:string">\r
- <xs:pattern value="\d{5}"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- </xs:complexType>\r
- <xs:key name="classeKey">\r
- <xs:selector xpath="classes/classe"/>\r
- <xs:field xpath="@code"/>\r
- </xs:key>\r
- <xs:key name="service-notationKey">\r
- <xs:selector xpath="services-notations/service-notation"/>\r
- <xs:field xpath="@code"/>\r
- </xs:key>\r
- <xs:key name="matiereKey">\r
- <xs:selector xpath="matieres/matiere"/>\r
- <xs:field xpath="@code"/>\r
- </xs:key>\r
- <xs:key name="enseignantKey">\r
- <xs:selector xpath="enseignants/enseignant"/>\r
- <xs:field xpath="@code"/>\r
- </xs:key>\r
- <xs:key name="eleveKey">\r
- <xs:selector xpath="eleves/eleve"/>\r
- <xs:field xpath="@code"/>\r
- </xs:key>\r
- <xs:keyref name="classeKeyRef" refer="classeKey">\r
- <xs:selector xpath="eleves/eleve/annees-scolaires/annee-scolaire"/>\r
- <xs:field xpath="@code-classe"/>\r
- </xs:keyref>\r
- <xs:keyref name="service-notationKeyRef" refer="service-notationKey">\r
- <xs:selector\r
- xpath="eleves/eleve/annees-scolaires/annee-scolaire/bulletins/bulletin/notes"/>\r
- <xs:field xpath="@code-service-notation"/>\r
- </xs:keyref>\r
- <xs:keyref name="matiereKeyRef" refer="matiereKey">\r
- <xs:selector xpath="services-notations/service-notation"/>\r
- <xs:field xpath="@code-matiere"/>\r
- </xs:keyref>\r
- <xs:keyref name="enseignantKeyRef" refer="enseignantKey">\r
- <xs:selector xpath="services-notations/service-notation"/>\r
- <xs:field xpath="@code-enseignant"/>\r
- </xs:keyref>\r
- <xs:keyref name="classeEnseignantKeyRef" refer="enseignantKey">\r
- <xs:selector xpath="classes/classe"/>\r
- <xs:field xpath="@professeur-principal"/>\r
- </xs:keyref>\r
- </xs:element>\r
- </xs:sequence>\r
- <xs:attribute name="logiciel" use="required">\r
- <xs:annotation>\r
- <xs:documentation>identifie le logiciel qui a généré le fichier</xs:documentation>\r
- </xs:annotation>\r
- <xs:simpleType>\r
- <xs:restriction base="xs:string">\r
- <xs:enumeration value="notes"/>\r
- <xs:enumeration value="campus"/>\r
- <xs:enumeration value="telescol"/>\r
- <xs:enumeration value="notabene"/>\r
- <xs:enumeration value="pronotes"/>\r
- <xs:enumeration value="educhorus"/>\r
- <xs:enumeration value="charlemagne"/>\r
- <xs:enumeration value="scolawin"/>\r
- <xs:enumeration value="sconetnotes"/>\r
- <xs:enumeration value="gepi"/>\r
- <xs:enumeration value="garennes"/>\r
- <xs:enumeration value="visascol"/>\r
- <!-- BPER : Ajouté suite à la demade d'utiliser 'eliot-notes' comme nom du logiciel -->\r
- <xs:enumeration value="eliot-notes"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- </xs:attribute>\r
- <xs:attribute name="version" type="xs:string" use="required">\r
- <xs:annotation>\r
- <xs:documentation>Version du logiciel </xs:documentation>\r
- </xs:annotation>\r
- </xs:attribute>\r
- <xs:attribute name="date-creation" type="xs:date">\r
- <xs:annotation>\r
- <xs:documentation>Date de génération du fichier</xs:documentation>\r
- </xs:annotation>\r
- </xs:attribute>\r
- </xs:complexType>\r
- </xs:element>\r
- <xs:simpleType name="TNote">\r
- <xs:restriction base="xs:float">\r
- <xs:minInclusive value="0.0"/>\r
- <xs:maxInclusive value="20.0"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- <xs:simpleType name="TAnnee">\r
- <xs:restriction base="xs:positiveInteger">\r
- <!--MSAN 6.9.2012 verification d'intervalle enlevee - Mantis 21491 -->\r
- <!--<xs:minInclusive value="2005"/>-->\r
- <!--<xs:maxInclusive value="2012"/>-->\r
- </xs:restriction>\r
- </xs:simpleType>\r
- <xs:simpleType name="TTrimestre">\r
- <xs:restriction base="xs:positiveInteger">\r
- <xs:minInclusive value="1"/>\r
- <xs:maxInclusive value="3"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- <xs:simpleType name="TCle">\r
- <xs:restriction base="xs:string">\r
- <xs:pattern value="[A-Za-z0-9_-]*"/>\r
- <xs:maxLength value="30"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
- <xs:simpleType name="TStructure">\r
- <xs:restriction base="xs:string">\r
- <xs:maxLength value="8"/>\r
- </xs:restriction>\r
- </xs:simpleType>\r
-</xs:schema>\r
+++ /dev/null
-<!--
- ~ Copyright © FYLAB and the Conseil Régional d'Île-de-France, 2009
- ~ This file is part of L'Interface Libre et Interactive de l'Enseignement (Lilie).
- ~
- ~ Lilie is free software. You can redistribute it and/or modify since
- ~ you respect the terms of either (at least one of the both license) :
- ~ - under the terms of the GNU Affero General Public License as
- ~ published by the Free Software Foundation, either version 3 of the
- ~ License, or (at your option) any later version.
- ~ - the CeCILL-C as published by CeCILL-C; either version 1 of the
- ~ License, or any later version
- ~
- ~ There are special exceptions to the terms and conditions of the
- ~ licenses as they are applied to this software. View the full text of
- ~ the exception in file LICENSE.txt in the directory of this software
- ~ distribution.
- ~
- ~ Lilie is distributed in the hope that it will be useful,
- ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
- ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- ~ Licenses for more details.
- ~
- ~ You should have received a copy of the GNU General Public License
- ~ and the CeCILL-C along with Lilie. If not, see :
- ~ <http://www.gnu.org/licenses/> and
- ~ <http://www.cecill.info/licences.fr.html>.
- -->
-
-<html>
-<head></head>
-<body>
-<ul>
-<li><A href="testPostbacApplet.html">Export postbac</a></li>
-<li><A href="debug.html">Debug</a></li>
-
-</ul>
-</body>
-</html>
+
<!--
~ Copyright © FYLAB and the Conseil Régional d'Île-de-France, 2009
~ This file is part of L'Interface Libre et Interactive de l'Enseignement (Lilie).
~ <http://www.cecill.info/licences.fr.html>.
-->
-<HTML>
-<BODY>
-<applet height="400" width="600" archive="postbacApplet.jar" code="org.lilie.services.eliot.notes.applet.PostBacApplet.class" alt="Va mourrir.....">
-<param value="16" name="fontSize"/><param value="false" name="codebase_lookup"/>
-<param value="true" name="debug"/>
+<!-- saved from url=(0057)http://localhost:8080/eliot-notes/notanet/lanceGeneration -->
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <title>Export vers Notanet</title>
+</head>
+<body>
+<div style="margin-left:20px ; margin-top:20px; ">
+<applet width="650" height="600" archive="eliot-notes-export-applet-2.9.5-SNAPSHOT.jar" code="org.lilie.services.eliot.notes.applet.NotanetApplet.class" alt="Votre navigateur n'est pas configuré pour utiliser Java. Il n'est pas possible de poursuivre le traitement." codebase="http://localhost:8081/eliot-notes/applet">
+ <param name="fontSize" value="16">
+ <param name="codebase_lookup" value="false">
+ <param name="uajEtablissement" value="0000000A">
+ <param name="anneeEnCours" value="2013">
</applet>
-</BODY>
-</HTML>
+ </div>
+
+</body></html>
+++ /dev/null
-<HTML>
-
-<BODY>
-
-<applet width="650" height="600" archive="ExportApplet.jar"
- code="org.lilie.services.eliot.notes.applet.NotanetApplet.class"
- alt="Va mourrir.....">
-
-<param value="16" name="fontSize"/>
-<param value="false" name="codebase_lookup"/>
-<param value="2011" name ="anneeEnCours"/>
-<param value="0000000A" name="uajEtablissement"/>
-<param value="true" name="log"/>
-
-</applet>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<applet width="650" height="600"
- archive="ExportApplet.jar"
- code="org.lilie.services.eliot.notes.applet.PostBacApplet.class"
- alt="Va mourrir.....">
-<param value="16" name="fontSize"/>
-<param value="false" name="codebase_lookup"/>
-<param value="2011" name ="anneeEnCours"/>
-<param value="0000000A" name="uajEtablissement"/>
-<param value="true" name="log"/>
-</applet>
-</BODY>
-</HTML>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
+ <modelVersion>4.0.0</modelVersion>
- <parent>
- <artifactId>services</artifactId>
- <groupId>org.lilie.services</groupId>
- <version>2.9.5-SNAPSHOT</version>
- </parent>
+ <parent>
+ <artifactId>services</artifactId>
+ <groupId>org.lilie.services</groupId>
+ <version>2.9.5-SNAPSHOT</version>
+ </parent>
- <groupId>org.lilie.services.eliot</groupId>
- <artifactId>services-eliot</artifactId>
- <packaging>pom</packaging>
- <name>eliot-services-eliot [${version}]</name>
- <description>Services d'eliot</description>
+ <groupId>org.lilie.services.eliot</groupId>
+ <artifactId>services-eliot</artifactId>
+ <packaging>pom</packaging>
+ <name>eliot-services-eliot [${version}]</name>
+ <description>Services d'eliot</description>
- <modules>
- <module>eliot-textes</module>
- <module>eliot-messagerie</module>
- <module>eliot-docs</module>
- <module>eliot-agenda</module>
- <module>eliot-absences</module>
- <module>eliot-notes</module>
- <module>eliot-scolarite</module>
- <module>eliot-demon-scolarite</module>
- <module>eliot-demon-docs</module>
- <module>eliot-demon-emploi-du-temps</module>
- </modules>
+ <modules>
+ <module>eliot-textes</module>
+ <module>eliot-messagerie</module>
+ <module>eliot-docs</module>
+ <module>eliot-agenda</module>
+ <module>eliot-absences</module>
+ <module>eliot-notes</module>
+ <module>eliot-notes-applet</module>
+ <module>eliot-scolarite</module>
+ <module>eliot-demon-scolarite</module>
+ <module>eliot-demon-docs</module>
+ <module>eliot-demon-emploi-du-temps</module>
+ </modules>
- <dependencyManagement>
- <dependencies>
+ <dependencyManagement>
+ <dependencies>
- <dependency>
- <groupId>org.lilie.services.eliot</groupId>
- <artifactId>eliot-annuaire-commons</artifactId>
- <version>${pom.version}</version>
- </dependency>
+ <dependency>
+ <groupId>org.lilie.services.eliot</groupId>
+ <artifactId>eliot-annuaire-commons</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
- <dependency>
- <artifactId>eliot-docs-commons</artifactId>
- <groupId>org.lilie.services.eliot</groupId>
- <version>${pom.version}</version>
- </dependency>
+ <dependency>
+ <artifactId>eliot-docs-commons</artifactId>
+ <groupId>org.lilie.services.eliot</groupId>
+ <version>${pom.version}</version>
+ </dependency>
- <dependency>
- <artifactId>eliot-docs-securite-commons</artifactId>
- <groupId>org.lilie.services.eliot</groupId>
- <version>${pom.version}</version>
- </dependency>
+ <dependency>
+ <artifactId>eliot-docs-securite-commons</artifactId>
+ <groupId>org.lilie.services.eliot</groupId>
+ <version>${pom.version}</version>
+ </dependency>
- <dependency>
- <artifactId>eliot-scolarite-commons</artifactId>
- <groupId>org.lilie.services.eliot</groupId>
- <version>${pom.version}</version>
- </dependency>
+ <dependency>
+ <artifactId>eliot-scolarite-commons</artifactId>
+ <groupId>org.lilie.services.eliot</groupId>
+ <version>${pom.version}</version>
+ </dependency>
- <dependency>
- <groupId>org.lilie.services.eliot</groupId>
- <artifactId>grails-eliot-app-plugin</artifactId>
- <type>grails-plugin</type>
- <version>${pom.version}</version>
- </dependency>
+ <dependency>
+ <groupId>org.lilie.services.eliot</groupId>
+ <artifactId>grails-eliot-app-plugin</artifactId>
+ <type>grails-plugin</type>
+ <version>${pom.version}</version>
+ </dependency>
- <!-- jtra : dépendance utilisée en mode dev pour se référer directement aux sources d'eliot-app-plugin -->
- <dependency>
- <groupId>org.lilie.services.eliot</groupId>
- <artifactId>grails-eliot-app-plugin</artifactId>
- <type>pom</type>
- <version>${pom.version}</version>
- </dependency>
- </dependencies>
- </dependencyManagement>
+ <!-- jtra : dépendance utilisée en mode dev pour se référer directement aux sources d'eliot-app-plugin -->
+ <dependency>
+ <groupId>org.lilie.services.eliot</groupId>
+ <artifactId>grails-eliot-app-plugin</artifactId>
+ <type>pom</type>
+ <version>${pom.version}</version>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>org.spockframework</groupId>
- <artifactId>spock-core</artifactId>
- </dependency>
+ <dependencies>
+ <dependency>
+ <groupId>org.spockframework</groupId>
+ <artifactId>spock-core</artifactId>
+ </dependency>
- <dependency>
- <groupId>org.spockframework</groupId>
- <artifactId>spock-grails-support</artifactId>
- </dependency>
- </dependencies>
+ <dependency>
+ <groupId>org.spockframework</groupId>
+ <artifactId>spock-grails-support</artifactId>
+ </dependency>
+ </dependencies>
- <build>
- <plugins>
- <plugin>
- <groupId>org.codehaus.gmaven</groupId>
- <artifactId>gmaven-plugin</artifactId>
- <executions>
- <execution>
- <goals>
- <goal>generateStubs</goal>
- <goal>compile</goal>
- <goal>generateTestStubs</goal>
- <goal>testCompile</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.gmaven</groupId>
+ <artifactId>gmaven-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>generateStubs</goal>
+ <goal>compile</goal>
+ <goal>generateTestStubs</goal>
+ <goal>testCompile</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
</project>