jp.crestmuse.cmx.commands
クラス CMXCommand<F1 extends FileWrapperCompatible,F2 extends FileWrapperCompatible>

java.lang.Object
  上位を拡張 jp.crestmuse.cmx.commands.CMXCommand<F1,F2>
すべての実装されたインタフェース:
CMXInitializer
直系の既知のサブクラス:
AbstractWAVAnalyzer, ApplyCSVTempoDeviation, ApplyDeviationInstance, CMXCommandForGUI, CMXSample1, Dev2CSV, DeviationInstanceExtractor, DeviationInstanceGeneratorSample, MakeDeadpanSCC, MIDIXML2SCC, MIDIXML2SMF, PerformanceRenderingTest1, PerformanceRenderingTest2, SCC2MIDI, SCC2WAV, SMF2MIDIXML, SMF2SCC, SMFOverlapChecker, SMFOverlapRemover, SMFOverlapRemover2

public abstract class CMXCommand<F1 extends FileWrapperCompatible,F2 extends FileWrapperCompatible>
extends java.lang.Object
implements CMXInitializer

The abstract class CMXCommand is the superclass of classes that wraps commands executed on a command line.

コマンドラインから実行するクラスの抽象上位クラスです. 非リアルタイム型のコマンドを作る際には, この抽象クラスを継承して作成します. このクラスにはファイルの読み書きをはじめとする, 共通に用いられる処理が 最初から実装されていますので, ユーザは自分がつくろうとしているコマンド独自の 処理だけを実装すればよいことになります.

具体的なコマンド作成手順は以下の通りです.

CMXCommandクラスを継承してコマンドを作成する上で最低限作る必要があるのは, runメソッドとmainメソッドです. runメソッドは, CMXCommandクラスでは抽象クラスとして定義されており, 指定されたファイルを読み込んだ後の処理内容をここで記述します. 本クラスで定義されているstartメソッドを実行することで, 指定された各ファイルに対して, ファイルを読み込んでrunメソッドを実行して 結果をファイルに書き出すという処理を行います. ですので, mainメソッドではstartメソッドを呼ぶことだけすればよいことに なります. mainメソッドの典型的な記述内容は以下の通りです.

public static void main(String[] args) {
  MyCommand c = new MyCommand();
  try {
    c.start(args);
  } catch (Exception e) {
    c.showErrorMessage(e);
    System.exit(1);
  }
}

この他に, 前処理を記述するためのpreprocメソッド,後処理を記述するための postprocメソッド,各コマンド独自のオプション処理を追加するための setOptionsLocal, setBoolOptionsLocalメソッドがあります.

バージョン:
0.21
作成者:
Tetsuro Kitahara (t.kitahara@ksc.kwansei.ac.jp)

コンストラクタの概要
CMXCommand()
          Constructor
 
メソッドの概要
protected static void addOptionHelpMessage(java.lang.String option, java.lang.String message)
           
protected  void appendHelpMessage(java.lang.String s)
          推奨されていません。  
protected  void exitWithMessage(java.lang.String s)
           
protected static java.lang.String getBaseName(java.lang.String filename)
          Returns the filename from which both the directory and extension are removed.
protected static java.lang.String getBaseName(java.lang.String filename, java.lang.String ext)
          Returns the filename from which both the directory and extension are removed.
static ConfigXMLWrapper getConfigXMLWrapper()
           
protected  java.lang.String getDestDir()
           
protected  java.lang.String getFileName()
          推奨されていません。 

Returns the name of the currently processing file.

現在処理中のファイル名を返します. runメソッド内で現在処理中のファイル名が必要になったとき(たとえば拡張子だけが 異なるファイルを追加で読み込む場合など)に用いることを想定しています.

protected  java.lang.String getHelpMessage()
          OBSOLETE!
protected  java.lang.String getOutFileName()
           
protected  java.lang.String getVersion()
          Returns the program version.
 F1 indata()
          推奨されていません。 

Returns the input document.

入力ドキュメントを返します. runメソッドをオーバーライドする際に, runメソッド内で読み込んだデータに アクセスする際に用いることを想定しています.

 void init(CMXFileWrapper f)
          ファイルを読み込んだ直後にすべき処理がある場合には, このメソッドをオーバーライドします.
protected  boolean loopEnabled()
           
 void newOutputData(java.lang.String toptagname)
          推奨されていません。 Creates an empty document with the specified top-tag name and assigns it to the outdata instance. 指定された名前のトップタグを持つ空ドキュメントを生成し, outdataインスタンスに代入します.
 F2 outdata()
          推奨されていません。 

Returns the output document.

出力ドキュメントを返します. runメソッドをオーバーライドする際に, ファイルに書き込むべきデータを CMXFileWrapperオブジェクトに追加する際に用いることを想定しています.

protected  void postproc()
          Please override this method if your command require post-processing.
protected  void preproc()
          Please override this method if your command require pre-processing.
protected  FileWrapperCompatible readInputData(java.lang.String filename)
          Reads the specified file and returns a CMXFileWrapper object.
protected static java.lang.String removeDirName(java.lang.String filename)
          Returns the filename from which the directory is removed.
protected static java.lang.String removeExt(java.lang.String filename)
          Returns the filename from which the extension is removed.
protected static java.lang.String removeExt(java.lang.String filename, java.lang.String ext)
          Returns the filename from which the extension is removed.
protected  int requiredFiles()
           
protected  void run()
          推奨されていません。 

Please to override this method to define the main processing.

このメソッドをオーバーライドして, コマンドのメイン処理を記述してください.

protected  F2 run(F1 f)
           
protected  F2 run(F1[] f)
           
protected  boolean setBoolOptionsLocal(java.lang.String option)
          Please override this method to support yes/no options in a subclass.
protected  boolean setOptionsLocal(java.lang.String option, java.lang.String value)
          Please override this method to support non-yes/no options in your subclass.
 void setOutputData(F2 outdata)
          推奨されていません。 Assigns the specified CMXFileWrapper object to the output object. 指定されたCMXFileWrapperオブジェクトを出力オブジェクトに指定します.
protected  void showErrorMessage(java.lang.Exception e)
          Shows the error message.
 void start(java.lang.String args)
           
 void start(java.lang.String[] args)
          以下の処理を行います.
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

CMXCommand

public CMXCommand()
Constructor

メソッドの詳細

getOutFileName

protected java.lang.String getOutFileName()

indata

public final F1 indata()
推奨されていません。 

Returns the input document.

入力ドキュメントを返します. runメソッドをオーバーライドする際に, runメソッド内で読み込んだデータに アクセスする際に用いることを想定しています.


outdata

public final F2 outdata()
推奨されていません。 

Returns the output document.

出力ドキュメントを返します. runメソッドをオーバーライドする際に, ファイルに書き込むべきデータを CMXFileWrapperオブジェクトに追加する際に用いることを想定しています.


newOutputData

public final void newOutputData(java.lang.String toptagname)
                         throws InvalidFileTypeException,
                                javax.xml.parsers.ParserConfigurationException,
                                org.xml.sax.SAXException
推奨されていません。 Creates an empty document with the specified top-tag name and assigns it to the outdata instance. 指定された名前のトップタグを持つ空ドキュメントを生成し, outdataインスタンスに代入します.

例外:
InvalidFileTypeException
javax.xml.parsers.ParserConfigurationException
org.xml.sax.SAXException

setOutputData

public final void setOutputData(F2 outdata)
推奨されていません。 Assigns the specified CMXFileWrapper object to the output object. 指定されたCMXFileWrapperオブジェクトを出力オブジェクトに指定します.


getVersion

protected java.lang.String getVersion()
Returns the program version.
プログラムのバージョンを返します.


setBoolOptionsLocal

protected boolean setBoolOptionsLocal(java.lang.String option)
Please override this method to support yes/no options in a subclass. This method should return true when the option is processed and false when not processed.
サブクラスで独自のYES/NO型オプションをサポートする場合には, このメソッドをオーバーライドしてください. このメソッド内でオプションが処理された場合にはtrueを, 処理されなかった場合にはfalseを返さなければなりません.


setOptionsLocal

protected boolean setOptionsLocal(java.lang.String option,
                                  java.lang.String value)

Please override this method to support non-yes/no options in your subclass.

サブクラスで独自の非YES/NO型オプションをサポートする場合には, このメソッドをオーバーライドしてください. このメソッドがオプションを受け入れたらtrue, 受け入れなかったらfalseを返さなければなりません.


getDestDir

protected java.lang.String getDestDir()

loopEnabled

protected boolean loopEnabled()

requiredFiles

protected int requiredFiles()

readInputData

protected FileWrapperCompatible readInputData(java.lang.String filename)
                                       throws java.io.IOException,
                                              javax.xml.parsers.ParserConfigurationException,
                                              org.xml.sax.SAXException,
                                              javax.xml.transform.TransformerException
Reads the specified file and returns a CMXFileWrapper object.

指定されたファイル名を読み込んでCMXFileWrapperオブジェクトを 返します. 具体的には, CMXFileWrapper.readfile(filename)を実行しています. 通常はこのメソッドは使用しませんが, コマンドの都合により, 上記のメソッドが使えない場合(スタンダードMIDIファイル をMIDI XMLドキュメントとして読み込む場合)にオーバーライドしてください. (通常, ユーザがこのメソッドを呼び出す必要はありません.)

例外:
java.io.IOException
javax.xml.parsers.ParserConfigurationException
org.xml.sax.SAXException
javax.xml.transform.TransformerException

init

public void init(CMXFileWrapper f)
ファイルを読み込んだ直後にすべき処理がある場合には, このメソッドをオーバーライドします.

定義:
インタフェース CMXInitializer 内の init

start

public final void start(java.lang.String[] args)
                 throws java.io.IOException,
                        org.xml.sax.SAXException,
                        javax.xml.parsers.ParserConfigurationException,
                        javax.xml.transform.TransformerException,
                        jp.crestmuse.cmx.commands.InvalidOptionException,
                        InvalidFileTypeException
以下の処理を行います.
  1. コマンドラインを解釈し, ファイル名であれば内部のキューに蓄積し, オプションであればその処理を行います.
  2. preprocメソッドを呼び出します.
  3. 指定されたファイル名の各々に対して, ファイルの読み込み, runメソッドの実行, 結果のファイルへの書き込みを行います.
  4. postprocメソッドを呼び出します.
ユーザが定義したコマンドクラスのmainメソッドから呼び出されることを 想定しています.

例外:
java.io.IOException
org.xml.sax.SAXException
javax.xml.parsers.ParserConfigurationException
javax.xml.transform.TransformerException
jp.crestmuse.cmx.commands.InvalidOptionException
InvalidFileTypeException

start

public final void start(java.lang.String args)
                 throws java.io.IOException,
                        org.xml.sax.SAXException,
                        javax.xml.parsers.ParserConfigurationException,
                        javax.xml.transform.TransformerException,
                        jp.crestmuse.cmx.commands.InvalidOptionException,
                        InvalidFileTypeException
例外:
java.io.IOException
org.xml.sax.SAXException
javax.xml.parsers.ParserConfigurationException
javax.xml.transform.TransformerException
jp.crestmuse.cmx.commands.InvalidOptionException
InvalidFileTypeException

run

protected void run()
            throws java.io.IOException,
                   javax.xml.parsers.ParserConfigurationException,
                   org.xml.sax.SAXException,
                   javax.xml.transform.TransformerException,
                   InvalidFileTypeException
推奨されていません。 

Please to override this method to define the main processing.

このメソッドをオーバーライドして, コマンドのメイン処理を記述してください.

例外:
java.io.IOException
javax.xml.parsers.ParserConfigurationException
org.xml.sax.SAXException
javax.xml.transform.TransformerException
InvalidFileTypeException

run

protected F2 run(F1 f)
                                        throws java.io.IOException,
                                               javax.xml.parsers.ParserConfigurationException,
                                               org.xml.sax.SAXException,
                                               javax.xml.transform.TransformerException,
                                               InvalidFileTypeException
例外:
java.io.IOException
javax.xml.parsers.ParserConfigurationException
org.xml.sax.SAXException
javax.xml.transform.TransformerException
InvalidFileTypeException

run

protected F2 run(F1[] f)
                                        throws java.io.IOException,
                                               javax.xml.parsers.ParserConfigurationException,
                                               org.xml.sax.SAXException,
                                               javax.xml.transform.TransformerException,
                                               InvalidFileTypeException
例外:
java.io.IOException
javax.xml.parsers.ParserConfigurationException
org.xml.sax.SAXException
javax.xml.transform.TransformerException
InvalidFileTypeException

preproc

protected void preproc()
                throws java.io.IOException,
                       jp.crestmuse.cmx.commands.InvalidOptionException,
                       javax.xml.parsers.ParserConfigurationException,
                       org.xml.sax.SAXException,
                       javax.xml.transform.TransformerException

Please override this method if your command require pre-processing. The default implementation does nothing.

前処理が必要な場合は, このメソッドをオーバーライドしてください. デフォルトの実装では何もしません.

例外:
java.io.IOException
jp.crestmuse.cmx.commands.InvalidOptionException
javax.xml.parsers.ParserConfigurationException
org.xml.sax.SAXException
javax.xml.transform.TransformerException

postproc

protected void postproc()
                 throws java.io.IOException,
                        javax.xml.parsers.ParserConfigurationException,
                        org.xml.sax.SAXException,
                        javax.xml.transform.TransformerException

Please override this method if your command require post-processing. The default implementation does nothing.

後処理が必要な場合は, このメソッドをオーバーライドしてください. デフォルトの実装では何もしません.

例外:
java.io.IOException
javax.xml.parsers.ParserConfigurationException
org.xml.sax.SAXException
javax.xml.transform.TransformerException

getFileName

protected final java.lang.String getFileName()
推奨されていません。 

Returns the name of the currently processing file.

現在処理中のファイル名を返します. runメソッド内で現在処理中のファイル名が必要になったとき(たとえば拡張子だけが 異なるファイルを追加で読み込む場合など)に用いることを想定しています.


getConfigXMLWrapper

public static ConfigXMLWrapper getConfigXMLWrapper()

getHelpMessage

protected java.lang.String getHelpMessage()
OBSOLETE!

Shows the help message.

ヘルプメッセージを表示します. 独自のヘルプメッセージに変更したい場合は, ここをオーバーライドしてください. (通常はユーザが呼び出す必要はありません.)


addOptionHelpMessage

protected static void addOptionHelpMessage(java.lang.String option,
                                           java.lang.String message)

appendHelpMessage

protected void appendHelpMessage(java.lang.String s)
推奨されていません。 


showErrorMessage

protected void showErrorMessage(java.lang.Exception e)

Shows the error message.

エラーメッセージを表示します. 独自のエラーメッセージに変更したい場合は, ここをオーバーライドしてください. (通常はユーザが呼び出す必要はありません.)


exitWithMessage

protected void exitWithMessage(java.lang.String s)

removeExt

protected static java.lang.String removeExt(java.lang.String filename)
Returns the filename from which the extension is removed.
指定されたファイル名から拡張子を取り除いたものを返します.


removeExt

protected static java.lang.String removeExt(java.lang.String filename,
                                            java.lang.String ext)
Returns the filename from which the extension is removed.
指定されたファイル名から拡張子を取り除いたものを返します.


getBaseName

protected static java.lang.String getBaseName(java.lang.String filename)
Returns the filename from which both the directory and extension are removed.
指定されたファイル名からディレクトリ名と拡張子を取り除いたものを返します.


getBaseName

protected static java.lang.String getBaseName(java.lang.String filename,
                                              java.lang.String ext)
Returns the filename from which both the directory and extension are removed.
指定されたファイル名からディレクトリ名と拡張子を取り除いたものを返します.


removeDirName

protected static java.lang.String removeDirName(java.lang.String filename)
Returns the filename from which the directory is removed.
指定されたファイル名からディレクトリ名を取り除いたものを返します.