/*
* This file is part of the RootTools Project: http://code.google.com/p/roottools/
*
* Copyright (c) 2012 Stephen Erickson, Chris Ravenscroft, Dominik Schuermann, Adam Shanks
*
* This code is dual-licensed under the terms of the Apache License Version 2.0 and
* the terms of the General Public License (GPL) Version 2.
* You may use this code according to either of these licenses as is most appropriate
* for your project on a case-by-case basis.
*
* The terms of each license can be found in the root directory of this project's repository as well as at:
*
* * http://www.apache.org/licenses/LICENSE-2.0
* * http://www.gnu.org/licenses/gpl-2.0.txt
*
* Unless required by applicable law or agreed to in writing, software
* distributed under these Licenses is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See each License for the specific language governing permissions and
* limitations under that License.
*/
package com.mcxiaoke.shell.model;
public class Permissions {
String type;
String user;
String group;
String other;
String symlink;
int permissions;
public String getSymlink() {
return this.symlink;
}
public String getType() {
return type;
}
public int getPermissions() {
return this.permissions;
}
public String getUserPermissions() {
return this.user;
}
public String getGroupPermissions() {
return this.group;
}
public String getOtherPermissions() {
return this.other;
}
public void setSymlink(String symlink) {
this.symlink = symlink;
}
public void setType(String type) {
this.type = type;
}
public void setPermissions(int permissions) {
this.permissions = permissions;
}
public void setUserPermissions(String user) {
this.user = user;
}
public void setGroupPermissions(String group) {
this.group = group;
}
public void setOtherPermissions(String other) {
this.other = other;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getGroup() {
return group;
}
public void setGroup(String group) {
this.group = group;
}
public String getOther() {
return other;
}
public void setOther(String other) {
this.other = other;
}
public static Permissions getPermissions(String line) {
String[] lineArray = line.split(" ");
String rawPermissions = lineArray[0];
if (rawPermissions.length() == 10
&& (rawPermissions.charAt(0) == '-'
|| rawPermissions.charAt(0) == 'd' || rawPermissions
.charAt(0) == 'l')
&& (rawPermissions.charAt(1) == '-' || rawPermissions.charAt(1) == 'r')
&& (rawPermissions.charAt(2) == '-' || rawPermissions.charAt(2) == 'w')) {
// RootTools.log(rawPermissions);
Permissions permissions = new Permissions();
permissions.setType(rawPermissions.substring(0, 1));
// RootTools.log(permissions.getType());
permissions.setUserPermissions(rawPermissions.substring(1, 4));
// RootTools.log(permissions.getUserPermissions());
permissions.setGroupPermissions(rawPermissions.substring(4, 7));
// RootTools.log(permissions.getGroupPermissions());
permissions.setOtherPermissions(rawPermissions.substring(7, 10));
// RootTools.log(permissions.getOtherPermissions());
StringBuilder finalPermissions = new StringBuilder();
finalPermissions.append(parseSpecialPermissions(rawPermissions));
finalPermissions.append(parsePermissions(permissions.getUserPermissions()));
finalPermissions.append(parsePermissions(permissions.getGroupPermissions()));
finalPermissions.append(parsePermissions(permissions.getOtherPermissions()));
permissions.setPermissions(Integer.parseInt(finalPermissions.toString()));
return permissions;
}
return null;
}
public static int parsePermissions(String permission) {
int tmp;
if (permission.charAt(0) == 'r')
tmp = 4;
else
tmp = 0;
// RootTools.log("permission " + tmp);
// RootTools.log("character " + permission.charAt(0));
if (permission.charAt(1) == 'w')
tmp += 2;
else
tmp += 0;
// RootTools.log("permission " + tmp);
// RootTools.log("character " + permission.charAt(1));
if (permission.charAt(2) == 'x')
tmp += 1;
else
tmp += 0;
// RootTools.log("permission " + tmp);
// RootTools.log("character " + permission.charAt(2));
return tmp;
}
public static int parseSpecialPermissions(String permission) {
int tmp = 0;
if (permission.charAt(2) == 's')
tmp += 4;
if (permission.charAt(5) == 's')
tmp += 2;
if (permission.charAt(8) == 't')
tmp += 1;
// RootTools.log("special permissions " + tmp);
return tmp;
}
}