All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.microsoft.azure.storage.file.FileProperties Maven / Gradle / Ivy

There is a newer version: 8.6.6
Show newest version
/**
 * Copyright Microsoft Corporation
 * 
 * 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.
 */
package com.microsoft.azure.storage.file;

import java.util.Date;
import java.util.EnumSet;

import com.microsoft.azure.storage.AccessCondition;

/**
 * Represents the system properties for a file.
 */
public final class FileProperties {
    /**
     * Represents the cache-control value stored for the file.
     */
    private String cacheControl;

    /**
     * Represents the content-disposition value stored for the file. If this field has not been set for the file, the
     * field returns null.
     */
    private String contentDisposition;

    /**
     * Represents the content-encoding value stored for the file. If this field has not been set for the file, the field
     * returns null.
     */
    private String contentEncoding;

    /**
     * Represents the content-language value stored for the file. If this field has not been set for the file, the field
     * returns null.
     */
    private String contentLanguage;

    /**
     * Represents the content MD5 value stored for the file.
     */
    private String contentMD5;

    /**
     * Represents the content type value stored for the file. If this field has not been set for the file, the field
     * returns null.
     */
    private String contentType;
    
    /**
     * Represents the state of the most recent or pending copy operation.
     */
    private CopyState copyState;

    /**
     * Represents the size, in bytes, of the file.
     */
    private long length;

    /**
     * Represents the file's ETag value.
     */
    private String etag;

    /**
     * Represents the last-modified time for the file.
     */
    private Date lastModified;

    /**
     * Represents the file's server-side encryption status.
     */
    private boolean serverEncrypted;

    /**
     * The following package private properties are set-able file SMB properties. This is by design.
     * There are two variables - one normal variable and one toSet variable  to account for the statefulness of our
     * objects and the fact that the service requires each SMB property header.
     *
     * When a user wants to set a new SMB property, they call the setter method, which sets the toSet variable.
     * Upon calling the File.Create or File.SetProperties methods, the toSet variable is checked and set if it has been set to a value.
     * The service then returns the properties, that are then populated in the normal variable when updating SMB properties
     * and each of the toSet variables are set back to null.
     */

    /**
     * Represents the file's permission key.
     */
    String filePermissionKey;

    /**
     * Represents the file's permission key to be set.
     */
    String filePermissionKeyToSet;

    /**
     * Represents the file system attributes for files and directories.
     * If not set, indicates preservation of existing values.
     */
    EnumSet ntfsAttributes;

    /**
     * Represents the file system attributes for files and directories to be set.
     * If not set, indicates preservation of existing values.
     */
    EnumSet ntfsAttributesToSet;

    /**
     * Represents the creation time for the file.
     */
    String creationTime;

    /**
     * Represents the creation time for the file to be set.
     */
    String creationTimeToSet;

    /**
     * Represents the last-write time for the file.
     */
    String lastWriteTime;

    /**
     * Represents the last-write time for the file to set.
     */
    String lastWriteTimeToSet;

    /**
     * Represents the change time for the file.
     */
    private String changeTime;

    /**
     * Represents the file's id.
     */
    private String fileId;

    /**
     * Represents the file's parent id.
     */
    private String parentId;

    /**
     * Creates an instance of the FileProperties class.
     */
    public FileProperties() {
        // No op
    }

    /**
     * Creates an instance of the FileProperties class by copying values from another instance of the
     * FileProperties class.
     * 
     * @param other
     *            A FileProperties object which represents the file properties to copy.
     */
    public FileProperties(final FileProperties other) {
        this.cacheControl = other.cacheControl;
        this.contentDisposition = other.contentDisposition;
        this.contentEncoding = other.contentEncoding;
        this.contentLanguage = other.contentLanguage;
        this.contentMD5 = other.contentMD5;
        this.contentType = other.contentType;
        this.etag = other.etag;
        this.length = other.length;
        this.lastModified = other.lastModified;
        this.serverEncrypted = other.serverEncrypted;
        this.filePermissionKey = other.filePermissionKey;
        this.filePermissionKeyToSet = other.filePermissionKeyToSet;
        this.ntfsAttributes = other.ntfsAttributes;
        this.ntfsAttributesToSet = other.ntfsAttributesToSet;
        this.creationTime = other.creationTime;
        this.creationTimeToSet = other.creationTimeToSet;
        this.lastWriteTime = other.lastWriteTime;
        this.lastWriteTimeToSet = other.lastWriteTimeToSet;
    }

    /**
     * Gets the cache control value for the file.
     * 
     * @return A String which represents the content cache control value for the file.
     */
    public String getCacheControl() {
        return this.cacheControl;
    }

    /**
     * Gets the content disposition value for the file.
     * 
     * @return A String which represents the content disposition, or null if content
     *         disposition has not been set on the file.
     */
    public String getContentDisposition() {
        return this.contentDisposition;
    }

    /**
     * Gets the content encoding value for the file.
     * 
     * @return A String which represents the content encoding, or null if content encoding has
     *         not been set on the file.
     */
    public String getContentEncoding() {
        return this.contentEncoding;
    }

    /**
     * Gets the content language value for the file.
     * 
     * @return A String which represents the content language, or null if content language
     *         has not been set on the file.
     */
    public String getContentLanguage() {
        return this.contentLanguage;
    }

    /**
     * Gets the content MD5 value for the file.
     * 
     * @return A String which represents the content MD5 value.
     */
    public String getContentMD5() {
        return this.contentMD5;
    }

    /**
     * Gets the content type value for the file.
     * 
     * @return A String which represents the content type, or null if the content type has not
     *         be set for the file.
     */
    public String getContentType() {
        return this.contentType;
    }
    
    /**
     * Gets the file's copy state.
     * 
     * @return A {@link CopyState} object which represents the copy state of the file.
     */
    public CopyState getCopyState() {
        return this.copyState;
    }
    
    /**
     * Gets the ETag value for the file.
     * 

* The ETag value is a unique identifier that is updated when a write operation is performed against the file. It * may be used to perform operations conditionally, providing concurrency control and improved efficiency. *

* The {@link AccessCondition#generateIfMatchCondition(String)} and * {@link AccessCondition#generateIfNoneMatchCondition(String)} methods take an ETag value and return an * {@link AccessCondition} object that may be specified on the request. * * @return A String which represents the ETag value. */ public String getEtag() { return this.etag; } /** * Gets the last modified time for the file. * * @return A {@link java.util.Date} object which represents the last modified time. */ public Date getLastModified() { return this.lastModified; } /** * Gets the size, in bytes, of the file. * * @return A long which represents the length of the file. */ public long getLength() { return this.length; } /** * Gets the file's server-side encryption status. * * @return A boolean which specifies the file's encryption status. */ public boolean isServerEncrypted() { return this.serverEncrypted; } /** * Gets the file's permission key. * * @return A String which specifies the file's permission key. */ public String getFilePermissionKey() { return this.filePermissionKeyToSet == null ? this.filePermissionKey : this.filePermissionKeyToSet; } /** * Gets the file system attributes for files and directories. * If not set, indicates preservation of existing values. * * @return A {@link NtfsAttributes} object which represents the file system attributes. */ public EnumSet getNtfsAttributes() { return this.ntfsAttributesToSet == null ? this.ntfsAttributes : this.ntfsAttributesToSet; } /** * Gets the creation time for the file. * * @return A String object which represents the creation time. */ public String getCreationTime() { return this.creationTimeToSet == null ? this.creationTime : this.creationTimeToSet; } /** * Gets the last write time for the file. * * @return A String object which represents the last write time. */ public String getLastWriteTime() { return this.lastWriteTimeToSet == null ? this.lastWriteTime : this.lastWriteTimeToSet; } /** * Gets the change time for the file. * * @return A String object which represents the change time. */ public String getChangeTime() { return this.changeTime; } /** * Gets the file's id. * * @return A String which specifies the file's id. */ public String getFileId() { return this.fileId; } /** * Gets the file's parent id. * * @return A String which specifies the file's parent id. */ public String getParentId() { return this.parentId; } /** * Sets the cache control value for the file. * * @param cacheControl * A String which specifies the cache control value to set. */ public void setCacheControl(final String cacheControl) { this.cacheControl = cacheControl; } /** * Sets the content disposition value for the file. * * @param contentDisposition * A String which specifies the content disposition value to set. */ public void setContentDisposition(final String contentDisposition) { this.contentDisposition = contentDisposition; } /** * Sets the content encoding value for the file. * * @param contentEncoding * A String which specifies the content encoding value to set. */ public void setContentEncoding(final String contentEncoding) { this.contentEncoding = contentEncoding; } /** * Sets the content language for the file. * * @param contentLanguage * A String which specifies the content language value to set. */ public void setContentLanguage(final String contentLanguage) { this.contentLanguage = contentLanguage; } /** * Sets the content MD5 value for the file. * * @param contentMD5 * A String which specifies the content MD5 value to set. */ public void setContentMD5(final String contentMD5) { this.contentMD5 = contentMD5; } /** * Sets the content type value for the file. * * @param contentType * A String which specifies the content type value to set. */ public void setContentType(final String contentType) { this.contentType = contentType; } /** * Sets the file's server-side encryption status. * * @param serverEncrypted * A boolean which specifies the encryption status to set. */ protected void setServerEncrypted(boolean serverEncrypted) { this.serverEncrypted = serverEncrypted; } /** * Sets the copy state value for the file. * * @param copyState * A {@link CopyState} object which specifies the copy state value to set. */ protected void setCopyState(final CopyState copyState) { this.copyState = copyState; } /** * Sets the ETag value for the file. * * @param etag * A String which specifies the ETag value to set. */ protected void setEtag(final String etag) { this.etag = etag; } /** * Sets the last modified time for the file. * * @param lastModified * A {@link java.util.Date} object which specifies the last modified time to set. */ protected void setLastModified(final Date lastModified) { this.lastModified = lastModified; } /** * Sets the content length, in bytes, for the file. * * @param length * A long which specifies the length to set. */ protected void setLength(final long length) { this.length = length; } /** * Sets the file's permission key. * * @param filePermissionKey * A String which specifies the file permission key to set. */ public void setFilePermissionKey(String filePermissionKey) { this.filePermissionKeyToSet = filePermissionKey; } /** * Sets the file system attributes for files and directories. * If not set, indicates preservation of existing values. * * @param ntfsAttributes * A {@link NtfsAttributes} which specifies the file system attributes to set. */ public void setNtfsAttributes(EnumSet ntfsAttributes) { this.ntfsAttributesToSet = ntfsAttributes; } /** * Sets the creation time to set for the file. * * @param creationTime * A String object which specifies the creation time to set. */ public void setCreationTime(String creationTime) { this.creationTimeToSet = creationTime; } /** * Sets the last write time for the file. * * @param lastWriteTime * A String object which specifies the last write time to set. */ protected void setLastWriteTime(String lastWriteTime) { this.lastWriteTimeToSet = lastWriteTime; } /** * Sets the change time for the file. * * @param changeTime * A String object which specifies the change time to set. */ protected void setChangeTime(String changeTime) { this.changeTime = changeTime; } /** * Sets the file's id. * * @param fileId * A String which specifies the id to set. */ protected void setFileId(String fileId) { this.fileId = fileId; } /** * Sets the file's parent id. * * @param parentId * A String which specifies the parent id to set. */ protected void setParentId(String parentId) { this.parentId = parentId; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy