[AAF-21] Initial code import
[aaf/authz.git] / authz-cass / src / main / java / com / att / dao / aaf / cass / Namespace.java
diff --git a/authz-cass/src/main/java/com/att/dao/aaf/cass/Namespace.java b/authz-cass/src/main/java/com/att/dao/aaf/cass/Namespace.java
new file mode 100644 (file)
index 0000000..fa61372
--- /dev/null
@@ -0,0 +1,152 @@
+/*******************************************************************************\r
+ * ============LICENSE_START====================================================\r
+ * * org.onap.aai\r
+ * * ===========================================================================\r
+ * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.\r
+ * * Copyright © 2017 Amdocs\r
+ * * ===========================================================================\r
+ * * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * * you may not use this file except in compliance with the License.\r
+ * * You may obtain a copy of the License at\r
+ * * \r
+ *  *      http://www.apache.org/licenses/LICENSE-2.0\r
+ * * \r
+ *  * Unless required by applicable law or agreed to in writing, software\r
+ * * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * * See the License for the specific language governing permissions and\r
+ * * limitations under the License.\r
+ * * ============LICENSE_END====================================================\r
+ * *\r
+ * * ECOMP is a trademark and service mark of AT&T Intellectual Property.\r
+ * *\r
+ ******************************************************************************/\r
+package com.att.dao.aaf.cass;\r
+\r
+import java.io.ByteArrayOutputStream;\r
+import java.io.DataInputStream;\r
+import java.io.DataOutputStream;\r
+import java.io.IOException;\r
+import java.nio.ByteBuffer;\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+import java.util.Map.Entry;\r
+\r
+import com.att.cssa.rserv.Pair;\r
+import com.att.dao.Bytification;\r
+import com.att.dao.CassDAOImpl;\r
+import com.att.dao.Loader;\r
+\r
+\r
+public class Namespace implements Bytification {\r
+       public static final int MAGIC=250935515;\r
+       public static final int VERSION=1;\r
+       public static final int BUFF_SIZE=48;\r
+\r
+       public String name;\r
+       public List<String> owner;\r
+       public List<String> admin;\r
+       public List<Pair<String,String>> attrib;\r
+       public String description;\r
+       public Integer type;\r
+       public String parent;\r
+       public Namespace() {}\r
+       \r
+       public Namespace(NsDAO.Data ndd) {\r
+               name = ndd.name;\r
+               description = ndd.description;\r
+               type = ndd.type;\r
+               parent = ndd.parent;\r
+               if(ndd.attrib!=null && !ndd.attrib.isEmpty()) {\r
+                       attrib = new ArrayList<Pair<String,String>>();\r
+                       for( Entry<String, String> entry : ndd.attrib.entrySet()) {\r
+                               attrib.add(new Pair<String,String>(entry.getKey(),entry.getValue()));\r
+                       }\r
+               }\r
+       }\r
+       \r
+       public Namespace(NsDAO.Data ndd,List<String> owner, List<String> admin) {\r
+               name = ndd.name;\r
+               this.owner = owner;\r
+               this.admin = admin;\r
+               description = ndd.description;\r
+               type = ndd.type;\r
+               parent = ndd.parent;\r
+               if(ndd.attrib!=null && !ndd.attrib.isEmpty()) {\r
+                       attrib = new ArrayList<Pair<String,String>>();\r
+                       for( Entry<String, String> entry : ndd.attrib.entrySet()) {\r
+                               attrib.add(new Pair<String,String>(entry.getKey(),entry.getValue()));\r
+                       }\r
+               }\r
+       }\r
+\r
+       public NsDAO.Data data() {\r
+               NsDAO.Data ndd = new NsDAO.Data();\r
+               ndd.name = name;\r
+               ndd.description = description;\r
+               ndd.parent = parent;\r
+               ndd.type = type;\r
+               return ndd;\r
+       }\r
+\r
+       @Override\r
+       public ByteBuffer bytify() throws IOException {\r
+               ByteArrayOutputStream baos = new ByteArrayOutputStream();\r
+               DataOutputStream os = new DataOutputStream(baos);\r
+\r
+               Loader.writeHeader(os,MAGIC,VERSION);\r
+               Loader.writeString(os, name);\r
+               os.writeInt(type);\r
+               Loader.writeStringSet(os,admin);\r
+               Loader.writeStringSet(os,owner);\r
+               Loader.writeString(os,description);\r
+               Loader.writeString(os,parent);\r
+\r
+               return ByteBuffer.wrap(baos.toByteArray());\r
+       }\r
+\r
+       @Override\r
+       public void reconstitute(ByteBuffer bb) throws IOException {\r
+               DataInputStream is = CassDAOImpl.toDIS(bb);\r
+               /*int version = */Loader.readHeader(is,MAGIC,VERSION);\r
+               // If Version Changes between Production runs, you'll need to do a switch Statement, and adequately read in fields\r
+               \r
+               byte[] buff = new byte[BUFF_SIZE];\r
+               name = Loader.readString(is, buff);\r
+               type = is.readInt();\r
+               admin = Loader.readStringList(is,buff);\r
+               owner = Loader.readStringList(is,buff);\r
+               description = Loader.readString(is,buff);\r
+               parent = Loader.readString(is,buff);\r
+               \r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see java.lang.Object#hashCode()\r
+        */\r
+       @Override\r
+       public int hashCode() {\r
+               return name.hashCode();\r
+       }\r
+       \r
+\r
+       /* (non-Javadoc)\r
+        * @see java.lang.Object#toString()\r
+        */\r
+       @Override\r
+       public String toString() {\r
+               return name.toString();\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see java.lang.Object#equals(java.lang.Object)\r
+        */\r
+       @Override\r
+       public boolean equals(Object arg0) {\r
+               if(arg0==null || !(arg0 instanceof Namespace)) {\r
+                       return false;\r
+               }\r
+               return name.equals(((Namespace)arg0).name);\r
+       }\r
+\r
+}\r