1 package org.astrogrid.mySpace.mySpaceDemo;
2
3 import java.io.*;
4 import java.util.*;
5
6 import org.astrogrid.mySpace.mySpaceManager.*;
7
8 /***
9 * Minimal program to delete users from a MySpace registry.
10 * For each user the program checks that the only remaining entries for
11 * the user in the registry are containers (ie. there are no VOTables
12 * or other files). If this condition is satisfied it deletes all the
13 * entries for the user from the registry.
14 *
15 * @author A C Davenhall (Edinburgh)
16 * @version Iteration 3.
17 */
18
19 class DeleteUsersFromRegistry
20 { public static void main (String argv[])
21 { if (argv.length == 1)
22 { String registryName = argv[0];
23
24 String registryFileName = registryName + ".reg";
25 String deadUsersFileName = registryName + ".deadusers";
26
27
28
29
30
31 try
32 { File deadUsersFile = new File(deadUsersFileName);
33 FileReader in = new FileReader(deadUsersFile);
34 char c[] = new char[(int)deadUsersFile.length()];
35 in.read(c);
36 String s = new String(c);
37
38
39
40
41 Vector inputLines = new Vector();
42
43 StringTokenizer token = new StringTokenizer(s, "\n");
44
45 while(token.hasMoreTokens())
46 { inputLines.add(token.nextToken());
47 }
48
49
50
51
52
53 RegistryManager reg = new RegistryManager(registryName);
54
55 DataItemRecord itemRec = new DataItemRecord();
56
57
58
59
60 for (int loop = 0; loop < inputLines.size(); loop++)
61 { String user = (String)inputLines.get(loop);
62
63
64
65
66
67 String query = user + "*";
68
69 Vector entries = reg.lookupDataItemRecords(query);
70 if (entries.size() > 0)
71 { boolean deleteOk = true;
72
73
74
75
76 for (int currentEntry = 0; currentEntry < entries.size();
77 currentEntry++)
78 { itemRec =
79 (DataItemRecord)entries.elementAt(currentEntry);
80
81 if (itemRec.getType() != DataItemRecord.CON)
82 { deleteOk = false;
83
84 System.out.println(" Extant dataHolder: " +
85 itemRec.getDataItemName() +
86 " belonging to user " + user + ".");
87 }
88 }
89
90
91
92
93
94 if (deleteOk)
95 { boolean allRemoved = true;
96
97 for (int currentEntry = 0; currentEntry < entries.size();
98 currentEntry++)
99 { itemRec =
100 (DataItemRecord)entries.elementAt(currentEntry);
101
102 int itemRecID = itemRec.getDataItemID();
103 boolean deleteStatus =
104 reg.deleteDataItemRecord(itemRecID);
105
106 if (!deleteStatus)
107 { allRemoved = false;
108
109 System.out.println(
110 " Failed to delete container " +
111 itemRec.getDataItemName() +
112 " belonging to user " + user + ".");
113 }
114 }
115
116 if (allRemoved)
117 { System.out.println(" Deleted user " + user + ".");
118 }
119 else
120 { System.out.println(" *** Failed to delete " +
121 user + " cleanly.");
122 }
123 }
124 else
125 { System.out.println(" *** Could not delete user " +
126 user + "; dataHolders still exist.");
127 }
128 }
129 else
130 { System.out.println(" *** No entries found for user "
131 + user + ".");
132 }
133 }
134
135
136
137
138 reg.rewriteRegistryFile();
139
140
141
142
143 in.close();
144 }
145 catch (java.io.IOException ex)
146 { System.out.println(
147 "Failed to read the file of dead users " +
148 deadUsersFileName);
149
150 ex.printStackTrace();
151 }
152 }
153 else
154 { System.out.println("Usage:-");
155 System.out.println(" java DeleteUsersFromRegistry registryName");
156 }
157 }
158 }