194cf3466dfe09f806a6e2c1ad93e5e6d0d53f0b
[idea/community.git] / platform / platform-api / src / com / intellij / util / io / ReadOnlyAttributeUtil.java
1 /*
2  * Copyright 2000-2012 JetBrains s.r.o.
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, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.intellij.util.io;
17
18 import com.intellij.openapi.util.io.FileUtil;
19 import com.intellij.openapi.vfs.VirtualFile;
20
21 import java.io.IOException;
22
23 public class ReadOnlyAttributeUtil {
24   /**
25    * Sets specified read-only status for the spcified <code>file</code>.
26    * This method can be performed only for files which are in local file system.
27    *
28    * @param file           file which read-only attribute to be changed.
29    * @param readOnlyStatus new read-only status.
30    * @throws java.lang.IllegalArgumentException
31    *                     if passed <code>file</code> doesn't
32    *                     belong to the local file system.
33    * @throws IOException if some <code>IOException</code> occurred.
34    */
35   public static void setReadOnlyAttribute(VirtualFile file, boolean readOnlyStatus) throws IOException {
36     if (file.getFileSystem().isReadOnly()) {
37       throw new IllegalArgumentException("Wrong file system: " + file.getFileSystem());
38     }
39
40     if (file.isWritable() == !readOnlyStatus) {
41       return;
42     }
43
44     file.setWritable(!readOnlyStatus);
45   }
46
47   public static void setReadOnlyAttribute(String path, boolean readOnlyStatus) throws IOException {
48     FileUtil.setReadOnlyAttribute(path, readOnlyStatus);
49   }
50 }