001: /*
002:
003: Derby - Class org.apache.derby.impl.sql.execute.TriggerEvent
004:
005: Licensed to the Apache Software Foundation (ASF) under one or more
006: contributor license agreements. See the NOTICE file distributed with
007: this work for additional information regarding copyright ownership.
008: The ASF licenses this file to you under the Apache License, Version 2.0
009: (the "License"); you may not use this file except in compliance with
010: the License. You may obtain a copy of the License at
011:
012: http://www.apache.org/licenses/LICENSE-2.0
013:
014: Unless required by applicable law or agreed to in writing, software
015: distributed under the License is distributed on an "AS IS" BASIS,
016: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
017: See the License for the specific language governing permissions and
018: limitations under the License.
019:
020: */
021:
022: package org.apache.derby.impl.sql.execute;
023:
024: /**
025: * This is a simple class that we use to track
026: * trigger events. This is not expected to
027: * be used directly, instead there is a static
028: * TriggerEvent in TriggerEvents for each event
029: * found in this file.
030: *
031: * @author jamie
032: */
033: public class TriggerEvent {
034: static final int BEFORE_INSERT = 0;
035: static final int BEFORE_DELETE = 1;
036: static final int BEFORE_UPDATE = 2;
037: static final int LAST_BEFORE_EVENT = BEFORE_UPDATE;
038: static final int AFTER_INSERT = 3;
039: static final int AFTER_DELETE = 4;
040: static final int AFTER_UPDATE = 5;
041: static final int MAX_EVENTS = 6;
042:
043: private static final String Names[] = { "BEFORE INSERT",
044: "BEFORE DELETE", "BEFORE UPDATE", "AFTER INSERT",
045: "AFTER DELETE", "AFTER UPDATE" };
046:
047: private boolean before;
048: private int type;
049:
050: /**
051: * Create a trigger event of the given type
052: *
053: * @param type the type
054: */
055: TriggerEvent(int type) {
056: this .type = type;
057: switch (type) {
058: case BEFORE_INSERT:
059: case BEFORE_DELETE:
060: case BEFORE_UPDATE:
061: before = true;
062: break;
063:
064: case AFTER_INSERT:
065: case AFTER_DELETE:
066: case AFTER_UPDATE:
067: before = false;
068: break;
069: }
070: }
071:
072: /**
073: * Get the type number of this trigger
074: *
075: * @return the type number
076: */
077: int getNumber() {
078: return type;
079: }
080:
081: /**
082: * Get the type number of this trigger
083: *
084: * @return the type number
085: */
086: String getName() {
087: return Names[type];
088: }
089:
090: /**
091: * Is this a before trigger
092: *
093: * @return true if before
094: */
095: boolean isBefore() {
096: return before;
097: }
098:
099: /**
100: * Is this an after trigger
101: *
102: * @return true if after
103: */
104: boolean isAfter() {
105: return !before;
106: }
107: }
|