<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.open-xchange.com/wiki/index.php?action=history&amp;feed=atom&amp;title=Automatic_Delete_OXObjects_Per_User</id>
	<title>Automatic Delete OXObjects Per User - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.open-xchange.com/wiki/index.php?action=history&amp;feed=atom&amp;title=Automatic_Delete_OXObjects_Per_User"/>
	<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=Automatic_Delete_OXObjects_Per_User&amp;action=history"/>
	<updated>2026-06-30T22:43:52Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=Automatic_Delete_OXObjects_Per_User&amp;diff=22092&amp;oldid=prev</id>
		<title>Martin.schneider: Move to https://documentation.open-xchange.com/</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=Automatic_Delete_OXObjects_Per_User&amp;diff=22092&amp;oldid=prev"/>
		<updated>2016-06-29T13:48:57Z</updated>

		<summary type="html">&lt;p&gt;Move to https://documentation.open-xchange.com/&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 13:48, 29 June 2016&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;How to automatically delete all objects of one user&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;How to automatically delete all objects of one user&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;I just wrote the following quick&amp;amp;dirty hack to delete all objects and folders created by an OXHE User. It can be useful to clean up a context or to just delete all data from one user. The following JAVA file contains the logic which is needed to login/search/delete via the Open-Xchange [&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[&lt;/del&gt;HTTP API&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]&lt;/del&gt;].&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;I just wrote the following quick&amp;amp;dirty hack to delete all objects and folders created by an OXHE User. It can be useful to clean up a context or to just delete all data from one user. The following JAVA file contains the logic which is needed to login/search/delete via the Open-Xchange [&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;https://documentation.open-xchange.com/ &lt;/ins&gt;HTTP API].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Martin.schneider</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=Automatic_Delete_OXObjects_Per_User&amp;diff=16540&amp;oldid=prev</id>
		<title>Tierlieb at 15:58, 22 November 2013</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=Automatic_Delete_OXObjects_Per_User&amp;diff=16540&amp;oldid=prev"/>
		<updated>2013-11-22T15:58:11Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 15:58, 22 November 2013&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;I just wrote the following quick&amp;amp;dirty hack to delete all objects and folders created by an OXHE User. It can be &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;usefull &lt;/del&gt;to clean up a context or to just delete all data from &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;1 &lt;/del&gt;user. The following JAVA file contains the logic which is needed to login/search/delete via the Open-Xchange HTTP &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Json &lt;/del&gt;API&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. Which is btw. a great interface to the whole Open-Xchange System&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;How to automatically delete all objects of one user&amp;lt;/div&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;I just wrote the following quick&amp;amp;dirty hack to delete all objects and folders created by an OXHE User. It can be &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;useful &lt;/ins&gt;to clean up a context or to just delete all data from &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;one &lt;/ins&gt;user. The following JAVA file contains the logic which is needed to login/search/delete via the Open-Xchange &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[&lt;/ins&gt;HTTP API&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]]&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l466&quot;&gt;Line 466:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 468:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category: OX6]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category: OX6&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]] [[Category:Quick hack&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Tierlieb</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=Automatic_Delete_OXObjects_Per_User&amp;diff=4073&amp;oldid=prev</id>
		<title>Mheiland at 13:20, 27 June 2009</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=Automatic_Delete_OXObjects_Per_User&amp;diff=4073&amp;oldid=prev"/>
		<updated>2009-06-27T13:20:55Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 13:20, 27 June 2009&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l465&quot;&gt;Line 465:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 465:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category: OX6]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Mheiland</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=Automatic_Delete_OXObjects_Per_User&amp;diff=2000&amp;oldid=prev</id>
		<title>Cutmasta at 13:55, 7 July 2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=Automatic_Delete_OXObjects_Per_User&amp;diff=2000&amp;oldid=prev"/>
		<updated>2008-07-07T13:55:40Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 13:55, 7 July 2008&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;I just wrote the following quick hack to delete all objects and folders created by an OXHE User. It can be usefull to clean up a context or to just delete all data from 1 user. The following JAVA file contains the logic which is needed to login/search/delete via the Open-Xchange HTTP Json API. Which is btw. a great interface to the whole Open-Xchange System.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;I just wrote the following quick&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;dirty &lt;/ins&gt;hack to delete all objects and folders created by an OXHE User. It can be usefull to clean up a context or to just delete all data from 1 user. The following JAVA file contains the logic which is needed to login/search/delete via the Open-Xchange HTTP Json API. Which is btw. a great interface to the whole Open-Xchange System.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Cutmasta</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=Automatic_Delete_OXObjects_Per_User&amp;diff=1999&amp;oldid=prev</id>
		<title>Cutmasta at 13:54, 7 July 2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=Automatic_Delete_OXObjects_Per_User&amp;diff=1999&amp;oldid=prev"/>
		<updated>2008-07-07T13:54:57Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 13:54, 7 July 2008&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;I just wrote the following quick hack to delete all objects and folders created by &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;a &lt;/del&gt;OXHE User. It can be usefull to clean up a context or to just delete all data from 1 user. The following JAVA file contains the logic which is needed to login/search/delete via the Open-Xchange HTTP Json API. Which is btw. a great interface to the whole Open-Xchange System.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;I just wrote the following quick hack to delete all objects and folders created by &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;an &lt;/ins&gt;OXHE User. It can be usefull to clean up a context or to just delete all data from 1 user. The following JAVA file contains the logic which is needed to login/search/delete via the Open-Xchange HTTP Json API. Which is btw. a great interface to the whole Open-Xchange System.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Cutmasta</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=Automatic_Delete_OXObjects_Per_User&amp;diff=1998&amp;oldid=prev</id>
		<title>Cutmasta at 13:50, 7 July 2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=Automatic_Delete_OXObjects_Per_User&amp;diff=1998&amp;oldid=prev"/>
		<updated>2008-07-07T13:50:43Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 13:50, 7 July 2008&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;I just wrote &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;a &lt;/del&gt;quick hack to delete all objects and folders created by a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;user&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;This &lt;/del&gt;can usefull to clean up &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Context &lt;/del&gt;just delete all data from 1 user. The following JAVA file contains the logic which is needed to login/search/delete via the Open-Xchange HTTP Json API. Which is btw. a great interface to the whole Open-Xchange System.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;I just wrote &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;the following &lt;/ins&gt;quick hack to delete all objects and folders created by a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;OXHE User&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;It &lt;/ins&gt;can &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;be &lt;/ins&gt;usefull to clean up &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;a context or to &lt;/ins&gt;just delete all data from 1 user. The following JAVA file contains the logic which is needed to login/search/delete via the Open-Xchange HTTP Json API. Which is btw. a great interface to the whole Open-Xchange System.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Cutmasta</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=Automatic_Delete_OXObjects_Per_User&amp;diff=1997&amp;oldid=prev</id>
		<title>Cutmasta: New page: I just wrote a quick hack to delete all objects and folders created by a user. This can usefull to clean up Context just delete all data from 1 user. The following JAVA file contains the l...</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=Automatic_Delete_OXObjects_Per_User&amp;diff=1997&amp;oldid=prev"/>
		<updated>2008-07-07T13:48:56Z</updated>

		<summary type="html">&lt;p&gt;New page: I just wrote a quick hack to delete all objects and folders created by a user. This can usefull to clean up Context just delete all data from 1 user. The following JAVA file contains the l...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;I just wrote a quick hack to delete all objects and folders created by a user. This can usefull to clean up Context just delete all data from 1 user. The following JAVA file contains the logic which is needed to login/search/delete via the Open-Xchange HTTP Json API. Which is btw. a great interface to the whole Open-Xchange System.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
package com.openexchange.tools.cleaner;&lt;br /&gt;
&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import java.util.logging.Level;&lt;br /&gt;
import java.util.logging.Logger;&lt;br /&gt;
import org.apache.commons.httpclient.HttpClient;&lt;br /&gt;
import org.apache.commons.httpclient.HttpException;&lt;br /&gt;
import org.apache.commons.httpclient.methods.GetMethod;&lt;br /&gt;
import org.apache.commons.httpclient.methods.PostMethod;&lt;br /&gt;
import org.apache.commons.httpclient.methods.PutMethod;&lt;br /&gt;
import org.apache.commons.httpclient.methods.RequestEntity;&lt;br /&gt;
import org.apache.commons.httpclient.methods.StringRequestEntity;&lt;br /&gt;
import org.apache.commons.httpclient.protocol.Protocol;&lt;br /&gt;
import org.apache.commons.logging.Log;&lt;br /&gt;
import org.apache.commons.logging.LogFactory;&lt;br /&gt;
import org.json.JSONArray;&lt;br /&gt;
import org.json.JSONException;&lt;br /&gt;
import org.json.JSONObject;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 *&lt;br /&gt;
 * @author cutmasta&lt;br /&gt;
 */&lt;br /&gt;
public class Start {&lt;br /&gt;
&lt;br /&gt;
    Log LOG = LogFactory.getLog(Start.class);&lt;br /&gt;
    private SessionObject so = null;&lt;br /&gt;
    private String username = null;&lt;br /&gt;
    private String password = null;&lt;br /&gt;
    private String host = &amp;quot;localhost&amp;quot;;&lt;br /&gt;
    private String protocol = &amp;quot;http&amp;quot;;&lt;br /&gt;
    private static String CONTENT_TYPE_JSCRIPT = &amp;quot;text/javascript&amp;quot;;&lt;br /&gt;
    private static String CHARSET_JSCRIPT = &amp;quot;UTF-8&amp;quot;;&lt;br /&gt;
    private String TASK_SEARCH = &amp;quot;tasks&amp;quot;;&lt;br /&gt;
    private String CONTACT_SEARCH = &amp;quot;contacts&amp;quot;;&lt;br /&gt;
    private String CALENDAR_SEARCH = &amp;quot;calendar&amp;quot;;&lt;br /&gt;
    private String INFOSTORE_SEARCH = &amp;quot;infostore&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        new Start(args);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private Start(String[] args) {&lt;br /&gt;
&lt;br /&gt;
        if (args.length != 4) {&lt;br /&gt;
            LOG.info(&amp;quot;Arguments needed: &amp;lt;host&amp;gt; &amp;lt;protocol&amp;gt; &amp;lt;username&amp;gt; &amp;lt;password&amp;gt;&amp;quot;);&lt;br /&gt;
            LOG.info(&amp;quot;Example: test.org https test@sp4.com test&amp;quot;);&lt;br /&gt;
            exitApp();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        host = args[0].trim();&lt;br /&gt;
        protocol = args[1].trim();&lt;br /&gt;
        username = args[2].trim();&lt;br /&gt;
        password = args[3].trim();&lt;br /&gt;
&lt;br /&gt;
        if (protocol.equals(&amp;quot;https&amp;quot;)) {&lt;br /&gt;
            Protocol easyhttps = new Protocol(&amp;quot;https&amp;quot;, new EasySSLProtocolSocketFactory(), 443);&lt;br /&gt;
            Protocol.registerProtocol(&amp;quot;https&amp;quot;, easyhttps);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        doLogin();&lt;br /&gt;
&lt;br /&gt;
        try {&lt;br /&gt;
&lt;br /&gt;
            // search all modules and fetch the id arrays&lt;br /&gt;
            doSearch();&lt;br /&gt;
        } catch (IOException ex) {&lt;br /&gt;
            LOG.error(ex);&lt;br /&gt;
        } catch (JSONException ex) {&lt;br /&gt;
            LOG.error(&amp;quot;Error in process&amp;quot;, ex);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public String getSessionID() {&lt;br /&gt;
        return getSessionObject().getSessionid();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public SessionObject getSessionObject() {&lt;br /&gt;
        return so;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public String getUsername() {&lt;br /&gt;
        return username;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public String getPassword() {&lt;br /&gt;
        return password;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public String getHost() {&lt;br /&gt;
        return host;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private void doDeleteCreatedFolders(JSONArray rootfolders, String timestamp) throws JSONException, IOException {&lt;br /&gt;
&lt;br /&gt;
        /* &lt;br /&gt;
         * In this method here we delete all folders        &lt;br /&gt;
         * &lt;br /&gt;
         */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        // loop through all root folders&lt;br /&gt;
        for (int i = 0; i &amp;lt; rootfolders.length(); i++) {&lt;br /&gt;
            &lt;br /&gt;
            // for each root/system folder , loop and delete its subfolders&lt;br /&gt;
            JSONObject subfolders_of_rootfolder_response = doGetSubFolders(rootfolders.getJSONArray(i).getInt(0));&lt;br /&gt;
            JSONArray subfolders_of_rootfolder = subfolders_of_rootfolder_response.getJSONArray(&amp;quot;data&amp;quot;);            &lt;br /&gt;
            for (int b = 0; b &amp;lt; subfolders_of_rootfolder.length(); b++) {&lt;br /&gt;
                JSONArray tmp_folder = subfolders_of_rootfolder.getJSONArray(b);&lt;br /&gt;
                if (!tmp_folder.getString(0).equalsIgnoreCase(&amp;quot;default&amp;quot;)) {&lt;br /&gt;
                    LOG.debug(&amp;quot;Deleting recursive all private folders with array: &amp;quot; + tmp_folder);&lt;br /&gt;
                    deleteRecursiveFolder(tmp_folder);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * This delete the subfolders of the given folder and the folder itself!&lt;br /&gt;
     * @param my_private_folder_array&lt;br /&gt;
     * @throws java.io.IOException&lt;br /&gt;
     * @throws org.json.JSONException&lt;br /&gt;
     */&lt;br /&gt;
    private void deleteRecursiveFolder(JSONArray my_private_folder_array) throws IOException, JSONException {&lt;br /&gt;
&lt;br /&gt;
        JSONObject my_private_subfolders_response = doGetSubFolders(my_private_folder_array.getInt(0));&lt;br /&gt;
&lt;br /&gt;
        // only delete if subfolders exists&lt;br /&gt;
        //if (my_private_subfolders_response.length() &amp;gt; 0) {&lt;br /&gt;
        if (my_private_subfolders_response.getJSONArray(&amp;quot;data&amp;quot;).length() &amp;gt; 0) {&lt;br /&gt;
&lt;br /&gt;
            LOG.debug(my_private_subfolders_response);&lt;br /&gt;
&lt;br /&gt;
            JSONArray my_private_subfolders = my_private_subfolders_response.getJSONArray(&amp;quot;data&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            String my_private_subfolders_timestamp = my_private_subfolders_response.getString(&amp;quot;timestamp&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            //LOG.info(&amp;quot;Private folders list: &amp;quot; +my_private_subfolders);&lt;br /&gt;
            for (int i = 0; i &amp;lt; my_private_subfolders.length(); i++) {&lt;br /&gt;
                JSONArray folder_data = my_private_subfolders.getJSONArray(i);&lt;br /&gt;
                LOG.debug(&amp;quot;Deleting folder with ID &amp;quot; + folder_data.getInt(0) + &amp;quot; and parent ID &amp;quot; + folder_data.getInt(1) + &amp;quot; - Tstamp &amp;quot; + my_private_subfolders_timestamp);&lt;br /&gt;
                doDeleteFolder(folder_data.getInt(0), folder_data.getInt(1), my_private_subfolders_timestamp);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        /* Now delete the folder itself , which could contain the subfolders before!&lt;br /&gt;
         * We must &amp;quot;get&amp;quot; the folder data because we need the correct timestamp for deleting!&lt;br /&gt;
         */&lt;br /&gt;
        JSONObject top_level_folder_data = doGetSingleFolder(my_private_folder_array.getInt(0));&lt;br /&gt;
        if(!my_private_folder_array.isNull(0) &amp;amp;&amp;amp; !my_private_folder_array.isNull(1) &amp;amp;&amp;amp; !top_level_folder_data.isNull(&amp;quot;timestamp&amp;quot;)){&lt;br /&gt;
            // execute delete&lt;br /&gt;
            doDeleteFolder(my_private_folder_array.getInt(0), my_private_folder_array.getInt(1), top_level_folder_data.getString(&amp;quot;timestamp&amp;quot;));&lt;br /&gt;
        }   &lt;br /&gt;
        &lt;br /&gt;
        &lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private void doDeleteFolder(int folder_id, int parent_id, String tstamp) {&lt;br /&gt;
&lt;br /&gt;
        try {&lt;br /&gt;
&lt;br /&gt;
            PutMethod deleteMethod = new PutMethod(getProtocol() + &amp;quot;://&amp;quot; + getHost() + &amp;quot;/ajax/folders?action=delete&amp;amp;timestamp=&amp;quot; + tstamp + &amp;quot;&amp;amp;session=&amp;quot; + getSessionObject().getSessionid());&lt;br /&gt;
&lt;br /&gt;
            RequestEntity data = new StringRequestEntity(&amp;quot;[&amp;quot; + folder_id + &amp;quot;]&amp;quot;, CONTENT_TYPE_JSCRIPT, CHARSET_JSCRIPT);&lt;br /&gt;
            deleteMethod.setRequestEntity(data);&lt;br /&gt;
            getSessionObject().getOxClient().executeMethod(deleteMethod);&lt;br /&gt;
&lt;br /&gt;
            JSONObject responseObject = ResponseTools.reponse2JsonObject(deleteMethod);&lt;br /&gt;
&lt;br /&gt;
            LOG.debug(&amp;quot;Delete folder response is: &amp;quot; + responseObject);&lt;br /&gt;
&lt;br /&gt;
        } catch (Exception ex) {&lt;br /&gt;
            LOG.error(&amp;quot;Error deleting folder with ID &amp;quot; + folder_id + &amp;quot; and parent ID &amp;quot; + parent_id, ex);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private JSONObject doGetSubFolders(int parent_folder) throws IOException, JSONException {&lt;br /&gt;
&lt;br /&gt;
        // 1 = id&lt;br /&gt;
        // 20 = Object ID of the parent folder.&lt;br /&gt;
        // 300 = Name of this folder.&lt;br /&gt;
        // 301 = Name of the module which implements this folder.&lt;br /&gt;
        // 302 = type    // 1 	 private&lt;br /&gt;
        //2 	public&lt;br /&gt;
        //3 	shared&lt;br /&gt;
        // 5 	system folder&lt;br /&gt;
        // 304 =  true if this folder has subfolders.&lt;br /&gt;
        // 305 = own_rights&lt;br /&gt;
&lt;br /&gt;
        try {&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            GetMethod folder_search = new GetMethod(getProtocol() + &amp;quot;://&amp;quot; + getHost() + &amp;quot;/ajax/folders?action=list&amp;amp;columns=1,20,300,301,302,304,305&amp;amp;parent=&amp;quot; + parent_folder + &amp;quot;&amp;amp;session=&amp;quot; + getSessionObject().getSessionid());&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            getSessionObject().getOxClient().executeMethod(folder_search);&lt;br /&gt;
&lt;br /&gt;
            JSONObject responseObject = ResponseTools.reponse2JsonObject(folder_search);&lt;br /&gt;
&lt;br /&gt;
            return responseObject;&lt;br /&gt;
&lt;br /&gt;
        } catch (IOException ex) {&lt;br /&gt;
            LOG.error(&amp;quot;Generic IO error while searching folders&amp;quot;, ex);&lt;br /&gt;
            throw ex;&lt;br /&gt;
        } catch (JSONException ex) {&lt;br /&gt;
            LOG.error(&amp;quot;JSON error while searching folders&amp;quot;, ex);&lt;br /&gt;
            throw ex;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private JSONObject doGetSingleFolder(int folder_id) throws IOException, JSONException {&lt;br /&gt;
&lt;br /&gt;
        // 1 = id&lt;br /&gt;
        // 20 = Object ID of the parent folder.&lt;br /&gt;
        // 300 = Name of this folder.&lt;br /&gt;
        // 301 = Name of the module which implements this folder.&lt;br /&gt;
        // 302 = type    // 1 	 private&lt;br /&gt;
        //2 	public&lt;br /&gt;
        //3 	shared&lt;br /&gt;
        // 5 	system folder&lt;br /&gt;
        // 304 =  true if this folder has subfolders.&lt;br /&gt;
        // 305 = own_rights&lt;br /&gt;
&lt;br /&gt;
        try {&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            GetMethod folder_search = new GetMethod(getProtocol() + &amp;quot;://&amp;quot; + getHost() + &amp;quot;/ajax/folders?action=get&amp;amp;id=&amp;quot; + folder_id + &amp;quot;&amp;amp;columns=1,20,300,301,302,304,305&amp;amp;session=&amp;quot; + getSessionObject().getSessionid());&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            getSessionObject().getOxClient().executeMethod(folder_search);&lt;br /&gt;
&lt;br /&gt;
            JSONObject responseObject = ResponseTools.reponse2JsonObject(folder_search);&lt;br /&gt;
&lt;br /&gt;
            return responseObject;&lt;br /&gt;
&lt;br /&gt;
        } catch (IOException ex) {&lt;br /&gt;
            LOG.error(&amp;quot;Generic IO error while searching folders&amp;quot;, ex);&lt;br /&gt;
            throw ex;&lt;br /&gt;
        } catch (JSONException ex) {&lt;br /&gt;
            LOG.error(&amp;quot;JSON error while searching folders&amp;quot;, ex);&lt;br /&gt;
            throw ex;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private void doLogin() {&lt;br /&gt;
&lt;br /&gt;
        LOG.info(&amp;quot;Using &amp;quot; + getProtocol() + &amp;quot;://&amp;quot; + getUsername() + &amp;quot;@&amp;quot; + getHost() + &amp;quot; for connections!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        HttpClient client = new HttpClient();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        PostMethod login_post = new PostMethod(getProtocol() + &amp;quot;://&amp;quot; + getHost() + &amp;quot;/ajax/login?action=login&amp;quot;);&lt;br /&gt;
        login_post.addParameter(&amp;quot;name&amp;quot;, getUsername());&lt;br /&gt;
        login_post.addParameter(&amp;quot;password&amp;quot;, getPassword());&lt;br /&gt;
&lt;br /&gt;
        try {&lt;br /&gt;
&lt;br /&gt;
            client.executeMethod(login_post);&lt;br /&gt;
&lt;br /&gt;
            JSONObject loginObject = ResponseTools.reponse2JsonObject(login_post);&lt;br /&gt;
&lt;br /&gt;
            if (loginObject.has(&amp;quot;session&amp;quot;)) {&lt;br /&gt;
                so = new SessionObject();&lt;br /&gt;
                getSessionObject().setCookies(client.getState().getCookies());&lt;br /&gt;
                getSessionObject().setSessionid((String) loginObject.get(&amp;quot;session&amp;quot;));&lt;br /&gt;
                getSessionObject().setOxClient(client);&lt;br /&gt;
                LOG.info(&amp;quot;Login successfull!&amp;quot;);&lt;br /&gt;
            } else {&lt;br /&gt;
                String errmsg = (String) loginObject.get(&amp;quot;error&amp;quot;);&lt;br /&gt;
                LOG.info(&amp;quot;Error login into system!\n&amp;quot; + errmsg);&lt;br /&gt;
                exitApp();&lt;br /&gt;
            }&lt;br /&gt;
        } catch (Exception exp) {&lt;br /&gt;
            LOG.error(&amp;quot;LOGIN ERROR&amp;quot;, exp);&lt;br /&gt;
        } finally {&lt;br /&gt;
            login_post.releaseConnection();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private void doSearch() throws JSONException, IOException {&lt;br /&gt;
&lt;br /&gt;
        LOG.info(&amp;quot;Starting search for objects...&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        JSONObject task_objects = doSearchInModule(TASK_SEARCH);&lt;br /&gt;
        JSONObject contact_objects = doSearchInModule(CONTACT_SEARCH);&lt;br /&gt;
        JSONObject calendar_objects = doSearchInModule(CALENDAR_SEARCH);&lt;br /&gt;
        JSONObject store_objects = doSearchInModule(INFOSTORE_SEARCH);&lt;br /&gt;
&lt;br /&gt;
        LOG.info(&amp;quot;Search done!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        //LOG.info(&amp;quot;Found &amp;quot; + task_objects.getJSONArray(&amp;quot;data&amp;quot;).length() + &amp;quot; task items&amp;quot;);&lt;br /&gt;
        //LOG.info(&amp;quot;Found &amp;quot; + contact_objects.getJSONArray(&amp;quot;data&amp;quot;).length() + &amp;quot; contact items&amp;quot;);&lt;br /&gt;
        //LOG.info(&amp;quot;Found &amp;quot; + calendar_objects.getJSONArray(&amp;quot;data&amp;quot;).length() + &amp;quot; calendar items&amp;quot;);&lt;br /&gt;
        //LOG.info(&amp;quot;Found &amp;quot; + store_objects.getJSONArray(&amp;quot;data&amp;quot;).length() + &amp;quot; infostore items&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        LOG.info(&amp;quot;Starting delete process...&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        doDeleteMultiple(task_objects, contact_objects, calendar_objects, store_objects);&lt;br /&gt;
&lt;br /&gt;
        LOG.info(&amp;quot;Deleting Objects done!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        LOG.info(&amp;quot;Starting delete process for folders...&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        // search all folders and delete them&lt;br /&gt;
        JSONObject rootfolders_response = doGetRootFolders();&lt;br /&gt;
&lt;br /&gt;
        JSONArray rootfolders = rootfolders_response.getJSONArray(&amp;quot;data&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        doDeleteCreatedFolders(rootfolders, rootfolders_response.getString(&amp;quot;timestamp&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
        LOG.info(&amp;quot;Deleting folders done!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private JSONArray buildDeleteArray(JSONObject module_objects, String MODULE) throws JSONException {&lt;br /&gt;
&lt;br /&gt;
        JSONArray dat_array = new JSONArray();&lt;br /&gt;
&lt;br /&gt;
        LOG.debug(&amp;quot;Building delete array from json object: &amp;quot; + module_objects);&lt;br /&gt;
&lt;br /&gt;
        if (module_objects.has(&amp;quot;data&amp;quot;) &amp;amp;&amp;amp; module_objects.has(&amp;quot;timestamp&amp;quot;)) {&lt;br /&gt;
&lt;br /&gt;
            String tstamp = module_objects.getString(&amp;quot;timestamp&amp;quot;);&lt;br /&gt;
            JSONArray srv_data_ids = module_objects.getJSONArray(&amp;quot;data&amp;quot;);&lt;br /&gt;
            for (int i = 0; i &amp;lt; srv_data_ids.length(); i++) {&lt;br /&gt;
                JSONArray ids = (JSONArray) srv_data_ids.get(i);&lt;br /&gt;
                JSONObject js = new JSONObject();&lt;br /&gt;
                js.put(&amp;quot;module&amp;quot;, MODULE);&lt;br /&gt;
                js.put(&amp;quot;timestamp&amp;quot;, tstamp);&lt;br /&gt;
                js.put(&amp;quot;action&amp;quot;, &amp;quot;delete&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                JSONObject del_ids = new JSONObject();&lt;br /&gt;
                del_ids.put(&amp;quot;id&amp;quot;, ids.getInt(0));&lt;br /&gt;
                del_ids.put(&amp;quot;folder&amp;quot;, ids.getInt(1));&lt;br /&gt;
&lt;br /&gt;
                // workaround because infostore expects an array with a 1 json object which contains the ids&lt;br /&gt;
                if (MODULE.equals(INFOSTORE_SEARCH)) {&lt;br /&gt;
                    // send array with object&lt;br /&gt;
                    JSONArray tmp = new JSONArray();&lt;br /&gt;
                    tmp.put(del_ids);&lt;br /&gt;
                    js.put(&amp;quot;data&amp;quot;, tmp);&lt;br /&gt;
                } else {&lt;br /&gt;
                    // send normal id &lt;br /&gt;
                    js.put(&amp;quot;data&amp;quot;, del_ids);&lt;br /&gt;
                }&lt;br /&gt;
                dat_array.put(js);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        return dat_array;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private void doDeleteMultiple(JSONObject task_objects, JSONObject contact_objects, JSONObject calendar_objects, JSONObject store_objects) throws JSONException {&lt;br /&gt;
&lt;br /&gt;
        LOG.info(&amp;quot;Deleting tasks...&amp;quot;);&lt;br /&gt;
        fireDeleteMultiple(buildDeleteArray(task_objects, TASK_SEARCH));&lt;br /&gt;
        LOG.info(&amp;quot;Deleting contacts...&amp;quot;);&lt;br /&gt;
        fireDeleteMultiple(buildDeleteArray(contact_objects, CONTACT_SEARCH));&lt;br /&gt;
        LOG.info(&amp;quot;Deleting appointments...&amp;quot;);&lt;br /&gt;
        fireDeleteMultiple(buildDeleteArray(calendar_objects, CALENDAR_SEARCH));&lt;br /&gt;
        LOG.info(&amp;quot;Deleting infostore objects...&amp;quot;);&lt;br /&gt;
        fireDeleteMultiple(buildDeleteArray(store_objects, INFOSTORE_SEARCH));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private JSONObject doGetRootFolders() throws IOException, JSONException {&lt;br /&gt;
&lt;br /&gt;
        // 1 = id&lt;br /&gt;
        // 20 = Object ID of the parent folder.&lt;br /&gt;
        // 300 = Name of this folder.&lt;br /&gt;
        // 301 = Name of the module which implements this folder.&lt;br /&gt;
        // 302 = type    // 1 	 private&lt;br /&gt;
        //2 	public&lt;br /&gt;
        //3 	shared&lt;br /&gt;
        // 5 	system folder&lt;br /&gt;
        // 304 =  true if this folder has subfolders.&lt;br /&gt;
        // 305 = own_rights&lt;br /&gt;
&lt;br /&gt;
        try {&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            GetMethod folder_search = new GetMethod(getProtocol() + &amp;quot;://&amp;quot; + getHost() + &amp;quot;/ajax/folders?action=root&amp;amp;columns=1,20,300,301,302,304,305&amp;amp;session=&amp;quot; + getSessionObject().getSessionid());&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            getSessionObject().getOxClient().executeMethod(folder_search);&lt;br /&gt;
&lt;br /&gt;
            return ResponseTools.reponse2JsonObject(folder_search);&lt;br /&gt;
&lt;br /&gt;
        } catch (IOException ex) {&lt;br /&gt;
            LOG.error(&amp;quot;Generic IO error while searching folders&amp;quot;, ex);&lt;br /&gt;
            throw ex;&lt;br /&gt;
        } catch (JSONException ex) {&lt;br /&gt;
            LOG.error(&amp;quot;JSON error while searching folders&amp;quot;, ex);&lt;br /&gt;
            throw ex;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private void fireDeleteMultiple(JSONArray del_data_array) {&lt;br /&gt;
&lt;br /&gt;
        try {&lt;br /&gt;
&lt;br /&gt;
            //LOG.info(&amp;quot;Sending delete array: &amp;quot; + del_data_array);&lt;br /&gt;
&lt;br /&gt;
            PutMethod deleteMethod = new PutMethod(getProtocol() + &amp;quot;://&amp;quot; + getHost() + &amp;quot;/ajax/multiple?continue=true&amp;amp;session=&amp;quot; + getSessionObject().getSessionid());&lt;br /&gt;
&lt;br /&gt;
            RequestEntity data = new StringRequestEntity(del_data_array.toString(), CONTENT_TYPE_JSCRIPT, CHARSET_JSCRIPT);&lt;br /&gt;
            deleteMethod.setRequestEntity(data);&lt;br /&gt;
            getSessionObject().getOxClient().executeMethod(deleteMethod);&lt;br /&gt;
&lt;br /&gt;
            JSONArray responseObject = ResponseTools.reponse2JsonArray(deleteMethod);&lt;br /&gt;
&lt;br /&gt;
        //LOG.info(responseObject);&lt;br /&gt;
&lt;br /&gt;
        } catch (Exception ex) {&lt;br /&gt;
            LOG.error(&amp;quot;Error deleting items&amp;quot;, ex);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private JSONObject doSearchInModule(String MODULE) {&lt;br /&gt;
&lt;br /&gt;
        // FETCH ALL OBJECT IDS FROM ALL FOLDERS &lt;br /&gt;
        // EXCLUDING PUBLIC ADRESSBOOK WHICH HAS ID 6        &lt;br /&gt;
        PutMethod searchMethod = new PutMethod(getProtocol() + &amp;quot;://&amp;quot; + getHost() + &amp;quot;/ajax/&amp;quot; + MODULE + &amp;quot;?action=search&amp;amp;columns=1,20&amp;amp;session=&amp;quot; + getSessionObject().getSessionid());&lt;br /&gt;
&lt;br /&gt;
        try {&lt;br /&gt;
&lt;br /&gt;
            RequestEntity data = new StringRequestEntity(&amp;quot;{\&amp;quot;pattern\&amp;quot;:\&amp;quot;*\&amp;quot;}&amp;quot;, CONTENT_TYPE_JSCRIPT, CHARSET_JSCRIPT);&lt;br /&gt;
            searchMethod.setRequestEntity(data);&lt;br /&gt;
            getSessionObject().getOxClient().executeMethod(searchMethod);&lt;br /&gt;
&lt;br /&gt;
            return ResponseTools.reponse2JsonObject(searchMethod);&lt;br /&gt;
        } catch (Exception ex) {&lt;br /&gt;
            LOG.error(&amp;quot;Error searching &amp;quot; + MODULE, ex);&lt;br /&gt;
            return null;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private void exitApp() {&lt;br /&gt;
        System.exit(1);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public String getProtocol() {&lt;br /&gt;
        return protocol;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cutmasta</name></author>
	</entry>
</feed>