4121 |
22 Sep 16 |
nicklas |
1 |
package net.sf.basedb.opengrid.filetransfer; |
4121 |
22 Sep 16 |
nicklas |
2 |
|
4121 |
22 Sep 16 |
nicklas |
3 |
/** |
4121 |
22 Sep 16 |
nicklas |
Represents the permission code for a file on a UNIX file system. |
4121 |
22 Sep 16 |
nicklas |
This class define numeric constanst for READ, WRITE and EXECUTE |
4121 |
22 Sep 16 |
nicklas |
permissions which can be OR-ed to make up a final permission. |
4121 |
22 Sep 16 |
nicklas |
7 |
|
4121 |
22 Sep 16 |
nicklas |
We also define some common presets for user, group and other users. |
4121 |
22 Sep 16 |
nicklas |
9 |
|
4121 |
22 Sep 16 |
nicklas |
@author nicklas |
4121 |
22 Sep 16 |
nicklas |
@since 1.0 |
4121 |
22 Sep 16 |
nicklas |
12 |
*/ |
4121 |
22 Sep 16 |
nicklas |
13 |
public class FilePermission |
4121 |
22 Sep 16 |
nicklas |
14 |
{ |
4121 |
22 Sep 16 |
nicklas |
15 |
/** |
4121 |
22 Sep 16 |
nicklas |
No permissions = 0; |
4121 |
22 Sep 16 |
nicklas |
17 |
*/ |
4121 |
22 Sep 16 |
nicklas |
18 |
public static final int NONE = 0; |
4121 |
22 Sep 16 |
nicklas |
19 |
|
4121 |
22 Sep 16 |
nicklas |
20 |
/** |
4121 |
22 Sep 16 |
nicklas |
Read permissions = 4. |
4121 |
22 Sep 16 |
nicklas |
22 |
*/ |
4121 |
22 Sep 16 |
nicklas |
23 |
public static final int READ = 4; |
4121 |
22 Sep 16 |
nicklas |
24 |
|
4121 |
22 Sep 16 |
nicklas |
25 |
/** |
4121 |
22 Sep 16 |
nicklas |
Write permissions = 2. |
4121 |
22 Sep 16 |
nicklas |
27 |
*/ |
4121 |
22 Sep 16 |
nicklas |
28 |
public static final int WRITE = 2; |
4121 |
22 Sep 16 |
nicklas |
29 |
|
4121 |
22 Sep 16 |
nicklas |
30 |
/** |
4121 |
22 Sep 16 |
nicklas |
Execute permissions = 1. |
4121 |
22 Sep 16 |
nicklas |
32 |
*/ |
4121 |
22 Sep 16 |
nicklas |
33 |
public static final int EXECUTE = 1; |
4121 |
22 Sep 16 |
nicklas |
34 |
|
4121 |
22 Sep 16 |
nicklas |
35 |
/** |
4121 |
22 Sep 16 |
nicklas |
Predefined set of permission giving the owner READ+WRITE permission and |
4121 |
22 Sep 16 |
nicklas |
no permissions to other users. |
4121 |
22 Sep 16 |
nicklas |
38 |
*/ |
4121 |
22 Sep 16 |
nicklas |
39 |
public static final FilePermission USER_RW = new FilePermission(READ+WRITE, NONE, NONE); |
4121 |
22 Sep 16 |
nicklas |
40 |
|
4121 |
22 Sep 16 |
nicklas |
41 |
/** |
4121 |
22 Sep 16 |
nicklas |
Predefined set of permission giving the owner READ+WRITE+EXECUTE permission and |
4121 |
22 Sep 16 |
nicklas |
no permissions to other users. |
4121 |
22 Sep 16 |
nicklas |
44 |
*/ |
4121 |
22 Sep 16 |
nicklas |
45 |
public static final FilePermission USER_RWX = new FilePermission(READ+WRITE+EXECUTE, NONE, NONE); |
4121 |
22 Sep 16 |
nicklas |
46 |
|
4121 |
22 Sep 16 |
nicklas |
47 |
/** |
4121 |
22 Sep 16 |
nicklas |
Predefined set of permission giving the owner READ+WRITE permission, the |
4121 |
22 Sep 16 |
nicklas |
group READ permission and no permissions to other users. |
4121 |
22 Sep 16 |
nicklas |
50 |
*/ |
4121 |
22 Sep 16 |
nicklas |
51 |
public static final FilePermission USER_RW_GROUP_R = new FilePermission(READ+WRITE, READ, NONE); |
4121 |
22 Sep 16 |
nicklas |
52 |
|
4121 |
22 Sep 16 |
nicklas |
53 |
/** |
4121 |
22 Sep 16 |
nicklas |
Predefined set of permission giving the owner READ+WRITE permission and |
4121 |
22 Sep 16 |
nicklas |
READ permissions to other users. |
4121 |
22 Sep 16 |
nicklas |
56 |
*/ |
4121 |
22 Sep 16 |
nicklas |
57 |
public static final FilePermission USER_RW_ALL_R = new FilePermission(READ+WRITE, READ, READ); |
4121 |
22 Sep 16 |
nicklas |
58 |
|
4121 |
22 Sep 16 |
nicklas |
59 |
|
4121 |
22 Sep 16 |
nicklas |
60 |
private final int user; |
4121 |
22 Sep 16 |
nicklas |
61 |
private final int group; |
4121 |
22 Sep 16 |
nicklas |
62 |
private final int other; |
4121 |
22 Sep 16 |
nicklas |
63 |
|
4121 |
22 Sep 16 |
nicklas |
64 |
/** |
4121 |
22 Sep 16 |
nicklas |
Create a new set of permissions for the owner, group and all other users. |
4121 |
22 Sep 16 |
nicklas |
The permission codes are integer values between 0 and 7. Use the |
4121 |
22 Sep 16 |
nicklas |
other constants defined in this file. |
4121 |
22 Sep 16 |
nicklas |
68 |
*/ |
4121 |
22 Sep 16 |
nicklas |
69 |
public FilePermission(int user, int group, int other) |
4121 |
22 Sep 16 |
nicklas |
70 |
{ |
4121 |
22 Sep 16 |
nicklas |
71 |
this.user = user & 7; |
4121 |
22 Sep 16 |
nicklas |
72 |
this.group = group & 7; |
4121 |
22 Sep 16 |
nicklas |
73 |
this.other = other & 7; |
4121 |
22 Sep 16 |
nicklas |
74 |
} |
4121 |
22 Sep 16 |
nicklas |
75 |
|
4121 |
22 Sep 16 |
nicklas |
76 |
/** |
4121 |
22 Sep 16 |
nicklas |
Get the user (owner) permission. |
4121 |
22 Sep 16 |
nicklas |
78 |
*/ |
4121 |
22 Sep 16 |
nicklas |
79 |
public int getUserPermission() |
4121 |
22 Sep 16 |
nicklas |
80 |
{ |
4121 |
22 Sep 16 |
nicklas |
81 |
return user; |
4121 |
22 Sep 16 |
nicklas |
82 |
} |
4121 |
22 Sep 16 |
nicklas |
83 |
|
4121 |
22 Sep 16 |
nicklas |
84 |
/** |
4121 |
22 Sep 16 |
nicklas |
Get the group permission. |
4121 |
22 Sep 16 |
nicklas |
86 |
*/ |
4121 |
22 Sep 16 |
nicklas |
87 |
public int getGroupPermission() |
4121 |
22 Sep 16 |
nicklas |
88 |
{ |
4121 |
22 Sep 16 |
nicklas |
89 |
return group; |
4121 |
22 Sep 16 |
nicklas |
90 |
} |
4121 |
22 Sep 16 |
nicklas |
91 |
|
4121 |
22 Sep 16 |
nicklas |
92 |
/** |
4121 |
22 Sep 16 |
nicklas |
Get the permission for other users. |
4121 |
22 Sep 16 |
nicklas |
94 |
*/ |
4121 |
22 Sep 16 |
nicklas |
95 |
public int getOtherPermission() |
4121 |
22 Sep 16 |
nicklas |
96 |
{ |
4121 |
22 Sep 16 |
nicklas |
97 |
return other; |
4121 |
22 Sep 16 |
nicklas |
98 |
} |
4121 |
22 Sep 16 |
nicklas |
99 |
|
4121 |
22 Sep 16 |
nicklas |
100 |
/** |
4121 |
22 Sep 16 |
nicklas |
Get the combined permissions. |
4121 |
22 Sep 16 |
nicklas |
102 |
*/ |
4121 |
22 Sep 16 |
nicklas |
103 |
public int getPermissions() |
4121 |
22 Sep 16 |
nicklas |
104 |
{ |
4121 |
22 Sep 16 |
nicklas |
105 |
return user * 64 + group * 8 + other; |
4121 |
22 Sep 16 |
nicklas |
106 |
} |
4338 |
07 Feb 17 |
nicklas |
107 |
|
4338 |
07 Feb 17 |
nicklas |
108 |
/** |
4338 |
07 Feb 17 |
nicklas |
Get the octal permission representation to set in 'chmod' command. |
4338 |
07 Feb 17 |
nicklas |
@since 1.1 |
4338 |
07 Feb 17 |
nicklas |
111 |
*/ |
4338 |
07 Feb 17 |
nicklas |
112 |
public String chmod() |
4338 |
07 Feb 17 |
nicklas |
113 |
{ |
4338 |
07 Feb 17 |
nicklas |
114 |
StringBuilder sb = new StringBuilder(); |
4338 |
07 Feb 17 |
nicklas |
115 |
sb.append("0"); |
4338 |
07 Feb 17 |
nicklas |
116 |
sb.append(user); |
4338 |
07 Feb 17 |
nicklas |
117 |
sb.append(group); |
4338 |
07 Feb 17 |
nicklas |
118 |
sb.append(other); |
4338 |
07 Feb 17 |
nicklas |
119 |
return sb.toString(); |
4338 |
07 Feb 17 |
nicklas |
120 |
} |
4338 |
07 Feb 17 |
nicklas |
121 |
|
4338 |
07 Feb 17 |
nicklas |
122 |
/** |
4338 |
07 Feb 17 |
nicklas |
Get the octal permission representation to set in 'umask' command. |
4338 |
07 Feb 17 |
nicklas |
@since 1.1 |
4338 |
07 Feb 17 |
nicklas |
125 |
*/ |
4338 |
07 Feb 17 |
nicklas |
126 |
public String umask() |
4338 |
07 Feb 17 |
nicklas |
127 |
{ |
4338 |
07 Feb 17 |
nicklas |
128 |
StringBuilder sb = new StringBuilder(); |
4338 |
07 Feb 17 |
nicklas |
129 |
sb.append("0"); |
4338 |
07 Feb 17 |
nicklas |
130 |
sb.append(7-user); |
4338 |
07 Feb 17 |
nicklas |
131 |
sb.append(7-group); |
4338 |
07 Feb 17 |
nicklas |
132 |
sb.append(7-other); |
4338 |
07 Feb 17 |
nicklas |
133 |
return sb.toString(); |
4338 |
07 Feb 17 |
nicklas |
134 |
} |
4338 |
07 Feb 17 |
nicklas |
135 |
|
4121 |
22 Sep 16 |
nicklas |
136 |
@Override |
4121 |
22 Sep 16 |
nicklas |
137 |
public boolean equals(Object obj) |
4121 |
22 Sep 16 |
nicklas |
138 |
{ |
4121 |
22 Sep 16 |
nicklas |
139 |
if (obj == null) return false; |
4121 |
22 Sep 16 |
nicklas |
140 |
if (!obj.getClass().equals(this.getClass())) return false; |
4121 |
22 Sep 16 |
nicklas |
141 |
FilePermission fp = (FilePermission)obj; |
4121 |
22 Sep 16 |
nicklas |
142 |
return user == fp.user && group == fp.group && other == fp.other; |
4121 |
22 Sep 16 |
nicklas |
143 |
} |
4121 |
22 Sep 16 |
nicklas |
144 |
|
4121 |
22 Sep 16 |
nicklas |
145 |
@Override |
4121 |
22 Sep 16 |
nicklas |
146 |
public int hashCode() |
4121 |
22 Sep 16 |
nicklas |
147 |
{ |
4121 |
22 Sep 16 |
nicklas |
148 |
return getPermissions(); |
4121 |
22 Sep 16 |
nicklas |
149 |
} |
4121 |
22 Sep 16 |
nicklas |
150 |
|
4121 |
22 Sep 16 |
nicklas |
151 |
|
4121 |
22 Sep 16 |
nicklas |
152 |
} |