Coverage Report - org.seasar.uruma.util.win32.VolumeInformation
 
Classes in this File Line Coverage Branch Coverage Complexity
VolumeInformation
98%
56/57
50%
12/24
0
 
 1  
 /*
 2  
  * Copyright 2004-2008 the Seasar Foundation and the Others.
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *     http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 
 13  
  * either express or implied. See the License for the specific language
 14  
  * governing permissions and limitations under the License.
 15  
  */
 16  
 package org.seasar.uruma.util.win32;
 17  
 
 18  
 /**
 19  
  * ボリュームに関する情報を保持するクラスです。<br />
 20  
  * 
 21  
  * @author y-komori
 22  
  */
 23  
 public class VolumeInformation {
 24  
     static final int FS_CASE_IS_PRESERVED = 2;
 25  
 
 26  
     static final int FS_CASE_SENSITIVE = 1;
 27  
 
 28  
     static final int FS_UNICODE_STORED_ON_DISK = 4;
 29  
 
 30  
     static final int FS_PERSISTENT_ACLS = 8;
 31  
 
 32  
     static final int FS_FILE_COMPRESSION = 16;
 33  
 
 34  
     static final int FS_VOL_IS_COMPRESSED = 32768;
 35  
 
 36  
     static final int FILE_NAMED_STREAMS = 0x00040000;
 37  
 
 38  
     static final int FILE_SUPPORTS_ENCRYPTION = 0x00020000;
 39  
 
 40  
     static final int FILE_SUPPORTS_OBJECT_IDS = 0x00010000;
 41  
 
 42  
     static final int FILE_SUPPORTS_REPARSE_POINTS = 0x00000080;
 43  
 
 44  
     static final int FILE_SUPPORTS_SPARSE_FILES = 0x00000040;
 45  
 
 46  
     static final int FILE_VOLUME_QUOTAS = 0x00000020;
 47  
 
 48  
     private String rootPath;
 49  
 
 50  
     private String volumeLabel;
 51  
 
 52  
     private int serialNumber;
 53  
 
 54  
     private String fileSystemName;
 55  
 
 56  
     private int maxComponentLength;
 57  
 
 58  
     private int fileSystemFlags;
 59  
 
 60  4
     VolumeInformation() {
 61  4
     }
 62  
 
 63  
     /**
 64  
      * ボリュームのルートパスを返します。<br />
 65  
      * 
 66  
      * @return ルートパス
 67  
      */
 68  
     public String getRootPath() {
 69  4
         return this.rootPath;
 70  
     }
 71  
 
 72  
     void setRootPath(final String rootPath) {
 73  4
         this.rootPath = rootPath;
 74  4
     }
 75  
 
 76  
     /**
 77  
      * ボリュームラベルを返します。<br />
 78  
      * 
 79  
      * @return ボリュームラベル
 80  
      */
 81  
     public String getVolumeLabel() {
 82  4
         return this.volumeLabel;
 83  
     }
 84  
 
 85  
     void setVolumeLabel(final String volumeLabel) {
 86  4
         this.volumeLabel = volumeLabel;
 87  4
     }
 88  
 
 89  
     /**
 90  
      * ボリュームシリアルナンバーを返します。<br />
 91  
      * 
 92  
      * @return ボリュームシリアルナンバー
 93  
      */
 94  
     public int getSerialNumber() {
 95  0
         return this.serialNumber;
 96  
     }
 97  
 
 98  
     /**
 99  
      * ボリュームシリアルナンバーを文字列で返します。<br />
 100  
      * 
 101  
      * @return ボリュームシリアルナンバー
 102  
      */
 103  
     public String getSerialNumberAsString() {
 104  4
         int high = (this.serialNumber >> 16) & 0x0000ffff;
 105  4
         int low = this.serialNumber & 0x0000ffff;
 106  4
         StringBuilder builder = new StringBuilder();
 107  4
         builder.append(String.format("%04X", high));
 108  4
         builder.append("-");
 109  4
         builder.append(String.format("%04X", low));
 110  4
         return builder.toString();
 111  
     }
 112  
 
 113  
     void setSerialNumber(final int serialNumber) {
 114  4
         this.serialNumber = serialNumber;
 115  4
     }
 116  
 
 117  
     /**
 118  
      * ファイルシステム名を返します。<br />
 119  
      * 
 120  
      * @return ファイルシステム名
 121  
      */
 122  
     public String getFileSystemName() {
 123  4
         return this.fileSystemName;
 124  
     }
 125  
 
 126  
     void setFileSystemName(final String fileSystemName) {
 127  4
         this.fileSystemName = fileSystemName;
 128  4
     }
 129  
 
 130  
     /**
 131  
      * ファイルシステムがサポートするファイル名の最大長を返します。<br />
 132  
      * 
 133  
      * @return ファイル名の最大長
 134  
      */
 135  
     public int getMaxComponentLength() {
 136  4
         return this.maxComponentLength;
 137  
     }
 138  
 
 139  
     void setMaxComponentLength(final int maxComponentLength) {
 140  4
         this.maxComponentLength = maxComponentLength;
 141  4
     }
 142  
 
 143  
     void setFileSystemFlags(final int fileSystemFlags) {
 144  4
         this.fileSystemFlags = fileSystemFlags;
 145  4
     }
 146  
 
 147  
     /**
 148  
      * ファイルシステムがディスクにファイル名を保存する際、大文字と小文字を区別するかどうかを返します。<br />
 149  
      * 
 150  
      * @return 区別する場合は <code>true</code>、区別しない場合は <code>false</code>
 151  
      */
 152  
     public boolean isCaseIsPreserved() {
 153  4
         return (fileSystemFlags & FS_CASE_IS_PRESERVED) != 0 ? true : false;
 154  
     }
 155  
 
 156  
     /**
 157  
      * ファイルシステムがファイル名の大文字と小文字を区別するかどうかを返します。<br />
 158  
      * 
 159  
      * @return 区別する場合は <code>true</code>、区別しない場合は <code>false</code>
 160  
      */
 161  
     public boolean isCaseSensitive() {
 162  4
         return (fileSystemFlags & FS_CASE_SENSITIVE) != 0 ? true : false;
 163  
 
 164  
     }
 165  
 
 166  
     /**
 167  
      * ファイルシステムが Unicode のファイル名をサポートしていて、ディスク上でも正しく表示されるかどうかを返します。<br />
 168  
      * 
 169  
      * @return サポートしている場合は <code>true</code>、そうでない場合は <code>false</code>
 170  
      */
 171  
     public boolean isUnicodeStoredOnDisk() {
 172  4
         return (fileSystemFlags & FS_UNICODE_STORED_ON_DISK) != 0 ? true
 173  
                 : false;
 174  
     }
 175  
 
 176  
     /**
 177  
      * ファイルシステムは、ACL(アクセス制御リスト)の保存と適用を行うかどうかを返します。<br />
 178  
      * 
 179  
      * @return サポートしている場合は <code>true</code>、そうでない場合は <code>false</code>
 180  
      */
 181  
     public boolean isPersistentACLs() {
 182  4
         return (fileSystemFlags & FS_PERSISTENT_ACLS) != 0 ? true : false;
 183  
     }
 184  
 
 185  
     /**
 186  
      * ファイルシステムが、ファイルベースの圧縮をサポートしているかどうかを返します。<br />
 187  
      * 
 188  
      * @return サポートしている場合は <code>true</code>、そうでない場合は <code>false</code>
 189  
      */
 190  
     public boolean isFileCompression() {
 191  4
         return (fileSystemFlags & FS_FILE_COMPRESSION) != 0 ? true : false;
 192  
     }
 193  
 
 194  
     /**
 195  
      * ボリュームが圧縮されているかどうかを返します。<br />
 196  
      * 
 197  
      * @return サポートしている場合は <code>true</code>、そうでない場合は <code>false</code>
 198  
      */
 199  
     public boolean isVolumeComplessed() {
 200  4
         return (fileSystemFlags & FS_VOL_IS_COMPRESSED) != 0 ? true : false;
 201  
     }
 202  
 
 203  
     /**
 204  
      * ファイルシステムが名前付きストリームをサポートしているかどうかを返します。<br />
 205  
      * 
 206  
      * @return サポートしている場合は <code>true</code>、そうでない場合は <code>false</code>
 207  
      */
 208  
     public boolean isNamedStreams() {
 209  4
         return (fileSystemFlags & FILE_NAMED_STREAMS) != 0 ? true : false;
 210  
     }
 211  
 
 212  
     /**
 213  
      * ファイルシステムが、暗号化ファイルシステムをサポートしているかどうかを返します。<br />
 214  
      * 
 215  
      * @return サポートしている場合は <code>true</code>、そうでない場合は <code>false</code>
 216  
      */
 217  
     public boolean isSupportsEncryption() {
 218  4
         return (fileSystemFlags & FILE_SUPPORTS_ENCRYPTION) != 0 ? true : false;
 219  
     }
 220  
 
 221  
     /**
 222  
      * ファイルシステムがオブジェクト識別子をサポートしているかどうかを返します。<br />
 223  
      * 
 224  
      * @return サポートしている場合は <code>true</code>、そうでない場合は <code>false</code>
 225  
      */
 226  
     public boolean isSupportsObjectIDs() {
 227  4
         return (fileSystemFlags & FILE_SUPPORTS_OBJECT_IDS) != 0 ? true : false;
 228  
     }
 229  
 
 230  
     /**
 231  
      * ファイルシステムが再解析ポイントをサポートしているかどうかを返します。 <br />
 232  
      * 
 233  
      * @return サポートしている場合は <code>true</code>、そうでない場合は <code>false</code>
 234  
      */
 235  
     public boolean isSupportsReparsePoints() {
 236  4
         return (fileSystemFlags & FILE_SUPPORTS_REPARSE_POINTS) != 0 ? true
 237  
                 : false;
 238  
     }
 239  
 
 240  
     /**
 241  
      * ファイルシステムがスパースファイルをサポートしているかどうかを返します。<br />
 242  
      * 
 243  
      * @return サポートしている場合は <code>true</code>、そうでない場合は <code>false</code>
 244  
      */
 245  
     public boolean isSupportsSparseFiles() {
 246  4
         return (fileSystemFlags & FILE_SUPPORTS_SPARSE_FILES) != 0 ? true
 247  
                 : false;
 248  
     }
 249  
 
 250  
     /**
 251  
      * ファイルシステムがディスククォータをサポートしているかどうかを返します。<br />
 252  
      * 
 253  
      * @return サポートしている場合は <code>true</code>、そうでない場合は <code>false</code>
 254  
      */
 255  
     public boolean isVolumeQuotas() {
 256  4
         return (fileSystemFlags & FILE_VOLUME_QUOTAS) != 0 ? true : false;
 257  
     }
 258  
 
 259  
     /*
 260  
      * @see java.lang.Object#toString()
 261  
      */
 262  
     @Override
 263  
     public String toString() {
 264  4
         StringBuilder builder = new StringBuilder();
 265  4
         builder
 266  
                 .append("RootPath                     : " + getRootPath()
 267  
                         + "\n");
 268  4
         builder.append("VolumeLabel                  : " + getVolumeLabel()
 269  
                 + "\n");
 270  4
         builder.append("SerialNumber                 : "
 271  
                 + getSerialNumberAsString() + "\n");
 272  4
         builder.append("FileSystemName               : " + getFileSystemName()
 273  
                 + "\n");
 274  4
         builder.append("MaxComponentLength           : "
 275  
                 + getMaxComponentLength() + "\n");
 276  4
         builder.append("FS_CASE_IS_PRESERVED         : " + isCaseIsPreserved()
 277  
                 + "\n");
 278  4
         builder.append("FS_CASE_SENSITIVE            : " + isCaseSensitive()
 279  
                 + "\n");
 280  4
         builder.append("FS_UNICODE_STORED_ON_DISK    : "
 281  
                 + isUnicodeStoredOnDisk() + "\n");
 282  4
         builder.append("FS_PERSISTENT_ACLS           : " + isPersistentACLs()
 283  
                 + "\n");
 284  4
         builder.append("FS_FILE_COMPRESSION          : " + isFileCompression()
 285  
                 + "\n");
 286  4
         builder.append("FS_VOL_IS_COMPRESSED         : " + isVolumeComplessed()
 287  
                 + "\n");
 288  4
         builder.append("FILE_NAMED_STREAMS           : " + isNamedStreams()
 289  
                 + "\n");
 290  4
         builder.append("FILE_SUPPORTS_ENCRYPTION     : "
 291  
                 + isSupportsEncryption() + "\n");
 292  4
         builder.append("FILE_SUPPORTS_OBJECT_IDS     : "
 293  
                 + isSupportsObjectIDs() + "\n");
 294  4
         builder.append("FILE_SUPPORTS_REPARSE_POINTS : "
 295  
                 + isSupportsReparsePoints() + "\n");
 296  4
         builder.append("FILE_SUPPORTS_SPARSE_FILES   : "
 297  
                 + isSupportsSparseFiles() + "\n");
 298  4
         builder.append("FILE_VOLUME_QUOTAS           : " + isVolumeQuotas()
 299  
                 + "\n");
 300  4
         return builder.toString();
 301  
     }
 302  
 }