X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=Noyau%2Fasojb.py;h=0eb259c5767c917dbac1a982a0fc94d038afe11f;hb=2c5a8689b9c6cc46804fd268d416d1de2777059e;hp=eaf091ec1edc063eef06459aa0f52fa5a808c4c2;hpb=2446a0c7137fa3418368ec577194a6d00e54ed65;p=tools%2Feficas.git diff --git a/Noyau/asojb.py b/Noyau/asojb.py index eaf091ec..0eb259c5 100644 --- a/Noyau/asojb.py +++ b/Noyau/asojb.py @@ -1,27 +1,27 @@ -#@ MODIF asojb Noyau DATE 04/06/2007 AUTEUR COURTOIS M.COURTOIS # -*- coding: iso-8859-1 -*- -# CONFIGURATION MANAGEMENT OF EDF VERSION -# ====================================================================== -# COPYRIGHT (C) 1991 - 2007 EDF R&D WWW.CODE-ASTER.ORG -# THIS PROGRAM 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. -# -# THIS PROGRAM 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 THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER, -# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE. -# ====================================================================== +# Copyright (C) 2007-2013 EDF R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# """ Description des OJB jeveux """ -from basetype import Type, MetaType +from basetype import Type from asnom import SDNom from ascheckers import CheckLog import traceback,sys @@ -29,7 +29,7 @@ import traceback,sys # pour utilisation dans eficas try: import aster - from Utilitai.Utmess import U2MESS as UTMESS + from Utilitai.Utmess import UTMESS except: pass @@ -56,6 +56,11 @@ class AsBase(Type): if checker is None: checker = CheckLog() + # vérif déjà faite ? (en tenant compte du type) + if checker.checkedAsBase(self): + return checker + checker.visitAsBase( self ) + # vérifie les enfants : optional = checker.optional checker.optional = checker.optional or self.optional @@ -70,9 +75,10 @@ class AsBase(Type): try : v( checker ) except : - UTMESS("E", 'SDVERI_45') - print 40*'-' - traceback.print_exc(file=sys.stdout) + mess=60*'-'+'\n' + mess=mess+'Erreur SDVERI (Attention : vérification incomplète)'+'\n' + mess=mess.join(traceback.format_tb(sys.exc_traceback)) + checker.err(self,mess) checker.optional = optional return checker @@ -108,9 +114,22 @@ class AsBase(Type): l.append( indent + line ) return "\n".join( l ) - def __repr__(self): + def short_repr(self): return "<%s(%x,%r)>" % (self.__class__.__name__, id(self), self.nomj() ) + def long_repr(self): + if not hasattr(self, "accessible") or not self.accessible(): + # hors Aster ou en par_lot='oui' + return self.short_repr() + else: + from Cata.cata import IMPR_CO, _F + IMPR_CO(CONCEPT=_F(NOM=self.nom), UNITE=6) + return '' + + def __repr__(self): + # par défaut, on fait court ! + return self.short_repr() + # ----------------------------------------------------------------------------- class JeveuxAttr(object): @@ -152,14 +171,22 @@ class JeveuxIntAttr(JeveuxAttr): def __get__(self, obj, klass): if obj is None: return self - return aster.jeveux_getattr( obj.nomj(), self.name )[0] + nomj = obj.nomj() + if aster.jeveux_exists( nomj ): + return aster.jeveux_getattr( nomj, self.name )[0] + else : + return None # ----------------------------------------------------------------------------- class JeveuxStrAttr(JeveuxAttr): def __get__(self, obj, klass): if obj is None: return self - return aster.jeveux_getattr( obj.nomj(), self.name )[1].strip() + nomj = obj.nomj() + if aster.jeveux_exists( nomj ): + return aster.jeveux_getattr( nomj, self.name )[1].strip() + else : + return None # ----------------------------------------------------------------------------- class OJB(AsBase): @@ -206,24 +233,24 @@ class OJB(AsBase): """Fonction utilitaire, renvoie une liste de chaines 'strippées'""" data = self.get() if data is not None: - return [ x.strip() for x in self.get() ] + return [ x.strip() for x in data ] else: return [] - def foreachattr(self, callable, *args, **kwargs): + def foreachattr(self, callback, *args, **kwargs): klass = self.__class__ for k in dir(klass): v = getattr( klass, k ) if isinstance(v, JeveuxAttr): - callable( k, v, *args, **kwargs ) + callback( k, v, *args, **kwargs ) def check(self, checker=None): if checker is None: checker = CheckLog() # l'objet a déjà été vérifié, on ne fait rien - if self.nomj() in checker.names.keys(): - return checker - checker.visit( self ) + if checker.checkedOJB(self): + return checker + checker.visitOJB( self ) if self.exists: self.foreachattr( lambda k,v,obj,c: v.check(k, obj, c), self, checker ) @@ -248,6 +275,16 @@ def Facultatif( ojb ): class OJBVect(OJB): lonmax = JeveuxIntAttr("LONMAX") lonuti = JeveuxIntAttr("LONUTI") + _xous = "S" + _genr = "V" + +# ----------------------------------------------------------------------------- +class OJBPtnom(OJB): + nommax = JeveuxIntAttr("NOMMAX") + nomuti = JeveuxIntAttr("NOMUTI") + _xous = "S" + _genr = "N" + _type = "K" # ----------------------------------------------------------------------------- class OJBCollec(OJB): @@ -261,6 +298,10 @@ class OJBCollec(OJB): class AsVI(OJBVect): _type = "I" +# ----------------------------------------------------------------------------- +class AsVS(OJBVect): + _type = "S" + # ----------------------------------------------------------------------------- class AsVR(OJBVect): _type = "R" @@ -299,5 +340,7 @@ class AsVK80(OJBVect): _ltyp = 80 # Pour compatibilite -AsColl = OJBCollec AsObject = OJB +AsColl = OJBCollec +AsPn = OJBPtnom +AsVect = OJBVect