Skip to main content

Introduction to Liferay Expando API

Introduction-:

Liferay provide us custom attributes which help us to add additional fields to existed models/entities.
This help's us to add some more additional attributes to existed entities so that we can meet your requirements.

Expando represents objects whose member can be added and removed dynamically at run time.

Liferay Expando API-:

Expando

These are the default table which we get while installing liferay.

Expando Table-: 

-- Table: expandotable

CREATE TABLE expandotable
(
  tableid bigint NOT NULL,
  companyid bigint,
  classnameid bigint,
  name character varying(75),
  CONSTRAINT expandotable_pkey PRIMARY KEY (tableid)
)

Expando Row-:

-- Table: expandorow

CREATE TABLE expandorow
(
  rowid_ bigint NOT NULL,
  companyid bigint,
  modifieddate timestamp without time zone,
  tableid bigint,
  classpk bigint,
  CONSTRAINT expandorow_pkey PRIMARY KEY (rowid_)
)

Expando Column-:

-- Table: expandocolumn

CREATE TABLE expandocolumn
(
  columnid bigint NOT NULL,
  companyid bigint,
  tableid bigint,
  name character varying(75),
  type_ integer,
  defaultdata text,
  typesettings text,
  CONSTRAINT expandocolumn_pkey PRIMARY KEY (columnid)
)

Expando Value-:

-- Table: expandocolumn

CREATE TABLE expandocolumn
(
  columnid bigint NOT NULL,
  companyid bigint,
  tableid bigint,
  name character varying(75),
  type_ integer,
  defaultdata text,
  typesettings text,
  CONSTRAINT expandocolumn_pkey PRIMARY KEY (columnid)
)


In this article we will do all the expando related operations on Organization entity. we are going to use 4 LocalServices for all the operations
  • ExpandoTableLocalServiceUtil
  • ExpandoRowLocalServiceUtil
  • ExpandoColumnLocalServiceUtil
  • ExpandoValueLocalServiceUtil
1. Add Expando Table

Use this method ExpandoTableLocalServiceUtil.addTable(className, name)

Class Name-: Organization
Name-: CUSTOM_FIELD

Table table = null;
table = ExpandoTableLocalServiceUtil.addTable(Organization.class.getName(), "CUSTOM_FIELDS");

2. Add Expando Column

In this Example we are adding two columns-:
-> myOrganizationId
-> myContactId
Use this method ExpandoColumnLocalServiceUtil.addColumn(tableId, name, type)

TableID-: generated from previous step
Name-: name of the col
type-:  we can get various type col from ExpandoColumnConstants.java

ExpandoColumnLocalServiceUtil.addColumn(table.getTableId(), myOrganizationId, ExpandoColumnConstants.LONG);

ExpandoColumnLocalServiceUtil.addColumn(table.getTableId(), myContactId, ExpandoColumnConstants.LONG);

3. Add Expando Row

Use the method  ExpandoRowLocalServiceUtil.addRow(long tableId, long classPK) to add expando row.

TableId-: This is the id of the table that we generated in the Step 1.

ClassPK-: This is generally primary key of particular record of the Entity for which we are adding row. In our case userId is the classPK

ExpandoRowLocalServiceUtil.addRow(expandoTable.getTableId(), user.getUserId());

4. Add Expando Value


ExpandoValueLocalServiceUtil.addValue(long classNameId, long tableId, long columnId, long classPK, String data)

ClassNameId : In our case the classNameId is the ID for the class User

TableId: Its the table ID which is created in Step 1

ColumnId : Its ID for the column which is generated in Step 2

ClassPK : Its the primary key of the record in User. In our user.getUserId is the classPK

Data : Its the actual expando value

ExpandoValueLocalServiceUtil.addValue(classNameId, expandoTable.getTableId(),expandoColumn.getColumnId(), user.getUserId(), "MyOrganizationColumnData");

Comments

Popular posts from this blog

Liferay 7.1 Topics Coming Soon stay connected

1. Liferay 7.1 Service Builder 2. Rest Service and Liferay 3. Consuming SOAP service with Liferay 7.1 4. Creating Theme With Liferay 7.1 Using Liferay IDE Using NPM 5. Create Angular NPM Module 6. Web Content Management 7. OSGI Basic 8. Liferay 7.1 with more than 1 DB 9. A sample project 10. Liferay Dev Ops

How the portal page is loaded with respective portlets

How the portal page is loaded with respective portlets When a user requests a page with a URL, 1.    The browser sends the request to the Application Server (AS). 2.    Liferay gets the page name from the URL. 3.    It goes to the layout database table and finds the related        theme and page layout. 4.    Based on the page layout, Liferay finds the portlets added        into each area of the page layout. 5.    Liferay runs the portlet and adds the output in the        portlet.vm template. 6.    Liferay interprets the portlet.vm template and adds the output        in the page layout. 7.    Then Liferay interprets the page layout and adds the output in        the portal_normal.vm template. 8.    After that Liferay interprets the portal...

Liferay Custom Field and Custom Attribute (Using Liferay UI and Programatically)

Custom fields are a way to add attributes to many types of assets in the portal. Its basically help us to add additional fields to existed models or entities. Adding some more additional attributes to existed entities or models helps us so to meet our requirements. Liferay provide two way's to allow the creation of Custom Fields. 1. Using Liferay UI 2. Programatically Lets look these both topic one by one-: Suppose you have a scenario where its needed to add few fields in your User_ Table So its simple to add using Liferay UI just you need to follow these steps-: 1. Using Liferay UI-:   Goto-> Control-Panel -> Click on Custom Field A List will be displayed-: Now you can add your custom fields for any entity in the list. Click on User Entity and a page will be displayed like this-: Now add these value in respective fields-: KEY- myContactId Type- Select Integer After adding the custom field we can view, update from the Lifera...