Package muntjac :: Package terminal :: Module composite_error_message
[hide private]
[frames] | no frames]

Source Code for Module muntjac.terminal.composite_error_message

  1  # Copyright (C) 2012 Vaadin Ltd.  
  2  # Copyright (C) 2012 Richard Lincoln 
  3  #  
  4  # Licensed under the Apache License, Version 2.0 (the "License");  
  5  # you may not use this file except in compliance with the License.  
  6  # You may obtain a copy of the License at  
  7  #  
  8  #     http://www.apache.org/licenses/LICENSE-2.0  
  9  #  
 10  # Unless required by applicable law or agreed to in writing, software  
 11  # distributed under the License is distributed on an "AS IS" BASIS,  
 12  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
 13  # See the License for the specific language governing permissions and  
 14  # limitations under the License. 
 15   
 16  """For combining multiple error messages together.""" 
 17   
 18  import sys 
 19   
 20  from muntjac.terminal.error_message import IErrorMessage 
 21  from muntjac.terminal.paintable import IRepaintRequestListener 
 22   
 23   
24 -class CompositeErrorMessage(IErrorMessage):
25 """Class for combining multiple error messages together. 26 27 @author: Vaadin Ltd. 28 @version: 1.1.2 29 """ 30
31 - def __init__(self, errorMessages):
32 """Constructor for CompositeErrorMessage. 33 34 @param errorMessages: 35 the Collection of error messages that are listed 36 together. At least one message is required. 37 """ 38 # Array of all the errors. 39 self._errors = None 40 41 # Level of the error. 42 self._level = None 43 44 self._errors = list() 45 self._level = -sys.maxint - 1 46 for m in errorMessages: 47 self.addErrorMessage(m) 48 49 if len(self._errors) == 0: 50 raise ValueError, \ 51 'Composite error message must have at least one error'
52 53
54 - def getErrorLevel(self):
55 """The error level is the largest error level in. 56 57 @see: L{muntjac.terminal.IErrorMessage.getErrorLevel} 58 """ 59 return self._level
60 61
62 - def addErrorMessage(self, error):
63 """Adds a error message into this composite message. Updates the level 64 field. 65 66 @param error: 67 the error message to be added. Duplicate errors are ignored. 68 """ 69 if error is not None and error not in self._errors: 70 self._errors.append(error) 71 l = error.getErrorLevel() 72 if l > self._level: 73 self._level = l
74 75
76 - def iterator(self):
77 """Gets Error Iterator. 78 79 @return: the error iterator. 80 """ 81 return iter(self._errors)
82 83
84 - def paint(self, target):
85 """@see: L{IPaintable.paint}""" 86 if len(self._errors) == 1: 87 self._errors[0].paint(target) 88 else: 89 target.startTag('error') 90 91 if self._level > 0 and self._level <= IErrorMessage.INFORMATION: 92 target.addAttribute('level', 'info') 93 94 elif self._level <= IErrorMessage.WARNING: 95 target.addAttribute('level', 'warning') 96 97 elif self._level <= IErrorMessage.ERROR: 98 target.addAttribute('level', 'error') 99 100 elif self._level <= IErrorMessage.CRITICAL: 101 target.addAttribute('level', 'critical') 102 103 else: 104 target.addAttribute('level', 'system') 105 106 # Paint all the exceptions 107 for error in self._errors: 108 error.paint(target) 109 110 target.endTag('error')
111 112
113 - def addListener(self, listener, iface=None):
114 pass
115 116
117 - def addCallback(self, callback, eventType=None, *args):
118 pass
119 120
121 - def removeListener(self, listener, iface=None):
122 pass
123 124
125 - def removeCallback(self, callback, eventType=None):
126 pass
127 128
129 - def requestRepaint(self):
130 pass
131 132
133 - def requestRepaintRequests(self):
134 pass
135 136
137 - def __str__(self):
138 """Returns a comma separated list of the error messages. 139 140 @return: comma separated list of error messages. 141 """ 142 retval = '[' 143 pos = 0 144 for error in self._errors: 145 if pos > 0: 146 retval += ',' 147 pos += 1 148 retval += str(error) 149 retval += ']' 150 return retval
151 152
153 - def getDebugId(self):
154 return None
155 156
157 - def setDebugId(self, idd):
158 raise NotImplementedError, \ 159 'Setting testing id for this Paintable is not implemented'
160