List of usage examples for com.liferay.portal.kernel.util StringBundler length
public int length()
From source file:com.liferay.calendar.util.CalendarUtil.java
License:Open Source License
public static String[] splitKeywords(String keywords) { Set<String> keywordsSet = new LinkedHashSet<String>(); StringBundler sb = new StringBundler(); for (char c : keywords.toCharArray()) { if (Character.isWhitespace(c)) { if (sb.length() > 0) { keywordsSet.add(sb.toString()); sb = new StringBundler(); }/*from w w w .ja v a 2 s. c o m*/ } else if (Character.isLetterOrDigit(c)) { sb.append(c); } else { return new String[] { keywords }; } } if (sb.length() > 0) { keywordsSet.add(sb.toString()); } return StringUtil.split(StringUtil.merge(keywordsSet)); }
From source file:com.liferay.dynamic.data.mapping.internal.render.BaseListDDMFormFieldValueRenderer.java
License:Open Source License
@Override protected ValueAccessor getValueAcessor(Locale locale) { return new ValueAccessor(locale) { @Override// w w w. j av a2 s. co m public String get(DDMFormFieldValue ddmFormFieldValue) { Value value = ddmFormFieldValue.getValue(); JSONArray jsonArray = createJSONArray(value.getString(locale)); if (jsonArray.length() == 0) { return StringPool.BLANK; } StringBundler sb = new StringBundler(jsonArray.length() * 2); for (int i = 0; i < jsonArray.length(); i++) { LocalizedValue label = getDDMFormFieldOptionLabel(ddmFormFieldValue, jsonArray.getString(i)); if (label == null) { continue; } sb.append(label.getString(locale)); sb.append(StringPool.COMMA_AND_SPACE); } if (sb.length() == 0) { return StringPool.BLANK; } sb.setIndex(sb.index() - 1); return sb.toString(); } protected JSONArray createJSONArray(String json) { try { return JSONFactoryUtil.createJSONArray(json); } catch (JSONException jsone) { throw new ValueAccessorException(jsone); } } protected LocalizedValue getDDMFormFieldOptionLabel(DDMFormFieldValue ddmFormFieldValue, String optionValue) { DDMFormField ddmFormField = getDDMFormField(ddmFormFieldValue); DDMFormFieldOptions ddmFormFieldOptions = ddmFormField.getDDMFormFieldOptions(); return ddmFormFieldOptions.getOptionLabels(optionValue); } }; }
From source file:com.liferay.exportimport.content.processor.base.BaseTextExportImportContentProcessor.java
License:Open Source License
protected String replaceExportLayoutReferences(PortletDataContext portletDataContext, StagedModel stagedModel, String content) throws Exception { Group group = GroupLocalServiceUtil.getGroup(portletDataContext.getScopeGroupId()); StringBuilder sb = new StringBuilder(content); String[] patterns = { "href=", "[[" }; int beginPos = -1; int endPos = content.length(); int offset = 0; while (true) { if (beginPos > -1) { endPos = beginPos - 1;/*from w w w . j a v a 2 s . com*/ } beginPos = StringUtil.lastIndexOfAny(content, patterns, endPos); if (beginPos == -1) { break; } if (content.startsWith("href=", beginPos)) { offset = 5; char c = content.charAt(beginPos + offset); if ((c == CharPool.APOSTROPHE) || (c == CharPool.QUOTE)) { offset++; } } else if (content.charAt(beginPos) == CharPool.OPEN_BRACKET) { offset = 2; } endPos = StringUtil.indexOfAny(content, LAYOUT_REFERENCE_STOP_CHARS, beginPos + offset, endPos); if (endPos == -1) { continue; } String url = content.substring(beginPos + offset, endPos); if (url.endsWith(StringPool.SLASH)) { url = url.substring(0, url.length() - 1); } StringBundler urlSB = new StringBundler(6); try { url = replaceExportHostname(portletDataContext.getScopeGroupId(), url, urlSB); if (!url.startsWith(StringPool.SLASH)) { continue; } String pathContext = PortalUtil.getPathContext(); if (pathContext.length() > 1) { if (!url.startsWith(pathContext)) { continue; } urlSB.append(DATA_HANDLER_PATH_CONTEXT); url = url.substring(pathContext.length()); } if (!url.startsWith(StringPool.SLASH)) { continue; } int pos = url.indexOf(StringPool.SLASH, 1); String localePath = StringPool.BLANK; Locale locale = null; if (pos != -1) { localePath = url.substring(0, pos); locale = LocaleUtil.fromLanguageId(localePath.substring(1), true, false); } if (locale != null) { String urlWithoutLocale = url.substring(localePath.length()); if (urlWithoutLocale.startsWith(PRIVATE_GROUP_SERVLET_MAPPING) || urlWithoutLocale.startsWith(PRIVATE_USER_SERVLET_MAPPING) || urlWithoutLocale.startsWith(PUBLIC_GROUP_SERVLET_MAPPING)) { urlSB.append(localePath); url = urlWithoutLocale; } } boolean privateLayout = false; if (url.startsWith(PRIVATE_GROUP_SERVLET_MAPPING)) { urlSB.append(DATA_HANDLER_PRIVATE_GROUP_SERVLET_MAPPING); url = url.substring(PRIVATE_GROUP_SERVLET_MAPPING.length() - 1); privateLayout = true; } else if (url.startsWith(PRIVATE_USER_SERVLET_MAPPING)) { urlSB.append(DATA_HANDLER_PRIVATE_USER_SERVLET_MAPPING); url = url.substring(PRIVATE_USER_SERVLET_MAPPING.length() - 1); privateLayout = true; } else if (url.startsWith(PUBLIC_GROUP_SERVLET_MAPPING)) { urlSB.append(DATA_HANDLER_PUBLIC_SERVLET_MAPPING); url = url.substring(PUBLIC_GROUP_SERVLET_MAPPING.length() - 1); } else { String urlSBString = urlSB.toString(); LayoutSet layoutSet = null; if (urlSBString.contains(DATA_HANDLER_PUBLIC_LAYOUT_SET_SECURE_URL) || urlSBString.contains(DATA_HANDLER_PUBLIC_LAYOUT_SET_URL)) { layoutSet = group.getPublicLayoutSet(); } else if (urlSBString.contains(DATA_HANDLER_PRIVATE_LAYOUT_SET_SECURE_URL) || urlSBString.contains(DATA_HANDLER_PRIVATE_LAYOUT_SET_URL)) { layoutSet = group.getPrivateLayoutSet(); } if (layoutSet == null) { continue; } privateLayout = layoutSet.isPrivateLayout(); LayoutFriendlyURL layoutFriendlyUrl = LayoutFriendlyURLLocalServiceUtil .fetchFirstLayoutFriendlyURL(group.getGroupId(), privateLayout, url); if (layoutFriendlyUrl == null) { continue; } if (privateLayout) { if (group.isUser()) { urlSB.append(DATA_HANDLER_PRIVATE_USER_SERVLET_MAPPING); } else { urlSB.append(DATA_HANDLER_PRIVATE_GROUP_SERVLET_MAPPING); } } else { urlSB.append(DATA_HANDLER_PUBLIC_SERVLET_MAPPING); } urlSB.append(DATA_HANDLER_GROUP_FRIENDLY_URL); continue; } long groupId = group.getGroupId(); Layout layout = LayoutLocalServiceUtil.fetchLayoutByFriendlyURL(groupId, privateLayout, url); if (layout != null) { Element entityElement = portletDataContext.getExportDataElement(stagedModel); portletDataContext.addReferenceElement(stagedModel, entityElement, layout, PortletDataContext.REFERENCE_TYPE_DEPENDENCY, true); continue; } pos = url.indexOf(StringPool.SLASH, 1); String groupFriendlyURL = url; if (pos != -1) { groupFriendlyURL = url.substring(0, pos); } Group urlGroup = GroupLocalServiceUtil.fetchFriendlyURLGroup(group.getCompanyId(), groupFriendlyURL); if (urlGroup == null) { throw new NoSuchLayoutException(); } urlSB.append(DATA_HANDLER_GROUP_FRIENDLY_URL); // Append the UUID. This information will be used during the // import process when looking up the proper group for the link. urlSB.append(StringPool.AT); if (urlGroup.isStagedRemotely()) { String remoteGroupUuid = urlGroup.getTypeSettingsProperty("remoteGroupUUID"); if (Validator.isNotNull(remoteGroupUuid)) { urlSB.append(remoteGroupUuid); } } else if (urlGroup.isStaged()) { Group liveGroup = urlGroup.getLiveGroup(); urlSB.append(liveGroup.getUuid()); } else if (group.getGroupId() == urlGroup.getGroupId()) { urlSB.append(urlGroup.getFriendlyURL()); } else { urlSB.append(urlGroup.getUuid()); } urlSB.append(StringPool.AT); String siteAdminURL = GroupConstants.CONTROL_PANEL_FRIENDLY_URL + PropsValues.CONTROL_PANEL_LAYOUT_FRIENDLY_URL; if (url.endsWith(siteAdminURL)) { urlSB.append(DATA_HANDLER_SITE_ADMIN_URL); url = StringPool.BLANK; continue; } if (pos == -1) { url = StringPool.BLANK; continue; } url = url.substring(pos); layout = LayoutLocalServiceUtil.getFriendlyURLLayout(urlGroup.getGroupId(), privateLayout, url); Element entityElement = portletDataContext.getExportDataElement(stagedModel); portletDataContext.addReferenceElement(stagedModel, entityElement, layout, PortletDataContext.REFERENCE_TYPE_DEPENDENCY, true); } catch (Exception e) { if (e instanceof NoSuchLayoutException && !isValidateLayoutReferences()) { continue; } if (_log.isDebugEnabled()) { _log.debug(e, e); } else if (_log.isWarnEnabled()) { StringBundler exceptionSB = new StringBundler(6); exceptionSB.append("Unable to process layout URL "); exceptionSB.append(url); exceptionSB.append(" for staged model "); exceptionSB.append(stagedModel.getModelClassName()); exceptionSB.append(" with primary key "); exceptionSB.append(stagedModel.getPrimaryKeyObj()); _log.warn(exceptionSB.toString()); } } finally { if (urlSB.length() > 0) { urlSB.append(url); url = urlSB.toString(); } sb.replace(beginPos + offset, endPos, url); } } return sb.toString(); }
From source file:com.liferay.exportimport.internal.content.processor.LayoutReferencesExportImportContentProcessor.java
License:Open Source License
protected String replaceExportLayoutReferences(PortletDataContext portletDataContext, StagedModel stagedModel, String content) throws Exception { Group group = _groupLocalService.getGroup(portletDataContext.getScopeGroupId()); StringBuilder sb = new StringBuilder(content); String[] patterns = { "href=", "[[" }; int beginPos = -1; int endPos = content.length(); int offset = 0; while (true) { if (beginPos > -1) { endPos = beginPos - 1;/*from w w w . ja v a2 s .c om*/ } beginPos = StringUtil.lastIndexOfAny(content, patterns, endPos); if (beginPos == -1) { break; } if (content.startsWith("href=", beginPos)) { offset = 5; char c = content.charAt(beginPos + offset); if ((c == CharPool.APOSTROPHE) || (c == CharPool.QUOTE)) { offset++; } } else if (content.charAt(beginPos) == CharPool.OPEN_BRACKET) { offset = 2; } endPos = StringUtil.indexOfAny(content, _LAYOUT_REFERENCE_STOP_CHARS, beginPos + offset, endPos); if (endPos == -1) { continue; } String url = content.substring(beginPos + offset, endPos); if (url.endsWith(StringPool.SLASH)) { url = url.substring(0, url.length() - 1); } StringBundler urlSB = new StringBundler(6); try { url = replaceExportHostname(portletDataContext.getScopeGroupId(), url, urlSB); if (!url.startsWith(StringPool.SLASH)) { continue; } String pathContext = _portal.getPathContext(); if (pathContext.length() > 1) { if (!url.startsWith(pathContext)) { continue; } urlSB.append(_DATA_HANDLER_PATH_CONTEXT); url = url.substring(pathContext.length()); } if (!url.startsWith(StringPool.SLASH)) { continue; } int pos = url.indexOf(StringPool.SLASH, 1); String localePath = StringPool.BLANK; Locale locale = null; if (pos != -1) { localePath = url.substring(0, pos); locale = LocaleUtil.fromLanguageId(localePath.substring(1), true, false); } if (locale != null) { String urlWithoutLocale = url.substring(localePath.length()); if (urlWithoutLocale.startsWith(_PRIVATE_GROUP_SERVLET_MAPPING) || urlWithoutLocale.startsWith(_PRIVATE_USER_SERVLET_MAPPING) || urlWithoutLocale.startsWith(_PUBLIC_GROUP_SERVLET_MAPPING)) { urlSB.append(localePath); url = urlWithoutLocale; } } boolean privateLayout = false; if (url.startsWith(_PRIVATE_GROUP_SERVLET_MAPPING)) { urlSB.append(_DATA_HANDLER_PRIVATE_GROUP_SERVLET_MAPPING); url = url.substring(_PRIVATE_GROUP_SERVLET_MAPPING.length() - 1); privateLayout = true; } else if (url.startsWith(_PRIVATE_USER_SERVLET_MAPPING)) { urlSB.append(_DATA_HANDLER_PRIVATE_USER_SERVLET_MAPPING); url = url.substring(_PRIVATE_USER_SERVLET_MAPPING.length() - 1); privateLayout = true; } else if (url.startsWith(_PUBLIC_GROUP_SERVLET_MAPPING)) { urlSB.append(_DATA_HANDLER_PUBLIC_SERVLET_MAPPING); url = url.substring(_PUBLIC_GROUP_SERVLET_MAPPING.length() - 1); } else { String urlSBString = urlSB.toString(); LayoutSet layoutSet = null; if (urlSBString.contains(_DATA_HANDLER_PUBLIC_LAYOUT_SET_SECURE_URL) || urlSBString.contains(_DATA_HANDLER_PUBLIC_LAYOUT_SET_URL)) { layoutSet = group.getPublicLayoutSet(); } else if (urlSBString.contains(_DATA_HANDLER_PRIVATE_LAYOUT_SET_SECURE_URL) || urlSBString.contains(_DATA_HANDLER_PRIVATE_LAYOUT_SET_URL)) { layoutSet = group.getPrivateLayoutSet(); } if (layoutSet == null) { continue; } privateLayout = layoutSet.isPrivateLayout(); LayoutFriendlyURL layoutFriendlyUrl = _layoutFriendlyURLLocalService .fetchFirstLayoutFriendlyURL(group.getGroupId(), privateLayout, url); if (layoutFriendlyUrl == null) { continue; } if (privateLayout) { if (group.isUser()) { urlSB.append(_DATA_HANDLER_PRIVATE_USER_SERVLET_MAPPING); } else { urlSB.append(_DATA_HANDLER_PRIVATE_GROUP_SERVLET_MAPPING); } } else { urlSB.append(_DATA_HANDLER_PUBLIC_SERVLET_MAPPING); } urlSB.append(_DATA_HANDLER_GROUP_FRIENDLY_URL); continue; } long groupId = group.getGroupId(); Layout layout = _layoutLocalService.fetchLayoutByFriendlyURL(groupId, privateLayout, url); if (layout != null) { Element entityElement = portletDataContext.getExportDataElement(stagedModel); portletDataContext.addReferenceElement(stagedModel, entityElement, layout, PortletDataContext.REFERENCE_TYPE_DEPENDENCY, true); continue; } pos = url.indexOf(StringPool.SLASH, 1); String groupFriendlyURL = url; if (pos != -1) { groupFriendlyURL = url.substring(0, pos); } Group urlGroup = _groupLocalService.fetchFriendlyURLGroup(group.getCompanyId(), groupFriendlyURL); if (urlGroup == null) { throw new NoSuchLayoutException(); } urlSB.append(_DATA_HANDLER_GROUP_FRIENDLY_URL); // Append the UUID. This information will be used during the // import process when looking up the proper group for the link. urlSB.append(StringPool.AT); if (urlGroup.isStagedRemotely()) { String remoteGroupUuid = urlGroup.getTypeSettingsProperty("remoteGroupUUID"); if (Validator.isNotNull(remoteGroupUuid)) { urlSB.append(remoteGroupUuid); } } else if (urlGroup.isStaged()) { Group liveGroup = urlGroup.getLiveGroup(); urlSB.append(liveGroup.getUuid()); } else if (group.getGroupId() == urlGroup.getGroupId()) { urlSB.append(urlGroup.getFriendlyURL()); } else { urlSB.append(urlGroup.getUuid()); } urlSB.append(StringPool.AT); String siteAdminURL = GroupConstants.CONTROL_PANEL_FRIENDLY_URL + PropsValues.CONTROL_PANEL_LAYOUT_FRIENDLY_URL; if (url.endsWith(siteAdminURL)) { urlSB.append(_DATA_HANDLER_SITE_ADMIN_URL); url = StringPool.BLANK; continue; } if (pos == -1) { url = StringPool.BLANK; continue; } url = url.substring(pos); layout = _layoutLocalService.getFriendlyURLLayout(urlGroup.getGroupId(), privateLayout, url); Element entityElement = portletDataContext.getExportDataElement(stagedModel); portletDataContext.addReferenceElement(stagedModel, entityElement, layout, PortletDataContext.REFERENCE_TYPE_DEPENDENCY, true); } catch (Exception e) { if (e instanceof NoSuchLayoutException && !_exportImportServiceConfiguration.validateLayoutReferences()) { continue; } if (_log.isDebugEnabled()) { _log.debug(e, e); } else if (_log.isWarnEnabled()) { StringBundler exceptionSB = new StringBundler(6); exceptionSB.append("Unable to process layout URL "); exceptionSB.append(url); exceptionSB.append(" for staged model "); exceptionSB.append(stagedModel.getModelClassName()); exceptionSB.append(" with primary key "); exceptionSB.append(stagedModel.getPrimaryKeyObj()); _log.warn(exceptionSB.toString()); } } finally { if (urlSB.length() > 0) { urlSB.append(url); url = urlSB.toString(); } sb.replace(beginPos + offset, endPos, url); } } return sb.toString(); }
From source file:com.liferay.faces.bridge.container.liferay.internal.PortletContainerLiferayCompatImpl.java
License:Open Source License
/** * This method is called prior to the {@link PhaseId#RENDER_RESPONSE} phase of the JSF lifecycle. *//*from w w w .ja v a 2s . c o m*/ public void beforePhase(PhaseEvent phaseEvent) { // Determine if there are any resources in the LIFERAY_SHARED_PAGE_TOP request attribute, so that execution of // the {@link #afterPhase(PhaseEvent)} can be optimized. liferaySharedPageTopLength = 0; BridgeContext bridgeContext = BridgeContext.getCurrentInstance(); PortletRequest portletRequest = bridgeContext.getPortletRequest(); StringBundler pageTop = getPageTop(portletRequest); if (pageTop != null) { liferaySharedPageTopLength = pageTop.length(); } }
From source file:com.liferay.faces.bridge.container.liferay.PortletContainerLiferayCompatImpl.java
License:Open Source License
/** * This method is called prior to the {@link PhaseId#RENDER_RESPONSE} phase of the JSF lifecycle. *///from w w w . j a v a 2s .c o m @Override public void beforePhase(PhaseEvent phaseEvent) { // Determine if there are any resources in the LIFERAY_SHARED_PAGE_TOP request attribute, so that execution of // the {@link #afterPhase(PhaseEvent)} can be optimized. liferaySharedPageTopLength = 0; BridgeContext bridgeContext = BridgeContext.getCurrentInstance(); PortletRequest portletRequest = bridgeContext.getPortletRequest(); StringBundler pageTop = getPageTop(portletRequest); if (pageTop != null) { liferaySharedPageTopLength = pageTop.length(); } }
From source file:com.liferay.faces.bridge.ext.event.internal.LiferayPageTopPhaseListenerCompat.java
License:Open Source License
/** * This method is called prior to the {@link PhaseId#RENDER_RESPONSE} phase of the JSF lifecycle. *//* w w w.j av a2 s . com*/ @Override public void beforePhase(PhaseEvent phaseEvent) { // Determine if there are any resources in the LIFERAY_SHARED_PAGE_TOP request attribute, so that execution of // the {@link #afterPhase(PhaseEvent)} can be optimized. liferaySharedPageTopLength = 0; FacesContext facesContext = FacesContext.getCurrentInstance(); ExternalContext externalContext = facesContext.getExternalContext(); PortletRequest portletRequest = (PortletRequest) externalContext.getRequest(); StringBundler pageTop = getPageTop(portletRequest); if (pageTop != null) { liferaySharedPageTopLength = pageTop.length(); } }
From source file:com.liferay.frontend.js.loader.modules.extender.internal.npm.flat.FlatNPMBundleProcessor.java
License:Open Source License
private String _canonicalizePath(String path) { int parents = 0; String[] parts = path.split(StringPool.SLASH); List<String> processedParts = new ArrayList<>(); for (int i = parts.length - 1; i >= 0; i--) { String part = parts[i];//ww w. ja v a 2s .com if (part.equals(".")) { continue; } else if (part.equals("..")) { parents++; } else { if (parents > 0) { parents--; } else { processedParts.add(part); } } } Collections.reverse(processedParts); StringBundler sb = new StringBundler(2 * processedParts.size() - 1); for (String processedPart : processedParts) { if (sb.length() != 0) { sb.append(StringPool.SLASH); } sb.append(processedPart); } return sb.toString(); }
From source file:com.liferay.frontend.js.top.head.extender.internal.servlet.taglib.TopHeadDynamicInclude.java
License:Open Source License
private void _renderBundleComboURLs(HttpServletRequest request, HttpServletResponse response, List<String> urls) throws IOException { PrintWriter printWriter = response.getWriter(); StringBundler sb = new StringBundler(); long jsLastModified = -1; if (_portalWebResources != null) { jsLastModified = _portalWebResources.getLastModified(); }/*from ww w . j a v a2s. co m*/ String comboURL = _portal.getStaticResourceURL(request, _comboContextPath, "minifierType=js", jsLastModified); for (String url : urls) { if (sb.length() == 0) { sb.append("<script data-senna-track=\"permanent\" src=\""); ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY); sb.append(themeDisplay.getCDNBaseURL() + comboURL); } sb.append(StringPool.AMPERSAND); sb.append(url); if (sb.length() >= 2048) { sb.append("\" type = \"text/javascript\"></script>"); printWriter.println(sb.toString()); sb = new StringBundler(); } } if (sb.length() > 0) { sb.append("\" type = \"text/javascript\"></script>"); printWriter.println(sb.toString()); } }
From source file:com.liferay.mail.imap.IMAPAccessor.java
License:Open Source License
public void storeContents(long folderId, long[] remoteMessageIds) throws IOException, PortalException { Folder jxFolder = null;//from w w w .j a v a 2s .c o m try { jxFolder = openFolder(folderId); Message[] jxMessages = getMessagesByUID(jxFolder, remoteMessageIds); FetchProfile fetchProfile = new FetchProfile(); fetchProfile.add(UIDFolder.FetchProfileItem.CONTENT_INFO); fetchProfile.add(UIDFolder.FetchProfileItem.FLAGS); fetchProfile.add(UIDFolder.FetchProfileItem.UID); jxFolder.fetch(jxMessages, fetchProfile); for (Message jxMessage : jxMessages) { String flags = getFlags(jxMessage); long remoteMessageId = getUID(jxFolder, jxMessage); com.liferay.mail.model.Message message = MessageLocalServiceUtil.getMessage(folderId, remoteMessageId); StringBundler bodyPlain = new StringBundler(); StringBundler bodyHtml = new StringBundler(); List<MailFile> mailFiles = new ArrayList<MailFile>(); getParts(_user.getUserId(), bodyPlain, bodyHtml, StringPool.BLANK, jxMessage, mailFiles); if (bodyHtml.length() == 0) { if (bodyPlain.length() == 0) { bodyHtml.append(" "); } else { bodyHtml = bodyPlain; } } if (flags.indexOf(MailConstants.FLAG_SEEN) == -1) { jxMessage.setFlag(Flags.Flag.SEEN, false); } AttachmentLocalServiceUtil.deleteAttachments(message.getCompanyId(), message.getMessageId()); for (MailFile mailFile : mailFiles) { AttachmentLocalServiceUtil.addAttachment(_user.getUserId(), message.getMessageId(), mailFile.getContentPath(), mailFile.getFileName(), mailFile.getSize(), mailFile.getFile()); } MessageLocalServiceUtil.updateContent(message.getMessageId(), bodyHtml.toString(), flags); } } catch (MessagingException me) { throw new MailException(me); } finally { closeFolder(jxFolder, false); } }