1 /*--------------------------------------------------------------------------
\r
2 * Copyright 2008 Taro L. Saito
\r
4 * Licensed under the Apache License, Version 2.0 (the "License");
\r
5 * you may not use this file except in compliance with the License.
\r
6 * You may obtain a copy of the License at
\r
8 * http://www.apache.org/licenses/LICENSE-2.0
\r
10 * Unless required by applicable law or agreed to in writing, software
\r
11 * distributed under the License is distributed on an "AS IS" BASIS,
\r
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
13 * See the License for the specific language governing permissions and
\r
14 * limitations under the License.
\r
15 *--------------------------------------------------------------------------*/
\r
16 //--------------------------------------
\r
19 // SinglePathBuilder.java
\r
20 // Since: Oct 27, 2008 2:14:57 PM
\r
22 // $URL: http://www.xerial.org/svn/project/XerialJ/trunk/xerial-core/src/main/java/org/xerial/util/xml/SinglePathBuilder.java $
\r
24 //--------------------------------------
\r
25 package org.xerial.util.xml;
\r
27 import java.util.ArrayList;
\r
28 import java.util.Iterator;
\r
29 import java.util.NoSuchElementException;
\r
31 import org.xerial.util.xml.SinglePath.PathType;
\r
34 * A builder class for generating {@link SinglePath} instance
\r
39 public class SinglePathBuilder implements Iterable<String>
\r
41 private ArrayList<String> _path = new ArrayList<String>();
\r
42 private PathType _pathType = PathType.AbsolutePath;
\r
44 public SinglePathBuilder()
\r
47 public static SinglePathBuilder relativePathBuilder()
\r
49 SinglePathBuilder builder = new SinglePathBuilder();
\r
50 builder.setPathType(PathType.RelativePath);
\r
54 public SinglePathBuilder setPathType(PathType pathType)
\r
56 this._pathType = pathType;
\r
60 public SinglePathBuilder addChild(String tagName)
\r
66 public SinglePathBuilder removeLeaf()
\r
68 if (_path.size() <= 0)
\r
69 throw new NoSuchElementException("no leaf to remove");
\r
70 _path.remove(_path.size() - 1);
\r
76 return _path.size();
\r
79 public SinglePath build()
\r
81 return new SinglePath(_pathType, _path);
\r
84 public Iterator<String> iterator()
\r
86 return _path.iterator();
\r