Ejemplo n.º 1
0
 private void CreateActionArtifacsts(IObjectSpace objectSpace, RuntimeSetupInfo setupInfo)
 {
     if (!objectSpace.Contains <ModuleArtifact>(artifact => artifact.Type == ModuleArtifactType.Action))
     {
         var moduleTypes = GetModuleTypes(setupInfo);
         var controllers = moduleTypes.SelectMany(type => type.Assembly.GetTypes())
                           .Where(type => !type.IsAbstract && typeof(Controller).IsAssignableFrom(type))
                           .Select(type => type.CreateInstance())
                           .Cast <Controller>();
         foreach (var controller in controllers)
         {
             var controllerArtifact = objectSpace.GetModuleArtifact(controller.GetType());
             foreach (var action in controller.Actions)
             {
                 var name           = action.Id;
                 var actionArtifact = objectSpace.GetObject <ModuleArtifact>(artifact => artifact.Name == name && artifact.Type == ModuleArtifactType.Action);
                 actionArtifact.Name = name;
                 actionArtifact.Type = ModuleArtifactType.Action;
                 actionArtifact.Text = action.ToolTip;
                 actionArtifact.ModuleChilds.AddRange(controllerArtifact.ModuleChilds);
                 actionArtifact.Artifacts.Add(controllerArtifact);
                 controllerArtifact.Artifacts.Add(actionArtifact);
             }
         }
     }
 }
Ejemplo n.º 2
0
        private static IEnumerable <Type> GetModuleTypes(RuntimeSetupInfo setupInfo)
        {
            var fullPath = setupInfo.XpandRootPath + @"\Xpand.DLL";
            //            var files = Directory.GetFiles(fullPath, "Xpand.ExpressApp*.dll", SearchOption.TopDirectoryOnly).Where(s => s.Contains("ModelDiff"));
            var files = Directory.GetFiles(fullPath, "Xpand.ExpressApp*.dll", SearchOption.TopDirectoryOnly);

            return(files.Select(Assembly.LoadFrom).Select(assembly => assembly.GetTypes().FirstOrDefault(type => !type.IsAbstract && typeof(XpandModuleBase).IsAssignableFrom(type))).Where(moduleType => moduleType != null));
        }
Ejemplo n.º 3
0
        public bool Run(RuntimeSetupInfo setupInfo)
        {
            var typesInfo = new TypesInfo();

            typesInfo.AddEntityStore(new NonPersistentEntityStore(typesInfo));
            var reflectionDictionary = new ReflectionDictionary(); reflectionDictionary.CollectClassInfos(typeof(ModuleArtifact).Assembly);
            var xpoTypeInfoSource    = new XpoTypeInfoSource(typesInfo, reflectionDictionary);

            typesInfo.AddEntityStore(xpoTypeInfoSource);
            typesInfo.LoadTypes(typeof(ModuleArtifact).Assembly);
            var exportedTypesFromAssembly = ModuleHelper.CollectExportedTypesFromAssembly(typeof(ModuleArtifact).Assembly, ExportedTypeHelpers.IsExportedType);

            foreach (var type in exportedTypesFromAssembly)
            {
                xpoTypeInfoSource.RegisterEntity(type);
            }

            var objectSpace = new XPObjectSpace(typesInfo, xpoTypeInfoSource, () => new UnitOfWork(reflectionDictionary)
            {
                ConnectionString = setupInfo.ConnectionString
            });

            if (!objectSpace.Contains <ModuleChild>())
            {
                var moduleTypes  = GetModuleTypes(setupInfo);
                var childModules = objectSpace.GetModuleChilds(moduleTypes);
                foreach (var childModule in childModules)
                {
                    childModule.Value.CreateArtifacts(childModule.Key);
                    childModule.Value.CreateExtenderInterfaces(childModule.Key);
                }
                UpdateMapViewModule(childModules, objectSpace);
            }
            CreateObjects(objectSpace, setupInfo);
            objectSpace.CommitChanges();
            return(true);
        }
Ejemplo n.º 4
0
 private void CreateObjects(IObjectSpace objectSpace, RuntimeSetupInfo setupInfo)
 {
     CreateActionArtifacsts(objectSpace, setupInfo);
 }
Ejemplo n.º 5
0
 private void CreateActionArtifacsts(IObjectSpace objectSpace, RuntimeSetupInfo setupInfo) {
     if (!objectSpace.Contains<ModuleArtifact>(artifact => artifact.Type == ModuleArtifactType.Action)) {
         var moduleTypes = GetModuleTypes(setupInfo);
         var controllers = moduleTypes.SelectMany(type => type.Assembly.GetTypes())
                 .Where(type => !type.IsAbstract && typeof(Controller).IsAssignableFrom(type))
                 .Select(type => type.CreateInstance())
                 .Cast<Controller>();
         foreach (var controller in controllers) {
             var controllerArtifact = objectSpace.GetModuleArtifact(controller.GetType());
             foreach (var action in controller.Actions) {
                 var name = action.Id;
                 var actionArtifact = objectSpace.GetObject<ModuleArtifact>(artifact => artifact.Name == name && artifact.Type == ModuleArtifactType.Action);
                 actionArtifact.Name = name;
                 actionArtifact.Type = ModuleArtifactType.Action;
                 actionArtifact.Text = action.ToolTip;
                 actionArtifact.ModuleChilds.AddRange(controllerArtifact.ModuleChilds);
                 actionArtifact.Artifacts.Add(controllerArtifact);
                 controllerArtifact.Artifacts.Add(actionArtifact);
             }
         }
     }
 }
Ejemplo n.º 6
0
 private void CreateObjects(IObjectSpace objectSpace, RuntimeSetupInfo setupInfo) {
     CreateActionArtifacsts(objectSpace,setupInfo);
 }
Ejemplo n.º 7
0
 private static IEnumerable<Type> GetModuleTypes(RuntimeSetupInfo setupInfo){
     var fullPath = setupInfo.XpandRootPath + @"\Xpand.DLL";
     //            var files = Directory.GetFiles(fullPath, "Xpand.ExpressApp*.dll", SearchOption.TopDirectoryOnly).Where(s => s.Contains("ModelDiff"));
     var files = Directory.GetFiles(fullPath, "Xpand.ExpressApp*.dll", SearchOption.TopDirectoryOnly);
     return files.Select(Assembly.LoadFrom).Select(assembly =>assembly.GetTypes().FirstOrDefault(type => !type.IsAbstract && typeof (XpandModuleBase).IsAssignableFrom(type))).Where(moduleType => moduleType != null);
 }
Ejemplo n.º 8
0
        public bool Run(RuntimeSetupInfo setupInfo) {
            var typesInfo = new TypesInfo();
            typesInfo.AddEntityStore(new NonPersistentEntityStore(typesInfo));
            var reflectionDictionary = new ReflectionDictionary();reflectionDictionary.CollectClassInfos(typeof(ModuleArtifact).Assembly);
            var xpoTypeInfoSource = new XpoTypeInfoSource(typesInfo,reflectionDictionary);
            typesInfo.AddEntityStore(xpoTypeInfoSource);
            typesInfo.LoadTypes(typeof(ModuleArtifact).Assembly);
            var exportedTypesFromAssembly = ModuleHelper.CollectExportedTypesFromAssembly(typeof(ModuleArtifact).Assembly,ExportedTypeHelpers.IsExportedType);
            foreach (var type in exportedTypesFromAssembly){
                xpoTypeInfoSource.RegisterEntity(type);
            }

            var objectSpace = new XPObjectSpace(typesInfo, xpoTypeInfoSource, () => new UnitOfWork(reflectionDictionary){ ConnectionString = setupInfo.ConnectionString });
            if (!objectSpace.Contains<ModuleChild>()){
                var moduleTypes = GetModuleTypes(setupInfo);
                var childModules = objectSpace.GetModuleChilds(moduleTypes);
                foreach (var childModule in childModules){
                    childModule.Value.CreateArtifacts(childModule.Key);
                    childModule.Value.CreateExtenderInterfaces(childModule.Key);
                }
                UpdateMapViewModule(childModules, objectSpace);
            }
            CreateObjects(objectSpace, setupInfo);
            objectSpace.CommitChanges();
            return true;
        }