blob: 1a3962adbb6c1d64d53b2e3d6be5b62b9dcfe4b1 [file] [log] [blame]
/*-
* Copyright (C) 2002, 2018, Oracle and/or its affiliates. All rights reserved.
*
* This file was distributed by Oracle as part of a version of Oracle Berkeley
* DB Java Edition made available at:
*
* http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html
*
* Please see the LICENSE file included in the top-level directory of the
* appropriate version of Oracle Berkeley DB Java Edition for a copy of the
* license and additional information.
*/
package com.sleepycat.je.utilint;
import java.io.IOException;
import java.nio.file.FileStore;
import java.nio.file.FileSystems;
import java.nio.file.Files;
/**
* An implementation of {@link FileStoreInfo} that uses Java 7 facilities.
* Until we require Java 7, this class should only be referenced via
* reflection.
*/
class Java7FileStoreInfo extends FileStoreInfo {
/** The underlying Java 7 file store. */
private final FileStore fileStore;
/** The associated Factory. */
static class Java7Factory implements Factory {
@Override
public void factoryCheckSupported() { }
@Override
public FileStoreInfo factoryGetInfo(final String file)
throws IOException {
return new Java7FileStoreInfo(file);
}
}
/**
* Creates an instance for the specified file.
*
* @param file the file
* @throws IllegalArgumentException if the argument is {@code null}
* @throws IOException if there is an I/O error
*/
Java7FileStoreInfo(final String file)
throws IOException {
if (file == null) {
throw new IllegalArgumentException("The file must not be null");
}
fileStore = Files.getFileStore(FileSystems.getDefault().getPath(file));
}
@Override
public long getTotalSpace()
throws IOException {
return fileStore.getTotalSpace();
}
@Override
public long getUsableSpace()
throws IOException {
return fileStore.getUsableSpace();
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
} else if (!(obj instanceof Java7FileStoreInfo)) {
return false;
} else {
return fileStore.equals(((Java7FileStoreInfo) obj).fileStore);
}
}
@Override
public int hashCode() {
return 197 + (fileStore.hashCode() ^ 199);
}
@Override
public String toString() {
return fileStore.toString();
}
}