package org.aperteworkflow.custom; import java.text.SimpleDateFormat; import java.util.Set; import pl.net.bluesoft.rnd.processtool.ProcessToolContext; import pl.net.bluesoft.rnd.processtool.bpm.ProcessToolBpmSession; import pl.net.bluesoft.rnd.processtool.model.UserData; import pl.net.bluesoft.rnd.processtool.model.config.ProcessStateConfiguration; import pl.net.bluesoft.rnd.processtool.model.config.ProcessStateWidget; import pl.net.bluesoft.rnd.processtool.ui.widgets.ProcessToolWidget; import pl.net.bluesoft.rnd.processtool.ui.widgets.annotations.AliasName; import pl.net.bluesoft.rnd.processtool.ui.widgets.annotations.ChildrenAllowed; import pl.net.bluesoft.rnd.processtool.ui.widgets.impl.BaseProcessToolVaadinWidget; import pl.net.bluesoft.rnd.util.i18n.I18NSource; import com.liferay.portal.kernel.exception.PortalException; import com.liferay.portal.kernel.exception.SystemException; import com.liferay.portal.model.Role; import com.liferay.portal.model.User; import com.liferay.portal.service.UserServiceUtil; import com.vaadin.Application; import com.vaadin.data.Container; import com.vaadin.data.util.BeanItemContainer; import com.vaadin.ui.Component; @AliasName(name = "Sample Widget") @ChildrenAllowed(value = false) public class SampleWidget extends BaseProcessToolVaadinWidget { private static final SimpleDateFormat DF = new SimpleDateFormat("dd-MM-yyyy hh:mm"); private User liferayUser; @Override public void setContext(ProcessStateConfiguration state, ProcessStateWidget configuration, I18NSource i18nSource, ProcessToolBpmSession bpmSession, Application application, Set<String> permissions, boolean isOwner) { // get user from context UserData user = bpmSession.getUser(ProcessToolContext.Util .getThreadProcessToolContext()); try { // load associated liferay user liferayUser = UserServiceUtil.getUserByEmailAddress( user.getCompanyId(), user.getEmail()); } catch (SystemException e) { e.printStackTrace(); } catch (PortalException e) { e.printStackTrace(); } super.setContext(state, configuration, i18nSource, bpmSession, application, permissions, isOwner); } @Override public Component render() { return new SampleWidgetComponent() { @Override protected void loadData() { // fill labels with user data label_1.setValue(liferayUser.getFullName()); label_2.setValue(liferayUser.getEmailAddress()); label_3.setValue(liferayUser.getScreenName()); label_4.setValue(liferayUser.getGreeting()); label_5.setValue(DF.format(liferayUser.getLastLoginDate())); // fill table with user roles try { Container container = new BeanItemContainer<Role>(Role.class, liferayUser.getRoles()); table_1.setContainerDataSource(container); Object[] visibleColumns = {"descriptiveName"}; table_1.setVisibleColumns(visibleColumns ); String[] columnHeaders = {"Role name"}; table_1.setColumnHeaders(columnHeaders ); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (SystemException e) { e.printStackTrace(); } } }; } @Override public void addChild(ProcessToolWidget child) { throw new UnsupportedOperationException(); } }