1 40 41 package org.dspace.eperson; 42 43 import java.lang.StringBuffer ; 44 45 import java.sql.SQLException ; 46 47 import org.apache.log4j.Logger; 48 49 import org.dspace.authorize.AuthorizeException; 50 import org.dspace.authorize.ResourcePolicy; 51 import org.dspace.content.Bitstream; 52 import org.dspace.content.Bundle; 53 import org.dspace.content.Item; 54 import org.dspace.content.WorkspaceItem; 55 import org.dspace.core.Constants; 56 import org.dspace.core.Context; 57 import org.dspace.core.LogManager; 58 import org.dspace.eperson.Group; 59 import org.dspace.storage.rdbms.TableRow; 60 import org.dspace.storage.rdbms.TableRowIterator; 61 import org.dspace.storage.rdbms.DatabaseManager; 62 63 71 public class Supervisor { 72 73 74 private static Logger log = Logger.getLogger(Supervisor.class); 75 76 77 public static int POLICY_NONE = 0; 78 79 80 public static int POLICY_EDITOR = 1; 81 82 83 public static int POLICY_OBSERVER = 2; 84 85 86 private Supervisor() 87 { 88 } 89 90 100 public static boolean isOrder(Context context, int wsItemID, int groupID) 101 throws SQLException  102 { 103 String query = "SELECT epersongroup2workspaceitem.* " + 104 "FROM epersongroup2workspaceitem " + 105 "WHERE epersongroup2workspaceitem.eperson_group_id = ? " + 106 "AND epersongroup2workspaceitem.workspace_item_id = ? "; 107 108 TableRowIterator tri = DatabaseManager.queryTable(context, 109 "epersongroup2workspaceitem", 110 query,groupID,wsItemID); 111 112 boolean result = tri.hasNext(); 113 tri.close(); 114 return result; 115 } 116 117 126 public static void remove(Context context, int wsItemID, int groupID) 127 throws SQLException , AuthorizeException 128 { 129 WorkspaceItem wsItem = WorkspaceItem.find(context, wsItemID); 131 Group group = Group.find(context, groupID); 132 133 String query = "DELETE FROM epersongroup2workspaceitem " + 135 "WHERE workspace_item_id = ? "+ 136 "AND eperson_group_id = ? "; 137 138 DatabaseManager.updateQuery(context, query, wsItemID, groupID); 139 140 Item item = wsItem.getItem(); 142 item.removeGroupPolicies(group); 143 } 144 145 150 public static void removeRedundant(Context context) 151 throws SQLException  152 { 153 String query = "DELETE FROM epersongroup2workspaceitem " + 158 "WHERE NOT EXISTS ( " + 159 "SELECT 1 FROM workspaceitem WHERE workspace_item_id " + 160 "= epersongroup2workspaceitem.workspace_item_id " + 161 ") OR NOT EXISTS ( " + 162 "SELECT 1 FROM epersongroup WHERE eperson_group_id " + 163 "= epersongroup2workspaceitem.eperson_group_id " + 164 ")"; 165 166 DatabaseManager.updateQuery(context, query); 167 } 168 169 177 public static void add(Context context, int groupID, int wsItemID, int policy) 178 throws SQLException , AuthorizeException 179 { 180 TableRow row = DatabaseManager.create(context, 183 "epersongroup2workspaceitem"); 184 row.setColumn("workspace_item_id", wsItemID); 185 row.setColumn("eperson_group_id", groupID); 186 DatabaseManager.update(context,row); 187 188 if (policy != POLICY_NONE) 191 { 192 WorkspaceItem wsItem = WorkspaceItem.find(context, wsItemID); 193 Item item = wsItem.getItem(); 194 Group group = Group.find(context, groupID); 195 196 if (policy == POLICY_EDITOR) 199 { 200 ResourcePolicy r = ResourcePolicy.create(context); 201 r.setResource(item); 202 r.setGroup(group); 203 r.setAction(Constants.READ); 204 r.update(); 205 206 r = ResourcePolicy.create(context); 207 r.setResource(item); 208 r.setGroup(group); 209 r.setAction(Constants.WRITE); 210 r.update(); 211 212 r = ResourcePolicy.create(context); 213 r.setResource(item); 214 r.setGroup(group); 215 r.setAction(Constants.ADD); 216 r.update(); 217 218 } 219 else if (policy == POLICY_OBSERVER) 220 { 221 ResourcePolicy r = ResourcePolicy.create(context); 222 r.setResource(item); 223 r.setGroup(group); 224 r.setAction(Constants.READ); 225 r.update(); 226 } 227 } 228 } 229 230 } 231
| Popular Tags
|