palio.modules
Class XLS

java.lang.Object
  extended by palio.modules.core.Module
      extended by palio.modules.XLS
All Implemented Interfaces:
palio.modules.core.CurrentModuleDataKeys

public class XLS
extends palio.modules.core.Module

Moduł udostępnia zestaw funkcji wykorzystywanych do wykonywania opearcji na plikach w formacie XLS, XLSX (excel). Aby rozpocząc pracę z arkuszem kalkulacyjnym należy go najpierw zainicjalizować jedną z metod setWorkbook*. Metody dotyczące definiowania styli komórek należy wywoływac w kodzie jpalio będącym jednym z argumentów metody createStyle.

Moduł jest dostępny w każdej instancji jPalio.

Version:
2.1.0
Author:
Krzysztof Madyniak (kmadyniak@torn.com.pl)

Field Summary
 
Fields inherited from interface palio.modules.core.CurrentModuleDataKeys
DESIGNER_ACTIONS_BUFFER, HTML_FORM_BUILDER, HTML_MAP_BUILDER, HTML_MENU_BUILDER, HTML_TOOLTIPS_BUFFER, ITEXT_DOCUMENT, MAIL_MESSAGE, XLS_DOCUMENT, XML_DOCUMENT
 
Constructor Summary
XLS(palio.Instance instance, java.util.Properties parameters)
           
 
Method Summary
static void createStyle(java.lang.String styleName, palio.compiler.PalioCode styleDefinition)
          Tworzy styl
static void forEachRow(java.lang.String rowParam, java.lang.Long sheet, palio.compiler.PalioCode code)
          Dla każdego niepustego wiersza wykonuje podany kod palio.
static java.util.LinkedList<java.lang.Object[]> getAllRows(java.lang.Long sheet)
          Zwraca wartości wszystkich wierszy arkusza/zakładki
static java.util.LinkedList<java.lang.Object[]> getAllRows(java.lang.String sheet)
          Zwraca wartości wszystkich wierszy arkusza/zakładki
static java.lang.Boolean getBooleanCellValue(java.lang.Long sheet, java.lang.Long row, java.lang.Long cell)
          Zwraca wartość komórki
static java.lang.Object getCellValue(java.lang.Long sheet, java.lang.Long row, java.lang.Long cell)
          Zwraca wartość komórki
static java.lang.String getColumnName(java.lang.Long column)
          Zwraca nazwę kolumny o podanym numerze np. 0='A', 1='B', 35='AJ'
static java.util.Date getDateCellValue(java.lang.Long sheet, java.lang.Long row, java.lang.Long cell)
          Zwraca wartość komórki
static java.lang.Long getNumberOfRows(java.lang.Long sheet)
          Zwraca liczbę wierszy w danym arkuszu
static java.lang.Long getNumberOfSheets()
          Zwraca ilość zakładek/arkuszy arkusza kalkulacyjnego
static java.math.BigDecimal getNumericCellValue(java.lang.Long sheet, java.lang.Long row, java.lang.Long cell)
          Zwraca wartość komórki
static java.lang.Object[] getRow(java.lang.Long sheet, java.lang.Long row)
          Zwraca wartości określonego wiersza arkusza/zakładki
static java.lang.Object[] getRow(java.lang.String sheet, java.lang.Long row)
          Zwraca wartości określonego wiersza arkusza/zakładki
static java.util.LinkedList<java.lang.Object[]> getRows(java.lang.Long sheet, java.lang.Long from)
          Zwraca wartości wierszy arkusza/zakładki od wiersza numer from
static java.util.LinkedList<java.lang.Object[]> getRows(java.lang.Long sheet, java.lang.Long from, java.lang.Long to)
          Zwraca wartości wierszy arkusza/zakładki od wiersza numer from do wiersza numer to
static java.util.LinkedList<java.lang.Object[]> getRows(java.lang.String sheet, java.lang.Long from)
          Zwraca wartości wierszy arkusza/zakładki od wiersza numer from
static java.util.LinkedList<java.lang.Object[]> getRows(java.lang.String sheet, java.lang.Long from, java.lang.Long to)
          Zwraca wartości wierszy arkusza/zakładki od wiersza numer from do wiersza numer to
static java.lang.Object[] getSheetNames()
          Zwraca nazwy zakładek/arkuszy arkusza kalkulacyjnego
static java.lang.String getStringCellValue(java.lang.Long sheet, java.lang.Long row, java.lang.Long cell)
          Zwraca wartość komórki
 java.lang.String getVersion()
          Zwraca numer wersji modułu.
static byte[] getWorkbookBytes()
          Zwraca arkusz kalkulacyjnyw postaci tablicy bajtów
static java.lang.String getWorkbookCSV(java.lang.Long worksheet, java.lang.String separator)
          Zwraca arkusz kalkulacyjny w postaci CSV (comma separated values).
static void mergeCells(java.lang.Long sheet, java.lang.Long rowFrom, java.lang.Long columnFrom, java.lang.Long rowTo, java.lang.Long columnTo)
          Scala komórki
static void saveWorkbook(java.lang.String path)
          Zapisuje arkusz kalkulacyjny w pliku o podanej ścieżce
static void setAlign(java.lang.String align)
          Ustawia położenie wartości komórki dla danego stylu
static void setBackgroundColor(java.lang.String color)
          Ustawia dla danego stylu kolor tła komórki
static void setBorderBottom(java.lang.String border)
          Ustawia rodzaj dolnej ramki komórki dla danego stylu
static void setBorderLeft(java.lang.String border)
          Ustawia rodzaj lewej ramki komórki dla danego stylu
static void setBorderRight(java.lang.String border)
          Ustawia rodzaj prawej ramki komórki dla danego stylu
static void setBorderTop(java.lang.String border)
          Ustawia rodzaj górnej ramki komórki dla danego stylu
 void setCellFormula(java.lang.Long sheet, java.lang.Long row, java.lang.Long col, java.lang.String formula)
          W podanej komórce ustawia podaną formułę
 void setCellsStyle(java.lang.Object[] cells, java.lang.String styleName)
          Ustawia styl dla danych komórek
 void setCellStyle(java.lang.Long sheet, java.lang.Long row, java.lang.Long cell, java.lang.String styleName)
          Ustawia styl dla danej komórki
 void setCellValue(java.lang.Long sheet, java.lang.Long row, java.lang.Long cell, java.lang.Object value)
          Wpisuje wartość do określonej komórki arkusza
 void setCellValue(java.lang.Long sheet, java.lang.Long row, java.lang.Long cell, java.lang.Object value, java.lang.String styleName)
          Wpisuje wartość do określonej komórki arkusza
static void setColumnWidth(java.lang.Long sheet, java.lang.Long column, java.lang.Long width)
          Ustawia szerokość komórki.
static void setFont(java.lang.String fontName, java.lang.Long height, java.lang.String color, java.lang.Boolean bold, java.lang.Boolean italic, java.lang.Boolean underline)
          Ustawia czcionkę dla danego stylu
static void setRowHeight(java.lang.Long sheet, java.lang.Long row, java.lang.Long height)
          Ustawia wysokość wiersza.
 void setRowValues(java.lang.Long sheet, java.lang.Long row, java.lang.Object[] values)
          Wpisuje wartości dla określonego wiersza arkusza
 void setRowValues(java.lang.Long sheet, java.lang.Long row, java.lang.Object[] values, java.lang.String styleName)
          Wpisuje wartości dla określonego wiersza arkusza
static void setSheetName(java.lang.Long sheet, java.lang.String name)
          Przypisanej nazwę do zakładki/arkusza
 void setSheetValues(java.lang.Long sheet, java.util.Collection rows)
          Wpisuje wartości dla określonego arkusza
static void setWorkbook()
          Deprecated. 
static void setWorkbook(byte[] file)
          Inicjalizuje arkusz kalkulacyjny
static void setWorkbook(java.lang.String file)
          Inicjalizuje arkusz kalkulacyjny
static void setWorkbookXls()
          Inicjalizuje pusty arkusz kalkulacyjny w formacie xls
static void setWorkbookXlsx()
          Inicjalizuje pusty arkusz kalkulacyjny w formacie xlsx
static void setWrapText(java.lang.Boolean wrapText)
          Ustawia właściwość "zawijania tekstu" w komórce dla danego stylu
static java.util.Date toDate(java.math.BigDecimal cellNumericValue)
           
 
Methods inherited from class palio.modules.core.Module
getConfigParam, getDescription, getModuleTranslation
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

XLS

public XLS(palio.Instance instance,
           java.util.Properties parameters)
Method Detail

getVersion

public java.lang.String getVersion()
Zwraca numer wersji modułu.

Specified by:
getVersion in class palio.modules.core.Module

setWorkbook

public static void setWorkbook(byte[] file)
                        throws palio.PalioException
Inicjalizuje arkusz kalkulacyjny

Parameters:
file - tablica bajtów stanowiąca zawartość pliku w formacie xls lub xlsx
Throws:
palio.PalioException

setWorkbook

public static void setWorkbook(java.lang.String file)
                        throws palio.PalioException
Inicjalizuje arkusz kalkulacyjny

Parameters:
file - ścieżka do pliku w formacie xls lub xlsx
Throws:
palio.PalioException

setWorkbook

@Deprecated
public static void setWorkbook()
Deprecated. 

Inicjalizuje pusty arkusz kalkulacyjny


setWorkbookXls

public static void setWorkbookXls()
Inicjalizuje pusty arkusz kalkulacyjny w formacie xls


setWorkbookXlsx

public static void setWorkbookXlsx()
Inicjalizuje pusty arkusz kalkulacyjny w formacie xlsx


getStringCellValue

public static java.lang.String getStringCellValue(java.lang.Long sheet,
                                                  java.lang.Long row,
                                                  java.lang.Long cell)
Zwraca wartość komórki

Parameters:
sheet - numer arkusza/zakładki
row - numer wiersza
cell - numer komórki

getBooleanCellValue

public static java.lang.Boolean getBooleanCellValue(java.lang.Long sheet,
                                                    java.lang.Long row,
                                                    java.lang.Long cell)
Zwraca wartość komórki

Parameters:
sheet - numer arkusza/zakładki
row - numer wiersza
cell - numer komórki

getNumericCellValue

public static java.math.BigDecimal getNumericCellValue(java.lang.Long sheet,
                                                       java.lang.Long row,
                                                       java.lang.Long cell)
Zwraca wartość komórki

Parameters:
sheet - numer arkusza/zakładki
row - numer wiersza
cell - numer komórki

getDateCellValue

public static java.util.Date getDateCellValue(java.lang.Long sheet,
                                              java.lang.Long row,
                                              java.lang.Long cell)
Zwraca wartość komórki

Parameters:
sheet - numer arkusza/zakładki
row - numer wiersza
cell - numer komórki

getCellValue

public static java.lang.Object getCellValue(java.lang.Long sheet,
                                            java.lang.Long row,
                                            java.lang.Long cell)
Zwraca wartość komórki

Parameters:
sheet - numer arkusza/zakładki
row - numer wiersza
cell - numer komórki

getRow

public static java.lang.Object[] getRow(java.lang.Long sheet,
                                        java.lang.Long row)
Zwraca wartości określonego wiersza arkusza/zakładki

Parameters:
sheet - numer arkusza/zakładki
row - numer wiersza

getRow

public static java.lang.Object[] getRow(java.lang.String sheet,
                                        java.lang.Long row)
Zwraca wartości określonego wiersza arkusza/zakładki

Parameters:
sheet - nazwa arkusza/zakładki
row - numer wiersza

getAllRows

public static java.util.LinkedList<java.lang.Object[]> getAllRows(java.lang.Long sheet)
Zwraca wartości wszystkich wierszy arkusza/zakładki

Parameters:
sheet - numer arkusza/zakładki

getRows

public static java.util.LinkedList<java.lang.Object[]> getRows(java.lang.Long sheet,
                                                               java.lang.Long from)
Zwraca wartości wierszy arkusza/zakładki od wiersza numer from

Parameters:
sheet - numer arkusza/zakładki

getRows

public static java.util.LinkedList<java.lang.Object[]> getRows(java.lang.Long sheet,
                                                               java.lang.Long from,
                                                               java.lang.Long to)
Zwraca wartości wierszy arkusza/zakładki od wiersza numer from do wiersza numer to

Parameters:
sheet - numer arkusza/zakładki

getRows

public static java.util.LinkedList<java.lang.Object[]> getRows(java.lang.String sheet,
                                                               java.lang.Long from,
                                                               java.lang.Long to)
Zwraca wartości wierszy arkusza/zakładki od wiersza numer from do wiersza numer to

Parameters:
sheet - nazwa arkusza/zakładki

getRows

public static java.util.LinkedList<java.lang.Object[]> getRows(java.lang.String sheet,
                                                               java.lang.Long from)
Zwraca wartości wierszy arkusza/zakładki od wiersza numer from

Parameters:
sheet - nazwa arkusza/zakładki

getAllRows

public static java.util.LinkedList<java.lang.Object[]> getAllRows(java.lang.String sheet)
Zwraca wartości wszystkich wierszy arkusza/zakładki

Parameters:
sheet - nazwa arkusza/zakładki

getSheetNames

public static java.lang.Object[] getSheetNames()
Zwraca nazwy zakładek/arkuszy arkusza kalkulacyjnego


getNumberOfSheets

public static java.lang.Long getNumberOfSheets()
Zwraca ilość zakładek/arkuszy arkusza kalkulacyjnego


getNumberOfRows

public static java.lang.Long getNumberOfRows(java.lang.Long sheet)
Zwraca liczbę wierszy w danym arkuszu

Parameters:
sheet - numer arkusza

forEachRow

public static void forEachRow(java.lang.String rowParam,
                              java.lang.Long sheet,
                              palio.compiler.PalioCode code)
                       throws palio.PalioException
Dla każdego niepustego wiersza wykonuje podany kod palio. Dla każdej iteracji ustawiana jest wartość parametru rowParam zawierająca wszystkie wartości danego wiersza w postaci tablicy (Object[])

Parameters:
rowParam -
sheet -
code -
Throws:
palio.PalioException

setCellValue

public void setCellValue(java.lang.Long sheet,
                         java.lang.Long row,
                         java.lang.Long cell,
                         java.lang.Object value)
Wpisuje wartość do określonej komórki arkusza

Parameters:
sheet - numer zakładki/arkusza
row - numer wiersza
cell - numer komórki
value - wartość

setCellValue

public void setCellValue(java.lang.Long sheet,
                         java.lang.Long row,
                         java.lang.Long cell,
                         java.lang.Object value,
                         java.lang.String styleName)
Wpisuje wartość do określonej komórki arkusza

Parameters:
sheet - numer zakładki/arkusza
row - numer wiersza
cell - numer komórki
value - wartość
styleName - nazwa stylu dla komórki

setRowValues

public void setRowValues(java.lang.Long sheet,
                         java.lang.Long row,
                         java.lang.Object[] values,
                         java.lang.String styleName)
Wpisuje wartości dla określonego wiersza arkusza

Parameters:
sheet - numer zakładki/arkusza
row - numer wiersza
values - wartość
styleName - nazwa stylu dla wszystkich komórek wiersza

setRowValues

public void setRowValues(java.lang.Long sheet,
                         java.lang.Long row,
                         java.lang.Object[] values)
Wpisuje wartości dla określonego wiersza arkusza

Parameters:
sheet - numer zakładki/arkusza
row - numer wiersza
values - wartość

setSheetValues

public void setSheetValues(java.lang.Long sheet,
                           java.util.Collection rows)
Wpisuje wartości dla określonego arkusza

Parameters:
sheet - numer zakładki/arkusza
rows - wartości - lista wierszy

mergeCells

public static void mergeCells(java.lang.Long sheet,
                              java.lang.Long rowFrom,
                              java.lang.Long columnFrom,
                              java.lang.Long rowTo,
                              java.lang.Long columnTo)
Scala komórki

Parameters:
sheet - numer zakładki/arkusza
rowFrom - numer wiersza od którego zacząć scalanie
columnFrom - numer kolumny od którego zacząć scalanie
rowTo - numer wiersza do którego scalać
columnTo - numer kolumny do której scalać

setSheetName

public static void setSheetName(java.lang.Long sheet,
                                java.lang.String name)
Przypisanej nazwę do zakładki/arkusza

Parameters:
sheet - numer zakładki/arkusza
name - nazwa zakładki/arkusza

setCellFormula

public void setCellFormula(java.lang.Long sheet,
                           java.lang.Long row,
                           java.lang.Long col,
                           java.lang.String formula)
W podanej komórce ustawia podaną formułę

Parameters:
sheet - Numer zakładki/arkusza
row - Numer wiersza
col - Numer kolumny
formula - Formuła (np. "SUM(E6:E9)")
Since:
jPALIO 6.13.8, module 1.7.1

createStyle

public static void createStyle(java.lang.String styleName,
                               palio.compiler.PalioCode styleDefinition)
                        throws palio.PalioException
Tworzy styl

Parameters:
styleName - nazwa stylu
styleDefinition - kod jpalio będący definicją stylu
Throws:
palio.PalioException

setAlign

public static void setAlign(java.lang.String align)
                     throws palio.PalioException
Ustawia położenie wartości komórki dla danego stylu

Parameters:
align - położenie wartości komórki. dopuszczalne wartości: ALIGN_RIGHT, ALIGN_LEFT, ALIGN_JUSTIFY, ALIGN_GENERAL, ALIGN_FILL, ALIGN_CENTER_SELECTION, ALIGN_CENTER
Throws:
palio.PalioException

setWrapText

public static void setWrapText(java.lang.Boolean wrapText)
Ustawia właściwość "zawijania tekstu" w komórce dla danego stylu

Parameters:
wrapText - czy zawijać tekst w komórce
Throws:
palio.PalioException

setBorderBottom

public static void setBorderBottom(java.lang.String border)
                            throws palio.PalioException
Ustawia rodzaj dolnej ramki komórki dla danego stylu

Parameters:
border - rodzaj ramki. dopuszaczalne wartości: BORDER_THIN, BORDER_THICK, BORDER_SLANTED_DASH_DOT, BORDER_NONE, BORDER_MEDIUM_DASHED, BORDER_MEDIUM_DASH_DOT_DOT, BORDER_MEDIUM_DASH_DOT, BORDER_MEDIUM, BORDER_HAIR, BORDER_DOUBLE, BORDER_DOTTED, BORDER_DASHED, BORDER_DASH_DOT_DOT, BORDER_DASH_DOT
Throws:
palio.PalioException

setBorderTop

public static void setBorderTop(java.lang.String border)
                         throws palio.PalioException
Ustawia rodzaj górnej ramki komórki dla danego stylu

Parameters:
border - rodzaj ramki. dopuszaczalne wartości: BORDER_THIN, BORDER_THICK, BORDER_SLANTED_DASH_DOT, BORDER_NONE, BORDER_MEDIUM_DASHED, BORDER_MEDIUM_DASH_DOT_DOT, BORDER_MEDIUM_DASH_DOT, BORDER_MEDIUM, BORDER_HAIR, BORDER_DOUBLE, BORDER_DOTTED, BORDER_DASHED, BORDER_DASH_DOT_DOT, BORDER_DASH_DOT
Throws:
palio.PalioException

setBorderLeft

public static void setBorderLeft(java.lang.String border)
                          throws palio.PalioException
Ustawia rodzaj lewej ramki komórki dla danego stylu

Parameters:
border - rodzaj ramki. dopuszaczalne wartości: BORDER_THIN, BORDER_THICK, BORDER_SLANTED_DASH_DOT, BORDER_NONE, BORDER_MEDIUM_DASHED, BORDER_MEDIUM_DASH_DOT_DOT, BORDER_MEDIUM_DASH_DOT, BORDER_MEDIUM, BORDER_HAIR, BORDER_DOUBLE, BORDER_DOTTED, BORDER_DASHED, BORDER_DASH_DOT_DOT, BORDER_DASH_DOT
Throws:
palio.PalioException

setBorderRight

public static void setBorderRight(java.lang.String border)
                           throws palio.PalioException
Ustawia rodzaj prawej ramki komórki dla danego stylu

Parameters:
border - rodzaj ramki. dopuszaczalne wartości: BORDER_THIN, BORDER_THICK, BORDER_SLANTED_DASH_DOT, BORDER_NONE, BORDER_MEDIUM_DASHED, BORDER_MEDIUM_DASH_DOT_DOT, BORDER_MEDIUM_DASH_DOT, BORDER_MEDIUM, BORDER_HAIR, BORDER_DOUBLE, BORDER_DOTTED, BORDER_DASHED, BORDER_DASH_DOT_DOT, BORDER_DASH_DOT
Throws:
palio.PalioException

setFont

public static void setFont(java.lang.String fontName,
                           java.lang.Long height,
                           java.lang.String color,
                           java.lang.Boolean bold,
                           java.lang.Boolean italic,
                           java.lang.Boolean underline)
Ustawia czcionkę dla danego stylu

Parameters:
fontName - nazwa czcionki
height - wysokość czcionki
color - kolor czcionki w postaci "#000000"
bold - czy pogrubiona
italic - czy pochylona
underline - czy podkreślona

setBackgroundColor

public static void setBackgroundColor(java.lang.String color)
Ustawia dla danego stylu kolor tła komórki

Parameters:
color - Kolor czcionki w postaci "#000000"
Since:
jPALIO 6.13.8, module 1.7.1

setCellStyle

public void setCellStyle(java.lang.Long sheet,
                         java.lang.Long row,
                         java.lang.Long cell,
                         java.lang.String styleName)
Ustawia styl dla danej komórki

Parameters:
sheet - numer zakładki/arkusza
row - numer wiersza
cell - numer komórki
styleName - nazwa stylu

setCellsStyle

public void setCellsStyle(java.lang.Object[] cells,
                          java.lang.String styleName)
Ustawia styl dla danych komórek

Parameters:
cells - tablica namiarów na komórki dla których ma być zastosowany dany styl. poszczególne elementy tablicy to tablice o następujących elementach: 0 - numer zakładki/arkusza, 1 - numer wiersza, 2 - numer komórki.
przykład: [[0,0,0], [1, 1, 1]]
styleName - nazwa stylu

setRowHeight

public static void setRowHeight(java.lang.Long sheet,
                                java.lang.Long row,
                                java.lang.Long height)
Ustawia wysokość wiersza. Wartość "height" powina zostać obliczona według następującego wzoru: wysokość_w_excelu*20+4. "Wysokość_w_excelu" to wartość, jaką wpisuje się w Excelu po wybraniu opcji "Format / Wiersz / Wysokość". Np. jeśli wiersz ma mieć wysokość 12,75 to w argumencie height należy podać 259.

Parameters:
sheet - numer zakładki/arkusza
row - numer wiersza
height - wysokość
Throws:
palio.PalioException

setColumnWidth

public static void setColumnWidth(java.lang.Long sheet,
                                  java.lang.Long column,
                                  java.lang.Long width)
Ustawia szerokość komórki. Wartość "width" powina zostać obliczona według następującego wzoru: szerokość_w_excelu*256+178. "Szerokość_w_excelu" to wartość, jaką wpisuje się w Excelu po wybraniu opcji "Format / Kolumna / Szerokość". Np. jeśli kolumna ma mieć szerokość 9 to w argumencie width należy podać 2482.

Parameters:
sheet - numer zakładki/arkusza
column - numer kolumny
width - szerokość
Throws:
palio.PalioException

toDate

public static java.util.Date toDate(java.math.BigDecimal cellNumericValue)

getWorkbookBytes

public static byte[] getWorkbookBytes()
                               throws palio.PalioException
Zwraca arkusz kalkulacyjnyw postaci tablicy bajtów

Throws:
palio.PalioException

getWorkbookCSV

public static java.lang.String getWorkbookCSV(java.lang.Long worksheet,
                                              java.lang.String separator)
Zwraca arkusz kalkulacyjny w postaci CSV (comma separated values). Zakłada się, że liczba kolumn w arkuszu jest stała - przyjmowana jest liczba kolumn z pierwszego wiersza.

Parameters:
worksheet - numer arkusza
separator - znak oddzielający kolumny
Returns:
workbook CSV
Throws:
palio.PalioException

saveWorkbook

public static void saveWorkbook(java.lang.String path)
                         throws palio.PalioException
Zapisuje arkusz kalkulacyjny w pliku o podanej ścieżce

Parameters:
path - ścieżka docelowego pliku
Throws:
palio.PalioException

getColumnName

public static java.lang.String getColumnName(java.lang.Long column)
                                      throws java.lang.IndexOutOfBoundsException
Zwraca nazwę kolumny o podanym numerze np. 0='A', 1='B', 35='AJ'

Parameters:
column - Numer kolumny (nie większy niż 16383). Kolumny indeksowane są od zera.
Throws:
java.lang.IndexOutOfBoundsException
Since:
jPALIO 6.13.8, module 1.7.1