src-main.org.awakefw.sql.jdbc.http.JdbcHttpFileTransfer Maven / Gradle / Ivy
/*
* This file is part of Awake SQL.
* Awake SQL: Remote JDBC access over HTTP.
* Copyright (C) 2013, KawanSoft SAS
* (http://www.kawansoft.com). All rights reserved.
*
* Awake SQL is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* Awake SQL is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see .
*
* If you develop commercial activities using Awake SQL, you must:
* a) disclose and distribute all source code of your own product,
* b) license your own product under the GNU General Public License.
*
* You can be released from the requirements of the license by
* purchasing a commercial license. Buying such a license will allow you
* to ship Awake SQL with your closed source products without disclosing
* the source code.
*
* For more information, please contact KawanSoft SAS at this
* address: [email protected]
*
* Any modifications to this file must keep this entire header
* intact.
*/
package org.awakefw.sql.jdbc.http;
import java.io.File;
import java.sql.SQLException;
import org.awakefw.commons.api.client.AwakeProgressManager;
import org.awakefw.file.api.client.AwakeFileSession;
import org.awakefw.file.api.util.AwakeDebug;
import org.awakefw.file.util.AwakeClientLogger;
import org.awakefw.file.util.KeepTempFilePolicyParms;
import org.awakefw.sql.jdbc.ConnectionHttp;
/**
*
* Class that execute all http file transfer to the server.
*
*/
public class JdbcHttpFileTransfer {
/** Set to true to display/log debug info */
private static boolean DEBUG = AwakeDebug.isSet(JdbcHttpFileTransfer.class);
/** The Awake File Session */
private AwakeFileSession awakeFileSession;
/** The progress manager, maybe null */
private AwakeProgressManager awakeProgressManager;
/**
* Constructor
*
* @param connectionHttp
* the http connection
*/
public JdbcHttpFileTransfer(ConnectionHttp connectionHttp) {
awakeFileSession = connectionHttp.getAwakeFileSession();
awakeProgressManager = connectionHttp.getAwakeProgressManager();
}
/**
* Upload all the blob parameters
*/
public void uploadFile(File localFile, String remoteFileName)
throws SQLException {
if (localFile == null) {
throw new SQLException("localFile order is null!");
}
if (remoteFileName == null) {
throw new SQLException("remoteFileName order is null!");
}
if (!localFile.exists()) {
throw new SQLException("localFile to upload does not exists: "
+ localFile);
}
if (awakeProgressManager != null) {
awakeFileSession.setAwakeProgressManager(awakeProgressManager);
awakeProgressManager.setLengthToTransfer(localFile.length());
}
// Do the upload
try {
awakeFileSession.upload(localFile, remoteFileName);
} catch (Exception e) {
JdbcHttpTransferUtil.wrapExceptionAsSQLException(e);
} finally {
if (awakeProgressManager != null) {
awakeProgressManager.setProgress(100);
}
//DEBUG= true;
debug("local file: " + localFile);
debug("KeepTempFilePolicyParms.KEEP_TEMP_FILE: " + KeepTempFilePolicyParms.KEEP_TEMP_FILE);
if (!DEBUG && ! KeepTempFilePolicyParms.KEEP_TEMP_FILE) {
localFile.delete();
}
}
}
/**
* Debug tool
*
* @param s
*/
// @SuppressWarnings("unused")
private void debug(String s) {
if (DEBUG) {
AwakeClientLogger.log(s);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy