Exemple #1
0
        public static void LoadCIMObject(ref CIMObject cimObject, CIMModelContext cimModelContext, string text)
        {
            if (!string.IsNullOrEmpty(text))
            {
                bool     success;
                TimeSpan durationOfParsing;

                CIMRDFObjectXMLHandler handler = new CIMRDFObjectXMLHandler();
                handler.CimModelContext = cimModelContext;
                //// call parsing:
                handler = (CIMRDFObjectXMLHandler)XMLParsingManager.DoParseText(handler, XMLParsingManager.ParsingFileTypes.CIMModelFile, text, out success, out durationOfParsing);

                if (success)
                {
                    cimObject = handler.Object;
                }
            }
        }
Exemple #2
0
        private void FindAttributeDifferences()
        {
            modified = new List <CIMEntityDifference>();
            if (updated != null)
            {
                CIMModelContext context = new CIMModelContext();
                foreach (KeyValuePair <CIMEntity, CIMEntity> pair in updated)
                {
                    CIMObject oldVersion = null;
                    CIMModelLoader.LoadCIMObject(ref oldVersion, context, string.Format("{0}{1}\n</rdf:RDF>", beforeModel.Header, pair.Key.Source));
                    CIMObject newVersion = null;
                    CIMModelLoader.LoadCIMObject(ref newVersion, context, string.Format("{0}{1}\n</rdf:RDF>", afterModel.Header, pair.Value.Source));

                    if ((oldVersion != null) && (newVersion != null))
                    {
                        CIMEntityDifference diff = new CIMEntityDifference();
                        diff.RdfId = oldVersion.ID;
                        //// TODO uporediti atribute u oba objekta i spakovati ih u CIMEntityDifference instancu
                        //PROVERA ZA OLD
                        if (oldVersion.HasAttributes)
                        {
                            foreach (ObjectAttribute oldAtt in oldVersion.MyAttributesAsList)
                            {
                                if (string.Compare(oldAtt.FullName, CIMConstants.AttributeNameIdentifiedObjectMRID) == 0)
                                {
                                    //postavi mrid
                                    diff.MRID = oldAtt.Value;
                                }

                                //uzmem sve sa istim imenom - ako nema dodajem ako ima proveravam
                                if (newVersion.GetAttributeList(oldAtt.FullName) != null)
                                {
                                    if (newVersion.GetAttributeList(oldAtt.FullName).Count == 0)
                                    {
                                        //dodajem
                                        diff.AddAttribute(oldAtt, null);
                                    }
                                    else
                                    {
                                        bool found = false;
                                        if (newVersion.HasAttributes)
                                        {
                                            foreach (ObjectAttribute newAtt in newVersion.GetAttributeList(oldAtt.FullName))
                                            {
                                                //proveravam da li se javlja ista vrednost
                                                if (string.Compare(oldAtt.Value, newAtt.Value) == 0)
                                                {
                                                    //ako se javlja dodajem ga kao nadjen i ne treba da se pojavi
                                                    found = true;
                                                    break;
                                                }
                                            }
                                        }
                                        //ako je found false, znaci da je dodat
                                        if (!found)
                                        {
                                            diff.AddAttribute(oldAtt, null);
                                        }
                                    }
                                }
                                else
                                {
                                    diff.AddAttribute(oldAtt, null);
                                }
                            }
                        }
                        //PROVERA ZA NEW
                        if (newVersion.HasAttributes)
                        {
                            if (newVersion.MyAttributesAsList != null)
                            {
                                foreach (ObjectAttribute newAtt in newVersion.MyAttributesAsList)
                                {
                                    if (string.Compare(newAtt.FullName, CIMConstants.AttributeNameIdentifiedObjectMRID) == 0)
                                    {
                                        //postavi mrid
                                        if (string.IsNullOrEmpty(diff.MRID))
                                        {
                                            diff.MRID = newAtt.Value;
                                        }
                                    }

                                    //uzmem sve sa istim imenom - ako nema dodajem ako ima proveravam
                                    if (oldVersion.GetAttributeList(newAtt.FullName) != null)
                                    {
                                        if (oldVersion.GetAttributeList(newAtt.FullName).Count == 0)
                                        {
                                            //dodajem
                                            diff.AddAttribute(newAtt, null);
                                        }
                                        else
                                        {
                                            bool found = false;
                                            if (oldVersion.HasAttributes)
                                            {
                                                foreach (ObjectAttribute oldAtt in oldVersion.GetAttributeList(newAtt.FullName))
                                                {
                                                    //proveravam da li se javlja ista vrednost
                                                    if (string.Compare(newAtt.Value, oldAtt.Value) == 0)
                                                    {
                                                        //ako se javlja i isti je obelezavam ga kao nadjen
                                                        found = true;
                                                        break;
                                                    }
                                                }
                                            }
                                            //ako je found false, znaci da je dodat
                                            if (!found)
                                            {
                                                diff.AddAttribute(null, newAtt);
                                            }
                                        }
                                    }
                                    else
                                    {
                                        diff.AddAttribute(null, newAtt);
                                    }
                                }
                            }
                        }
                        if (diff.Attributes.Count > 0)
                        {
                            this.modified.Add(diff);
                        }
                    }
                }
            }
        }