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.ram;
18
19 import org.apache.commons.vfs2.FileSystem;
20 import org.apache.commons.vfs2.FileSystemConfigBuilder;
21 import org.apache.commons.vfs2.FileSystemOptions;
22
23 /**
24 * Config Builder for the RAM file system.
25 */
26 public final class RamFileSystemConfigBuilder extends FileSystemConfigBuilder {
27
28 /** Max size key. */
29 private static final String MAX_SIZE_KEY = "maxsize";
30
31 /** Config builder SINGLETON. */
32 private static final RamFileSystemConfigBuilder SINGLETON = new RamFileSystemConfigBuilder();
33
34 /**
35 * Gets the singleton builder.
36 *
37 * @return the singleton builder.
38 */
39 public static RamFileSystemConfigBuilder getInstance() {
40 return SINGLETON;
41 }
42
43 /**
44 * Constructor
45 */
46 private RamFileSystemConfigBuilder() {
47 super("ram.");
48 }
49
50 /**
51 * {@inheritDoc}
52 */
53 @Override
54 protected Class<? extends FileSystem> getConfigClass() {
55 return RamFileSystem.class;
56 }
57
58 /**
59 * Defaults to {@link Integer#MAX_VALUE}.
60 *
61 * @param opts The FileSystem options.
62 * @return The maximum size of the file.
63 * @see #setMaxSize(FileSystemOptions, long)
64 * @since 2.1
65 */
66 public long getLongMaxSize(final FileSystemOptions opts) {
67 return getLong(opts, MAX_SIZE_KEY, Long.MAX_VALUE);
68 }
69
70 /**
71 * Defaults to {@link Integer#MAX_VALUE}.
72 *
73 * @param opts The FileSystem options.
74 * @return The maximum size of the file. The next major version will change the return type to a long.
75 * @see #setMaxSize(FileSystemOptions, int)
76 */
77 public int getMaxSize(final FileSystemOptions opts) {
78 return getLong(opts, MAX_SIZE_KEY, Long.valueOf(Integer.MAX_VALUE)).intValue();
79 }
80
81 /**
82 * Sets the maximum size of the file system.
83 *
84 * @param opts The FileSystem options.
85 * @param sizeInBytes The maximum file size.
86 * @deprecated Use {@link #setMaxSize(FileSystemOptions, long)}
87 */
88 @Deprecated
89 public void setMaxSize(final FileSystemOptions opts, final int sizeInBytes) {
90 setParam(opts, MAX_SIZE_KEY, Long.valueOf(sizeInBytes));
91 }
92
93 /**
94 * Sets the maximum size of the file system.
95 *
96 * @param opts The FileSystem options.
97 * @param sizeInBytes The maximum file size.
98 */
99 public void setMaxSize(final FileSystemOptions opts, final long sizeInBytes) {
100 setParam(opts, MAX_SIZE_KEY, Long.valueOf(sizeInBytes));
101 }
102
103 }