Exemple #1
0
        protected override void Load(Dsl.CallData callData, SkillInstance instance)
        {
            int num = callData.GetParamNum();

            if (num > 0)
            {
                m_Duration = long.Parse(callData.GetParamId(0));
            }
            if (num > 1)
            {
                m_Velocity = float.Parse(callData.GetParamId(1));
            }
            if (num > 2)
            {
                m_StopAtTarget = int.Parse(callData.GetParamId(2));
            }
            if (num > 3)
            {
                m_Offset = DslUtility.CalcVector3(callData.GetParam(3) as Dsl.CallData);
            }
            if (num > 4)
            {
                StartTime = long.Parse(callData.GetParamId(4));
            }
            if (num > 5)
            {
                m_IsForRoundMove = callData.GetParamId(5) == "true";
            }
        }
        public void GenerateCode(IConceptInfo conceptInfo, ICodeBuilder codeBuilder)
        {
            ReferencePropertyInfo info = (ReferencePropertyInfo)conceptInfo;

            var referenceGuid = new PropertyInfo {
                DataStructure = info.DataStructure, Name = info.Name + "ID"
            };

            PropertyHelper.GenerateCodeForType(referenceGuid, codeBuilder, "Guid?");

            if (DslUtility.IsQueryable(info.DataStructure) && DslUtility.IsQueryable(info.Referenced))
            {
                DataStructureQueryableCodeGenerator.AddNavigationPropertyWithBackingField(codeBuilder, info.DataStructure,
                                                                                          csPropertyName: info.Name,
                                                                                          propertyType: "Common.Queryable." + info.Referenced.Module.Name + "_" + info.Referenced.Name,
                                                                                          additionalSetterCode: info.Name + "ID = value != null ? (Guid?)value.ID : null;");
            }

            if (info.DataStructure is IOrmDataStructure && info.Referenced is IOrmDataStructure)
            {
                codeBuilder.InsertCode(
                    string.Format("modelBuilder.Entity<Common.Queryable.{0}_{1}>().HasOptional(t => t.{2}).WithMany().HasForeignKey(t => t.{2}ID);\r\n            ",
                                  info.DataStructure.Module.Name, info.DataStructure.Name, info.Name),
                    DomInitializationCodeGenerator.EntityFrameworkOnModelCreatingTag);
            }
            else if (info.DataStructure is IOrmDataStructure)
            {
                codeBuilder.InsertCode(
                    string.Format("modelBuilder.Entity<Common.Queryable.{0}_{1}>().Ignore(t => t.{2});\r\n            ",
                                  info.DataStructure.Module.Name, info.DataStructure.Name, info.Name),
                    DomInitializationCodeGenerator.EntityFrameworkOnModelCreatingTag);
            }
        }
        private static string GetUniqueSuffixWithinBase(ComputeForNewBaseItemsInfo info)
        {
            var baseModule = info.Dependency_Extends.Base.Module;

            return(DslUtility.NameOptionalModule(info.EntityComputedFrom.Source, baseModule)
                   + DslUtility.NameOptionalModule(info.EntityComputedFrom.Target, baseModule));
        }
        public void GenerateCode(IConceptInfo conceptInfo, ICodeBuilder codeBuilder)
        {
            var info = (UniqueReferenceInfo)conceptInfo;

            if (DslUtility.IsQueryable(info.Extension) && DslUtility.IsQueryable(info.Base))
            {
                DataStructureQueryableCodeGenerator.AddNavigationPropertyWithBackingField(codeBuilder, info.Extension,
                                                                                          csPropertyName: "Base",
                                                                                          propertyType: "Common.Queryable." + info.Base.Module.Name + "_" + info.Base.Name,
                                                                                          additionalSetterCode: "ID = value != null ? value.ID : Guid.Empty;");
                DataStructureQueryableCodeGenerator.AddNavigationPropertyWithBackingField(codeBuilder, info.Base,
                                                                                          csPropertyName: info.ExtensionPropertyName(),
                                                                                          propertyType: "Common.Queryable." + info.Extension.Module.Name + "_" + info.Extension.Name,
                                                                                          additionalSetterCode: null);
            }

            if (UniqueReferenceDatabaseDefinition.IsSupported(info) &&
                info.Extension is IOrmDataStructure &&
                info.Base is IWritableOrmDataStructure)
            {
                var    ormDataStructure          = (IOrmDataStructure)info.Extension;
                string systemMessage             = $"DataStructure:{info.Extension.FullName},Property:ID,Referenced:{info.Base.FullName}";
                string onDeleteInterpretSqlError = @"if (interpretedException is Rhetos.UserException && Rhetos.Utilities.MsSqlUtility.IsReferenceErrorOnDelete(interpretedException, "
                                                   + CsUtility.QuotedString(ormDataStructure.GetOrmSchema() + "." + ormDataStructure.GetOrmDatabaseObject()) + @", "
                                                   + CsUtility.QuotedString("ID") + @", "
                                                   + CsUtility.QuotedString(UniqueReferenceDatabaseDefinition.GetConstraintName(info)) + @"))
                        ((Rhetos.UserException)interpretedException).SystemMessage = " + CsUtility.QuotedString(systemMessage) + @";
                    ";
                codeBuilder.InsertCode(onDeleteInterpretSqlError, WritableOrmDataStructureCodeGenerator.OnDatabaseErrorTag, info.Base);
            }
        }
        public void GenerateCode(IConceptInfo conceptInfo, ICodeBuilder codeBuilder)
        {
            var    info         = (LinkedItemsInfo)conceptInfo;
            string propertyType = string.Format("IList<Common.Queryable.{0}_{1}>", info.ReferenceProperty.DataStructure.Module.Name, info.ReferenceProperty.DataStructure.Name);

            if (DslUtility.IsQueryable(info.ReferenceProperty.DataStructure) && DslUtility.IsQueryable(info.DataStructure))
            {
                DataStructureQueryableCodeGenerator.AddNavigationPropertyWithBackingField(codeBuilder, info.DataStructure,
                                                                                          csPropertyName: info.Name,
                                                                                          propertyType: propertyType,
                                                                                          additionalSetterCode: null);
            }

            if (info.ReferenceProperty.DataStructure is IOrmDataStructure && info.DataStructure is IOrmDataStructure)
            {
                codeBuilder.InsertCode(
                    string.Format("modelBuilder.Entity<Common.Queryable.{0}_{1}>().HasOptional(t => t.{2}).WithMany(t => t.{3}).HasForeignKey(t => t.{2}ID);\r\n            ",
                                  info.ReferenceProperty.DataStructure.Module.Name, info.ReferenceProperty.DataStructure.Name, info.ReferenceProperty.Name, info.Name),
                    DomInitializationCodeGenerator.EntityFrameworkOnModelCreatingTag);
            }
            else if (info.DataStructure is IOrmDataStructure)
            {
                codeBuilder.InsertCode(
                    string.Format("modelBuilder.Entity<Common.Queryable.{0}_{1}>().Ignore(t => t.{2});\r\n            ",
                                  info.DataStructure.Module.Name, info.DataStructure.Name, info.Name),
                    DomInitializationCodeGenerator.EntityFrameworkOnModelCreatingTag);
            }
        }
Exemple #6
0
        protected override void Load(Dsl.CallData callData, SkillInstance instance)
        {
            int num = callData.GetParamNum();

            if (num > 0)
            {
                m_Duration = long.Parse(callData.GetParamId(0));
            }
            else
            {
                m_Duration = 0;
            }
            if (num > 1)
            {
                m_Height = float.Parse(callData.GetParamId(1));
            }
            if (num > 2)
            {
                m_Velocity = float.Parse(callData.GetParamId(2));
            }
            if (num > 3)
            {
                m_StopAtTarget = int.Parse(callData.GetParamId(3));
            }
            if (num > 4)
            {
                m_Offset = DslUtility.CalcVector3(callData.GetParam(4) as Dsl.CallData);
            }
            if (num > 5)
            {
                StartTime = long.Parse(callData.GetParamId(5));
            }

            CalcYVelocityAndG();
        }
        protected override void Load(Dsl.CallData callData, SkillInstance instance)
        {
            int num = callData.GetParamNum();

            if (num > 0)
            {
                m_Duration = long.Parse(callData.GetParamId(0));
            }
            if (num > 1)
            {
                m_Velocity = float.Parse(callData.GetParamId(1));
            }
            if (num > 2)
            {
                m_StopAtTarget = int.Parse(callData.GetParamId(2));
            }
            if (num > 3)
            {
                m_Offset = DslUtility.CalcVector3(callData.GetParam(3) as Dsl.CallData);
            }
            if (num > 4)
            {
                StartTime = long.Parse(callData.GetParamId(4));
            }
            if (num > 5)
            {
                string         moveType = callData.GetParamId(5);
                IList <string> list     = Converter.ConvertStringList(moveType);
                m_IsFreeMove           = list.IndexOf("freemove") >= 0;
                m_RelativeToSelf       = list.IndexOf("relativetoself") >= 0;
                m_RandRelativeToSelf   = list.IndexOf("randrelativetoself") >= 0;
                m_RandRelativeToTarget = list.IndexOf("randrelativetotarget") >= 0;
            }
        }
        protected override void Load(Dsl.CallData callData, SkillInstance instance)
        {
            int num = callData.GetParamNum();

            if (num > 0)
            {
                m_Duration = long.Parse(callData.GetParamId(0));
            }
            else
            {
                m_Duration = 1000;
            }
            if (num > 1)
            {
                m_G = float.Parse(callData.GetParamId(1));
            }
            if (num > 2)
            {
                var param = callData.GetParam(2);
                m_ObjPath = param.GetId();
                var cd = param as Dsl.CallData;
                if (null != cd && m_ObjPath == "vector3")
                {
                    m_Offset = DslUtility.CalcVector3(cd);
                }
            }
            if (num > 3)
            {
                StartTime = long.Parse(callData.GetParamId(3));
            }
        }
Exemple #9
0
 public static string RemoveColumn(PropertyInfo property, string columnName)
 {
     return(Sql.Format("PropertyDatabaseDefinition_RemoveColumn",
                       SqlUtility.Identifier(property.DataStructure.Module.Name),
                       SqlUtility.Identifier(property.DataStructure.Name),
                       DslUtility.ValidateIdentifier(columnName, property, "Invalid column name."),
                       BeforeRemoveTag.Evaluate(property)).Trim());
 }
 protected override void Load(Dsl.CallData callData, SkillInstance instance)
 {
     if (callData.GetParamNum() >= 3)
     {
         StartTime     = long.Parse(callData.GetParamId(0));
         m_RemainTime  = long.Parse(callData.GetParamId(1));
         m_RotateSpeed = DslUtility.CalcVector3(callData.GetParam(2) as Dsl.CallData);
     }
 }
Exemple #11
0
 private void LoadBoneConfig(Dsl.FunctionData stCall)
 {
     if (stCall.GetParamNum() >= 2)
     {
         m_IsBoneSound = true;
         m_Position    = DslUtility.CalcVector3(stCall.GetParam(0) as Dsl.FunctionData);;
         m_IsAttach    = bool.Parse(stCall.GetParamId(1));
     }
 }
Exemple #12
0
        public void GenerateCode(IConceptInfo conceptInfo, ICodeBuilder codeBuilder)
        {
            ReferencePropertyInfo info = (ReferencePropertyInfo)conceptInfo;

            var referenceGuid = new PropertyInfo {
                DataStructure = info.DataStructure, Name = info.Name + "ID"
            };

            PropertyHelper.GenerateCodeForType(referenceGuid, codeBuilder, "Guid?");
            PropertyHelper.GenerateStorageMapping(referenceGuid, codeBuilder, "System.Data.SqlDbType.UniqueIdentifier");

            if (DslUtility.IsQueryable(info.DataStructure) && DslUtility.IsQueryable(info.Referenced))
            {
                DataStructureQueryableCodeGenerator.AddNavigationPropertyWithBackingField(codeBuilder, info.DataStructure,
                                                                                          csPropertyName: info.Name,
                                                                                          propertyType: "Common.Queryable." + info.Referenced.Module.Name + "_" + info.Referenced.Name,
                                                                                          additionalSetterCode: info.Name + "ID = value != null ? (Guid?)value.ID : null;");
            }

            if (ReferencePropertyDbConstraintInfo.IsSupported(info) &&
                info.DataStructure is IOrmDataStructure &&
                info.Referenced is IOrmDataStructure)
            {
                var    ormDataStructure           = (IOrmDataStructure)info.DataStructure;
                var    referencedOrmDataStructure = (IOrmDataStructure)info.Referenced;
                string systemMessage = $"DataStructure:{info.DataStructure.FullName},Property:{info.Name}ID,Referenced:{info.Referenced.FullName}";

                if (info.DataStructure is IWritableOrmDataStructure)
                {
                    string onEnterInterpretSqlError = @"if (interpretedException is Rhetos.UserException && Rhetos.Utilities.MsSqlUtility.IsReferenceErrorOnInsertUpdate(interpretedException, "
                                                      + CsUtility.QuotedString(referencedOrmDataStructure.GetOrmSchema() + "." + referencedOrmDataStructure.GetOrmDatabaseObject()) + @", "
                                                      + CsUtility.QuotedString("ID") + @", "
                                                      + CsUtility.QuotedString(ReferencePropertyConstraintDatabaseDefinition.GetConstraintName(info)) + @"))
                        ((Rhetos.UserException)interpretedException).SystemMessage = " + CsUtility.QuotedString(systemMessage) + @";
                    ";
                    codeBuilder.InsertCode(onEnterInterpretSqlError, WritableOrmDataStructureCodeGenerator.OnDatabaseErrorTag, info.DataStructure);

                    if (info.Referenced == info.DataStructure)
                    {
                        codeBuilder.InsertCode($@"if (entity.{info.Name}ID != null && entity.{info.Name}ID != entity.ID) yield return entity.{info.Name}ID.Value;
            ", WritableOrmDataStructureCodeGenerator.PersistenceStorageMapperDependencyResolutionTag, info.DataStructure);
                    }
                }

                if (info.Referenced is IWritableOrmDataStructure)
                {
                    string onDeleteInterpretSqlError = @"if (interpretedException is Rhetos.UserException && Rhetos.Utilities.MsSqlUtility.IsReferenceErrorOnDelete(interpretedException, "
                                                       + CsUtility.QuotedString(ormDataStructure.GetOrmSchema() + "." + ormDataStructure.GetOrmDatabaseObject()) + @", "
                                                       + CsUtility.QuotedString(info.GetSimplePropertyName()) + @", "
                                                       + CsUtility.QuotedString(ReferencePropertyConstraintDatabaseDefinition.GetConstraintName(info)) + @"))
                        ((Rhetos.UserException)interpretedException).SystemMessage = " + CsUtility.QuotedString(systemMessage) + @";
                    ";
                    codeBuilder.InsertCode(onDeleteInterpretSqlError, WritableOrmDataStructureCodeGenerator.OnDatabaseErrorTag, info.Referenced);
                }
            }
        }
        public static void GenerateCodeForType(PropertyInfo info, ICodeBuilder codeBuilder, string propertyType)
        {
            codeBuilder.InsertCode(PropertySnippet(info, propertyType), DataStructureCodeGenerator.BodyTag, info.DataStructure);

            if (DslUtility.IsQueryable(info.DataStructure))
            {
                codeBuilder.InsertCode(
                    string.Format(",\r\n                {0} = item.{0}", info.Name),
                    RepositoryHelper.AssignSimplePropertyTag, info.DataStructure);
            }
        }
        public void GenerateCode(IConceptInfo conceptInfo, ICodeBuilder codeBuilder)
        {
            DataStructureInfo info = (DataStructureInfo)conceptInfo;

            if (DslUtility.IsQueryable(info))
            {
                codeBuilder.InsertCode(SnippetQueryableClass(info), DomInitializationCodeGenerator.CommonQueryableMemebersTag);
                codeBuilder.InsertCode("IDetachOverride", DataStructureQueryableCodeGenerator.InterfaceTag, info);
                codeBuilder.InsertCode("bool IDetachOverride.Detaching { get; set; }\r\n\r\n        ", DataStructureQueryableCodeGenerator.MembersTag, info);
            }
        }
        public void GenerateCode(IConceptInfo conceptInfo, ICodeBuilder codeBuilder)
        {
            var info = (UniqueReferenceInfo)conceptInfo;

            if (DslUtility.IsQueryable(info.Extension) && DslUtility.IsQueryable(info.Base))
            {
                DataStructureQueryableCodeGenerator.AddNavigationPropertyWithBackingField(codeBuilder, info.Extension,
                                                                                          csPropertyName: "Base",
                                                                                          propertyType: "Common.Queryable." + info.Base.Module.Name + "_" + info.Base.Name,
                                                                                          additionalSetterCode: "ID = value != null ? value.ID : Guid.Empty;");
                DataStructureQueryableCodeGenerator.AddNavigationPropertyWithBackingField(codeBuilder, info.Base,
                                                                                          csPropertyName: info.ExtensionPropertyName(),
                                                                                          propertyType: "Common.Queryable." + info.Extension.Module.Name + "_" + info.Extension.Name,
                                                                                          additionalSetterCode: null);
            }

            if (info.Extension is IOrmDataStructure && info.Base is IOrmDataStructure)
            {
                codeBuilder.InsertCode(
                    string.Format("modelBuilder.Entity<Common.Queryable.{0}_{1}>().HasRequired(t => t.Base).WithOptional(t => t.{2});\r\n            ",
                                  info.Extension.Module.Name, info.Extension.Name, info.ExtensionPropertyName()),
                    DomInitializationCodeGenerator.EntityFrameworkOnModelCreatingTag);
            }
            else if (info.Extension is IOrmDataStructure)
            {
                codeBuilder.InsertCode(
                    string.Format("modelBuilder.Entity<Common.Queryable.{0}_{1}>().Ignore(t => t.Base);\r\n            ",
                                  info.Extension.Module.Name, info.Extension.Name),
                    DomInitializationCodeGenerator.EntityFrameworkOnModelCreatingTag);
            }
            else if (info.Base is IOrmDataStructure)
            {
                codeBuilder.InsertCode(
                    string.Format("modelBuilder.Entity<Common.Queryable.{0}_{1}>().Ignore(t => t.{2});\r\n            ",
                                  info.Base.Module.Name, info.Base.Name, info.ExtensionPropertyName()),
                    DomInitializationCodeGenerator.EntityFrameworkOnModelCreatingTag);
            }

            if (UniqueReferenceDatabaseDefinition.IsSupported(info) &&
                info.Extension is IOrmDataStructure &&
                info.Base is IWritableOrmDataStructure)
            {
                var    ormDataStructure          = (IOrmDataStructure)info.Extension;
                string systemMessage             = "DataStructure:" + info.Extension + ",Property:ID,Referenced:" + info.Base;
                string onDeleteInterpretSqlError = @"if (interpretedException is Rhetos.UserException && Rhetos.Utilities.MsSqlUtility.IsReferenceErrorOnDelete(interpretedException, "
                                                   + CsUtility.QuotedString(ormDataStructure.GetOrmSchema() + "." + ormDataStructure.GetOrmDatabaseObject()) + @", "
                                                   + CsUtility.QuotedString("ID") + @", "
                                                   + CsUtility.QuotedString(UniqueReferenceDatabaseDefinition.GetConstraintName(info)) + @"))
                    ((Rhetos.UserException)interpretedException).SystemMessage = " + CsUtility.QuotedString(systemMessage) + @";
                ";
                codeBuilder.InsertCode(onDeleteInterpretSqlError, WritableOrmDataStructureCodeGenerator.OnDatabaseErrorTag, info.Base);
            }
        }
        public void GenerateCode(IConceptInfo conceptInfo, ICodeBuilder codeBuilder)
        {
            var    info         = (LinkedItemsInfo)conceptInfo;
            string propertyType = string.Format("IList<Common.Queryable.{0}_{1}>", info.ReferenceProperty.DataStructure.Module.Name, info.ReferenceProperty.DataStructure.Name);

            if (DslUtility.IsQueryable(info.ReferenceProperty.DataStructure) && DslUtility.IsQueryable(info.DataStructure))
            {
                DataStructureQueryableCodeGenerator.AddNavigationProperty(codeBuilder, info.DataStructure,
                                                                          csPropertyName: info.Name,
                                                                          propertyType: propertyType);
            }
        }
Exemple #17
0
        public static string AddColumn(ConceptMetadata conceptMetadata, PropertyInfo property, string options = "")
        {
            string columnName = conceptMetadata.Get(property, ColumnNamesMetadata).Single();

            return(Sql.Format("PropertyDatabaseDefinition_AddColumn",
                              SqlUtility.Identifier(property.DataStructure.Module.Name),
                              SqlUtility.Identifier(property.DataStructure.Name),
                              DslUtility.ValidateIdentifier(columnName, property, "Invalid column name."),
                              conceptMetadata.Get(property, ColumnTypesMetadata).Single(),
                              options,
                              Options1Tag.Evaluate(property),
                              Options2Tag.Evaluate(property),
                              AfterCreateTag.Evaluate(property)).Trim());
        }
        public void GetBaseChangesOnDependencyHistory()
        {
            using (var scope = TestScope.Create())
            {
                var dslModel = scope.Resolve <IDslModel>();

                var dependsOnHistory = (SqlQueryableInfo)dslModel.FindByKey("DataStructureInfo TestHistory.SimpleWithLock_History");

                var entityDependencies = DslUtility.GetBaseChangesOnDependency(dependsOnHistory, dslModel);
                Assert.AreEqual(
                    "Entity TestHistory.SimpleWithLock, Entity TestHistory.SimpleWithLock_Changes",
                    TestUtility.DumpSorted(entityDependencies, c => c.GetUserDescription()));
            }
        }
Exemple #19
0
        public void GenerateCode(IConceptInfo conceptInfo, ICodeBuilder codeBuilder)
        {
            var info = (ComplexPropertyInfo)conceptInfo;

            string typeName = info.PropertyType.Module.Name + "." + info.PropertyType.Name;

            if (DslUtility.IsQueryable(info.PropertyType))
            {
                GeneratePropertyWithSimpleSerializer(codeBuilder, info, typeName);
            }
            else
            {
                PropertyHelper.GenerateCodeForType((PropertyInfo)conceptInfo, codeBuilder, typeName);
            }
        }
        protected override void Load(Dsl.FunctionData callData, SkillInstance instance)
        {
            int num = callData.GetParamNum();

            if (num >= 5)
            {
                StartTime     = long.Parse(callData.GetParamId(0));
                m_RemainTime  = long.Parse(callData.GetParamId(1));
                m_ShaderName  = callData.GetParamId(2);
                m_StartColor  = DslUtility.CalcColor(callData.GetParam(3) as Dsl.FunctionData);
                m_ChangeColor = DslUtility.CalcColor(callData.GetParam(4) as Dsl.FunctionData);
            }
            if (num >= 6)
            {
                m_ChangeTime = long.Parse(callData.GetParamId(5));
            }
        }
        protected override void Load(Dsl.CallData callData, SkillInstance instance)
        {
            int num = callData.GetParamNum();

            if (num >= 3)
            {
                StartTime = long.Parse(callData.GetParamId(0));
                var param = callData.GetParam(1);
                m_ObjPath = param.GetId();
                var cd = param as Dsl.CallData;
                if (null != cd && m_ObjPath == "vector3")
                {
                    m_RelativeOffset = DslUtility.CalcVector3(cd);
                }
                m_DurationTime = long.Parse(callData.GetParamId(2));
            }
        }
Exemple #22
0
        protected override void Load(Dsl.FunctionData funcData, SkillInstance instance)
        {
            Dsl.CallData callData = funcData.Call;
            if (null != callData)
            {
                Load(callData, instance);

                Dsl.ISyntaxComponent statement = funcData.Statements.Find(st => st.GetId() == "transform");
                if (null != statement)
                {
                    Dsl.CallData stCall = statement as Dsl.CallData;
                    if (null != stCall)
                    {
                        if (stCall.GetParamNum() > 0)
                        {
                            Dsl.CallData param0 = stCall.GetParam(0) as Dsl.CallData;
                            if (null != param0)
                            {
                                m_Pos = DslUtility.CalcVector3(param0);
                            }
                        }
                        if (stCall.GetParamNum() > 1)
                        {
                            Dsl.CallData param1 = stCall.GetParam(1) as Dsl.CallData;
                            if (null != param1)
                            {
                                m_Dir = DslUtility.CalcEularRotation(param1);
                            }
                        }
                        if (stCall.GetParamNum() > 2)
                        {
                            Dsl.CallData param2 = stCall.GetParam(2) as Dsl.CallData;
                            if (null != param2)
                            {
                                m_Scale = DslUtility.CalcVector3(param2);
                            }
                        }
                    }
                }
            }
        }
 protected override void Load(Dsl.CallData callData, SkillInstance instance)
 {
     if (callData.GetParamNum() >= 5)
     {
         StartTime  = long.Parse(callData.GetParamId(0));
         m_BoneName = callData.GetParamId(1);
         if (m_BoneName == " ")
         {
             m_BoneName = "";
         }
         var param2 = callData.GetParam(2);
         m_PosObjPath = param2.GetId();
         var cd2 = param2 as Dsl.CallData;
         if (null != cd2 && m_PosObjPath == "vector3")
         {
             m_Postion = DslUtility.CalcVector3(cd2);
         }
         var param3 = callData.GetParam(3);
         m_RotateObjPath = param3.GetId();
         var cd3 = param3 as Dsl.CallData;
         if (null != cd3 && m_RotateObjPath == "eular")
         {
             m_Rotate = DslUtility.CalcEularAngles(cd3);
         }
         m_RelativeType = callData.GetParamId(4);
     }
     if (callData.GetParamNum() >= 6)
     {
         m_IsAttach = bool.Parse(callData.GetParamId(5));
     }
     if (callData.GetParamNum() >= 7)
     {
         m_IsUseTerrainHeight = bool.Parse(callData.GetParamId(6));
     }
     if (callData.GetParamNum() >= 8)
     {
         m_RandomRotate = DslUtility.CalcVector3(callData.GetParam(7) as Dsl.CallData);
     }
 }
Exemple #24
0
        public void GenerateCode(IConceptInfo conceptInfo, ICodeBuilder codeBuilder)
        {
            DataStructureExtendsInfo info = (DataStructureExtendsInfo)conceptInfo;
            var extensionPropertyName     = ExtensionPropertyName(info);

            if (DslUtility.IsQueryable(info.Extension) && DslUtility.IsQueryable(info.Base))
            {
                DataStructureQueryableCodeGenerator.AddNavigationPropertyWithBackingField(codeBuilder, info.Extension,
                                                                                          csPropertyName: "Base",
                                                                                          propertyType: "Common.Queryable." + info.Base.Module.Name + "_" + info.Base.Name,
                                                                                          additionalSetterCode: "ID = value != null ? value.ID : Guid.Empty;");
                DataStructureQueryableCodeGenerator.AddNavigationPropertyWithBackingField(codeBuilder, info.Base,
                                                                                          csPropertyName: extensionPropertyName,
                                                                                          propertyType: "Common.Queryable." + info.Extension.Module.Name + "_" + info.Extension.Name,
                                                                                          additionalSetterCode: null);
            }

            if (info.Extension is IOrmDataStructure && info.Base is IOrmDataStructure)
            {
                codeBuilder.InsertCode(
                    string.Format("modelBuilder.Entity<Common.Queryable.{0}_{1}>().HasRequired(t => t.Base).WithOptional(t => t.{2});\r\n            ",
                                  info.Extension.Module.Name, info.Extension.Name, extensionPropertyName),
                    DomInitializationCodeGenerator.EntityFrameworkOnModelCreatingTag);
            }
            else if (info.Extension is IOrmDataStructure)
            {
                codeBuilder.InsertCode(
                    string.Format("modelBuilder.Entity<Common.Queryable.{0}_{1}>().Ignore(t => t.Base);\r\n            ",
                                  info.Extension.Module.Name, info.Extension.Name),
                    DomInitializationCodeGenerator.EntityFrameworkOnModelCreatingTag);
            }
            else if (info.Base is IOrmDataStructure)
            {
                codeBuilder.InsertCode(
                    string.Format("modelBuilder.Entity<Common.Queryable.{0}_{1}>().Ignore(t => t.{2});\r\n            ",
                                  info.Base.Module.Name, info.Base.Name, extensionPropertyName),
                    DomInitializationCodeGenerator.EntityFrameworkOnModelCreatingTag);
            }
        }
        public void GenerateCode(IConceptInfo conceptInfo, ICodeBuilder codeBuilder)
        {
            var info         = (ComputeForNewBaseItemsInfo)conceptInfo;
            var baseDS       = info.Dependency_Extends.Base;
            var uniqueSuffix = DslUtility.NameOptionalModule(info.EntityComputedFrom.Source, baseDS.Module)
                               + DslUtility.NameOptionalModule(info.EntityComputedFrom.Target, baseDS.Module);

            string saveFilterArgument;

            if (!string.IsNullOrWhiteSpace(info.FilterSaveExpression))
            {
                string saveFilterMethodName = $"FilterSaveComputeForNewBaseItems_{uniqueSuffix}";
                var    extensionDS          = info.Dependency_Extends.Extension;

                var    parsedExpression = new ParsedExpression(info.FilterSaveExpression, new[] { $"IEnumerable<{extensionDS.FullName}>" }, info);
                string filterSaveMethod = $@"private IEnumerable<{extensionDS.FullName}> {saveFilterMethodName}{parsedExpression.MethodParametersAndBody}

        ";

                codeBuilder.InsertCode(filterSaveMethod, RepositoryHelper.RepositoryMembers, baseDS);

                saveFilterArgument = $", {saveFilterMethodName}";
            }
            else
            {
                saveFilterArgument = "";
            }


            string callRecomputeOnSave = $@"if (insertedNew.Any())
                {{
                    Guid[] insertedIds = insertedNew.Select(item => item.ID).ToArray();
                    _domRepository.{info.EntityComputedFrom.Target.FullName}.{EntityComputedFromCodeGenerator.RecomputeFunctionName(info.EntityComputedFrom)}(insertedIds{saveFilterArgument});
                }}
                ";

            codeBuilder.InsertCode(callRecomputeOnSave, WritableOrmDataStructureCodeGenerator.OnSaveTag1, baseDS);
        }
Exemple #26
0
        /// <summary>
        /// This will suppress some WCF issues with the property serialization in web response:
        /// WCF tries to serialized complete instance type, which can sometimes be a queryable class or an Entity Framework proxy class
        /// but we only need to serialize the base properties from the simple class.
        /// </summary>
        private static void GeneratePropertyWithSimpleSerializer(ICodeBuilder codeBuilder, ComplexPropertyInfo info, string typeName)
        {
            string querybleTypeName = "Common.Queryable." + info.PropertyType.Module.Name + "_" + info.PropertyType.Name;

            string propertySnippet =
                $@"public {typeName} {info.Name} {{ get; set; }}
        [DataMember(Name = ""{info.Name}"")]
        public {typeName} {info.Name}_ToSimple
        {{
            get {{ return {info.Name} is {querybleTypeName} ? (({querybleTypeName}){info.Name}).ToSimple() : {info.Name}; }}
            private set {{ {info.Name} = value; }}
        }}
        ";

            codeBuilder.InsertCode(propertySnippet, DataStructureCodeGenerator.BodyTag, info.DataStructure);

            if (DslUtility.IsQueryable(info.DataStructure))
            {
                codeBuilder.InsertCode(
                    string.Format(",\r\n                {0} = item.{0}", info.Name),
                    RepositoryHelper.AssignSimplePropertyTag, info.DataStructure);
            }
        }
        protected override void Load(Dsl.CallData callData, SkillInstance instance)
        {
            int num = callData.GetParamNum();

            if (num > 0)
            {
                m_Duration = long.Parse(callData.GetParamId(0));
            }
            else
            {
                m_Duration = 1000;
            }
            if (num > 1)
            {
                m_G = float.Parse(callData.GetParamId(1));
            }
            if (num > 2)
            {
                var param = callData.GetParam(2);
                m_ObjPath = param.GetId();
                var cd = param as Dsl.CallData;
                if (null != cd && m_ObjPath == "vector3")
                {
                    m_Offset = DslUtility.CalcVector3(cd);
                }
            }
            if (num > 3)
            {
                StartTime = long.Parse(callData.GetParamId(3));
            }
            if (num > 4)
            {
                string         moveType = callData.GetParamId(4);
                IList <string> list     = Converter.ConvertStringList(moveType);
                m_IsFaceToTarget = list.IndexOf("facetotarget") >= 0;
            }
        }
 protected override void Load(Dsl.CallData callData, SkillInstance instance)
 {
     if (callData.GetParamNum() >= 6)
     {
         StartTime  = long.Parse(callData.GetParamId(0));
         m_BoneName = callData.GetParamId(1);
         if (m_BoneName == " ")
         {
             m_BoneName = "";
         }
         m_Postion      = DslUtility.CalcVector3(callData.GetParam(2) as Dsl.CallData);
         m_Rotate       = DslUtility.CalcEularAngles(callData.GetParam(3) as Dsl.CallData);
         m_RelativeType = callData.GetParamId(4);
         m_IsAttach     = bool.Parse(callData.GetParamId(5));
     }
     if (callData.GetParamNum() >= 7)
     {
         m_IsUseTerrainHeight = bool.Parse(callData.GetParamId(6));
     }
     if (callData.GetParamNum() >= 8)
     {
         m_RandomRotate = DslUtility.CalcVector3(callData.GetParam(7) as Dsl.CallData);
     }
 }
Exemple #29
0
 public static string RecomputeFunctionName(EntityComputedFromInfo info)
 {
     return("RecomputeFrom" + DslUtility.NameOptionalModule(info.Source, info.Target.Module));
 }
Exemple #30
0
        public void GenerateCode(IConceptInfo conceptInfo, ICodeBuilder codeBuilder)
        {
            ReferencePropertyInfo info = (ReferencePropertyInfo)conceptInfo;

            var referenceGuid = new PropertyInfo {
                DataStructure = info.DataStructure, Name = info.Name + "ID"
            };

            PropertyHelper.GenerateCodeForType(referenceGuid, codeBuilder, "Guid?");

            if (DslUtility.IsQueryable(info.DataStructure) && DslUtility.IsQueryable(info.Referenced))
            {
                DataStructureQueryableCodeGenerator.AddNavigationPropertyWithBackingField(codeBuilder, info.DataStructure,
                                                                                          csPropertyName: info.Name,
                                                                                          propertyType: "Common.Queryable." + info.Referenced.Module.Name + "_" + info.Referenced.Name,
                                                                                          additionalSetterCode: info.Name + "ID = value != null ? (Guid?)value.ID : null;");
            }

            if (info.DataStructure is IOrmDataStructure && info.Referenced is IOrmDataStructure)
            {
                codeBuilder.InsertCode(
                    info.OrmMappingSnippet(),
                    DomInitializationCodeGenerator.EntityFrameworkOnModelCreatingTag);
            }
            else if (info.DataStructure is IOrmDataStructure)
            {
                codeBuilder.InsertCode(
                    string.Format("modelBuilder.Entity<Common.Queryable.{0}_{1}>().Ignore(t => t.{2});\r\n            ",
                                  info.DataStructure.Module.Name, info.DataStructure.Name, info.Name),
                    DomInitializationCodeGenerator.EntityFrameworkOnModelCreatingTag);
            }

            if (ReferencePropertyConstraintDatabaseDefinition.IsSupported(info) &&
                info.DataStructure is IOrmDataStructure &&
                info.Referenced is IOrmDataStructure)
            {
                var    ormDataStructure           = (IOrmDataStructure)info.DataStructure;
                var    referencedOrmDataStructure = (IOrmDataStructure)info.Referenced;
                string systemMessage = "DataStructure:" + info.DataStructure + ",Property:" + info.Name + "ID,Referenced:" + info.Referenced;

                if (info.DataStructure is IWritableOrmDataStructure)
                {
                    string onEnterInterpretSqlError = @"if (interpretedException is Rhetos.UserException && Rhetos.Utilities.MsSqlUtility.IsReferenceErrorOnInsertUpdate(interpretedException, "
                                                      + CsUtility.QuotedString(referencedOrmDataStructure.GetOrmSchema() + "." + referencedOrmDataStructure.GetOrmDatabaseObject()) + @", "
                                                      + CsUtility.QuotedString("ID") + @", "
                                                      + CsUtility.QuotedString(ReferencePropertyConstraintDatabaseDefinition.GetConstraintName(info)) + @"))
                    ((Rhetos.UserException)interpretedException).SystemMessage = " + CsUtility.QuotedString(systemMessage) + @";
                ";
                    codeBuilder.InsertCode(onEnterInterpretSqlError, WritableOrmDataStructureCodeGenerator.OnDatabaseErrorTag, info.DataStructure);
                }

                if (info.Referenced is IWritableOrmDataStructure)
                {
                    string onDeleteInterpretSqlError = @"if (interpretedException is Rhetos.UserException && Rhetos.Utilities.MsSqlUtility.IsReferenceErrorOnDelete(interpretedException, "
                                                       + CsUtility.QuotedString(ormDataStructure.GetOrmSchema() + "." + ormDataStructure.GetOrmDatabaseObject()) + @", "
                                                       + CsUtility.QuotedString(info.Name + "ID") + @", "
                                                       + CsUtility.QuotedString(ReferencePropertyConstraintDatabaseDefinition.GetConstraintName(info)) + @"))
                    ((Rhetos.UserException)interpretedException).SystemMessage = " + CsUtility.QuotedString(systemMessage) + @";
                ";
                    codeBuilder.InsertCode(onDeleteInterpretSqlError, WritableOrmDataStructureCodeGenerator.OnDatabaseErrorTag, info.Referenced);
                }
            }
        }