コード例 #1
0
        private void DoWork(object state)
        {
            _logger.LogInformation("Timed Background Service is working.");
            var oms = new Oms((s) => _logger.LogInformation(s), _factory);

            oms.LogCases();
        }
コード例 #2
0
        public static void LoadMCXFile(this Oms oms, string file)
        {
            MochaSnapshotObjectModel mcx = new MochaSnapshotObjectModel();

            Document.Load(mcx, mcldf, new FileAccessor(file, false, false, true));

            oms.LoadMCX(mcx);
        }
コード例 #3
0
        public static void Initialize(this Oms oms, Accessor accessor)
        {
            MochaClassLibraryObjectModel mcl = new MochaClassLibraryObjectModel();

            Document.Load(mcl, mcldf, accessor);

            oms.Initialize(mcl);
        }
コード例 #4
0
        public static void LoadStream(this Oms oms, System.IO.Stream stream)
        {
            MochaClassLibraryObjectModel mcl = new MochaClassLibraryObjectModel();

            Document.Load(mcl, mcldf, new StreamAccessor(stream));

            oms.LoadObjectModel(mcl);
        }
コード例 #5
0
        public static void LoadFile(this Oms oms, string file)
        {
            MochaClassLibraryObjectModel mcl = new MochaClassLibraryObjectModel();

            Document.Load(mcl, mcldf, new FileAccessor(file, false, false, true));

            oms.LoadObjectModel(mcl);
        }
コード例 #6
0
        internal static Oms GetTestingOms()
        {
            Oms _oms = (Oms)TYPE_OMS.Assembly.CreateInstance(TYPE_OMS.FullName);

            _oms.DefaultTenant = _oms.CreateTenant("default");
            _oms.Initialize(new MemoryAccessor(Properties.Resources.Mocha_Core_v1_0_mcl));
            return(_oms);
        }
コード例 #7
0
 public static void Initialize(this Oms oms, string path)
 {
     string[] files = new string[] { path };
     if (System.IO.Directory.Exists(path))
     {
         files = System.IO.Directory.GetFiles(path, "*.mcl");
     }
     oms.Initialize(files);
 }
コード例 #8
0
ファイル: Form1.cs プロジェクト: ELEMENTSECM/NetCoreClient
        private void Form1_Load(object sender, EventArgs e)
        {
            //NCoreOptions options = HardCodedSettings.GetNCoreOptions();
            NCoreOptions options        = Program.GetNCoreOptions();
            var          factory        = new NCoreFactory(options);
            var          ephorteContext = factory.Create();

            _oms = new Oms((s) => textBox1.Text += Environment.NewLine + s, factory);
        }
コード例 #9
0
        /// <summary>
        /// Persists all pending transactions in <see cref="Oms.PendingTransactions" /> to the backing store.
        /// </summary>
        /// <param name="oms">Oms.</param>
        /// <param name="path">Path.</param>
        public static void Save(this Oms oms, string path)
        {
            string filename        = System.IO.Path.Combine(new string[] { path, String.Format("{0}.mcx", DateTime.Now.ToString("s").Replace(':', '-')) });
            string parentDirectory = System.IO.Path.GetDirectoryName(filename);

            if (!System.IO.Directory.Exists(parentDirectory))
            {
                System.IO.Directory.CreateDirectory(parentDirectory);
            }

            MochaSnapshotObjectModel mcx = new MochaSnapshotObjectModel();

            foreach (Transaction transaction in oms.PendingTransactions)
            {
                string tenantName = oms.GetTenantName(transaction.Tenant);
                MochaSnapshotTransaction snapshotTransaction = new MochaSnapshotTransaction();
                snapshotTransaction.TenantName = tenantName;

                foreach (TransactionOperation op in transaction.Operations)
                {
                    if (op is AssignAttributeTransactionOperation aa)
                    {
                        MochaSnapshotAssignAttributeTransactionOperation ssaa = new MochaSnapshotAssignAttributeTransactionOperation();
                        ssaa.SourceInstanceID    = oms.GetInstanceID(aa.SourceInstance);
                        ssaa.AttributeInstanceID = oms.GetInstanceID(aa.AttributeInstance);
                        ssaa.EffectiveDate       = aa.EffectiveDate;
                        ssaa.Value = aa.Value;
                        snapshotTransaction.Operations.Add(ssaa);
                    }
                    else if (op is AssociateRelationshipTransactionOperation ar)
                    {
                        MochaSnapshotAssociateRelationshipTransactionOperation ssar = new MochaSnapshotAssociateRelationshipTransactionOperation();
                        ssar.SourceInstanceID       = oms.GetInstanceID(ar.SourceInstance);
                        ssar.RelationshipInstanceID = oms.GetInstanceID(ar.RelationshipInstance);
                        ssar.EffectiveDate          = ar.EffectiveDate;
                        for (int i = 0; i < ar.TargetInstances.Length; i++)
                        {
                            ssar.TargetInstanceIDs.Add(oms.GetInstanceID(ar.TargetInstances[i]));
                        }
                        snapshotTransaction.Operations.Add(ssar);
                    }
                    else if (op is CreateInstanceTransactionOperation ci)
                    {
                        MochaSnapshotCreateInstanceTransactionOperation ssci = new MochaSnapshotCreateInstanceTransactionOperation();
                        ssci.GlobalIdentifier      = ci.GlobalIdentifier;
                        ssci.ClassGlobalIdentifier = ci.ClassGlobalIdentifier;
                        snapshotTransaction.Operations.Add(ssci);
                    }
                }
                mcx.Transactions.Add(snapshotTransaction);
            }
            Document.Save(mcx, mcldf, new FileAccessor(filename, true, true));

            oms.PendingTransactions.Clear();
        }
コード例 #10
0
        private static InstanceHandle[] GuidsToInstances(Oms oms, Guid[] guids)
        {
            List <InstanceHandle> list = new List <InstanceHandle>();

            foreach (Guid id in guids)
            {
                InstanceHandle ih = oms.GetInstance(id);
                list.Add(ih);
            }
            return(list.ToArray());
        }
コード例 #11
0
        public static void Load(this Oms oms, string path)
        {
            if (!System.IO.Directory.Exists(path))
            {
                Console.WriteLine("[mocha info]: snapshot dir nonexistent, skipping rehydration");
                return;
            }

            string[] files = System.IO.Directory.GetFiles(path, "*.mcx", System.IO.SearchOption.AllDirectories);
            foreach (string file in files)
            {
                oms.LoadMCXFile(file);
            }
        }
コード例 #12
0
        public static void Initialize(this Oms oms, string[] path)
        {
            string[] files = path;

            MochaClassLibraryObjectModel mcl = new MochaClassLibraryObjectModel();

            for (int i = 0; i < files.Length; i++)
            {
                MochaClassLibraryObjectModel mcl1 = new MochaClassLibraryObjectModel();
                Document.Load(mcl1, mcldf, new FileAccessor(files[i], false, false, true));
                mcl1.CopyTo(mcl);
            }

            oms.Initialize(mcl);
        }
コード例 #13
0
        private static void Initialize(this Oms oms, MochaClassLibraryObjectModel mcl)
        {
            oms.BeginTransaction();

            for (int i = 0; i < mcl.Libraries.Count; i++)
            {
                for (int j = 0; j < mcl.Libraries[i].Instances.Count; j++)
                {
                    oms.CreateInstance(mcl.Libraries[i].Instances[j].ID, Guid.Empty);
                }
            }

            oms.CommitTransaction();

            oms.BeginTransaction();
            for (int i = 0; i < mcl.Libraries.Count; i++)
            {
                for (int j = 0; j < mcl.Libraries[i].Instances.Count; j++)
                {
                    for (int k = 0; k < mcl.Libraries[i].Instances[j].AttributeValues.Count; k++)
                    {
                        oms.SetAttributeValue(oms.GetInstance(mcl.Libraries[i].Instances[j].ID), oms.GetInstance(mcl.Libraries[i].Instances[j].AttributeValues[k].AttributeInstanceID), mcl.Libraries[i].Instances[j].AttributeValues[k].Value);
                    }
                }
                for (int j = 0; j < mcl.Libraries[i].Relationships.Count; j++)
                {
                    Guid[] ids = new Guid[mcl.Libraries[i].Relationships[j].DestinationInstanceIDs.Count];
                    for (int k = 0; k < mcl.Libraries[i].Relationships[j].DestinationInstanceIDs.Count; k++)
                    {
                        ids[k] = mcl.Libraries[i].Relationships[j].DestinationInstanceIDs[k];
                    }
                    oms.CreateRelationship(oms.GetInstance(mcl.Libraries[i].Relationships[j].SourceInstanceID), oms.GetInstance(mcl.Libraries[i].Relationships[j].RelationshipInstanceID), GuidsToInstances(oms, ids));
                }
            }
            oms.CommitTransaction();

            oms.BeginTransaction();


            // create the Class::Instance.has parent Class relationship
            oms.CreateRelationship(oms.GetInstance(KnownInstanceGuids.Classes.Class), oms.GetInstance(KnownRelationshipGuids.Class__has__Instance), oms.GetInstance(KnownInstanceGuids.Classes.Class));
            oms.CreateRelationship(oms.GetInstance(KnownInstanceGuids.Classes.Class), oms.GetInstance(KnownRelationshipGuids.Instance__for__Class), oms.GetInstance(KnownInstanceGuids.Classes.Class));

            oms.CommitTransaction();
        }
コード例 #14
0
        private static void LoadObjectModel(this Oms oms, MochaClassLibraryObjectModel mcl)
        {
            foreach (MochaTenant tenant in mcl.Tenants)
            {
                oms.DefaultTenant = oms.GetTenant(tenant.Name);
                if (oms.DefaultTenant.IsEmpty)
                {
                    throw new InvalidOperationException("attempted to load snapshot for nonexistent tenant");
                }

                oms.BeginTransaction();
                for (int j = 0; j < tenant.Instances.Count; j++)
                {
                    oms.CreateInstance(tenant.Instances[j].ID, Guid.Empty);
                }
                oms.CommitTransaction();
            }
        }
コード例 #15
0
        private static void LoadMCX(this Oms oms, MochaSnapshotObjectModel mcx)
        {
            foreach (MochaSnapshotTransaction t in mcx.Transactions)
            {
                oms.DefaultTenant = oms.GetTenant(t.TenantName);
                if (oms.DefaultTenant.IsEmpty)
                {
                    throw new InvalidOperationException("attempted to load snapshot for nonexistent tenant");
                }

                oms.BeginTransaction();
                for (int j = 0; j < t.Operations.Count; j++)
                {
                    oms.LoadMCXOperation(t.Operations[j]);
                }
                oms.CommitTransaction();
            }
        }
コード例 #16
0
 private static void LoadMCXOperation(this Oms oms, MochaSnapshotTransactionOperation op)
 {
     if (op is MochaSnapshotAssignAttributeTransactionOperation aa)
     {
         oms.SetAttributeValue(oms.GetInstance(aa.SourceInstanceID), oms.GetInstance(aa.AttributeInstanceID), aa.EffectiveDate, aa.Value);
     }
     else if (op is MochaSnapshotAssociateRelationshipTransactionOperation ar)
     {
         List <InstanceHandle> targetInstances = new List <InstanceHandle>();
         foreach (Guid id in ar.TargetInstanceIDs)
         {
             targetInstances.Add(oms.GetInstance(id));
         }
         oms.CreateRelationship(oms.GetInstance(ar.SourceInstanceID), oms.GetInstance(ar.RelationshipInstanceID), targetInstances.ToArray(), ar.EffectiveDate);
     }
     else if (op is MochaSnapshotCreateInstanceTransactionOperation ci)
     {
         oms.CreateInstance(ci.GlobalIdentifier, ci.ClassGlobalIdentifier);
     }
 }
コード例 #17
0
        public static void InitializeTenants(this Oms oms, string path)
        {
            TenantHandle defaultTenant = oms.DefaultTenant;

            string[] files = { path };
            if (System.IO.Directory.Exists(path))
            {
                files = System.IO.Directory.GetFiles(path, "tenant.xml", System.IO.SearchOption.AllDirectories);
            }

            foreach (string file in files)
            {
                MochaTenantDefinitionObjectModel mcl1 = new MochaTenantDefinitionObjectModel();
                Document.Load(mcl1, tenantdf, new FileAccessor(file, false, false, true));

                foreach (Tenant tenant in mcl1.Tenants)
                {
                    oms.DefaultTenant = oms.CreateTenant(tenant.Name);

                    string[] libraryPathList = new string[tenant.LibraryReferences.Count];
                    for (int i = 0; i < tenant.LibraryReferences.Count; i++)
                    {
                        string libraryPath = tenant.LibraryReferences[i].Path.ReplaceVariables(new KeyValuePair <string, object>[]
                        {
                            new KeyValuePair <string, object>("MochaRoot", System.IO.Path.Combine(new string[] { System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location), "System" }))
                        });
                        libraryPathList[i] = libraryPath;
                    }
                    oms.Initialize(libraryPathList);

                    Console.WriteLine("[mocha debug]: initialized tenant `{0}`", tenant.Name);
                }
            }

            oms.DefaultTenant = defaultTenant;
            oms.PendingTransactions.Clear();
        }
コード例 #18
0
 public void SetUp()
 {
     oms = MemoryOms.GetTestingOms();
 }
コード例 #19
0
 public void TearDown()
 {
     oms = null;
 }
コード例 #20
0
ファイル: Program.cs プロジェクト: alcexhim/Mocha
 private static void TestExisting(Oms oms)
 {
     InstanceHandle ihInventItem = oms.GetInstance(LocalInstanceGuids.Classes.InventoryItem);
     string         title        = oms.GetInstanceTitle(ihInventItem);
     string         title2       = oms.GetTranslationValue(ihInventItem, oms.GetInstance(KnownRelationshipGuids.Class__has_title__Translatable_Text_Constant), oms.GetInstance(KnownInstanceGuids.Languages.English));
 }