This commit is contained in:
pablo rodriguez 2024-08-24 16:17:33 +02:00
parent cbec0bd63d
commit a60dd82755
136 changed files with 15650 additions and 633 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/images/

Binary file not shown.

File diff suppressed because it is too large Load Diff

16
bin/.gitignore vendored
View File

@ -1,16 +1,8 @@
/outils/ /outils/
/xml/ /xml/
/fenetres/
/calc/
/calcul/
/AnalyseCalc/
/nodeAC/
/resources/
/onLine/
/accueil_new_version.png
/accueill new version.svg
/baseEvaluation/ /baseEvaluation/
/calc/
/actions/ /actions/
/baseEtudiants/ /fenetres/
/baseListesEtudiants/ /resources/
/accueillChargeEvaluation.svg /analyseWriter/

Binary file not shown.

BIN
bin/acceuil td format 2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

113
bin/acceuil td format 2.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 1.6 MiB

143
bin/acceuil td format.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
bin/accueil_new_version.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

1699
bin/accueill new version.svg Normal file

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 91 KiB

View File

@ -0,0 +1,671 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
inkscape:export-ydpi="128"
inkscape:export-xdpi="128"
inkscape:export-filename="accueilChargeEvaluation.png"
sodipodi:docname="accueillChargeEvaluation.svg"
inkscape:version="1.3 (0e150ed6c4, 2023-07-21)"
id="svg8"
version="1.1"
viewBox="0 0 153.45833 19.422661"
height="73.408485"
width="580"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs2">
<linearGradient
id="k"
gradientTransform="matrix(7.99974,0,0,7.9977797,-873.96742,-7808.7674)"
gradientUnits="userSpaceOnUse"
x1="122.75008"
x2="111.74973"
xlink:href="#b"
y1="991.62115"
y2="977.11713" />
<linearGradient
id="b">
<stop
offset="0"
stop-color="#0369a3"
id="stop7" />
<stop
offset="1"
stop-color="#1c99e0"
id="stop9" />
</linearGradient>
<linearGradient
id="j"
gradientUnits="userSpaceOnUse"
x1="108.00134"
x2="20.001341"
y1="122"
y2="6">
<stop
offset="0"
stop-color="#e6e6e6"
id="stop35" />
<stop
offset="1"
stop-color="#fff"
id="stop37" />
</linearGradient>
<linearGradient
id="i"
gradientUnits="userSpaceOnUse"
x1="108.00134"
x2="20.001341"
xlink:href="#b"
y1="130"
y2="14" />
<linearGradient
id="h"
gradientTransform="matrix(4.4999,0,0,3.66665,-942.97741,2199.6564)"
gradientUnits="userSpaceOnUse"
x2="0"
y1="-581.63782"
y2="-578.63782">
<stop
offset="0"
stop-color="#63bbee"
id="stop29" />
<stop
offset="1"
stop-color="#aadcf7"
id="stop31" />
</linearGradient>
<linearGradient
id="g"
gradientTransform="matrix(-4.19983,0,0,3.9111,1540.9405,-4523.1636)"
gradientUnits="userSpaceOnUse"
x2="0"
xlink:href="#a"
y1="1173"
y2="1178" />
<linearGradient
id="a">
<stop
offset="0"
stop-color="#666"
id="stop2" />
<stop
offset="1"
stop-color="#333"
id="stop4" />
</linearGradient>
<linearGradient
id="f"
gradientTransform="matrix(4.19983,0,0,3.9111,-1392.9394,-4521.9436)"
gradientUnits="userSpaceOnUse"
x2="0"
xlink:href="#a"
y1="1173"
y2="1178" />
<linearGradient
id="e"
gradientTransform="matrix(1.19997,0,0,1.22222,-281.19161,858.5534)"
gradientUnits="userSpaceOnUse"
x2="0"
y1="-629.66907"
y2="-635.54944">
<stop
offset="0"
stop-color="#18a303"
id="stop22" />
<stop
offset="1"
stop-color="#106802"
id="stop24" />
</linearGradient>
<linearGradient
id="d"
gradientTransform="matrix(4.19983,0,0,3.9111,-1392.9394,-4517.0536)"
gradientUnits="userSpaceOnUse"
x2="0"
y1="1173"
y2="1178">
<stop
offset="0"
stop-color="#0369a3"
id="stop17" />
<stop
offset="1"
stop-color="#023f62"
id="stop19" />
</linearGradient>
<linearGradient
id="c"
gradientTransform="matrix(0,0.791084,-1.28,0,1499.6005,-282.0136)"
gradientUnits="userSpaceOnUse"
x1="445.69522"
x2="441.38797"
y1="1103.5776"
y2="1099.8198">
<stop
offset="0"
stop-color="#e9b913"
id="stop12" />
<stop
offset="1"
stop-color="#ff0"
id="stop14" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient1534"
id="linearGradient1536"
x1="-28.89456"
y1="79.43959"
x2="-28.613434"
y2="168.68048"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.09818993,0,0,0.09818993,82.930549,72.849121)" />
<linearGradient
inkscape:collect="always"
id="linearGradient1534">
<stop
style="stop-color:#faff12;stop-opacity:1;"
offset="0"
id="stop1530" />
<stop
style="stop-color:#493d00;stop-opacity:1;"
offset="1"
id="stop1532" />
</linearGradient>
<linearGradient
id="b-8"
gradientUnits="userSpaceOnUse"
x1="546"
x2="458"
xlink:href="#linearGradient5"
y1="121.99995"
y2="5.9999499" />
<linearGradient
id="linearGradient5">
<stop
offset="0"
stop-color="#18a303"
id="stop3"
style="stop-color:#064501;stop-opacity:1;" />
<stop
offset="1"
stop-color="#43c330"
id="stop5" />
</linearGradient>
<linearGradient
id="c-0"
gradientUnits="userSpaceOnUse"
x1="532.39862"
x2="497.16809"
y1="109.3368"
y2="83.932327">
<stop
offset="0"
stop-color="#727272"
id="stop8" />
<stop
offset="1"
stop-color="#9a9a9a"
id="stop10"
style="stop-color:#111111;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="d-8"
gradientTransform="matrix(0.948718,0,0,1.3,-288.38576,1491.7273)"
gradientUnits="userSpaceOnUse"
x1="829.36053"
x2="829.36053"
y1="-1064.7994"
y2="-1082.3413">
<stop
offset="0"
stop-color="#e4e4e4"
id="stop13" />
<stop
offset="1"
stop-color="#f9f9f9"
id="stop15" />
</linearGradient>
<linearGradient
id="e-7"
gradientTransform="matrix(0.714286,0,0,-1.55555,125.07024,-1571.1037)"
gradientUnits="userSpaceOnUse"
x1="525.63947"
x2="525.63947"
y1="-1078.6444"
y2="-1068.7872">
<stop
offset="0"
stop-color="#63bbee"
id="stop18" />
<stop
offset="1"
stop-color="#aadcf7"
id="stop20" />
</linearGradient>
<linearGradient
id="f-2"
gradientUnits="userSpaceOnUse"
x1="512.65552"
x2="512.65552"
y1="95.0298"
y2="85.998596">
<stop
offset="0"
stop-color="#a33e03"
id="stop23" />
<stop
offset="1"
stop-color="#c15414"
id="stop25" />
</linearGradient>
<linearGradient
id="g-8"
gradientTransform="matrix(0.714286,0,0,-2.11111,133.07024,-2170.0637)"
gradientUnits="userSpaceOnUse"
x1="525.63947"
x2="525.63947"
y1="-1078.6444"
y2="-1068.7872">
<stop
offset="0"
stop-color="#f09e6f"
id="stop28" />
<stop
offset="1"
stop-color="#f9cfb5"
id="stop30" />
</linearGradient>
<linearGradient
id="h-0"
gradientTransform="matrix(0.714286,0,0,-0.888884,141.07024,-852.34365)"
gradientUnits="userSpaceOnUse"
x1="525.63947"
x2="525.63947"
y1="-1078.6444"
y2="-1068.7872">
<stop
offset="0"
stop-color="#f5ce53"
id="stop33" />
<stop
offset="1"
stop-color="#fde9a9"
id="stop35-8" />
</linearGradient>
<linearGradient
id="i-0"
gradientTransform="matrix(0.714286,0,0,-1.33333,149.07024,-1331.5137)"
gradientUnits="userSpaceOnUse"
x1="525.63947"
x2="525.63947"
y1="-1078.6444"
y2="-1068.7872">
<stop
offset="0"
stop-color="#8ee780"
id="stop38" />
<stop
offset="1"
stop-color="#ccf4c6"
id="stop40" />
</linearGradient>
</defs>
<sodipodi:namedview
inkscape:window-maximized="1"
inkscape:window-y="-8"
inkscape:window-x="-8"
inkscape:window-height="1009"
inkscape:window-width="1920"
lock-margins="true"
units="px"
fit-margin-bottom="2"
fit-margin-right="2"
fit-margin-left="2"
fit-margin-top="2"
inkscape:guide-bbox="true"
showguides="true"
inkscape:snap-global="true"
showgrid="false"
inkscape:document-rotation="0"
inkscape:current-layer="layer1"
inkscape:document-units="mm"
inkscape:cy="36.731822"
inkscape:cx="290"
inkscape:zoom="2.2051724"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#ffffff"
id="base"
inkscape:pagecheckerboard="0"
inkscape:snap-midpoints="true"
inkscape:snap-intersection-paths="true"
inkscape:snap-smooth-nodes="true"
inkscape:object-paths="true"
inkscape:snap-page="true"
inkscape:showpageshadow="2"
inkscape:deskcolor="#d1d1d1">
<sodipodi:guide
id="guide1680"
orientation="0,-1"
position="13.656766,8.3376239"
inkscape:locked="false" />
</sodipodi:namedview>
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-32.182092,-47.463663)"
id="layer1"
inkscape:groupmode="layer"
inkscape:label="Calque 1">
<rect
style="fill:none;stroke:none;stroke-width:0.148;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke;stop-color:#000000"
id="rect4845"
width="66.024391"
height="16.182283"
x="31.987135"
y="46.825306" />
<text
xml:space="preserve"
style="font-size:7.05556px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;stroke-width:0.192132"
x="68.585175"
y="58.318031"
id="text835"><tspan
sodipodi:role="line"
id="tspan833"
x="68.585175"
y="58.318031"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;font-family:Pacifico;-inkscape-font-specification:Pacifico;stroke-width:0.192132">Base de données des évaluations</tspan></text>
<g
id="g1624"
transform="matrix(0.06830722,0,0,0.06834751,66.869843,21.962391)"
style="stroke-width:1.17108">
<g
transform="matrix(3.4017825,0,0,3.4017825,-95.08183,-189.09441)"
id="g884"
style="stroke-width:1.64491;stroke-miterlimit:4;stroke-dasharray:none">
<rect
style="fill:#00ff00;fill-rule:evenodd;stroke:#000000;stroke-width:1.64491;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="rect880"
width="38.433739"
height="35.890331"
x="37.868542"
y="83.64991"
ry="2.5985754"
rx="2.5985754" />
<path
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:6.57951;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"
d="M 71.512572,88.41099 60.11298,113.78783 43.185151,105.76978 55.59032,107.11953 Z"
id="path882"
sodipodi:nodetypes="ccccc" />
</g>
<path
style="fill:#ffaaaa;stroke:#ffaaaa;stroke-width:3.76712px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 62.421182,83.450948 53.247834,73.396095 c -3.269201,-0.03495 -6.108773,-0.739553 -11.152516,1.99147 -5.59384,4.292817 -8.281453,7.910846 -10.664708,11.458206 -2.148177,4.173122 -1.698608,7.124368 -1.216677,10.060391 l 9.74404,9.259068 z"
id="path1605"
sodipodi:nodetypes="ccccccc" />
<path
transform="matrix(1.315503,-0.76811157,0.73918702,1.366979,-196.76404,56.095615)"
id="path903"
d="m 142.61305,103.6418 9.43978,-0.5287 c 1.19321,12.05269 -3.29434,12.95393 3.79047,36.57198"
style="fill:none;stroke:#686868;stroke-width:4.57259;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
sodipodi:nodetypes="ccc" />
<g
id="g901"
style="stroke-width:1.40817;stroke-miterlimit:4;stroke-dasharray:none"
transform="matrix(1.3484552,-0.70866904,0.67747724,1.3985899,-192.46008,42.858566)">
<path
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.40817;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 165.60421,210.25518 -16.67346,-14.97786 19.49947,-6.49982 z"
id="path886" />
<path
style="fill:#ffcc00;stroke:#000000;stroke-width:1.40817;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 148.93075,195.27732 -29.6731,-89.58453 19.78207,-6.217222 29.3905,89.301932 z"
id="path888"
sodipodi:nodetypes="ccccc" />
<path
style="fill:#cccccc;stroke:#000000;stroke-width:1.40817;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 119.25765,105.69279 19.78206,-6.217223 5.18467,15.184943 -20.19347,6.3466 z"
id="path896"
sodipodi:nodetypes="ccccc" />
<path
style="fill:#000000;stroke:none;stroke-width:1.40817;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 165.60421,210.25518 1.82913,-13.90142 c -1.86721,0.41019 -1.24071,5.14178 -2.26609,5.73964 -0.90416,0.52717 -2.9307,-2.35026 -4.06786,-2.12548 -1.70014,0.33605 2.39156,6.64425 -1.96215,4.47795 z"
id="path1247"
sodipodi:nodetypes="ccsscc" />
</g>
</g>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88056px;line-height:1.2;font-family:Pacifico;-inkscape-font-specification:Pacifico;stroke-width:0.264583"
x="49.323338"
y="63.859547"
id="text2437"><tspan
sodipodi:role="line"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88056px;font-family:Pacifico;-inkscape-font-specification:Pacifico;stroke-width:0.264583"
x="49.323338"
y="63.859547"
id="tspan2649">Double cliquer sur une évaluation pour la charger en mémoire et l'utiliser. </tspan></text>
<g
id="g1"
transform="translate(-32.132254,-30.801938)">
<path
id="path482"
style="fill:url(#linearGradient1536);fill-opacity:1;stroke:#000000;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;stop-color:#000000"
d="m 78.401561,79.528246 c -0.290575,-5.6e-5 -0.580011,0.0058 -0.744515,0.01762 -1.674954,0.120793 -3.07793,0.607358 -3.741201,1.297741 -0.179854,0.187206 -0.319986,0.413789 -0.365966,0.591483 -0.03555,0.137396 -0.03729,0.382023 -0.0035,0.508426 0.141412,0.529309 0.718879,1.023291 1.607327,1.375264 0.709807,0.281203 1.431434,0.432901 2.522491,0.530574 0.300575,0.02691 1.203303,0.02313 1.532323,-0.0065 0.647419,-0.05839 1.113997,-0.131007 1.58568,-0.246663 0.23376,-0.05732 0.739083,-0.218504 0.876404,-0.279383 0.05218,-0.02313 0.12489,-0.0537 0.161085,-0.06796 0.143449,-0.05652 0.463101,-0.229588 0.635783,-0.343816 0.859819,-0.568754 1.062231,-1.288268 0.544669,-1.937548 -0.59406,-0.745246 -2.089784,-1.295748 -3.860001,-1.421072 -0.168493,-0.01193 -0.459981,-0.01807 -0.750556,-0.01812 z m -4.852688,3.03746 0.03876,1.765394 c 0.690578,2.364617 8.827042,2.381749 9.701349,0 v -1.765394 c -1.159872,2.476537 -8.648281,2.645781 -9.740109,0 z m 0.01712,2.313585 0.03876,1.765391 c 0.690578,2.364617 8.826539,2.38175 9.700845,0 v -1.765391 c -1.159871,2.476534 -8.647777,2.645781 -9.739605,0 z m -0.0589,2.104174 0.03876,1.76489 c 0.690578,2.364615 8.826539,2.381746 9.700846,0 v -1.76489 c -1.159872,2.476534 -8.647778,2.645781 -9.739607,0 z" />
<g
id="g2"
transform="matrix(0.07295087,0,0,0.07295087,79.638774,78.030901)"
style="stroke-width:13.7079">
<path
id="path2"
style="fill:#ffffff;stroke-width:13.7079"
d="m 21.865234,93.074219 c -2.649137,0.0052 -5.408577,0.995832 -7.062811,3.138694 -1.474513,1.692578 -1.869354,3.983317 -2.087738,6.147877 -0.200684,1.27858 -0.339875,2.62536 -0.630701,3.85405 -0.576018,0.41044 -1.00776,-0.45239 -1.513789,-0.65962 -2.3255267,-1.61965 -4.5235107,-3.53096 -7.2436664,-4.46342 -0.5463124,-0.33456 -1.1195005,-0.39616 -1.7208618,-0.17161 -1.17772603,0.26295 -2.42421629,0.33274 -3.4443113,1.04211 -2.2166431,1.32943 -3.954892,3.3028 -5.8063872,5.07952 -2.3890443,2.39763 -4.7782743,4.79507 -7.1674683,7.19256 2.4986,3.22171 5.050318,6.40541 7.318349,9.79736 0.3498265,0.38709 0.8687285,1.14204 0.1600917,1.38358 -2.7092567,0.50247 -5.5003487,0.74506 -8.1091247,1.66356 -0.891086,0.44931 -1.903659,0.77309 -2.716772,1.30353 -0.690605,1.51374 -1.709949,2.92399 -1.849517,4.62626 -0.375907,3.84385 -0.08154,7.71518 -0.08318,11.57009 0.02502,1.60786 0.05005,3.21572 0.07507,4.82358 4.273971,0.73002 8.548047,1.45908 12.8222655,2.1875 0.45525,0.53061 -0.039937,0.93945 -0.3580637,1.37488 -1.4367602,2.12158 -3.1681858,4.09429 -4.1674708,6.47376 -0.449725,1.36654 -0.586262,2.84443 -0.243087,4.25043 0.54406,2.78952 2.7915241,4.74222 4.6902669,6.68035 2.6374871,2.64548 5.2824577,5.28406 7.9221046,7.92762 3.6590253,-2.54087 7.3216855,-5.07648 10.9726565,-7.62891 0.725168,0.0766 0.518452,0.88836 0.680863,1.40829 0.646654,3.9808 1.326064,7.95599 1.992965,11.93351 5.015271,-0.0327 10.033864,0.07 15.046985,-0.0622 1.994629,-0.0652 3.981491,-0.77081 5.46426,-2.11512 0.690073,-0.73352 1.350026,-1.48777 1.723026,-2.43745 0.717926,-1.62351 0.823812,-3.44606 1.205807,-5.16932 0.211602,-1.13706 0.411632,-2.27619 0.612656,-3.41515 0.58334,-0.47487 1.02313,0.32557 1.526808,0.55841 3.300442,2.32603 6.61772,4.62822 9.924364,6.94549 3.657459,-3.71057 7.447199,-7.29448 10.990021,-11.1157 1.168955,-1.41244 2.033659,-3.04959 3.072479,-4.55813 -1.078139,-2.11771 -1.973414,-4.34479 -3.429827,-6.24383 -1.010497,-1.46205 -2.068137,-2.90515 -3.089704,-4.34991 0.110185,-0.72059 1.025963,-0.44356 1.547024,-0.65533 2.312577,-0.46136 4.680003,-0.73513 6.935951,-1.4265 0.988576,-0.44182 1.869678,-1.04144 2.645952,-1.79585 0.733359,-0.82661 1.359131,-1.77455 1.699697,-2.8382 0.817024,-2.51405 0.468341,-5.20359 0.556141,-7.80327 10e-7,-3.3276 0,-6.6552 0,-9.98281 -4.417246,-0.72219 -8.812435,-1.43123 -13.224609,-2.1582 -0.43359,-0.59868 0.399819,-1.05347 0.629571,-1.57681 2.307376,-3.27769 4.616698,-6.55429 6.925117,-9.83139 -3.517477,-3.47234 -6.942948,-7.04078 -10.530101,-10.44079 -1.753291,-1.61198 -4.144211,-2.65842 -6.550717,-2.36537 -2.678776,0.21589 -4.785074,2.08466 -6.894545,3.56399 -0.773903,0.56097 -1.539714,1.133 -2.309794,1.6992 -0.736981,-0.12491 -0.473393,-1.03104 -0.675357,-1.57368 -0.654246,-3.86799 -1.331991,-7.731963 -1.996518,-11.598198 -4.744695,-0.05165 -9.489958,-0.185991 -14.234375,-0.189453 z m 4.054688,39.468751 c 2.322448,0.0463 4.286975,1.93304 5.009518,4.0534 0.997363,2.72123 -0.398104,5.99878 -3.020059,7.21489 -1.756908,1.08652 -4.045771,0.88403 -5.753359,-0.1983 -1.368038,-0.88231 -2.534012,-2.29159 -2.822038,-3.92155 -0.114427,-1.49111 -0.145658,-3.11323 0.796786,-4.37285 1.024159,-1.6186 2.818868,-2.92873 4.810098,-2.78255 0.326401,-0.0173 0.652615,0.001 0.979054,0.007 z" />
<path
id="path331"
style="fill:#000000;stroke-width:13.7079"
d="m 22.24355,100.31754 c -2.16709,0.0446 -2.00947,0.47209 -2.28203,2.61948 -0.2513,1.9798 -1.1936,7.70028 -1.35909,8.25066 -0.0809,0.26891 -0.83739,0.67928 -1.9079,1.03508 -0.97551,0.32422 -2.60384,0.98702 -3.61838,1.47277 -1.01454,0.48576 -1.96936,0.88315 -2.12183,0.88315 -0.15247,0 -1.3462198,-0.7714 -2.6530698,-1.7141 -1.30684,-0.94269 -3.24438,-2.34168 -4.30568,-3.10886 -1.0613,-0.76718 -2.07333,-1.42707 -2.24896,-1.46657 -0.17562,-0.0395 -1.80331999,1.41609 -3.61683,3.23494 l -3.29696,3.30729 0.56792,0.73329 c 0.31256,0.4035 1.14168,1.56524 1.84227,2.58124 0.7006,1.016 1.89890001,2.73021 2.66288001,3.80958 0.76398,1.07939 1.38906999,2.10646 1.38906999,2.28255 0,0.17608 -0.35158999,0.97903 -0.78134999,1.78439 -0.42976,0.80536 -1.09858,2.42433 -1.48621,3.5972 l -0.70487001,2.13217 -1.35806,0.27491 c -0.74695,0.15119 -3.19222,0.56788 -5.43377,0.92605 -2.2415702,0.35818 -4.1789902,0.75491 -4.3056902,0.8816 -0.12666,0.1267 -0.19751,2.3005 -0.15761,4.83071 l 0.0724,4.60075 2.64584,0.45062 c 1.4552002,0.248 3.9456702,0.67265 5.5345402,0.94361 l 2.88923,0.49248 0.71365,2.10943 c 0.39261001,1.1601 1.10081001,2.86538 1.57355001,3.78943 0.96829999,1.89274 0.97306999,1.86325 -0.7214,4.17236 -2.30874001,3.14616 -4.19257001,5.81456 -4.52738001,6.41304 -0.34613,0.61871 -0.24371,0.75518 2.94349,3.9424 l 3.30161,3.30212 2.34869,-1.63142 c 1.29164,-0.89728 3.36021,-2.34014 4.59714,-3.20601 1.23693,-0.86587 2.3672298,-1.57457 2.5114698,-1.5751 0.14423,-4.4e-4 1.09674,0.40506 2.11667,0.90072 1.01994,0.49565 2.65213,1.16465 3.62769,1.48674 l 1.77405,0.58549 0.27337,1.35754 c 0.15045,0.74661 0.45686,2.48863 0.68058,3.87108 0.22373,1.38244 0.54177,3.31721 0.70693,4.29948 l 0.30024,1.78594 h 4.71496 c 4.67543,0 4.71629,-0.005 4.84311,-0.59532 0.26715,-1.24345 1.44797,-7.80139 1.65261,-9.17773 l 0.21395,-1.43815 2.51354,-0.95912 c 1.38244,-0.52732 3.01502,-1.21924 3.62769,-1.53789 1.44221,-0.7501 1.78728,-0.73107 2.94865,0.16226 0.53026,0.40788 2.55426,1.85255 4.4974,3.21014 l 3.53312,2.46807 3.2799,-3.27215 c 1.80401,-1.79968 3.27991,-3.35891 3.27991,-3.46491 0,-0.106 -1.33946,-2.05152 -2.97656,-4.32376 -1.63711,-2.27225 -3.12216,-4.33367 -3.30006,-4.5806 -0.26785,-0.37178 -0.17206,-0.74346 0.55604,-2.16214 0.48359,-0.94227 1.15858,-2.54651 1.50016,-3.56516 0.34157,-1.01864 0.71843,-1.98573 0.83768,-2.14922 0.11925,-0.16349 0.84001,-0.37699 1.60145,-0.47439 1.18359,-0.15143 7.28724,-1.23984 9.12348,-1.62678 0.5903,-0.12442 0.59531,-0.16437 0.59531,-4.84053 v -4.71496 l -1.78594,-0.29249 c -0.98227,-0.16097 -3.33375,-0.54499 -5.22552,-0.85317 -1.89178,-0.30817 -3.65962,-0.64619 -3.92844,-0.75086 -0.31247,-0.12167 -0.75606,-0.9627 -1.23042,-2.33164 -0.40809,-1.17771 -1.10834,-2.83661 -1.55598,-3.6866 -0.74109,-1.4072 -0.77885,-1.59333 -0.42116,-2.08308 0.21606,-0.29582 0.59844,-0.83561 0.85008,-1.19941 0.25164,-0.3638 1.57822,-2.25104 2.94762,-4.19354 l 2.48977,-3.53157 -3.30884,-3.30884 c -3.20998,-3.20997 -3.32908,-3.29856 -3.96565,-2.95072 -0.64496,0.35241 -1.88495,1.23869 -5.96346,4.26175 -1.12925,0.83702 -2.31155,1.5916 -2.62723,1.6769 -0.36565,0.0988 -1.27794,-0.18069 -2.51354,-0.76998 -1.06676,-0.50876 -2.71333,-1.20866 -3.65921,-1.55546 l -1.71979,-0.63045 -0.32247,-1.97352 c -0.17748,-1.08541 -0.60095,-3.58086 -0.94051,-5.5454 l -0.61701,-3.57187 -4.68654,-0.0724 c -1.34093,-0.0207 -2.32189,-0.0485 -3.04426,-0.0336 z m 2.97708,24.95403 c 1.42863,-0.003 2.85026,0.13423 3.75274,0.4129 3.93775,1.21587 6.99884,4.02981 8.56176,7.87032 1.99612,4.90503 0.84677,10.51015 -2.92903,14.28595 -1.73713,1.73712 -4.60482,3.28861 -6.84868,3.70468 h -5.1e-4 c -2.99403,0.55517 -5.47675,0.20617 -8.34213,-1.17202 -3.23597,-1.55644 -5.88353,-4.66933 -6.97477,-8.20002 -0.57672,-1.86612 -0.54611,-5.6998 0.0605,-7.56181 1.39405,-4.27939 4.77072,-7.65133 8.92401,-8.91108 0.93161,-0.28258 2.36752,-0.42587 3.79615,-0.42892 z" />
</g>
<path
sodipodi:type="star"
style="font-variation-settings:normal;vector-effect:none;fill:#d4aa00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.402246;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="path3"
inkscape:flatsided="false"
sodipodi:sides="5"
sodipodi:cx="-98.100731"
sodipodi:cy="-25.582302"
sodipodi:r1="8.0950813"
sodipodi:r2="4.0475407"
sodipodi:arg1="0.8593372"
sodipodi:arg2="1.4876557"
inkscape:rounded="0"
inkscape:randomized="0"
d="m -92.815132,-19.451007 -4.949471,-2.097735 -4.533997,2.888018 0.46559,-5.355463 -4.14775,-3.41964 5.23723,-1.212123 1.970544,-5.001471 2.771189,4.60633 5.365614,0.32856 -3.524536,4.058991 z"
transform="matrix(0.2029661,0.13505998,-0.19994791,0.17145193,93.169915,99.336272)" />
</g>
<g
id="g21"
inkscape:label="Logo"
transform="matrix(0.69606728,0,0,0.69606728,33.42347,16.811906)">
<g
transform="matrix(0.2200885,0,0,0.21482291,-70.978396,36.994978)"
id="g105">
<g
id="g2-0"
transform="matrix(1.0898443,0,0,1.0898443,-42.136972,-9.5233151)">
<path
d="m 469,53.998 v 2 8 2 8 2 8 2 8 2 8 2 h 60 v -2 -50 h -58 z"
fill="url(#b)"
id="path53"
style="fill:url(#b-8)" />
<g
fill="#92e285"
id="g61"
style="fill:#ffff00">
<path
d="m 470.99924,55.99855 h 17 v 8 h -17 z"
id="path55"
style="fill:#ffff00" />
<path
d="m 489.99748,55.99855 h 17.99994 v 8 h -17.99994 z"
id="path57"
style="fill:#ffff00" />
<path
d="m 509.99924,55.99855 h 17 v 8 h -17 z"
id="path59"
style="fill:#ffff00" />
</g>
<g
fill="#ccf4c6"
id="g81">
<path
d="m 470.99924,65.99855 h 17 v 8 h -17 z"
id="path63" />
<path
d="m 509.99924,65.99855 h 17 v 8 h -17 z"
id="path65" />
<path
d="m 489.99748,75.99855 h 17.99994 v 8 h -17.99994 z"
id="path67" />
<path
d="m 509.99924,75.99855 h 17 v 8 h -17 z"
id="path69" />
<path
d="m 470.99924,75.99855 h 17 v 8 h -17 z"
id="path71" />
<path
d="m 489.99748,85.99855 h 17.99994 v 8 h -17.99994 z"
id="path73" />
<path
d="m 470.99924,85.99855 h 17 v 8 h -17 z"
id="path75" />
<path
d="m 489.99748,95.99855 h 17.99994 v 8 h -17.99994 z"
id="path77" />
<path
d="m 470.99924,95.99855 h 17 v 8 h -17 z"
id="path79" />
<path
d="m 509.99924,86.085049 h 17 v 8 h -17 z"
id="path2-0" />
<path
d="m 509.87618,95.41506 h 17 v 8 h -17 z"
id="path3-4" />
</g>
<path
d="m 489.99748,65.99855 h 17.99994 v 8 h -17.99994 z"
fill="#ccf4c6"
id="path103" />
</g>
<g
id="g3"
transform="matrix(1.205185,0,0,1.4416716,-121.74764,-43.636504)">
<path
d="m 493.99924,81.99855 h 39 v 28 h -39 z"
fill="url(#c)"
id="path83"
style="fill:url(#c-0)" />
<path
d="m 495.99924,83.99855 h 35 v 24 h -35 z"
fill="url(#d)"
id="path85"
style="fill:url(#d-8)" />
<path
d="m 497.99924,90.99855 h 7 v 15.9999 h -7 z"
fill="#18a303"
id="path87" />
<path
d="m 498.99924,105.99855 h 5 v -14 h -5 z"
fill="url(#e)"
id="path89"
style="fill:url(#e-7)" />
<path
d="m 505.99924,85.99855 h 7 v 20.9999 h -7 z"
fill="url(#f)"
id="path91"
style="fill:url(#f-2)" />
<path
d="m 506.99924,105.99855 h 5 v -19 h -5 z"
fill="url(#g)"
id="path93"
style="fill:url(#g-8)" />
<path
d="m 513.99924,96.99855 h 7 v 9.9999 h -7 z"
fill="#c99c00"
id="path95" />
<path
d="m 514.99924,105.99855 h 5 v -8 h -5 z"
fill="url(#h)"
id="path97"
style="fill:url(#h-0)" />
<path
d="m 521.99924,92.99855 h 7 v 14 h -7 z"
fill="#43c330"
id="path99" />
<path
d="m 522.99924,105.99855 h 5 v -12 h -5 z"
fill="url(#i)"
id="path101"
style="fill:url(#i-0)" />
</g>
</g>
<g
id="g4"
transform="matrix(1.2868275,0,0,1.2868275,-10.940039,-14.868657)">
<path
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.148;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 44.803173,59.695644 42.192167,58.964933 43.943798,57.1318 Z"
id="path886-8" />
<path
style="fill:#ffcc00;stroke:#000000;stroke-width:0.148;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 42.192167,58.964933 -8.058075,-8.342879 1.797443,-1.817533 8.012263,8.327279 z"
id="path888-2"
sodipodi:nodetypes="ccccc" />
<path
style="fill:#cccccc;stroke:#000000;stroke-width:0.148;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 34.134092,50.622054 1.797442,-1.817533 1.382596,1.405365 -1.834819,1.855341 z"
id="path896-5"
sodipodi:nodetypes="ccccc" />
<path
style="fill:#000000;stroke:none;stroke-width:0.148;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 44.803173,59.695644 -0.556231,-1.659447 c -0.179234,0.151786 0.144863,0.645778 0.06664,0.77083 -0.06898,0.110267 -0.443628,-0.09683 -0.554142,-0.0072 -0.165227,0.134015 0.618232,0.607951 0.03103,0.612398 z"
id="path1247-2"
sodipodi:nodetypes="ccsscc" />
<g
id="g3176"
transform="translate(-28.851241,18.415485)"
inkscape:export-filename="C:\Users\pabr6\eclipse-workspace\analyseCalc\images\accueilanalysecalc.png"
inkscape:export-xdpi="128"
inkscape:export-ydpi="128">
<path
style="fill:#ffaaaa;stroke:#ffaaaa;stroke-width:0.257397px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 64.782774,30.389036 -0.734025,-0.804561 c -0.261592,-0.0028 -0.488807,-0.05918 -0.892393,0.159352 -0.447603,0.343499 -0.662658,0.633003 -0.85336,0.916853 -0.171891,0.333921 -0.135917,0.570072 -0.09736,0.805004 l 0.779691,0.740884 z"
id="path1605-0"
sodipodi:nodetypes="ccccccc" />
<path
id="path903-4"
d="m 65.185528,30.771366 0.962387,-0.638019 c 0.838489,1.245007 0.419423,1.619401 2.562142,3.767338"
style="fill:none;stroke:#686868;stroke-width:0.480582;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
sodipodi:nodetypes="ccc" />
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

BIN
bin/bye-bye.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

7710
bin/bye-bye.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 912 B

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 554 B

After

Width:  |  Height:  |  Size: 901 B

View File

@ -1,20 +1,21 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project default="create_run_jar" name="Create Runnable Jar for Project analyseCalc"> <project default="create_run_jar" name="Create Runnable Jar for Project analyseWriter">
<!--this file was created by Eclipse Runnable JAR Export Wizard--> <!--this file was created by Eclipse Runnable JAR Export Wizard-->
<!--ANT 1.7 is required --> <!--ANT 1.7 is required -->
<!--define folder properties--> <!--define folder properties-->
<property name="dir.buildfile" value="."/> <property name="dir.buildfile" value="."/>
<property name="dir.workspace" value="C:/Users/pabr6/eclipse-workspace"/> <property name="dir.workspace" value="C:/Users/pabr6/eclipse-workspace"/>
<property name="dir.jarfile" value="${dir.buildfile}"/> <property name="dir.jarfile" value="C:/Users/pabr6/git/analyseWriter/MEPTL"/>
<target name="create_run_jar"> <target name="create_run_jar">
<jar destfile="${dir.jarfile}/analyseCalc.jar" filesetmanifest="mergewithoutmain"> <jar destfile="${dir.jarfile}/analyseCalc.jar" filesetmanifest="mergewithoutmain">
<manifest> <manifest>
<attribute name="Main-Class" value="fenetres.mainApp"/> <attribute name="Main-Class" value="analyseWriter.fenetres.mainApp"/>
<attribute name="Class-Path" value="."/> <attribute name="Class-Path" value="."/>
</manifest> </manifest>
<fileset dir="${dir.jarfile}/bin"/> <fileset dir="${dir.jarfile}/bin"/>
<zipfileset excludes="META-INF/*.SF" src="${dir.workspace}/zip4j-1.2.7.jar"/> <zipfileset excludes="META-INF/*.SF" src="${dir.jarfile}/libs/cXML.jar"/>
<zipfileset excludes="META-INF/*.SF" src="${dir.jarfile}/miglayout15-swing.jar"/> <zipfileset excludes="META-INF/*.SF" src="${dir.jarfile}/libs/miglayout15-swing.jar"/>
<zipfileset excludes="META-INF/*.SF" src="${dir.jarfile}/libs/zip4j-1.2.7.jar"/>
</jar> </jar>
</target> </target>
</project> </project>

View File

@ -2619,124 +2619,6 @@ public class Classeur2 {
} // ligne } // ligne
} // feuille } // feuille
// /**
// * Ecriture des objets dans un fichier sans utiliser le JSON
// * @param patch
// * @throws IOException
// */
// public void ecritureClasseur(String patch) throws IOException {
// System.getProperty("file.encoding","UTF-8");
//
// Path outputFilePath = Paths.get(patch + "/codeFichier.xml");
// BufferedWriter fichier = Files.newBufferedWriter(outputFilePath, StandardCharsets.UTF_8);
//
// fichier.write("<!-- Pablo Rodriguez mai 2020 symbôles : ‽ ↕ ↑ ¦ → ⌂ -->\r\r");
// fichier.write("<!-- ‽5 doit se placer à la fin correspond à 5 points -->\r\r");
// fichier.write("<!-- ⌂ ne prend pas en compte les $ -->\r\r");
// fichier.write("<!-- ¬ ne prend pas en compte les espaces -->\r\r");
// fichier.write("<!-- ⌂¬ ou ¬⌂ ne prend pas en compte les dollars et les espaces -->\r\r");
// fichier.write("<!-- ¦ OU sans nettoyer le texte -->\r\r");
// fichier.write("<!-- ↕ OU avec nettoyage du texte (caractères spéciaux et CASE) -->\r\r");
// fichier.write("<!-- ↑ OU avec nettoyage numérique (1 à 9 et la CASE) -->\r\r");
// fichier.write("<!-- → étendu entre deux bornes numérique avec ou sans unité -->\r\r");
//
// fichier.newLine();
//
// fichier.write("<classeur ");
// fichier.write("metaSujet=\"" + calc.commandes.analyse_metaSujet + "\" ");
// fichier.write("metaSujetContent=\"" + metaSujetContent + "\" ");
// fichier.write("NbreFeuille=\"" + NbreFeuille + "\" progression=\"" + calc.commandes.analyse_progression + "\" analyse=\"" + analyse +"\" bareme=\"" + calc.commandes.analyse_bareme + "\" nbmodification=\"1000\" nbcopier=\"100\" verification=\"true\">\r");
// fichier.newLine();
// fichier.write("<communication link=\"\" linktitle=\"\" title=\"\"></communication>");
// fichier.newLine();
//
// // nommage des cellules
// for (Entry<String, String> j : nommageCellules.entrySet()) {
// fichier.write("<nommage name=\"" + j.getKey() + "\" cells=\"" + j.getValue() +"\"/>");
// fichier.newLine();
// }
//
//
// //feuille
// for (Entry<Integer, feuille> k : Feuilles.entrySet()) {
// fichier.newLine();
// fichier.write("<feuille nomFeuille=\"" + k.getValue().getNomFeuille() + "\" styleLigne=\"" + k.getValue().getStyleLigne() + "\" evaluer=\"" + k.getValue().getEvaluer() +"\" Poids=\"" + k.getValue().getPoids() + "\">\r");
// fichier.newLine();
// fichier.write("\t<communication></communication>\r");
// fichier.newLine();
//
// for (Entry<String, String> j : k.getValue().getNommageCellulesFeuille().entrySet()) {
// fichier.write("\t<nommagecellulesfeuille name=\"" + j.getKey() + "\" cells=\"" + j.getValue() +"\"/>");
// fichier.newLine();
// }
//
// //colonne
// for (Entry<Integer, colonne> k1 : k.getValue().getColonnes().entrySet()) {
// fichier.newLine();
// fichier.write("\t<colonne RefColonne=\"" + k1.getValue().getRefColonne() +"\" RefColDansClasseur=\"" + k1.getValue().getRefColDansClasseur() + "\"");
// for (Entry<String, String> k2 : k1.getValue().getPropertiesColumn().entrySet()) {
// fichier.write(" " + k2.getKey() + "=\"" + k2.getValue() + "\"" ) ;
// }
// fichier.write("></colonne>\r");
// }
//
// //ligne
// for (Entry<Integer, ligne> k1 : k.getValue().getLignes().entrySet()) {
// fichier.newLine();
// fichier.write("\t<ligne RefLigne=\"" + k1.getValue().getRefLigne() + "\" evaluer=\"" + k1.getValue().getEvaluer() +"\" saut=\""+ k1.getValue().isSaut() + "\" styletitre=\"H1\">\r");
// fichier.newLine();
// fichier.write("\t\t<communication>" + k1.getValue().getCommunication() +"</communication>\r");
// fichier.newLine();
// fichier.write("\t\t<propertiesRow");
// for (Entry<String, String> k2 : k1.getValue().getPropertiesRow().entrySet()) {
// fichier.write(" " + k2.getKey() + "=\"" + k2.getValue() + "\"") ;
// }
// fichier.write("></propertiesRow>\r");
//
// for (Entry<Integer, cellule> k2 : k1.getValue().getCellules().entrySet()) {
// fichier.newLine();
// fichier.write("\t\t<cellule evaluer=\""+ k2.getValue().getEvaluer() +"\" saut=\"false\" " + "styletitre=\"H1\" titre=\"\" menu=\"false\" RefLigne=\"" + k2.getValue().getRefLigne() + "\" RefLigDansClasseur=\""+ k2.getValue().getRefLigDansClasseur()
// + "\" RefColonne=\"" + k2.getValue().getRefColonne() + "\" RefColDansClasseur=\"" + k2.getValue().getRefColDansClasseur() + "\">\r" );
//
// fichier.write("\t\t\t<propertiesCell");
// for (Entry<String, String> k3 : k2.getValue().getPropertiesCell().entrySet()) {
// fichier.write(" " + k3.getKey() + "=\"" + k3.getValue() + "\"" ) ;
// }
// fichier.write("></propertiesCell>\r");
//
// fichier.newLine();
// fichier.write("\t\t\t<validation evaluer=\""+ k2.getValue().getVal().isEvaluer() + "\" saut=\"" + k2.getValue().getVal().isSaut() + "\" empty=\""+ k2.getValue().getVal().isEmpty() + "\" styletitre=\"H1\"");
// for (Entry<String, String> k3 : k2.getValue().getVal().getPropertiesValidation().entrySet()) {
// fichier.write(" " + k3.getKey() + "=\"" + k3.getValue() + "\"" ) ;
// }
// fichier.write("></validation>\r");
//
// fichier.newLine();
// if(k2.getValue().getGraph()!=null) {
// ecritureGraphique(fichier,k2.getValue().getGraph(),"\t\t");
// }
//
// fichier.write("\t\t</cellule>\r");
//
// }
//
// fichier.write("\t</ligne>\r");
// }
//
// //graphic
//
// for (Entry<Integer, graphic> k1 : k.getValue().getGraphics().entrySet()) {
// fichier.newLine();
// ecritureGraphique(fichier,k1.getValue(),"");
// }
//
//
// fichier.write("</feuille>\r");
// }
//
// fichier.write("</classeur>\r");
// fichier.close();
// }
public node convertClasseurToNode(ecritureFileXML.typeFichier type) throws IOException { public node convertClasseurToNode(ecritureFileXML.typeFichier type) throws IOException {

View File

@ -1,11 +1,8 @@
package actions; package actions;
import java.awt.Desktop;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.InputEvent; import java.awt.event.InputEvent;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
import java.io.File;
import java.io.IOException;
import javax.swing.AbstractAction; import javax.swing.AbstractAction;
import javax.swing.Action; import javax.swing.Action;
@ -29,12 +26,8 @@ public class actDocumentation extends AbstractAction{
} }
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
Desktop d = Desktop.getDesktop();
try {
d.open(new File(create.class.getResource("/resources/documentation.pdf").getPath()));
} catch (IOException e1) {
e1.printStackTrace();
}
} }
} }

View File

@ -85,7 +85,7 @@ public class actExit extends AbstractAction {
// Actions des boutons // Actions des boutons
buttonYes.addActionListener((ActionEvent evt) -> { buttonYes.addActionListener((ActionEvent evt) -> {
baseDonneesListesEtudiants.ferme(false); // baseDonneesListesEtudiants.ferme(false);
baseDonneesEvaluations.ferme(); baseDonneesEvaluations.ferme();
create.fermeCreate(); create.fermeCreate();
evaluate.ferme(); evaluate.ferme();
@ -151,7 +151,7 @@ public class actExit extends AbstractAction {
// Actions des boutons // Actions des boutons
buttonYes.addActionListener((ActionEvent evt) -> { buttonYes.addActionListener((ActionEvent evt) -> {
baseDonneesListesEtudiants.ferme(false); // baseDonneesListesEtudiants.ferme(false);
baseDonneesEvaluations.ferme(); baseDonneesEvaluations.ferme();
create.fermeCreate(); create.fermeCreate();
evaluate.ferme(); evaluate.ferme();

View File

@ -0,0 +1,33 @@
package actions;
import java.awt.event.ActionEvent;
import java.io.IOException;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.ImageIcon;
public class actLicence extends AbstractAction{
/**
*
*/
private static final long serialVersionUID = 1L;
{
putValue( Action.NAME, "Licence" );
putValue( Action.SMALL_ICON, new ImageIcon( getClass().getResource("/resources/GPLv3mini.png") ) );
putValue( Action.SHORT_DESCRIPTION, "Affiche la page de la licence" );
}
@Override
public void actionPerformed(ActionEvent e) {
try {
String url = "https://www.gnu.org/licenses/gpl-3.0.html";
java.awt.Desktop.getDesktop().browse(java.net.URI.create(url));
} catch (IOException e1) {
e1.printStackTrace();
}
}
}

View File

@ -59,7 +59,8 @@ public class actNewFichierAnalyse extends AbstractAction{
commandes.path = chooser.getCurrentDirectory().getAbsolutePath(); commandes.path = chooser.getCurrentDirectory().getAbsolutePath();
commandes.PathFilenameAnalysis = chooser.getCurrentDirectory().getAbsolutePath(); commandes.PathFilenameAnalysis = chooser.getCurrentDirectory().getAbsolutePath();
String cheminVersFichier = chooser.getSelectedFile().getAbsolutePath(); String cheminVersFichier = chooser.getSelectedFile().getAbsolutePath();
commandes.nameSujet = chooser.getSelectedFile().getName(); String nameFile = chooser.getSelectedFile().getName();
commandes.nameSujet = nameFile.substring(0,nameFile.lastIndexOf(".")) + ".xml";
try { try {
@ -68,31 +69,30 @@ public class actNewFichierAnalyse extends AbstractAction{
new transformeXLMtoNode(LecturesDossiers.getEC().getListeContentTableur().get(0), false, null); new transformeXLMtoNode(LecturesDossiers.getEC().getListeContentTableur().get(0), false, null);
commandes.sujet = transformeXLMtoNode.getNodeRoot(); commandes.sujet = transformeXLMtoNode.getNodeRoot();
commandes.sujet.getAttributs().put("analysis_filename",commandes.nameSujet);
commandes.sujet.getAttributs().put("analysis_filename","sujet.xml");
commandes.sujet.removeAllEnfantWithThisName("text:change-start"); commandes.sujet.removeAllEnfantWithThisName("text:change-start");
commandes.sujet.removeAllEnfantWithThisName("text:change-end"); commandes.sujet.removeAllEnfantWithThisName("text:change-end");
commandes.sujet.removeAllEnfantWithThisName("text:tracked-changes"); commandes.sujet.removeAllEnfantWithThisName("text:tracked-changes");
commandes.sujet.removeAllEnfantWithThisName("text:change"); commandes.sujet.removeAllEnfantWithThisName("text:change");
commandes.sujet.removeAllEnfantWithThisName("office:document-content");
ecritureFileXML.write(commandes.sujet, "sujet.xml"); ecritureFileXML.write(commandes.sujet, "sujet.xml");
node LesStyles = commandes.sujet.retourneFirstEnfant("office:document-styles");
Classeur2 ClasseurAnalyse = new Classeur2(commandes.sujet,0,ecritureFileXML.typeFichier.fichier_analyse); Classeur2 ClasseurAnalyse = new Classeur2(commandes.sujet,0,ecritureFileXML.typeFichier.fichier_analyse);
commandes.sujet = ClasseurAnalyse.convertClasseurToNode(ecritureFileXML.typeFichier.fichier_analyse); commandes.sujet = ClasseurAnalyse.convertClasseurToNode(ecritureFileXML.typeFichier.fichier_analyse);
ecritureFileXML.write(commandes.sujet, "sujet1.xml");
commandes.sujet.removeAllEnfantWithThisName("office:document-content");
commandes.sujet.removeAllEnfantWithThisName("office:document-meta");
commandes.sujet.retourneFirstEnfant("classeur").getEnfants().add(LesStyles);
ecritureFileXML.write(commandes.sujet, "sujet2.xml"); ecritureFileXML.write(commandes.sujet, "sujet2.xml");
// Ecriture.ecritureNodeEnXML(commandes.sujet, "sujet2", commandes.path, Ecriture.typeFichier.fichier_etudiant);
// new verificationFichierAnalyse(); // new verificationFichierAnalyse();
if(commandes.fichierAnalyseValide) { if(commandes.fichierAnalyseValide) {
// commandes.sujetSauvegarde = commandes.sujet.clone();
// fenetres.create.getTree().setVisible(true);
// fenetres.create.constructionTree();
// fenetres.create.getTextNodeSelect().afficheChargementFichierAnalyse();
commandes.sujetSauvegarde = commandes.sujet.clone(); commandes.sujetSauvegarde = commandes.sujet.clone();

View File

@ -7,8 +7,9 @@ import javax.swing.Action;
import javax.swing.ImageIcon; import javax.swing.ImageIcon;
import baseListesEtudiants.recupeNodeBaseListesEtudiants; import baseListesEtudiants.recupeNodeBaseListesEtudiants;
import calc.commandes;
import fenetres.baseDonneesListesEtudiants;
import fenetres.create; import fenetres.create;
import calc.*;
public class actOpenBaseListesEtudiants extends AbstractAction{ public class actOpenBaseListesEtudiants extends AbstractAction{

View File

@ -0,0 +1,52 @@
package analyseWriter.baseListesEtudiants;
import java.io.BufferedWriter;
import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.text.ParseException;
import java.util.Date;
import calc.commandes;
/**
* Création de la base de données des listes des étudiants.<br>
* Et/Ou vérification de la présence de de la base de données.
* @author pabr6
*
*/
public class CreerBaseParDefautListesEtudiants {
public Boolean isExist() throws IOException {
File file = null;
String directoryName = Paths.get("").toAbsolutePath().toString();
if(commandes.os.contains("Win")) {
file = new File(directoryName + "\\" + "base_listes_etudiants.xml");
}else {
file = new File(directoryName + "/" + "base_listes_etudiants.xml");
}
if(!file.exists()) {
Date aujourdhui = new Date();
Path outputFilePath = file.toPath();
BufferedWriter fichier = Files.newBufferedWriter(outputFilePath, StandardCharsets.UTF_8);
try {
fichier.write("<ListesEtudiants date=\""+ calcul.formatDateWriter.DateLibreOffice(aujourdhui) +"\" version=\""+commandes.version +"\"></ListesEtudiants>");
} catch (IOException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
fichier.close();
return false;
}
return new recupeNodeBaseListesEtudiants().isHasliste();
}
}

View File

@ -0,0 +1,13 @@
package analyseWriter.baseListesEtudiants;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class EmailValidator {
public static boolean isValidEmail(String email) {
String emailPattern = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$";
Pattern pattern = Pattern.compile(emailPattern);
Matcher matcher = pattern.matcher(email);
return matcher.matches();
}
}

View File

@ -0,0 +1,32 @@
package analyseWriter.baseListesEtudiants;
import calc.commandes;
public class chargeListeEtudiants {
public static void chargeDansleNodeCSVListeEtudiants(Integer index) {
if(commandes.listesEtudiants!=null) {
if(commandes.listesEtudiants.getEnfants().size()>index && index >= 0 ) {
commandes.nodeCSV = commandes.listesEtudiants.getEnfants().get(index);
commandes.fourniCSV=true;
}else {
commandes.nodeCSV = null;
commandes.fourniCSV=false;
}
}
}
public static void chargeDansLeNodeCSVListeEtudiants(String nameListe) {
if(commandes.listesEtudiants!=null) {
if(commandes.listesEtudiants.getEnfants().size()>0) {
commandes.nodeCSV = commandes.listesEtudiants.retourneFirstEnfant("fileCSV", "nameListStudent", nameListe);
if(commandes.nodeCSV!=null) {
commandes.fourniCSV=true;
}else {
commandes.fourniCSV=true;
}
}
}
}
}

View File

@ -0,0 +1,204 @@
package analyseWriter.baseListesEtudiants;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.text.ParseException;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import calc.commandes;
import xml.node;
public class ecritureBaseListesEtudiants {
private static boolean erreur = false;
public ecritureBaseListesEtudiants(node csv) {
erreur = false;
if(csv==null) {
JFrame frame = new JFrame();
JLabel texte = new JLabel("<html><h1>L'écriture n'a pas réussi</h1>"
+ "<p>Le fichier CSV est null.</p></html>");
JOptionPane.showMessageDialog(frame, texte);
erreur=true;
return;
}
if(csv.isVide()) {
JFrame frame = new JFrame();
JLabel texte = new JLabel("<html><h1>L'écriture n'a pas réussi</h1>"
+ "<p>Le fichier CSV est vide.</p></html>");
JOptionPane.showMessageDialog(frame, texte);
erreur=true;
return ;
}
File file = null;
String directoryName = Paths.get("").toAbsolutePath().toString();
if(commandes.os.contains("Win")) {
file = new File(directoryName + "\\" + "base_listes_etudiants.xml");
}else {
file = new File(directoryName + "/" + "base_listes_etudiants.xml");
}
if(!Files.isWritable(file.toPath())) {
JFrame frame = new JFrame();
JLabel texte = new JLabel("<html><h1>L'écriture n'a pas réussi</h1>"
+ "<p>"+ file.getAbsolutePath() +"</p><p>Vous devez avoir des droits pour écrire dans ce dossier.</p></html>");
JOptionPane.showMessageDialog(frame, texte);
erreur=true;
return;
}
String debut="";
String fin="";
String XMLBase="";
if(file!=null) {
//Lecture de la base de données
BufferedReader br;
try {
br = new BufferedReader(
new InputStreamReader(
new FileInputStream(file.getAbsoluteFile()), "UTF-8"));
String line;
StringBuilder targetString = new StringBuilder();
while ((line = br.readLine()) != null) {
targetString.append(line);
}
String baseToString = targetString.toString().replace("\t","").replace("\r", "").replace("\n", "").replaceAll(">/{1,}<","><");
Pattern p = Pattern.compile("<\\bfileCSV\\b.{1,100}\\bnameListStudent\\b=\\\""+ csv.getAttributs().get("nameListStudent") +"\\\".*?<\\/\\bfileCSV\\b>");
Matcher m = p.matcher(baseToString);
if(m.find()) {
//Supprime le node fileCSV pour le remplacer par le nouveau.
debut = baseToString.substring(0,m.start());
fin = baseToString.substring(m.end());
String codeXMLEvaluation = csv.ecritureXML().toString(); //Run.ecritureNode(csv, 0).toString().replace("\t","").replace("\r", "").replace("\n", "").replaceAll(">/{1,}<","><");
XMLBase = debut + codeXMLEvaluation + fin;
}else {
//Ajoute une nouvelle liste (fileCSV) au début de la base
p = Pattern.compile("<ListesEtudiants.*?>");
m = p.matcher(baseToString);
if(m.find()) {
debut = baseToString.substring(0,m.end());
fin = baseToString.substring(m.end());
String codeXMLEvaluation = csv.ecritureXML().toString();//Run.ecritureNode(csv, 0).toString().replace("\t","").replace("\r", "").replace("\n", "").replaceAll(">/{1,}<","><");
XMLBase = debut + codeXMLEvaluation + fin;
}
}
try {
// écriture du node
Path outputFilePath = file.toPath();
BufferedWriter fichier = Files.newBufferedWriter(outputFilePath, StandardCharsets.UTF_8);
fichier.write(XMLBase);
fichier.close();
JFrame frame = new JFrame();
JLabel texte = new JLabel("<html><h1>Enregistrement réussi</h1><p>La liste <b>"+csv.getAttributs().get("nameListStudent")+ "</b> a été enregistrée dans la base de données.</p>"
+ "<p>"+ file.getAbsolutePath() +"</p></html>");
JOptionPane.showMessageDialog(frame, texte);
} catch (IOException e) {
JFrame frame = new JFrame();
JLabel texte = new JLabel("<html><h1>L'écriture n'a pas réussi</h1>"
+ "<p>"+e.getMessage()+"</p></html>");
JOptionPane.showMessageDialog(frame, texte);
erreur=true;
e.printStackTrace();
}
}catch (Exception e) {
}
}
}
/**
* Mise à jour de la base liste des étudiants.
*/
public static void majBaseListesEtudiant() {
erreur=false;
if(commandes.listesEtudiants==null) {
JFrame frame = new JFrame();
JLabel texte = new JLabel("<html><h1>La liste des étudiant est nulle.</h1>"
+ "</html>");
JOptionPane.showMessageDialog(frame, texte);
erreur=true;
return;
}
File file = null;
String directoryName = Paths.get("").toAbsolutePath().toString();
if(commandes.os.contains("Win")) {
file = new File(directoryName + "\\" + "base_listes_etudiants.xml");
}else {
file = new File(directoryName + "/" + "base_listes_etudiants.xml");
}
if(!Files.isWritable(file.toPath())) {
JFrame frame = new JFrame();
JLabel texte = new JLabel("<html><h1>L'écriture n'a pas réussi</h1>"
+ "<p>"+ file.getAbsolutePath() +"</p><p>Vous devez avoir des droits pour écrire dans ce dossier.</p></html>");
JOptionPane.showMessageDialog(frame, texte);
erreur=true;
return;
}
// écriture du node
try {
Path outputFilePath = file.toPath();
BufferedWriter fichier = Files.newBufferedWriter(outputFilePath, StandardCharsets.UTF_8);
Date aujourdhui = new Date();
commandes.listesEtudiants.getAttributs().put("date", calcul.formatDateWriter.DateLibreOffice(aujourdhui));
commandes.listesEtudiants.getAttributs().put("version",commandes.version);
fichier.write(commandes.listesEtudiants.ecritureXML().toString());
fichier.close();
} catch (IOException | ParseException e) {
// TODO Auto-generated catch block
JFrame frame = new JFrame();
JLabel texte = new JLabel("<html><h1>L'écriture n'a pas réussi</h1>"
+ "<p>"+e.getMessage()+"</p></html>");
JOptionPane.showMessageDialog(frame, texte);
erreur=true;
e.printStackTrace();
}
}
public static boolean isErreur() {
return erreur;
}
}

View File

@ -0,0 +1,13 @@
package analyseWriter.baseListesEtudiants;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class idValidator {
public static boolean isValidId(String id) {
String idPattern = "^[0-9]{8}$";
Pattern pattern = Pattern.compile(idPattern);
Matcher matcher = pattern.matcher(id);
return matcher.matches();
}
}

View File

@ -0,0 +1,67 @@
package analyseWriter.baseListesEtudiants;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javax.swing.table.AbstractTableModel;
import calc.commandes;
/**
*
* @author pabr6
*
*/
public class myTableBaseListesEtudiants extends AbstractTableModel{
/**
*
*/
private static final long serialVersionUID = 1L;
private String[][] listes = new String[0][2];
private List<String> columNames = new ArrayList<>(Arrays.asList(new String[] {"Nom de la liste","Année", "Nombre d'étudiant"}));
@Override
public int getRowCount() {
return listes.length;
}
@Override
public int getColumnCount() {
return columNames.size();
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
return listes[rowIndex][columnIndex];
}
@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
listes[rowIndex][columnIndex] = (String) aValue;
fireTableCellUpdated(rowIndex, columnIndex);
}
public String getColumnName(int column) {
return columNames.get(column);
}
public String getNameListe(int rowIndex){
return listes[rowIndex][0];
}
public void addOrUpdate() {
new recupeNodeBaseListesEtudiants();
listes = new String[commandes.listesEtudiants.getEnfants().size()][columNames.size()];
for(int i = 0 ; i<commandes.listesEtudiants.getEnfants().size();i++) {
listes[i][0] = commandes.listesEtudiants.getEnfants().get(i).getAttributs().get("nameListStudent");
listes[i][1] = commandes.listesEtudiants.getEnfants().get(i).getAttributs().get("year");
listes[i][2] = String.valueOf(commandes.listesEtudiants.getEnfants().get(i).getEnfants().size());
}
fireTableRowsInserted(0, commandes.listesEtudiants.getEnfants().size()-1);
}
}

View File

@ -0,0 +1,108 @@
package analyseWriter.baseListesEtudiants;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javax.swing.table.AbstractTableModel;
import calc.commandes;
import xml.node;
/**
*
* @author pabr6
*
*/
public class myTableStudent extends AbstractTableModel{
/**
*
*/
private static final long serialVersionUID = 1L;
private String[][] listes = new String[0][3];
private List<String> columNames = new ArrayList<>(Arrays.asList(new String[] {"Nom","prénom", "identifiant","email"}));
@Override
public int getRowCount() {
return listes.length;
}
@Override
public int getColumnCount() {
return columNames.size();
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
return listes[rowIndex][columnIndex];
}
@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
listes[rowIndex][columnIndex] = (String) aValue;
fireTableCellUpdated(rowIndex, columnIndex);
}
public String getColumnName(int column) {
return columNames.get(column);
}
public String getNameListe(int rowIndex){
return listes[rowIndex][0];
}
public void addOrUpdate() {
if(commandes.nodeCSV==null) {
listes = new String[0][columNames.size()];
fireTableRowsInserted(0, 0);
return;
}
if(!commandes.nodeCSV.isVide()) {
String name = commandes.nodeCSV.getAttributs().get("name");
String firstname = commandes.nodeCSV.getAttributs().get("firstname");
String id = commandes.nodeCSV.getAttributs().get("id");
String email = commandes.nodeCSV.getAttributs().get("email");
node nodeImport = commandes.sujet.retourneFirstEnfant("import_moodle");
if(name==null) name = nodeImport.getAttributs().get("name");
if(firstname==null) firstname = nodeImport.getAttributs().get("firstname");
if(id==null) id = nodeImport.getAttributs().get("id");
if(email==null) email = nodeImport.getAttributs().get("email");
listes = new String[commandes.nodeCSV.getEnfants().size()][columNames.size()];
for(int i = 0 ; i<commandes.nodeCSV.getEnfants().size();i++) {
if(commandes.nodeCSV.getEnfants().get(i).getAttributs().get(name)!=null &&
commandes.nodeCSV.getEnfants().get(i).getAttributs().get(firstname)!=null &&
commandes.nodeCSV.getEnfants().get(i).getAttributs().get(id)!=null &&
commandes.nodeCSV.getEnfants().get(i).getAttributs().get(email)!=null) {
listes[i][0] = commandes.nodeCSV.getEnfants().get(i).getAttributs().get(name);
listes[i][1] = commandes.nodeCSV.getEnfants().get(i).getAttributs().get(firstname);
listes[i][2] = commandes.nodeCSV.getEnfants().get(i).getAttributs().get(id);
listes[i][3] = commandes.nodeCSV.getEnfants().get(i).getAttributs().get(email);
}
}
fireTableRowsInserted(0, commandes.nodeCSV.getEnfants().size()-1);
}else {
listes = new String[0][columNames.size()];
fireTableRowsInserted(0, 0);
}
}
public void removeRow(int row) {
if (row >= 0 && row < commandes.nodeCSV.getEnfants().size()) {
commandes.nodeCSV.getEnfants().remove(row);
fireTableRowsDeleted(row, row);
}
}
public void addStudent(node newStudent) {
if(commandes.nodeCSV!=null) {
commandes.nodeCSV.getEnfants().add(newStudent);
}
}
}

View File

@ -0,0 +1,13 @@
package analyseWriter.baseListesEtudiants;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class nameStudentValidator {
public static boolean isValidName(String name) {
String namePattern = "^[a-zA-Z -]+?$";
Pattern pattern = Pattern.compile(namePattern);
Matcher matcher = pattern.matcher(name);
return matcher.matches();
}
}

View File

@ -0,0 +1,73 @@
package analyseWriter.baseListesEtudiants;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.nio.file.Paths;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import calc.commandes;
import xml.node;
/**
*
* @author pabr6
*
*/
public class recupeNodeBaseListesEtudiants {
private boolean Hasliste = false;
public recupeNodeBaseListesEtudiants() {
File file = null;
String directoryName = Paths.get("").toAbsolutePath().toString();
if(commandes.os.contains("Win")) {
file = new File(directoryName + "\\" + "base_listes_etudiants.xml");
}else {
file = new File(directoryName + "/" + "base_listes_etudiants.xml");
}
if(file!=null) {
BufferedReader br;
try {
br = new BufferedReader(
new InputStreamReader(
new FileInputStream(file.getAbsoluteFile()), "UTF-8"));
String line;
StringBuilder targetString = new StringBuilder();
while ((line = br.readLine()) != null) {
targetString.append(line);
}
String codeTexte = "<!-- A -->" + targetString.toString().replace("\t","").replace("\r", "").replace("\n", "");
codeTexte = codeTexte.replaceAll(">/{1,}<", "><");
node nodRetourne = new node(codeTexte);
if(nodRetourne.getNameNode().equals("fichier")) {
nodRetourne.setNameNode("ListesEtudiants");
}
commandes.listesEtudiants = nodRetourne;
if(nodRetourne.getEnfants().size()>0) Hasliste=true;
}catch (Exception e) {
JLabel texte = new JLabel("<html><p>La base de données des listes des étudiants<br>n'est pas située dans le même répertoire que celui de l'application.</p></html>");
JOptionPane.showMessageDialog(null, texte);
}
}
}
public boolean isHasliste() {
return Hasliste;
}
public void setHasliste(boolean hasliste) {
Hasliste = hasliste;
}
}

View File

@ -75,8 +75,8 @@ public class chargeEvaluation {
calc.commandes.path = evaluation.getAttributs().get("path"); //Dossier des fichiers des étudiants calc.commandes.path = evaluation.getAttributs().get("path"); //Dossier des fichiers des étudiants
// Chargement du node sujet depuis la base // Chargement du node sujet depuis la base
calc.commandes.nameSujet = evaluation.getAttributs().get("analysis_filename"); calc.commandes.nameSujet = evaluation.retourneFirstEnfant("root").getAttributs().get("analysis_filename");
calc.commandes.sujet = evaluation.retourneFirstEnfant("fichier"); calc.commandes.sujet = evaluation.retourneFirstEnfant("classeur");
calc.commandes.PathFilenameAnalysis = evaluation.getAttributs().get("PathFilenameAnalysis"); calc.commandes.PathFilenameAnalysis = evaluation.getAttributs().get("PathFilenameAnalysis");
//** Les paramètres de l'évaluation //** Les paramètres de l'évaluation
@ -104,23 +104,24 @@ public class chargeEvaluation {
calc.commandes.nodeCSV = evaluation.retourneFirstEnfant("fileCSV"); calc.commandes.nodeCSV = evaluation.retourneFirstEnfant("fileCSV");
if(!calc.commandes.nodeCSV.isVide()) { if(calc.commandes.nodeCSV!=null)if(!calc.commandes.nodeCSV.isVide()) {
if(calc.commandes.nodeCSV.getAttributs().get("nameListStudent")!=null) { if(calc.commandes.nodeCSV.getAttributs().get("nameListStudent")!=null) {
String nameListeStudent = calc.commandes.nodeCSV.getAttributs().get("nameListStudent"); String nameListeStudent = calc.commandes.nodeCSV.getAttributs().get("nameListStudent");
chargeListeEtudiants.chargeDansLeNodeCSVListeEtudiants(nameListeStudent); chargeListeEtudiants.chargeDansLeNodeCSVListeEtudiants(nameListeStudent);
} }
} }
// commandes.contenuFichierSVG = evaluation.retourneFirstEnfantsByName("nodSVG").retourneLesContenusEnfants("");
calc.commandes.fichierAnalyseValide = true; calc.commandes.fichierAnalyseValide = true;
if(calc.commandes.sujet!=null) {
try { try {
calc.commandes.sujetSauvegarde = calc.commandes.sujet.clone(); calc.commandes.sujetSauvegarde = calc.commandes.sujet.clone();
} catch (CloneNotSupportedException e) { } catch (CloneNotSupportedException e) {
e.printStackTrace(); e.printStackTrace();
}
} }
//Chargement des paramètres du fichier d'analyse //Chargement des paramètres du fichier d'analyse
new chargementParametresFichierAnalyse(); new chargementParametresFichierAnalyse();

View File

@ -45,6 +45,9 @@ public class creerNouvelleEvaluation {
if(nameEvaluation==null) { if(nameEvaluation==null) {
JOptionPane.showMessageDialog(null, "L'évaluation ne possède pas de nom"); JOptionPane.showMessageDialog(null, "L'évaluation ne possède pas de nom");
return evaluation; return evaluation;
} else if (nameEvaluation.isBlank()) {
JOptionPane.showMessageDialog(null, "L'évaluation ne possède pas de nom");
return evaluation;
} }
// création du nouveau node evaluation // création du nouveau node evaluation

View File

@ -79,7 +79,7 @@ public class ecritureBaseEvaluation {
XMLBase = debut + evaluation.ecritureXML().toString() + fin; XMLBase = debut + evaluation.ecritureXML().toString() + fin;
}else { }else {
//Ajoute une nouvelle évaluation au début de la base //Ajoute une nouvelle évaluation au début de la base
p = Pattern.compile("<evaluations.*?>"); p = Pattern.compile("<evaluationsCalc.*?>");
m = p.matcher(baseToString); m = p.matcher(baseToString);
if(m.find()) { if(m.find()) {
debut = baseToString.substring(0,m.end()); debut = baseToString.substring(0,m.end());

View File

@ -66,9 +66,11 @@ public class myTableBaseEvaluation extends AbstractTableModel{
evaluation[i][2] = dateCreation; evaluation[i][2] = dateCreation;
} }
node fichier = calc.commandes.evaluationsBase.getEnfants().get(i).retourneFirstEnfant("classeur"); node fichier = calc.commandes.evaluationsBase.getEnfants().get(i).retourneFirstEnfant("classeur");
evaluation[i][3] = fichier.getAttributs().get("titre"); if(fichier!=null) {
evaluation[i][4] = fichier.getAttributs().get("metaSujet"); evaluation[i][3] = fichier.getAttributs().get("titre");
evaluation[i][5] = fichier.getAttributs().get("analysis_filename"); evaluation[i][4] = fichier.getAttributs().get("metaSujet");
evaluation[i][5] = fichier.getAttributs().get("analysis_filename");
}
} }
fireTableRowsInserted(0, calc.commandes.evaluationsBase.getEnfants().size()-1); fireTableRowsInserted(0, calc.commandes.evaluationsBase.getEnfants().size()-1);
} }

View File

@ -0,0 +1,111 @@
package baseEvaluation;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import xml.node;
import calc.*;
public class removeEvaluation {
public removeEvaluation(node evaluation) {
String directoryName = "";
File file = null;
if(commandes.PathBaseEvaluationDefaut) {
directoryName = Paths.get("").toAbsolutePath().toString();
}else {
directoryName = commandes.PathBaseEvaluations;
}
if(commandes.os.contains("Win")) {
file = new File(directoryName + "\\" + commandes.NameBaseEvaluations);
}else {
file = new File(directoryName + "/" + commandes.NameBaseEvaluations);
}
String debut="";
String fin="";
String XMLBase="";
if(file!=null) {
//Lecture de la base de données
BufferedReader br;
try {
br = new BufferedReader(
new InputStreamReader(
new FileInputStream(file.getAbsoluteFile()), "UTF-8"));
String line;
StringBuilder targetString = new StringBuilder();
while ((line = br.readLine()) != null) {
targetString.append(line);
}
String baseToString = targetString.toString().replace("\t","").replace("\r", "").replace("\n", "").replaceAll(">/{1,}<","><");
Pattern p = Pattern.compile("<\\bevaluation\\b.{1,800}\\bdate\\b=\\\""+ evaluation.getAttributs().get("date") +"\\\".*?<\\/\\bevaluation\\b>");
Matcher m = p.matcher(baseToString);
if(m.find()) {
//Supprime le node évluation pour le remplacer par le nouveau.
debut = baseToString.substring(0,m.start());
fin = baseToString.substring(m.end());
XMLBase = debut + fin;
}
try {
// écriture du node
Path outputFilePath = file.toPath();
if (Files.isWritable(outputFilePath)) {
BufferedWriter fichier = Files.newBufferedWriter(outputFilePath, StandardCharsets.UTF_8);
fichier.write(XMLBase);
fichier.close();
JFrame frame = new JFrame();
JLabel texte = new JLabel("<html><h1>Suppression réussi</h1><p>L'évaluation <b>"+evaluation.getAttributs().get("name")+ "</b> a été supprimée dans la base de données.</p>"
+ "<p>"+ file.getAbsolutePath() +"</p></html>");
JOptionPane.showMessageDialog(frame, texte);
}else {
JFrame frame = new JFrame();
JLabel texte = new JLabel("<html><h1>La suppression n'a pas réussi</h1><p>L'évaluation <b>"+evaluation.getAttributs().get("name")+ "</b> n'a pas été supprimée dans la base de données.</p>"
+ "<p>"+ file.getAbsolutePath() +"</p><p>Vous devez avoir des droits pour écrire dans ce dossier.</p></html>");
JOptionPane.showMessageDialog(frame, texte);
}
} catch (IOException e) {
JFrame frame = new JFrame();
JLabel texte = new JLabel("<html><h1>La suppression n'a pas réussi</h1><p>L'évaluation <b>"+evaluation.getAttributs().get("name")+ "</b> n'a pas été supprimée dans la base de données.</p>"
+ "<p>"+ file.getAbsolutePath() +"</p><p>"+e.getMessage()+"</p></html>");
JOptionPane.showMessageDialog(frame, texte);
e.printStackTrace();
}
}catch (Exception e) {
}
}
}
}

View File

@ -0,0 +1,71 @@
package baseEvaluation;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import xml.node;
import calc.*;
public class trierParDateDecroissanteLaBase {
/**
* Tri la base des évaluation par date décroisante
*/
public trierParDateDecroissanteLaBase(){
ArrayList<node> evaluations = commandes.evaluationsBase.retourneAllEnfants("evaluation");
HashMap<Date, Integer> dateDictionary = new HashMap<Date, Integer>();
Date dateEvaluationCharger = new Date();
if(commandes.evaluationChargeEnMemoire!=null) {
dateEvaluationCharger = calcul.formatDateWriter.DateLibreOffice(commandes.evaluationChargeEnMemoire.getAttributs().get("date"));
System.out.println("dateEvaluationCharger="+dateEvaluationCharger);
}
for(int i = 0 ; i < evaluations.size();i++) {
dateDictionary.put(calcul.formatDateWriter.DateLibreOffice(evaluations.get(i).getAttributs().get("date")),i);
}
// Convertir le HashMap en liste pour pouvoir trier les éléments
List<Map.Entry<Date, Integer>> list = new ArrayList<Map.Entry<Date, Integer>>(dateDictionary.entrySet());
// Trier la liste par ordre décroissant des dates
Collections.sort(list, Collections.reverseOrder(Map.Entry.comparingByKey()));
// Créer un nouveau LinkedHashMap pour stocker les éléments triés
LinkedHashMap<Date, Integer> sortedDateDictionary = new LinkedHashMap<Date, Integer>();
for (Map.Entry<Date, Integer> entry : list) {
sortedDateDictionary.put(entry.getKey(), entry.getValue());
}
//Parcourir
node nodeTemporaire = new node();
nodeTemporaire.setNameNode("temporaire");
int j=0;
for (Map.Entry<Date, Integer> entry : sortedDateDictionary.entrySet()) {
System.out.println("Key : " + entry.getKey() + " | Value : " + entry.getValue());
nodeTemporaire.getEnfants().add(j,commandes.evaluationsBase.getEnfants().get(entry.getValue()));
if(commandes.evaluationChargeEnMemoire!=null) {
if( (entry.getKey().equals(dateEvaluationCharger)) ) {
if(commandes.evaluationsBase.getEnfants().get(entry.getValue()).getAttributs().get("name").equals(commandes.NameEvaluationCharger)) {
commandes.IndexEvaluationCharger = j;
}
}
}
j++;
}
// ajoute à la base
commandes.evaluationsBase.getEnfants().clear();
for(int i = 0 ; i < nodeTemporaire.getEnfants().size();i++) {
commandes.evaluationsBase.getEnfants().add(nodeTemporaire.getEnfants().get(i));
}
}
}

View File

@ -157,11 +157,14 @@ public class chargementParametresFichierAnalyse {
//***************************************************************** //*****************************************************************
//** chargement de la culture qui se trouve dans le node setting ** //** chargement de la culture qui se trouve dans le node setting **
//***************************************************************** //*****************************************************************
if(commandes.sujet.retourneFirstEnfant("setting").isHasAttributs()) { if(commandes.sujet.containChildByName("setting")) {
if(commandes.sujet.retourneFirstEnfant("setting").getAttributs().get("culture")!=null) { if(commandes.sujet.retourneFirstEnfant("setting").isHasAttributs()) {
commandes.culture = commandes.sujet.retourneFirstEnfant("setting").getAttributs().get("culture"); //récupère la culture de l'utilisateur if(commandes.sujet.retourneFirstEnfant("setting").getAttributs().get("culture")!=null) {
commandes.culture = commandes.sujet.retourneFirstEnfant("setting").getAttributs().get("culture"); //récupère la culture de l'utilisateur
}
} }
} }
//******************************************************************* //*******************************************************************
//** Charge pour la taille et le nom de l'archive de l'archive ZIP ** //** Charge pour la taille et le nom de l'archive de l'archive ZIP **

View File

@ -1,4 +1,6 @@
package analyseWriter.fenetres; package fenetres;
import java.awt.Component; import java.awt.Component;
import java.awt.Dimension; import java.awt.Dimension;
@ -21,10 +23,12 @@ import javax.swing.JLabel;
import javax.swing.JOptionPane; import javax.swing.JOptionPane;
import javax.swing.filechooser.FileNameExtensionFilter; import javax.swing.filechooser.FileNameExtensionFilter;
import analyseWriter.MEPTL.commandes; import baseEvaluation.creerNouvelleEvaluation;
import analyseWriter.baseEvaluations.creerNouvelleEvaluation; import baseEvaluation.recupeNodeBaseEvaluations;
import analyseWriter.baseEvaluations.recupeNodeBaseEvaluations; import calc.commandes;
import cXML.node; import xml.node;
/** /**
* *
@ -161,15 +165,15 @@ public class ChargePathBaseEvaluation extends JFileChooser {
} }
for(int i = 0 ; i < evaluations.getNodes().size();i++) { for(int i = 0 ; i < evaluations.getEnfants().size();i++) {
String date = evaluations.getNodes().get(i).getAttributs().get("date"); String date = evaluations.getEnfants().get(i).getAttributs().get("date");
if(date==null) continue; if(date==null) continue;
ArrayList<node> A = copieDefault.retourneEnfantsByNameAndValueAttribut("evaluation", "date", date, new ArrayList<node>()); ArrayList<node> A = copieDefault.retourneAllEnfants("evaluation", "date", date);
// l'évaluation n'existe pas dans la base par défaut et ce n'est pas une importation // l'évaluation n'existe pas dans la base par défaut et ce n'est pas une importation
if(A.size()==0) { if(A.size()==0) {
String name = evaluations.getNodes().get(i).getAttributs().get("name"); String name = evaluations.getEnfants().get(i).getAttributs().get("name");
new creerNouvelleEvaluation(evaluations.getNodes().get(i), name, false,true); new creerNouvelleEvaluation(evaluations.getEnfants().get(i), name, false,true);
}else { }else {
// L'évaluation existe dans la base par défaut // L'évaluation existe dans la base par défaut
// for(int j = 0; j < A.size();j++) { // for(int j = 0; j < A.size();j++) {

View File

@ -0,0 +1,493 @@
package fenetres;
import java.awt.Color;
import java.awt.Font;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.file.Files;
import javax.swing.ImageIcon;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.filechooser.FileNameExtensionFilter;
import analyseWriter.baseListesEtudiants.ecritureBaseListesEtudiants;
import calc.commandes;
import xml.node;
/**
* Class permettant de générer une<br>
* boite de dialogue pour charger une liste d'étudiants<br>
* dans le node commandes.NodeCSV.<br><br>
* Cette méthode fait appel à la méthode,<br>
* meptl.chargementFichierCSV(nameListStudent, textFieldYear.getText())<br>
* <br>
* @author pabr6
*
*/
public class CustomInputDialogListeEtudiant {
/**
* Class permettant de générer une<br>
* boite de dialogue pour charger une liste d'étudiants<br>
* dans le node commandes.NodeCSV.<br><br>
* Cette méthode fait appel à la méthode,<br>
* meptl.chargementFichierCSV(nameListStudent, textFieldYear.getText())<br>
* <br>
* @return
* 1- Le nom de la liste des étudiants (la liste est chargé).<br>
* 2- Code_Annule (ce qui signifie que la liste n'a pas été chargé).<br>
*/
public static String showCustominputDialog() {
String separateur ="";
String encodage ="";
String email ="inconnu";
String name = "inconnu";
String firstname = "inconnu";
String id = "inconnu";
String nameListStudent = "";
if(commandes.fichierAnalyseValide) {
if(commandes.fourniCSV) {
node CSV = commandes.sujet.retourneFirstEnfant("csv");
separateur = CSV.getAttributs().get("separator");
encodage = CSV.getAttributs().get("encoding");
node importCSV = CSV.retourneFirstEnfant("import_moodle");
if(CSV.isHasAttributs()) {
if(importCSV.getAttributs().get("email")!=null) {
email = importCSV.getAttributs().get("email");
}
if(importCSV.getAttributs().get("name")!=null) {
name = importCSV.getAttributs().get("name");
}
if(importCSV.getAttributs().get("firstname")!=null) {
firstname = importCSV.getAttributs().get("firstname");
}
if(importCSV.getAttributs().get("id")!=null) {
id = importCSV.getAttributs().get("id");
}
}
}
if(commandes.evaluationChargeEnMemoire.retourneFirstEnfant("fileCSV")!=null) {
if(commandes.evaluationChargeEnMemoire.retourneFirstEnfant("fileCSV").getAttributs().get("nameListStudent")!=null) {
nameListStudent = commandes.evaluationChargeEnMemoire.retourneFirstEnfant("fileCSV").getAttributs().get("nameListStudent");
}
}
}
JLabel lblTitre = new JLabel("<html><h2>Ajouter une liste d'étudiant à l'évaluation<h2></html>");
lblTitre.setForeground(new Color(50,50,200));
JLabel lblExpliaction = new JLabel("<html><p>Le fichier au format CSV pour importer une liste d'étudiant doit avoir<br>"
+ "les caractéristiques suivantes :</p><br>"
+ "<p>Séparateur : <b>" + separateur +"</b><br>"
+ "Encodage : <b>" + encodage + "</b><br>"
+ "Nom des étudiants, la colonne : <b>" + name + "</b><br>"
+ "Prénom des étudiants, la colonne : <b>" + firstname + "</b><br>"
+ "Numéro des étudiants, la colonne : <b>" + id +"</b><br>"
+ "Courriel des étudiants, la colonne : <b>" + email + "</b></p><br>"
+ "</html>");
lblExpliaction.setFont(new Font("Tahoma", Font.BOLD, 12));
lblExpliaction.setForeground(Color.blue);
JTextField textField = new JTextField(String.valueOf(nameListStudent));
textField.setFont(new Font("Tahoma", Font.BOLD, 14));
textField.setHorizontalAlignment(SwingConstants.LEFT);
ImageIcon icon = new ImageIcon(create.class.getResource("/resources/fichierCSV.png"));
JTextField textFieldYear = new JTextField("2024");
Object[] message = {
lblTitre,
lblExpliaction,
"<html><p><b>Le nom d'une liste d'étudiant doit être unique.</b><br>"
+ "Sinon, les étudiants seront ajoutés à la liste existante.</p><br>"
+ "<p>Quel doit être le nom de cette liste ?</p></html>",
textField,
"<html><p>Quel est l'année ?</p></html>",
textFieldYear
};
String[] options = {"Importer la liste", "Annuler"};
int optionSelected = JOptionPane.showOptionDialog(
null,
message,
"Importer une liste d'étudiant.",
JOptionPane.DEFAULT_OPTION,
JOptionPane.INFORMATION_MESSAGE,
icon,
options,
options[0]);
if (optionSelected == 0) { // Bouton "Importer la liste" sélectionné
JFileChooser chooser = new JFileChooser();
chooser.setDialogTitle("Choisir un fichier CSV");
chooser.setCurrentDirectory(new java.io.File(commandes.path));
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
FileNameExtensionFilter filter = new FileNameExtensionFilter("Format CSV", "csv");
chooser.setFileFilter(filter);
chooser.setAcceptAllFileFilterUsed(true);
if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
System.out.println("getCurrentDirectory(): " + chooser.getCurrentDirectory());
System.out.println("getSelectedFile() : " + chooser.getSelectedFile().getAbsolutePath());
commandes.nameCSV = chooser.getSelectedFile().getAbsolutePath();
chargementFichierCSV(nameListStudent, textFieldYear.getText());
if(commandes.nodeCSV.getNbrEnfants()>=1) commandes.fourniCSV=true;
return nameListStudent;
}
return "Code_Annule";
} else if (optionSelected == 1) { // Bouton "Désactivé" sélectionné
return "Code_Annule";
} else { // Si la boîte de dialogue est annulée ou fermée
return "Code_Annule";
}
}
/**
* Charge et ajoute dans le node <b>commandes.nodeCSV</b> la liste des étudiants.<br>
* Par défaut :
* La liste des étudiants doit contenir les champs <b>prenom</b>, <b>nom</b>, <b>identification</b>, <b>adresse</b><br>
* Le séparateur doit être le <b>point-virgule</b> et l'encodage <b>UTF-8</b>.<br>
* @param nameListStudent : le nom de la liste des étudiants.<br>
* @param Year : Année sous la forme d'une chaine de caractère.<br>
*/
public static void chargementFichierCSV(String nameListStudent, String Year) {
String targetString = "";
String cheminVersLeFichierCSV = "";
commandes.nameCSV = commandes.nameCSV.replace("\\", "/");
cheminVersLeFichierCSV = commandes.nameCSV;
try {
BufferedReader br = new BufferedReader(
new InputStreamReader(
new FileInputStream(cheminVersLeFichierCSV), "UTF-8"));
String line;
while ((line = br.readLine()) != null) {
targetString = targetString + line + "\n";
}
br.close();
} catch (IOException e) {
e.printStackTrace();
}
String[] target = targetString.split("\\n");
node csv = commandes.sujet.retourneFirstEnfant("csv");
String separator = csv.getAttributs().get("separator");
String encoding = csv.getAttributs().get("encoding");
node import_csv = csv.retourneFirstEnfant("import_moodle");
String nameid = import_csv.getAttributs().get("id");
String nameemail = import_csv.getAttributs().get("email");
String nameStudent = import_csv.getAttributs().get("name");
String firstnameStudent = import_csv.getAttributs().get("firstname");
if(nameListStudent.isBlank()) nameListStudent=commandes.nameCSV;
if(Year.isBlank()) Year="2024";
commandes.nodeCSV.getAttributs().put("nameListStudent", nameListStudent);
commandes.nodeCSV.getAttributs().put("name", nameStudent);
commandes.nodeCSV.getAttributs().put("firstname", firstnameStudent);
commandes.nodeCSV.getAttributs().put("email", nameemail);
commandes.nodeCSV.getAttributs().put("id", nameid);
commandes.nodeCSV.getAttributs().put("separator", separator);
commandes.nodeCSV.getAttributs().put("encoding", encoding);
commandes.nodeCSV.getAttributs().put("year", Year);
if(!target[0].contains(separator)||!target[0].contains(nameid)
||!target[0].contains(nameemail)||!target[0].contains(nameStudent)
||!target[0].contains(firstnameStudent)) {
JOptionPane.showMessageDialog(null, "Le fichier CSV ne correspond pas\nà la définition des paramètres d'importation", "Erreur CSV", JOptionPane.INFORMATION_MESSAGE);
return ;
}
String[] line1 = target[0].split(separator);
for(int i = 1 ; i < target.length ; i++) {
node nodeEtudiant = new node();
nodeEtudiant.setNameNode("student");
for(int j = 0 ; j < line1.length; j++) {
nodeEtudiant.getAttributs().put(line1[j], target[i].split(separator)[j]);
}
if(nodeEtudiant.getAttributs().get(nameemail)!=null
&& nodeEtudiant.getAttributs().get(nameid)!=null
&& nodeEtudiant.getNbrAttributs()==4) {
node n1 = commandes.nodeCSV.retourneFirstEnfant("student", nameid, nodeEtudiant.getAttributs().get(nameid));
node n2 = commandes.nodeCSV.retourneFirstEnfant("student", nameemail, nodeEtudiant.getAttributs().get(nameemail));
if(n1==null && n2==null) commandes.nodeCSV.getEnfants().add(nodeEtudiant);
}
}
}
/**
* Class permettant de générer une<br>
* boite de dialogue pour écrire ou ajouter une liste d'étudiants<br>
* dans le node csv pour l'écriture.<br><br>
* Cette méthode fait appel à la méthode,<br>
* meptl.ecritureListeEtudiantsBaseFichierCSV(chemin vers fichier CSV, nameListStudent , year)<br>
* <br>
* @return
* 1- true lorsque le fichier est écrit.<br>
* 2- false lorsque le fichier n'a pas été écrit.<br>
*/
public static boolean showCustomDialogInputStudentBase() {
String separateur ="";
String encodage ="";
String email ="inconnu";
String name = "inconnu";
String firstname = "inconnu";
String id = "inconnu";
String nameListStudent = "";
if(commandes.fichierAnalyseValide) {
if(commandes.fourniCSV) {
node CSV = commandes.sujet.retourneFirstEnfant("csv");
separateur = CSV.getAttributs().get("separator");
encodage = CSV.getAttributs().get("encoding");
node importCSV = CSV.retourneFirstEnfant("import_moodle");
if(CSV.isHasAttributs()) {
if(importCSV.getAttributs().get("email")!=null) {
email = importCSV.getAttributs().get("email");
}
if(importCSV.getAttributs().get("name")!=null) {
name = importCSV.getAttributs().get("name");
}
if(importCSV.getAttributs().get("firstname")!=null) {
firstname = importCSV.getAttributs().get("firstname");
}
if(importCSV.getAttributs().get("id")!=null) {
id = importCSV.getAttributs().get("id");
}
}
}
if(commandes.evaluationChargeEnMemoire.retourneFirstEnfant("fileCSV")!=null) {
if(commandes.evaluationChargeEnMemoire.retourneFirstEnfant("fileCSV").getAttributs().get("nameListStudent")!=null) {
nameListStudent = commandes.evaluationChargeEnMemoire.retourneFirstEnfant("fileCSV").getAttributs().get("nameListStudent");
}
}
}
JLabel lblTitre = new JLabel("<html><h2>Ajouter une liste d'étudiant à l'évaluation<h2></html>");
lblTitre.setForeground(new Color(50,50,200));
JLabel lblExpliaction = new JLabel("<html><p>Le fichier au format CSV pour importer une liste d'étudiant doit avoir<br>"
+ "les caractéristiques suivantes :</p><br>"
+ "<p>Séparateur : <b>" + separateur +"</b><br>"
+ "Encodage : <b>" + encodage + "</b><br>"
+ "Nom des étudiants, la colonne : <b>" + name + "</b><br>"
+ "Prénom des étudiants, la colonne : <b>" + firstname + "</b><br>"
+ "Numéro des étudiants, la colonne : <b>" + id +"</b><br>"
+ "Courriel des étudiants, la colonne : <b>" + email + "</b></p><br>"
+ "</html>");
lblExpliaction.setFont(new Font("Tahoma", Font.BOLD, 12));
lblExpliaction.setForeground(Color.blue);
JTextField textField = new JTextField(String.valueOf(nameListStudent));
textField.setFont(new Font("Tahoma", Font.BOLD, 14));
textField.setHorizontalAlignment(SwingConstants.LEFT);
ImageIcon icon = new ImageIcon(create.class.getResource("/resources/fichierCSV.png"));
JTextField textFieldYear = new JTextField("2024");
Object[] message = {
lblTitre,
lblExpliaction,
"<html><p><b>Le nom d'une liste d'étudiant doit être unique.</b><br>"
+ "Sinon, les étudiants seront ajoutés à la liste existante du même nom.</p><br>"
+ "<p>Quel doit être le nom de cette liste ?</p></html>",
textField,
"<html><p>Quel est l'année ?</p></html>",
textFieldYear
};
String[] options = {"Importer la liste", "Annuler"};
int optionSelected = JOptionPane.showOptionDialog(
null,
message,
"Importer une liste d'étudiant.",
JOptionPane.DEFAULT_OPTION,
JOptionPane.INFORMATION_MESSAGE,
icon,
options,
options[0]);
if (optionSelected == 0) { // Bouton "Importer la liste" sélectionné
JFileChooser chooser = new JFileChooser();
chooser.setDialogTitle("Choisir un fichier CSV");
chooser.setCurrentDirectory(new java.io.File(commandes.path));
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
FileNameExtensionFilter filter = new FileNameExtensionFilter("Format CSV", "csv");
chooser.setFileFilter(filter);
chooser.setAcceptAllFileFilterUsed(true);
if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
if(Files.isReadable(chooser.getSelectedFile().toPath())) {
commandes.nameCSV = chooser.getSelectedFile().getAbsolutePath();
nameListStudent = textField.getText().toLowerCase().trim();
String year = textFieldYear.getText().toLowerCase().trim();
return ecritureListeEtudiantsBaseFichierCSV(chooser.getSelectedFile().getAbsolutePath(), nameListStudent , year);
}else {
JFrame frame = new JFrame();
JLabel texte = new JLabel("<html><h1>La lecture de la liste n'a pas réussi</h1>"
+ "<p>"+ chooser.getSelectedFile().getAbsolutePath() +"</p><p>Vous devez avoir des droits pour lire dans ce dossier.</p></html>");
JOptionPane.showMessageDialog(frame, texte);
}
}
return false;
} else if (optionSelected == 1) { // Bouton "Désactivé" sélectionné
return false;
} else { // Si la boîte de dialogue est annulée ou fermée
return false;
}
}
/**
* Ajoute ou cré dans la base, la liste des étudiants.<br>
* L'ajout se fait depuis un fichier au format CSV.<br>
* Par défaut :
* La liste des étudiants doit contenir les champs <b>prenom</b>, <b>nom</b>, <b>identification</b>, <b>adresse</b><br>
* Le séparateur doit être le <b>point-virgule</b> et l'encodage <b>UTF-8</b>.<br>
* @param cheminVersLeFichierCSV : le chemin vers le fichier CSV.<br>
* @param nameListStudent : le nom de la liste des étudiants.<br>
* @param Year : Année sous la forme d'une chaine de caractère.<br>
* @return
* 1- True lorsque les étudiants ont été ajouté.<br>
* 2 - False lorsque les étudiants n'ont pas été ajouté.<br>
*/
public static Boolean ecritureListeEtudiantsBaseFichierCSV(String cheminVersLeFichierCSV, String nameListStudent, String Year) {
//Recupère la liste des étudiants nommée : nameListStudent
//Si la liste existe alors place les étudiants dans le node commandes.nodeCSV ou bien null
commandes.nodeCSV = null;
if(commandes.listesEtudiants!=null) {
commandes.nodeCSV = commandes.listesEtudiants.retourneFirstEnfant("fileCSV", "nameListStudent", nameListStudent);
commandes.nameCSV = cheminVersLeFichierCSV;
}
// Le node csv contient les paramètres importations et la liste des étudiants.
node csv = null;
String separator = ";";
String encoding = "UTF-8";
String nameid = "id";
String nameemail = "email";
String nameStudent = "name";
String firstnameStudent = "firstname";
if(commandes.nodeCSV!=null) {
csv = commandes.nodeCSV;
separator = commandes.nodeCSV.getAttributs().get("separator");
encoding = commandes.nodeCSV.getAttributs().get("encoding");
nameid = commandes.nodeCSV.getAttributs().get("id");
nameemail = commandes.nodeCSV.getAttributs().get("email");
nameStudent = commandes.nodeCSV.getAttributs().get("name");
firstnameStudent = commandes.nodeCSV.getAttributs().get("firstname");
}else {
csv = commandes.sujet.retourneFirstEnfant("csv");
csv.getAttributs().put("nameListStudent", nameListStudent);
csv.getAttributs().put("year", Year);
separator = csv.getAttributs().get("separator");
encoding = csv.getAttributs().get("encoding");
node import_csv = csv.retourneFirstEnfant("import_moodle");
nameid = import_csv.getAttributs().get("id");
nameemail = import_csv.getAttributs().get("email");
nameStudent = import_csv.getAttributs().get("name");
firstnameStudent = import_csv.getAttributs().get("firstname");
csv.getEnfants().remove(import_csv);
csv.getAttributs().put("name", nameStudent);
csv.getAttributs().put("firstname", firstnameStudent);
csv.getAttributs().put("email", nameemail);
csv.getAttributs().put("id", nameid);
csv.setNameNode("fileCSV");
csv.getContenu().clear();
}
// Lecture du fichier CSV
String targetString = "";
try {
BufferedReader br = new BufferedReader(
new InputStreamReader(
new FileInputStream(cheminVersLeFichierCSV), encoding));
String line;
while ((line = br.readLine()) != null) {
targetString = targetString + line + "\n";
}
br.close();
} catch (IOException e) {
e.printStackTrace();
return false;
}
String[] target = targetString.split("\\n");
if(!target[0].contains(separator)||!target[0].contains(nameid)
||!target[0].contains(nameemail)||!target[0].contains(nameStudent)
||!target[0].contains(firstnameStudent)) {
JOptionPane.showMessageDialog(null, "<html><p>Le fichier CSV ne correspond pas à la définition des paramètres d'importation.</p>"
+ "<p>Les paramètres d'importation sont :</p>"
+ "<ol><li>Séparateur : "+separator +"</li>"
+ "<li>Champ nom de l'étudiant : "+nameStudent+"</li>"
+ "<li>Champ prénom de l'étudiant : "+firstnameStudent+"</li>"
+ "<li>Champ identifiant de l'étudiant : " +nameid +"</li>"
+ "<li>Champ email de l'étudiant : "+nameemail +"</li></ol></html>", "Erreur CSV", JOptionPane.INFORMATION_MESSAGE);
return false;
}
String[] line1 = target[0].split(separator);
for(int i = 1 ; i < target.length ; i++) {
node nodeEtudiant = new node();
nodeEtudiant.setNameNode("student");
for(int j = 0 ; j < line1.length; j++) {
nodeEtudiant.getAttributs().put(line1[j], target[i].split(separator)[j]);
}
if(nodeEtudiant.getAttributs().get(nameemail)!=null
&& nodeEtudiant.getAttributs().get(nameid)!=null
&& nodeEtudiant.getNbrAttributs()==4) {
node n1 = csv.retourneFirstEnfant("student", nameid, nodeEtudiant.getAttributs().get(nameid));
node n2 = csv.retourneFirstEnfant("student", nameemail, nodeEtudiant.getAttributs().get(nameemail));
if(n1==null && n2==null) csv.getEnfants().add(nodeEtudiant);
}
}
new ecritureBaseListesEtudiants(csv);
return true;
}
}

View File

@ -35,11 +35,13 @@ import baseEvaluation.chargeEvaluation;
import baseEvaluation.creerNouvelleEvaluation; import baseEvaluation.creerNouvelleEvaluation;
import baseEvaluation.myTableBaseEvaluation; import baseEvaluation.myTableBaseEvaluation;
import baseEvaluation.recupeNodeBaseEvaluations; import baseEvaluation.recupeNodeBaseEvaluations;
import baseEvaluation.removeEvaluation;
import baseEvaluation.trierParDateDecroissanteLaBase;
import calc.commandes;
import net.lingala.zip4j.exception.ZipException; import net.lingala.zip4j.exception.ZipException;
import net.miginfocom.swing.MigLayout; import net.miginfocom.swing.MigLayout;
import xml.Zip; import xml.Zip;
import xml.node; import xml.node;
import calc.*;
/** /**

View File

@ -0,0 +1,500 @@
package fenetres;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.SwingConstants;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.TableColumnModel;
import analyseWriter.baseListesEtudiants.EmailValidator;
import analyseWriter.baseListesEtudiants.chargeListeEtudiants;
import analyseWriter.baseListesEtudiants.ecritureBaseListesEtudiants;
import analyseWriter.baseListesEtudiants.idValidator;
import analyseWriter.baseListesEtudiants.myTableBaseListesEtudiants;
import analyseWriter.baseListesEtudiants.myTableStudent;
import analyseWriter.baseListesEtudiants.nameStudentValidator;
import calc.commandes;
import net.miginfocom.swing.MigLayout;
import xml.node;
public class baseDonneesListesEtudiants extends JFrame{
private static final long serialVersionUID = 1L;
private static baseDonneesListesEtudiants instance;
public static boolean isDispose = true;
private static JTable table;
private static JTable tableStudent;
private static myTableBaseListesEtudiants model = new myTableBaseListesEtudiants();
private static myTableStudent modelStudent = new myTableStudent();
private final JButton btnFermer = new JButton("<html><p>Femer</p></html>");
private JButton btnAddListeEtudiants = new JButton();
private JButton btnRemoveListe = new JButton("<html><p>Supprimer une liste</p></html>");
private JButton btnPasDeListe = new JButton();
private JButton btnAddNewStudent = new JButton("<html><p>Ajouter un nouvel étudiant</p></html>");
static JLabel lblNomListe = new JLabel("Pas de liste sélectionnée.");
JScrollPane scrollPaneTable = new JScrollPane();
JScrollPane scrollPaneBoutons = new JScrollPane();
private static int indexSelect=-1;
static ListSelectionModel lsm = null;
static ListSelectionModel rowSMTable = null;
public baseDonneesListesEtudiants() {
super();
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setLocationRelativeTo( null );
setSize(1600,900);
int screenWidth = (int) java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds().getWidth();
int screenHeight = (int) java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds().getHeight();
setLocation(( (screenWidth) - getWidth()) / 2, (screenHeight - getHeight()) / 2);
ImageIcon img = new ImageIcon(getClass().getResource("/resources/evalwriter.png") );
setIconImage(img.getImage());
setTitle(commandes.Titre + " - La base de données des listes des étudiants");
JPanel panelHaut = new JPanel();
getContentPane().add(panelHaut, BorderLayout.NORTH);
JLabel lblNewLabel = new JLabel("");
lblNewLabel.setIcon(new ImageIcon(baseDonneesListesEtudiants.class.getResource("/resources/accueilBaseListesEtudiants.png")));
panelHaut.add(lblNewLabel);
JPanel panelBas = new JPanel();
getContentPane().add(panelBas, BorderLayout.SOUTH);
JPanel panelGauche = new JPanel();
panelGauche.setLayout(new MigLayout("", "[:300px:400px,fill]", "[53px][][][][39.00][][][][][30.00][20px:n][][][]"));
scrollPaneBoutons = new JScrollPane(panelGauche);
getContentPane().add(scrollPaneBoutons, BorderLayout.WEST);
model.addOrUpdate();
table = new JTable(model);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
TableColumnModel columnModel = table.getColumnModel();
int minWidthColumn01 = 150;
int maxWidthColumn02 = 180;
columnModel.getColumn(0).setPreferredWidth(minWidthColumn01);
columnModel.getColumn(0).setMaxWidth(maxWidthColumn02);
columnModel.getColumn(1).setPreferredWidth(minWidthColumn01);
columnModel.getColumn(1).setMaxWidth(maxWidthColumn02);
columnModel.getColumn(2).setPreferredWidth(minWidthColumn01);
columnModel.getColumn(2).setMaxWidth(maxWidthColumn02);
table.setFont(new Font("Tahoma", Font.BOLD, 16));
//*Détection de la ligne sélectionnée
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
rowSMTable = table.getSelectionModel();
// Ajout du label d'instruction
JPanel panelCentre = new JPanel();
panelCentre.setLayout(new BorderLayout());
JLabel lblInstruction = new JLabel("<html>Cliquez sur une ligne de la table ci-dessous<br>pour sélectionner une liste d'étudiants.</html>");
lblInstruction.setHorizontalAlignment(SwingConstants.CENTER);
lblInstruction.setFont(new Font("Tahoma", Font.BOLD, 14));
panelCentre.add(lblInstruction, BorderLayout.NORTH);
JScrollPane scrollPaneDroite = new JScrollPane(table);
panelCentre.add(scrollPaneDroite, BorderLayout.CENTER);
getContentPane().add(panelCentre, BorderLayout.EAST);
lblNomListe = new JLabel("Pas de liste sélectionnée.");
lblNomListe.setBackground(Color.GREEN);
lblNomListe.setHorizontalAlignment(SwingConstants.CENTER);
lblNomListe.setForeground(Color.RED);
lblNomListe.setFont(new Font("Tahoma", Font.BOLD, 16));
panelGauche.add(lblNomListe, "cell 0 0");
if(commandes.nodeCSV!=null) if(!commandes.nodeCSV.isVide()) {
if(commandes.nodeCSV.getAttributs().get("nameListStudent")!=null) {
lblNomListe.setText("Liste : " + commandes.nodeCSV.getAttributs().get("nameListStudent"));
}
}
btnAddListeEtudiants.setFont(new Font("Tahoma", Font.BOLD, 13));
btnAddListeEtudiants.setHorizontalAlignment(SwingConstants.LEFT);
btnAddListeEtudiants.setText("<html><p>Ajouter une liste ou des étudiants<br>à une liste depuis un fichier CSV</p></html>");
btnAddListeEtudiants.setIcon(new ImageIcon(baseDonneesEvaluations.class.getResource("/resources/addStudentbaselisteetudiant.png")));
panelGauche.add(btnAddListeEtudiants, "cell 0 1");
btnPasDeListe.setFont(new Font("Tahoma", Font.BOLD, 13));
btnPasDeListe.setHorizontalAlignment(SwingConstants.LEFT);
btnPasDeListe = new JButton("<html>Ne pas sélectionner de liste</html>");
btnPasDeListe.setFont(new Font("Tahoma", Font.BOLD, 13));
btnPasDeListe.setHorizontalAlignment(SwingConstants.LEFT);
btnPasDeListe.setIcon(new ImageIcon(baseDonneesEvaluations.class.getResource("/resources/nolistestudent.png")));
panelGauche.add(btnPasDeListe, "cell 0 2");
btnAddNewStudent.setFont(new Font("Tahoma", Font.BOLD, 13));
btnAddNewStudent.setHorizontalAlignment(SwingConstants.LEFT);
btnAddNewStudent.setIcon(new ImageIcon(baseDonneesEvaluations.class.getResource("/resources/addnewstudent.png")));
panelGauche.add(btnAddNewStudent, "cell 0 3");
btnRemoveListe.setHorizontalAlignment(SwingConstants.LEFT);
btnRemoveListe.setFont(new Font("Tahoma", Font.BOLD, 13));
btnRemoveListe.setHorizontalAlignment(SwingConstants.LEFT);
btnRemoveListe.setIcon(new ImageIcon(baseDonneesEvaluations.class.getResource("/resources/removeListe.png")));
btnRemoveListe.setText("Supprime une liste");
panelGauche.add(btnRemoveListe, "cell 0 5");
btnFermer.setIcon(new ImageIcon(baseDonneesEvaluations.class.getResource("/resources/quitteliste.png")));
btnFermer.setHorizontalAlignment(SwingConstants.LEFT);
btnFermer.setFont(new Font("Tahoma", Font.BOLD, 15));
panelGauche.add(btnFermer, "cell 0 6,growx,aligny top");
modelStudent.addOrUpdate();
tableStudent = new JTable(modelStudent);
tableStudent.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
TableColumnModel columnModelStudent = tableStudent.getColumnModel();
int minWidthColumn1 = 180;
int maxWidthColumn2 = 250;
columnModelStudent.getColumn(0).setPreferredWidth(minWidthColumn1);
columnModelStudent.getColumn(0).setMaxWidth(maxWidthColumn2);
columnModelStudent.getColumn(1).setPreferredWidth(minWidthColumn1);
columnModelStudent.getColumn(1).setMaxWidth(maxWidthColumn2);
columnModelStudent.getColumn(2).setPreferredWidth(minWidthColumn1-60);
columnModelStudent.getColumn(2).setMaxWidth(maxWidthColumn2);
columnModelStudent.getColumn(3).setPreferredWidth(minWidthColumn1+100);
columnModelStudent.getColumn(3).setMaxWidth(maxWidthColumn2);
tableStudent.setFont(new Font("Tahoma", Font.PLAIN, 14));
scrollPaneTable = new JScrollPane(tableStudent);
getContentPane().add(scrollPaneTable, BorderLayout.CENTER);
ListenerAction();
ListenerTables();
}
public static void selectRow() {
if(indexSelect>=0 && indexSelect<=table.getRowCount()-1) {
table.setRowSelectionAllowed(true);
table.setRowSelectionInterval(indexSelect, indexSelect);
}
}
public static baseDonneesListesEtudiants getInstance(int indexRow) {
if (isDispose) {
instance = new baseDonneesListesEtudiants();
}else {
model.addOrUpdate();
table.setModel(model);
rowSMTable = table.getSelectionModel();
modelStudent.addOrUpdate();
tableStudent.setModel(modelStudent);
if(commandes.nodeCSV!=null) {
if(!commandes.nodeCSV.isVide()) {
if(commandes.nodeCSV.getAttributs().get("nameListStudent")!=null) {
lblNomListe.setText("Liste : " +commandes.nodeCSV.getAttributs().get("nameListStudent"));
}
}
}else {
lblNomListe.setText("Pas de liste sélectionnée.");
}
}
indexSelect = indexRow;
if(indexSelect>=0) {
selectRow();
}else {
table.setRowSelectionAllowed(false);
}
instance.setVisible(true);
isDispose=false;
return instance;
}
/**
* Si ReturnEvaluate alors recharge une nouvelle fois la fenêtre evaluate.
* @param returnEvaluate
*/
public static void ferme(boolean returnEvaluate) {
if(!isDispose) {
isDispose=true;
instance.dispose();
if(returnEvaluate) evaluate.getInstance();
}
}
private void ListenerAction() {
/**
* Ferme la fenêtre.
*/
addWindowListener(new java.awt.event.WindowAdapter() {
@Override
public void windowClosing(java.awt.event.WindowEvent windowEvent) {
evaluate.getInstance();
isDispose=true;
dispose();
}
});
/**
* Femer la fenêtre.
*/
btnFermer.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ferme(true);
}
});
/**
* Ajoute une liste ou des étudiants à une liste.
*/
btnAddListeEtudiants.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
CustomInputDialogListeEtudiant.showCustomDialogInputStudentBase();
model.addOrUpdate();
table.setModel(model);
}
});
btnPasDeListe.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
commandes.nodeCSV = null;
baseDonneesListesEtudiants.getInstance(-1);
lblNomListe.setText("Pas de liste sélectionnée.");
}
});
btnAddNewStudent.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(commandes.nodeCSV == null) {
JOptionPane.showMessageDialog(null, "Veuillez sélectionner une liste d'étudiant.", "Erreur", JOptionPane.ERROR_MESSAGE);
return;
}
// Créer des champs pour entrer les informations de l'étudiant
JTextField idField = new JTextField();
JTextField nameField = new JTextField();
JTextField prenomField = new JTextField();
JTextField courrielField = new JTextField();
// Créer un panneau pour les champs
JPanel panel = new JPanel(new GridLayout(0, 1));
panel.add(new JLabel("Nom :"));
panel.add(nameField);
panel.add(new JLabel("Prenom :"));
panel.add(prenomField);
panel.add(new JLabel("ID :"));
panel.add(idField);
panel.add(new JLabel("Courriel :"));
panel.add(courrielField);
// Afficher la boîte de dialogue
int result = JOptionPane.showConfirmDialog(null, panel, "Ajouter un étudiant", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
if (result == JOptionPane.OK_OPTION) {
try {
String name = nameField.getText();
String prenom = prenomField.getText();
String id = idField.getText();
String courriel = courrielField.getText();
if(!EmailValidator.isValidEmail(courriel)) {
JOptionPane.showMessageDialog(null, "Le courriel n'est pas correct.", "Erreur", JOptionPane.ERROR_MESSAGE);
return;
}
if(!idValidator.isValidId(id)) {
JOptionPane.showMessageDialog(null, "L'ID n'est pas correct.", "Erreur", JOptionPane.ERROR_MESSAGE);
return;
}
if(!nameStudentValidator.isValidName(name)) {
JOptionPane.showMessageDialog(null, "Le nom n'est pas correct.", "Erreur", JOptionPane.ERROR_MESSAGE);
return;
}
if(!nameStudentValidator.isValidName(prenom)) {
JOptionPane.showMessageDialog(null, "Le prenom n'est pas correct.", "Erreur", JOptionPane.ERROR_MESSAGE);
return;
}
String champNom = "name";
String champPrenom = "firstname";
String champId = "identification";
String champEmail = "adresse";
boolean erreur = false;
if(commandes.nodeCSV!=null) {
if(commandes.nodeCSV.getAttributs().get("id")!=null) champId = commandes.nodeCSV.getAttributs().get("id");
if(commandes.nodeCSV.getAttributs().get("email")!=null) champEmail = commandes.nodeCSV.getAttributs().get("email");
if(commandes.nodeCSV.getAttributs().get("name")!=null) champNom = commandes.nodeCSV.getAttributs().get("name");
if(commandes.nodeCSV.getAttributs().get("firstname")!=null) champPrenom = commandes.nodeCSV.getAttributs().get("firstname");
if(commandes.nodeCSV.retourneFirstEnfant("student", champId, id)!=null) erreur=true;
if(commandes.nodeCSV.retourneFirstEnfant("student", champEmail, courriel)!=null) erreur=true;
}
// Ajouter l'étudiant au modèle de la table
if(!erreur) {
node nouvelEtudiant = new node();
nouvelEtudiant.setNameNode("student");
nouvelEtudiant.getAttributs().put(champNom,name);
nouvelEtudiant.getAttributs().put(champPrenom,prenom);
nouvelEtudiant.getAttributs().put(champId,id);
nouvelEtudiant.getAttributs().put(champEmail,courriel);
((myTableStudent) tableStudent.getModel()).addStudent(nouvelEtudiant);
new ecritureBaseListesEtudiants(commandes.nodeCSV);
if(!ecritureBaseListesEtudiants.isErreur()) baseDonneesListesEtudiants.getInstance(indexSelect);
}else {
JOptionPane.showMessageDialog(null, "<html>Impossible d'ajouter cet étudiant car l'ID et/ou le courriel"
+ "<br>sont déjà présents.", "Erreur", JOptionPane.ERROR_MESSAGE);
}
} catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(null, "Veuillez entrer des informations valides", "Erreur", JOptionPane.ERROR_MESSAGE);
}
}
}
});
btnRemoveListe.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(commandes.listesEtudiants == null) {
JOptionPane.showMessageDialog(null, "Il n'y a aucune liste d'étudiants chargée en mémoire.", "Erreur", JOptionPane.ERROR_MESSAGE);
return;
}
// Créer un champ
JTextField nameListeField = new JTextField();
// Créer un panneau pour les champs
JPanel panel = new JPanel(new GridLayout(0, 1));
panel.add(new JLabel("Nom de la liste à supprimé :"));
panel.add(nameListeField);
// Afficher la boîte de dialogue
int result = JOptionPane.showConfirmDialog(null, panel, "Supprime une liste d'étudiants", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
if (result == JOptionPane.OK_OPTION) {
node nodeRemove = commandes.listesEtudiants.retourneFirstEnfant("fileCSV", "nameListStudent", nameListeField.getText());
if(nodeRemove!=null) {
commandes.listesEtudiants.getEnfants().remove(nodeRemove);
if(commandes.nodeCSV!=null)if(commandes.nodeCSV.getAttributs().get("nameListStudent").equals(nameListeField.getText())) {
commandes.nodeCSV=null;
}
ecritureBaseListesEtudiants.majBaseListesEtudiant();
if(!ecritureBaseListesEtudiants.isErreur()) baseDonneesListesEtudiants.getInstance(-1);
}else {
JOptionPane.showMessageDialog(null, "La liste n'a pas été trouvée dans la base de données.", "Erreur", JOptionPane.ERROR_MESSAGE);
}
}
}
});
}
private void ListenerTables() {
rowSMTable.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
//Ignore extra messages.
if (e.getValueIsAdjusting()) return;
lsm = (ListSelectionModel)e.getSource();
if (lsm.isSelectionEmpty()) {
System.out.println("Aucune ligne sélectionnée.");
} else {
indexSelect = lsm.getMinSelectionIndex();
System.out.println("La ligne " + indexSelect + " est sélectionnée.");
}
}
});
tableStudent.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2 && e.getButton() == MouseEvent.BUTTON1) {
int row = tableStudent.getSelectedRow();
if (row != -1) {
// Récupérer les données de la ligne sélectionnée
int columnCount = tableStudent.getColumnCount();
StringBuilder rowData = new StringBuilder();
for (int column = 0; column < columnCount; column++) {
rowData.append(tableStudent.getColumnName(column)).append(": ")
.append(tableStudent.getValueAt(row, column)).append("\n");
}
// Afficher les données dans une boîte de dialogue et demander la confirmation pour suppression
int response = JOptionPane.showConfirmDialog(
null,
rowData.toString() + "\nVoulez-vous supprimer cet étudiant?",
"Détails de l'étudiant",
JOptionPane.YES_NO_OPTION,
JOptionPane.INFORMATION_MESSAGE
);
// Supprimer l'étudiant si l'utilisateur a confirmé
if (response == JOptionPane.YES_OPTION) {
((myTableStudent) tableStudent.getModel()).removeRow(row);
baseDonneesListesEtudiants.getInstance(indexSelect);
}
}
}
}
});
table.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() >0) {
if (e.getClickCount() > 0 && e.getButton() == MouseEvent.BUTTON1) {
System.out.println("un click ou plus");
if(lsm!=null)if (!lsm.isSelectionEmpty()) {
indexSelect = lsm.getMinSelectionIndex();
chargeListeEtudiants.chargeDansleNodeCSVListeEtudiants(indexSelect);
baseDonneesListesEtudiants.getInstance(indexSelect);
}
}
}
}
});
}
}

File diff suppressed because it is too large Load Diff

815
src/fenetres/evaluate2.java Normal file
View File

@ -0,0 +1,815 @@
package fenetres;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import javax.swing.JToolBar;
import javax.swing.KeyStroke;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import javax.swing.border.EmptyBorder;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import actions.actAbout;
import net.miginfocom.swing.MigLayout;
import calc.*;
public class evaluate2 extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
/**
*
*/
private JToolBar toolBar;
private JPanel contentPane;
private static JLabel lblPath;
private static JLabel lblFileAnalyse;
private static JLabel lblListe;
private static JLabel lblFichierCSV;
private static JLabel lblFichierSVG;
private static JLabel lblImageDossierEtudiant;
private static JLabel lblNoFeedBack;
private static JLabel lblNoDeatail;
private static JLabel lblnonote;
private static JLabel lblnozip;
private static JLabel lblVerifHistorique;
private static JLabel lblCsvNote;
private static JLabel lblNameEvaluation;
private static JCheckBox chckbxfichiersEtudiants;
private static JCheckBox chckbxZipfeedback;
private static JCheckBox chckbxnoFeedback;
private static JCheckBox chckbxNoNote;
private static JCheckBox chckCSVNotes;
private static JCheckBox chckbxVerif;
// private static JCheckBox chckbxNoDetail;
private static JCheckBox chckPasDeProgression ;
private static afficheText txtpnmessages;
private static evaluate instance;
private static JScrollPane scrollPane = new JScrollPane();
private static JScrollBar verticalScrollBar = scrollPane.getVerticalScrollBar();
public static boolean isDispose = true;
/**
* Create the frame.
*/
public evaluate2() {
ImageIcon img = new ImageIcon(mainApp.class.getResource("/resources/evalcalc.png"));
this.setIconImage(img.getImage());
setTitle(calc.commandes.Titre + " - " + calc.commandes.version + " " + calc.commandes.branch);
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
setBounds(100, 100, 980, 700);
int screenWidth = (int) java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds().getWidth();
int screenHeight = (int) java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds().getHeight();
setLocation(( (screenWidth) - getWidth()) / 2, (screenHeight - getHeight()) / 2);
createMenu();
createToolBar();
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(new BorderLayout(0, 0));
contentPane.add(toolBar, BorderLayout.NORTH);
JPanel panelWest = new JPanel();
contentPane.add(panelWest, BorderLayout.WEST);
panelWest.setLayout(new MigLayout("", "[309px][]", "[38.00][71px][71px][][71px][][74.00][][]"));
JLabel lblTITRE = new JLabel("<HTML><U>PARAMETRES</U></HTML>");
lblTITRE.setForeground(Color.RED);
lblTITRE.setFont(new Font("Tahoma", Font.BOLD, 16));
lblTITRE.setHorizontalAlignment(SwingConstants.CENTER);
panelWest.add(lblTITRE, "cell 0 0,alignx left,aligny center");
lblFileAnalyse = new JLabel("<HTML><B><U>Fichier de l'analyse</U></B> : </HTML>");
lblFileAnalyse.setHorizontalAlignment(SwingConstants.LEFT);
lblFileAnalyse.setFont(new Font("Tahoma", Font.BOLD, 14));
panelWest.add(lblFileAnalyse, "flowy,cell 0 1,alignx left,growy");
chckbxfichiersEtudiants = new JCheckBox("Les fichiers ne sont pas dans des dossiers nominatifs");
chckbxfichiersEtudiants.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
if(chckbxfichiersEtudiants.isSelected()) {
calc.commandes.fichierStudentMoodle=true;
}else {
calc.commandes.fichierStudentMoodle=false;
}
}
});
chckbxfichiersEtudiants.setFont(new Font("Tahoma", Font.PLAIN, 12));
chckbxfichiersEtudiants.setToolTipText("Cochez si les fichiers des étudiants ne sont pas dans des dossier nominatifs");
panelWest.add(chckbxfichiersEtudiants, "flowy,cell 0 2,grow");
lblFichierCSV = new JLabel("<HTML><B><U>Fichier CSV liste des étudiants</U></B></HTML> :");
lblFichierCSV.setFont(new Font("Tahoma", Font.BOLD, 14));
panelWest.add(lblFichierCSV, "flowy,cell 0 4,grow");
lblFichierSVG = new JLabel("<HTML><B><U>Fichier SVG</U></B> :</HTML>");
lblFichierSVG.setFont(new Font("Tahoma", Font.BOLD, 14));
panelWest.add(lblFichierSVG, "flowy,cell 0 6,growx");
chckCSVNotes = new JCheckBox("Créer un fichier CSV des notes");
chckCSVNotes.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
if(chckCSVNotes.isSelected()) {
calc.commandes.ecritNoteCSV=true;
}else {
calc.commandes.ecritNoteCSV=false;
}
}
});
chckCSVNotes.setToolTipText("Cochez si vous voulez importer les notes dans un fichier CSV.");
panelWest.add(chckCSVNotes, "cell 0 4,grow");
lblPath = new JLabel();
lblPath.setHorizontalAlignment(SwingConstants.LEFT);
lblPath.setFont(new Font("Tahoma", Font.BOLD, 14));
lblPath.setText("<HTML><B><U>Dossier de l'analyse</U></B> : " + calc.commandes.path.substring(calc.commandes.path.lastIndexOf("\\")+1,calc.commandes.path.length()) + "</HTML>");
panelWest.add(lblPath, "cell 0 1,grow");
chckbxnoFeedback = new JCheckBox("Pas de feedback");
chckbxnoFeedback.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
if(chckbxnoFeedback.isSelected()) {
calc.commandes.sansFeeback=true;
}else {
calc.commandes.sansFeeback=false;
}
}
});
chckbxnoFeedback.setToolTipText("Cochez si vous ne voulez pas générer des feedbacks");
chckbxnoFeedback.setFont(new Font("Tahoma", Font.PLAIN, 12));
panelWest.add(chckbxnoFeedback, "cell 0 2,grow");
chckbxZipfeedback = new JCheckBox("Zip les feedbacks");
chckbxZipfeedback.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
if(chckbxZipfeedback.isSelected()) {
calc.commandes.zipfeedback=true;
}else {
calc.commandes.zipfeedback=false;
}
}
});
chckbxZipfeedback.setToolTipText("Cochez si vous voulez placer tous les feedbacks dans une archive ZIP");
chckbxZipfeedback.setFont(new Font("Tahoma", Font.PLAIN, 12));
panelWest.add(chckbxZipfeedback, "cell 0 2,grow");
chckbxNoNote = new JCheckBox("Pas de note dans les feedbacks");
chckbxNoNote.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
if(chckbxNoNote.isSelected()) {
calc.commandes.noNote=true;
}else {
calc.commandes.noNote=false;
}
}
});
chckbxNoNote.setToolTipText("Cochez si vous voulez pas faire apparaître les notes dans les feedbacks");
chckbxNoNote.setFont(new Font("Tahoma", Font.PLAIN, 12));
panelWest.add(chckbxNoNote, "cell 0 2,grow");
chckbxVerif = new JCheckBox("Vérification des historiques avant analyse");
chckbxVerif.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
if(chckbxVerif.isSelected()) {
calc.commandes.verifHisto2=true;
}else {
calc.commandes.verifHisto2=false;
}
}
});
chckbxVerif.setToolTipText("Cochez si vous voulez vérifier les échanges de fichiers entre les étudiants.");
chckbxVerif.setFont(new Font("Tahoma", Font.PLAIN, 12));
panelWest.add(chckbxVerif, "cell 0 2,grow");
JPanel panelCentre = new JPanel();
contentPane.add(panelCentre, BorderLayout.CENTER);
panelCentre.setLayout(new BorderLayout(0, 0));
JScrollPane scrollPane = new JScrollPane();
panelCentre.add(scrollPane);
txtpnmessages = new afficheText();
txtpnmessages.setFont(new Font("Tahoma", Font.PLAIN, 16));
txtpnmessages.setContentType("text/html");
txtpnmessages.setText(baliseStyle.balise() + "<hr><h1 class\"city\">*** Charger un fichier d'analyse. ***</h1><hr>");
scrollPane.setViewportView(txtpnmessages);
this.setExtendedState(MAXIMIZED_BOTH);
ListenerAction();
refreshLabel();
setVisible(true);
// Pro();
}
/**
* Affichage de la fenêtre.
* @return
*/
public static evaluate getInstance() {
if (instance == null) {
instance = new evaluate();
}else {
instance.setVisible(true);
}
if(commandes.fichierAnalyseValide) {
refreshLabel();
}else {
txtpnmessages.setText(baliseStyle.balise() + "<hr class=\"city\"><h1>*** Veuillez charger une évaluation ***</h1><hr>");
}
positionScrollDebut();
isDispose=false;
return instance;
}
public static void positionScrollDebut() {
// Positionne le curseur au début du texte pour que le JScrollPane affiche le haut
SwingUtilities.invokeLater(() -> {
txtpnmessages.setCaretPosition(0);
verticalScrollBar.setValue(verticalScrollBar.getMinimum());
});
}
private void ListenerAction() {
/*Some piece of code*/
addWindowListener(new java.awt.event.WindowAdapter() {
@Override
public void windowClosing(java.awt.event.WindowEvent windowEvent) {
if(JOptionPane.showConfirmDialog(null,"Voulez-vous quitter analyseWriter?", "Quitter", JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE)==JOptionPane.YES_OPTION) {
dispose();
}
}
});
}
private void createMenu() {
JMenuBar menuBar = new JMenuBar();
menuBar.setFont(new Font("Segoe UI", Font.BOLD, 14));
setJMenuBar(menuBar);
JMenu mnNewMenu = new JMenu("Fichier");
mnNewMenu.setMnemonic( 'F' );
menuBar.add(mnNewMenu);
mnNewMenu.add( actSave );
mnNewMenu.add( actSaveas );
mnNewMenu.addSeparator();
mnNewMenu.add( actExit );
JMenu mnMenu_Fichier = new JMenu("Fichier d'analyse");
menuBar.add(mnMenu_Fichier);
mnMenu_Fichier.add( actOpen );
mnMenu_Fichier.addSeparator();
mnMenu_Fichier.add( actAboutFichierAnalyse );
mnMenu_Fichier.add( actModifierFichierAnalyse );
JMenu mnMenu_Liste_Etudiant = new JMenu("Liste des étudiants");
menuBar.add(mnMenu_Liste_Etudiant);
mnMenu_Liste_Etudiant.addSeparator();
JMenu mnMenu_Logo = new JMenu("Logo");
menuBar.add(mnMenu_Logo);
JMenu mnMenu_Evaluation = new JMenu("Evaluation des étudiants");
menuBar.add(mnMenu_Evaluation);
mnMenu_Evaluation.add(actSelectFolder);
mnMenu_Evaluation.addSeparator();
mnMenu_Evaluation.add(actEvaluate);
mnMenu_Evaluation.addSeparator();
mnMenu_Evaluation.add(actVerifHistorique);
JMenu mnMenu_Informations = new JMenu("Informations");
menuBar.add(mnMenu_Informations);
mnMenu_Informations.add(actTutoriels);
mnMenu_Informations.addSeparator();
mnMenu_Informations.add( new actAbout() );
}
private void createToolBar() {
toolBar = new JToolBar();
JButton btnSelectFileAnalyse = toolBar.add( actOpen );
btnSelectFileAnalyse.setHideActionText( true );
btnSelectFileAnalyse.setIcon(new ImageIcon(evaluate.class.getResource("/resources/fichierAnalyse.png")));
JButton btnAfficheCodeFichierAnalyse = toolBar.add( actAboutFichierAnalyse );
btnAfficheCodeFichierAnalyse.setHideActionText(true);
btnAfficheCodeFichierAnalyse.setIcon(new ImageIcon(evaluate.class.getResource("/resources/fichierAnalyseInfo.png")));
toolBar.add(btnAfficheCodeFichierAnalyse);
JButton btnModifierFichierAnalyse = toolBar.add(actModifierFichierAnalyse);
btnModifierFichierAnalyse.setIcon(new ImageIcon(evaluate.class.getResource("/resources/fichierAnalyseModif.png")));
btnModifierFichierAnalyse.setHideActionText(true);
toolBar.add(btnModifierFichierAnalyse);
toolBar.addSeparator();
JButton btnEvaluerLesFichiers = toolBar.add(actEvaluate);
btnEvaluerLesFichiers.setHideActionText(true);
toolBar.addSeparator();
toolBar.addSeparator();
JButton btnSelectFolder = toolBar.add(actSelectFolder);
btnSelectFolder.setIcon(new ImageIcon(evaluate.class.getResource("/resources/open.png")));
btnSelectFolder.setHideActionText(true);
toolBar.add(btnSelectFolder);
btnEvaluerLesFichiers.setIcon(new ImageIcon(evaluate.class.getResource("/resources/evaluate.png")));
toolBar.add(btnEvaluerLesFichiers);
JButton btnVerifHistorique = toolBar.add(actVerifHistorique);
btnVerifHistorique.setIcon(new ImageIcon(evaluate.class.getResource("/resources/verifhistorique.png")));
btnVerifHistorique.setHideActionText(true);
toolBar.add(btnVerifHistorique);
toolBar.addSeparator();
JButton btnAbout = toolBar.add(new actAbout());
btnAbout.setIcon(new ImageIcon(evaluate.class.getResource("/resources/apropos.png")));
btnAbout.setHideActionText(true);
toolBar.add(btnAbout);
JButton btnTutoriels = toolBar.add(actTutoriels);
btnTutoriels.setIcon(new ImageIcon(evaluate.class.getResource("/resources/tutoriel.png")));
toolBar.add(btnTutoriels);
toolBar.addSeparator();
JButton btnExit = toolBar.add(actExit);
btnExit.setIcon(new ImageIcon(evaluate.class.getResource("/resources/exit.png")));
btnExit.setHideActionText(true);
toolBar.add(btnExit);
}
/**
* Raffraichissement des informationss.</br>
* Activation des chckBoxs.</br>
*/
private static void refreshLabel() {
if(!commandes.fichierAnalyseValide) {
System.out.println( "Erreur du fichier d'analyse" );
// if(!verificationFichierAnalyse_node_commandesSujet.messageErreur.toString().isEmpty()) {
// txtpnmessages.setText(verificationFichierAnalyse_node_commandesSujet.messageErreur.toString());
// }
chckbxfichiersEtudiants.setEnabled(false);
chckbxZipfeedback.setEnabled(false);
chckbxnoFeedback.setEnabled(false);
chckbxNoNote.setEnabled(false);
chckCSVNotes.setEnabled(false);
chckbxVerif.setEnabled(false);
// chckbxNoDetail.setEnabled(false);
chckPasDeProgression.setEnabled(false);
}else {
chckbxfichiersEtudiants.setSelected(commandes.fichierStudentMoodle);
chckbxZipfeedback.setSelected(commandes.zipfeedback);
chckbxnoFeedback.setSelected(commandes.sansFeeback);
chckCSVNotes.setSelected(commandes.ecritNoteCSV);
chckbxNoNote.setSelected(commandes.noNote);
chckbxVerif.setSelected(commandes.verifHisto2);
// chckbxNoDetail.setSelected(commandes.noDetail);
chckPasDeProgression.setSelected(commandes.noAfficheProgression);
chckbxfichiersEtudiants.setEnabled(true);
chckbxZipfeedback.setEnabled(true);
chckbxnoFeedback.setEnabled(true);
chckbxNoNote.setEnabled(true);
chckCSVNotes.setEnabled(true);
chckbxVerif.setEnabled(true);
// chckbxNoDetail.setEnabled(true);
chckPasDeProgression.setEnabled(true);
if(commandes.nodeCSV!=null) {
if(commandes.nodeCSV.getAttributs().get("nameListStudent")==null) {
commandes.nodeCSV.getAttributs().put("nameListStudent","?");
commandes.nodeCSV.getAttributs().put("year", "?");
lblListe.setText("<html><b>Liste ???</b></html>");
}else {
lblListe.setText("<html><b>"+commandes.nodeCSV.getAttributs().get("nameListStudent")+"</b></html>");
}
}else {
lblListe.setText("<html><b>Liste ???</b></html>");
}
txtpnmessages.afficheChargementFichierAnalyse();
}
String nameEvaluation = commandes.NameEvaluationCharger;
if(nameEvaluation.length()>44) nameEvaluation = nameEvaluation.substring(0, 44) + "<br>" + nameEvaluation.substring(44, nameEvaluation.length());
String nameDossierAnalyse = commandes.path.substring(commandes.path.lastIndexOf("\\")+1,commandes.path.length());
if(nameDossierAnalyse.length()>44) nameDossierAnalyse = nameDossierAnalyse.substring(0, 44) + "<br>" + nameDossierAnalyse.substring(44, nameDossierAnalyse.length());
String nameFichierAnalyse = commandes.analysis_filename;
if(nameFichierAnalyse.length()>44) nameFichierAnalyse = nameFichierAnalyse.substring(0, 44) + "<br>" + nameFichierAnalyse.substring(44, nameFichierAnalyse.length());
if(commandes.NameEvaluationCharger!=null) lblNameEvaluation.setText("<html>Évalution :<br><b> "+ nameEvaluation +"</b></html>");
if(commandes.path!=null) lblPath.setText("<html><p>Dossier de l'analyse :<br><b> " + nameDossierAnalyse + "</b></p><hr></html>");
if(commandes.analysis_filename!=null) lblFileAnalyse.setText("<html>Fichier de l'analyse :<br><b> " + nameFichierAnalyse + "</b></html>");
}
public static void ferme() {
if(!isDispose) {
isDispose=true;
instance.dispose();
}
}
/**
*
* evaluer l'ensemble des fichiers des étudiants
*/
private AbstractAction actEvaluate = new AbstractAction() {
private static final long serialVersionUID = 1L;
{
putValue(Action.LARGE_ICON_KEY, new ImageIcon(evaluate.class.getResource("/resources/evaluate.png")));
putValue( Action.NAME, "Evaluer les fichiers" );
putValue( Action.SMALL_ICON, new ImageIcon(evaluate.class.getResource("/resources/evaluatemini.png")) );
putValue( Action.MNEMONIC_KEY, KeyEvent.VK_E );
putValue( Action.SHORT_DESCRIPTION, "Evaluer les fichiers (CTRL+E)" );
putValue( Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_E, InputEvent.CTRL_DOWN_MASK) );
}
@Override
public void actionPerformed(ActionEvent e) {
// Thread t2 = new Thread(new evaluerLesFichiersEtudiants(txtpnmessages));
// t2.start();
}
};
/**
* Ouvre et affiche un fichier XML
*/
private AbstractAction actOpen = new AbstractAction() {
private static final long serialVersionUID = 1L;
{
putValue(LARGE_ICON_KEY, new ImageIcon(evaluate.class.getResource("/resources/fichierAnalyse.png")));
putValue( Action.NAME, "Ouvrir un nouveau fichier d'analyse" );
putValue( Action.SMALL_ICON, new ImageIcon(create.class.getResource("/resources/fichierAnalysemini.png")) );
putValue( Action.MNEMONIC_KEY, KeyEvent.VK_O );
putValue( Action.SHORT_DESCRIPTION, "Ouvrir un nouveau fichier d'analyse (CTRL+O)" );
putValue( Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_DOWN_MASK) );
}
@Override
public void actionPerformed( ActionEvent e ) {
new filechooserXML();
refreshLabel();
System.out.println( "Open" );
}
};
/**
* Sélectionne le dossier courant contenant les fichiers des étudiants
*/
private AbstractAction actSelectFolder = new AbstractAction() {
private static final long serialVersionUID = 1L;
{
putValue(LARGE_ICON_KEY, new ImageIcon(evaluate.class.getResource("/resources/open.png")));
putValue( Action.NAME, "Dossier d'analyse" );
putValue( Action.SMALL_ICON, new ImageIcon(evaluate.class.getResource("/resources/openmini.png")) );
putValue( Action.MNEMONIC_KEY, KeyEvent.VK_U );
putValue( Action.SHORT_DESCRIPTION, "Dossier d'analyse (CTRL+U)" );
putValue( Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_U, InputEvent.CTRL_DOWN_MASK) );
}
@Override
public void actionPerformed( ActionEvent e ) {
JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory(new java.io.File(calc.commandes.path));
chooser.setDialogTitle("Sélectionner le dossier contenant les fichiers des étudiants.");
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
chooser.setAcceptAllFileFilterUsed(false);
if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
System.out.println("getCurrentDirectory(): " + chooser.getCurrentDirectory());
System.out.println("getSelectedFile() : " + chooser.getSelectedFile().getAbsolutePath());
calc.commandes.path = chooser.getSelectedFile().getAbsolutePath();
} else {
System.out.println("No Selection ");
}
refreshLabel();
}
};
/**
/**
* Verification
*/
private AbstractAction actVerifHistorique = new AbstractAction() {
private static final long serialVersionUID = 1L;
{
putValue(Action.LARGE_ICON_KEY, new ImageIcon(evaluate.class.getResource("/resources/verifhistorique.png")));
putValue( Action.NAME, "Evaluer l'historique des modification" );
putValue( Action.SMALL_ICON, new ImageIcon(evaluate.class.getResource("/resources/verifhistoriquemini.png")));
putValue( Action.MNEMONIC_KEY, KeyEvent.VK_H );
putValue( Action.SHORT_DESCRIPTION, "Evaluer l'historique des modification (CTRL+H)" );
putValue( Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_H, InputEvent.CTRL_DOWN_MASK) );
}
@Override
public void actionPerformed( ActionEvent e ) {
calc.commandes.verifHisto = true;
calc.commandes.analyse = false;
if(!calc.commandes.path.isEmpty()) {
}else {
txtpnmessages.setText("*** Veuillez sélectionner un dossier d'analyse. ***");
}
calc.commandes.verifHisto = false;
}
};
/**
* Information sur le fichier d'analyse
*/
private AbstractAction actAboutFichierAnalyse = new AbstractAction() {
private static final long serialVersionUID = 1L;
{
putValue( Action.NAME, "Informations du fichier d'analyse" );
putValue( Action.SMALL_ICON, new ImageIcon(evaluate.class.getResource("/resources/fichierAnalyseInfo2mini.png")));
putValue( Action.MNEMONIC_KEY, KeyEvent.VK_K );
putValue( Action.SHORT_DESCRIPTION, "Informations du fichier d'analyse (CTRL+K)" );
putValue( Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_K, InputEvent.CTRL_DOWN_MASK) );
}
@Override public void actionPerformed( ActionEvent e ) {
if(calc.commandes.fichierAnalyseValide) {
txtpnmessages.afficheChargementFichierAnalyse();
}else {
txtpnmessages.setText(baliseStyle.balise() + "<hr class=\"city\"><h1>*** Veuillez charger une évaluation ***</h1><hr>");
}
System.out.println( "Refresh Labels and texts" );
}
};
/**
* Quitter l'application
*/
private AbstractAction actExit = new AbstractAction() {
private static final long serialVersionUID = 1L;
{
putValue( Action.NAME, "Quitter" );
putValue( Action.SMALL_ICON, new ImageIcon(evaluate.class.getResource("/resources/exitmini.png")));
putValue( Action.LARGE_ICON_KEY, new ImageIcon(evaluate.class.getResource("/resources/exit.png")) );
putValue( Action.MNEMONIC_KEY, KeyEvent.VK_Q );
putValue( Action.SHORT_DESCRIPTION, "Quitter (CRTL+Q)" );
putValue( Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_Q, KeyEvent.CTRL_DOWN_MASK ) );
}
@Override public void actionPerformed( ActionEvent e ) {
if(JOptionPane.showConfirmDialog(null,"Voulez-vous quitter analyseWriter?", "Quitter", JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE)==JOptionPane.YES_OPTION) {
dispose();
}
}
};
/**
* Enregistre L'évaluation
*/
private AbstractAction actSave = new AbstractAction() {
private static final long serialVersionUID = 1L;
{
putValue( Action.NAME, "Enregistrer la zone de texte" );
putValue( Action.SMALL_ICON, new ImageIcon(evaluate.class.getResource("/resources/savemini.png")));
putValue( Action.MNEMONIC_KEY, KeyEvent.VK_S );
putValue( Action.SHORT_DESCRIPTION, "Enregistrer la zone de texte (CRTL+S)" );
putValue( Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_S, KeyEvent.CTRL_DOWN_MASK ) );
}
@Override public void actionPerformed( ActionEvent e ) {
}
};
/**
* Enregistre sous l'évaluation
*/
private AbstractAction actSaveas = new AbstractAction() {
private static final long serialVersionUID = 1L;
{
putValue( Action.NAME, "Enregistrer la zone de texte sous ..." );
putValue( Action.SMALL_ICON, new ImageIcon(evaluate.class.getResource("/resources/saveasmini.png")));
putValue( Action.SHORT_DESCRIPTION, "Enregistrer la zone de texte sous ..." );
}
@Override public void actionPerformed( ActionEvent e ) {
}
};
/**
*
*/
@SuppressWarnings("unused")
private AbstractAction actSavePreference = new AbstractAction() {
private static final long serialVersionUID = 1L;
{
putValue( Action.NAME, "Enregistrer prefrences" );
putValue( Action.SMALL_ICON, new ImageIcon(create.class.getResource("/resources/savepreferencemini.png")) );
putValue( Action.LARGE_ICON_KEY, new ImageIcon(create.class.getResource("/resources/savepreference.png")) );
putValue( Action.MNEMONIC_KEY, KeyEvent.VK_W );
putValue( Action.SHORT_DESCRIPTION, "Enregistrer prefrences" );
putValue( Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_W, KeyEvent.ALT_DOWN_MASK) );
}
@Override public void actionPerformed( ActionEvent e ) {
if(calc.commandes.fichierAnalyseValide) {
}else {
JOptionPane.showMessageDialog(null, "Charger un fichier Writer (.odt) ou un fichier d'évaluaton (.xml).");
}
System.out.println( "Configuration" );
}
};
/**
* Affiche les tutoriels sur Youtube
*/
private AbstractAction actTutoriels = new AbstractAction() {
private static final long serialVersionUID = 1L;
{
putValue( Action.NAME, "Tutoriels" );
putValue( Action.SMALL_ICON, new ImageIcon(create.class.getResource("/resources/tutorielmini.png")));
putValue(Action.LARGE_ICON_KEY, new ImageIcon(create.class.getResource("/resources/tutoriel.png")));
putValue( Action.SHORT_DESCRIPTION, "Tutoriels" );
}
@Override public void actionPerformed( ActionEvent e ) {
try {
String url = "https://www.youtube.com/channel/UCG3tJWp_oZvOumH5kWUJ55g";
java.awt.Desktop.getDesktop().browse(java.net.URI.create(url));
}
catch (java.io.IOException e1) {
System.out.println(e1.getMessage());
}
}
};
/**
* Affiche le code XMl du fichier d'analyse
*/
private AbstractAction actModifierFichierAnalyse = new AbstractAction() {
private static final long serialVersionUID = 1L;
{
putValue( Action.NAME, "Modifier le fichier d'analyse" );
putValue( Action.SMALL_ICON, new ImageIcon(evaluate.class.getResource("/resources/fichierAnalyseModifmini.png")) );
putValue(Action.LARGE_ICON_KEY, new ImageIcon(evaluate.class.getResource("/resources/fichierAnalyseModif.png")));
putValue( Action.MNEMONIC_KEY, KeyEvent.VK_M );
putValue( Action.SHORT_DESCRIPTION, "Modifier le fichier d'analyse (CTRL+M)" );
putValue( Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_M, InputEvent.CTRL_DOWN_MASK) );
}
@Override public void actionPerformed( ActionEvent e ) {
create.getInstance();
dispose();
}
};
// /**
// * Permet l'évaluation des fichiers des étudaints.
// * @throws ParserConfigurationException
// * @throws SAXException
// * @throws IOException
// * @throws CloneNotSupportedException
// */
// private void evaluerLesFichiersEtudiants() throws ParserConfigurationException, SAXException, IOException, CloneNotSupportedException {
//
// calc.commandes.analyse=true;
// progressBarre.setVisible(true);
//
// if(chckbxfichiersEtudaints.isSelected()) calc.commandes.fichierStudentMoodle=true;
// if(chckbxZipfeedback.isSelected()) calc.commandes.zipfeedback=true;
// if(chckbxnoFeedback.isSelected()) calc.commandes.sansFeeback=true;
// if(chckbxNoNote.isSelected()) calc.commandes.noNote=true;
// if(chckCSVNotes.isSelected()) calc.commandes.ecritNoteCSV=true;
// if(chckbxNewLogo.isSelected()) calc.commandes.newLogo=true;
// if(chckbxNoLogo.isSelected()) calc.commandes.noLogo = true;
// if(chckbxVerif.isSelected()) calc.commandes.verifHisto2 = true;
//
// meptl.analyseVerifieHistoriqueLesFichiersEtudiantsEtExportNoteCSV();
//
// txtpnmessages.setText(calc.commandes.message.toString());
//
//
// }
}

BIN
src/resources/GPLv3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
src/resources/GPLv3mini.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 699 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 912 B

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 554 B

After

Width:  |  Height:  |  Size: 901 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
src/resources/feedback.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
src/resources/newlogo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1003 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Some files were not shown because too many files have changed in this diff Show More