1 40 package org.dspace.authorize; 41 42 import java.sql.SQLException ; 44 import java.util.Iterator ; 45 import java.util.List ; 46 47 import org.dspace.content.Collection; 48 import org.dspace.content.Community; 49 import org.dspace.content.DSpaceObject; 50 import org.dspace.core.Constants; 51 import org.dspace.core.Context; 52 import org.dspace.eperson.Group; 53 54 62 public class FixDefaultPolicies 63 { 64 67 public static void main(String [] argv) throws Exception 68 { 69 Context c = new Context(); 70 71 c.setIgnoreAuthorization(true); 73 74 Collection[] collections = Collection.findAll(c); 78 79 for (int i = 0; i < collections.length; i++) 80 { 81 Collection t = collections[i]; 82 83 System.out.println("Collection " + t + " " + t.getMetadata("name")); 84 85 if (checkForPolicy(c, t, Constants.READ)) 87 { 88 System.out.println("\tFound READ policies!"); 89 } 90 else 91 { 92 System.out.println("\tNo READ policy found, adding anonymous."); 93 addAnonymousPolicy(c, t, Constants.READ); 94 } 95 96 if (checkForPolicy(c, t, Constants.DEFAULT_ITEM_READ)) 97 { 98 System.out.println("\tFound DEFAULT_ITEM_READ policies!"); 99 } 100 else 101 { 102 System.out 103 .println("\tNo DEFAULT_ITEM_READ policy found, adding anonymous."); 104 addAnonymousPolicy(c, t, Constants.DEFAULT_ITEM_READ); 105 } 106 107 if (checkForPolicy(c, t, Constants.DEFAULT_BITSTREAM_READ)) 108 { 109 System.out.println("\tFound DEFAULT_BITSTREAM_READ policies!"); 110 } 111 else 112 { 113 System.out 114 .println("\tNo DEFAULT_BITSTREAM_READ policy found, adding anonymous."); 115 addAnonymousPolicy(c, t, Constants.DEFAULT_BITSTREAM_READ); 116 } 117 } 118 119 Community[] communities = Community.findAll(c); 121 122 for (int i = 0; i < communities.length; i++) 123 { 124 Community t = communities[i]; 125 126 System.out.println("Community " + t + " " + t.getMetadata("name")); 127 128 if (checkForPolicy(c, t, Constants.READ)) 130 { 131 System.out.println("\tFound READ policies!"); 132 } 133 else 134 { 135 System.out.println("\tNo READ policy found, adding anonymous."); 136 addAnonymousPolicy(c, t, Constants.READ); 137 } 138 } 139 140 c.complete(); 141 } 142 143 146 private static boolean checkForPolicy(Context c, DSpaceObject t, 147 int myaction) throws SQLException 148 { 149 List policies = AuthorizeManager 151 .getPoliciesActionFilter(c, t, myaction); 152 Iterator i = policies.iterator(); 153 154 return i.hasNext(); 155 } 156 157 161 private static void addAnonymousPolicy(Context c, DSpaceObject t, 162 int myaction) throws SQLException , AuthorizeException 163 { 164 Group anonymousGroup = Group.find(c, 0); 166 167 ResourcePolicy myPolicy = ResourcePolicy.create(c); 169 myPolicy.setResource(t); 170 myPolicy.setAction(myaction); 171 myPolicy.setGroup(anonymousGroup); 172 myPolicy.update(); 173 } 174 } 175 | Popular Tags |