Пример #1
0
        public RelationConfig20(String name, ILinkConfig link)
        {
            ParamChecker.AssertParamNotNullOrEmpty(Name, "Name");
            ParamChecker.AssertParamNotNull(Link, "Link");

            this.Name = name;
            this.Link = link;
        }
Пример #2
0
        private void Save(string configName, ILinkConfig linkConfig)
        {
            var blob     = container.GetBlockBlobReference(configName + ".songs");
            var tempFile = Path.GetTempFileName();

            using (var stream = File.OpenWrite(tempFile))
                using (var writer = new StreamWriter(stream))
                    using (var csvWriter = new CsvWriter(writer))
                    {
                        csvWriter.Configuration.Delimiter = ";";
                        csvWriter.WriteRecords(linkConfig.Links);
                    }
            blob.UploadFromFileAsync(tempFile).Wait();
            File.Delete(tempFile);
        }
Пример #3
0
        protected IRelationConfig ReadRelationConfig(XElement relationElement, IMap <String, ILinkConfig> nameToLinkMap)
        {
            String      relationName = XmlConfigUtil.GetRequiredAttribute(relationElement, XmlConstants.NAME);
            String      linkName     = XmlConfigUtil.GetAttribute(relationElement, XmlConstants.LINK);
            ILinkConfig linkConfig   = null;

            if (linkName.Length > 0)
            {
                linkConfig = nameToLinkMap.Get(linkName);
            }
            if (linkConfig == null)
            {
                if (Log.InfoEnabled)
                {
                    if (linkName.Length > 0)
                    {
                        Log.Info("No LinkConfig found for name '" + linkName + "'. Creating one with default values.");
                    }
                    else
                    {
                        Log.Info("Unconfigured Link found for property '" + relationName + "'. Trying to resolve this later.");
                    }
                }
                linkConfig = new LinkConfig(linkName);
            }
            try
            {
                RelationConfig20 relationConfig = new RelationConfig20(relationName, linkConfig);

                String entityIdentifierName = XmlConfigUtil.GetAttribute(relationElement, XmlConstants.THIS);
                if (entityIdentifierName.Length > 0)
                {
                    EntityIdentifier entityIdentifier = (EntityIdentifier)Enum.Parse(typeof(EntityIdentifier), entityIdentifierName, true);
                    relationConfig.EntityIdentifier = entityIdentifier;
                }

                return(relationConfig);
            }
            catch (Exception e)
            {
                throw new Exception("Error occured while processing relation '" + relationName + "'", e);
            }
        }
Пример #4
0
 internal abstract void SaveInternal(string configName, ILinkConfig config);
Пример #5
0
 internal override void SaveInternal(string configName, ILinkConfig link)
 {
     // do nothing
 }
Пример #6
0
 internal override void SaveInternal(string configName, ILinkConfig linkConfig)
 {
     Save(configName, linkConfig);
 }
Пример #7
0
 public ConfigModel(ILinkConfig linkConfig)
 {
     Config = linkConfig;
     Links  = Config.Links.Select(x => new LinkModel(Name, x)).ToList();
 }
Пример #8
0
        public void LoadFromDocument(XDocument doc, ISet <IEntityConfig> localEntities, ISet <IEntityConfig> externalEntities)
        {
            ValidateDocument(doc);

            HashMap <String, ILinkConfig> nameToLinkMap = new HashMap <String, ILinkConfig>();

            List <ILinkConfig> links         = new List <ILinkConfig>();
            IList <XElement>   linkElements  = GetDescendants(doc, XmlConstants.LINK);
            IList <XElement>   eLinkElements = GetDescendants(doc, XmlConstants.EXTERNAL_LINK);
            IList <XElement>   iLinkElements = GetDescendants(doc, XmlConstants.INDEPENDENT_LINK);

            for (int i = linkElements.Count; i-- > 0;)
            {
                XElement    linkTag = linkElements[i];
                ILinkConfig link    = ReadLinkConfig(linkTag);
                links.Add(link);
            }
            for (int i = eLinkElements.Count; i-- > 0;)
            {
                XElement    linkTag = eLinkElements[i];
                ILinkConfig link    = ReadExternalLinkConfig(linkTag);
                links.Add(link);
            }
            for (int i = iLinkElements.Count; i-- > 0;)
            {
                XElement    linkTag = iLinkElements[i];
                ILinkConfig link    = ReadIndependentLinkConfig(linkTag);
                links.Add(link);
            }
            for (int i = links.Count; i-- > 0;)
            {
                ILinkConfig link = links[i];

                if (link.Source != null)
                {
                    if (nameToLinkMap.Put(link.Source, link) != null)
                    {
                        throw new Exception("Duplicate orm configuration for link '" + link.Source + "'");
                    }
                }
                if (link.Alias != null)
                {
                    if (nameToLinkMap.Put(link.Alias, link) != null)
                    {
                        throw new Exception("Duplicate orm configuration for link '" + link.Alias + "'");
                    }
                }
            }

            List <XElement>  entityElements         = GetDescendants(doc, XmlConstants.ENTITY);
            IList <XElement> externalEntityElements = GetDescendants(doc, XmlConstants.EXTERNAL_ENTITY);

            entityElements.AddRange(externalEntityElements);
            for (int i = entityElements.Count; i-- > 0;)
            {
                XElement     entityTag    = entityElements[i];
                EntityConfig entityConfig = ReadEntityConfig(entityTag, nameToLinkMap);
                if (localEntities.Contains(entityConfig) || externalEntities.Contains(entityConfig))
                {
                    throw new Exception("Duplicate orm configuration for entity '" + entityConfig.EntityType.FullName + "'");
                }
                if (entityConfig.Local)
                {
                    localEntities.Add(entityConfig);
                }
                else
                {
                    externalEntities.Add(entityConfig);
                }
            }
        }