Пример #1
0
	def getTriggerAndTemplateAndParameterValues(self, ruleAntecedent):
		checkData(locals())

		triggers = Triggers()
		triggerList = triggers.getAllTriggers()

		for trigger in triggerList:
			
			# A trigger.ruleAntecedent is represented as set of templates models:
			# Example "template1 | template2 | template2"
			# Where each template can be like
			# "it is between %d AM and %d AM | it is between %d AM and %d PM | it is between %d PM and %d AM | it is between %d PM and %d PM"

			models = trigger.ruleAntecedent.split('|')

			for model in models:
				parameterNumber = model.count("@val")
				originalModel = model.strip()
				model = model.replace("@val","(.+)").strip()
	

				matchObj = re.match( model, ruleAntecedent, re.M|re.I)

				if matchObj:
					parameterValues = {}

					for i in range(0,parameterNumber):
						parameterValues[str(i)] = matchObj.group(i + 1)

					return (trigger, originalModel, parameterValues)

		raise NotWellFormedRuleError("Impossible to find any trigger corresponding to the following rule consequent > " + ruleAntecedent)
Пример #2
0
	def getTriggers(self, buildingName = None, groupId = None):
		checkData(locals())

		from app.backend.model.triggers import Triggers
		triggers = Triggers()

		triggerList = []
		for trigger in triggers.getAllTriggers():
			triggerList.append(trigger.getDict())

		return {"triggers" : triggerList}
Пример #3
0
	def getTriggerCategories(self):
		checkData(locals())
		
		triggers = Triggers()
		triggerList = triggers.getAllTriggers()

		categories = []
		for trigger in triggerList:
			if trigger.category not in categories:
				categories.append(trigger.category)

		return categories
Пример #4
0
	def translateTrigger(self, ruleAntecedent, getDict = False):
		checkData(locals())

		translatedTriggers = []
		ruleAntecedent = ruleAntecedent.split(",")

		for currentAntecedent in ruleAntecedent:

			currentAntecedent = currentAntecedent.strip()

			triggers = Triggers()
			trigger, originalTemplate, parameterValues = self.getTriggerAndTemplateAndParameterValues(currentAntecedent)
			translationTemplate = triggers.translateTemplate('Z3', originalTemplate)

			translatedParams = {}

			for key,value in parameterValues.iteritems():
				translatedParams[key] = self.__translateParameters(trigger.category, value)

			translation = translationTemplate
			for i in range(0,len(parameterValues.keys())):

				value = translatedParams[str(i)]
				translation = translation.replace("@val", value, 1)

			currentTrigger = {}
			currentTrigger["antecedent"] = currentAntecedent
			currentTrigger["translation"] = translation
			currentTrigger["trigger"] = trigger if not getDict else trigger.getDict()
			currentTrigger["parameterValues"] = parameterValues
			currentTrigger["translatedParams"] = translatedParams
			

			translatedTriggers.append(currentTrigger)

		translationTemplate = "(and @@first_arg@@ @@second_arg@@)"		
		translation = translatedTriggers[0]["translation"]
		
		for i in range(1,len(translatedTriggers)):
			translation = (translationTemplate.replace('@@first_arg@@', translation)).replace('@@second_arg@@', translatedTriggers[i]["translation"])

		result = {}
		result["translation"] = translation
		result["triggers"] = translatedTriggers

		return result