Hi Sergiu,
I am not so sure about the second part, about the delete method on
DeletedDocuments.
In my view it is better to have a method for the RecycleBin like empty()
that removes all DeletedDocuments and where it can be implemented also a
backup system.
For example with delete method implemented in DeletedDocument API you might
call delete twice on the same document reference... by mistake or not...
#set($mydoc = $xwiki.getDocument("MySpace.MyDocument"))
## MyDocument goes into Recycle Bin
#set($ok = $mydoc.delete())
## MyDocument removed forever... oups.. it did it again :)
#set($ok = $mydoc.delete())
With delete method.. you have to check if $xwiki.getDocument returns a
reference to Document or a reference to DeletedDocument and as we all know
programmers tend to be lazy :)... so better throw an exception than ending
up with no undo....
Maybe would be better to have it from $xwiki.emptyTrash() or
$xwiki.emptyRecycleBin() or $xwiki.deleteFromTrash($docFullName) /
$xwiki.deleteFromRecycleBin($docFullName)
On Wed, Jan 6, 2010 at 1:27 PM, Sergiu Dumitriu <sergiu(a)xwiki.com> wrote:
Hi devs,
In order to solve the ancient XWIKI-37 (Deleted attachments not
accessible via document history) and XWIKI-2254 (Attachment recycle
bin), we need an API for accessing and handling deleted attachments.
Note that the functionality already exists, it only needs to be
exposed.
I have implemented an API similar to the one for deleted documents:
(a) the class com.xpn.xwiki.api.DeletedAttachment:
- public DeletedAttachment(com.xpn.xwiki.doc.DeletedAttachment,
XWikiContext);
- public String getFilename();
- public String getDocName();
- public long getDocId();
- public Date getDate();
- public String getDeleter();
- public long getId();
- public boolean canUndelete();
- public boolean canDelete();
- public com.xpn.xwiki.doc.DeletedAttachment getDeletedAttachment();
- public Attachment getAttachment();
(b) 3 getDeletedAttachment(s) methods in com.xpn.xwiki.api.XWiki:
- public List<DeletedAttachment> getDeletedAttachments(String docName);
- public List<DeletedAttachment> getDeletedAttachments(String
docName, String filename);
- public DeletedAttachment getDeletedAttachment(String docName,
String filename, String id);
In addition, I need to find the right place for a delete() method.
Since there was no delete() method for deleted documents either, I'd
propose to:
(c) add delete() to the DeletedAttachment and DeletedDocument API classes.
The alternative is to add it to the XWiki class.
I know that the old API should rarely be changed, since it is going to
be replaced by the new model, but I think that this change is OK
because:
* I don't think the old API is going to be removed that soon
* The change is not dangerous because it only adds new stuff, and does
not modify or remove anything
* The added functionality is very similar to the existing one for
deleted documents, so it doesn't really add new stuff, it adds missing
stuff that should have already been there for a long time.
* It would be nice for our users to be able to manage deleted
attachments now, not much later when the new model is fully adopted.
To sum up, I'm +1 for:
1) adding the API for deleted attachments ( see above (a) and (b) )
2) adding a delete() method to the DeletedAttachment and
DeletedDocument API classes (c).
--
Sergiu Dumitriu
http://purl.org/net/sergiu/
_______________________________________________
devs mailing list
devs(a)xwiki.org
http://lists.xwiki.org/mailman/listinfo/devs