1 package org.openoffice.idesupport; 2 3 import java.io.File; 4 import java.util.ArrayList; 5 import org.openoffice.idesupport.zip.ParcelZipper; 6 7 import com.sun.star.script.framework.container.ScriptEntry; 8 9 public class ExtensionFinder implements MethodFinder { 10 11 private String[] extensions; 12 private String language; 13 14 public ExtensionFinder(String language, String[] extensions) { 15 this.language = language; 16 this.extensions = extensions; 17 } 18 19 public ScriptEntry[] findMethods(File basedir) { 20 String parcelName; 21 ArrayList files = new ArrayList(10); 22 ScriptEntry[] empty = new ScriptEntry[0]; 23 24 if (basedir == null || basedir.exists() == false || 25 basedir.isDirectory() == false) 26 return empty; 27 28 parcelName = basedir.getName(); 29 if (parcelName.equals(ParcelZipper.CONTENTS_DIRNAME)) 30 parcelName = basedir.getParentFile().getName(); 31 32 findFiles(files, basedir, parcelName); 33 34 if (files.size() != 0) 35 return (ScriptEntry[])files.toArray(empty); 36 return empty; 37 } 38 39 private void findFiles(ArrayList list, File basedir, String parcelName) { 40 File[] children = basedir.listFiles(); 41 File f; 42 43 for (int i = 0; i < children.length; i++) { 44 f = children[i]; 45 46 if (f.isDirectory()) 47 findFiles(list, f, parcelName); 48 else { 49 for (int j = 0; j < extensions.length; j++) { 50 if (f.getName().endsWith(extensions[j])) { 51 ScriptEntry entry = new ScriptEntry(language, 52 f.getName(), f.getName(), parcelName); 53 list.add(entry); 54 break; 55 } 56 } 57 } 58 } 59 } 60 } 61