1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 import os,os.path
20 import xml.dom.minidom
21 import Utile.constantesDonnees, Utile.codageXml
22 from Utile.constantesDonnees import *
23 from Utile.codageXml import encodingNode
24 import DGManager
25 import Donnees.arbre
26
52 """ Crée une balise version dans le fichier
53 pre: isinstance(nomVersion,str) """
54 fic = Utile.codageXml.lireDocXml(self.fileInfo)
55 larbre = fic.getElementsByTagName(B_ARBRE)
56 lVersions = larbre[0].getElementsByTagName(B_VERSION)
57 for version in lVersions:
58 if version.getAttribute(B_ID)==nomVersion:
59
60 larbre[0].removeChild(version)
61 Utile.codageXml.ecrireDocXml(self.fileInfo,fic)
62 return
63 - def creerEtat(self,nomVersion, nomEtat, etatPere=""):
64 """ Crée une balise état dans le fichier
65 pre: isinstance(nomVersion,str) and isinstance(nomEtat,str) and isinstance(etatPere,str)"""
66 xmlEtat = self.__creerEtat(nomEtat)
67 fic = Utile.codageXml.lireDocXml(self.fileInfo)
68 for version in fic.getElementsByTagName(B_VERSION):
69 if version.getAttribute(B_ID) == nomVersion:
70 if etatPere == "":
71 version.appendChild(xmlEtat)
72 Utile.codageXml.ecrireDocXml(self.fileInfo,fic)
73 return
74 else:
75 for etat in version.getElementsByTagName(B_ETAT):
76 if etat.getAttribute(B_ID) == etatPere:
77 etat.appendChild(xmlEtat)
78 Utile.codageXml.ecrireDocXml(self.fileInfo,fic)
79 return
80
82 """ Supprime un état
83 pre: isinstance(nomVersion,str) and isinstance(nomEtat,str) """
84 fic = Utile.codageXml.lireDocXml(self.fileInfo)
85 lVersions = fic.getElementsByTagName(B_VERSION)
86 for version in lVersions:
87 if version.getAttribute(B_ID) == nomVersion:
88 for etat in version.getElementsByTagName(B_ETAT):
89 if etat.getAttribute(B_ID) == nomEtat:
90
91 parent = etat.parentNode
92 parent.removeChild(etat)
93 Utile.codageXml.ecrireDocXml(self.fileInfo,fic)
94 return
95
97 """ Retourne le nom des ID des etats fils d'un état qui correspondent aux noms De fichier
98 pre: isinstance(nomVersion,str) and isinstance(nomEtat,str)
99 post isinstance(__return__,list) """
100 lef = []
101 fic = Utile.codageXml.lireDocXml(self.fileInfo)
102 larbre = fic.getElementsByTagName(B_ARBRE)
103 for version in larbre[0].getElementsByTagName(B_VERSION):
104 if version.getAttribute(B_ID) == nomVersion:
105 for etat in version.getElementsByTagName(B_ETAT):
106 if etat.getAttribute(B_ID) == nomEtat:
107 lEtatsFils = etat.getElementsByTagName(B_ETAT)
108 for etatFils in lEtatsFils:
109 lef.append(etatFils.getAttribute(B_ID))
110 return lef
111 return []
112
114 """ Renvoie l'arbre en xml d'un DG
115 En fait renvoie que l'arbre des versions car c'est seulement ce dont on a besoin
116 cela permet de ne pas construire tout l'arbre xlm lorsque le fichier est très gros (plusieurs Mo)
117 post: isinstance(__return__,Donnees.arbre.Arbre)"""
118 lFils = []
119 fic = Utile.codageXml.lireDocXmlVersionTree(self.fileInfo)
120 larbre = fic.getElementsByTagName(B_ARBRE)
121 for version in larbre[0].getElementsByTagName(B_VERSION):
122 lFils.append(self.__getFils(version))
123 return Donnees.arbre.Arbre(lFils)
124
126 """ Lit les fils d'un noeud version ou état et retourne ce noeud en tant que Version ou Etat
127 post: isinstance(__return__,Donnees.arbre.Version) or isinstance(__return__,Donnees.arbre.Etat) """
128 lFils = []
129 name = pere.getAttribute(B_ID)
130 for fils in pere.childNodes:
131 lFils.append(self.__getFils(fils))
132 if pere.tagName == B_VERSION:
133 return Donnees.arbre.Version(name, lFils)
134 else:
135 return Donnees.arbre.Etat(name, lFils)
136
138 """ Methode qui cree le document xml
139 pre: isinstance(pAuteur,DGManager.Auteur) and isinstance(pOeuvre,DGManager.Oeuvre)"""
140 xmldoc = xml.dom.minidom.Document()
141
142 xmltagRoot = xmldoc.createElement(B_ROOT)
143
144 xmltagAuteur = self.__baliseAuteur(pAuteur)
145 xmltagRoot.appendChild(xmltagAuteur)
146
147 xmltagOeuvre = self.__baliseOeuvre(pOeuvre)
148 xmltagRoot.appendChild(xmltagOeuvre)
149
150 xmltagArbre = self.__baliseArbre()
151 xmltagRoot.appendChild(xmltagArbre)
152 xmldoc.appendChild(xmltagRoot)
153 return xmldoc
154
156 """ Methode privee qui construit la balise Auteur
157 pre: isinstance(pAuteur,DGManager.Auteur) """
158 xmldoc = xml.dom.minidom.Document()
159
160 xmltagAuteur = xmldoc.createElement(B_AUTEUR)
161
162 xmlNom = xmldoc.createElement(B_NOM)
163 nomA = str(pAuteur.getNom())
164 nom = xmldoc.createTextNode(encodingNode(nomA))
165 xmlNom.appendChild(nom)
166
167 xmlPrenom = xmldoc.createElement(B_PRENOM)
168 prenomA = str(pAuteur.getPrenom())
169 prenom = xmldoc.createTextNode(encodingNode(prenomA))
170 xmlPrenom.appendChild(prenom)
171
172 xmlNaissance = xmldoc.createElement(B_NAISSANCE)
173 naisA = str(pAuteur.getNaissance())
174 naissance = xmldoc.createTextNode(encodingNode(naisA))
175 xmlNaissance.appendChild(naissance)
176
177 xmlDeces = xmldoc.createElement(B_DECES)
178 decA = str(pAuteur.getDeces())
179 deces = xmldoc.createTextNode(encodingNode(decA))
180 xmlDeces.appendChild(deces)
181
182 xmltagAuteur.appendChild(xmlNom)
183 xmltagAuteur.appendChild(xmlPrenom)
184 xmltagAuteur.appendChild(xmlNaissance)
185 xmltagAuteur.appendChild(xmlDeces)
186 return xmltagAuteur
187
189 """ Methode privee qui construit la balise Oeuvre
190 pre: isinstance(pOeuvre,DGManager.Oeuvre) """
191 xmldoc = xml.dom.minidom.Document()
192
193 xmltagOeuvre = xmldoc.createElement(B_OEUVRE)
194
195 xmlTitre = xmldoc.createElement(B_TITRE)
196 titreO = pOeuvre.getTitre()
197 titre = xmldoc.createTextNode(encodingNode(str(titreO)))
198 xmlTitre.appendChild(titre)
199
200 xmlEdition = xmldoc.createElement(B_EDITION)
201 editO = pOeuvre.getEdition()
202 edition = xmldoc.createTextNode(encodingNode(str(editO)))
203 xmlEdition.appendChild(edition)
204
205 xmlPublication = xmldoc.createElement(B_PUBLICATION)
206 pubO = pOeuvre.getPublication()
207 publication = xmldoc.createTextNode(encodingNode(str(pubO)))
208 xmlPublication.appendChild(publication)
209
210 xmltagOeuvre.appendChild(xmlTitre)
211 xmltagOeuvre.appendChild(xmlEdition)
212 xmltagOeuvre.appendChild(xmlPublication)
213 return xmltagOeuvre
214
216 xmldoc = xml.dom.minidom.Document()
217 xmltagArbre = xmldoc.createElement(B_ARBRE)
218 return xmltagArbre
219
221 xmldoc = xml.dom.minidom.Document()
222 xmltagVersion = xmldoc.createElement(B_VERSION)
223 xmltagVersion.setAttribute(B_ID,pName)
224 return xmltagVersion
225
227 xmldoc = xml.dom.minidom.Document()
228 xmltagEtat = xmldoc.createElement(B_ETAT)
229 xmltagEtat.setAttribute(B_ID,pName)
230 return xmltagEtat
231