blob: 044e2c704f54bda042a7eb18ce826d017c2d95b9 [file] [log] [blame]
hirokif4ed5212018-05-26 22:39:38 -07001/*
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 */
16
17package org.onosproject.odtn.utils.tapi;
18
19import java.util.Collections;
20import java.util.List;
21import java.util.stream.Collectors;
hirokid8fd7862018-10-09 15:24:24 +090022import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.DefaultContext;
23import org.onosproject.yang.gen.v1.tapicommon.rev20181016.tapicommon.Uuid;
24import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.connection.ConnectionEndPoint;
25import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.connection.DefaultConnectionEndPoint;
26import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.connection.DefaultLowerConnection;
27import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.connection.DefaultRoute;
28import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.connection.LowerConnection;
29import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.connectivitycontext.ConnectionKeys;
30import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.connectivitycontext.DefaultConnection;
31import org.onosproject.yang.gen.v1.tapiconnectivity.rev20181016.tapiconnectivity.context.augmentedtapicommoncontext.DefaultConnectivityContext;
hirokif4ed5212018-05-26 22:39:38 -070032import org.onosproject.yang.model.DefaultModelObjectData;
33import org.onosproject.yang.model.ModelObjectData;
34import org.onosproject.yang.model.ModelObjectId;
35
36import static org.onosproject.odtn.utils.tapi.TapiGlobalClassUtil.getUuid;
37import static org.onosproject.odtn.utils.tapi.TapiGlobalClassUtil.setUuid;
38
39/**
40 * Utility class to deal with TAPI Connection with DCS.
41 */
42public final class TapiConnectionHandler extends TapiObjectHandler<DefaultConnection> {
43
44 private TapiConnectionHandler() {
45 obj = new DefaultConnection();
46 setId();
47 }
48
49 public static TapiConnectionHandler create() {
50 return new TapiConnectionHandler();
51 }
52
53 @Override
54 protected Uuid getIdDetail() {
55 return getUuid(obj);
56 }
57
58 @Override
59 protected void setIdDetail(Uuid uuid) {
60 setUuid(obj, uuid);
61 }
62
63 @Override
64 public ModelObjectId getParentModelObjectId() {
hirokid8fd7862018-10-09 15:24:24 +090065 return ModelObjectId.builder()
66 .addChild(DefaultContext.class)
67 .addChild(DefaultConnectivityContext.class)
68 .build();
hirokif4ed5212018-05-26 22:39:38 -070069 }
70
71 @Override
72 public ModelObjectData getChildModelObjectData() {
73
74 ConnectionKeys key = new ConnectionKeys();
75 key.uuid(getId());
76
77 DefaultConnectionEndPoint mObj = new DefaultConnectionEndPoint();
78
79 ModelObjectId mId = ModelObjectId.builder()
80 .addChild(DefaultContext.class)
hirokid8fd7862018-10-09 15:24:24 +090081 .addChild(DefaultConnectivityContext.class)
hirokif4ed5212018-05-26 22:39:38 -070082 .addChild(DefaultConnection.class, key)
83 .build();
84
85 return DefaultModelObjectData.builder()
86 .addModelObject(mObj)
87 .identifier(mId)
88 .build();
89 }
90
91 public TapiConnectionHandler addCep(ConnectionEndPoint cep) {
92 obj.addToConnectionEndPoint(cep);
93 return this;
94 }
95
96 public TapiConnectionHandler addLowerConnection(DefaultConnection connection) {
97 DefaultLowerConnection lowerConnection = new DefaultLowerConnection();
hirokid8fd7862018-10-09 15:24:24 +090098 lowerConnection.connectionUuid(connection.uuid());
hirokif4ed5212018-05-26 22:39:38 -070099 obj.addToLowerConnection(lowerConnection);
100 return this;
101 }
102
103 public TapiConnectionHandler addRoute(DefaultRoute route) {
104 obj.addToRoute(route);
105 return this;
106 }
107
hirokifca084b2018-06-02 08:29:42 -0700108 public List<ConnectionEndPoint> getCeps() {
109 return obj.connectionEndPoint();
110 }
111
hirokif4ed5212018-05-26 22:39:38 -0700112 public List<TapiConnectionHandler> getLowerConnections() {
113
114 try {
115 return obj.lowerConnection().stream()
hirokid8fd7862018-10-09 15:24:24 +0900116 .map(LowerConnection::connectionUuid)
hirokif4ed5212018-05-26 22:39:38 -0700117 .map(id -> {
118 TapiConnectionHandler handler = new TapiConnectionHandler();
119 handler.setId(Uuid.fromString(id.toString()));
120 return handler;
121 }).collect(Collectors.toList());
122 } catch (NullPointerException e) {
123 return Collections.emptyList();
124 }
125 }
126}