Salome HOME
create_python_service_instance(): meaningful implementation in
[modules/kernel.git] / src / Container / SALOME_DataContainerPy.py
1 #! /usr/bin/env python
2 #  -*- coding: iso-8859-1 -*-
3 # Copyright (C) 2007-2015  CEA/DEN, EDF R&D, OPEN CASCADE
4 #
5 # Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
6 # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
7 #
8 # This library is free software; you can redistribute it and/or
9 # modify it under the terms of the GNU Lesser General Public
10 # License as published by the Free Software Foundation; either
11 # version 2.1 of the License, or (at your option) any later version.
12 #
13 # This library is distributed in the hope that it will be useful,
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16 # Lesser General Public License for more details.
17 #
18 # You should have received a copy of the GNU Lesser General Public
19 # License along with this library; if not, write to the Free Software
20 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
21 #
22 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
23 #
24
25 #  SALOME DataContainer : implementation of data container
26 #  File   : SALOME_DataContainerPy.py
27 #  Author : Mikhail PONIKARIOV
28 #  Module : SALOME
29 #  $Header$
30 #
31 import os
32 import sys
33 import string
34
35 from omniORB import CORBA, PortableServer
36 import Engines, Engines__POA
37 from SALOME_ComponentPy import *
38
39 #=============================================================================
40
41 #define an implementation of the data container interface for the data transfer implemented in Python
42
43 class SALOME_DataContainerPy_i (Engines__POA.DataContainer):
44     _url = ""
45     _name = ""
46     _identifier = ""
47     _ext = -1
48     _removeAfterGet = True;
49
50     #-------------------------------------------------------------------------
51
52     def __init__(self, urlorstream, name, identifier, removeAfterGet, isStream = False):
53         self._urlorstream = urlorstream
54         self._name = name
55         self._identifier = identifier
56         self._removeAfterGet = removeAfterGet
57         self._isStream = isStream
58         if isStream:
59           self._ext = ""
60         else:
61           self._ext = urlorstream[urlorstream.rfind(".") + 1 : ]
62
63     #-------------------------------------------------------------------------
64
65     def get(self):
66       if self._isStream:
67         return self._urlorstream
68
69       f = open(self._urlorstream, 'r')
70       stream = f.read()
71       f.close()
72       if self._removeAfterGet:
73         os.remove(self._urlorstream)
74         try: # try to remove directory if it is empty
75           index = max(self._urlorstream.rfind("\\"), self._url.rfind("/"))
76           if index > 0:
77             os.rmdir(self._urlorstream[:index])
78         except:
79           pass
80       return stream
81
82     #-------------------------------------------------------------------------
83     
84     def name(self):
85         return self._name
86
87     #-------------------------------------------------------------------------
88
89     def identifier(self):
90         return self._identifier
91
92     def extension(self):
93         return self._ext
94
95     def setExtension(self, ext):
96         self._ext = ext