ONOS-7887 Rename action profile-related entities
Members can exist outside of a group. Previous naming was ambiguous
about this.
Action group -> action profile group
Action group member -> action profile member
Change-Id: I5097e92253353d355b864e689f9653df2d318230
diff --git a/core/api/src/main/java/org/onosproject/net/pi/runtime/PiActionProfileGroup.java b/core/api/src/main/java/org/onosproject/net/pi/runtime/PiActionProfileGroup.java
new file mode 100644
index 0000000..96168b9
--- /dev/null
+++ b/core/api/src/main/java/org/onosproject/net/pi/runtime/PiActionProfileGroup.java
@@ -0,0 +1,187 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.onosproject.net.pi.runtime;
+
+import com.google.common.annotations.Beta;
+import com.google.common.base.MoreObjects;
+import com.google.common.base.Objects;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Maps;
+import org.onosproject.net.pi.model.PiActionProfileId;
+
+import java.util.Collection;
+import java.util.Map;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+/**
+ * Instance of an action profile group of a protocol-independent pipeline.
+ */
+@Beta
+public final class PiActionProfileGroup implements PiEntity {
+
+ private final PiActionProfileGroupId id;
+ private final ImmutableSet<PiActionProfileMember> members;
+ private final PiActionProfileId actionProfileId;
+
+ private PiActionProfileGroup(PiActionProfileGroupId id,
+ ImmutableSet<PiActionProfileMember> members,
+ PiActionProfileId actionProfileId) {
+ this.id = id;
+ this.members = members;
+ this.actionProfileId = actionProfileId;
+ }
+
+ /**
+ * Returns the identifier of this action profile group.
+ *
+ * @return action profile group identifier
+ */
+ public PiActionProfileGroupId id() {
+ return id;
+ }
+
+ /**
+ * Returns the members of this action profile group.
+ *
+ * @return collection of action profile members.
+ */
+ public Collection<PiActionProfileMember> members() {
+ return members;
+ }
+
+ /**
+ * Gets identifier of the action profile.
+ *
+ * @return action profile id
+ */
+ public PiActionProfileId actionProfileId() {
+ return actionProfileId;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || !(o instanceof PiActionProfileGroup)) {
+ return false;
+ }
+ PiActionProfileGroup that = (PiActionProfileGroup) o;
+ return Objects.equal(id, that.id) &&
+ Objects.equal(members, that.members) &&
+ Objects.equal(actionProfileId, that.actionProfileId);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hashCode(id, members);
+ }
+
+ @Override
+ public String toString() {
+ return MoreObjects.toStringHelper(this)
+ .add("groupId", id)
+ .add("members", members)
+ .add("piActionProfileId", actionProfileId)
+ .toString();
+ }
+
+ /**
+ * Returns a new builder of action profile groups.
+ *
+ * @return action profile group builder
+ */
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ @Override
+ public PiEntityType piEntityType() {
+ return PiEntityType.ACTION_PROFILE_GROUP;
+ }
+
+ /**
+ * Builder of action profile groups.
+ */
+ public static final class Builder {
+
+ private PiActionProfileGroupId id;
+ private Map<PiActionProfileMemberId, PiActionProfileMember> members = Maps.newHashMap();
+ private PiActionProfileId piActionProfileId;
+
+ private Builder() {
+ // hides constructor.
+ }
+
+ /**
+ * Sets the identifier of this action profile group.
+ *
+ * @param id action profile group identifier
+ * @return this
+ */
+ public Builder withId(PiActionProfileGroupId id) {
+ this.id = id;
+ return this;
+ }
+
+ /**
+ * Adds one member to this action profile group.
+ *
+ * @param member action profile member
+ * @return this
+ */
+ public Builder addMember(PiActionProfileMember member) {
+ members.put(member.id(), member);
+ return this;
+ }
+
+ /**
+ * Adds many members to this action profile group.
+ *
+ * @param members action profile members
+ * @return this
+ */
+ public Builder addMembers(Collection<PiActionProfileMember> members) {
+ members.forEach(this::addMember);
+ return this;
+ }
+
+ /**
+ * Sets the identifier of the action profile.
+ *
+ * @param piActionProfileId the identifier of the action profile
+ * @return this
+ */
+ public Builder withActionProfileId(PiActionProfileId piActionProfileId) {
+ this.piActionProfileId = piActionProfileId;
+ return this;
+ }
+
+ /**
+ * Creates a new action profile group.
+ *
+ * @return action profile group
+ */
+ public PiActionProfileGroup build() {
+ checkNotNull(id);
+ checkNotNull(piActionProfileId);
+ return new PiActionProfileGroup(
+ id, ImmutableSet.copyOf(members.values()), piActionProfileId);
+ }
+ }
+}