You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2016/04/05 19:59:54 UTC

svn commit: r1737859 - in /openmeetings/application: branches/3.1.x/openmeetings-install/src/main/java/org/apache/openmeetings/cli/ trunk/openmeetings-install/src/main/java/org/apache/openmeetings/cli/

Author: solomax
Date: Tue Apr  5 17:59:53 2016
New Revision: 1737859

URL: http://svn.apache.org/viewvc?rev=1737859&view=rev
Log:
[OPENMEETINGS-853] cli admin is refactored, so clean-up can be used in web

Added:
    openmeetings/application/branches/3.1.x/openmeetings-install/src/main/java/org/apache/openmeetings/cli/CleanupEntityUnit.java
    openmeetings/application/branches/3.1.x/openmeetings-install/src/main/java/org/apache/openmeetings/cli/CleanupHelper.java
    openmeetings/application/branches/3.1.x/openmeetings-install/src/main/java/org/apache/openmeetings/cli/CleanupUnit.java
    openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/cli/CleanupEntityUnit.java
    openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/cli/CleanupHelper.java
    openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/cli/CleanupUnit.java
Modified:
    openmeetings/application/branches/3.1.x/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java
    openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java

Modified: openmeetings/application/branches/3.1.x/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java?rev=1737859&r1=1737858&r2=1737859&view=diff
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java (original)
+++ openmeetings/application/branches/3.1.x/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java Tue Apr  5 17:59:53 2016
@@ -59,7 +59,6 @@ import org.apache.openmeetings.db.dao.re
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.file.FileExplorerItem;
 import org.apache.openmeetings.db.entity.record.Recording;
-import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.installation.ImportInitvalues;
 import org.apache.openmeetings.installation.InstallationConfig;
 import org.apache.openmeetings.installation.InstallationDocumentHandler;
@@ -320,47 +319,24 @@ public class Admin {
 						System.out.println("WARNING: all intermadiate files will be clean up!");
 					}
 					StringBuilder report = new StringBuilder();
-					report.append("Temporary files allocates: ").append(OmFileHelper.getHumanSize(OmFileHelper.getUploadTempDir())).append("\n");
+					CleanupUnit temp = CleanupHelper.getTempUnit();
+					report.append("Temporary files allocates: ").append(temp.getHumanTotal()).append("\n");
 					{ //UPLOAD
 						long sectionSize = OmFileHelper.getSize(OmFileHelper.getUploadDir());
 						report.append("Upload totally allocates: ").append(OmFileHelper.getHumanSize(sectionSize)).append("\n");
 						//Profiles
-						File profiles = OmFileHelper.getUploadProfilesDir();
-						long invalid = 0;
-						long deleted = 0;
 						ClassPathXmlApplicationContext ctx = getApplicationContext(ctxName);
 						UserDao udao = ctx.getBean(UserDao.class);
-						for (File profile : profiles.listFiles()) {
-							long pSize = OmFileHelper.getSize(profile);
-							long userId = getUserIdByProfile(profile.getName());
-							User u = udao.get(userId);
-							if (profile.isFile() || userId < 0 || u == null) {
-								if (cleanup) {
-									FileHelper.removeRec(profile);
-								} else {
-									invalid += pSize;
-								}
-							} else if (u.isDeleted()) {
-								if (cleanup) {
-									FileHelper.removeRec(profile);
-								} else {
-									deleted += pSize;
-								}
-							}
-						}
-						long missing = 0;
-						for (User u : udao.getAllBackupUsers()) {
-							if (!u.isDeleted() && u.getPictureuri() != null && !new File(OmFileHelper.getUploadProfilesUserDir(u.getId()), u.getPictureuri()).exists()) {
-								missing++;
-							}
+						CleanupEntityUnit profileUnit = CleanupHelper.getProfileUnit(udao);
+						long restSize = sectionSize - profileUnit.getSizeTotal();
+						report.append("\t\tprofiles: ").append(profileUnit.getHumanTotal()).append("\n");
+						report.append("\t\t\tinvalid: ").append(profileUnit.getHumanInvalid()).append("\n");
+						report.append("\t\t\tdeleted: ").append(profileUnit.getHumanDeleted()).append("\n");
+						report.append("\t\t\tmissing count: ").append(profileUnit.getMissing()).append("\n");
+						if (cleanup) {
+							profileUnit.cleanup();
 						}
-						long size = OmFileHelper.getSize(profiles);
-						long restSize = sectionSize - size;
-						report.append("\t\tprofiles: ").append(OmFileHelper.getHumanSize(size)).append("\n");
-						report.append("\t\t\tinvalid: ").append(OmFileHelper.getHumanSize(invalid)).append("\n");
-						report.append("\t\t\tdeleted: ").append(OmFileHelper.getHumanSize(deleted)).append("\n");
-						report.append("\t\t\tmissing count: ").append(missing).append("\n");
-						size = OmFileHelper.getSize(OmFileHelper.getUploadImportDir());
+						long size = OmFileHelper.getSize(OmFileHelper.getUploadImportDir());
 						restSize -= size;
 						report.append("\t\timport: ").append(OmFileHelper.getHumanSize(size)).append("\n");
 						size = OmFileHelper.getSize(OmFileHelper.getUploadBackupDir());
@@ -371,8 +347,8 @@ public class Admin {
 						size = OmFileHelper.getSize(files);
 						restSize -= size;
 						FileExplorerItemDao fileDao = ctx.getBean(FileExplorerItemDao.class);
-						invalid = 0;
-						deleted = 0;
+						long invalid = 0;
+						long deleted = 0;
 						for (File f : files.listFiles()) {
 							long fSize = OmFileHelper.getSize(f);
 							FileExplorerItem item = fileDao.getByHash(f.getName());
@@ -390,7 +366,7 @@ public class Admin {
 								}
 							}
 						}
-						missing = 0;
+						int missing = 0;
 						for (FileExplorerItem item : fileDao.get()) {
 							if (!item.isDeleted() && item.getHash() != null && !new File(files, item.getHash()).exists()) {
 								missing++;
@@ -496,18 +472,6 @@ public class Admin {
 		}
 	}
 	
-	private static long getUserIdByProfile(String name) {
-		long result = -1;
-		if (name.startsWith(OmFileHelper.profilesPrefix)) {
-			try {
-				result = Long.parseLong(name.substring(OmFileHelper.profilesPrefix.length()));
-			} catch (Exception e) {
-				//noop
-			}
-		}
-		return result;
-	}
-	
 	private void checkAdminDetails(String ctxName) throws Exception {
 		cfg.username = cmdl.getOptionValue("user");
 		cfg.email = cmdl.getOptionValue("email");

Added: openmeetings/application/branches/3.1.x/openmeetings-install/src/main/java/org/apache/openmeetings/cli/CleanupEntityUnit.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-install/src/main/java/org/apache/openmeetings/cli/CleanupEntityUnit.java?rev=1737859&view=auto
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-install/src/main/java/org/apache/openmeetings/cli/CleanupEntityUnit.java (added)
+++ openmeetings/application/branches/3.1.x/openmeetings-install/src/main/java/org/apache/openmeetings/cli/CleanupEntityUnit.java Tue Apr  5 17:59:53 2016
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.cli;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.openmeetings.util.OmFileHelper;
+
+public abstract class CleanupEntityUnit extends CleanupUnit {
+	protected List<File> invalid = new ArrayList<>();
+	protected List<File> deleted = new ArrayList<>();
+	private long sizeInvalid = 0;
+	private long sizeDeleted = 0;
+	protected int missing = 0;
+	
+	public CleanupEntityUnit(File parent) {
+		super(parent);
+		fill();
+		for (File i : invalid) {
+			sizeInvalid += OmFileHelper.getSize(i);
+		}
+		for (File i : deleted) {
+			sizeDeleted += OmFileHelper.getSize(i);
+		}
+	}
+	
+	public abstract void fill();
+
+	public long getSizeInvalid() {
+		return sizeInvalid;
+	}
+
+	public String getHumanInvalid() {
+		return OmFileHelper.getHumanSize(sizeInvalid);
+	}
+
+	public long getSizeDeleted() {
+		return sizeDeleted;
+	}
+
+	public String getHumanDeleted() {
+		return OmFileHelper.getHumanSize(sizeDeleted);
+	}
+	
+	public int getMissing() {
+		return missing;
+	}
+}

Added: openmeetings/application/branches/3.1.x/openmeetings-install/src/main/java/org/apache/openmeetings/cli/CleanupHelper.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-install/src/main/java/org/apache/openmeetings/cli/CleanupHelper.java?rev=1737859&view=auto
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-install/src/main/java/org/apache/openmeetings/cli/CleanupHelper.java (added)
+++ openmeetings/application/branches/3.1.x/openmeetings-install/src/main/java/org/apache/openmeetings/cli/CleanupHelper.java Tue Apr  5 17:59:53 2016
@@ -0,0 +1,83 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.cli;
+
+import java.io.File;
+
+import org.apache.commons.transaction.util.FileHelper;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.util.OmFileHelper;
+
+public class CleanupHelper {
+	public static CleanupUnit getTempUnit() {
+		return new CleanupUnit(OmFileHelper.getUploadTempDir()) {
+			@Override
+			public void cleanup() {
+				for (File f : getParent().listFiles()) {
+					FileHelper.removeRec(f);
+				}
+			}
+		};
+	}
+
+	public static CleanupEntityUnit getProfileUnit(final UserDao udao) {
+		return new CleanupEntityUnit(OmFileHelper.getUploadProfilesDir()) {
+			@Override
+			public void cleanup() {
+				for (File i : invalid) {
+					FileHelper.removeRec(i);
+				}
+				for (File i : deleted) {
+					FileHelper.removeRec(i);
+				}
+			}
+			
+			@Override
+			public void fill() {
+				for (File profile : getParent().listFiles()) {
+					long userId = getUserIdByProfile(profile.getName());
+					User u = udao.get(userId);
+					if (profile.isFile() || userId < 0 || u == null) {
+						invalid.add(profile);
+					} else if (u.isDeleted()) {
+						deleted.add(profile);
+					}
+				}
+				for (User u : udao.getAllBackupUsers()) {
+					if (!u.isDeleted() && u.getPictureuri() != null && !new File(OmFileHelper.getUploadProfilesUserDir(u.getId()), u.getPictureuri()).exists()) {
+						missing++;
+					}
+				}
+			}
+		};
+	}
+
+	private static long getUserIdByProfile(String name) {
+		long result = -1;
+		if (name.startsWith(OmFileHelper.profilesPrefix)) {
+			try {
+				result = Long.parseLong(name.substring(OmFileHelper.profilesPrefix.length()));
+			} catch (Exception e) {
+				//noop
+			}
+		}
+		return result;
+	}
+}

Added: openmeetings/application/branches/3.1.x/openmeetings-install/src/main/java/org/apache/openmeetings/cli/CleanupUnit.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-install/src/main/java/org/apache/openmeetings/cli/CleanupUnit.java?rev=1737859&view=auto
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-install/src/main/java/org/apache/openmeetings/cli/CleanupUnit.java (added)
+++ openmeetings/application/branches/3.1.x/openmeetings-install/src/main/java/org/apache/openmeetings/cli/CleanupUnit.java Tue Apr  5 17:59:53 2016
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.cli;
+
+import java.io.File;
+
+import org.apache.openmeetings.util.OmFileHelper;
+
+public abstract class CleanupUnit {
+	private final File parent;
+	private final long sizeTotal;
+	
+	public CleanupUnit(File parent) {
+		this.parent = parent;
+		if (!parent.isDirectory() || !parent.exists()) {
+			throw new RuntimeException("Parent doesn't exist or not directory");
+		}
+		sizeTotal = OmFileHelper.getSize(parent);
+	}
+	
+	public abstract void cleanup();
+	
+	public File getParent() {
+		return parent;
+	}
+	
+	public long getSizeTotal() {
+		return sizeTotal;
+	}
+
+	public String getHumanTotal() {
+		return OmFileHelper.getHumanSize(sizeTotal);
+	}
+}

Modified: openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java?rev=1737859&r1=1737858&r2=1737859&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java (original)
+++ openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java Tue Apr  5 17:59:53 2016
@@ -59,7 +59,6 @@ import org.apache.openmeetings.db.dao.re
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.file.FileExplorerItem;
 import org.apache.openmeetings.db.entity.record.Recording;
-import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.installation.ImportInitvalues;
 import org.apache.openmeetings.installation.InstallationConfig;
 import org.apache.openmeetings.installation.InstallationDocumentHandler;
@@ -320,47 +319,24 @@ public class Admin {
 						System.out.println("WARNING: all intermadiate files will be clean up!");
 					}
 					StringBuilder report = new StringBuilder();
-					report.append("Temporary files allocates: ").append(OmFileHelper.getHumanSize(OmFileHelper.getUploadTempDir())).append("\n");
+					CleanupUnit temp = CleanupHelper.getTempUnit();
+					report.append("Temporary files allocates: ").append(temp.getHumanTotal()).append("\n");
 					{ //UPLOAD
 						long sectionSize = OmFileHelper.getSize(OmFileHelper.getUploadDir());
 						report.append("Upload totally allocates: ").append(OmFileHelper.getHumanSize(sectionSize)).append("\n");
 						//Profiles
-						File profiles = OmFileHelper.getUploadProfilesDir();
-						long invalid = 0;
-						long deleted = 0;
 						ClassPathXmlApplicationContext ctx = getApplicationContext(ctxName);
 						UserDao udao = ctx.getBean(UserDao.class);
-						for (File profile : profiles.listFiles()) {
-							long pSize = OmFileHelper.getSize(profile);
-							long userId = getUserIdByProfile(profile.getName());
-							User u = udao.get(userId);
-							if (profile.isFile() || userId < 0 || u == null) {
-								if (cleanup) {
-									FileHelper.removeRec(profile);
-								} else {
-									invalid += pSize;
-								}
-							} else if (u.isDeleted()) {
-								if (cleanup) {
-									FileHelper.removeRec(profile);
-								} else {
-									deleted += pSize;
-								}
-							}
-						}
-						long missing = 0;
-						for (User u : udao.getAllBackupUsers()) {
-							if (!u.isDeleted() && u.getPictureuri() != null && !new File(OmFileHelper.getUploadProfilesUserDir(u.getId()), u.getPictureuri()).exists()) {
-								missing++;
-							}
+						CleanupEntityUnit profileUnit = CleanupHelper.getProfileUnit(udao);
+						long restSize = sectionSize - profileUnit.getSizeTotal();
+						report.append("\t\tprofiles: ").append(profileUnit.getHumanTotal()).append("\n");
+						report.append("\t\t\tinvalid: ").append(profileUnit.getHumanInvalid()).append("\n");
+						report.append("\t\t\tdeleted: ").append(profileUnit.getHumanDeleted()).append("\n");
+						report.append("\t\t\tmissing count: ").append(profileUnit.getMissing()).append("\n");
+						if (cleanup) {
+							profileUnit.cleanup();
 						}
-						long size = OmFileHelper.getSize(profiles);
-						long restSize = sectionSize - size;
-						report.append("\t\tprofiles: ").append(OmFileHelper.getHumanSize(size)).append("\n");
-						report.append("\t\t\tinvalid: ").append(OmFileHelper.getHumanSize(invalid)).append("\n");
-						report.append("\t\t\tdeleted: ").append(OmFileHelper.getHumanSize(deleted)).append("\n");
-						report.append("\t\t\tmissing count: ").append(missing).append("\n");
-						size = OmFileHelper.getSize(OmFileHelper.getUploadImportDir());
+						long size = OmFileHelper.getSize(OmFileHelper.getUploadImportDir());
 						restSize -= size;
 						report.append("\t\timport: ").append(OmFileHelper.getHumanSize(size)).append("\n");
 						size = OmFileHelper.getSize(OmFileHelper.getUploadBackupDir());
@@ -371,8 +347,8 @@ public class Admin {
 						size = OmFileHelper.getSize(files);
 						restSize -= size;
 						FileExplorerItemDao fileDao = ctx.getBean(FileExplorerItemDao.class);
-						invalid = 0;
-						deleted = 0;
+						long invalid = 0;
+						long deleted = 0;
 						for (File f : files.listFiles()) {
 							long fSize = OmFileHelper.getSize(f);
 							FileExplorerItem item = fileDao.getByHash(f.getName());
@@ -390,7 +366,7 @@ public class Admin {
 								}
 							}
 						}
-						missing = 0;
+						int missing = 0;
 						for (FileExplorerItem item : fileDao.get()) {
 							if (!item.isDeleted() && item.getHash() != null && !new File(files, item.getHash()).exists()) {
 								missing++;
@@ -496,18 +472,6 @@ public class Admin {
 		}
 	}
 	
-	private static long getUserIdByProfile(String name) {
-		long result = -1;
-		if (name.startsWith(OmFileHelper.profilesPrefix)) {
-			try {
-				result = Long.parseLong(name.substring(OmFileHelper.profilesPrefix.length()));
-			} catch (Exception e) {
-				//noop
-			}
-		}
-		return result;
-	}
-	
 	private void checkAdminDetails(String ctxName) throws Exception {
 		cfg.username = cmdl.getOptionValue("user");
 		cfg.email = cmdl.getOptionValue("email");

Added: openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/cli/CleanupEntityUnit.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/cli/CleanupEntityUnit.java?rev=1737859&view=auto
==============================================================================
--- openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/cli/CleanupEntityUnit.java (added)
+++ openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/cli/CleanupEntityUnit.java Tue Apr  5 17:59:53 2016
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.cli;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.openmeetings.util.OmFileHelper;
+
+public abstract class CleanupEntityUnit extends CleanupUnit {
+	protected List<File> invalid = new ArrayList<>();
+	protected List<File> deleted = new ArrayList<>();
+	private long sizeInvalid = 0;
+	private long sizeDeleted = 0;
+	protected int missing = 0;
+	
+	public CleanupEntityUnit(File parent) {
+		super(parent);
+		fill();
+		for (File i : invalid) {
+			sizeInvalid += OmFileHelper.getSize(i);
+		}
+		for (File i : deleted) {
+			sizeDeleted += OmFileHelper.getSize(i);
+		}
+	}
+	
+	public abstract void fill();
+
+	public long getSizeInvalid() {
+		return sizeInvalid;
+	}
+
+	public String getHumanInvalid() {
+		return OmFileHelper.getHumanSize(sizeInvalid);
+	}
+
+	public long getSizeDeleted() {
+		return sizeDeleted;
+	}
+
+	public String getHumanDeleted() {
+		return OmFileHelper.getHumanSize(sizeDeleted);
+	}
+	
+	public int getMissing() {
+		return missing;
+	}
+}

Added: openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/cli/CleanupHelper.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/cli/CleanupHelper.java?rev=1737859&view=auto
==============================================================================
--- openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/cli/CleanupHelper.java (added)
+++ openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/cli/CleanupHelper.java Tue Apr  5 17:59:53 2016
@@ -0,0 +1,83 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.cli;
+
+import java.io.File;
+
+import org.apache.commons.transaction.util.FileHelper;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.util.OmFileHelper;
+
+public class CleanupHelper {
+	public static CleanupUnit getTempUnit() {
+		return new CleanupUnit(OmFileHelper.getUploadTempDir()) {
+			@Override
+			public void cleanup() {
+				for (File f : getParent().listFiles()) {
+					FileHelper.removeRec(f);
+				}
+			}
+		};
+	}
+
+	public static CleanupEntityUnit getProfileUnit(final UserDao udao) {
+		return new CleanupEntityUnit(OmFileHelper.getUploadProfilesDir()) {
+			@Override
+			public void cleanup() {
+				for (File i : invalid) {
+					FileHelper.removeRec(i);
+				}
+				for (File i : deleted) {
+					FileHelper.removeRec(i);
+				}
+			}
+			
+			@Override
+			public void fill() {
+				for (File profile : getParent().listFiles()) {
+					long userId = getUserIdByProfile(profile.getName());
+					User u = udao.get(userId);
+					if (profile.isFile() || userId < 0 || u == null) {
+						invalid.add(profile);
+					} else if (u.isDeleted()) {
+						deleted.add(profile);
+					}
+				}
+				for (User u : udao.getAllBackupUsers()) {
+					if (!u.isDeleted() && u.getPictureuri() != null && !new File(OmFileHelper.getUploadProfilesUserDir(u.getId()), u.getPictureuri()).exists()) {
+						missing++;
+					}
+				}
+			}
+		};
+	}
+
+	private static long getUserIdByProfile(String name) {
+		long result = -1;
+		if (name.startsWith(OmFileHelper.profilesPrefix)) {
+			try {
+				result = Long.parseLong(name.substring(OmFileHelper.profilesPrefix.length()));
+			} catch (Exception e) {
+				//noop
+			}
+		}
+		return result;
+	}
+}

Added: openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/cli/CleanupUnit.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/cli/CleanupUnit.java?rev=1737859&view=auto
==============================================================================
--- openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/cli/CleanupUnit.java (added)
+++ openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/cli/CleanupUnit.java Tue Apr  5 17:59:53 2016
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.cli;
+
+import java.io.File;
+
+import org.apache.openmeetings.util.OmFileHelper;
+
+public abstract class CleanupUnit {
+	private final File parent;
+	private final long sizeTotal;
+	
+	public CleanupUnit(File parent) {
+		this.parent = parent;
+		if (!parent.isDirectory() || !parent.exists()) {
+			throw new RuntimeException("Parent doesn't exist or not directory");
+		}
+		sizeTotal = OmFileHelper.getSize(parent);
+	}
+	
+	public abstract void cleanup();
+	
+	public File getParent() {
+		return parent;
+	}
+	
+	public long getSizeTotal() {
+		return sizeTotal;
+	}
+
+	public String getHumanTotal() {
+		return OmFileHelper.getHumanSize(sizeTotal);
+	}
+}