Author: batosai
Date: 2008-09-14 19:27:04 +0000 (Sun, 14 Sep 2008)
New Revision: 22660

Modified:
   trunk/plugins/WoT/src/plugins/WoT/WebInterface.java
   trunk/plugins/WoT/src/plugins/WoT/WoT.java
Log:
Added the possibility to delete an OwnIdentity (bug #2578)

Modified: trunk/plugins/WoT/src/plugins/WoT/WebInterface.java
===================================================================
--- trunk/plugins/WoT/src/plugins/WoT/WebInterface.java 2008-09-14 19:26:16 UTC 
(rev 22659)
+++ trunk/plugins/WoT/src/plugins/WoT/WebInterface.java 2008-09-14 19:27:04 UTC 
(rev 22660)
@@ -115,6 +115,10 @@
                                editForm.addChild("input", new String[] { 
"type", "name", "value" }, new String[] { "hidden", "id", 
id.getRequestURI().toString() });
                                editForm.addChild("input", new String[] { 
"type", "name", "value" }, new String[] { "submit", "edit", "Details" });

+                               HTMLNode deleteForm = 
pr.addFormChild(manageCell, SELF_URI, "deleteIdentity");
+                               deleteForm.addChild("input", new String[] { 
"type", "name", "value" }, new String[] { "hidden", "page", "deleteIdentity" });
+                               deleteForm.addChild("input", new String[] { 
"type", "name", "value" }, new String[] { "hidden", "id", id.getId() });
+                               deleteForm.addChild("input", new String[] { 
"type", "name", "value" }, new String[] { "submit", "delete", "Delete" });
                        }
                }

@@ -448,4 +452,27 @@
                contentNode.addChild(box);
                return pageNode.generate();
        }
+
+       public String makeDeleteIdentityPage(String id) throws 
DuplicateIdentityException, UnknownIdentityException {
+               Identity identity = Identity.getById(db, id);
+               
+               HTMLNode pageNode = getPageNode();
+               HTMLNode contentNode = pm.getContentNode(pageNode);
+               HTMLNode box = pm.getInfobox("Confirm identity deletion");
+               HTMLNode boxContent = pm.getContentNode(box);
+               
+               boxContent.addChild(new HTMLNode("p", "You are about to delete 
identity '" + identity.getNickName() + "', are you sure ?"));
+               
+               if(identity instanceof OwnIdentity)
+                       boxContent.addChild(new HTMLNode("p", "You might want 
to backup its keys for later use..."));
+               
+               HTMLNode confirmForm = pr.addFormChild(boxContent, SELF_URI, 
"deleteIdentity2");
+               
+               confirmForm.addChild("input", new String[] { "type", "name", 
"value" }, new String[] { "hidden", "page", "deleteIdentity2" });
+               confirmForm.addChild("input", new String[] { "type", "name", 
"value" }, new String[] { "hidden", "id", identity.getId() });
+               confirmForm.addChild("input", new String[] { "type", "name", 
"value" }, new String[] { "submit", "confirm", "Confirm !" });
+               
+               contentNode.addChild(box);
+               return pageNode.generate();
+       }
 }

Modified: trunk/plugins/WoT/src/plugins/WoT/WoT.java
===================================================================
--- trunk/plugins/WoT/src/plugins/WoT/WoT.java  2008-09-14 19:26:16 UTC (rev 
22659)
+++ trunk/plugins/WoT/src/plugins/WoT/WoT.java  2008-09-14 19:27:04 UTC (rev 
22660)
@@ -191,6 +191,13 @@
                                
restoreIdentity(request.getPartAsString("requestURI", 1024), 
request.getPartAsString("insertURI", 1024));
                                return web.makeOwnIdentitiesPage();
                        }
+                       else 
if(request.getPartAsString("page",50).equals("deleteIdentity")) {
+                               return 
web.makeDeleteIdentityPage(request.getPartAsString("id", 1024));
+                       }                       
+                       else 
if(request.getPartAsString("page",50).equals("deleteIdentity2")) {
+                               deleteIdentity(request.getPartAsString("id", 
1024));
+                               return web.makeOwnIdentitiesPage();
+                       }                       
                        else {
                                return web.makeHomePage();
                        }
@@ -200,6 +207,28 @@
                }
        }

+       private void deleteIdentity(String id) throws 
DuplicateIdentityException, UnknownIdentityException, DuplicateScoreException, 
DuplicateTrustException {
+               Identity identity = Identity.getById(db, id);
+               
+               // Remove all scores
+               ObjectSet<Score> scores = identity.getScores(db);
+               while (scores.hasNext()) db.delete(scores.next());
+               
+               // Remove all received trusts
+               ObjectSet<Trust> receivedTrusts = 
identity.getReceivedTrusts(db);
+               while (receivedTrusts.hasNext()) 
db.delete(receivedTrusts.next());
+               
+               // Remove all given trusts and update trustees' scores
+               ObjectSet<Trust> givenTrusts = identity.getGivenTrusts(db);
+               while (givenTrusts.hasNext()) {
+                       Trust givenTrust = givenTrusts.next();
+                       db.delete(givenTrust);
+                       givenTrust.getTrustee().updateScore(db);
+               }
+               
+               db.delete(identity);
+       }
+
        private void restoreIdentity(String requestURI, String insertURI) 
throws InvalidParameterException, MalformedURLException, Db4oIOException, 
DatabaseClosedException, DuplicateScoreException, DuplicateIdentityException, 
DuplicateTrustException {

                OwnIdentity id;


Reply via email to