blob: 3b2b30aa1966a05ae07395f94e4636823bb44dac [file] [log] [blame]
jaegonkim6a7b5242018-09-12 23:09:42 +09001/*
2 * Copyright 2018-present Open Networking Foundation
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package org.onosproject.workflow.api;
17
18import com.google.common.base.MoreObjects;
19import org.onosproject.event.Event;
20
21import java.util.Objects;
22
23/**
24 * Class for event task.
25 */
26public final class EventTask extends HandlerTask {
27
28 /**
29 * Event triggering event task.
30 */
31 private final Event event;
32
33 /**
34 * Event hint value for finding target event.
35 */
36 private final String eventHint;
37
38 /**
39 * Constructor of event task.
40 * @param builder builder of event task
41 */
42 private EventTask(Builder builder) {
43 super(builder);
44 this.event = builder.event;
45 this.eventHint = builder.eventHint;
46 }
47
48 /**
49 * Gets event of event task.
50 * @return event triggering event task
51 */
52 public Event event() {
53 return event;
54 }
55
56 /**
57 * Gets event type (class name of event) of event task.
58 * @return event type
59 */
60 public String eventType() {
61 return event.getClass().getName();
62 }
63
64 /**
65 * Gets event hint of event task.
66 * @return event hint string
67 */
68 public String eventHint() {
69 return eventHint;
70 }
71
72 @Override
73 public int hashCode() {
74 return Objects.hash(this.toString());
75 }
76
77 @Override
78 public boolean equals(Object obj) {
79 if (obj == this) {
80 return true;
81 }
82 if (!(obj instanceof EventTask)) {
83 return false;
84 }
85 return Objects.equals(this.event(), ((EventTask) obj).event())
86 && Objects.equals(this.eventType(), ((EventTask) obj).eventType())
87 && Objects.equals(this.eventHint(), ((EventTask) obj).eventHint());
88 }
89
90 @Override
91 public String toString() {
92 return MoreObjects.toStringHelper(getClass())
93 .add("context", context())
94 .add("workletType", workletType())
95 .add("event", event())
96 .add("eventHint", eventHint())
97 .toString();
98 }
99
100 /**
101 * Gets a instance of builder.
102 * @return instance of builder
103 */
104 public static Builder builder() {
105 return new Builder();
106 }
107
108 /**
109 * Builder of EventTask.
110 */
111 public static class Builder extends HandlerTask.Builder {
112
113 /**
114 * Event triggering event task.
115 */
116 private Event event;
117
118 /**
119 * Event hint value for finding target event.
120 */
121 private String eventHint;
122
123 /**
124 * Sets event.
125 * @param event event triggering event task
126 * @return Builder of EventTask
127 */
128 public Builder event(Event event) {
129 this.event = event;
130 return this;
131 }
132
133 /**
134 * Sets event hint.
135 * @param eventHint event hint value for finding target event
136 * @return Builder of EventTask
137 */
138 public Builder eventHint(String eventHint) {
139 this.eventHint = eventHint;
140 return this;
141 }
142
143 @Override
144 public Builder context(WorkflowContext context) {
145 super.context(context);
146 return this;
147 }
148
149 @Override
150 public Builder workletType(String workletType) {
151 super.workletType(workletType);
152 return this;
153 }
154
155 /**
156 * Builds EventTask.
157 * @return instance of EventTask
158 */
159 public EventTask build() {
160 return new EventTask(this);
161 }
162 }
163}