View Javadoc

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]; //argv[0] is "example"
23  
24           String registryFileName = registryName + ".reg";
25           String deadUsersFileName = registryName + ".deadusers";
26  
27  //
28  //      Attempt to open the input file from which the list of users to
29  //      be deleted is to be read.
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  //         Convert the input file into a vector of individual lines.
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  //         Create a registry manager to which the new entries will be
51  //         written.
52  
53              RegistryManager reg = new RegistryManager(registryName);
54  
55              DataItemRecord itemRec = new DataItemRecord();
56  
57  //
58  //         Loop through the lines read from the input file.
59  
60              for (int loop = 0; loop < inputLines.size(); loop++)
61              {  String user = (String)inputLines.get(loop);
62  
63  //
64  //            Lookup all the entries for this user in the registry and
65  //            proceed if some entries were found.
66  
67                 String query = user + "*";
68  
69                 Vector entries = reg.lookupDataItemRecords(query);
70                 if (entries.size() > 0)
71                 {  boolean deleteOk = true;
72  
73  //
74  //               Examine every entry and check that it is a container.
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  //               Proceed to delete the user if all his entries were
92  //               containers.
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 //         Write the registry file to disk.
137 
138             reg.rewriteRegistryFile();
139 
140 //
141 //         Close the input file.
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 }