Java tutorial
/* * #%L * share-po * %% * Copyright (C) 2005 - 2016 Alfresco Software Limited * %% * This file is part of the Alfresco software. * If the software was purchased under a paid Alfresco license, the terms of * the paid license agreement will prevail. Otherwise, the software is * provided under the following open source license terms: * * Alfresco is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Alfresco 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with Alfresco. If not, see <http://www.gnu.org/licenses/>. * #L% */ package org.alfresco.po.share.util; import org.alfresco.po.exception.PageException; import org.apache.commons.lang3.StringUtils; import org.openqa.selenium.WebElement; import java.util.Collection; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * The Class PageUtils. */ public class PageUtils { private static final String REGEXP_PROTOCOL = "\\w+\\:\\W+"; private static final String REGEXP_SHARE_URL = "\\w+\\W?\\w+\\W?\\w+\\W?\\w+\\:?\\w+?\\/(share)"; private static final String REGEXP_IP_WITH_PORT = "(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})(:\\d{1,5})?"; private static final String REGEXP_DOMAIN_WITH_PORT = "(\\w+(\\.\\w+)*(\\.\\w{2,}))(:\\d{1,5})?"; private static final String REGEX_SITE_NAME = "\\/site\\/(.*)\\/(.*)"; /** * Is a WebElement usable? * * @param element the WebElement * @return boolean */ public static boolean usableElement(WebElement element) { if (element != null && element.isDisplayed() && element.isEnabled() && !StringUtils.contains(element.getAttribute("class"), "dijitDisabled") && !StringUtils.contains(element.getAttribute("aria-disabled"), "true")) { return true; } return false; } /** * Method to return current protocol from the url * * @param shareUrl String * @return String */ public static String getProtocol(String shareUrl) { Pattern p1 = Pattern.compile(REGEXP_PROTOCOL); Matcher m1 = p1.matcher(shareUrl); if (m1.find()) return m1.group(); else throw new PageException("Can't extract protocol"); } /** * Method to return Share Url without the protocol string (i.e pbld01.alfresco.com/share) * * @param shareUrl String * @return String */ public static String getShareUrl(String shareUrl) { Pattern p1 = Pattern.compile(REGEXP_SHARE_URL); Matcher m1 = p1.matcher(shareUrl); if (m1.find()) return m1.group(); else throw new PageException("Can't extract Share URL"); } /** * Method to return Share server address and port(i.e pbld01.alfresco.com, 127.0.0.1:8080) * * @param shareUrl String * @return String */ public static String getAddress(String shareUrl) { Pattern p1 = Pattern.compile(REGEXP_IP_WITH_PORT); Matcher m1 = p1.matcher(shareUrl); if (m1.find()) { return m1.group(); } else { p1 = Pattern.compile(REGEXP_DOMAIN_WITH_PORT); m1 = p1.matcher(shareUrl); if (m1.find()) { return m1.group(); } } throw new PageException("Can't extract address from URL"); } /** * Method to retrieve site name from the url * * @param shareUrl String * @return String */ public static String getSiteName(String shareUrl) { Pattern p1 = Pattern.compile(REGEX_SITE_NAME); Matcher m1 = p1.matcher(shareUrl); if (m1.find()) return m1.group(1); else throw new PageException("Can't extract Share URL"); } /** * Helper method to check the parameters. This method should be used for all public methods. * * @author Tuna Aksoy * @param paramName {@link String} A name for the parameter to check * @param object {@link Object} The object to check * @param <E> type * @exception IllegalArgumentException will be thrown if the parameter value is null * (for {@link String} also if the value is empty or blank) * */ public static <E> void checkMandatoryParam(final String paramName, final Object object) { if (StringUtils.isBlank(paramName)) { throw new IllegalArgumentException( String.format("The parameter paramName is required and can not be'%s'", paramName)); } if (object == null) { throw new IllegalArgumentException( String.format("'%s' is a mandatory parameter and must have a value", paramName)); } if (object instanceof String && StringUtils.isBlank((String) object)) { throw new IllegalArgumentException(String.format("'%s' is a mandatory parameter", paramName)); } if (object instanceof Collection<?> && ((Collection<?>) object).isEmpty()) { throw new IllegalArgumentException( String.format("'%s' is a mandatory parameter and can not be empty", paramName)); } } }