Ejemplo n.º 1
0
    protected override IEnumerable <Command> OnAlter(IMetadata sourceMetadata, IMetadata targetMetadata, IComparerContext context)
    {
        var otherTrigger = FindOtherChecked(targetMetadata.MetadataTriggers.TriggersByName, TriggerName, "trigger");

        if ((TriggerClass != otherTrigger.TriggerClass) ||
            (TriggerClass == TriggerClassType.DB && TriggerType != otherTrigger.TriggerType) ||
            (TriggerClass == TriggerClassType.DDL && TriggerType != otherTrigger.TriggerType))
        {
            throw new NotSupportedOnFirebirdException($"Altering DB and DDL trigger type is not supported ({TriggerName}).");
        }
        else if (SqlSecurity == null && otherTrigger.SqlSecurity != null)
        {
            yield return(new Command().Append($"ALTER TRIGGER {TriggerName.AsSqlIndentifier()} DROP SQL SECURITY"));
        }
        else if (SqlSecurity != null && otherTrigger.SqlSecurity != null && SqlSecurity != otherTrigger.SqlSecurity)
        {
            yield return(new Command().Append($"ALTER TRIGGER {TriggerName.AsSqlIndentifier()} SQL SECURITY {SqlHelper.SqlSecurityString(SqlSecurity)}"));
        }
        else
        {
            foreach (var item in OnCreate(sourceMetadata, targetMetadata, context))
            {
                yield return(item);
            }
        }
    }
Ejemplo n.º 2
0
        /// <summary>Snippet for DeleteTrigger</summary>
        public void DeleteTriggerRequestObject()
        {
            // Snippet: DeleteTrigger(DeleteTriggerRequest, CallSettings)
            // Create client
            EventarcClient eventarcClient = EventarcClient.Create();
            // Initialize request argument(s)
            DeleteTriggerRequest request = new DeleteTriggerRequest
            {
                TriggerName  = TriggerName.FromProjectLocationTrigger("[PROJECT]", "[LOCATION]", "[TRIGGER]"),
                Etag         = "",
                AllowMissing = false,
                ValidateOnly = false,
            };
            // Make the request
            Operation <Trigger, OperationMetadata> response = eventarcClient.DeleteTrigger(request);

            // Poll until the returned long-running operation is complete
            Operation <Trigger, OperationMetadata> completedResponse = response.PollUntilCompleted();
            // Retrieve the operation result
            Trigger result = completedResponse.Result;

            // Or get the name of the operation
            string operationName = response.Name;
            // This name can be stored, then the long-running operation retrieved later by name
            Operation <Trigger, OperationMetadata> retrievedResponse = eventarcClient.PollOnceDeleteTrigger(operationName);

            // Check if the retrieved long-running operation has completed
            if (retrievedResponse.IsCompleted)
            {
                // If it has completed, then access the result
                Trigger retrievedResult = retrievedResponse.Result;
            }
            // End snippet
        }
Ejemplo n.º 3
0
        /// <summary>Snippet for DeleteTriggerAsync</summary>
        public async Task DeleteTriggerResourceNamesAsync()
        {
            // Snippet: DeleteTriggerAsync(TriggerName, bool, CallSettings)
            // Additional: DeleteTriggerAsync(TriggerName, bool, CancellationToken)
            // Create client
            EventarcClient eventarcClient = await EventarcClient.CreateAsync();

            // Initialize request argument(s)
            TriggerName name         = TriggerName.FromProjectLocationTrigger("[PROJECT]", "[LOCATION]", "[TRIGGER]");
            bool        allowMissing = false;
            // Make the request
            Operation <Trigger, OperationMetadata> response = await eventarcClient.DeleteTriggerAsync(name, allowMissing);

            // Poll until the returned long-running operation is complete
            Operation <Trigger, OperationMetadata> completedResponse = await response.PollUntilCompletedAsync();

            // Retrieve the operation result
            Trigger result = completedResponse.Result;

            // Or get the name of the operation
            string operationName = response.Name;
            // This name can be stored, then the long-running operation retrieved later by name
            Operation <Trigger, OperationMetadata> retrievedResponse = await eventarcClient.PollOnceDeleteTriggerAsync(operationName);

            // Check if the retrieved long-running operation has completed
            if (retrievedResponse.IsCompleted)
            {
                // If it has completed, then access the result
                Trigger retrievedResult = retrievedResponse.Result;
            }
            // End snippet
        }
Ejemplo n.º 4
0
        public UberGumpTree(Mobile owner, XmlNode current, XmlDocument document, string fileName, XmlScript script = null, TriggerName triggerName = TriggerName.NoTrigger)
            : base(150, 50)
        {
            m_CurrentNode    = current;
            m_ParentDocument = document;
            m_Owner          = owner;
            m_FileName       = fileName;
            m_Script         = script;
            m_TriggerName    = triggerName;

            Closable   = true;
            Disposable = true;
            Dragable   = true;
            Resizable  = false;
            AddPage(0);

            int height = CalculateHeight(document.FirstChild) + 40;

            AddBackground(0, 0, 168, height, 9300);
            AddLabel(10, 10, 38, "UberGump Tree Elements");
            int penY     = 10;
            int buttonID = 0;

            Traverse(document.FirstChild, 10, ref penY, ref buttonID);
        }
 protected override void AppendTo(SqlStringBuilder builder)
 {
     builder.Append("ALTER TRIGGER ");
     TriggerName.AppendTo(builder);
     builder.Append(" ");
     Action.AppendTo(builder);
 }
Ejemplo n.º 6
0
        public static Dictionary<int, TriggerName> ScriptTriggerLookup = new Dictionary<int, TriggerName>(); // serial to XmlScript list conversion

        public static bool HasTrigger(IEntity entity, TriggerName trigToCheck)
        {
            if (entity == null) return false;
            TriggerName hasTrigger = TriggerName.NoTrigger;
            ScriptTriggerLookup.TryGetValue(entity.Serial.Value, out hasTrigger);
            return ((long)trigToCheck & (long)hasTrigger) > 0;
        }
Ejemplo n.º 7
0
            public virtual void OnGUI()
            {
                TriggerName oldTriggerName = ShowTriggerName();
                TriggerName newTriggerName = (TriggerName)EditorGUILayout.EnumPopup(
                    "Trigger name", oldTriggerName, GUILayout.ExpandWidth(false)
                    );

                triggerName      = newTriggerName.ToString();
                isTriggerChanged = oldTriggerName != newTriggerName;
            }
Ejemplo n.º 8
0
        public static Dictionary <int, TriggerName> ScriptTriggerLookup = new Dictionary <int, TriggerName>(); // serial to XmlScript list conversion

        public static bool HasTrigger(IEntity entity, TriggerName trigToCheck)
        {
            if (entity == null)
            {
                return(false);
            }
            TriggerName hasTrigger = TriggerName.NoTrigger;

            ScriptTriggerLookup.TryGetValue(entity.Serial.Value, out hasTrigger);
            return(((long)trigToCheck & (long)hasTrigger) > 0);
        }
Ejemplo n.º 9
0
 /// <summary>Snippet for GetTrigger</summary>
 public void GetTriggerResourceNames()
 {
     // Snippet: GetTrigger(TriggerName, CallSettings)
     // Create client
     EventarcClient eventarcClient = EventarcClient.Create();
     // Initialize request argument(s)
     TriggerName name = TriggerName.FromProjectLocationTrigger("[PROJECT]", "[LOCATION]", "[TRIGGER]");
     // Make the request
     Trigger response = eventarcClient.GetTrigger(name);
     // End snippet
 }
Ejemplo n.º 10
0
        protected override void AppendTo(SqlStringBuilder builder)
        {
            builder.Append("CREATE ");

            if (ReplaceIfExists)
            {
                builder.Append("OR REPLACE ");
            }

            builder.Append("TRIGGER ");
            TriggerName.AppendTo(builder);

            builder.AppendFormat(" {0} {1} ", EventTime.ToString().ToUpperInvariant(), EventType.AsDebugString());

            builder.Append("ON ");
            TableName.AppendTo(builder);
            builder.Append(" ");

            builder.Append("FOR EACH ROW ");

            if (Status != TriggerStatus.Unknown)
            {
                if (Status == TriggerStatus.Disabled)
                {
                    builder.Append("DISABLE ");
                }
                else if (Status == TriggerStatus.Enabled)
                {
                    builder.Append("ENABLE ");
                }
            }

            builder.Append("CALL ");

            ProcedureName.AppendTo(builder);
            builder.Append("(");

            if (ProcedureArguments != null &&
                ProcedureArguments.Length > 0)
            {
                for (int i = 0; i < ProcedureArguments.Length; i++)
                {
                    ProcedureArguments[i].AppendTo(builder);

                    if (i < ProcedureArguments.Length - 1)
                    {
                        builder.Append(", ");
                    }
                }
            }

            builder.Append(")");
        }
Ejemplo n.º 11
0
 public static void Trigger(XmlScript[] scripts, TriggerName triggerName)
 {
     foreach (XmlScript script in scripts)
     {
         script.Execute(
             new TriggerObject
         {
             TrigName = triggerName,
             This     = script.AttachedTo
         },
             true);
     }
 }
Ejemplo n.º 12
0
        /// <summary>Snippet for GetTriggerAsync</summary>
        public async Task GetTriggerResourceNamesAsync()
        {
            // Snippet: GetTriggerAsync(TriggerName, CallSettings)
            // Additional: GetTriggerAsync(TriggerName, CancellationToken)
            // Create client
            EventarcClient eventarcClient = await EventarcClient.CreateAsync();

            // Initialize request argument(s)
            TriggerName name = TriggerName.FromProjectLocationTrigger("[PROJECT]", "[LOCATION]", "[TRIGGER]");
            // Make the request
            Trigger response = await eventarcClient.GetTriggerAsync(name);

            // End snippet
        }
Ejemplo n.º 13
0
 /// <summary>Snippet for GetTrigger</summary>
 public void GetTriggerRequestObject()
 {
     // Snippet: GetTrigger(GetTriggerRequest, CallSettings)
     // Create client
     EventarcClient eventarcClient = EventarcClient.Create();
     // Initialize request argument(s)
     GetTriggerRequest request = new GetTriggerRequest
     {
         TriggerName = TriggerName.FromProjectLocationTrigger("[PROJECT]", "[LOCATION]", "[TRIGGER]"),
     };
     // Make the request
     Trigger response = eventarcClient.GetTrigger(request);
     // End snippet
 }
Ejemplo n.º 14
0
    protected override IEnumerable <Command> OnCreate(IMetadata sourceMetadata, IMetadata targetMetadata, IComparerContext context)
    {
        var command = SqlHelper.IsValidExternalEngine(this) ? new Command() : new PSqlCommand();

        command
        .Append($"CREATE OR ALTER TRIGGER {TriggerName.AsSqlIndentifier()}")
        .AppendLine()
        .Append($"{(Inactive ? "INACTIVE" : "ACTIVE")} ");
        switch (TriggerClass)
        {
        case TriggerClassType.DML:
        case TriggerClassType.DDL:
            command.Append($"{TriggerBeforeAfter.ToDescription()} {TriggerEvents[0].ToDescription()} ");
            foreach (var item in TriggerEvents.Skip(1))
            {
                command.Append($"OR {item.ToDescription()} ");
            }
            break;

        case TriggerClassType.DB:
            command.Append($"ON {TriggerEvents[0].ToDescription()} ");
            break;
        }
        command
        .Append($"POSITION {TriggerSequence}")
        .AppendLine();
        if (TriggerClass == TriggerClassType.DML)
        {
            command
            .Append($"ON {RelationName.AsSqlIndentifier()}")
            .AppendLine();
        }
        if (SqlHelper.IsValidExternalEngine(this))
        {
            command.Append($"EXTERNAL NAME '{SqlHelper.DoubleSingleQuotes(EntryPoint)}'");
            command.AppendLine();
            command.Append($"ENGINE {EngineName.AsSqlIndentifier()}");
        }
        else
        {
            if (SqlSecurity != null)
            {
                command.Append($"SQL SECURITY {SqlHelper.SqlSecurityString(SqlSecurity)}");
                command.AppendLine();
            }
            command.Append(TriggerSource);
        }
        yield return(command);
    }
Ejemplo n.º 15
0
        /// <summary>
        ///     Checks for any triggers existing on "thisMob", returns true if a trigger signalled to override the
        ///     handler that it came from
        /// </summary>
        /// <returns>true if a trigger execution signalled to override the handler that called Trigger</returns>
        public static bool Trigger(
            IEntity thisObj,
            Mobile trigMob,
            TriggerName trigName,
            Item item           = null,
            string spoken       = null,
            Spell spell         = null,
            int damage          = 0,
            object targeted     = null,
            SkillName skillName = SkillName.Spellweaving,
            double skillValue   = 0.0)           // spellweaving is just a placeholder
        {
            var  scripts = XmlAttach.GetScripts(thisObj);
            bool result  = false;

            if (scripts != null)
            {
                TriggerObject trigObject = new TriggerObject
                {
                    TrigName   = trigName,
                    This       = thisObj,
                    TrigMob    = trigMob,
                    TrigItem   = item,
                    Spell      = spell,
                    Damage     = damage,
                    Speech     = spoken,
                    Targeted   = targeted,
                    SkillName  = skillName,
                    SkillValue = skillValue
                };

                int count = 0;

                foreach (XmlScript script in scripts)
                {
                    count++;

                    // make sure each script has its own TriggerObjects
                    if (script.Execute(count < scripts.Count ? trigObject.Dupe() : trigObject, true))
                    {
                        // returns true if there is an override
                        result = true;
                    }
                }
            }

            return(result);
        }
Ejemplo n.º 16
0
        protected override IEnumerable <Command> OnCreate(IMetadata sourceMetadata, IMetadata targetMetadata, IComparerContext context)
        {
            var command = new PSqlCommand();

            command
            .Append($"CREATE OR ALTER TRIGGER {TriggerName.AsSqlIndentifier()}")
            .AppendLine()
            .Append($"{(Inactive ? "INACTIVE" : "ACTIVE")} ");

            if (TriggerClass == TriggerClassType.DB)
            {
                command.Append($"ON {TriggerAction1.ToDescription()} ");
            }
            else if (TriggerClass == TriggerClassType.DML)
            {
                var beforeOrAfter = TriggerAction1.In(new[] { TriggerActionType.BEFORE_INSERT, TriggerActionType.BEFORE_UPDATE, TriggerActionType.BEFORE_DELETE }) ? "BEFORE" : "AFTER";
                command.Append($"{beforeOrAfter} {TriggerAction1.ToDescription()} ");
                if (TriggerAction2 != null)
                {
                    command.Append($"OR {TriggerAction2.ToDescription()} ");
                }
                if (TriggerAction3 != null)
                {
                    command.Append($"OR {TriggerAction3.ToDescription()} ");
                }
            }
            else
            {
                throw new ArgumentOutOfRangeException($"Unknown trigger class {TriggerClass}.");
            }

            command
            .Append($"POSITION {TriggerSequence}")
            .AppendLine();

            if (TriggerClass == TriggerClassType.DML)
            {
                command
                .Append($"ON {RelationName.AsSqlIndentifier()}")
                .AppendLine();
            }

            command.Append(TriggerSource);
            yield return(command);
        }
Ejemplo n.º 17
0
        public override void WriteToStream(IndentStream stream)
        {
            stream.Write("TRIGGER ");
            TriggerName.WriteToStream(stream);
            stream.Write(" ON ");
            ObjectExpr.WriteToStream(stream);

            if (WithExecuteAs != null)
            {
                stream.Write(" ");
                WithExecuteAs.WriteToStream(stream);
            }

            if (AfterExpr != null)
            {
                stream.Write(" ");
                AfterExpr.WriteToStream(stream);
            }
        }
Ejemplo n.º 18
0
        public async stt::Task GetTriggerRequestObjectAsync()
        {
            moq::Mock <Eventarc.EventarcClient> mockGrpcClient = new moq::Mock <Eventarc.EventarcClient>(moq::MockBehavior.Strict);

            mockGrpcClient.Setup(x => x.CreateOperationsClient()).Returns(new moq::Mock <lro::Operations.OperationsClient>().Object);
            GetTriggerRequest request = new GetTriggerRequest
            {
                TriggerName = TriggerName.FromProjectLocationTrigger("[PROJECT]", "[LOCATION]", "[TRIGGER]"),
            };
            Trigger expectedResponse = new Trigger
            {
                TriggerName  = TriggerName.FromProjectLocationTrigger("[PROJECT]", "[LOCATION]", "[TRIGGER]"),
                Uid          = "uida2d37198",
                CreateTime   = new wkt::Timestamp(),
                UpdateTime   = new wkt::Timestamp(),
                EventFilters = { new EventFilter(), },
                ServiceAccountAsServiceAccountName = ServiceAccountName.FromProjectServiceAccount("[PROJECT]", "[SERVICE_ACCOUNT]"),
                Destination = new Destination(),
                Transport   = new Transport(),
                Labels      =
                {
                    {
                        "key8a0b6e3c",
                        "value60c16320"
                    },
                },
                Etag = "etage8ad7218",
            };

            mockGrpcClient.Setup(x => x.GetTriggerAsync(request, moq::It.IsAny <grpccore::CallOptions>())).Returns(new grpccore::AsyncUnaryCall <Trigger>(stt::Task.FromResult(expectedResponse), null, null, null, null));
            EventarcClient client = new EventarcClientImpl(mockGrpcClient.Object, null);
            Trigger        responseCallSettings = await client.GetTriggerAsync(request, gaxgrpc::CallSettings.FromCancellationToken(st::CancellationToken.None));

            xunit::Assert.Same(expectedResponse, responseCallSettings);
            Trigger responseCancellationToken = await client.GetTriggerAsync(request, st::CancellationToken.None);

            xunit::Assert.Same(expectedResponse, responseCancellationToken);
            mockGrpcClient.VerifyAll();
        }
Ejemplo n.º 19
0
        public UberGumpTree(Mobile owner, XmlNode current, XmlDocument document, string fileName, XmlScript script = null, TriggerName triggerName = TriggerName.NoTrigger)
            : base(150, 50)
        {
            m_CurrentNode = current;
            m_ParentDocument = document;
            m_Owner = owner;
            m_FileName = fileName;
            m_Script = script;
            m_TriggerName = triggerName;

            Closable = true;
            Disposable = true;
            Dragable = true;
            Resizable = false;
            AddPage(0);

            int height = CalculateHeight(document.FirstChild) + 40;
            AddBackground(0, 0, 168, height, 9300);
            AddLabel(10, 10, 38, "UberGump Tree Elements");
            int penY = 10;
            int buttonID = 0;
            Traverse(document.FirstChild, 10, ref penY, ref buttonID);
        }
Ejemplo n.º 20
0
        public void GetTriggerResourceNames()
        {
            moq::Mock <Eventarc.EventarcClient> mockGrpcClient = new moq::Mock <Eventarc.EventarcClient>(moq::MockBehavior.Strict);

            mockGrpcClient.Setup(x => x.CreateOperationsClient()).Returns(new moq::Mock <lro::Operations.OperationsClient>().Object);
            GetTriggerRequest request = new GetTriggerRequest
            {
                TriggerName = TriggerName.FromProjectLocationTrigger("[PROJECT]", "[LOCATION]", "[TRIGGER]"),
            };
            Trigger expectedResponse = new Trigger
            {
                TriggerName  = TriggerName.FromProjectLocationTrigger("[PROJECT]", "[LOCATION]", "[TRIGGER]"),
                Uid          = "uida2d37198",
                CreateTime   = new wkt::Timestamp(),
                UpdateTime   = new wkt::Timestamp(),
                EventFilters = { new EventFilter(), },
                ServiceAccountAsServiceAccountName = ServiceAccountName.FromProjectServiceAccount("[PROJECT]", "[SERVICE_ACCOUNT]"),
                Destination = new Destination(),
                Transport   = new Transport(),
                Labels      =
                {
                    {
                        "key8a0b6e3c",
                        "value60c16320"
                    },
                },
                Etag = "etage8ad7218",
            };

            mockGrpcClient.Setup(x => x.GetTrigger(request, moq::It.IsAny <grpccore::CallOptions>())).Returns(expectedResponse);
            EventarcClient client   = new EventarcClientImpl(mockGrpcClient.Object, null);
            Trigger        response = client.GetTrigger(request.TriggerName);

            xunit::Assert.Same(expectedResponse, response);
            mockGrpcClient.VerifyAll();
        }
Ejemplo n.º 21
0
        protected override void AppendTo(SqlStringBuilder builder)
        {
            builder.Append("CREATE ");
            if (ReplaceIfExists)
            {
                builder.Append("OR REPLACE ");
            }

            builder.Append("TRIGGER ");
            TriggerName.AppendTo(builder);
            builder.Append(" ");

            builder.AppendFormat("{0} {1} ", EventTime.ToString().ToUpperInvariant(), EventType.AsDebugString());

            builder.Append("ON ");
            TableName.AppendTo(builder);

            if (Status != TriggerStatus.Unknown)
            {
                if (Status == TriggerStatus.Disabled)
                {
                    builder.Append(" DISABLE");
                }
                else if (Status == TriggerStatus.Enabled)
                {
                    builder.Append(" ENABLE");
                }
            }

            builder.AppendLine();
            builder.Indent();

            Body.AppendTo(builder);

            builder.DeIndent();
        }
Ejemplo n.º 22
0
        public UberGumpEditorGump(Mobile owner, XmlNode currentNode, XmlDocument xmlDocument, string fileName,
                                    XmlScript script = null, TriggerName triggerName = TriggerName.NoTrigger)
            : base(300, 50)
		{
			m_Owner = owner;
            m_CurrentNode = currentNode;
            m_ParentDocument = xmlDocument;
            m_FileName = fileName;
            m_Script = script;
            m_TriggerName = triggerName;
            Closable = true;
            Dragable = true;

			InitializeGump();
		}
Ejemplo n.º 23
0
		public static void Trigger(XmlScript[] scripts, TriggerName triggerName)
		{
			foreach (XmlScript script in scripts)
			{
				script.Execute(
					new TriggerObject
					{
						TrigName = triggerName,
						This = script.AttachedTo
					},
					true);
			}
		}
Ejemplo n.º 24
0
 protected override IEnumerable <Command> OnDrop(IMetadata sourceMetadata, IMetadata targetMetadata, IComparerContext context)
 {
     yield return(new Command()
                  .Append($"DROP TRIGGER {TriggerName.AsSqlIndentifier()}"));
 }
Ejemplo n.º 25
0
 protected Trigger(TriggerName tn)
 {
     this.triggerName = tn.ToString();
 }
Ejemplo n.º 26
0
 private void SetTrigger(TriggerName trigger)
 {
     animator.SetTrigger(trigger.ToString());
 }
Ejemplo n.º 27
0
		/// <summary>
		///     Checks for any triggers existing on "thisMob", returns true if a trigger signalled to override the
		///     handler that it came from
		/// </summary>
		/// <returns>true if a trigger execution signalled to override the handler that called Trigger</returns>
		public static bool Trigger(
			IEntity thisObj,
			Mobile trigMob,
			TriggerName trigName,
			Item item = null,
			string spoken = null,
			Spell spell = null,
			int damage = 0,
			object targeted = null,
			SkillName skillName = SkillName.Spellweaving,
			double skillValue = 0.0) // spellweaving is just a placeholder
		{
			var scripts = XmlAttach.GetScripts(thisObj);
			bool result = false;

			if (scripts != null)
			{
				TriggerObject trigObject = new TriggerObject
				{
					TrigName = trigName,
					This = thisObj,
					TrigMob = trigMob,
					TrigItem = item,
					Spell = spell,
					Damage = damage,
					Speech = spoken,
					Targeted = targeted,
					SkillName = skillName,
					SkillValue = skillValue
				};

				int count = 0;

				foreach (XmlScript script in scripts)
				{
					count++;

					// make sure each script has its own TriggerObjects
					if (script.Execute(count < scripts.Count ? trigObject.Dupe() : trigObject, true))
					{
						// returns true if there is an override
						result = true;
					}
				}
			}

			return result;
		}