KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > mmbase > security > implementation > cloudcontext > builders > RightsRel


1 /*
2
3 This software is OSI Certified Open Source Software.
4 OSI Certified is a certification mark of the Open Source Initiative.
5
6 The license (Mozilla version 1.0) can be read at the MMBase site.
7 See http://www.MMBase.org/license
8
9 */

10 package org.mmbase.security.implementation.cloudcontext.builders;
11
12 import org.mmbase.module.core.*;
13 import org.mmbase.security.*;
14 import org.mmbase.module.corebuilders.InsRel;
15
16 /**
17  * The rightsrel relation, connects a 'context' with a 'group'. The
18  * 'operation' field then indicates which operation is allowed because
19  * of this relation.
20  *
21  * @author Eduard Witteveen
22  * @author Pierre van Rooden
23  * @author Michiel Meeuwissen
24  * @version $Id: RightsRel.java,v 1.14 2005/10/06 14:00:42 michiel Exp $
25  */

26 public class RightsRel extends InsRel {
27
28
29     public boolean init() {
30         mmb.addLocalObserver(getTableName(), CacheInvalidator.getInstance());
31         mmb.addRemoteObserver(getTableName(), CacheInvalidator.getInstance());
32         return super.init();
33     }
34
35
36     /**
37      * The field of this relations which present the operation.
38      */

39     public static String JavaDoc OPERATION_FIELD = "operation";
40
41     /**
42      * Util method to get this Builder.
43      *
44      * @return The RightsRel MMObjectBuilder
45      */

46     public static RightsRel getBuilder() {
47         return (RightsRel) MMBase.getMMBase().getBuilder("rightsrel");
48     }
49
50     // inherited
51
public String JavaDoc getGUIIndicator(MMObjectNode node) {
52         return node.getStringValue(OPERATION_FIELD) + " " + super.getGUIIndicator(node);
53     }
54
55     /**
56      * Operation defaults to 'read'.
57      */

58     public void setDefaults(MMObjectNode node) {
59         // default -> read
60
node.setValue(OPERATION_FIELD, Operation.READ.toString());
61         super.setDefaults(node);
62     }
63
64
65
66     MMObjectNode getNewNode(String JavaDoc owner, int snumber, int dnumber, Operation operation) {
67         MMObjectNode rel = getNewNode(owner);
68         rel.setValue("snumber", snumber);
69         rel.setValue("dnumber", dnumber);
70         rel.setValue("rnumber", mmb.getRelDef().getNumberByName("grants"));
71         rel.setValue("operation", operation.toString());
72         return rel;
73     }
74
75
76     public int insert(String JavaDoc owner, MMObjectNode node) {
77
78         if(node.getStringValue("operation").equals("all")) {
79             node.setValue("operation", Operation.READ.toString());
80             getNewNode(owner, node.getIntValue("snumber"), node.getIntValue("dnumber"), Operation.WRITE).insert(owner);
81             getNewNode(owner, node.getIntValue("snumber"), node.getIntValue("dnumber"), Operation.CREATE).insert(owner);
82             getNewNode(owner, node.getIntValue("snumber"), node.getIntValue("dnumber"), Operation.CHANGE_RELATION).insert(owner);
83             getNewNode(owner, node.getIntValue("snumber"), node.getIntValue("dnumber"), Operation.DELETE).insert(owner);
84             getNewNode(owner, node.getIntValue("snumber"), node.getIntValue("dnumber"), Operation.CHANGE_CONTEXT).insert(owner);
85         }
86         return super.insert(owner, node);
87     }
88
89     /**
90      * Check on possible values for operation.
91      */

92     public boolean setValue(MMObjectNode node, String JavaDoc fieldName) {
93         // most situations, handle in inherited class
94
if (!fieldName.equals(OPERATION_FIELD)) super.setValue(node, fieldName);
95
96         // mm: not sure I like this.
97
String JavaDoc value = (String JavaDoc) node.getValue(OPERATION_FIELD);
98         if (value == null) return true;
99         if (value.equals("all")) return true;
100         if (value.equals(Operation.READ.toString())) return true;
101         if (value.equals(Operation.WRITE.toString())) return true;
102         if (value.equals(Operation.CREATE.toString())) return true;
103         if (value.equals(Operation.CHANGE_RELATION.toString())) return true;
104         if (value.equals(Operation.DELETE.toString())) return true;
105         if (value.equals(Operation.CHANGE_CONTEXT.toString())) return true;
106         String JavaDoc msg =
107             "field with name operation must contain a valid operation (value was: '" + value + "')\n" +
108             "valid operations are: all, " + Operation.READ + ", " + Operation.WRITE + ", " + Operation.CREATE +
109             ", " + Operation.CHANGE_RELATION + ", " + Operation.DELETE + ", " + Operation.CHANGE_CONTEXT;
110         throw new RuntimeException JavaDoc(msg);
111     }
112 }
113
Popular Tags