KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > alfresco > repo > template > NamePathResultsMap


1 /*
2  * Copyright (C) 2005 Alfresco, Inc.
3  *
4  * Licensed under the Mozilla Public License version 1.1
5  * with a permitted attribution clause. You may obtain a
6  * copy of the License at
7  *
8  * http://www.alfresco.org/legal/license.txt
9  *
10  * Unless required by applicable law or agreed to in writing,
11  * software distributed under the License is distributed on an
12  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13  * either express or implied. See the License for the specific
14  * language governing permissions and limitations under the
15  * License.
16  */

17 package org.alfresco.repo.template;
18
19 import java.util.List JavaDoc;
20 import java.util.StringTokenizer JavaDoc;
21
22 import org.alfresco.service.ServiceRegistry;
23 import org.alfresco.service.cmr.repository.TemplateNode;
24
25 /**
26  * A special Map that executes an XPath against the parent Node as part of the get()
27  * Map interface implementation.
28  *
29  * @author Kevin Roast
30  */

31 public final class NamePathResultsMap extends BasePathResultsMap
32 {
33     /**
34      * Constructor
35      *
36      * @param parent The parent TemplateNode to execute searches from
37      * @param services The ServiceRegistry to use
38      */

39     public NamePathResultsMap(TemplateNode parent, ServiceRegistry services)
40     {
41         super(parent, services);
42     }
43     
44     /**
45      * @see java.util.Map#get(java.lang.Object)
46      */

47     public Object JavaDoc get(Object JavaDoc key)
48     {
49         StringBuilder JavaDoc xpath = new StringBuilder JavaDoc(128);
50         for (StringTokenizer JavaDoc t = new StringTokenizer JavaDoc(key.toString(), "/"); t.hasMoreTokens(); /**/)
51         {
52             if (xpath.length() != 0)
53             {
54                 xpath.append('/');
55             }
56             xpath.append("*[@cm:name='")
57                  .append(t.nextToken()) // TODO: use QueryParameterDefinition see FileFolderService.search()
58
.append("']");
59         }
60         
61         List JavaDoc<TemplateNode> nodes = getChildrenByXPath(xpath.toString(), true);
62         return (nodes.size() != 0) ? nodes.get(0) : null;
63     }
64 }
65
Popular Tags