Fixing a bug: missing a closing parenthesis.
[smartthings-infrastructure.git] / Extractor / ExtractorScript.py
index c96daa799d2d8358fd3a546a3647b0b8d68c06c1..3567349fa4f5c5f0fa32e83b038b53de118d950e 100644 (file)
@@ -87,16 +87,14 @@ def ExtractFunctions(F, appName):
                        while (Temp != "\"" and Temp != "app" and Temp != "location"):
                                Temp = GetToken(F)
                        if Temp == "\"":
                        while (Temp != "\"" and Temp != "app" and Temp != "location"):
                                Temp = GetToken(F)
                        if Temp == "\"":
-                               Temp = GetToken(F)
-                       #print "DEBUG: %s" % variable
+                               Temp = GetToken(F)              
+
+                       #print "DEBUG: %s - %s" % (variable, Temp)
                        #print capabilityMap
                        #print capabilityMap
-                       #print eventList
-                       #if variable == "app" or variable == "location":
-                               
                        if Temp == "app" or Temp == "location":
                                if Temp not in eventList:
                                        eventList.append(Temp)
                        if Temp == "app" or Temp == "location":
                                if Temp not in eventList:
                                        eventList.append(Temp)
-                       elif variable in capabilityMap.keys() and capabilityMap[variable] not in capabilityList:
+                       elif Temp not in eventList or (variable in capabilityMap.keys() and capabilityMap[variable] not in capabilityList):
                                # We do not repeat the same capability twice
                                capability = capabilityMap[variable]
                                capabilityList.append(capability)
                                # We do not repeat the same capability twice
                                capability = capabilityMap[variable]
                                capabilityList.append(capability)
@@ -106,7 +104,10 @@ def ExtractFunctions(F, appName):
                                        listOfEvents.append(variable)
                                else:
                                        eventVarMap[Temp] = [variable]
                                        listOfEvents.append(variable)
                                else:
                                        eventVarMap[Temp] = [variable]
-                                       
+                       #print "DEBUG: %s - %s" % (variable, Temp)
+                       #print capabilityMap
+                       #print eventList
+
                #Check and analyze capabilities for physical interaction
                AnalyzeCapabilities(Temp, appName, F)
 
                #Check and analyze capabilities for physical interaction
                AnalyzeCapabilities(Temp, appName, F)
 
@@ -116,7 +117,6 @@ def ExtractFunctions(F, appName):
        AnalyzePhysicalInteraction(app1Capabilities, app2Capabilities)
        AnalyzePhysicalInteraction(app2Capabilities, app1Capabilities)
 
        AnalyzePhysicalInteraction(app1Capabilities, app2Capabilities)
        AnalyzePhysicalInteraction(app2Capabilities, app1Capabilities)
 
-
 def AnalyzeCapabilities(Temp, appName, F):
                        #Illuminance related
        if (Temp == "capability.switch" or
 def AnalyzeCapabilities(Temp, appName, F):
                        #Illuminance related
        if (Temp == "capability.switch" or
@@ -205,6 +205,20 @@ def ExtractEvents(extractedEvents):
                        for line in event:
                                extractedEvents.write(line)
                        event.close()
                        for line in event:
                                extractedEvents.write(line)
                        event.close()
+               elif eventList[i] == "tamper.tampered":
+                       #Write two events subsequently
+                       extractedEvents.write("\t\t\tdef event = Verify.getInt(0,1)\n")
+                       extractedEvents.write("\t\t\tif (event == 0) {\n")
+                       event = open("eventSimulator/tamperTamperedOpenEvent.groovy", "r")                      
+                       for line in event:
+                               extractedEvents.write("\t\t" + line)
+                       event.close()
+                       extractedEvents.write("\t\t\t} else {\n")
+                       event = open("eventSimulator/tamperTamperedClosedEvent.groovy", "r")
+                       for line in event:
+                               extractedEvents.write("\t\t" + line)
+                       event.close()
+                       extractedEvents.write("\t\t\t}\n")
                elif eventList[i] == "nfcTouch":
                        event = open("eventSimulator/nfcTouchEvent.groovy", "r")
                        for line in event:
                elif eventList[i] == "nfcTouch":
                        event = open("eventSimulator/nfcTouchEvent.groovy", "r")
                        for line in event:
@@ -243,6 +257,16 @@ def ExtractEvents(extractedEvents):
                                extractedEvents.write("\t\t" + line)
                        event.close()
                        extractedEvents.write("\t\t\t}\n")
                                extractedEvents.write("\t\t" + line)
                        event.close()
                        extractedEvents.write("\t\t\t}\n")
+               elif eventList[i] == "water.dry":
+                       event = open("eventSimulator/waterDefaultDryEvent.groovy", "r")
+                       for line in event:
+                               extractedEvents.write(line)
+                       event.close()
+               elif eventList[i] == "water.wet":
+                       event = open("eventSimulator/waterDefaultWetEvent.groovy", "r")
+                       for line in event:
+                               extractedEvents.write(line)
+                       event.close()
                elif eventList[i] == "presence":
                        #Check which capability
                        variable = eventVarMap[eventList[i]]
                elif eventList[i] == "presence":
                        #Check which capability
                        variable = eventVarMap[eventList[i]]
@@ -274,13 +298,12 @@ def ExtractEvents(extractedEvents):
                        for line in event:
                                extractedEvents.write("\t\t" + line)
                        event.close()
                        for line in event:
                                extractedEvents.write("\t\t" + line)
                        event.close()
-                       if capability == "capability.presenceSensor":
-                               extractedEvents.write("\t\t\t} else {\n")
-                               event = open("eventSimulator/presencePresencePresentEvent.groovy", "r")
-                               for line in event:
-                                       extractedEvents.write("\t\t" + line)
-                               event.close()
                        extractedEvents.write("\t\t\t}\n")
                        extractedEvents.write("\t\t\t}\n")
+               elif eventList[i] == "presence.present": #Case for Touched event
+                       event = open("eventSimulator/presencePresencePresentEvent.groovy", "r")
+                       for line in event:
+                               extractedEvents.write("\t\t" + line)
+                       event.close()
                elif eventList[i] == "doorState":
                        #Write two events subsequently
                        extractedEvents.write("\t\t\tdef event = Verify.getInt(0,1)\n")
                elif eventList[i] == "doorState":
                        #Write two events subsequently
                        extractedEvents.write("\t\t\tdef event = Verify.getInt(0,1)\n")
@@ -309,6 +332,16 @@ def ExtractEvents(extractedEvents):
                                extractedEvents.write("\t\t" + line)
                        event.close()
                        extractedEvents.write("\t\t\t}\n")
                                extractedEvents.write("\t\t" + line)
                        event.close()
                        extractedEvents.write("\t\t\t}\n")
+               elif eventList[i] == "motion.active":
+                       event = open("eventSimulator/motionDefaultActiveEvent.groovy", "r")
+                       for line in event:
+                               extractedEvents.write("\t\t" + line)
+                       event.close()
+               elif eventList[i] == "motion.inactive":
+                       event = open("eventSimulator/motionDefaultInactiveEvent.groovy", "r")
+                       for line in event:
+                               extractedEvents.write("\t\t" + line)
+                       event.close()
                elif eventList[i] == "smoke":
                        #Write three events subsequently
                        extractedEvents.write("\t\t\tdef event = Verify.getInt(0,2)\n")
                elif eventList[i] == "smoke":
                        #Write three events subsequently
                        extractedEvents.write("\t\t\tdef event = Verify.getInt(0,2)\n")
@@ -328,6 +361,21 @@ def ExtractEvents(extractedEvents):
                                extractedEvents.write("\t\t" + line)
                        event.close()
                        extractedEvents.write("\t\t\t}\n")
                                extractedEvents.write("\t\t" + line)
                        event.close()
                        extractedEvents.write("\t\t\t}\n")
+               elif eventList[i] == "smoke.clear":
+                       event = open("eventSimulator/smokeDefaultClearEvent.groovy", "r")
+                       for line in event:
+                               extractedEvents.write("\t\t" + line)
+                       event.close()
+               elif eventList[i] == "smoke.detected":
+                       event = open("eventSimulator/smokeDefaultDetectedEvent.groovy", "r")
+                       for line in event:
+                               extractedEvents.write("\t\t" + line)
+                       event.close()
+               elif eventList[i] == "smoke.tested":
+                       event = open("eventSimulator/smokeDefaultTestedEvent.groovy", "r")
+                       for line in event:
+                               extractedEvents.write("\t\t" + line)
+                       event.close()
                elif eventList[i] == "carbonMonoxide":
                        #Check which capability
                        variable = eventVarMap[eventList[i]]
                elif eventList[i] == "carbonMonoxide":
                        #Check which capability
                        variable = eventVarMap[eventList[i]]
@@ -365,6 +413,57 @@ def ExtractEvents(extractedEvents):
                                extractedEvents.write("\t\t" + line)
                        event.close()
                        extractedEvents.write("\t\t\t}\n")
                                extractedEvents.write("\t\t" + line)
                        event.close()
                        extractedEvents.write("\t\t\t}\n")
+               elif eventList[i] == "carbonMonoxide.clear":
+                       #Check which capability
+                       variable = eventVarMap[eventList[i]]
+                       if eventList[i] not in eventVarCounterMap.keys():
+                               eventVarCounterMap[eventList[i]] = 1
+                               eventVarCount = 0
+                       else:
+                               eventVarCount = eventVarCounterMap[eventList[i]]
+                               eventVarCounterMap[eventList[i]] = eventVarCount + 1
+                       capability = capabilityMap[variable[eventVarCount]]
+                       if capability == "capability.smokeDetector":
+                               event = open("eventSimulator/smokeCarbonMonoxideDefaultClearEvent.groovy", "r")
+                       elif capability == "capability.carbonMonoxideDetector":
+                               event = open("eventSimulator/carbonMonoxideDefaultClearEvent.groovy", "r")
+                       for line in event:
+                               extractedEvents.write("\t\t" + line)
+                       event.close()
+               elif eventList[i] == "carbonMonoxide.detected":
+                       #Check which capability
+                       variable = eventVarMap[eventList[i]]
+                       if eventList[i] not in eventVarCounterMap.keys():
+                               eventVarCounterMap[eventList[i]] = 1
+                               eventVarCount = 0
+                       else:
+                               eventVarCount = eventVarCounterMap[eventList[i]]
+                               eventVarCounterMap[eventList[i]] = eventVarCount + 1
+                       capability = capabilityMap[variable[eventVarCount]]
+                       if capability == "capability.smokeDetector":
+                               event = open("eventSimulator/smokeCarbonMonoxideDefaultDetectedEvent.groovy", "r")
+                       elif capability == "capability.carbonMonoxideDetector":
+                               event = open("eventSimulator/carbonMonoxideDefaultDetectedEvent.groovy", "r")
+                       for line in event:
+                               extractedEvents.write("\t\t" + line)
+                       event.close()
+               elif eventList[i] == "carbonMonoxide.tested":
+                       #Check which capability
+                       variable = eventVarMap[eventList[i]]
+                       if eventList[i] not in eventVarCounterMap.keys():
+                               eventVarCounterMap[eventList[i]] = 1
+                               eventVarCount = 0
+                       else:
+                               eventVarCount = eventVarCounterMap[eventList[i]]
+                               eventVarCounterMap[eventList[i]] = eventVarCount + 1
+                       capability = capabilityMap[variable[eventVarCount]]
+                       if capability == "capability.smokeDetector":
+                               event = open("eventSimulator/smokeCarbonMonoxideDefaultTestedEvent.groovy", "r")
+                       elif capability == "capability.carbonMonoxideDetector":
+                               event = open("eventSimulator/carbonMonoxideDefaultTestedEvent.groovy", "r")
+                       for line in event:
+                               extractedEvents.write("\t\t" + line)
+                       event.close()
                elif eventList[i] == "battery":
                        #Check which capability
                        variable = eventVarMap[eventList[i]]
                elif eventList[i] == "battery":
                        #Check which capability
                        variable = eventVarMap[eventList[i]]
@@ -488,6 +587,8 @@ def ExtractEvents(extractedEvents):
                                event = open("eventSimulator/switchLevelOnEvent.groovy", "r")
                        elif capability == "capability.relaySwitch":
                                event = open("eventSimulator/relaySwitchOnEvent.groovy", "r")
                                event = open("eventSimulator/switchLevelOnEvent.groovy", "r")
                        elif capability == "capability.relaySwitch":
                                event = open("eventSimulator/relaySwitchOnEvent.groovy", "r")
+                       elif capability == "capability.colorControl":
+                               event = open("eventSimulator/colorControlSwitchOnEvent.groovy", "r")
                        for line in event:
                                extractedEvents.write("\t\t" + line)
                        event.close()
                        for line in event:
                                extractedEvents.write("\t\t" + line)
                        event.close()
@@ -498,6 +599,8 @@ def ExtractEvents(extractedEvents):
                                event = open("eventSimulator/switchLevelOffEvent.groovy", "r")
                        elif capability == "capability.relaySwitch":
                                event = open("eventSimulator/relaySwitchOffEvent.groovy", "r")
                                event = open("eventSimulator/switchLevelOffEvent.groovy", "r")
                        elif capability == "capability.relaySwitch":
                                event = open("eventSimulator/relaySwitchOffEvent.groovy", "r")
+                       elif capability == "capability.colorControl":
+                               event = open("eventSimulator/colorControlSwitchOffEvent.groovy", "r")
                        for line in event:
                                extractedEvents.write("\t\t" + line)
                        event.close()
                        for line in event:
                                extractedEvents.write("\t\t" + line)
                        event.close()
@@ -521,6 +624,25 @@ def ExtractEvents(extractedEvents):
                                extractedEvents.write("\t\t" + line)
                        event.close()
                        extractedEvents.write("\t\t\t}\n")
                                extractedEvents.write("\t\t" + line)
                        event.close()
                        extractedEvents.write("\t\t\t}\n")
+               elif eventList[i] == "mode":
+                       #Write three events subsequently
+                       extractedEvents.write("\t\t\tdef event = Verify.getInt(0,2)\n")
+                       extractedEvents.write("\t\t\tif (event == 0) {\n")
+                       event = open("eventSimulator/modeHomeEvent.groovy", "r")                        
+                       for line in event:
+                               extractedEvents.write("\t\t" + line)
+                       event.close()
+                       extractedEvents.write("\t\t\t} else if (event == 1) {\n")
+                       event = open("eventSimulator/modeAwayEvent.groovy", "r")
+                       for line in event:
+                               extractedEvents.write("\t\t" + line)
+                       event.close()
+                       extractedEvents.write("\t\t\t} else {\n")
+                       event = open("eventSimulator/modeNightEvent.groovy", "r")
+                       for line in event:
+                               extractedEvents.write("\t\t" + line)
+                       event.close()
+                       extractedEvents.write("\t\t\t}\n")
                elif eventList[i] == "acceleration":
                        #Write two events subsequently
                        extractedEvents.write("\t\t\tdef event = Verify.getInt(0,1)\n")
                elif eventList[i] == "acceleration":
                        #Write two events subsequently
                        extractedEvents.write("\t\t\tdef event = Verify.getInt(0,1)\n")
@@ -535,6 +657,16 @@ def ExtractEvents(extractedEvents):
                                extractedEvents.write("\t\t" + line)
                        event.close()
                        extractedEvents.write("\t\t\t}\n")
                                extractedEvents.write("\t\t" + line)
                        event.close()
                        extractedEvents.write("\t\t\t}\n")
+               elif eventList[i] == "acceleration.active":
+                       event = open("eventSimulator/accelerationDefaultActiveEvent.groovy", "r")
+                       for line in event:
+                               extractedEvents.write("\t\t" + line)
+                       event.close()
+               elif eventList[i] == "acceleration.inactive":
+                       event = open("eventSimulator/accelerationDefaultInactiveEvent.groovy", "r")
+                       for line in event:
+                               extractedEvents.write("\t\t" + line)
+                       event.close()
                elif eventList[i] == "sleeping":
                        #Write two events subsequently
                        extractedEvents.write("\t\t\tdef event = Verify.getInt(0,1)\n")
                elif eventList[i] == "sleeping":
                        #Write two events subsequently
                        extractedEvents.write("\t\t\tdef event = Verify.getInt(0,1)\n")
@@ -560,17 +692,22 @@ def ExtractEvents(extractedEvents):
                                extractedEvents.write(line)
                        event.close()
                elif eventList[i] == "color":
                                extractedEvents.write(line)
                        event.close()
                elif eventList[i] == "color":
-                       event = open("eventSimulator/colorChangedEvent.groovy", "r")
+                       event = open("eventSimulator/colorChangeEvent.groovy", "r")
+                       for line in event:
+                               extractedEvents.write(line)
+                       event.close()
+               elif eventList[i] == "colorTemperature":
+                       event = open("eventSimulator/colorTemperatureEvent.groovy", "r")
                        for line in event:
                                extractedEvents.write(line)
                        event.close()
                elif eventList[i] == "hue":
                        for line in event:
                                extractedEvents.write(line)
                        event.close()
                elif eventList[i] == "hue":
-                       event = open("eventSimulator/hueChangedEvent.groovy", "r")
+                       event = open("eventSimulator/hueChangeEvent.groovy", "r")
                        for line in event:
                                extractedEvents.write(line)
                        event.close()
                elif eventList[i] == "saturation":
                        for line in event:
                                extractedEvents.write(line)
                        event.close()
                elif eventList[i] == "saturation":
-                       event = open("eventSimulator/saturationChangedEvent.groovy", "r")
+                       event = open("eventSimulator/saturationChangeEvent.groovy", "r")
                        for line in event:
                                extractedEvents.write(line)
                        event.close()
                        for line in event:
                                extractedEvents.write(line)
                        event.close()
@@ -741,7 +878,7 @@ def ExtractEvents(extractedEvents):
                        event.close()
                        
                ###TODO: Add more events later
                        event.close()
                        
                ###TODO: Add more events later
-               extractedEvents.write("\t\t\tbreak\n")
+               extractedEvents.write("\n\t\t\tbreak\n")
        extractedEvents.write("\t}\n")
        extractedEvents.write("}\n")
        
        extractedEvents.write("\t}\n")
        extractedEvents.write("}\n")