def addTriggerCount(self, value=None, validFor=None, result_request=None):
     if result_request is None:
         if self.checkApplicability("TriggerCount"):
             super().addTriggerCount(value, validFor)
         else:
             raise ValueError(
                 'ERROR: TriggerCount can be assigned only to startEvent element'
             )
     else:
         utility.checkResultRequest(result_request)
         if result_request not in REQUEST['triggerCount']:
             raise ValueError(
                 "ERROR: for TriggerCount result_request must be " +
                 str(REQUEST['triggerCount']))
         attributes = {'value': value, 'validFor': validFor}
         utility.filterNoneAttributes(attributes)
         if len(attributes) == 0 and self.checkResultRequestApplicability(
                 'triggerCount'):
             super().addInterTriggerCountResultRequest(result_request)
         elif len(attributes) > 0:
             raise ValueError(
                 "ERROR: for ResultRequest insert only result_request parameter"
             )
         else:
             raise ValueError(
                 "ERROR: result_request can be insert only to " +
                 str(REQUEST_APPLICABILITY['triggerCount']) + " element")
 def addValidationTime(self,
                       value=None,
                       timeUnit=None,
                       validFor=None,
                       nameDistribution=None,
                       shape=None,
                       scale=None,
                       probability=None,
                       trials=None,
                       mean=None,
                       k=None,
                       standardDeviation=None,
                       mode=None,
                       min=None,
                       max=None,
                       discrete=None,
                       points=None,
                       enum_list=None,
                       expression=None,
                       result_request=None):
     if result_request is None:
         if self.checkApplicability("Time"):
             super().addValidationTime(value, timeUnit, validFor,
                                       nameDistribution, shape, scale,
                                       probability, trials, mean, k,
                                       standardDeviation, mode, min, max,
                                       discrete, points, enum_list,
                                       expression)
         else:
             raise ValueError(
                 'ERROR: Validation time can be assigned only to task element'
             )
     else:
         utility.checkResultRequest(result_request)
         if result_request not in REQUEST['Time']:
             raise ValueError(
                 "ERROR: for ValidationTime result_request must be " +
                 str(REQUEST["Time"]))
         attributes = {
             'value': value,
             'timeUnit': timeUnit,
             'validFor': validFor,
             'enum_list': enum_list
         }
         utility.filterNoneAttributes(attributes)
         if len(attributes) == 0 and self.checkResultRequestApplicability(
                 'Time'):
             super().addValidationTimeResultRequest(result_request)
         elif len(attributes) > 0:
             raise ValueError(
                 "ERROR: for ResultRequest insert only result_request parameter"
             )
         else:
             raise ValueError(
                 "ERROR: result_request can be insert only to " +
                 str(REQUEST_APPLICABILITY['Time']) + " element")
 def addTriggerCount(self, value=None, validFor=None):
     self.checkControlParametersTag()
     if type(value) == int:
         self.typeValueTC = "NumericParameter"
         self.triggerCountAttrib = {
             "value": str(value),
             "validFor": validFor
         }
         self.triggerCountAttrib = utility.filterNoneAttributes(
             self.triggerCountAttrib)
         if self.triggerCountPointer is None:
             self.triggerCountPointer = etree.SubElement(
                 self.controlPointer, utility.BPSIM + "TriggerCount")
         new_parameter = etree.SubElement(self.triggerCountPointer,
                                          utility.BPSIM + self.typeValueTC,
                                          attrib=self.triggerCountAttrib)
         utility.write_on_file(self.write, self.tree)
         utility.checkCalendar(self.scenario.getCalendars(), validFor,
                               self.verbosity)
         if self.verbosity == 0:
             print("INFO: TriggerCount added " + self.typeValueTC + " ",
                   self.triggerCountAttrib)
     else:
         raise ValueError(
             "ERROR: Type of TriggerCount is not correct, must be NumericParameter"
         )
 def filterParameterAttributes(self, value, timeUnit, validFor):
     if timeUnit is not None:
         utility.checkTimeUnit(timeUnit)
     utility.checkCalendar(self.scenario.getCalendars(), validFor,
                           self.verbosity)
     value = str(value)
     attributes = attributes = {
         "value": value,
         "timeUnit": timeUnit,
         "validFor": validFor
     }
     return utility.filterNoneAttributes(attributes)
 def addProbability(self, value):
     self.checkControlParametersTag()
     self.typeValuePr = self.checkProbability(value)
     attrib = {"value": str(value)}
     attrib = utility.filterNoneAttributes(attrib)
     if self.probabilityPointer is None:
         self.probabilityPointer = etree.SubElement(
             self.controlPointer, utility.BPSIM + "Probability")
     new_parameter = etree.SubElement(self.probabilityPointer,
                                      utility.BPSIM + self.typeValuePr,
                                      attrib=attrib)
     utility.write_on_file(self.write, self.tree)
     if self.verbosity == 0:
         print("INFO: Probability added" + self.typeValuePr, attrib)
 def filterDistributionAttributes(self, timeUnit, nameDistribution, shape,
                                  scale, probability, trials, mean, k,
                                  standardDeviation, mode, min, max,
                                  discrete, points, validFor):
     self.checkNameDistribution(nameDistribution)
     utility.checkCalendar(self.scenario.getCalendars(), validFor,
                           self.verbosity)
     if nameDistribution == 'UserDistribution':
         attributes = {'discrete': discrete, 'points': points}
         attributes = utility.filterNoneAttributes(attributes)
         self.checkDistributionAttributes('UserDistribution', attributes)
         self.checkBooleanType(discrete, 'discrete')
     else:
         attributes = {
             'shape': shape,
             'scale': scale,
             'probability': probability,
             'trials': trials,
             'mean': mean,
             'k': k,
             'standardDeviation': standardDeviation,
             'mode': mode,
             'min': min,
             'max': max
         }
         attributes = utility.filterNoneAttributes(attributes)
         self.checkDistributionAttributes(nameDistribution, attributes)
         self.checkNumericDistributionAttributes(attributes)
     for key in list(attributes.keys()):
         attributes[key] = str(attributes[key])
     if timeUnit is not None:
         utility.checkTimeUnit(timeUnit)
         attributes['timeUnit'] = timeUnit
     if validFor is not None:
         attributes['validFor'] = validFor
     return attributes
Beispiel #7
0
	def addAvailability(self,value,validFor):
		self.checkResourceParametersTag()
		if super().checkBooleanParameter(value):
			typeValue = "BooleanParameter"
			utility.checkCalendar(self.scenario.getCalendars(), validFor, self.verbosity)
			self.availabilityAttrib = {"value": str(value), "validFor": validFor}
			self.availabilityAttrib = utility.filterNoneAttributes(self.availabilityAttrib)
			if self.availabilityPointer is None:
				self.availabilityPointer=etree.SubElement(self.resourcePointer, utility.BPSIM + "Availability")
			new_parameter= etree.SubElement(self.availabilityPointer, utility.BPSIM + typeValue, attrib=self.availabilityAttrib)
			utility.write_on_file(self.write, self.tree)
			if self.verbosity==0:
				print("INFO: Availability added " + typeValue, self.availabilityAttrib)
		else:
			raise ValueError("ERROR: Type of Availability is not correct, must be BooleanParameter")
Beispiel #8
0
    def filterScenarioAttributes(self):
        if self.created is not None:
            self.created = utility.getDateTimeType(self.created)
        if self.modified is not None:
            self.modified = utility.getDateTimeType(self.modified)
        attributes = {
            "id": self.id,
            "name": self.name,
            "author": self.author,
            "description": self.description,
            "created": self.created,
            "modified": self.modified,
            "version": self.version,
            "vendor": self.vendor,
            "inherits": self.inherits
        }
        self.attributes = utility.filterNoneAttributes(attributes)

        return self.attributes
Beispiel #9
0
 def filterScenarioParametersAttributes(self):
     attributes = {
         "replication": self.replication,
         "seed": self.seed,
         "baseTimeUnit": self.baseTimeUnit,
         "baseCurrencyUnit": self.baseCurrencyUnit,
         "showResultRequestColumn": self.showResultRequestColumn,
         "expressionLanguage": self.expressionLanguage,
         "baseResultFrequency": self.baseResultFrequency,
         "baseResultFrequencyCumul": self.baseResultFrequencyCumul,
         "traceOutput": self.traceOutput,
         "traceFormat": self.traceFormat
     }
     attributes = utility.filterNoneAttributes(attributes)
     if self.replication is not None:
         attributes["replication"] = str(self.replication)
     if self.baseResultFrequency is not None:
         self.baseResultFrequency = utility.getDurationType(
             self.baseResultFrequency)
         attributes["baseResultFrequency"] = self.baseResultFrequency
     if self.baseTimeUnit is not None:
         utility.checkTimeUnit(self.baseTimeUnit)
     return attributes
 def setTriggerCount(self, value=None, validFor=None, result_request=None):
     if self.triggerCountPointer is None:
         raise ValueError("ERROR: TriggerCount not exist")
     if value is None and result_request is None:
         raise ValueError("ERROR: insert value or result_request")
     newTriggerCount = self.triggerCountPointer.findall("./" +
                                                        utility.BPSIM +
                                                        self.typeValueTC)
     if len(newTriggerCount) > 0:
         self.triggerCountPointer.remove(newTriggerCount[-1])
     if value is not None and result_request is None:
         if not super().checkNumericParameter(value):
             raise ValueError(
                 "ERROR: Type of TriggerCount is not correct, must be NumericParameter"
             )
         self.typeValueTC = "NumericParameter"
         newTriggerCount = etree.SubElement(self.triggerCountPointer,
                                            utility.BPSIM +
                                            "NumericParameter",
                                            attrib={'value': str(value)})
         if validFor is not None:
             utility.checkCalendar(self.scenario.getCalendars(), validFor,
                                   self.verbosity)
             newTriggerCount.set('validFor', validFor)
     elif value is None and result_request is not None:
         attributes = {'value': value, 'validFor': validFor}
         attributes = utility.filterNoneAttributes(attributes)
         if len(attributes) == 0:
             self.typeValueTC = "ResultRequest"
             request = etree.SubElement(self.triggerCountPointer,
                                        utility.BPSIM + "ResultRequest")
             request.text = result_request
         else:
             raise ValueError("ERROR: insert only result_request parameter")
     utility.write_on_file(self.write, self.tree)
     if self.verbosity == 0:
         print("INFO: TriggerCount updated")
Beispiel #11
0
 def addCostParameter(self, value, validFor, resultRequest, pointer, name):
     attributes = None
     if value is None and validFor is None and resultRequest is not None:
         typeValue = "ResultRequest"
         new_parameter = etree.SubElement(pointer,
                                          utility.BPSIM + typeValue)
         new_parameter.text = resultRequest
     elif value is not None and resultRequest is None:
         typeValue = super().checkParameterType(value)
         if not super().checkNumericParameter(
                 value) and not super().checkFloatingParameter(value):
             raise ValueError(
                 'ERROR: type of ' + name +
                 ' must be NumericParameter or FloatingParameter')
         utility.checkCalendar(self.scenario.getCalendars(), validFor,
                               self.verbosity)
         attributes = {"value": str(value), "validFor": validFor}
         attributes = utility.filterNoneAttributes(attributes)
         new_parameter = etree.SubElement(pointer,
                                          utility.BPSIM + typeValue,
                                          attrib=attributes)
     else:
         raise ValueError('ERROR: insert only value or resultRequest')
     return typeValue, pointer, attributes
 def addInterTriggerTimer(self,
                          value=None,
                          timeUnit=None,
                          validFor=None,
                          nameDistribution=None,
                          shape=None,
                          scale=None,
                          probability=None,
                          trials=None,
                          mean=None,
                          k=None,
                          standardDeviation=None,
                          mode=None,
                          min=None,
                          max=None,
                          discrete=None,
                          points=None,
                          enum_list=None,
                          result_request=None):
     if result_request is None:
         if self.checkApplicability("InterTriggerTimer"):
             super().addInterTriggerTimer(value, timeUnit, validFor,
                                          nameDistribution, shape, scale,
                                          probability, trials, mean, k,
                                          standardDeviation, mode, min, max,
                                          discrete, points, enum_list)
         else:
             raise ValueError(
                 'ERROR: InterTriggerTimer can be assigned only to startEvent element'
             )
     else:
         if result_request not in REQUEST['interTriggerTimer']:
             raise ValueError(
                 "ERROR: for InterTriggerTimer result_request must be " +
                 str(REQUEST["interTriggerTimer"]))
         attributes = {
             'value': value,
             'timeUnit': timeUnit,
             'validFor': validFor,
             'nameDistribution': nameDistribution,
             'shape': shape,
             'scale': scale,
             'probability': probability,
             'trials': trials,
             'mean': mean,
             'k': k,
             'standardDeviation': standardDeviation,
             'mode': mode,
             'min': min,
             'max': max,
             'discrete': discrete,
             'points': points,
             'enum_list': enum_list
         }
         utility.filterNoneAttributes(attributes)
         if len(attributes) == 0 and self.checkApplicability(
                 "InterTriggerTimer"):
             super().addInterTriggerTimerResultRequest(result_request)
         elif len(attributes) > 0:
             raise ValueError(
                 "ERROR: for ResultRequest insert only result_request parameter"
             )
         else:
             raise ValueError(
                 "ERROR: result_request can be insert only to " +
                 str(APPLICABILITY["InterTriggerTimer"]) + " element")
 def setInterTriggerTimer(self,
                          value=None,
                          enum_list=None,
                          timeUnit=None,
                          validFor=None,
                          nameDistribution=None,
                          shape=None,
                          scale=None,
                          probability=None,
                          trials=None,
                          mean=None,
                          k=None,
                          standardDeviation=None,
                          mode=None,
                          min=None,
                          max=None,
                          discrete=None,
                          points=None,
                          result_request=None):
     if self.triggerTimePointer is None:
         raise ValueError("ERROR: TriggerTimer not exist")
     if value is None and nameDistribution is None and enum_list is None and result_request is None:
         raise ValueError(
             'ERROR: To set InterTriggerTimer insert value or nameDistribution or enum_list or result_request'
         )
     if nameDistribution is None and result_request is None:
         if self.typeValueTT == self.nameDistribution:
             self.triggerTimerAttrib = {}
         super().setParameterWithEnumList(self.typeValueTT,
                                          self.triggerTimePointer,
                                          self.triggerTimerAttrib, value,
                                          enum_list, timeUnit, validFor)
     newTriggerTimer = self.triggerTimePointer.findall("./" +
                                                       utility.BPSIM +
                                                       self.typeValueTT)
     if len(newTriggerTimer) > 0:
         self.triggerTimePointer.remove(newTriggerTimer[-1])
     if value is None and nameDistribution is not None and enum_list is None and result_request is None:
         super().checkNameDistribution(nameDistribution)
         newTriggerTimerAttrib = super().filterDistributionAttributes(
             timeUnit, nameDistribution, shape, scale, probability, trials,
             mean, k, standardDeviation, mode, min, max, discrete, points,
             validFor)
         if nameDistribution == 'UserDistribution':
             super().createUserDistributionDataPoint(
                 points, self.triggerTimePointer, discrete, timeUnit)
         else:
             new_parameter = etree.SubElement(self.triggerTimePointer,
                                              utility.BPSIM +
                                              nameDistribution,
                                              attrib=newTriggerTimerAttrib)
     elif result_request is not None:
         utility.checkResultRequest(result_request)
         if result_request == 'count':
             raise ValueError(
                 "ERROR: result_request must be min, max, mean or sum")
         attributes = {
             'value': value,
             'timeUnit': timeUnit,
             'validFor': validFor,
             'nameDistribution': nameDistribution,
             'shape': shape,
             'scale': scale,
             'probability': probability,
             'trials': trials,
             'mean': mean,
             'k': k,
             'standardDeviation': standardDeviation,
             'mode': mode,
             'min': min,
             'max': max,
             'discrete': discrete,
             'points': points,
             'enum_list': enum_list
         }
         utility.filterNoneAttributes(attributes)
         if len(attributes) == 0:
             self.addInterTriggerTimerResultRequest(result_request)
         else:
             raise ValueError("ERROR: insert only result_request parameter")
     else:
         raise ValueError(
             'ERROR: if InterTriggerTimer is NumericParameter, FloatingParameter, DurationParameter add value, add nameDistribution otherwise'
         )
     utility.write_on_file(self.write, self.tree)
     if self.verbosity == 0:
         print("INFO: InterTriggerTimer updated")