01: /*
02: * The contents of this file are subject to the terms of the Common Development
03: * and Distribution License (the License). You may not use this file except in
04: * compliance with the License.
05: *
06: * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
07: * or http://www.netbeans.org/cddl.txt.
08: *
09: * When distributing Covered Code, include this CDDL Header Notice in each file
10: * and include the License file at http://www.netbeans.org/cddl.txt.
11: * If applicable, add the following below the CDDL Header, with the fields
12: * enclosed by brackets [] replaced by your own identifying information:
13: * "Portions Copyrighted [year] [name of copyright owner]"
14: *
15: * The Original Software is NetBeans. The Initial Developer of the Original
16: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
17: * Microsystems, Inc. All Rights Reserved.
18: */
19:
20: package org.netbeans.modules.xml.xpath.ext;
21:
22: import java.util.HashMap;
23: import org.netbeans.modules.xml.xpath.ext.metadata.CoreFunctionMetadata;
24: import org.netbeans.modules.xml.xpath.ext.metadata.impl.CoreFunctionMetadataImpl.*;
25:
26: /**
27: * Types of the core XPath functions.
28: *
29: * @author nk160297
30: * @version
31: */
32: public enum CoreFunctionType {
33: FUNC_LAST(new LastFuncMetadata()), // Function code: last
34: FUNC_POSITION(new PositionFuncMetadata()), // Function code: position
35: FUNC_COUNT(new CountFuncMetadata()), // Function code: count
36: FUNC_ID(new IdFuncMetadata()), // Function code: id
37: FUNC_LOCAL_NAME(new LocalNameFuncMetadata()), // Function code: local-name
38: FUNC_NAMESPACE_URI(new NamespaceUriFuncMetadata()), // Function code: namespace-uri
39: FUNC_NAME(new NameFuncMetadata()), // Function code: name
40: FUNC_STRING(new StringFuncMetadata()), // Function code: string
41: FUNC_CONCAT(new ConcatFuncMetadata()), // Function code: concat
42: FUNC_STARTS_WITH(new StartsWithFuncMetadata()), // Function code: starts-with
43: FUNC_CONTAINS(new ContainsFuncMetadata()), // Function code: contains
44: FUNC_SUBSTRING_BEFORE(new SubstringBeforeFuncMetadata()), // Function code: substring-before
45: FUNC_SUBSTRING_AFTER(new SubstringAfterFuncMetadata()), // Function code: substring-after
46: FUNC_SUBSTRING(new SubstringFuncMetadata()), // Function code: substring
47: FUNC_STRING_LENGTH(new StringLengthFuncMetadata()), // Function code: string-length
48: FUNC_NORMALIZE_SPACE(new NormalizeSpaceFuncMetadata()), // Function code: normalize-space
49: FUNC_TRANSLATE(new TranslateFuncMetadata()), // Function code: translate
50: FUNC_BOOLEAN(new BooleanFuncMetadata()), // Function code: boolean
51: FUNC_NOT(new NotFuncMetadata()), // Function code: not
52: FUNC_TRUE(new TrueFuncMetadata()), // Function code: true
53: FUNC_FALSE(new FalseFuncMetadata()), // Function code: false
54: FUNC_LANG(new LangFuncMetadata()), // Function code: lang
55: FUNC_NUMBER(new NumberFuncMetadata()), // Function code: number
56: FUNC_SUM(new SumFuncMetadata()), // Function code: sum
57: FUNC_FLOOR(new FloorFuncMetadata()), // Function code: floor
58: FUNC_CEILING(new CeilingFuncMetadata()), // Function code: ceiling
59: FUNC_ROUND(new RoundFuncMetadata()); // Function code: round
60: //
61: // Following functions are extenstion but they are resolved by JXPath.
62: // So they are considered as core functions here.
63: // COMMENTED BECAUSE THE RUNTIME DOESN'T SUPPORT THEM!
64: // FUNC_NULL(new NullFuncMetadata()), // Function code: null
65: // FUNC_KEY(new KeyFuncMetadata()), // Function code: key
66: // FUNC_FORMAT_NUMBER(new FormatNumberFuncMetadata()); // Function code: format-number
67:
68: private CoreFunctionMetadata myMetadata;
69:
70: private CoreFunctionType(CoreFunctionMetadata metadata) {
71: myMetadata = metadata;
72: }
73:
74: public CoreFunctionMetadata getMetadata() {
75: return myMetadata;
76: }
77:
78: //==========================================================================
79:
80: private static HashMap<String, CoreFunctionType> sNameTypeMap;
81:
82: public static synchronized CoreFunctionType getTypeByName(
83: String funcName) {
84: if (sNameTypeMap == null) {
85: sNameTypeMap = new HashMap<String, CoreFunctionType>();
86: //
87: for (CoreFunctionType type : CoreFunctionType.values()) {
88: String typeName = type.getMetadata().getName();
89: sNameTypeMap.put(typeName, type);
90: }
91: }
92: //
93: return sNameTypeMap.get(funcName);
94: }
95: }
|