add one more param for put for file existing check

Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/02a8bd50
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/02a8bd50
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/02a8bd50

Branch: refs/heads/master
Commit: 02a8bd50143d489c4a3a13108627ada0080c3be1
Parents: 0a37686
Author: Kevin Xu <[email protected]>
Authored: Thu Jan 21 15:28:07 2016 +0800
Committer: Kevin Xu <[email protected]>
Committed: Thu Jan 21 15:28:07 2016 +0800

----------------------------------------------------------------------
 .../src/main/java/org/trafodion/libmgmt/FileMgmt.java     | 10 +++++++++-
 core/sql/lib_mgmt/src/main/resources/init_libmgmt.sh      |  5 +++--
 2 files changed, 12 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/02a8bd50/core/sql/lib_mgmt/src/main/java/org/trafodion/libmgmt/FileMgmt.java
----------------------------------------------------------------------
diff --git 
a/core/sql/lib_mgmt/src/main/java/org/trafodion/libmgmt/FileMgmt.java 
b/core/sql/lib_mgmt/src/main/java/org/trafodion/libmgmt/FileMgmt.java
index e7e0258..5e1e2b2 100644
--- a/core/sql/lib_mgmt/src/main/java/org/trafodion/libmgmt/FileMgmt.java
+++ b/core/sql/lib_mgmt/src/main/java/org/trafodion/libmgmt/FileMgmt.java
@@ -473,6 +473,7 @@ public class FileMgmt {
                names[0] = toXML(files, "ls");
        }
 
+
        /**
         * upload a JAR file
         * 
@@ -480,9 +481,12 @@ public class FileMgmt {
         * @param fileName
         * @param appendFlag
         *            0: append; otherwise overwrite
+        * @param overwriteOnCreate
+        *            when appendFlag is not 0, check if file exists and 
overwriteOnCreate is not 0,
+        *            throw exception. Otherwise overwrite the file.
         * @throws SQLException
         */
-       public static void put(String fileData, String fileName, int 
appendFlag) throws SQLException {
+       public static void put(String fileData, String fileName, int 
appendFlag, int overwriteOnCreate) throws SQLException, IOException {
                checkFileName(fileName);
                try {
                        byte[] data = fileData.getBytes(CHARTSET);
@@ -492,6 +496,10 @@ public class FileMgmt {
                        String userPath = getCodeFilePath(conn);
                        close(conn);
                        String fname = userPath + fileName;
+                       if (overwriteOnCreate != 0 && appendFlag != 0
+                                       && new File(fname).exists()) {
+                               throw new IOException("File " + fileName + " 
already exists!");
+                       }
                        checkFile(fname, data.length);
                        FileOutputStream fos = null;
                        FileChannel channel = null;

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/02a8bd50/core/sql/lib_mgmt/src/main/resources/init_libmgmt.sh
----------------------------------------------------------------------
diff --git a/core/sql/lib_mgmt/src/main/resources/init_libmgmt.sh 
b/core/sql/lib_mgmt/src/main/resources/init_libmgmt.sh
index 6811f28..e78c1e4 100644
--- a/core/sql/lib_mgmt/src/main/resources/init_libmgmt.sh
+++ b/core/sql/lib_mgmt/src/main/resources/init_libmgmt.sh
@@ -116,8 +116,9 @@ function createProcedures {
       CREATE PROCEDURE PUT (
       IN FILEDATA VARCHAR(102400) CHARACTER SET ISO88591,
       IN FILENAME VARCHAR(256) CHARACTER SET UTF8,
-      IN CREATEFLAG INTEGER)
-      EXTERNAL NAME 
'org.trafodion.libmgmt.FileMgmt.put(java.lang.String,java.lang.String,int)'
+      IN CREATEFLAG INTEGER,
+      IN FILEOVERWRITE INTEGER)
+      EXTERNAL NAME 
'org.trafodion.libmgmt.FileMgmt.put(java.lang.String,java.lang.String,int,int)'
       EXTERNAL SECURITY DEFINER
       LIBRARY ${LIB_NAME}
       LANGUAGE JAVA

Reply via email to