View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  package org.apache.commons.vfs2.provider.local;
18  
19  import org.apache.commons.vfs2.FileName;
20  import org.apache.commons.vfs2.FileSystemException;
21  import org.apache.commons.vfs2.FileType;
22  import org.apache.commons.vfs2.provider.AbstractFileName;
23  import org.apache.commons.vfs2.provider.UriParser;
24  
25  /**
26   * A local file URI.
27   */
28  public class LocalFileName extends AbstractFileName {
29  
30      private final String rootFile;
31  
32      /**
33       * Constructs a new instance.
34       *
35       * @param scheme the scheme.
36       * @param rootFile the root file.
37       * @param path the absolute path, maybe empty or null.
38       * @param type the file type.
39       */
40      protected LocalFileName(final String scheme, final String rootFile, final String path, final FileType type) {
41          super(scheme, path, type);
42          this.rootFile = rootFile;
43      }
44  
45      /**
46       * Builds the root URI for this file name.
47       */
48      @Override
49      protected void appendRootUri(final StringBuilder buffer, final boolean addPassword) {
50          buffer.append(getScheme());
51          buffer.append("://");
52          buffer.append(rootFile);
53      }
54  
55      /**
56       * Factory method for creating name instances.
57       *
58       * @param path The file path.
59       * @param type The file type.
60       * @return The FileName.
61       */
62      @Override
63      public FileName createName(final String path, final FileType type) {
64          return new LocalFileName(getScheme(), rootFile, path, type);
65      }
66  
67      /**
68       * Returns the root file for this file.
69       *
70       * @return The root file name.
71       */
72      public String getRootFile() {
73          return rootFile;
74      }
75  
76      /**
77       * Returns the decoded URI of the file.
78       *
79       * @return the FileName as a URI.
80       */
81      @Override
82      public String toString() {
83          try {
84              return UriParser.decode(super.getURI());
85          } catch (final FileSystemException e) {
86              return super.getURI();
87          }
88      }
89  }