Salome HOME
Updating copyright date information
[modules/adao.git] / src / daEficas / traduitADAOV7_5_0ToV7_7_0.py
1 #-*-coding:iso-8859-1-*-
2 #
3 # Copyright (C) 2008-2016 EDF R&D
4 #
5 # This file is part of SALOME ADAO module
6 #
7 # This library is free software; you can redistribute it and/or
8 # modify it under the terms of the GNU Lesser General Public
9 # License as published by the Free Software Foundation; either
10 # version 2.1 of the License.
11 #
12 # This library is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15 # Lesser General Public License for more details.
16 #
17 # You should have received a copy of the GNU Lesser General Public
18 # License along with this library; if not, write to the Free Software
19 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
20 #
21 # Author: Jean-Philippe Argaud, jean-philippe.argaud@edf.fr, EDF R&D
22
23 import optparse
24 import sys
25 import re
26
27 import Traducteur.log as log
28 from Traducteur.load         import getJDC, getJDCFromTexte
29 from Traducteur.mocles       import parseKeywords
30 from Traducteur.dictErreurs  import GenereErreurPourCommande
31 from Traducteur.inseremocle  import *
32 from Traducteur.movemocle    import *
33 from Traducteur.renamemocle  import *
34
35 version_out = "V7_7_0"
36
37 usage="""Usage: python %prog [options]
38
39 Typical use is:
40   python %prog --infile=xxxx.comm --outfile=yyyy.comm"""
41
42 atraiter = (
43     "ASSIMILATION_STUDY",
44     "CHECKING_STUDY",
45     )
46
47 dict_erreurs = {
48     "ASSIMILATION_STUDY":"Changements dans l'arbre et dans les noms",
49     "CHECKING_STUDY":"Changements dans l'arbre et dans les noms",
50     }
51
52 sys.dict_erreurs=dict_erreurs
53
54 def traduc(infile=None,outfile=None,texte=None,flog=None):
55     hdlr = log.initialise(flog)
56     if infile is not None:
57         jdc  = getJDC(infile,atraiter)
58     elif texte is not None:
59         jdc  = getJDCFromTexte(texte,atraiter)
60     else:
61         raise ValueError("Traduction du JDC impossible")
62
63     #Parse les mocles des commandes
64     parseKeywords(jdc.root)
65     GenereErreurPourCommande(jdc,('Algorithm','AlgorithmParameters','FunctionDict'))
66     # ==========================================================================
67
68     for command in atraiter:
69         # Insere le MC s'il n'existe pas
70         chercheOperInsereFacteurSiRegle(jdc, command, "AlgorithmParameters",((("AlgorithmParameters",),"nexistepasMCFParmi"),))
71         # Deplace le MC
72         moveMotClefInOperToFact(jdc, command, "Algorithm", "AlgorithmParameters", plusieursFois=False)
73         # Renomme le MC
74         renameMotCleInFact(jdc, command, "AlgorithmParameters", "INPUT_TYPE", "Parameters")
75         # Renomme le MC
76         renameMotCle(jdc, command, "Study_name", "StudyName")
77         renameMotCle(jdc, command, "Study_repertory", "StudyRepertory")
78
79     # ==========================================================================
80     fsrc = jdc.getSource()
81     fsrc = re.sub( "FunctionDict", "ScriptWithSwitch", fsrc )
82     fsrc = re.sub( "FUNCTIONDICT_FILE", "SCRIPTWITHSWITCH_FILE", fsrc )
83     fsrc = re.sub( "#VERSION_CATALOGUE:.*:FIN VERSION_CATALOGUE", "#VERSION_CATALOGUE:%s:FIN VERSION_CATALOGUE"%version_out, fsrc)
84     fsrc = re.sub( "#CHECKSUM.*FIN CHECKSUM", "", fsrc )
85     #
86     log.ferme(hdlr)
87     if outfile is not None:
88         f=open(outfile,'w')
89         f.write( fsrc )
90         f.close()
91     else:
92         return fsrc
93
94 class MonTraducteur:
95     def __init__(self,texte):
96         self.__texte = str(texte)
97     def traduit(self):
98         return traduc(infile=None,outfile=None,texte=self.__texte,flog=None)
99
100 def main():
101     parser = optparse.OptionParser(usage=usage)
102
103     parser.add_option('-i','--infile', dest="infile",
104         help="Le fichier COMM en entree, a traduire")
105     parser.add_option('-o','--outfile', dest="outfile", default='out.comm',
106         help="Le fichier COMM en sortie, traduit")
107
108     options, args = parser.parse_args()
109     if len(options.infile) == 0:
110         print
111         parser.print_help()
112         print
113         sys.exit(1)
114
115     traduc(options.infile,options.outfile)
116
117 if __name__ == '__main__':
118     main()