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

net.snowflake.client.jdbc.SnowflakeFileTransferMetadataV1 Maven / Gradle / Ivy

/*
 * Copyright (c) 2012-2020 Snowflake Computing Inc. All rights reserved.
 */

package net.snowflake.client.jdbc;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.base.Strings;
import java.io.Serializable;
import net.snowflake.client.jdbc.SFBaseFileTransferAgent.CommandType;
import net.snowflake.client.jdbc.cloud.storage.StageInfo;
import net.snowflake.common.core.RemoteStoreFileEncryptionMaterial;

/**
 * A class to manage metadata for upload or download files. It is introduced for distributed data
 * processing. The typical use case is: 1. The cluster master has JDBC connection to the Snowflake
 * and it can generate this object for the file transfer. 2. The cluster master node can transfer
 * the object to cluster worker. 3. The cluster worker can upload or download data with the object
 * without JDBC Connection.
 *
 * 

NOTE: When this class is created, it only supports UPLOAD for GCS. It is created for Snowflake * Spark Connector. */ public class SnowflakeFileTransferMetadataV1 implements SnowflakeFileTransferMetadata, Serializable { private static final long serialVersionUID = 1L; private String presignedUrl; private String presignedUrlFileName; private String encryptionMaterial_queryStageMasterKey; private String encryptionMaterial_queryId; private Long encryptionMaterial_smkId; private CommandType commandType; private StageInfo stageInfo; public SnowflakeFileTransferMetadataV1( String presignedUrl, String presignedUrlFileName, String encryptionMaterial_queryStageMasterKey, String encryptionMaterial_queryId, Long encryptionMaterial_smkId, CommandType commandType, StageInfo stageInfo) { this.presignedUrl = presignedUrl; this.presignedUrlFileName = presignedUrlFileName; this.encryptionMaterial_queryStageMasterKey = encryptionMaterial_queryStageMasterKey; this.encryptionMaterial_queryId = encryptionMaterial_queryId; this.encryptionMaterial_smkId = encryptionMaterial_smkId; this.commandType = commandType; this.stageInfo = stageInfo; } @Override public boolean isForOneFile() { // The presigned url is for one file and the down-scoped token can be used for multiple files. return stageInfo.getStageType() == StageInfo.StageType.GCS && !Strings.isNullOrEmpty(presignedUrl) && !"null".equalsIgnoreCase(presignedUrl); } @JsonProperty("presignedUrl") public String getPresignedUrl() { return presignedUrl; } public void setPresignedUrl(String presignedUrl) { this.presignedUrl = presignedUrl; } @JsonProperty("presignedUrlFileName") public String getPresignedUrlFileName() { return presignedUrlFileName; } public void setPresignedUrlFileName(String presignedUrlFileName) { this.presignedUrlFileName = presignedUrlFileName; } @JsonProperty("encryptionMaterial") public RemoteStoreFileEncryptionMaterial getEncryptionMaterial() { return new RemoteStoreFileEncryptionMaterial( encryptionMaterial_queryStageMasterKey, encryptionMaterial_queryId, encryptionMaterial_smkId); } public void setEncryptionMaterial( String encryptionMaterial_queryStageMasterKey, String encryptionMaterial_queryId, Long encryptionMaterial_smkId) { this.encryptionMaterial_queryStageMasterKey = encryptionMaterial_queryStageMasterKey; this.encryptionMaterial_queryId = encryptionMaterial_queryId; this.encryptionMaterial_smkId = encryptionMaterial_smkId; } @JsonProperty("commandType") public CommandType getCommandType() { return commandType; } public void setCommandType(CommandType commandType) { this.commandType = commandType; } @JsonProperty("stageInfo") public StageInfo getStageInfo() { return this.stageInfo; } public void setStageInfo(StageInfo stageInfo) { this.stageInfo = stageInfo; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy