Пример #1
0
        private void InitInfrastructureServices()
        {
            try
            {
                // Cargar todos los modelos de datos y verificar ensamblados
                DataModelDataAccess          dataModelDataAccess = new DataModelDataAccess();
                Collection <DataModelEntity> result = dataModelDataAccess.LoadWhere(DataModelEntity.DBIdStore, "0", false, OperatorType.Equal);
                dataModelDataAccess = new DataModelDataAccess();
                Collection <DataModelEntity> dataModels = dataModelDataAccess.LoadAll(true);

                if (result.Count == 0)
                {
                    ConsoleWriter.SetText("Creating mall data model");
                    DataModelEntity dataModel = new DataModelEntity();

                    MallEntity mall = new MallEntity();
                    mall.MallName = "Mall";

                    (new MallDataAccess()).Save(mall);
                    dataModel.Mall = mall;

                    dataModelDataAccess.Save(dataModel);
                }

                foreach (DataModelEntity dataModel in dataModels)
                {
                    string assemblyFileName = dataModel.ServiceAssemblyFileName;
                    if (assemblyFileName != null)
                    {
                        if (File.Exists(Path.Combine(ServiceBuilder.AssembliesFolder, assemblyFileName)))
                        {
                            Type[]  servicesTypes  = ServiceBuilder.GetInfrastructureServiceTypes(assemblyFileName);
                            Binding serviceBinding = new BasicHttpBinding();
                            if (PublishInfrastructureService(servicesTypes[0], servicesTypes[1], serviceBinding))
                            {
                                Debug.WriteLine("SUCCESS : infrastructure service published.");
                            }
                            else
                            {
                                Debug.WriteLine("FAILURE : trying to publish infrastructure service.");
                            }
                        }
                        else
                        {
                            ServiceBuilder builder = new ServiceBuilder();
                            dataModel.Deployed = false;
                            builder.BuildAndImplementInfrastructureService(dataModel, false, serverSession);
                        }
                    }
                }
            }
            catch (DataException dataError)
            {
                Debug.WriteLine("ERROR : Data exception running infrastructure services. MESSAGE : " + dataError.Message);
            }
            catch (IOException ioError)
            {
                Debug.WriteLine("ERROR : IO error running infrastructure services. MESSAGE : " + ioError.Message);
            }
        }
Пример #2
0
 /// <summary>
 /// Limpiar la carpeta de ensamblados cuando el servidor de configuración cambie
 /// a otra base de datos
 /// </summary>
 private static void CheckForClean()
 {
     try
     {
         ExeConfigurationFileMap configFile = new ExeConfigurationFileMap();
         configFile.ExeConfigFilename = "wpfcore.config";
         Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configFile, ConfigurationUserLevel.None);
         if (config.AppSettings.Settings[ServerHost.CleanAssemblyFolderKey] != null)
         {
             // Borrar todos los archivos en la carpeta de ensamblados dinámicos
             string[] filesToDelete = Directory.GetFiles(Path.GetFullPath(ServiceBuilder.AssembliesFolder), "*.*", SearchOption.TopDirectoryOnly);
             foreach (string fileToDelete in filesToDelete)
             {
                 if (Path.GetFileName(fileToDelete).StartsWith("CustomService", StringComparison.Ordinal) || Path.GetFileName(fileToDelete).StartsWith("Store", StringComparison.Ordinal))
                 {
                     try
                     {
                         Debug.WriteLine("Deleting file: {0}", fileToDelete);
                         File.Delete(fileToDelete);
                     }
                     catch (UnauthorizedAccessException unauthorizedError)
                     {
                         Debug.WriteLine("Error cleaning assemblies: {0}", unauthorizedError.Message);
                     }
                     catch (IOException ioError)
                     {
                         Debug.WriteLine("Error cleaning assemblies: {0}", ioError.Message);
                     }
                 }
             }
             config.AppSettings.Settings.Remove(CleanAssemblyFolderKey);
             config.Save();
             // Verificar si la base de datos actual tiene servicios que compilar
             DataModelDataAccess          dataModelDataAccess = new DataModelDataAccess();
             Collection <DataModelEntity> dataModels          = dataModelDataAccess.LoadWhere(DataModelEntity.DBDeployed, true, false, OperatorType.Equal);
             if (dataModels.Count > 0)
             {
                 System.Windows.MessageBox.Show(Resources.RecompilationOfServices, UtnEmall.Server.WpfCore.Resources.InformationTitle, System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Information);
             }
         }
     }
     catch (UtnEmallDataAccessException dbError)
     {
         Debug.WriteLine("Error cleaning assemblies: {0}", dbError.Message);
     }
     catch (UnauthorizedAccessException unauthorizedError)
     {
         Debug.WriteLine("Error cleaning assemblies: {0}", unauthorizedError.Message);
     }
     catch (DirectoryNotFoundException directoryNotFoundError)
     {
         Debug.WriteLine("Error cleaning assemblies: {0}", directoryNotFoundError.Message);
     }
     catch (IOException ioError)
     {
         Debug.WriteLine("Error cleaning assemblies: {0}", ioError.Message);
     }
 }
        /// <summary>
        /// Actualiza la entidad DataModelEntity en la base de datos
        /// </summary>
        /// <param name="serviceDataModel">Modelo de datos a guardar.</param>
        /// <param name="sessionIdentifier">Identificador de sesión.</param>
        /// <returns>true si tiene éxito.</returns>
        static private bool SaveDataModel(DataModelEntity serviceDataModel, string sessionIdentifier)
        {
            DataModelDataAccess dataModelLogic = new DataModelDataAccess();

            serviceDataModel.ServiceAssemblyFileName = Path.GetFileName(serviceDataModel.ServiceAssemblyFileName);
            serviceDataModel.Deployed = true;
            try
            {
                dataModelLogic.Save(serviceDataModel);
                return(true);
            }
            catch (UtnEmallDataAccessException error)
            {
                Debug.WriteLine("FAILURE : While updating data model entity. ERROR : " + error.Message);
                return(false);
            }
        }
Пример #4
0
 public DataModel()
 {
     datamodelDataAccess = new DataModelDataAccess();
 }