2016-12-05 7 views
1

Javaコードのみを含むプロシージャを持つPL/SQLファイルがあります。 Javaコードが始まる前に、次のPL/SQLでJavaコードを書き直す際の課題

は宣言です:

CREATE OR REPLACE AND COMPILE JAVA SOURCE NAMED "fnd_log_file_handler" AS 

このJavaコードは、さまざまなファイル操作(コピー、チェックの長さを実行し、ファイルの配列を反復処理、Fileオブジェクトがディレクトリであるかどうかを確認します、など)とDOM操作/ XML解析(指定されたXML文字列からXMLドキュメントオブジェクトを作成)さらに、Processオブジェクトを返すRuntime.exec()Javaメソッドを使用して外部コマンドを呼び出しています。インポートされるパッケージは次のとおりです。

import java.nio.channels.FileChannel; 

import javax.xml.parsers.DocumentBuilder; 
import javax.xml.parsers.DocumentBuilderFactory; 

import org.w3c.dom.Document; 
import org.w3c.dom.Node; 
import org.w3c.dom.NodeList; 

繰り返し呼び出されるメソッドが1つあります。特定の名前パターンに一致するフォルダ内のファイルのリストを返します。 Comparatorを使用して結果をフィルタリングします。以下はコードの抜粋です

/** 
    * This API returns list of files in a folder matching particular name pattern. 
    * @param path - Path to the directory to get list of files 
    * @param pattern - Pattern for file names to look for. All files with name 
    * starting with this pattern will be returned from the API 
    * @return - Sorted list of files. 
    */ 

    private static File[ ] listFilesInOrder (String path, String pattern, 
             Comparator <File> compareFunc) 
    { 
     BASEFILENAME = pattern; 
     File lFile = new File (path); 

     File[] arrayFileList = lFile.listFiles(new FilenameFilter() { 
      public boolean accept(File f, String s) { return s.startsWith(BASEFILENAME + INDEX_SPERATOR); } 
     }); 


     if(arrayFileList!=null) 
     { 
     Arrays.sort(arrayFileList, compareFunc); 

     } 

     return arrayFileList; 
    } 

今後JVMがDBから削除される場合のJava依存性を削除したいと考えています。このロジックをすべて組み込むためにPL/SQLコードを記述することは可能ですか?そうでない場合、私の他の選択肢は何ですか?どんなフィードバックもありがとうございます。

+0

今後DBからJVMが削除される場合は、 – Kayaman

+0

@Kayaman JavaはOracleデータベースのオプションコンポーネントです。残念なことに、DBAがJavaを削除するのは一般的ではありません。それは愚かですが、それが起こるので、可能であればJavaの依存関係を回避しようとするのが賢明です。 –

+0

@JonHellerこのような状況で対処法はありますか?このコードは、DB内から呼び出せる独立したJavaファイルとしてまだ存在していますか? PL/SQLでこのロジックをすべて翻訳することが可能かどうかはわかりません。 – Pha3drus

答えて

0

はい、PL/SQLでは可能です。ファイルシステムでファイルを操作するには、Oralce UTL_FILEパッケージを参照する必要があります。Oracle UTL_FILE documentation

Javaのリストと同様に機能するには、PL/SQLコードでカスタムTYPEとTABLEを使用できます。

PL/SQLはこのようなロジックを実行するのに十分強力です

+0

私はURL_FILEパッケージに精通しています。外部アプリケーションとDOM操作を呼び出す方法はありますか? – Pha3drus

+0

もちろん、外部アプリケーションを起動することは可能であり、OracleがXPath/XQuery機能を備えている限り、XML操作が可能です。申し訳ありませんが、今はPL/SQLからあまりにも遠すぎて、どのようにドキュメントを掘り下げることができないのかを正確に伝えることができません。それはあまりにもディープに隠されていません...幸運:) – Vadim

関連する問題