public string Serialize(int mode)
        {
            string result = "";

            if (mode == SerializeAsFullJson)
            {
                if (Name != null)
                {
                    result += "\"" + CFunctions.EscapeJson(Name) + "\": { ";
                }
                if (Type > -1)
                {
                    result += "\"type\":\"" + CDiscoveredTypes.Values[Type].Replace(" ", "-").ToLower() + "\", ";
                }
                if (Metrics != null)
                {
                    result += Metrics.Serialize(SerializeAsFullJson);
                }
                if (Attributes != null)
                {
                    result += Attributes.Serialize(SerializeAsFullJson);
                }
            }
            else if (mode == SerializeAsShortJson)
            {
                result += "{";
                if (Metrics != null)
                {
                    result += Metrics.Serialize(SerializeAsShortJson);
                }
                if (Attributes != null)
                {
                    result += Attributes.Serialize(SerializeAsShortJson);
                }
            }
            result  = result.TrimEnd(new char[] { ',', ' ' });
            result += "}";
            return(result);
        }
        public void ExportDiscoveredConfig(CDiscoveredConfig oc, CService server = null, bool rolluptotals = false)
        {
            if (oc.Attributes != null && oc.Name.Length > 0)
            {
                if (server != null && rolluptotals)
                {
                    // create grouping objects
                    AddGroupingInfo(server, oc);

                    // rollup totals by group and repair object parent properties
                    oc = UpdateGroupingInfo(server, oc);
                }
                CDatabaseEntry entry = new CDatabaseEntry();
                entry.Id         = oc.Id.ToString();
                entry.Reference  = oc.Attributes.Get(CAttributeType.Reference);
                entry.Created    = oc.Attributes.Get(CAttributeType.Created);
                entry.Accessed   = oc.Attributes.Get(CAttributeType.Accessed);
                entry.Name       = CFunctions.EscapeJson(oc.Name);
                entry.Type       = oc.Type.ToString();
                entry.Parent     = CFunctions.StringJoin(";", oc.Owner);
                entry.Attributes = oc.Serialize(CDiscoveredConfig.SerializeAsShortJson);
                if (!ExportedEntries.Contains(entry.Id))
                {
                    _DBConn.AddEntry(entry);
                    ExportedEntries.Add(entry.Id);
                }
                else
                {
                    _DBConn.UpdateEntry(entry);
                }
            }
            if (oc.ChildObjects != null)
            {
                foreach (CDiscoveredConfig obj in oc.ChildObjects)
                {
                    ExportDiscoveredConfig(obj, server, rolluptotals);
                }
            }
        }
        public string Serialize(int mode)
        {
            string result = "";

            if (mode == SerializeAsFullJson)
            {
                foreach (int type in _attributes.Keys)
                {
                    string tstr = new CAttributeType(type).ToString().Replace(" ", "").ToLower();
                    result += "\"" + tstr + "\":\"" + CFunctions.EscapeJson(_attributes[type]) + "\", ";
                }
            }
            else if (mode == SerializeAsShortJson)
            {
                foreach (int type in _attributes.Keys)
                {
                    if (type != CAttributeType.Reference && type != CAttributeType.Created && type != CAttributeType.Accessed)
                    {
                        result += "\"" + type + "\":\"" + CFunctions.EscapeJson(_attributes[type]) + "\", ";
                    }
                }
            }
            return(result);
        }