21ea63e535da9fd16f3ae5add6f833dfe8407c95
[aaf/authz.git] / authz-defOrg / src / main / java / com / osaaf / defOrg / DefaultOrgIdentity.java
1 /*******************************************************************************\r
2  * ============LICENSE_START====================================================\r
3  * * org.onap.aaf\r
4  * * ===========================================================================\r
5  * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.\r
6  * * ===========================================================================\r
7  * * Licensed under the Apache License, Version 2.0 (the "License");\r
8  * * you may not use this file except in compliance with the License.\r
9  * * You may obtain a copy of the License at\r
10  * * \r
11  *  *      http://www.apache.org/licenses/LICENSE-2.0\r
12  * * \r
13  *  * Unless required by applicable law or agreed to in writing, software\r
14  * * distributed under the License is distributed on an "AS IS" BASIS,\r
15  * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
16  * * See the License for the specific language governing permissions and\r
17  * * limitations under the License.\r
18  * * ============LICENSE_END====================================================\r
19  * *\r
20  * * ECOMP is a trademark and service mark of AT&T Intellectual Property.\r
21  * *\r
22  ******************************************************************************/\r
23 package com.osaaf.defOrg;\r
24 \r
25 import java.io.IOException;\r
26 import java.util.List;\r
27 \r
28 import com.att.authz.env.AuthzTrans;\r
29 import com.att.authz.local.AbsData.Reuse;\r
30 import com.att.authz.org.Organization;\r
31 import com.att.authz.org.Organization.Identity;\r
32 import com.att.authz.org.OrganizationException;\r
33 import com.att.cadi.config.Config;\r
34 import com.osaaf.defOrg.Identities.Data;\r
35 \r
36 /**\r
37  * Org Users are essential representations of Identities within the Org.  Since this is a highly individual \r
38  * thing for most Orgs, i.e. some use LDAP, some need feed, some use something else, this object will allow\r
39  * the Organization to connect to their own Identity systems...\r
40  * \r
41  *\r
42  */\r
43 public class DefaultOrgIdentity implements Identity {\r
44     private final static int TIMEOUT = Integer.parseInt(Config.AAF_CONN_TIMEOUT_DEF);\r
45         \r
46         private DefaultOrg org;\r
47         private Data identity;\r
48         private Identity owner;\r
49 \r
50         public DefaultOrgIdentity(AuthzTrans trans, String key, DefaultOrg dorg) throws OrganizationException {\r
51                 org = dorg;\r
52                 identity=null;\r
53                 try {\r
54                         org.identities.open(trans, TIMEOUT);\r
55                         try {\r
56                                 Reuse r = org.identities.reuse();\r
57                                 identity = org.identities.find(key, r);\r
58                                 if(identity==null) {\r
59                                         identity = Identities.NO_DATA;\r
60                                 } else {\r
61                                         if("a".equals(identity.status)) {\r
62                                                 owner = new DefaultOrgIdentity(trans,identity.responsibleTo,org);\r
63                                         } else {\r
64                                                 owner = null;\r
65                                         }\r
66                                 }\r
67                         } finally {\r
68                                 org.identities.close(trans);\r
69                         }\r
70                 } catch (IOException e) {\r
71                         throw new OrganizationException(e);\r
72                 }\r
73         }\r
74         \r
75         @Override\r
76         public boolean equals(Object b) {\r
77                 if(b instanceof DefaultOrgIdentity) {\r
78                         return identity.id.equals(((DefaultOrgIdentity)b).identity.id);\r
79                 }\r
80                 return false;\r
81         }\r
82 \r
83         @Override\r
84         public String id() {\r
85                 return identity.id;\r
86         }\r
87 \r
88         @Override\r
89         public String fullID() {\r
90                 return identity.id+'@'+org.getDomain();\r
91         }\r
92 \r
93         @Override\r
94         public String type() {\r
95                 switch(identity.status) {\r
96                         case "e": return DefaultOrg.Types.Employee.name();\r
97                         case "c": return DefaultOrg.Types.Contractor.name();\r
98                         case "a": return DefaultOrg.Types.Application.name();\r
99                         case "n": return DefaultOrg.Types.NotActive.name();\r
100                         default:\r
101                                 return "Unknown";\r
102                 }\r
103         }\r
104 \r
105         @Override\r
106         public String responsibleTo() {\r
107                 return identity.responsibleTo;\r
108         }\r
109 \r
110         @Override\r
111         public List<String> delegate() {\r
112                 //NOTE:  implement Delegate system, if desired\r
113                 return DefaultOrg.NULL_DELEGATES;\r
114         }\r
115 \r
116         @Override\r
117         public String email() {\r
118                 return identity.email;\r
119         }\r
120 \r
121         @Override\r
122         public String fullName() {\r
123                 return identity.name;\r
124         }\r
125 \r
126         @Override\r
127         public boolean isResponsible() {\r
128                 return "e".equals(identity.status); // Assume only Employees are responsible for Resources.  \r
129         }\r
130 \r
131         @Override\r
132         public boolean isFound() {\r
133                 return identity!=null;\r
134         }\r
135 \r
136         @Override\r
137         public Identity owner() throws OrganizationException {\r
138                 return owner;\r
139         }\r
140 \r
141         @Override\r
142         public Organization org() {\r
143                 return org;\r
144         }\r
145 \r
146 }\r