1*cd519653SAndrew Rist /************************************************************** 2*cd519653SAndrew Rist * 3*cd519653SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*cd519653SAndrew Rist * or more contributor license agreements. See the NOTICE file 5*cd519653SAndrew Rist * distributed with this work for additional information 6*cd519653SAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*cd519653SAndrew Rist * to you under the Apache License, Version 2.0 (the 8*cd519653SAndrew Rist * "License"); you may not use this file except in compliance 9*cd519653SAndrew Rist * with the License. You may obtain a copy of the License at 10*cd519653SAndrew Rist * 11*cd519653SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*cd519653SAndrew Rist * 13*cd519653SAndrew Rist * Unless required by applicable law or agreed to in writing, 14*cd519653SAndrew Rist * software distributed under the License is distributed on an 15*cd519653SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*cd519653SAndrew Rist * KIND, either express or implied. See the License for the 17*cd519653SAndrew Rist * specific language governing permissions and limitations 18*cd519653SAndrew Rist * under the License. 19*cd519653SAndrew Rist * 20*cd519653SAndrew Rist *************************************************************/ 21*cd519653SAndrew Rist 22cdf0e10cSrcweir package org.openoffice.idesupport; 23cdf0e10cSrcweir 24cdf0e10cSrcweir import java.io.File; 25cdf0e10cSrcweir import java.util.ArrayList; 26cdf0e10cSrcweir import org.openoffice.idesupport.zip.ParcelZipper; 27cdf0e10cSrcweir 28cdf0e10cSrcweir import com.sun.star.script.framework.container.ScriptEntry; 29cdf0e10cSrcweir 30cdf0e10cSrcweir public class ExtensionFinder implements MethodFinder { 31cdf0e10cSrcweir 32cdf0e10cSrcweir private String[] extensions; 33cdf0e10cSrcweir private String language; 34cdf0e10cSrcweir ExtensionFinder(String language, String[] extensions)35cdf0e10cSrcweir public ExtensionFinder(String language, String[] extensions) { 36cdf0e10cSrcweir this.language = language; 37cdf0e10cSrcweir this.extensions = extensions; 38cdf0e10cSrcweir } 39cdf0e10cSrcweir findMethods(File basedir)40cdf0e10cSrcweir public ScriptEntry[] findMethods(File basedir) { 41cdf0e10cSrcweir String parcelName; 42cdf0e10cSrcweir ArrayList files = new ArrayList(10); 43cdf0e10cSrcweir ScriptEntry[] empty = new ScriptEntry[0]; 44cdf0e10cSrcweir 45cdf0e10cSrcweir if (basedir == null || basedir.exists() == false || 46cdf0e10cSrcweir basedir.isDirectory() == false) 47cdf0e10cSrcweir return empty; 48cdf0e10cSrcweir 49cdf0e10cSrcweir parcelName = basedir.getName(); 50cdf0e10cSrcweir if (parcelName.equals(ParcelZipper.CONTENTS_DIRNAME)) 51cdf0e10cSrcweir parcelName = basedir.getParentFile().getName(); 52cdf0e10cSrcweir 53cdf0e10cSrcweir findFiles(files, basedir, parcelName); 54cdf0e10cSrcweir 55cdf0e10cSrcweir if (files.size() != 0) 56cdf0e10cSrcweir return (ScriptEntry[])files.toArray(empty); 57cdf0e10cSrcweir return empty; 58cdf0e10cSrcweir } 59cdf0e10cSrcweir findFiles(ArrayList list, File basedir, String parcelName)60cdf0e10cSrcweir private void findFiles(ArrayList list, File basedir, String parcelName) { 61cdf0e10cSrcweir File[] children = basedir.listFiles(); 62cdf0e10cSrcweir File f; 63cdf0e10cSrcweir 64cdf0e10cSrcweir for (int i = 0; i < children.length; i++) { 65cdf0e10cSrcweir f = children[i]; 66cdf0e10cSrcweir 67cdf0e10cSrcweir if (f.isDirectory()) 68cdf0e10cSrcweir findFiles(list, f, parcelName); 69cdf0e10cSrcweir else { 70cdf0e10cSrcweir for (int j = 0; j < extensions.length; j++) { 71cdf0e10cSrcweir if (f.getName().endsWith(extensions[j])) { 72cdf0e10cSrcweir ScriptEntry entry = new ScriptEntry(language, 73cdf0e10cSrcweir f.getName(), f.getName(), parcelName); 74cdf0e10cSrcweir list.add(entry); 75cdf0e10cSrcweir break; 76cdf0e10cSrcweir } 77cdf0e10cSrcweir } 78cdf0e10cSrcweir } 79cdf0e10cSrcweir } 80cdf0e10cSrcweir } 81cdf0e10cSrcweir } 82