/**\r
* wrap external functions in a plugin\r
*/\r
- public static class BloombergAddIn extends UDFFinder {\r
+ public static class BloombergAddIn implements UDFFinder {\r
private final Map<String, FreeRefFunction> _functionsByName;\r
\r
public BloombergAddIn() {\r
wb.write(out);\r
out.close();\r
\r
- wb.close();\r
}\r
\r
}\r
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collections;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.regex.Pattern;
-import java.util.Collections;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.poi.EncryptedDocumentException;
* The locator of user-defined functions.
* By default includes functions from the Excel Analysis Toolpack
*/
- private UDFFinder _udfFinder = new IndexedUDFFinder(UDFFinder.getDefault());
+ private UDFFinder _udfFinder = new IndexedUDFFinder(AggregatingUDFFinder.DEFAULT);
public static HSSFWorkbook create(InternalWorkbook book) {
return new HSSFWorkbook(book);
/**
* Analysis Toolpack Function Definitions
*/
-public final class AnalysisToolPak extends UDFFinder {
+public final class AnalysisToolPak implements UDFFinder {
public static final UDFFinder instance = new AnalysisToolPak();
package org.apache.poi.ss.formula.udf;
+import org.apache.poi.ss.formula.atp.AnalysisToolPak;
import org.apache.poi.ss.formula.functions.FreeRefFunction;
import java.util.ArrayList;
/**
* Collects add-in libraries and VB macro functions together into one UDF finder
+ *
+ * @author PUdalau
*/
-public class AggregatingUDFFinder extends UDFFinder {
+public class AggregatingUDFFinder implements UDFFinder {
+
+ /**
+ * Default UDFFinder implementation
+ */
+ public static final UDFFinder DEFAULT = new AggregatingUDFFinder(AnalysisToolPak.instance);
private final Collection<UDFFinder> _usedToolPacks;
/**
* Default UDF finder - for adding your own user defined functions.
+ *
+ * @author PUdalau
*/
-public final class DefaultUDFFinder extends UDFFinder {
+public final class DefaultUDFFinder implements UDFFinder {
private final Map<String, FreeRefFunction> _functionsByName;
public DefaultUDFFinder(String[] functionNames, FreeRefFunction[] functionImpls) {
import org.apache.poi.ss.formula.functions.FreeRefFunction;
/**
- * Common abstract class for "Add-in" libraries and user defined function libraries.
+ * Common interface for "Add-in" libraries and user defined function libraries.
*/
-public abstract class UDFFinder {
- public static UDFFinder getDefault() {
- return new AggregatingUDFFinder(AnalysisToolPak.instance);
- }
+public interface UDFFinder {
+ // FIXME: Findbugs error: IC_SUPERCLASS_USES_SUBCLASS_DURING_INITIALIZATION
+ /**
+ * Default UDFFinder implementation
+ *
+ * @deprecated use AggregatingUDFFinder.DEFAULT instead, deprecated in POI 3.15,
+ * scheduled for removable in POI 3.17
+ */
+ @Deprecated
+ public static final UDFFinder DEFAULT = new AggregatingUDFFinder(AnalysisToolPak.instance);
/**
* Returns executor by specified name. Returns <code>null</code> if the function name is unknown.
* @param name Name of function.
* @return Function executor.
*/
- public abstract FreeRefFunction findFunction(String name);
+ FreeRefFunction findFunction(String name);
}
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
-import java.util.Locale;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.regex.Pattern;
import org.apache.poi.poifs.crypt.HashAlgorithm;
import org.apache.poi.ss.SpreadsheetVersion;
import org.apache.poi.ss.formula.SheetNameFormatter;
+import org.apache.poi.ss.formula.udf.AggregatingUDFFinder;
import org.apache.poi.ss.formula.udf.IndexedUDFFinder;
import org.apache.poi.ss.formula.udf.UDFFinder;
import org.apache.poi.ss.usermodel.Row;
* The locator of user-defined functions.
* By default includes functions from the Excel Analysis Toolpack
*/
- private IndexedUDFFinder _udfFinder = new IndexedUDFFinder(UDFFinder.getDefault());
+ private IndexedUDFFinder _udfFinder = new IndexedUDFFinder(AggregatingUDFFinder.DEFAULT);
/**
* TODO
public void testAddNameX() throws IOException {
HSSFWorkbook hwb = new HSSFWorkbook();
InternalWorkbook wb = TestHSSFWorkbook.getInternalWorkbook(hwb);
- assertNotNull(wb.getNameXPtg("ISODD", UDFFinder.getDefault()));
+ assertNotNull(wb.getNameXPtg("ISODD", AggregatingUDFFinder.DEFAULT));
FreeRefFunction NotImplemented = new FreeRefFunction() {
public ValueEval evaluate(ValueEval[] args, OperationEvaluationContext ec) {