| Package | Description |
|---|---|
| org.zkoss.zss.model |
ZK Spreadsheet Internal Book Model classes.
|
| org.zkoss.zss.model.impl |
ZK Spreadsheet Internal Book Model Implementation classes.
|
| org.zkoss.zss.model.impl.sys.formula |
ZK Spreadsheet Internal Book Model Implementation classes.
|
| org.zkoss.zss.model.sys.formula |
ZK Spreadsheet Internal Book Model Engines classes.
|
| org.zkoss.zss.range |
ZK Spreadsheet Internal Range API classes.
|
| org.zkoss.zss.range.impl |
ZK Spreadsheet Internal Range API Implementation classes.
|
| org.zkoss.zss.range.impl.autofill |
ZK Spreadsheet Internal Range API Implementation classes.
|
| org.zkoss.zss.range.impl.imexp |
ZK Spreadsheet Internal Range API Implementation classes.
|
| Modifier and Type | Method and Description |
|---|---|
SSheet |
SBook.createSheet(String name)
Create a sheet
|
SSheet |
SBook.createSheet(String name,
SSheet src)
Create a sheet and copy the content from the specified src sheet; note
the owner book of the specified src sheet can be different from this
book.
|
SSheet |
ModelEvent.getSheet() |
SSheet |
SheetRegion.getSheet() |
SSheet |
SConditionalFormattingRule.getSheet() |
SSheet |
SRow.getSheet() |
SSheet |
SChart.getSheet() |
SSheet |
SDataValidation.getSheet() |
SSheet |
SCell.getSheet() |
SSheet |
SConditionalFormatting.getSheet()
The sheet on which this conditional formatting covered
|
SSheet |
SColumn.getSheet() |
SSheet |
SColumnArray.getSheet() |
SSheet |
SPicture.getSheet() |
SSheet |
SBook.getSheet(int idx)
Get sheet at the index
|
SSheet |
SBook.getSheetById(String id)
Get the sheet by id
|
SSheet |
SBook.getSheetByName(String name)
Get the sheet by name
|
| Modifier and Type | Method and Description |
|---|---|
List<SSheet> |
SBook.getSheets()
Get all sheets
|
| Modifier and Type | Method and Description |
|---|---|
static ModelEvent |
ModelEvents.createModelEvent(String name,
SBook book,
SSheet sheet,
Map data) |
static ModelEvent |
ModelEvents.createModelEvent(String name,
SSheet sheet) |
static ModelEvent |
ModelEvents.createModelEvent(String name,
SSheet sheet,
CellRegion region) |
static ModelEvent |
ModelEvents.createModelEvent(String name,
SSheet sheet,
CellRegion region,
Map data) |
static ModelEvent |
ModelEvents.createModelEvent(String name,
SSheet sheet,
Map data) |
SSheet |
SBook.createSheet(String name,
SSheet src)
Create a sheet and copy the content from the specified src sheet; note
the owner book of the specified src sheet can be different from this
book.
|
void |
SBook.deleteSheet(SSheet sheet)
Delete the sheet
|
ViewAnchor |
ViewAnchor.getRightBottomAnchor(SSheet sheet) |
int |
SBook.getSheetIndex(SSheet sheet)
Get the index of sheet
|
void |
SBook.moveSheetTo(SSheet sheet,
int index)
Move the sheet to new position
|
void |
SBook.setSheetName(SSheet sheet,
String newname)
Set the sheet to a new name
|
| Constructor and Description |
|---|
PasteSheetRegion(SSheet sheet,
int row,
int column,
int lastRow,
int lastColumn,
boolean wholeColumn)
Deprecated.
|
PasteSheetRegion(SSheet sheet,
int row,
int column,
int lastRow,
int lastColumn,
boolean wholeColumn,
boolean wholeRow) |
SheetRegion(SSheet sheet,
CellRegion region) |
SheetRegion(SSheet sheet,
int row,
int column) |
SheetRegion(SSheet sheet,
int row,
int column,
int lastRow,
int lastColumn) |
SheetRegion(SSheet sheet,
String areaReference) |
| Modifier and Type | Class and Description |
|---|---|
class |
AbstractSheetAdv |
class |
SheetImpl |
| Modifier and Type | Method and Description |
|---|---|
SSheet |
BookImpl.createSheet(String name) |
SSheet |
BookImpl.createSheet(String name,
SSheet src) |
SSheet |
ConditionalFormattingRuleImpl.getSheet() |
SSheet |
ColumnArrayImpl.getSheet() |
SSheet |
PictureImpl.getSheet() |
SSheet |
RowImpl.getSheet() |
SSheet |
CellImpl.getSheet() |
SSheet |
ChartImpl.getSheet() |
SSheet |
DataValidationImpl.getSheet() |
SSheet |
ConditionalFormattingImpl.getSheet() |
SSheet |
BookImpl.getSheet(int i) |
SSheet |
BookImpl.getSheetById(String id) |
SSheet |
BookImpl.getSheetByName(String name) |
| Modifier and Type | Method and Description |
|---|---|
List<SSheet> |
BookImpl.getSheets() |
| Modifier and Type | Method and Description |
|---|---|
protected void |
BookImpl.checkOwnership(SSheet sheet) |
SSheet |
BookImpl.createSheet(String name,
SSheet src) |
void |
BookImpl.deleteSheet(SSheet sheet) |
int |
BookImpl.getSheetIndex(SSheet sheet) |
void |
BookImpl.moveSheetTo(SSheet sheet,
int index) |
void |
BookImpl.setSheetName(SSheet sheet,
String newname) |
| Constructor and Description |
|---|
ConditionalFormattingImpl(SSheet sheet) |
PasteCellHelper(SSheet destSheet) |
| Modifier and Type | Method and Description |
|---|---|
SSheet |
EvalSheet.getNSheet() |
| Constructor and Description |
|---|
EvalSheet(SSheet sheet) |
| Modifier and Type | Method and Description |
|---|---|
SSheet |
FormulaEvaluationContext.getSheet() |
SSheet |
FormulaClearContext.getSheet() |
SSheet |
FormulaParseContext.getSheet() |
| Constructor and Description |
|---|
FormulaClearContext(SSheet sheet) |
FormulaEvaluationContext(SSheet sheet,
Ref dependent) |
FormulaEvaluationContext(SSheet sheet,
Ref dependent,
int[] offset) |
FormulaEvaluationContext(SSheet sheet,
SCell cell,
Ref dependent,
int[] offset,
boolean externFormula) |
FormulaParseContext(SBook book,
SSheet sheet,
SCell cell,
String sheetName,
Ref dependent) |
FormulaParseContext(SBook book,
SSheet sheet,
SCell cell,
String sheetName,
Ref dependent,
Locale locale) |
FormulaParseContext(SSheet sheet,
Ref dependent) |
FormulaParseContext(SSheet sheet,
String sheetName,
Ref dependent) |
| Modifier and Type | Method and Description |
|---|---|
SSheet |
SRange.cloneSheet(String name)
Clone sheet as specified in this Range.
|
SSheet |
SRange.cloneSheetFrom(String name,
SSheet sheet)
Clone from the specified source sheet to the owner book of this range.
|
SSheet |
SRange.createSheet(String name)
Create sheet of this book as specified in this Range.
|
SSheet |
SRange.getSheet()
Returns associate
SSheet of this range. |
| Modifier and Type | Method and Description |
|---|---|
SSheet |
SRange.cloneSheetFrom(String name,
SSheet sheet)
Clone from the specified source sheet to the owner book of this range.
|
void |
SExporter.export(SSheet sheet,
OutputStream fos)
Deprecated.
|
static SRange |
SRanges.range(SSheet sheet)
|
static SRange |
SRanges.range(SSheet sheet,
CellRegion region)
|
static SRange |
SRanges.range(SSheet sheet,
int row,
int col)
|
static SRange |
SRanges.range(SSheet sheet,
int tRow,
int lCol,
int bRow,
int rCol)
Returns the associated
XRange of the specified XNSheet and area. |
static SRange |
SRanges.range(SSheet sheet,
String areaReference)
|
static SRange |
SRanges.rangeByName(SSheet sheet,
String name)
Returns the associated
SRange of the specified name of a NamedRange (e.g. |
| Modifier and Type | Field and Description |
|---|---|
protected SSheet |
RangeHelperBase.sheet |
| Modifier and Type | Method and Description |
|---|---|
SSheet |
RangeImpl.cloneSheet(String name) |
SSheet |
RangeImpl.cloneSheetFrom(String name,
SSheet sheet) |
SSheet |
RangeImpl.createSheet(String name) |
SSheet |
InsertDeleteUpdate.getSheet() |
SSheet |
MergeUpdate.getSheet() |
SSheet |
AutoFilterUpdate.getSheet() |
SSheet |
RangeImpl.getSheet() |
| Modifier and Type | Method and Description |
|---|---|
void |
ModelUpdateCollector.addAutoFilterUpdate(SSheet sheet,
STable table) |
void |
ModelUpdateCollector.addCellUpdate(SSheet sheet,
int row,
int column,
int lastRow,
int lastColumn)
Deprecated.
|
void |
ModelUpdateCollector.addCellUpdate(SSheet sheet,
int row,
int column,
int lastRow,
int lastColumn,
CellAttribute cellAttr) |
void |
ModelUpdateCollector.addInsertDeleteUpdate(SSheet sheet,
boolean inserted,
boolean isRow,
int index,
int lastIndex) |
void |
ModelUpdateCollector.addMergeChange(SSheet sheet,
CellRegion original,
CellRegion changeTo) |
SSheet |
RangeImpl.cloneSheetFrom(String name,
SSheet sheet) |
static Set<String> |
InsertDeleteHelper.collectContainedTables(SSheet sheet,
int row1,
int col1,
int row2,
int col2) |
static void |
InsertDeleteHelper.deleteTablesByNames(SSheet sheet,
Set<String> toDelete) |
static boolean |
DataRegionHelper.isOneCell(SSheet sheet,
CellRegion rng) |
void |
NotifyChangeHelper.notifyChartChange(SSheet sheet,
String chartId) |
void |
NotifyChangeHelper.notifyCustomEvent(String customEventName,
SSheet sheet,
Object data) |
void |
NotifyChangeHelper.notifyDataValidationChange(SSheet sheet,
String validationId) |
void |
NotifyChangeHelper.notifyDisplayGridlines(SSheet sheet,
boolean show) |
void |
NotifyChangeHelper.notifyNameNameChange(SSheet sheet,
SName name,
String oldName) |
void |
NotifyChangeHelper.notifyProtectSheet(SSheet sheet,
boolean protect) |
void |
NotifyChangeHelper.notifySheetAutoFilterChange(SSheet sheet,
STable table) |
void |
NotifyChangeHelper.notifySheetChartAdd(SSheet sheet,
String id) |
void |
NotifyChangeHelper.notifySheetChartDelete(SSheet sheet,
String id) |
void |
NotifyChangeHelper.notifySheetChartUpdate(SSheet sheet,
String id) |
void |
NotifyChangeHelper.notifySheetCreate(SSheet sheet) |
void |
NotifyChangeHelper.notifySheetDelete(SBook book,
SSheet deletedSheet,
int deletedIndex) |
void |
NotifyChangeHelper.notifySheetFreezeChange(SSheet sheet) |
void |
NotifyChangeHelper.notifySheetNameChange(SSheet sheet,
String oldName) |
void |
NotifyChangeHelper.notifySheetPictureAdd(SSheet sheet,
String id) |
void |
NotifyChangeHelper.notifySheetPictureDelete(SSheet sheet,
String id) |
void |
NotifyChangeHelper.notifySheetPictureMove(SSheet sheet,
String id) |
void |
NotifyChangeHelper.notifySheetReorder(SSheet sheet,
int oldIdx) |
void |
NotifyChangeHelper.notifySheetVisibleChange(SSheet sheet) |
| Constructor and Description |
|---|
AutoFilterUpdate(SSheet sheet,
STable table) |
InsertDeleteUpdate(SSheet sheet,
boolean inserted,
boolean row,
int index,
int lastIndex) |
MergeUpdate(SSheet sheet,
CellRegion origMerge,
CellRegion merge) |
PasteRangeImpl(SSheet sheet,
int tRow,
int lCol,
int bRow,
int rCol,
boolean wholeRow,
boolean wholeColumn) |
RangeImpl(SSheet sheet) |
RangeImpl(SSheet sheet,
CellRegion region) |
RangeImpl(SSheet sheet,
int row,
int col) |
RangeImpl(SSheet sheet,
int tRow,
int lCol,
int bRow,
int rCol) |
| Modifier and Type | Method and Description |
|---|---|
void |
AutoFillHelper.fill(SSheet sheet,
CellRegion srcRegion,
CellRegion dstRegion,
SRange.FillType fillType)
fill the sheet, from srcRef to dstRef
|
void |
AutoFillHelper.fillDown(SSheet sheet,
CellRegion srcRef,
CellRegion dstRef,
SRange.FillType fillType) |
void |
AutoFillHelper.fillLeft(SSheet sheet,
CellRegion srcRef,
CellRegion dstRef,
SRange.FillType fillType) |
void |
AutoFillHelper.fillRight(SSheet sheet,
CellRegion srcRef,
CellRegion dstRef,
SRange.FillType fillType) |
void |
AutoFillHelper.fillUp(SSheet sheet,
CellRegion srcRef,
CellRegion dstRef,
SRange.FillType fillType) |
| Modifier and Type | Method and Description |
|---|---|
protected SSheet |
AbstractExcelImporter.importSheet(org.zkoss.poi.ss.usermodel.Sheet poiSheet,
int poiSheetIndex) |
| Modifier and Type | Method and Description |
|---|---|
protected void |
ExcelXlsxExporter.addPoiRule(SSheet sheet,
org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCfRule ctRule,
SConditionalFormattingRule rule,
int priority) |
void |
AbstractExporter.export(SSheet sheet,
OutputStream fos) |
protected void |
ExcelXlsExporter.exportAutoFilter(SSheet sheet,
org.zkoss.poi.ss.usermodel.Sheet poiSheet) |
protected abstract void |
AbstractExcelExporter.exportAutoFilter(SSheet sheet,
org.zkoss.poi.ss.usermodel.Sheet poiSheet) |
protected void |
ExcelXlsxExporter.exportAutoFilter(SSheet sheet,
org.zkoss.poi.ss.usermodel.Sheet poiSheet)
See Javadoc at
AbstractExcelImporter importAutoFilter(). |
protected void |
ExcelXlsExporter.exportChart(SSheet sheet,
org.zkoss.poi.ss.usermodel.Sheet poiSheet) |
protected abstract void |
AbstractExcelExporter.exportChart(SSheet sheet,
org.zkoss.poi.ss.usermodel.Sheet poiSheet) |
protected void |
ExcelXlsxExporter.exportChart(SSheet sheet,
org.zkoss.poi.ss.usermodel.Sheet poiSheet)
reference DrawingManagerImpl.addChartX()
|
protected void |
ExcelXlsExporter.exportColumnArray(SSheet sheet,
org.zkoss.poi.ss.usermodel.Sheet poiSheet,
SColumnArray columnArr) |
protected abstract void |
AbstractExcelExporter.exportColumnArray(SSheet sheet,
org.zkoss.poi.ss.usermodel.Sheet poiSheet,
SColumnArray columnArr) |
protected void |
ExcelXlsxExporter.exportColumnArray(SSheet sheet,
org.zkoss.poi.ss.usermodel.Sheet poiSheet,
SColumnArray columnArr) |
protected void |
ExcelXlsExporter.exportConditionalFormatting(SSheet sheet,
org.zkoss.poi.ss.usermodel.Sheet poiSheet) |
protected abstract void |
AbstractExcelExporter.exportConditionalFormatting(SSheet sheet,
org.zkoss.poi.ss.usermodel.Sheet poiSheet) |
protected void |
ExcelXlsxExporter.exportConditionalFormatting(SSheet sheet,
org.zkoss.poi.ss.usermodel.Sheet poiSheet) |
protected void |
AbstractExcelExporter.exportMergedRegions(SSheet sheet,
org.zkoss.poi.ss.usermodel.Sheet poiSheet) |
protected void |
ExcelXlsExporter.exportPassword(SSheet sheet,
org.zkoss.poi.ss.usermodel.Sheet poiSheet)
Export hashed password directly to poiSheet.
|
protected abstract void |
AbstractExcelExporter.exportPassword(SSheet sheet,
org.zkoss.poi.ss.usermodel.Sheet poiSheet) |
protected void |
ExcelXlsxExporter.exportPassword(SSheet sheet,
org.zkoss.poi.ss.usermodel.Sheet poiSheet)
Export hashed password directly to poiSheet.
|
protected void |
ExcelXlsExporter.exportPicture(SSheet sheet,
org.zkoss.poi.ss.usermodel.Sheet poiSheet) |
protected abstract void |
AbstractExcelExporter.exportPicture(SSheet sheet,
org.zkoss.poi.ss.usermodel.Sheet poiSheet) |
protected void |
ExcelXlsxExporter.exportPicture(SSheet sheet,
org.zkoss.poi.ss.usermodel.Sheet poiSheet)
Reference DrawingManagerImpl.addPicture()
|
protected void |
AbstractExcelExporter.exportRow(SSheet sheet,
org.zkoss.poi.ss.usermodel.Sheet poiSheet,
SRow row) |
protected void |
AbstractExcelExporter.exportRowColumn(SSheet sheet,
org.zkoss.poi.ss.usermodel.Sheet poiSheet) |
protected void |
AbstractExcelExporter.exportSheet(SSheet sheet) |
protected void |
AbstractExcelExporter.exportSheetProtection(SSheet sheet,
org.zkoss.poi.ss.usermodel.Sheet poiSheet)
POI SheetProtection.
|
protected int |
ExcelXlsExporter.exportTables(SSheet sheet,
org.zkoss.poi.ss.usermodel.Sheet poiSheet,
int tbId) |
protected abstract int |
AbstractExcelExporter.exportTables(SSheet sheet,
org.zkoss.poi.ss.usermodel.Sheet poiSheet,
int tbId) |
protected int |
ExcelXlsxExporter.exportTables(SSheet sheet,
org.zkoss.poi.ss.usermodel.Sheet poiSheet0,
int tbId) |
protected void |
ExcelXlsExporter.exportValidation(SSheet sheet,
org.zkoss.poi.ss.usermodel.Sheet poiSheet) |
protected abstract void |
AbstractExcelExporter.exportValidation(SSheet sheet,
org.zkoss.poi.ss.usermodel.Sheet poiSheet) |
protected void |
ExcelXlsxExporter.exportValidation(SSheet sheet,
org.zkoss.poi.ss.usermodel.Sheet poiSheet)
According to
SDataValidation.ValidationType, FORMULA means custom validation. |
protected void |
AbstractExcelImporter.importAutoFilter(org.zkoss.poi.ss.usermodel.Sheet poiSheet,
SSheet sheet)
POI AutoFilter.getFilterColumn(i) sometimes returns null.
|
protected SCell |
AbstractExcelImporter.importCell(org.zkoss.poi.ss.usermodel.Cell poiCell,
int row,
SSheet sheet) |
protected void |
ExcelXlsImporter.importChart(List<org.zkoss.poi.ss.usermodel.ZssChartX> poiCharts,
org.zkoss.poi.ss.usermodel.Sheet poiSheet,
SSheet sheet) |
protected void |
ExcelXlsxImporter.importChart(List<org.zkoss.poi.ss.usermodel.ZssChartX> poiCharts,
org.zkoss.poi.ss.usermodel.Sheet poiSheet,
SSheet sheet)
Not import X & Y axis title because
XSSFCategoryAxis doesn't provide API to get title. |
protected void |
ExcelXlsImporter.importColumn(org.zkoss.poi.ss.usermodel.Sheet poiSheet,
SSheet sheet)
When a column is hidden with default width, we don't import the width for it's 0.
|
protected abstract void |
AbstractExcelImporter.importColumn(org.zkoss.poi.ss.usermodel.Sheet poiSheet,
SSheet sheet)
When a column is hidden with default width, we don't import the width for it's 0.
|
protected void |
ExcelXlsxImporter.importColumn(org.zkoss.poi.ss.usermodel.Sheet poiSheet,
SSheet sheet)
[ISO/IEC 29500-1 1st Edition] 18.3.1.13 col (Column Width & Formatting)
By experiments, CT_Col is always created in ascending order by min and the range specified by min & max doesn't overlap each other.
For example: |
protected void |
ExcelXlsImporter.importConditionalFormatting(SSheet sheet,
org.zkoss.poi.ss.usermodel.Sheet poiSheet) |
protected abstract void |
AbstractExcelImporter.importConditionalFormatting(SSheet sheet,
org.zkoss.poi.ss.usermodel.Sheet poiSheet) |
protected void |
ExcelXlsxImporter.importConditionalFormatting(SSheet sheet,
org.zkoss.poi.ss.usermodel.Sheet poiSheet) |
protected void |
ExcelXlsImporter.importDrawings(org.zkoss.poi.ss.usermodel.Sheet poiSheet,
SSheet sheet)
reference DrawingManagerImpl.initHSSFDrawings()
|
protected abstract void |
AbstractExcelImporter.importDrawings(org.zkoss.poi.ss.usermodel.Sheet poiSheet,
SSheet sheet)
Drawings includes charts and pictures.
|
protected void |
ExcelXlsxImporter.importDrawings(org.zkoss.poi.ss.usermodel.Sheet poiSheet,
SSheet sheet) |
protected void |
AbstractExcelImporter.importMergedRegions(org.zkoss.poi.ss.usermodel.Sheet poiSheet,
SSheet sheet) |
protected void |
ExcelXlsImporter.importPassword(org.zkoss.poi.ss.usermodel.Sheet poiSheet,
SSheet sheet) |
protected abstract void |
AbstractExcelImporter.importPassword(org.zkoss.poi.ss.usermodel.Sheet poiSheet,
SSheet sheet) |
protected void |
ExcelXlsxImporter.importPassword(org.zkoss.poi.ss.usermodel.Sheet poiSheet,
SSheet sheet) |
protected void |
AbstractExcelImporter.importPicture(List<org.zkoss.poi.ss.usermodel.Picture> poiPictures,
org.zkoss.poi.ss.usermodel.Sheet poiSheet,
SSheet sheet) |
protected SRow |
AbstractExcelImporter.importRow(org.zkoss.poi.ss.usermodel.Row poiRow,
SSheet sheet) |
protected void |
AbstractExcelImporter.importSheetDefaultColumnWidth(org.zkoss.poi.ss.usermodel.Sheet poiSheet,
SSheet sheet) |
protected void |
ExcelXlsxImporter.importSheetDefaultColumnWidth(org.zkoss.poi.ss.usermodel.Sheet poiSheet,
SSheet sheet) |
protected void |
ExcelXlsImporter.importSheetProtection(org.zkoss.poi.ss.usermodel.Sheet poiSheet,
SSheet sheet) |
protected abstract void |
AbstractExcelImporter.importSheetProtection(org.zkoss.poi.ss.usermodel.Sheet poiSheet,
SSheet sheet)
POI SheetProtection.
|
protected void |
ExcelXlsxImporter.importSheetProtection(org.zkoss.poi.ss.usermodel.Sheet poiSheet,
SSheet sheet) |
protected void |
ExcelXlsImporter.importTables(org.zkoss.poi.ss.usermodel.Sheet poiSheet,
SSheet sheet) |
protected abstract void |
AbstractExcelImporter.importTables(org.zkoss.poi.ss.usermodel.Sheet poiSheet,
SSheet sheet)
POI sheet tables
|
protected void |
ExcelXlsxImporter.importTables(org.zkoss.poi.ss.usermodel.Sheet poiSheet,
SSheet sheet) |
protected void |
ExcelXlsImporter.importValidation(org.zkoss.poi.ss.usermodel.Sheet poiSheet,
SSheet sheet) |
protected abstract void |
AbstractExcelImporter.importValidation(org.zkoss.poi.ss.usermodel.Sheet poiSheet,
SSheet sheet) |
protected void |
ExcelXlsxImporter.importValidation(org.zkoss.poi.ss.usermodel.Sheet poiSheet,
SSheet sheet)
Reference BookHelper.validate()
|
protected void |
ExcelXlsxExporter.plotPoiChart(SChart chart,
org.zkoss.poi.ss.usermodel.charts.ChartData chartData,
SSheet sheet,
org.zkoss.poi.ss.usermodel.Sheet poiSheet)
Create and plot a POI chart with its chart data.
|
protected ConditionalFormattingImpl |
ExcelXlsxImporter.prepareConditionalFormattingImpl(SSheet sheet,
org.zkoss.poi.xssf.usermodel.XSSFConditionalFormatting cf) |
protected org.zkoss.poi.ss.usermodel.ClientAnchor |
ExcelXlsxExporter.toClientAnchor(ViewAnchor viewAnchor,
SSheet sheet) |
Copyright © 2019. All rights reserved.