ohymosj
クラス OhSendPort

java.lang.Object
  拡張ohymosj.OhObject
      拡張ohymosj.OhPort
          拡張ohymosj.OhSenderPort
              拡張ohymosj.OhSendPort
直系の既知のサブクラス:
OhInputPort, OhSendDouble, OhSendFloat, OhSendInt, OhSendLong

public abstract class OhSendPort
extends OhSenderPort

基本型送信端子モデルを表すクラスです。

基本型送信端子モデル OhSendPort を定義しています。 基本型送信端子モデルは抽象クラスです。

基本型送信端子モデル OhSendPort は、自分で持っているデータを送信する端子であり、 データを送信する端子 OhSenderPort の一種です。 別の端子からもらったデータを送信する端子は中継端子 OhRelayPort です。

クラス OhSendPort では、

を記憶し、 を定義しました。

OhSendPort の送信機能は、基底クラス OhSenderPort で定義済みです。 OhSendPort には、複数の送信先端子を接続することができます。

OhSendPort; Abstract class for creating send ports.

Fields _dataPackArray, _numberOfDataPacks and some methods to store datapacks are defined.

バージョン:
$Revision: 1.76 $ $Date: 2004/03/08 17:03:02 $
作成者:
satoh

フィールドの概要
protected  OhArrayList _dataPackArray
           データパック送信用の配列リストです。
protected  java.util.Vector _dctVec
           この送信端子が供給するデータのデータ補間型ベクトルです。
protected  int _numberOfDataPacks
           _dataPackArray の要素数です。
protected  boolean _protectPastDataFlag
           データパックを保護するか(true)否か(false)のフラグです。
 
クラス ohymosj.OhSenderPort から継承したフィールド
_bufferList, _commentString, _numberOfReceivers, _receiverArray
 
クラス ohymosj.OhObject から継承したフィールド
_className, _objectName, _objectNumber, _owner, NEWLINE
 
コンストラクタの概要
OhSendPort()
           デフォルトコンストラクタは OhSendPort.init(String, int) を実行しません。
OhSendPort(java.lang.String aPortName, int aPortNum)
           基底クラス OhSenderPort のデフォルトコンストラクタを用い、 OhSendPort.init(String, int) を用いて、 メンバ変数を以下の通り初期化します。
OhSendPort(java.lang.String aPortName, int aPortNum, java.util.Vector aDctVec)
           基底クラス OhSenderPort のデフォルトコンストラクタを用い、 OhSendPort.init(String, int) を用いて、 メンバ変数を以下の通り初期化します。
 
メソッドの概要
 boolean areYouReady()
           計算作業前の確認を行ないます。
 void calReq()
           送信端子の所有者に計算要請を伝えます。
 boolean canYouGetData(OhTimePoint aTFrom, OhTimePoint aTTo)
           データ収録時刻の確認を行ないます。
 boolean canYouSwitch()
           端子の接続作業の終了処理およびデータ送受信開始のための準備作業を行ないます。
 void clearDataPack()
           全収録データパックを消去します。
 void dataPackStock(java.lang.Object aDataPack)
           データパックを収録します。
abstract  java.lang.String dataType()
           データの型を返します。
 void forgetDataPackStock(OhTimePoint aTFrom)
           時刻指定により不要データパックを消去します。
 boolean getDataPack(java.lang.Object[] aFormer, OhTimePoint _dataTime, java.lang.Object[] aLater)
           時刻指定によりデータパックを取得(送信)します。
 boolean getDataPack(java.lang.Object[] aFormer, OhTimePoint _dataTime, java.lang.Object[] aLater, char aMode)
           時刻指定によりデータパックを取得(送信)します。
 void getDataPackArray(OhArrayList[] aDpArray, int[] aNumOfDp)
           データパックの配列リストを取得(送信)します。
 java.util.Vector getDctVec()
           データ補間型ベクトルを返します。
 OhTimePoint getNewestDataTime()
           最新のデータの記録時刻を返します。
 int getNumberOfDataPacks()
           データパックの個数(_numberOfDataPacks)を返します。
 OhTimePoint getOldestDataTime()
           最古のデータの記録時刻を返します。
 boolean init(java.lang.String aPortName, int aPortNum)
           オブジェクト名、オブジェクト番号を初期化し、 データの補間は折れ線に設定します。
 boolean init(java.lang.String aPortName, int aPortNum, java.util.Vector aDctVec)
           オブジェクト名、オブジェクト番号、データ補間型ベクトルを初期化します。
 void reduceDataPackStock()
           不要データパックを消去します。
 void saveSendPortStock(java.io.PrintWriter aPw)
           データパックをストリーム aPw に書き込みます。
abstract  void sendByString(java.lang.String aDstr)
           データパックの作成および収録を行ないます。
 void setDataPackArray()
           デ−タパックの配列リストを設定します。
 void setDctVec(java.util.Vector aDctVec)
           データ補間型ベクトルを設定します。
 boolean setProtectPastDataFlag(boolean aFlag)
           _protectPastDataFlag を設定します。
 
クラス ohymosj.OhSenderPort から継承したメソッド
getCommentString, getNecessaryTimeFrom, getNecessaryTimeTo, printConnection, registerReceiver, setCommentString
 
クラス ohymosj.OhPort から継承したメソッド
canYouGetData, cPrint, create, getDataPack, getDataPack, setSender
 
クラス ohymosj.OhObject から継承したメソッド
getAbsName, getClassName, getObjectName, getObjectNumber, getOwner, getTopOwner, objCompare, objCompare, objCompare, oPrint, setOwner
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

_dataPackArray

protected OhArrayList _dataPackArray
データパック送信用の配列リストです。 _dataPackArray が指す配列には、Object 型にキャストされた収録データパックが格納されます。

An array for sending datapacks.


_numberOfDataPacks

protected int _numberOfDataPacks
_dataPackArray の要素数です。

The number of elements stored in "_dataPackArray".


_protectPastDataFlag

protected boolean _protectPastDataFlag
データパックを保護するか(true)否か(false)のフラグです。

This field is designed to use to control the protect mode of past "_dataPack".


_dctVec

protected java.util.Vector _dctVec
この送信端子が供給するデータのデータ補間型ベクトルです。

この OhSendPort クラスが供給するデータのデータ補間型ベクトルを メンバ変数として記憶します。

Data connection type vector of data provided this OhSendPort.

コンストラクタの詳細

OhSendPort

public OhSendPort()
デフォルトコンストラクタは OhSendPort.init(String, int) を実行しません。 その結果、以下の設定となります。

  • _objectName : null
  • _objectNumber : -1
  • _dctVec : null
  • その他のメンバ変数に対する処理は引数つきコンストラクタと同じです。 この場合、OhSendPort.init(String, int) を 用いてメンバ変数を初期化して下さい。


    OhSendPort

    public OhSendPort(java.lang.String aPortName,
                      int aPortNum)
               throws OhError
    基底クラス OhSenderPort のデフォルトコンストラクタを用い、 OhSendPort.init(String, int) を用いて、 メンバ変数を以下の通り初期化します。

  • _className : "OhSendPort"
  • _objectName : aPortName
  • _objectNumber : aPortNum
  • _owner : null
  • _bufferList : メモリに確保する。(接続作業用)
  • _receiverArray : null
  • _numberOfReceivers : -1
  • _dataPackArray : null
  • _numberOfDataPacks : -1
  • _dctVec : null
  • パラメータ:
    aPortName - a String value
    aPortNum - an int value

    OhSendPort

    public OhSendPort(java.lang.String aPortName,
                      int aPortNum,
                      java.util.Vector aDctVec)
               throws OhError
    基底クラス OhSenderPort のデフォルトコンストラクタを用い、 OhSendPort.init(String, int) を用いて、 メンバ変数を以下の通り初期化します。

  • _className : "OhSendPort"
  • _objectName : aPortName
  • _objectNumber : aPortNum
  • _owner : null
  • _bufferList : メモリに確保する。(接続作業用)
  • _receiverArray : null
  • _numberOfReceivers : -1
  • _dataPackArray : null
  • _numberOfDataPacks : -1
  • _dctVec : aDctVec
  • パラメータ:
    aPortName - a String value
    aPortNum - an int value
    aDctVec - a Vector value
    メソッドの詳細

    dataType

    public abstract java.lang.String dataType()
    データの型を返します。

    基底クラス OhSenderPort の抽象メソッドです。 このクラス OhSendPort でも抽象メソッドとしておきます。

    Returns the string which shows the type of the datapack sent by the current port.

    定義:
    クラス OhSenderPort 内の dataType
    戻り値:
    a String value

    sendByString

    public abstract void sendByString(java.lang.String aDstr)
    データパックの作成および収録を行ないます。

    抽象メソッドです。 aDstr (arg) に格納されたデータ文字列からデータパックを作成し、収録します。

    A data pack is created and recorded from the data character sequence stored in "aDstr".

    パラメータ:
    aDstr - a String value

    init

    public boolean init(java.lang.String aPortName,
                        int aPortNum)
                 throws OhError
    オブジェクト名、オブジェクト番号を初期化し、 データの補間は折れ線に設定します。 具体的には、 _dctVec の第一要素に DataConnectionType.BROKENLINE を格納します。

    Initialization.

    オーバーライド:
    クラス OhSenderPort 内の init
    パラメータ:
    aPortName - a String value
    aPortNum - an int value
    戻り値:
    a boolean value
    例外:
    OhError

    init

    public boolean init(java.lang.String aPortName,
                        int aPortNum,
                        java.util.Vector aDctVec)
                 throws OhError
    オブジェクト名、オブジェクト番号、データ補間型ベクトルを初期化します。

    Initialization.

    パラメータ:
    aPortName - a String value
    aPortNum - an int value
    aDctVec - a Vector value
    戻り値:
    a boolean value
    例外:
    OhError

    setDctVec

    public void setDctVec(java.util.Vector aDctVec)
    データ補間型ベクトルを設定します。

    Sets the data connection type vector.

    パラメータ:
    aDctVec - a Vector value

    getDctVec

    public java.util.Vector getDctVec()
    データ補間型ベクトルを返します。

    This function is decleared abstract method in OhSenderPort. Implemented in this class. Returns the data connection vector which is a instance variable.

    定義:
    クラス OhSenderPort 内の getDctVec
    戻り値:
    a Vector value

    canYouSwitch

    public boolean canYouSwitch()
                         throws OhError
    端子の接続作業の終了処理およびデータ送受信開始のための準備作業を行ないます。 具体的には、_receiverArray の作成および _dataPackArray の準備を行ないます。

    このメソッドは以下を実行します。

    1. 送信先受信端子配列 _dataPackArray を作成する。
    2. 送信先受信端子の数を _numberOfReceivers に設定する。
    3. _dataPackArray のメモリを確保する。
    4. _numberOfDataPacks の値を -1 から 0 に変更する。

    まず、 OhSenderPort.canYouSwitch() を実行します。 具体的には、_receiverArray を作成します。 ここで戻り値が false ならば、false を返します。

    戻り値が true なら、_dataPackArray を new することによりメモリを確保し、 _numberOfDataPacks の値を -1 から 0 に変換し、true を返します。

     [RETURN]
      ・true --> canYouSwitch() が正常に実行できた場合。
      ・false -> _receivePortArray が作成済みの場合。
                 _dataPackArray が作成済みの場合。
     

    Preparation of "_dataPackArray". That is, "_numberOfDataPacks" is set as 0 from -1.

    オーバーライド:
    クラス OhSenderPort 内の canYouSwitch
    戻り値:
    a boolean value
    例外:
    OhError - if an error occurs

    areYouReady

    public boolean areYouReady()
    計算作業前の確認を行ないます。

    基底クラス OhSenderPort の抽象メソッドです。

    データパックを送信可能な状態であることを確認します。 _receiverArray が作成済みで、データパック収録用の _bufferList が存在すれば、 データパックを収録、送信できます。

     [RETURN]
      ・true --> _sender が null で、データパック収録用 _bufferList が存在する場合。
                 または、_sender が設定されている場合。
      ・false -> _sender が null で、データパック収録用 _bufferList が存在しない場合。
     

    Checks before calculation.

    オーバーライド:
    クラス OhSenderPort 内の areYouReady
    戻り値:
    a boolean value

    calReq

    public void calReq()
                throws OhCannotGetDataError,
                       OhError
    送信端子の所有者に計算要請を伝えます。

    Transer the calculation request to the owner.

    オーバーライド:
    クラス OhPort 内の calReq
    例外:
    OhCannotGetDataError - if an error occurs
    OhError - if an error occurs

    dataPackStock

    public void dataPackStock(java.lang.Object aDataPack)
    データパックを収録します。

    最新の収録データパックと aDataPack (arg) のデータ記録時刻を比較し、 aDataPack の方が新しければ aDataPack を _bufferList に収録します。

    同時刻の場合や aDataPack の方が古い場合は aDataPack を収録しません。 例えば不連続判断が不要な場合などは派生クラスで再定義して下さい。

     [in] aDataPack : 送信するデータパックを Object 型にキャストしたもの。
     

    Stocks "_bufferList" if the data time of "aDataPack" is newer than the data time of the newest datapack stored in "_bufferList. Otherwise the "_bufferList" is not included into "_bufferList". [in] "aDataPack": a datapack to be stocked. It must be casted as OhObject.

    パラメータ:
    aDataPack - an Object value

    setDataPackArray

    public void setDataPackArray()
    デ−タパックの配列リストを設定します。

    基底クラス OhSenderPort の抽象メソッドです。

    実際には、 _dataPackArray の要素数を _numberOfDataPacks に設定するだけです。

    Makes data pack array.

    定義:
    クラス OhSenderPort 内の setDataPackArray

    getOldestDataTime

    public OhTimePoint getOldestDataTime()
    最古のデータの記録時刻を返します。

    Returns the oldest data time.

    定義:
    クラス OhPort 内の getOldestDataTime
    戻り値:
    an OhTimePoint value

    getNewestDataTime

    public OhTimePoint getNewestDataTime()
    最新のデータの記録時刻を返します。

    Returns the newest data time.

    定義:
    クラス OhPort 内の getNewestDataTime
    戻り値:
    an OhTimePoint value

    getNumberOfDataPacks

    public int getNumberOfDataPacks()
    データパックの個数(_numberOfDataPacks)を返します。

    Returns the number of data packs which stored in the sender.

    定義:
    クラス OhPort 内の getNumberOfDataPacks
    戻り値:
    an int value

    canYouGetData

    public boolean canYouGetData(OhTimePoint aTFrom,
                                 OhTimePoint aTTo)
    データ収録時刻の確認を行ないます。

    基底クラス OhSenderPort の抽象メソッドです。 このクラス OhSendPort で実装します。

    aTFrom 以前から aTTo 以降までのデータパックが収録されている場合 true を返し、 収録されていない場合 false を返します。

    まず、_dataPackArray に収録されている場合 true を返します。 収録されていない場合は、更に _bufferList に収録されているか調べ、 _bufferList に収録されていれば _dataPackArray を更新して true を返します。 収録されていない場合 false を返します。

     [ARGUMENT]
      ・aTFrom -> aTFrom 以前からデータパックが収録されていることを確認する。
      ・aTTo ---> aTTo 以降までデータパックが収録されていることを確認する。
     [RETURN]
      ・true ---> aTFrom 以前から aTTo 以降までのデータパックが収録されている場合。
      ・false --> aTFrom 以前から aTTo 以降までのデータパックが収録されていない場合。
     

    Checks the data time recorded.

    定義:
    クラス OhSenderPort 内の canYouGetData
    パラメータ:
    aTFrom - an OhTimePoint value
    aTTo - an OhTimePoint value
    戻り値:
    a boolean value

    getDataPackArray

    public void getDataPackArray(OhArrayList[] aDpArray,
                                 int[] aNumOfDp)
    データパックの配列リストを取得(送信)します。

    基底クラス OhSenderPort の抽象メソッドです。

    引数にメンバ変数 _dataPackArray, _numberOfDataPacks を格納します。

    Sends the datapack array.

    定義:
    クラス OhSenderPort 内の getDataPackArray
    パラメータ:
    aDpArray - an OhArrayList[] value
    aNumOfDp - an int[] value

    getDataPack

    public boolean getDataPack(java.lang.Object[] aFormer,
                               OhTimePoint _dataTime,
                               java.lang.Object[] aLater,
                               char aMode)
    時刻指定によりデータパックを取得(送信)します。

    基底クラス OhSenderPort の抽象メソッドです。

    _sender が null でない場合、_sender に getDataPack() を実行させます。 この時、引数はそのまま渡します。

    _sender が null の場合、_dataPackArray を検索して以下の処理を行ないます。

    aFormer には、データ記録時刻が _dataTime 以前で _dataTime に最も近い 収録データパックを取得し、格納します。

    aLater には、データ記録時刻が _dataTime 以降で _dataTime に最も近い 収録データパックを取得し、格納します。

    データ記録時刻が丁度 _dataTime であるデータパックが収録されている場合は、 aFormer, aLater ともそれを格納します。

    条件を満たすデータパックを取得できない場合、aFormer, aLater は null に設定されます。

    aMode は取得モードを選択するためのオプションで、下記の通りです。

    • 'b' ----> aFormer, aLater の両方を必ず取得する。取得できない場合は両方とも null に設定する。
    • 'f' ----> aFormer を必ず取得する。aLater を取得できなくても aFormer のみ取得する。
    • 'l' ----> aLater を必ず取得する。aFormer を取得できなくても aLater のみ取得する。
    • その他 -> aFormer, aLater の少なくとも一方を取得する。

    aMode のデフォルト値は 'b' です。 多重定義したので、 引数に aLater を渡さない場合は aMode を 'f' として aFormer のみを取得し、 引数に aFormer を渡さない場合は aMode を 'l' として aLater のみを取得します。

    Sends the datapacks.

    定義:
    クラス OhSenderPort 内の getDataPack
    パラメータ:
    aFormer - an Object[] value
    _dataTime - an OhTimePoint value
    aLater - an Object[] value
    aMode - a char value
    戻り値:
    a boolean value

    getDataPack

    public boolean getDataPack(java.lang.Object[] aFormer,
                               OhTimePoint _dataTime,
                               java.lang.Object[] aLater)
    時刻指定によりデータパックを取得(送信)します。

    基底クラス OhSenderPort の抽象メソッドです。

    _sender が null でない場合、_sender に getDataPack() を実行させます。 この時、引数はそのまま渡します。

    _sender が null の場合、_dataPackArray を検索して以下の処理を行ないます。

    aFormer には、データ記録時刻が _dataTime 以前で _dataTime に最も近い 収録データパックを取得し、格納します。

    aLater には、データ記録時刻が _dataTime 以降で _dataTime に最も近い 収録データパックを取得し、格納します。

    データ記録時刻が丁度 _dataTime であるデータパックが収録されている場合は、 aFormer, aLater ともそれを格納します。

    aFormer, aLater の両方を必ず取得します。取得できない場合は両方とも null に設定します。

    Sends the datapacks.

    パラメータ:
    aFormer - an Object[] value
    _dataTime - an OhTimePoint value
    aLater - an Object[] value
    戻り値:
    a boolean value

    reduceDataPackStock

    public void reduceDataPackStock()
    不要データパックを消去します。

    基底クラス OhSenderPort の抽象メソッドです。

    OhSendPort.getNecessaryTimeFrom() より前の収録データパックを _bufferList から消去し、 _dataPackArray, _numberOfDataPacks を更新します。

    Deletion of an unnecessary datapacks.

    定義:
    クラス OhSenderPort 内の reduceDataPackStock

    forgetDataPackStock

    public void forgetDataPackStock(OhTimePoint aTFrom)
    時刻指定により不要データパックを消去します。

    aTFrom (arg) より前の収録データパックを _bufferList から消去し、 _dataPackArray, _numberOfDataPacks を更新します。

    Delete past datapack before "aTFrom", and renew "_dataPackArray" and "_numberOfDataPacks".

    パラメータ:
    aTFrom - an OhTimePoint value

    clearDataPack

    public void clearDataPack()
    全収録データパックを消去します。

    _bufferList の全収録データパックを消去し、_dataPackArray を消去します。 その後、_dataPackArray は null に、_numberOfDataPacks は -1 に設定されます。

    Deletion of all recorded datapacks.


    setProtectPastDataFlag

    public boolean setProtectPastDataFlag(boolean aFlag)
    _protectPastDataFlag を設定します。 データパックを消去したくない場合は true に設定してください。

    Sets "_protectPastDataFlag".

    パラメータ:
    aFlag - a boolean value
    戻り値:
    a boolean value

    saveSendPortStock

    public void saveSendPortStock(java.io.PrintWriter aPw)
    データパックをストリーム aPw に書き込みます。

    収録しているデータパックを出力ストリーム aPw で指定されるファイルに書き込みます。

    データはすべて ( ... ) のように括弧で囲みます。 最初のデータは、収録しているデータパックの個数です。 データパックの個数が正なら、 そのあとにデータパックを文字列に変換し、括弧で囲んだものを書き込みます。

    Saves the recorded datapacks at the file, "aPw".

    パラメータ:
    aPw - a PrintWriter value