package com.wcs.newsletter.controller;
/*
* #%L
* Webstar Newsletter
* %%
* Copyright (C) 2013 Webstar Csoport Kft.
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* #L%
*/
import com.liferay.counter.service.CounterLocalServiceUtil;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.repository.model.FileEntry;
import com.liferay.portal.model.User;
import com.liferay.portal.util.PortalUtil;
import com.liferay.portlet.asset.model.AssetTag;
import com.liferay.portlet.asset.model.AssetTagWrapper;
import com.liferay.portlet.asset.service.AssetTagLocalServiceUtil;
import com.liferay.portlet.documentlibrary.model.DLFileEntry;
import com.liferay.portlet.documentlibrary.service.DLAppServiceUtil;
import com.liferay.portlet.documentlibrary.service.DLFileEntryLocalServiceUtil;
import com.liferay.portlet.journal.model.JournalArticle;
import com.liferay.portlet.journal.service.JournalArticleLocalServiceUtil;
import com.liferay.portlet.journalcontent.util.JournalContentUtil;
import com.wcs.newsletter.comparator.AssetTagComparator;
import com.wcs.newsletter.dto.NewsletterListElem;
import com.wcs.newsletter.dto.NewsletterListElemDataModel;
import com.wcs.newsletter.dto.NewsletterSenderList;
import com.wcs.newsletter.model.Category;
import com.wcs.newsletter.model.Label;
import com.wcs.newsletter.model.Newsletter;
import com.wcs.newsletter.model.NewsletterConfig;
import com.wcs.newsletter.model.Recipient;
import com.wcs.newsletter.model.impl.NewsletterImpl;
import com.wcs.newsletter.service.CategoryLocalServiceUtil;
import com.wcs.newsletter.service.NewsletterLocalServiceUtil;
import com.wcs.newsletter.service.NewsletterConfigLocalServiceUtil;
import com.wcs.newsletter.service.RecipientLocalServiceUtil;
import com.wcs.newsletter.tools.Tools;
import com.wcs.newsletter.util.LiferayUtil;
import com.wcs.newsletter.util.NewsletterSender;
import com.wcs.tool.DateUtil;
import com.wcs.tool.ListUtil;
import com.wcs.tool.StringUtil;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.component.UIComponent;
import javax.faces.component.UIViewRoot;
import javax.faces.context.FacesContext;
import javax.faces.context.PartialViewContext;
import javax.portlet.PortletResponse;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import org.primefaces.component.picklist.PickList;
import org.primefaces.model.DualListModel;
import com.wcs.newsletter.model.impl.LabelImpl;
import com.wcs.newsletter.service.LabelLocalServiceUtil;
import java.util.Collections;
@ManagedBean
@ViewScoped
public class NewsletterEditController extends AbstractEditController<Newsletter, Long> {
private static final String SENDING_ERROR = "admin_newsletters_sending_error";
private static final String SENDING_SUCCESS = "admin_newsletters_sending_success";
private DualListModel<Category> categoriesModel;
private List<JournalArticle> webContentList;
private NewsletterListElemDataModel childModel;
private JournalArticle selectedWc;
private boolean updateWc;
private boolean updateTemplate;
private List<FileEntry> templateList;
private FileEntry selectedTemplate;
private List<Recipient> userList;
private String testEmail;
private String categoryLocale;
private List<AssetTag> tags;
private List<AssetTag> selectedTags;
private String labelStr;
public String getLabelStr() {
return labelStr;
}
public void setLabelStr(String labelStr) {
this.labelStr = labelStr;
}
public List<AssetTag> getTags() {
if (tags == null) {
try {
tags = AssetTagLocalServiceUtil.getAssetTags(0, AssetTagLocalServiceUtil.getAssetTagsCount());
} catch (Exception e) {
logger.error(e);
}
if (tags == null) {
tags = new ArrayList<AssetTag>();
}
Locale locale = LiferayUtil.getThemeDisplay().getLocale();
Collections.sort(tags, new AssetTagComparator(locale));
}
// logger.info("getTags: {0}db", new Object[]{tags.size()});
// for (AssetTag tag : tags) {
// logger.info("tag: {0} {1}", new Object[]{String.valueOf(tag.getTagId()), tag.getName()});
// }
return tags;
}
public void setTags(List<AssetTag> tags) {
this.tags = tags;
}
private Map<Long, AssetTag> getTagsMap() {
Map<Long, AssetTag> tagsMap = new HashMap<Long, AssetTag>();
for (AssetTag assetTag : getTags()) {
tagsMap.put(assetTag.getTagId(), assetTag);
}
return tagsMap;
}
public List<AssetTag> getSelectedTags() {
if (selectedTags == null) {
selectedTags = new ArrayList<AssetTag>();
Map<Long, AssetTag> tagsMap = getTagsMap();
try {
List<Label> labels = getElem().getLabels();
for (Label tag : labels) {
Long assetTagId = tag.getTagId();
AssetTag assetTag = tagsMap.get(assetTagId);
if (assetTag == null) {
logger.warn("NINCS assetTag!!! {0}", new Object[]{tag});
} else {
selectedTags.add(assetTag);
}
}
} catch (Exception e) {
logger.error(e);
}
Locale locale = LiferayUtil.getThemeDisplay().getLocale();
Collections.sort(selectedTags, new AssetTagComparator(locale));
}
// logger.info("newsletter tags: {0}db", new Object[]{selectedTags.size()});
// for (AssetTag tag : selectedTags) {
// logger.info("newsletter tag: {0} {1}", new Object[]{String.valueOf(tag.getTagId()), tag.getName()});
// }
return selectedTags;
}
public void setSelectedTags(List<AssetTag> selectedTags) {
this.selectedTags = selectedTags;
}
public boolean isTagContainerRendered() {
boolean rendered = ListUtil.isNotEmpty(getSelectedTags());
return rendered;
}
public void onLabelChange() {
//logger.info("onLabelChange: {0}", new Object[]{""});
List<Label> labels = new ArrayList<Label>();
try {
for (AssetTag assetTag : getSelectedTags()) {
Label label = getLabel(assetTag);
label.setTagId(assetTag.getTagId());
labels.add(label);
}
getElem().setLabels(labels);
} catch (Exception e) {
logger.error(e);
}
}
private Label getLabel(AssetTag assetTag) throws SystemException {
if (assetTag == null) {
return null;
}
Long tagId = assetTag.getTagId();
Label savedLabel = null;
savedLabel = LabelLocalServiceUtil.findByTagId(tagId);
if (savedLabel == null) {
savedLabel = new LabelImpl();
savedLabel.setTagId(tagId);
savedLabel = LabelLocalServiceUtil.addLabel(savedLabel);
}
return savedLabel;
}
private AssetTag getAssetTagByName(String tagName) throws Exception {
AssetTag savedAssetTag = null;
if (StringUtil.isEmpty(tagName)) {
return savedAssetTag;
}
Map<Long, AssetTag> tagsMap = getTagsMap();
for (Map.Entry<Long, AssetTag> entry : tagsMap.entrySet()) {
AssetTag assetTag = entry.getValue();
String assetTagName = assetTag.getName();
if (tagName.equalsIgnoreCase(assetTagName)) {
savedAssetTag = assetTag;
break;
}
}
if (savedAssetTag == null) {
String assetTagClassName = AssetTag.class.getName();
Long tagId = CounterLocalServiceUtil.increment(assetTagClassName);
savedAssetTag = AssetTagLocalServiceUtil.createAssetTag(tagId);
savedAssetTag.setName(tagName);
User user = LiferayUtil.getActiveUser();
if (user != null) {
savedAssetTag.setUserId(user.getUserId());
savedAssetTag.setCompanyId(user.getCompanyId());
Long groupId = null;
try {
groupId = user.getGroupId();
} catch (Exception e) {
logger.error(e);
}
savedAssetTag.setGroupId(groupId);
}
Date date = DateUtil.getCurrentDate();
savedAssetTag.setCreateDate(date);
savedAssetTag.setModifiedDate(date);
AssetTagLocalServiceUtil.updateAssetTag(savedAssetTag, true);
savedAssetTag = AssetTagLocalServiceUtil.getTag(tagId);
}
if (savedAssetTag == null) {
throw new IllegalStateException();
}
return savedAssetTag;
}
public void createLabel() {
//logger.info("createLabel: {0}", new Object[]{labelStr});
if (StringUtil.isEmpty(labelStr)) {
return;
}
try {
AssetTag savedAssetTag = getAssetTagByName(labelStr);
Label savedLabel = getLabel(savedAssetTag);
List<Label> oldLabels = getElem().getLabels();
List<Label> labels = new ArrayList<Label>();
labels.addAll(oldLabels);
labels.add(savedLabel);
getElem().setLabels(labels);
setTags(null);
setSelectedTags(null);
setLabelStr(null);
} catch (Exception e) {
logger.error(e);
addErrorMessage(e);
}
}
public void removeLabel(AssetTag assetTag) {
//logger.info("removeLabel: {0}", new Object[]{assetTag});
if (assetTag == null) {
return;
}
Long tagId = assetTag.getTagId();
Label labelToDelete = null;
try {
List<Label> oldLabels = getElem().getLabels();
for (Label label : oldLabels) {
Long labelTagId = label.getTagId();
if (tagId.equals(labelTagId)) {
labelToDelete = label;
break;
}
}
List<Label> labels = new ArrayList<Label>();
labels.addAll(oldLabels);
labels.remove(labelToDelete);
getElem().setLabels(labels);
setSelectedTags(null);
} catch (Exception e) {
logger.error(e);
}
}
public String getCategoryLocale() {
return categoryLocale;
}
public void setCategoryLocale(String categoryLocale) {
//logger.info("setCategoryLocale: {0}", new Object[]{categoryLocale});
this.categoryLocale = categoryLocale;
}
public boolean isCanSend() {
if (getElem().getNewsletterId() == 0) {
return false;
}
if (!isCanEdit()) {
return false;
}
return true;
}
public String getTestEmail() {
return testEmail;
}
public void setTestEmail(String testEmail) {
this.testEmail = testEmail;
}
public boolean isCanEdit() {
return getChildModel().getRowCount() < 1;
}
public String getSiteViewUrl(JournalArticle art) {
return getThemeDisplay().getURLPortal() + "/-/" + art.getUrlTitle();
// return getThemeDisplay().getURLPortal()+"/c/journal/view_article_content?cmd=view&groupId="+art.getGroupId()+"&articleId="+art.getArticleId()+"&version="+art.getVersion();
}
public String getPubDate(JournalArticle art) {
return DateUtil.dateToString(art.getCreateDate(), "yyyy.MM.dd");// hh:mm:ss
}
public void generateUserList(NewsletterListElem sNL) {
try {
userList = new ArrayList<Recipient>();
userList = RecipientLocalServiceUtil.findByNewsletterId(sNL.getNewsletterId());
} catch (SystemException ex) {
Logger.getLogger(NewsletterEditController.class.getName()).log(Level.SEVERE, null, ex);
}
}
public void generateUserListTable(Newsletter sNL) {
try {
userList = new ArrayList<Recipient>();
userList = RecipientLocalServiceUtil.findByNewsletterId(sNL.getNewsletterId());
} catch (SystemException ex) {
Logger.getLogger(NewsletterEditController.class.getName()).log(Level.SEVERE, null, ex);
}
}
public List<Recipient> getUserList() {
return userList;
}
public void setUserList(List<Recipient> userList) {
this.userList = userList;
}
public List<FileEntry> getTemplateList() {
if (templateList == null) {
templateList = new ArrayList<FileEntry>();
long galleryRootFolder = 0;
try {
long folderId = galleryRootFolder;//folder id of parent folder inside which you place your image or sub folders(get this id from database //table)
// DLFolder templateFolder = DLFolderServiceUtil.getFolder(folderId);
List<DLFileEntry> files = DLFileEntryLocalServiceUtil.getDLFileEntries(0, DLFileEntryLocalServiceUtil.getDLFileEntriesCount());//getFileEntries(getThemeDisplay().getScopeGroupId(), DLFolderConstants.DEFAULT_PARENT_FOLDER_ID);//.getFileEntries(templateFolder.getRepositoryId(), folderId);
// List<FileEntry> files = DLAppServiceUtil.getGroupFileEntries(getThemeDisplay().getParentGroupId(), getThemeDisplay().getUserId(), 0, DLAppServiceUtil.getGroupFileEntriesCount(getThemeDisplay().getParentGroupId(), getThemeDisplay().getUserId()));//.getFileEntries(templateFolder.getRepositoryId(), folderId);
for (DLFileEntry fil : files) {
FileEntry newsletterTemplate = DLAppServiceUtil.getFileEntry(fil.getFileEntryId());
if (newsletterTemplate.getMimeType().equals("text/html")) {
templateList.add(newsletterTemplate);
}
}
} catch (PortalException ex) {
Logger.getLogger(NewsletterEditController.class.getName()).log(Level.SEVERE, null, ex);
} catch (SystemException ex) {
Logger.getLogger(NewsletterEditController.class.getName()).log(Level.SEVERE, null, ex);
logger.error(ex);
}
}
return templateList;
}
public void setTemplateList(List<FileEntry> templateList) {
this.templateList = templateList;
}
public List<JournalArticle> getWebContentList() {
try {
if (webContentList == null) {
webContentList = new ArrayList<JournalArticle>();
if (elem.isNew()) {
List<JournalArticle> artList = JournalArticleLocalServiceUtil.getArticles();
for (JournalArticle art : artList) {
try {
if (JournalArticleLocalServiceUtil.isLatestVersion(getThemeDisplay().getScopeGroupId(), art.getArticleId(), art.getVersion())) {
webContentList.add(art);
}
} catch (PortalException ex) {
Logger.getLogger(NewsletterEditController.class.getName()).log(Level.SEVERE, null, ex);
}
}
} else {
webContentList = JournalArticleLocalServiceUtil.getArticles();
}
// JournalArticle teszt;
// teszt.getVersion();
}
return webContentList;
} catch (SystemException ex) {
Logger.getLogger(NewsletterEditController.class.getName()).log(Level.SEVERE, null, ex);
}
return null;
}
public void setWebContentList(List<JournalArticle> webContentList) {
this.webContentList = webContentList;
}
public void canSetWc() {
updateWc = true;
}
public void canSetTemplate() {
updateTemplate = true;
}
public FileEntry getSelectedTemplate() {
if (!elem.isNew() && !updateWc) {
try {
selectedTemplate = DLAppServiceUtil.getFileEntry(Long.parseLong(getElem().getTemplateId()));
} catch (PortalException ex) {
Logger.getLogger(NewsletterEditController.class.getName()).log(Level.SEVERE, null, ex);
} catch (SystemException ex) {
Logger.getLogger(NewsletterEditController.class.getName()).log(Level.SEVERE, null, ex);
}
}
return selectedTemplate;
}
public void setSelectedTemplate(FileEntry selectedTemplate) {
this.selectedTemplate = selectedTemplate;
}
public JournalArticle getSelectedWc() {
if (!elem.isNew() && !updateWc) {
try {
selectedWc = getElem().getJournalArticle(getThemeDisplay());
} catch (PortalException ex) {
Logger.getLogger(NewsletterEditController.class.getName()).log(Level.SEVERE, null, ex);
} catch (SystemException ex) {
Logger.getLogger(NewsletterEditController.class.getName()).log(Level.SEVERE, null, ex);
}
}
return selectedWc;
}
public void setSelectedWc(JournalArticle selectedWc) {
this.selectedWc = selectedWc;
}
@Override
public void initController() {
super.initController();
initCategoryLocale();
initCategoriesModel();
getWebContentList();
initChildModel();
}
public void initCategoryLocale() {
if (categoryLocale == null) {
if (!getElem().isNew()) {
try {
List<Category> userCategories = getElem().getCategories();
if (ListUtil.isNotEmpty(userCategories)) {
Category category = userCategories.get(0);
categoryLocale = category.getLocale();
}
} catch (Exception e) {
logger.error(e);
}
}
if (categoryLocale == null) {
categoryLocale = LiferayUtil.getLiferayFullLangCode();
}
//logger.info("initCategoryLocale {0}", new Object[]{categoryLocale});
}
}
public void initCategoriesModel() {
//logger.info("initCategoriesModel: {0}", new Object[]{categoriesModel});
if (categoriesModel == null) {
categoriesModel = new DualListModel<Category>();
List<Category> source = new ArrayList<Category>();
List<Category> target = new ArrayList<Category>();
try {
List<Category> allCategories = CategoryLocalServiceUtil.findByLocale(getCategoryLocale());
source.addAll(allCategories);
if (!getElem().isNew()) {
List<Category> userCategories = getElem().getCategories();
source.removeAll(userCategories);
target.addAll(userCategories);
}
} catch (Exception e) {
logger.error(e);
addErrorMessage(e);
}
categoriesModel.setSource(source);
categoriesModel.setTarget(target);
}
}
public void initChildModel() {
//logger.info("initChildModel");
if (childModel == null) {
List<NewsletterListElem> elems = new ArrayList<NewsletterListElem>();
if (!getElem().isNew()) {
Long parentNewsletterId = getElem().getNewsletterId();
//logger.info("parentNewsletterId: {0}", new Object[]{parentNewsletterId});
try {
List<Newsletter> newsletters = NewsletterLocalServiceUtil.findByParentId(parentNewsletterId);
//logger.info("child newsletters: {0}", new Object[]{newsletters});
for (Newsletter newsletter : newsletters) {
Long newsletterId = newsletter.getNewsletterId();
String subject = newsletter.getSubject();
String sender = newsletter.getSender();
Date creationDate = newsletter.getCreationTime();
elems.add(new NewsletterListElem(newsletterId, subject, sender, null, creationDate));
}
} catch (SystemException ex) {
logger.error(ex);
addErrorMessage(ex);
}
}
childModel = new NewsletterListElemDataModel(elems);
}
}
public void resetController() {
id = null;
elem = null;
categoriesModel = null;
webContentList = null;
childModel = null;
selectedWc = null;
updateWc = false;
updateTemplate = false;
templateList = null;
selectedTemplate = null;
userList = null;
testEmail = null;
categoryLocale = null;
tags = null;
selectedTags = null;
labelStr = null;
}
private void resetChildModel() {
setChildModel(null);
}
public NewsletterListElemDataModel getChildModel() {
return childModel;
}
public void setChildModel(NewsletterListElemDataModel childModel) {
this.childModel = childModel;
}
public DualListModel<Category> getCategoriesModel() {
return categoriesModel;
}
public void setCategoriesModel(DualListModel<Category> categoriesModel) {
this.categoriesModel = categoriesModel;
}
private void resetCategoriesModel() {
setCategoriesModel(null);
}
@Override
public Newsletter initElem() throws Exception {
Newsletter newsletter = NewsletterLocalServiceUtil.getNewsletter((Long) getId());
return newsletter;
}
@Override
public Newsletter initNewElem() {
Newsletter newsletter = new NewsletterImpl();
return newsletter;
}
@Override
protected Newsletter persist() throws SystemException {
return newsletterSave();
}
@Override
protected Newsletter update() throws SystemException {
return newsletterSave();
}
public Newsletter newsletterSave() throws SystemException {
getElem().setCategories(getCategoriesModel().getTarget());
getElem().setContentId(String.valueOf(selectedWc.getArticleId()));
getElem().setContentVersion(String.valueOf(selectedWc.getVersion()));
getElem().setTemplateId(String.valueOf(selectedTemplate.getFileEntryId()));
getElem().setTemplateVersion(String.valueOf(selectedTemplate.getVersion()));
return NewsletterLocalServiceUtil.save(getElem());
}
public String getTitle(JournalArticle jA) {
return jA.getTitle(getThemeDisplay().getLocale());
}
public void send() {
// TODO: persisted check
// TODO: change check
resetChildModel();
Newsletter newsletter = null;
try {
newsletter = getElem().getChild();
newsletter.setCreationTime(DateUtil.getCurrentDate());
newsletter = NewsletterLocalServiceUtil.saveChild(newsletter);
List<Recipient> recipientsSaver = newsletter.getRecipients();
NewsletterSenderList recipients = new NewsletterSenderList(newsletter);
NewsletterSender newsletterSender = new NewsletterSender(newsletter, recipients, getThemeDisplay());
newsletterSender.send();
} catch (Exception e) {
logger.error(e);
addErrorMessage(e);
return;
}
addSuccessMessage(SENDING_SUCCESS);
}
public void sendTest() {
// TODO: persisted check
// TODO: change check
resetChildModel();
Newsletter newsletter = null;
try {
if (testEmail != null && !testEmail.equals("")) {
newsletter = getElem().getChild();
newsletter.setCreationTime(DateUtil.getCurrentDate());
//newsletter = NewsletterLocalServiceUtil.saveChild(newsletter);
// List<Recipient> recipientsSaver = newsletter.getRecipients();
NewsletterSenderList recipients = new NewsletterSenderList(newsletter, testEmail);
NewsletterSender newsletterSender = new NewsletterSender(newsletter, recipients, getThemeDisplay());
newsletterSender.send();
}
} catch (Exception e) {
logger.error(e);
addErrorMessage(e);
return;
}
addSuccessMessage(SENDING_SUCCESS);
}
public void viewNewsletterInContent(long newsletterId) {
try {
FacesContext fcontext = FacesContext.getCurrentInstance();
PortletResponse portletResponse = (PortletResponse) fcontext.getExternalContext().getResponse();
HttpServletResponse response = PortalUtil.getHttpServletResponse(portletResponse);
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");
response.setHeader("content-disposition; charset=utf-8", "inline");
response.flushBuffer();
ServletOutputStream out = response.getOutputStream();
Newsletter newsletter = null;
try {
newsletter = NewsletterLocalServiceUtil.getNewsletter(newsletterId);
JournalArticle journalArticle = newsletter.getJournalArticle(getThemeDisplay());
String content = getArticleContent(journalArticle, getThemeDisplay().getLanguageId(), newsletter);
// System.out.println("content:" + content);
// System.out.println("journalArticle" + journalArticle.getVersion());
byte[] teszt = content.getBytes();
out.write(teszt);
} catch (Exception ex) {
Logger.getLogger(NewsletterEditController.class.getName()).log(Level.SEVERE, null, ex);
}
out.flush();
fcontext.responseComplete();
} catch (IOException ex) {
Logger.getLogger(NewsletterEditController.class.getName()).log(Level.SEVERE, null, ex);
}
}
private String getArticleContent(JournalArticle article, String locale, Newsletter newsletter) throws Exception {
try {
String articleMultiLanguageXMLContent = article.getContent();
String templateContent;
FileEntry newsletterTemplate = DLAppServiceUtil.getFileEntry(Long.parseLong(getElem().getChild().getTemplateId()));
templateContent = Tools.InputStream2Str(newsletterTemplate.getContentStream(), false);
String localizedContent = templateContent.replace("###CONTENT###", JournalContentUtil.getContent(article.getGroupId(), article.getArticleId(), null, locale, articleMultiLanguageXMLContent));
localizedContent = localizedContent.replace("###sendDate###", DateUtil.dateToString(newsletter.getCreationTime(), "yyyy.MM.dd", getThemeDisplay().getLocale()));
// System.out.println(newsletter.getCreationTime());
localizedContent = localizedContent.replace("###newsletterTitle###", article.getTitle(locale));
localizedContent = localizedContent.replaceAll("<img alt=\"\" src=\"\\/documents", "<img alt=\"\" src=\"" + getThemeDisplay().getURLPortal() + "\\/documents");
return localizedContent;
} catch (Exception ex) {
logger.error(ex);
return "";
}
}
public Locale[] getAvailableLocales() {
return LiferayUtil.getAvailableLocales();
}
public void onCategoryLocaleChange() {
//logger.info("onCategoryLocaleChange");
getElem().setCategories(new ArrayList<Category>());
resetCategoriesModel();
resetPickList();
}
public void resetPickList() {
FacesContext facesContext = FacesContext.getCurrentInstance();
UIViewRoot viewRoot = facesContext.getViewRoot();
PartialViewContext partialViewContext = facesContext.getPartialViewContext();
Collection<String> renderIds = partialViewContext.getRenderIds();
for (String renderId : renderIds) {
try {
UIComponent component = viewRoot.findComponent(renderId);
if (component instanceof PickList) {
PickList pickList = (PickList) component;
pickList.resetValue();
}
} catch (Exception e) {
logger.error(e);
}
//logger.info("{0} {1}", new Object[]{renderId, component});
}
}
}