1 ////////////////////////////////////////////////////////////////////////////////
2 // MillScript: an Open Spice interpreter and batch website creation tool
3 // Copyright (C) 2005 Kevin Rogers
4 //
5 // This file is part of MillScript.
6 //
7 // MillScript is free software; you can redistribute it and/or modify it under
8 // the terms of the GNU General Public License as published by the Free
9 // Software Foundation; either version 2 of the License, or (at your option)
10 // any later version.
11 //
12 // MillScript is distributed in the hope that it will be useful, but WITHOUT
13 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
15 // more details.
16 //
17 // You should have received a copy of the GNU General Public License along with
18 // MillScript; if not, write to the Free Software Foundation, Inc., 59 Temple
19 // Place, Suite 330, Boston, MA 02111-1307 USA
20 ////////////////////////////////////////////////////////////////////////////////
21 package org.millscript.commons.vfs.protocols.file;
22
23 import org.millscript.commons.vfs.VFS;
24 import org.millscript.commons.vfs.VFolder;
25 import org.millscript.commons.vfs.alerts.VEntryNotFoundAlert;
26 import org.millscript.commons.vfs.protocols.AbstractProtocolVVolume;
27
28 import java.io.File;
29
30 /**
31 * The class implements a virtual filesystem volume for a local filesystem.
32 */
33 public class LocalVolume extends AbstractProtocolVVolume {
34
35 /**
36 * Constructs a new local file volume with the specified file as it's root.
37 *
38 * @param v the VFS that was used to create this volume
39 * @param root the virtual filesystem volume root
40 */
41 LocalVolume( final VFS v, final File root ) {
42 super( v, root.toURI() );
43 if ( !root.exists() ) {
44 // Doh! We can't make a volume from a invalid location
45 new VEntryNotFoundAlert(
46 "Requested VFS root does not exist"
47 ).culprit( "uri", root ).mishap();
48 }
49 if ( root.isFile() ) {
50 // Doh! We can't make a volume from a file
51 new VEntryNotFoundAlert(
52 "Requested VFS root is a file not a folder"
53 ).culprit( "uri", root ).mishap();
54 }
55 }
56
57 /**
58 * @see org.millscript.commons.vfs.protocols.AbstractProtocolVVolume#makeRootVFolder()
59 */
60 @Override
61 protected VFolder makeRootVFolder() {
62 return new LocalFolder( this, null, null );
63 }
64
65 }