|
||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Objectjp.co.nissy.jpicosheet.core.ConcurrentBookWrapper
public class ConcurrentBookWrapper
1つのBookオブジェクトを複数のスレッドで同時に利用するためのラッパークラスです。
Bookオブジェクト、およびBookオブジェクトから得られるSheetなどのオブジェクトはスレッドセーフではありません。
複数のスレッドから同時にアクセスされるような場合、適切な同期を行うためにこのクラスを利用してください。
このクラスは同期化の制御にjava.util.concurrent.locksパッケージのReentrantReadWriteLockを利用しています。
このためBookオブジェクトおよび配下のSheet、Cell等のオブジェクトに対する参照を複数のスレッドから同時に行えます。
シートの追加、セルへの値セットなど、Bookおよび配下のオブジェクトに対する変更の操作を行えるのはこのオブジェクトの
書き込みロックを取得した1つのスレッドだけです。
このクラスを使ってBookオブジェクトに対する同時処理を行う場合、クラスのオブジェクトを1つだけ作成した上で
各スレッドはこのオブジェクトのメソッドのみを使ってBookおよび配下のオブジェクトを操作する必要があります。
もしBookオブジェクト自体が持つgetSheet(String sheetName)
メソッドを使ってSheetオブジェクトを取得し
セルの追加や参照などの操作を行おうとした場合、Bookおよび配下のオブジェクトの整合性は保障されません。
このクラスは、通常はこのクラスを利用するスレッドにBookおよび配下のオブジェクトを渡してしまわないように
メソッドが調整されています。Bookオブジェクト等のオブジェクトを直接操作場合と比べ、以下の例のような違いがあります。
addSheet()
やaddCell()
などのメソッドがSheetオブジェクトやCellオブジェクトを返さないsetCellValue()
などのメソッドを使用する際、対象となるSheetやCellが存在しなければ自動的に作成される
コンストラクタの概要 | |
---|---|
ConcurrentBookWrapper(Book book)
Bookオブジェクトを利用してオブジェクトを初期化します。 |
メソッドの概要 | |
---|---|
void |
addCell(java.lang.String cellName)
セルを追加します。 |
void |
addSheet(java.lang.String sheetName)
シートを追加します。 |
void |
deleteCell(java.lang.String cellName)
セルを削除します。 |
void |
deleteSheet(java.lang.String sheetName)
シートを削除します。 |
Book |
getBook(java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock writeLock)
このオブジェクトが保護しているBookオブジェクトを返します。 |
java.lang.String |
getBookName()
ブック名を返します。 |
java.lang.String |
getCellFormula(java.lang.String cellName)
セルの式を取得します。 |
java.lang.String |
getCellLabel(java.lang.String cellName)
セルのラベルを返します。 |
Element |
getCellValue(java.lang.String cellName)
セルの値を取得します。 |
java.math.MathContext |
getMathContext(java.lang.String sheetName)
指定したシートのMathContextを返します。 |
java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock |
getWriteLock()
書き込みロックを得ます。 |
void |
releaseWriteLock()
getWriteLock() で取得した書き込みロックを開放します。 |
void |
renameCell(java.lang.String cellName,
java.lang.String newCellName)
セル名を変更します。 |
void |
renameSheet(java.lang.String sheetName,
java.lang.String newSheetName)
既存のシートのシート名を変更します。 |
void |
setBookName(java.lang.String bookName)
ブック名を変更します。 |
void |
setCellLabel(java.lang.String cellName,
java.lang.String label)
セルのラベルをセットします。 |
void |
setCellValue(java.lang.String cellName,
java.lang.String value)
セルの値をセットします。 |
void |
setMathContext(java.lang.String sheetName,
java.math.MathContext mc)
指定したシートのMathContextをセットします。 |
クラス java.lang.Object から継承されたメソッド |
---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
コンストラクタの詳細 |
---|
public ConcurrentBookWrapper(Book book)
book
- Bookオブジェクトメソッドの詳細 |
---|
public void setBookName(java.lang.String bookName)
bookName
- 変更するブック名public java.lang.String getBookName()
public void addSheet(java.lang.String sheetName)
sheetName
- 新しく追加するシートの名前public void deleteSheet(java.lang.String sheetName)
sheetName
- 削除対象のシート名public void renameSheet(java.lang.String sheetName, java.lang.String newSheetName)
sheetName
- 変更対象のシート名newSheetName
- 変更後のシート名public void setMathContext(java.lang.String sheetName, java.math.MathContext mc)
sheetName
- MachContextをセットするシート名mc
- MathContextオブジェクトpublic java.math.MathContext getMathContext(java.lang.String sheetName)
sheetName
- MathContextを取得するシート名
public void setCellValue(java.lang.String cellName, java.lang.String value)
cellName
- 値をセットするセル名value
- 値の文字列表現public Element getCellValue(java.lang.String cellName)
cellName
- 値を取得するセル名
public java.lang.String getCellFormula(java.lang.String cellName)
cellName
- 値を取得するセル名
public void addCell(java.lang.String cellName)
cellName
- 追加するセル名public void deleteCell(java.lang.String cellName)
cellName
- 削除するセル名public void renameCell(java.lang.String cellName, java.lang.String newCellName)
cellName
- 変更対象のセル名newCellName
- 変更後のセル名public void setCellLabel(java.lang.String cellName, java.lang.String label)
cellName
- ラベルをセットするセル名label
- ラベルpublic java.lang.String getCellLabel(java.lang.String cellName)
cellName
- ラベルを取得するセル名
public java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock getWriteLock()
releaseWriteLock()
でロックの開放を行わなければなりません。
public void releaseWriteLock()
getWriteLock()
で取得した書き込みロックを開放します。
public Book getBook(java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock writeLock)
getWriteLock()
によって書き込みロックオブジェクトを
得ておかなければなりません。
writeLock
- getWriteLock()
によって得た書き込みロックオブジェクト
|
||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |