org.apache.poi.hssf.record.aggregates

## Class SharedValueManager

- java.lang.Object
- - org.apache.poi.hssf.record.aggregates.SharedValueManager

-     public final class SharedValueManager
      extends java.lang.Object

  Manages various auxiliary records while constructing a `RowRecordsAggregate`:
  - `SharedFormulaRecord`s
  - `ArrayRecord`s
  - `TableRecord`s
  Author:
    Josh Micich, Vladimirs Abramovs(Vladimirs.Abramovs at exigenservices.com) - handling of ArrayRecords

- - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addArrayRecord(ArrayRecord ar)` Add specified Array Record.
    `static SharedValueManager` | `create(SharedFormulaRecord[] sharedFormulaRecords, CellReference[] firstCells, ArrayRecord[] arrayRecords, TableRecord[] tableRecords)`
    `static SharedValueManager` | `createEmpty()`
    `ArrayRecord` | `getArrayRecord(int firstRow, int firstColumn)`
    `SharedValueRecordBase` | `getRecordForFirstCell(FormulaRecordAggregate agg)` Gets the `SharedValueRecordBase` record if it should be encoded immediately after the formula record contained in the specified `FormulaRecordAggregate` agg.
    `SharedFormulaRecord` | `linkSharedFormulaRecord(CellReference firstCell, FormulaRecordAggregate agg)`
    `CellRangeAddress8Bit` | `removeArrayFormula(int rowIndex, int columnIndex)` Removes the `ArrayRecord` for the cell group containing the specified cell.
    `void` | `unlink(SharedFormulaRecord sharedFormulaRecord)` Converts all `FormulaRecord`s handled by `sharedFormulaRecord` to plain unshared formulas

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Method Detail

    - #### createEmpty

          public static SharedValueManager createEmpty()

      Returns:
        a new empty `SharedValueManager`.

    - #### create

          public static SharedValueManager create(SharedFormulaRecord[] sharedFormulaRecords,
                                                  CellReference[] firstCells,
                                                  ArrayRecord[] arrayRecords,
                                                  TableRecord[] tableRecords)

    - #### linkSharedFormulaRecord

          public SharedFormulaRecord linkSharedFormulaRecord(CellReference firstCell,
                                                             FormulaRecordAggregate agg)

      Parameters:
        `firstCell` - as extracted from the `ExpPtg` from the cell's formula.
      Returns:
        never `null`

    - #### getRecordForFirstCell

          public SharedValueRecordBase getRecordForFirstCell(FormulaRecordAggregate agg)

      Gets the `SharedValueRecordBase` record if it should be encoded immediately after the formula record contained in the specified `FormulaRecordAggregate` agg. Note - the shared value record always appears after the first formula record in the group. For arrays and tables the first formula is always the in the top left cell. However, since shared formula groups can be sparse and/or overlap, the first formula may not actually be in the top left cell.
      Returns:
        the SHRFMLA, TABLE or ARRAY record for the formula cell, if it is the first cell of a table or array region. `null` if the formula cell is not shared/array/table, or if the specified formula is not the the first in the group.

    - #### unlink

          public void unlink(SharedFormulaRecord sharedFormulaRecord)

      Converts all `FormulaRecord`s handled by `sharedFormulaRecord` to plain unshared formulas

    - #### addArrayRecord

          public void addArrayRecord(ArrayRecord ar)

      Add specified Array Record.

    - #### removeArrayFormula

          public CellRangeAddress8Bit removeArrayFormula(int rowIndex,
                                                         int columnIndex)

      Removes the `ArrayRecord` for the cell group containing the specified cell. The caller should clear (set blank) all cells in the returned range.
      Returns:
        the range of the array formula which was just removed. Never `null`.

    - #### getArrayRecord

          public ArrayRecord getArrayRecord(int firstRow,
                                            int firstColumn)

      Returns:
        the shared ArrayRecord identified by (firstRow, firstColumn). never `null`.

Copyright 2020 The Apache Software Foundation or its licensors, as applicable.