public string getASPRepresentation(SimpleSensor s)
        {
            String sensorMapping = "";

            foreach (string p in s.properties.Distinct())
            {
                if (s.operationPerProperty.ContainsKey(p))
                {
                    sensorMapping += "%";
                    string keyWithoutDotsAndSpaces = p.Replace(".", "");
                    keyWithoutDotsAndSpaces = keyWithoutDotsAndSpaces.Replace(" ", "");
                    keyWithoutDotsAndSpaces = keyWithoutDotsAndSpaces.Replace("_", "");
                    string sensorNameNotCapital = char.ToLower(s.sensorName[0]) + s.sensorName.Substring(1);
                    //MyDebugger.MyDebug("goname " + s.gOName);
                    string goNameNotCapital = "";
                    if (s.gOName.Length > 0)
                    {
                        goNameNotCapital = char.ToLower(s.gOName[0]) + s.gOName.Substring(1);
                    }

                    sensorMapping += sensorNameNotCapital + "(";
                    if (!s.gOName.Equals(""))
                    {
                        sensorMapping += goNameNotCapital + "(";
                    }
                    sensorMapping += ASPMapperHelper.getInstance().buildMapping(keyWithoutDotsAndSpaces, '^', "(X)") + ")";
                    if (!s.gOName.Equals(""))
                    {
                        sensorMapping += ").";
                    }
                    sensorMapping += Environment.NewLine;
                }
            }
            return(sensorMapping);
        }
        public string Map(object o)//o is a Sensor
        {
            SimpleSensor s             = (SimpleSensor)o;
            String       sensorMapping = "";

            lock (s.toLock)
            {
                MappingManager manager = MappingManager.getInstance();
                foreach (IDictionary dictionary in s.dictionaryPerType.Values.Distinct())
                {
                    foreach (DictionaryEntry entry in dictionary)
                    {
                        //MyDebugger.MyDebug(entry.Key);
                        string keyWithoutDotsAndSpaces = ((string)entry.Key).Replace(".", "");
                        keyWithoutDotsAndSpaces = keyWithoutDotsAndSpaces.Replace(" ", "");
                        keyWithoutDotsAndSpaces = keyWithoutDotsAndSpaces.Replace("_", "");
                        if (!s.unityASPVariationNames.ContainsKey(keyWithoutDotsAndSpaces))
                        {
                            s.unityASPVariationNames.Add(keyWithoutDotsAndSpaces, (string)entry.Key);
                        }
                        Type            mapperType = entry.Value.GetType().GetGenericArguments()[0];//entry is a List<SOMETHING>
                        DictionaryEntry toMap      = new DictionaryEntry();
                        toMap.Key = keyWithoutDotsAndSpaces;
                        string sensorNameNotCapital = char.ToLower(s.sensorName[0]) + s.sensorName.Substring(1);
                        //MyDebugger.MyDebug("goname " + s.gOName);
                        string goNameNotCapital = "";
                        if (s.gOName.Length > 0)
                        {
                            goNameNotCapital = char.ToLower(s.gOName[0]) + s.gOName.Substring(1);
                        }
                        if (s.operationPerProperty.ContainsKey((string)entry.Key))
                        {
                            sensorMapping += sensorNameNotCapital + "(";
                            if (!s.gOName.Equals(""))
                            {
                                sensorMapping += goNameNotCapital + "(";
                            }
                            //MyDebugger.MyDebug(sensorMapping + " " + entry.Value + " " + s.operationPerProperty[(string)toMap.Key]);
                            toMap.Value = Operation.compute(s.operationPerProperty[(string)entry.Key], entry.Value);
                            //MyDebugger.MyDebug("toMap: " + toMap.Key + " " + toMap.Value);
                            sensorMapping += manager.getMapper(mapperType).Map(toMap) + ")";
                            if (!s.gOName.Equals(""))
                            {
                                sensorMapping += ").";
                            }
                            sensorMapping += Environment.NewLine;
                        }
                        //MyDebugger.MyDebug("sensorMapping done for " + sensorMapping);
                    }
                }
                foreach (IDictionary dic in s.dictionaryPerType.Values.Distinct())
                {
                    dic.Clear();
                }
            }
            return(sensorMapping);
        }
        internal Dictionary <string, List <string> > getTemplateASPRepresentation(SimpleSensor s)
        {
            Dictionary <string, List <string> > sensorMapping = new Dictionary <string, List <string> >();

            foreach (string p in s.properties.Distinct())
            {
                sensorMapping.Add(p, new List <string>());
                if (s.operationPerProperty.ContainsKey(p))
                {
                    string keyWithoutDotsAndSpaces = p.Replace(".", "");
                    keyWithoutDotsAndSpaces = keyWithoutDotsAndSpaces.Replace(" ", "");
                    keyWithoutDotsAndSpaces = keyWithoutDotsAndSpaces.Replace("_", "");
                    string sensorNameNotCapital = char.ToLower(s.sensorName[0]) + s.sensorName.Substring(1);
                    //MyDebugger.MyDebug("goname " + s.gOName);
                    string goNameNotCapital = "";
                    if (s.gOName.Length > 0)
                    {
                        goNameNotCapital = char.ToLower(s.gOName[0]) + s.gOName.Substring(1);
                    }

                    sensorMapping[p].Add(sensorNameNotCapital + "(");
                    if (!s.gOName.Equals(""))
                    {
                        sensorMapping[p][0] += goNameNotCapital + "(";
                    }
                    List <string> temp = ASPMapperHelper.getInstance().buildTemplateMapping(keyWithoutDotsAndSpaces, '^');
                    sensorMapping[p][0] += temp[0];
                    sensorMapping[p].Add("");
                    sensorMapping[p].Add(temp[temp.Count - 1] + ")");
                    if (!s.gOName.Equals(""))
                    {
                        sensorMapping[p][2] += ").";
                    }
                }
            }
            return(sensorMapping);
        }