View Javadoc
1   /*
2    * dpkg - Debian Package library and the Debian Package Maven plugin
3    * (c) Copyright 2016 Gerrit Hohl
4    *
5    * This program is free software; you can redistribute it and/or
6    * modify it under the terms of the GNU General Public License
7    * as published by the Free Software Foundation; either version 2
8    * of the License, or (at your option) any later version.
9    *
10   * This program is distributed in the hope that it will be useful,
11   * but WITHOUT ANY WARRANTY; without even the implied warranty of
12   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13   * GNU General Public License for more details.
14   *
15   * You should have received a copy of the GNU General Public License
16   * along with this program; if not, write to the Free Software
17   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
18   */
19  package net.sourceforge.javadpkg.io;
20  
21  
22  /**
23   * <p>
24   * The mode of a file.
25   * </p>
26   *
27   * @author Gerrit Hohl (gerrit-hohl@users.sourceforge.net)
28   * @version <b>1.0</b>, 12.05.2016 by Gerrit Hohl
29   * @version <b>1.0</b>, 21.06.2018 by Gerrit Hohl
30   */
31  public interface FileMode {
32  	
33  	
34  	/**
35  	 * <p>
36  	 * Returns the mode as number including all octals.
37  	 * </p>
38  	 *
39  	 * @return The mode.
40  	 */
41  	int getMode();
42  
43  
44  	/**
45  	 * <p>
46  	 * Returns the mode as an octal number consisting only of the last 3 octals.
47  	 * </p>
48  	 * <p>
49  	 * The returned value may look like this: <blockquote>
50  	 * <code>777</code></blockquote> or like this: <blockquote>
51  	 * <code>000</code></blockquote>
52  	 * </p>
53  	 *
54  	 * @return The mode.
55  	 */
56  	String getOctal();
57  
58  
59  	/**
60  	 * <p>
61  	 * Returns the mode as textual representation excluding the &quot;sticky
62  	 * bit&quot;.
63  	 * </p>
64  	 * <p>
65  	 * The returned value may look like this: <blockquote>
66  	 * <code>rwxrwxrwx</code></blockquote> or like this: <blockquote>
67  	 * <code>---------</code></blockquote>
68  	 * </p>
69  	 *
70  	 * @return The mode.
71  	 */
72  	String getText();
73  	
74  	
75  	/**
76  	 * <p>
77  	 * Returns the sticky bit.
78  	 * </p>
79  	 * <p>
80  	 * See <a href=
81  	 * "https://en.wikipedia.org/wiki/File_system_permissions#Changing_permission_behavior_with_setuid.2C_setgid.2C_and_sticky_bits">
82  	 * Changing permission behavior with setuid, setgid, and sticky bits</a> for
83  	 * more information.
84  	 * </p>
85  	 *
86  	 * @return The sticky bit: A number from octal 0 (decimal: 0) to octal 7
87  	 *         (decimal: 7).
88  	 */
89  	int getStickyBit();
90  
91  
92  	/**
93  	 * <p>
94  	 * Returns the flag if the owner can read the file.
95  	 * </p>
96  	 *
97  	 * @return The flag: <code>true</code>, if the owner can, <code>false</code>
98  	 *         otherwise.
99  	 */
100 	boolean isOwnerReadable();
101 
102 
103 	/**
104 	 * <p>
105 	 * Returns the flag if the owner can write the file.
106 	 * </p>
107 	 *
108 	 * @return The flag: <code>true</code>, if the owner can, <code>false</code>
109 	 *         otherwise.
110 	 */
111 	boolean isOwnerWriteable();
112 
113 
114 	/**
115 	 * <p>
116 	 * Returns the flag if the owner can execute the file.
117 	 * </p>
118 	 *
119 	 * @return The flag: <code>true</code>, if the owner can, <code>false</code>
120 	 *         otherwise.
121 	 */
122 	boolean isOwnerExecutable();
123 
124 
125 	/**
126 	 * <p>
127 	 * Returns the flag if the group can read the file.
128 	 * </p>
129 	 *
130 	 * @return The flag: <code>true</code>, if the group can, <code>false</code>
131 	 *         otherwise.
132 	 */
133 	boolean isGroupReadable();
134 
135 
136 	/**
137 	 * <p>
138 	 * Returns the flag if the group can write the file.
139 	 * </p>
140 	 *
141 	 * @return The flag: <code>true</code>, if the group can, <code>false</code>
142 	 *         otherwise.
143 	 */
144 	boolean isGroupWriteable();
145 
146 
147 	/**
148 	 * <p>
149 	 * Returns the flag if the group can execute the file.
150 	 * </p>
151 	 *
152 	 * @return The flag: <code>true</code>, if the group can, <code>false</code>
153 	 *         otherwise.
154 	 */
155 	boolean isGroupExecutable();
156 
157 
158 	/**
159 	 * <p>
160 	 * Returns the flag if the others can read the file.
161 	 * </p>
162 	 *
163 	 * @return The flag: <code>true</code>, if the others can,
164 	 *         <code>false</code> otherwise.
165 	 */
166 	boolean isOtherReadable();
167 
168 
169 	/**
170 	 * <p>
171 	 * Returns the flag if the others can write the file.
172 	 * </p>
173 	 *
174 	 * @return The flag: <code>true</code>, if the others can,
175 	 *         <code>false</code> otherwise.
176 	 */
177 	boolean isOtherWriteable();
178 
179 
180 	/**
181 	 * <p>
182 	 * Returns the flag if the others can execute the file.
183 	 * </p>
184 	 *
185 	 * @return The flag: <code>true</code>, if the others can,
186 	 *         <code>false</code> otherwise.
187 	 */
188 	boolean isOtherExecutable();
189 
190 
191 }