예제 #1
0
        private void RefreshForm()
        {
            if (!entityReference.IsEmpty)
            {
                entityReference.Context = RegistryContext;
                Entity entity = entityReference.Value;

                Image.ImageUrl = String.Format("~/Icons/Small/{0}.gif", entity.EntityType);
                Image.Visible  = true;

                if (expression == null)
                {
                    HyperLink.Text = entity.Name;
                }
                else
                {
                    HyperLink.Text = ExpressionProperty.ResolveExpression(EntityReference.Value, expression);
                }

                HyperLink.NavigateUrl = entity.GetDetailsUrl();
            }
            else
            {
                Image.Visible         = false;
                HyperLink.Text        = Resources.Labels.NotApplicable;
                HyperLink.NavigateUrl = string.Empty;
            }
        }
        protected void UpdateResolvedNames()
        {
            if (!Item.IsExisting)
            {
                Item.SliceReference.Guid           = new Guid(Slice.SelectedValue);
                Item.DatabaseVersionReference.Guid = new Guid(DatabaseVersion.SelectedValue);
                Item.ServerInstanceReference.Guid  = new Guid(ServerInstance.SelectedValue);

                try
                {
                    Item.Name         = ExpressionProperty.ResolveExpression(Item, Item.DatabaseDefinition.DatabaseInstanceNamePattern);
                    Item.DatabaseName = ExpressionProperty.ResolveExpression(Item, Item.DatabaseDefinition.DatabaseNamePattern);
                }
                catch (ArgumentNullException)
                {
                    Item.Name         = String.Empty;
                    Item.DatabaseName = String.Empty;
                }
            }
        }
        public DatabaseInstance GenerateDatabaseInstance(ServerInstance serverInstance, List <DiskVolume> dataDiskVolumes, List <DiskVolume> logDiskVolumes, Slice slice, DatabaseVersion databaseVersion, string namePattern, string databaseNamePattern, double sizeFactor, bool generateFileGroups)
        {
            // --- Create the new database instance and set name
            DatabaseInstance ndi = new DatabaseInstance(databaseDefinition);

            ndi.ServerInstanceReference.Guid  = serverInstance.Guid;
            ndi.SliceReference.Guid           = slice.Guid;
            ndi.DatabaseVersionReference.Guid = databaseVersion.Guid;

            ndi.Name         = ExpressionProperty.ResolveExpression(ndi, namePattern);
            ndi.DatabaseName = ExpressionProperty.ResolveExpression(ndi, databaseNamePattern);

            ndi.Save();

            if (generateFileGroups)
            {
                ndi.ServerInstance.Machine.LoadDiskVolumes(false);

                databaseDefinition.LoadFileGroups(false);

                slice.LoadPartitions(false);
                List <Partition> partitions = new List <Partition>(slice.Partitions.Values.OrderBy(i => i.Number));
                List <FileGroup> filegroups = new List <FileGroup>(databaseDefinition.FileGroups.Values.OrderBy(i => i.Number));

                for (int fi = 0; fi < filegroups.Count; fi++)
                {
                    // --- Create data and "log" file groups ---
                    if (filegroups[fi].LayoutType == FileGroupLayoutType.Monolithic ||
                        filegroups[fi].FileGroupType == FileGroupType.Log)
                    {
                        DatabaseInstanceFileGroup nfg = new DatabaseInstanceFileGroup(ndi);
                        nfg.FileGroupType           = filegroups[fi].FileGroupType;
                        nfg.FileGroupName           = nfg.Name = filegroups[fi].FileGroupName;
                        nfg.FileGroupReference.Guid = filegroups[fi].Guid;
                        nfg.PartitionReference.Guid = Guid.Empty;
                        nfg.AllocatedSpace          = (long)(filegroups[fi].AllocatedSpace * sizeFactor);
                        nfg.Save();

                        nfg.GenerateInstanceFiles(dataDiskVolumes, sizeFactor);
                    }
                    else if (filegroups[fi].LayoutType == FileGroupLayoutType.Sliced)
                    {
                        for (int pi = 0; pi < partitions.Count; pi++)
                        {
                            DatabaseInstanceFileGroup nfg = new DatabaseInstanceFileGroup(ndi);
                            nfg.FileGroupType           = filegroups[fi].FileGroupType;
                            nfg.FileGroupName           = nfg.Name = string.Format("{0}_{1}", filegroups[fi].FileGroupName, pi);
                            nfg.FileGroupReference.Guid = filegroups[fi].Guid;
                            nfg.PartitionReference.Guid = partitions[pi].Guid;
                            nfg.AllocatedSpace          = (long)(filegroups[fi].AllocatedSpace * sizeFactor);
                            nfg.Save();

                            nfg.GenerateInstanceFiles(dataDiskVolumes, sizeFactor);
                        }
                    }
                    else
                    {
                        throw new NotImplementedException();
                    }
                }
            }

            return(ndi);
        }
예제 #4
0
 public static void ReplaceEmailTokens(ref string template, Entity entity)
 {
     // TODO: this fails if there are still tokens in the template that refer
     // to invalid properties of the entity
     template = ExpressionProperty.ResolveExpression(entity, template);
 }