blob: 92516d4f73c3822284604f22c695e3a5c58f4bd4 [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;
19
20import java.util.Objects;
21
22/**
23 * Class for event timeout task.
24 */
25public final class EventTimeoutTask extends HandlerTask {
26
27 /**
28 * Event type (Class name of event).
29 */
30 private final String eventType;
31
32 /**
33 * Event hint value for finding target event.
34 */
35 private final String eventHint;
36
37 /**
38 * Constructor of EventTimeoutTask.
39 * @param builder builder of EventTimeoutTask
40 */
41 private EventTimeoutTask(Builder builder) {
42 super(builder);
43 this.eventType = builder.eventType;
44 this.eventHint = builder.eventHint;
45 }
46
47 /**
48 * Gets event type (Class name of event).
49 * @return event type
50 */
51 public String eventType() {
52 return eventType;
53 }
54
55 /**
56 * Gets event hint value for finding target event.
57 * @return event hint string
58 */
59 public String eventHint() {
60 return eventHint;
61 }
62
63 @Override
64 public int hashCode() {
65 return Objects.hash(this.toString());
66 }
67
68 @Override
69 public boolean equals(Object obj) {
70 if (obj == this) {
71 return true;
72 }
73 if (!(obj instanceof EventTask)) {
74 return false;
75 }
76 return Objects.equals(this.eventType(), ((EventTask) obj).eventType())
77 && Objects.equals(this.eventHint(), ((EventTask) obj).eventHint());
78 }
79
80 @Override
81 public String toString() {
82 return MoreObjects.toStringHelper(getClass())
83 .add("context", context())
84 .add("workletType", workletType())
85 .add("eventType", eventType())
86 .add("eventHint", eventHint())
87 .toString();
88 }
89
90 /**
91 * Gets a instance of builder.
92 * @return instance of builder
93 */
94 public static Builder builder() {
95 return new Builder();
96 }
97
98 /**
99 * Builder of EventTimeoutTask.
100 */
101 public static class Builder extends HandlerTask.Builder {
102 /**
103 * Event type (Class name of event).
104 */
105 private String eventType;
106
107 /**
108 * Event hint value for finding target event.
109 */
110 private String eventHint;
111
112 /**
113 * Sets Event type (Class name of event).
114 * @param eventType event type
115 * @return builder of EventTimeoutTask
116 */
117 public Builder eventType(String eventType) {
118 this.eventType = eventType;
119 return this;
120 }
121
122 /**
123 * Sets event hint string for finding target event.
124 * @param eventHint event hint string
125 * @return builder of EventTimeoutTask
126 */
127 public Builder eventHint(String eventHint) {
128 this.eventHint = eventHint;
129 return this;
130 }
131
132 @Override
133 public Builder context(WorkflowContext context) {
134 super.context(context);
135 return this;
136 }
137
138 @Override
139 public Builder workletType(String workletType) {
140 super.workletType(workletType);
141 return this;
142 }
143
144 /**
145 * Builds EventTimeoutTask.
146 * @return instance of EventTimeoutTask
147 */
148 public EventTimeoutTask build() {
149 return new EventTimeoutTask(this);
150 }
151 }
152}