a8c0690f3aeb3a306563f8963b659f989b84f82a
[aaf/authz.git] / cadi / core / src / main / java / org / onap / aaf / cadi / util / UserChainManip.java
1 /**
2  * ============LICENSE_START====================================================
3  * org.onap.aaf
4  * ===========================================================================
5  * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
6  * ===========================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END====================================================
19  *
20  */
21
22 package org.onap.aaf.cadi.util;
23
24 import org.onap.aaf.cadi.UserChain;
25
26 public class UserChainManip {
27         /** 
28             Build an element in the correct format for UserChain.
29                 Format:<APP>:<ID>:<protocol>[:AS][,<APP>:<ID>:<protocol>]*
30                 @see UserChain
31         */ 
32         public static StringBuilder build(StringBuilder sb, String app, String id, UserChain.Protocol proto, boolean as) {
33                 boolean mayAs;
34                 if(!(mayAs=sb.length()==0)) {
35                         sb.append(',');
36                 }
37                 sb.append(app);
38                 sb.append(':');
39                 sb.append(id);
40                 sb.append(':');
41                 sb.append(proto.name());
42                 if(as && mayAs) {
43                         sb.append(":AS");
44                 }
45                 return sb;
46         }
47         
48         public static String idToNS(String id) {
49                 if(id==null) {
50                         return "";
51                 } else {
52                         StringBuilder sb = new StringBuilder();
53                         char c;
54                         int end;
55                         boolean first = true;
56                         for(int idx = end = id.length()-1;idx>=0;--idx) {
57                                 if((c = id.charAt(idx))=='@' || c=='.')  {
58                                         if(idx<end) {
59                                                 if(first) {
60                                                         first = false;
61                                                 } else {
62                                                         sb.append('.');
63                                                 }
64                                                 for(int i=idx+1;i<=end;++i) {
65                                                         sb.append(id.charAt(i));
66                                                 }
67                                         }
68                                         end=idx-1;
69                                         if(c=='@') {
70                                                 break;
71                                         }
72                                 }
73                         }
74                         return sb.toString();
75                 }
76         }
77 }