public static CodeTypeReference GetEntityClassTypeReference(WXMLCodeDomGeneratorSettings settings,
                                                                    EntityDefinition entityDesc, bool appendNamespace)
        {
            string className = new WXMLCodeDomGeneratorNameHelper(settings).GetEntityClassName(entityDesc, appendNamespace);

            return(new CodeTypeReference(className));
        }
        public static CodeExpression GetFieldNameReferenceExpression(WXMLCodeDomGeneratorSettings settings, PropertyDefinition propertyDesc, bool addNamespace)
        {
            string className = new WXMLCodeDomGeneratorNameHelper(settings)
                               .GetEntityClassName(propertyDesc.Entity, addNamespace) + ".Properties";

            return(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(className),
                                                    propertyDesc.PropertyAlias));
        }
        public string GetEntitySchemaDefFileName(EntityDefinition entity)
        {
            WXMLCodeDomGeneratorSettings settings = GetSettings();
            string baseName =
                settings.FileNamePrefix +
                GetEntitySchemaDefClassName(entity) +
                settings.FileNameSuffix;

            return(baseName);
        }
        public string GetPrivateMemberName(string name)
        {
            WXMLCodeDomGeneratorSettings settings = GetSettings();

            if (string.IsNullOrEmpty(name))
            {
                return(string.Empty);
            }
            return(settings.PrivateMembersPrefix + name.Substring(0, 1).ToLower() + name.Substring(1));
        }
        /// <summary>
        /// Gets the name of the schema definition class for entity.
        /// </summary>
        /// <param name="entity">The entity.</param>
        /// <returns></returns>
        public string GetEntitySchemaDefClassName(EntityDefinition entity)
        {
            WXMLCodeDomGeneratorSettings settings = GetSettings();

            return
                // name of the entity class name
                (GetEntityClassName(entity, false) +
                 // entity
                 settings.EntitySchemaDefClassNameSuffix +
                 (entity.Model.AddVersionToSchemaName ? entity.Model.SchemaVersion : String.Empty));
        }
 public static CodeExpression GetEntityNameReferenceExpression(WXMLCodeDomGeneratorSettings settings, EntityDefinition entityDescription, bool addNamespace)
 {
     if (entityDescription.BaseEntity != null && entityDescription.BaseEntity.FamilyName == entityDescription.FamilyName)
     {
         return(GetEntityNameReferenceExpression(settings, entityDescription.BaseEntity, true));
     }
     else
     {
         string className = new WXMLCodeDomGeneratorNameHelper(settings).GetEntityClassName(entityDescription, addNamespace) + ".Descriptor";
         return(new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(className), "EntityName"));
     }
 }
        public IEnumerable <System.CodeDom.CodeCompileUnit> CreateCompileUnits(WXMLModel model)
        {
            WXMLCodeDomGeneratorSettings settings = new WXML.CodeDom.WXMLCodeDomGeneratorSettings();

            CodeCompileUnit modificationTracketUnit = GenerateModificationTracker(model, settings);

            LinqCodeDomGenerator gen = new LinqCodeDomGenerator(model, settings);

            LinqToCodedom.CodeDomGenerator.Language lang = LinqToCodedom.CodeDomGenerator.Language.CSharp;

            return(new CodeCompileUnit[] { gen.GetCompileUnit(lang), modificationTracketUnit });
        }
        public string GetEntityFileName(EntityDefinition entity)
        {
            WXMLCodeDomGeneratorSettings settings = GetSettings();
            string baseName =
                // prefix for file name
                settings.FileNamePrefix +
                // class name of the entity
                GetEntityClassName(entity, false) +
                // suffix for file name
                settings.FileNameSuffix;

            return(baseName);
        }
        ///// <summary>
        ///// Gets class name of the entity using settings
        ///// </summary>
        ///// <param name="entity">The entity.</param>
        ///// <returns></returns>
        //public string GetEntityClassName(EntityDefinition entity)
        //{
        //    return GetEntityClassName(entity, false);
        //}

        /// <summary>
        /// Gets class name of the entity using settings
        /// </summary>
        /// <param name="entity">The entity.</param>
        /// <param name="qualified">if set to <c>true</c> return qualified name.</param>
        /// <returns></returns>
        public string GetEntityClassName(EntityDefinition entity, bool qualified)
        {
            WXMLCodeDomGeneratorSettings settings = GetSettings();
            string en = entity.Name;

            if (entity.Model != null && entity.Model.OwnEntities.Any(e => e.Name == en && e.Identifier != entity.Identifier))
            {
                string sel = entity.GetSourceFragments().First().Selector;
                if (string.IsNullOrEmpty(sel))
                {
                    int idx = entity.Model.OwnEntities.Count(e => e.Name == en && e.Identifier != entity.Identifier);
                    en = en + idx;
                }
                else
                {
                    sel = sel.Trim('[', ']');
                    en  = sel + en;
                }
            }

            string className =
                // prefix from settings for class name
                settings.ClassNamePrefix +
                // entity's class name
                en +
                // suffix from settings for class name
                settings.ClassNameSuffix;

            string ns = string.Empty;

            if (qualified && !string.IsNullOrEmpty(entity.Namespace))
            {
                ns = entity.Namespace + ".";
            }

            return(ns + className);
        }
 public static CodeExpression GetPropertyReferenceExpression(WXMLCodeDomGeneratorSettings settings, ScalarPropertyDefinition propertyDesc, bool addNamespace)
 {
     return(new CodePropertyReferenceExpression(GetEntityClassReferenceExpression(settings, propertyDesc.Entity, addNamespace), propertyDesc.Name));
 }
 public static CodeTypeOfExpression GetEntityClassTypeReferenceExpression(WXMLCodeDomGeneratorSettings settings,
                                                                          EntityDefinition entityDesc, bool appendNamespace)
 {
     return(new CodeTypeOfExpression(GetEntityClassTypeReference(settings, entityDesc, appendNamespace)));
 }
 public WXMLCodeDomGenerator(WXMLCodeDomGeneratorSettings settings)
 {
     _generatorSettings = settings;
 }
 public WXMLCodeDomGeneratorNameHelper(WXMLCodeDomGeneratorSettings settings)
 {
     _settings = settings;
 }