1 package org.columba.core.plugin; 17 18 import java.io.File ; 19 import java.util.ArrayList ; 20 import java.util.List ; 21 import java.util.logging.Logger ; 22 23 import org.columba.core.config.DefaultConfigDirectory; 24 25 26 32 public final class PluginFinder { 33 34 private static final Logger LOG = Logger.getLogger("org.columba.core.plugin"); 35 36 39 private PluginFinder() { 40 super(); 41 } 42 43 48 public static File [] searchPlugins() { 49 File [] programList = null; 50 File [] configList = null; 51 52 File programFolder = new File ("plugins"); 53 54 if (programFolder.exists()) { 55 programList = programFolder.listFiles(); 56 } else { 57 LOG.fine("Folder \"" + programFolder.getPath() + "\" doesn't exist."); 58 } 59 60 File configFolder = new File (DefaultConfigDirectory.getInstance().getCurrentPath(), 61 "plugins"); 62 63 if (configFolder.exists()) { 64 configList = configFolder.listFiles(); 65 } else { 66 LOG.fine("Folder \"" + configFolder.getPath() + "\" doesn't exist."); 67 } 68 69 if ((programList != null) && (configList != null)) { 70 File [] result = new File [programList.length + configList.length]; 71 System.arraycopy(programList, 0, result, 0, programList.length); 72 System.arraycopy(configList, 0, result, programList.length, 73 configList.length); 74 75 return filterDirectories(result); 77 } else if (programList != null) { 78 return programList; 79 } else if (configList != null) { 80 return configList; 81 } 82 83 return null; 84 } 85 86 93 public static File [] filterDirectories(File [] files) { 94 List list = new ArrayList (); 95 for (int i = 0; i < files.length; i++) { 96 if (checkDirectory(files[i])) { 97 list.add(files[i]); 98 } 99 } 100 return (File []) list.toArray(new File [0]); 101 } 102 103 104 113 public static boolean checkDirectory(File file) { 114 if (file.isDirectory()) { 115 File plugin = new File (file, "plugin.xml"); 116 return plugin.exists(); 117 } 118 119 return false; 120 } 121 } 122 | Popular Tags |