96e57ecf3357c479a802584cf4c7fae125863a5d
[iot2.git] / iotjava / iotpolicy / tree / EnumDecl.java
1 package iotpolicy.tree;
2
3 import java.util.ArrayList;
4 import java.util.HashMap;
5 import java.util.List;
6 import java.util.Map;
7 import java.util.Set;
8
9
10 /** Class EnumDecl is a data structure for enumeration
11  *  declaration section in the policy file.
12  *
13  * @author      Rahmadi Trimananda <rahmadi.trimananda @ uci.edu>
14  * @version     1.0
15  * @since       2016-11-11
16  */
17 public class EnumDecl extends Declaration {
18
19         /**
20          * A "enum" declaration:
21          *              enum Enum {
22          *
23          *                      APPLE,
24          *                      ORANGE,
25          *                      GRAPE
26          *              } 
27          * In this data structure we will record its enum name, i.e. Enum
28          *              and its members.
29          */
30
31         /**
32          * Class properties
33          */
34         // Members of enum (can be more than 1 declaration
35         private Map<String, List<String>> mapEnumMembers;
36
37         /**
38          * Class constructors
39          */
40         public EnumDecl() {
41
42                 super();
43                 mapEnumMembers = new HashMap<String, List<String>>();
44         }
45
46
47         public EnumDecl(String _origInt) {
48
49                 super(_origInt);
50                 mapEnumMembers = new HashMap<String, List<String>>();
51         }
52
53
54         /**
55          * addNewMember() adds a new member into the list, e.g. MELON into the list of APPLE, ORANGE, and GRAPE
56          */
57         public void addNewMember(String enumType, String newMember) {
58
59                 if (mapEnumMembers.containsKey(enumType)) {
60                 // Existing enum declaration
61                         List<String> memberList = mapEnumMembers.get(enumType);
62                         memberList.add(newMember);
63                 } else {
64                 // New declaration
65                         List<String> newMemberList = new ArrayList<String>();
66                         newMemberList.add(enumType);
67                         mapEnumMembers.put(enumType, newMemberList);
68                 }
69         }
70
71
72         /**
73          * getEnumDeclarations() gets list of enum declarations
74          */
75         public Set<String> getEnumDeclarations() {
76
77                 return mapEnumMembers.keySet();
78         }
79
80
81         /**
82          * getMembers() gets list of enum members
83          */
84         public List<String> getMembers(String enumType) {
85
86                 return mapEnumMembers.get(enumType);
87         }
88 }