2. Campos personalizados
Preparado por Jesús Salinas Revelles
Índice de contenidos
‣ Introducción.
‣ Tablas asociadas a los campos personalizados.
‣ Modelo y servicios asociados:
‣ ExpandoTable.
‣ ExpandoColumn.
‣ ExpandoRow.
‣ ExpandoValue.
3. Campos personalizados
Preparado por Jesús Salinas Revelles
Introducción
‣ Existe un mecanismo para añadir nuevos campos a la entidades que
ya existen en el núcleo de Liferay sin necesidad de modificar el modelo
y sus servicios asociados.
‣ Este mecanismo se conoce como Campos personalizados.
‣ Desde el panel de control se puede acceder a la funcionalidad que
comentamos:
4. Campos personalizados
Preparado por Jesús Salinas Revelles
Introducción
‣ Seleccionando la opción Editar pueden añadirse campos:
‣ Se debe definir una clave y un tipo de dato.
6. Campos personalizados
Preparado por Jesús Salinas Revelles
Tablas asociadas a los campos personalizados
‣ El programador necesita conocer cuatro tablas en la base de datos
para entender cómo se gestionan los campos personalizados:
‣ expandotable.
‣ expandorow.
‣ expandocolumn.
‣ expandovalue.
7. Campos personalizados
Preparado por Jesús Salinas Revelles
Tabla expandotable
‣ La tabla expandotable almacena una fila para cada entidad de Liferay
que tiene asociados campos personalizados.
‣ La columna tableid se relaciona con classnameid, que es el
identificador de la clase asociada a la entidad.
8. Campos personalizados
Preparado por Jesús Salinas Revelles
Tabla expandocolumn
‣ La tabla expandocolumn almacena los campos personalizados que se
definen en el sistema relacionándolos con las entidades asociadas.
9. Campos personalizados
Preparado por Jesús Salinas Revelles
Tabla expandocolumn
‣ Columna tableid: identificador de la tabla asociada, es decir, el campo
personalizado se encuentra asociado a una entidad específica de
Liferay.
‣ Columna name: nombre del campo personalizado.
‣ Columna type: tipo de campo personalizado.
11. Campos personalizados
Preparado por Jesús Salinas Revelles
Tabla expandorow
‣ ¿Para qué necesito esta tabla?
‣ Esta tabla se encarga de relacionar las columnas tableid y classpk.
‣ Se relaciona un objeto de tipo ExpandoTable con objetos específicos
de una determinada entidad.
‣ Ejemplo:
‣ ExpandoTable define una fila para trabajar con campos personalizados para la
entidad User identificada mediante un tableId específico.
‣ ExpandoRow define una fila para cada objeto de tipo User que tiene relleno un
campo personalizado.
12. Campos personalizados
Preparado por Jesús Salinas Revelles
Tabla expandovalue
‣ La tabla expandovalue almacena el valor de un determinado campo
personalizado asociado a una entidad para un objeto específico:
13. Campos personalizados
Preparado por Jesús Salinas Revelles
Tabla expandovalue
‣ Una fila almacena el valor de un campo personalizado definido para
una determinada entidad para un objeto específico, es decir:
‣ data_: valor que almacena el campo personalizado.
‣ tableid: identificador de la entidad de Liferay sobre la que se aplica el campo
personalizado.
‣ columnid: nombre y características del campo personalizado.
‣ rowid_: objeto específico sobre el que se aplica el valor del campo personalizado.
14. Campos personalizados
Preparado por Jesús Salinas Revelles
Modelo y servicios asociados
‣ El conocimiento profundo de los modelos y servicios asociados a los
campos personalizados permiten al desarrollador manejarlos de forma
programática.
15. Campos personalizados
Preparado por Jesús Salinas Revelles
ExpandoTable
‣ Para averiguar el className asociado a una clase, se debe utilizar el
servicio ClassNameLocalServiceUtil:
‣ A partir de ahí se recupera la tabla asociada a esa entidad.
‣ Si una entidad no tiene campos personalizados, no tiene una fila en la
tabla expandotable.
long userClassNameId =
ClassNameLocalServiceUtil.getClassNameId(
User.class.getName());
ExpandoTable table =
ExpandoTableLocalServiceUtil.getDefaultTable(
companyId, userClassNameId);
16. Campos personalizados
Preparado por Jesús Salinas Revelles
ExpandoTable
‣ La gestión de esta tabla se lleva a cabo mediante:
‣ El modelo ExpandoTable.
‣ El servicio ExpandoTableLocalServiceUtil.
17. Campos personalizados
Preparado por Jesús Salinas Revelles
ExpandoColumn
‣ La gestión de esta tabla se lleva a cabo mediante:
‣ El modelo ExpandoColumn.
‣ El servicio ExpandoColumnLocalServiceUtil.
‣ Ejemplo:
ExpandoColumn column =
ExpandoColumnLocalServiceUtil.getColumn(tableId, name);
18. Campos personalizados
Preparado por Jesús Salinas Revelles
ExpandoRow
‣ La gestión de esta tabla se lleva a cabo mediante:
‣ El modelo ExpandoRow.
‣ El servicio ExpandoRowLocalServiceUtil.
19. Campos personalizados
Preparado por Jesús Salinas Revelles
ExpandoValue
‣ La gestión de esta tabla se lleva a cabo mediante:
‣ El modelo ExpandoValue.
‣ El servicio ExpandoValueLocalServiceUtil.
ExpandoValueLocalServiceUtil.getValue(tableId, columnId,
classPK);
ExpandoValueLocalServiceUtil.addValue(classNameId, tableId,
columnId, classPK, data);