summaryrefslogtreecommitdiff
path: root/src/main/java/io/skas/melbjvm/nio2/Nio2MetaDataLoggingUtils.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/io/skas/melbjvm/nio2/Nio2MetaDataLoggingUtils.java')
-rw-r--r--src/main/java/io/skas/melbjvm/nio2/Nio2MetaDataLoggingUtils.java115
1 files changed, 115 insertions, 0 deletions
diff --git a/src/main/java/io/skas/melbjvm/nio2/Nio2MetaDataLoggingUtils.java b/src/main/java/io/skas/melbjvm/nio2/Nio2MetaDataLoggingUtils.java
new file mode 100644
index 0000000..3c2451d
--- /dev/null
+++ b/src/main/java/io/skas/melbjvm/nio2/Nio2MetaDataLoggingUtils.java
@@ -0,0 +1,115 @@
+package io.skas.melbjvm.nio2;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.nio.file.FileStore;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.attribute.*;
+import java.util.Set;
+
+public class Nio2MetaDataLoggingUtils {
+
+ public static final Logger LOG = LoggerFactory.getLogger(Nio2MetaDataLoggingUtils.class);
+
+ public static final long BYTES_IN_MEGABYTE = 1048576L;
+
+ public static final String BASIC_VIEW = "basic";
+ public static final String OWNER_VIEW = "owner";
+ public static final String USER_VIEW = "user";
+ public static final String UNIX_VIEW = "unix";
+ public static final String DOS_VIEW = "dos";
+ public static final String POSIX_VIEW = "posix";
+
+ public static void logBasicFileAttributes(Path path) throws IOException {
+ final FileStore fileStore = Files.getFileStore(path);
+
+ if (fileStore.supportsFileAttributeView(BASIC_VIEW)) {
+ BasicFileAttributes basicFileAttributes = Files.readAttributes(path, BasicFileAttributes.class);
+
+ LOG.info("Basic file attributes for path [{}]", path);
+
+ LOG.info(" isDirectory? {}", basicFileAttributes.isDirectory());
+ LOG.info(" isOther? {}", basicFileAttributes.isOther());
+ LOG.info(" isRegularFile? {}", basicFileAttributes.isRegularFile());
+ LOG.info(" isSymbolicLink? {}", basicFileAttributes.isSymbolicLink());
+ } else {
+ LOG.info("the file store in which [{}] resides doesn't support the [{}] file attribute view", path, BASIC_VIEW);
+ }
+ }
+
+ public static void logDosFileAttributes(Path path) throws IOException {
+ final FileStore fileStore = Files.getFileStore(path);
+
+ if (fileStore.supportsFileAttributeView(DOS_VIEW)) {
+ DosFileAttributes dosFileAttributes = Files.readAttributes(path, DosFileAttributes.class);
+
+ LOG.info("Dos file attributes for path [{}]", path);
+
+ LOG.info(" isArchive? {}", dosFileAttributes.isArchive());
+ LOG.info(" isHidden? {}", dosFileAttributes.isHidden());
+ LOG.info(" isReadOnly? {}", dosFileAttributes.isReadOnly());
+ LOG.info(" isSystem? {}", dosFileAttributes.isSystem());
+ } else {
+ LOG.info("the file store in which [{}] resides doesn't support the [{}] file attribute view", path, DOS_VIEW);
+ }
+ }
+
+ public static void logPosixFileAttributes(Path path) throws IOException {
+ final FileStore fileStore = Files.getFileStore(path);
+
+ if (fileStore.supportsFileAttributeView(POSIX_VIEW)) {
+ PosixFileAttributes posixFileAttributes = Files.readAttributes(path, PosixFileAttributes.class);
+
+ final Set<PosixFilePermission> permissions = posixFileAttributes.permissions();
+
+ LOG.info("Posix file attributes for path [{}]", path);
+
+ LOG.info(" owner? {}", posixFileAttributes.owner());
+ LOG.info(" group? {}", posixFileAttributes.group());
+ LOG.info(" owner permissions? {}",
+ (permissions.contains(PosixFilePermission.OWNER_READ) ? "r" : "-") +
+ (permissions.contains(PosixFilePermission.OWNER_WRITE) ? "w" : "-") +
+ (permissions.contains(PosixFilePermission.OWNER_EXECUTE) ? "x" : "-"));
+ LOG.info(" group permissions? {}",
+ (permissions.contains(PosixFilePermission.GROUP_READ) ? "r" : "-") +
+ (permissions.contains(PosixFilePermission.GROUP_WRITE) ? "w" : "-") +
+ (permissions.contains(PosixFilePermission.GROUP_EXECUTE) ? "x" : "-"));
+ LOG.info(" others permissions? {}",
+ (permissions.contains(PosixFilePermission.OTHERS_READ) ? "r" : "-") +
+ (permissions.contains(PosixFilePermission.OTHERS_WRITE) ? "w" : "-") +
+ (permissions.contains(PosixFilePermission.OTHERS_EXECUTE) ? "x" : "-"));
+ } else {
+ LOG.info("the file store in which [{}] resides doesn't support the [{}] file attribute view", path, POSIX_VIEW);
+ }
+ }
+
+ public static void logFileOwnerAttributes(Path path) throws IOException {
+ final FileStore fileStore = Files.getFileStore(path);
+
+ if (fileStore.supportsFileAttributeView(OWNER_VIEW)) {
+ final FileOwnerAttributeView fileAttributeView = Files.getFileAttributeView(path, FileOwnerAttributeView.class);
+ LOG.info("Owner file attributes for path [{}]", path);
+
+ LOG.info(" principal: {}", fileAttributeView.getOwner());
+
+ } else {
+ LOG.info("the file store in which [{}] resides doesn't support the [{}] file attribute view", path, OWNER_VIEW);
+ }
+ }
+
+ public static void logFileStoreAttributes(Path path) throws IOException {
+ final FileStore fileStore = Files.getFileStore(path);
+
+ LOG.info("File store attributes for path [{}]", path);
+
+ LOG.info(" name: {}", fileStore.name());
+ LOG.info(" type: {}", fileStore.type());
+ LOG.info(" total space: {}", fileStore.getTotalSpace() / BYTES_IN_MEGABYTE);
+ LOG.info(" total unallocated: {}", fileStore.getUnallocatedSpace() / BYTES_IN_MEGABYTE);
+ LOG.info(" total space: {}", fileStore.getUsableSpace() / BYTES_IN_MEGABYTE);
+ }
+
+}