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);
+       }
+}


Reply via email to