All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.foreach.across.modules.web.menu.MenuMatchers Maven / Gradle / Ivy

Go to download

Across is a Java framework that aims to facilitate module based development for Java (web) applications. It builds heavily on Spring framework and allows defining a module consisting of a number of classes and configuration files. Every module defines its own Spring application context and can share one or more beans with other modules.

There is a newer version: 6.0.0
Show newest version
/*
 * Copyright 2014 the original author or authors
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.foreach.across.modules.web.menu;

import lombok.NonNull;
import org.apache.commons.lang3.StringUtils;

import java.util.regex.Pattern;

public final class MenuMatchers
{
	private MenuMatchers() {
	}

	public static class PathEqualityMenuMatcher implements MenuMatcher
	{
		private String path;

		public PathEqualityMenuMatcher( @NonNull String path ) {
			this.path = path;
		}

		@Override
		public boolean matches( Menu menu ) {
			return StringUtils.equals( menu.getPath(), path );
		}

		@Override
		public boolean equals( Object o ) {
			if ( this == o ) {
				return true;
			}
			if ( !( o instanceof PathEqualityMenuMatcher ) ) {
				return false;
			}

			PathEqualityMenuMatcher that = (PathEqualityMenuMatcher) o;

			if ( path != null ? !path.equals( that.path ) : that.path != null ) {
				return false;
			}

			return true;
		}

		@Override
		public int hashCode() {
			return path != null ? path.hashCode() : 0;
		}
	}

	public static class PathPatternMenuMatcher implements MenuMatcher
	{

		private final Pattern pattern;

		public PathPatternMenuMatcher( Pattern pattern ) {
			this.pattern = pattern;
		}

		@Override
		public boolean matches( Menu menu ) {
			return pattern.matcher( menu.getPath() ).find();
		}

		@Override
		public boolean equals( Object o ) {
			if ( this == o ) {
				return true;
			}
			if ( !( o instanceof PathPatternMenuMatcher ) ) {
				return false;
			}

			PathPatternMenuMatcher that = (PathPatternMenuMatcher) o;

			if ( pattern != null ? !pattern.pattern().equals( that.pattern.pattern() ) : that.pattern != null ) {
				return false;
			}

			return true;
		}

		@Override
		public int hashCode() {
			return pattern != null ? pattern.pattern().hashCode() : 0;
		}
	}

	public static MenuMatcher pathEquals( String path ) {
		return new PathEqualityMenuMatcher( path );
	}

	public static MenuMatcher pathMatches( String pattern ) {
		return pathMatches( pattern, false );
	}

	public static MenuMatcher pathMatches( String pattern, boolean ignoreCase ) {
		int flags = ( ignoreCase ? Pattern.CASE_INSENSITIVE : 0 );
		return pathMatches( Pattern.compile( pattern, flags ) );
	}

	public static MenuMatcher pathMatches( Pattern pattern ) {
		return new PathPatternMenuMatcher( pattern );
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy