1 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 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 39 public static String OPERATION_FIELD = "operation"; 40 41 46 public static RightsRel getBuilder() { 47 return (RightsRel) MMBase.getMMBase().getBuilder("rightsrel"); 48 } 49 50 public String getGUIIndicator(MMObjectNode node) { 52 return node.getStringValue(OPERATION_FIELD) + " " + super.getGUIIndicator(node); 53 } 54 55 58 public void setDefaults(MMObjectNode node) { 59 node.setValue(OPERATION_FIELD, Operation.READ.toString()); 61 super.setDefaults(node); 62 } 63 64 65 66 MMObjectNode getNewNode(String 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 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 92 public boolean setValue(MMObjectNode node, String fieldName) { 93 if (!fieldName.equals(OPERATION_FIELD)) super.setValue(node, fieldName); 95 96 String value = (String ) 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 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 (msg); 111 } 112 } 113 | Popular Tags |