package org.codehaus.plexus.components.io.attributes; /* * Copyright 2007 The Codehaus Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import javax.annotation.Nullable; /* * A very simple pojo based PlexusIoResourceAttributes without any kind of backing */ public class SimpleResourceAttributes implements PlexusIoResourceAttributes { private Integer gid; private Integer uid; private String userName; private String groupName; private int mode = -1; private boolean isSymbolicLink; public SimpleResourceAttributes( Integer uid, String userName, Integer gid, String groupName, int mode ) { this.uid = uid; this.userName = userName; this.gid = gid; this.groupName = groupName; this.mode = mode; } public static PlexusIoResourceAttributes lastResortDummyAttributesForBrokenOS() { return new SimpleResourceAttributes( ); } SimpleResourceAttributes() { } public int getOctalMode() { return mode; } @Nullable public Integer getGroupId() { return gid; } @Nullable public String getGroupName() { return groupName; } public Integer getUserId() { return uid; } public String getUserName() { return userName; } public boolean isGroupExecutable() { return PlexusIoResourceAttributeUtils.isGroupExecutableInOctal( mode ); } public boolean isGroupReadable() { return PlexusIoResourceAttributeUtils.isGroupReadableInOctal( mode ); } public boolean isGroupWritable() { return PlexusIoResourceAttributeUtils.isGroupWritableInOctal( mode ); } public boolean isOwnerExecutable() { return PlexusIoResourceAttributeUtils.isOwnerExecutableInOctal( mode ); } public boolean isOwnerReadable() { return PlexusIoResourceAttributeUtils.isOwnerReadableInOctal( mode ); } public boolean isOwnerWritable() { return PlexusIoResourceAttributeUtils.isOwnerWritableInOctal( mode ); } public boolean isWorldExecutable() { return PlexusIoResourceAttributeUtils.isWorldExecutableInOctal( mode ); } public boolean isWorldReadable() { return PlexusIoResourceAttributeUtils.isWorldReadableInOctal( mode ); } public boolean isWorldWritable() { return PlexusIoResourceAttributeUtils.isWorldWritableInOctal( mode ); } public String getOctalModeString() { return Integer.toString( mode, 8 ); } public PlexusIoResourceAttributes setOctalMode( int mode ) { this.mode = mode; return this; } public PlexusIoResourceAttributes setGroupId( Integer gid ) { this.gid = gid; return this; } public PlexusIoResourceAttributes setGroupName( String name ) { this.groupName = name; return this; } public PlexusIoResourceAttributes setUserId( Integer uid ) { this.uid = uid; return this; } public PlexusIoResourceAttributes setUserName( String name ) { this.userName = name; return this; } public PlexusIoResourceAttributes setOctalModeString( String mode ) { setOctalMode( Integer.parseInt( mode, 8 ) ); return this; } public String toString() { return String.format( "\nResource Attributes:\n------------------------------\nuser: %s\ngroup: %s\nuid: %d\ngid: %d\nmode: %06o", userName == null ? "" : userName, groupName == null ? "" : groupName, uid != null ? uid : 0, gid != null ? gid : 0, mode ); } public void setSymbolicLink( boolean isSymbolicLink ) { this.isSymbolicLink = isSymbolicLink; } public boolean isSymbolicLink() { return isSymbolicLink; } }