# -*- coding: iso-8859-1 -*- # Copyright 20003 - 2008: Julien Bourdaillet (julien.bourdaillet@lip6.fr), Jean-Gabriel Ganascia (jean-gabriel.ganascia@lip6.fr) # This file is part of MEDITE. # # MEDITE is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # MEDITE is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Foobar; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #---------------------------------------------------------------------------- # Nom: cMedite.py # Objet: Classe qui interface entre l'application Medite du client # et l'interface graphique #---------------------------------------------------------------------------- import profile,traceback,pstats import os,time from MediteAppli.MediteAppli import * from Utile.constantesDonnees import * from Utile.exceptionsDonnees import * from Donnees.resultatAppli import * from Donnees.arbre import Arbre import Donnees.planTravail import DGManager import Utile.decodage from MediteAppli.mediteFeng import * #appli = ecartTextes # Classe de type 'concepteur' qui fait le lien entre l'interface graphique # et l'application du client class CMedite(object): def initialiser(self,planTravail): """pre: isinstance(planTravail,Donnees.planTravail.PlanTravail) """ dgm = DGManager.DGManager() nomDG = dgm.getDG(planTravail.getAuteur(), planTravail.getOeuvre()) pathSource=dgm.getEtatPath(planTravail.getAuteur(), planTravail.getOeuvre(),planTravail.getVersionSource(),planTravail.getEtatSource()) pathCible =dgm.getEtatPath(planTravail.getAuteur(), planTravail.getOeuvre(),planTravail.getVersionCible(),planTravail.getEtatCible()) fs = open(pathSource) fc = open(pathCible) pParametres = planTravail.getParam() p1 = pParametres.getp1() p2 = float(100)/pParametres.getp2() p3 = float(pParametres.getp3()) /100 pcarOuMot = 1 #not pParametres.getp4() #1 mode car / 0 mode mot pcaseSensitive = pParametres.getp5() pseparatorSensivitive = pParametres.getp6() pdiacriticSensitive = pParametres.getp7() #print p1 ; print p2 ; print p3 ; print pcarOuMot #print pcaseSensitive ; print pseparatorSensivitive ; print pdiacriticSensitive try: texte1 = fs.read() texte2 = fc.read() #texte1 = Utile.decodage.loadFile(pathSource) #texte2 = Utile.decodage.loadFile(pathCible) #texte1 = texte1[1:] #texte2 = texte2[1:] logging.debug('len(texte1)='+str(len(texte1))+' / len(texte2)='+str(len(texte2))) if isinstance(texte1, unicode): texte1 = texte1.encode('utf-8') logging.debug('transfo texte1 uni 2 utf') if isinstance(texte2, unicode): texte2 = texte2.encode('utf-8') logging.debug('transfo texte2 uni 2 utf') fs.close() fc.close() logging.debug('len(texte1)='+str(len(texte1))+' / len(texte2)='+str(len(texte2))) #for x in texte1: # logging.debug(x+str(ord(x))) appli = ecartTextesRecur2(texte1, texte2, p1, p2, p3, pcarOuMot, pcaseSensitive, pseparatorSensivitive, pdiacriticSensitive, planTravail,algoAligneur='HIS') resultat = appli.initialiser()#;print appli.bbl.evaluation() logging.debug('len(texte1)='+str(len(texte1))+' / len(texte2)='+str(len(texte2))) logging.debug(resultat) if isinstance(texte1, unicode) and isinstance(texte2, unicode): mapper = Utile.decodage.mapperUnicodeUtf(texte1+texte2, 'utf-8') res = mapper.uniToUtfResultat(backup) logging.debug(resultat) # lancement de medite avec feng #appli = fengAlgoMedite(texte1,texte2,p2,pcaseSensitive, pseparatorSensivitive, pdiacriticSensitive,planTravail,calculDep=True) #resultat = appli.run() except Exception,e1: sys.stderr.write( str(e1)) traceback.print_exc() sys.stderr.flush() if False: logging.debug(str(appli.insertions)) logging.debug("\n------------------------------------------------\n") logging.debug(str(appli.suppressions)) logging.debug("\n------------------------------------------------\n") logging.debug(str(appli.occs_deplaces)) logging.debug("\n------------------------------------------------\n") logging.debug(str(appli.tous_remplacements)) logging.debug("\n------------------------------------------------\n") logging.debug(str(appli.lg_texte1)) logging.debug("\n------------------------------------------------\n") #logging.debug(str(appli.texte_original)) logging.debug("\n------------------------------------------------\n") logging.debug(str(appli.blocsCommuns)) logging.debug("\n------------------------------------------------ begin appli.lDepl\n") logging.debug(str(appli.lDepl)) logging.debug("\n------------------------------------------------ end appli.lDepl\n") logging.debug( resultat) return resultat # Methode qui lance l'application MEDITE qui compare deux états def comparerEtats(self, planTravail): """pre: isinstance(planTravail,Donnees.planTravail.PlanTravail) """ dgm = DGManager.DGManager() nomDG = dgm.getDG(planTravail.getAuteur(), planTravail.getOeuvre()) pathSource=dgm.getEtatPath(planTravail.getAuteur(), planTravail.getOeuvre(),planTravail.getVersionSource(),planTravail.getEtatSource()) pathCible =dgm.getEtatPath(planTravail.getAuteur(), planTravail.getOeuvre(),planTravail.getVersionCible(),planTravail.getEtatCible()) fs = open(pathSource) fc = open(pathCible) pParametres = planTravail.getParam() p1 = pParametres.getp1() p2 = float(100)/pParametres.getp2() p3 = float(pParametres.getp3()) /100 pcarOuMot = 1 #not pParametres.getp4() #1 mode car / 0 mode mot pcaseSensitive = pParametres.getp5() pseparatorSensivitive = pParametres.getp6() pdiacriticSensitive = pParametres.getp7() #print p1 ; print p2 ; print p3 ; print pcarOuMot #print pcaseSensitive ; print pseparatorSensivitive ; print pdiacriticSensitive try: texte1 = fs.read() texte2 = fc.read() #texte1 = Utile.decodage.loadFile(pathSource) #texte2 = Utile.decodage.loadFile(pathCible) #texte1 = texte1[1:] #texte2 = texte2[1:] logging.debug('len(texte1)='+str(len(texte1))+' / len(texte2)='+str(len(texte2))) if isinstance(texte1, unicode): texte1 = texte1.encode('utf-8') logging.debug('transfo texte1 uni 2 utf') if isinstance(texte2, unicode): texte2 = texte2.encode('utf-8') logging.debug('transfo texte2 uni 2 utf') fs.close() fc.close() logging.debug('len(texte1)='+str(len(texte1))+' / len(texte2)='+str(len(texte2))) #for x in texte1: # logging.debug(x+str(ord(x))) appli = ecartTextesRecur2(texte1, texte2, p1, p2, p3, pcarOuMot, pcaseSensitive, pseparatorSensivitive, pdiacriticSensitive, planTravail,algoAligneur='HIS') resultat = appli.run()#;print appli.bbl.evaluation() logging.debug('len(texte1)='+str(len(texte1))+' / len(texte2)='+str(len(texte2))) logging.debug(resultat) if isinstance(texte1, unicode) and isinstance(texte2, unicode): mapper = Utile.decodage.mapperUnicodeUtf(texte1+texte2, 'utf-8') res = mapper.uniToUtfResultat(backup) logging.debug(resultat) # lancement de medite avec feng #appli = fengAlgoMedite(texte1,texte2,p2,pcaseSensitive, pseparatorSensivitive, pdiacriticSensitive,planTravail,calculDep=True) #resultat = appli.run() except Exception,e1: sys.stderr.write( str(e1)) traceback.print_exc() sys.stderr.flush() if False: logging.debug(str(appli.insertions)) logging.debug("\n------------------------------------------------\n") logging.debug(str(appli.suppressions)) logging.debug("\n------------------------------------------------\n") logging.debug(str(appli.occs_deplaces)) logging.debug("\n------------------------------------------------\n") logging.debug(str(appli.tous_remplacements)) logging.debug("\n------------------------------------------------\n") logging.debug(str(appli.lg_texte1)) logging.debug("\n------------------------------------------------\n") #logging.debug(str(appli.texte_original)) logging.debug("\n------------------------------------------------\n") logging.debug(str(appli.blocsCommuns)) logging.debug("\n------------------------------------------------ begin appli.lDepl\n") logging.debug(str(appli.lDepl)) logging.debug("\n------------------------------------------------ end appli.lDepl\n") logging.debug( resultat) return resultat