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

com.mxixm.fastboot.weixin.mvc.condition.AbstractWxEnumCondition Maven / Gradle / Ivy

The newest version!
package com.mxixm.fastboot.weixin.mvc.condition;

import com.mxixm.fastboot.weixin.module.web.WxRequest;
import com.mxixm.fastboot.weixin.mvc.WxWebUtils;
import org.springframework.web.servlet.mvc.condition.AbstractRequestCondition;

import javax.servlet.http.HttpServletRequest;
import java.util.*;

/**
 * FastBootWeixin  AbstractWxEnumCondition
 *
 * @author Guangshan
 * @summary FastBootWeixin  AbstractWxEnumCondition
 * @Copyright (c) 2017, Guangshan Group All Rights Reserved
 * @since 2017/8/12 22:51
 */
public abstract class AbstractWxEnumCondition> extends AbstractRequestCondition> {

	protected final Set enums;

	public AbstractWxEnumCondition(T... enums) {
		this(enums != null ? Arrays.asList(enums) : Collections.emptyList());
	}

	protected AbstractWxEnumCondition(Collection enums) {
		this.enums = Collections.unmodifiableSet(new LinkedHashSet<>(enums));
	}

	public Set getEnums() {
		return this.enums;
	}

	@Override
	protected Collection getContent() {
		return this.enums;
	}

	@Override
	protected String getToStringInfix() {
		return " || ";
	}

	@Override
	public abstract AbstractWxEnumCondition combine(AbstractWxEnumCondition other);

	@Override
	public AbstractWxEnumCondition getMatchingCondition(HttpServletRequest request) {
		return matchEnum(WxWebUtils.getWxRequestBodyFromRequestAttribute(request));
	}

	protected abstract AbstractWxEnumCondition matchEnum(WxRequest.Body wxRequestBody);

	@Override
	public int compareTo(AbstractWxEnumCondition other, HttpServletRequest request) {
		if (other.enums.size() != this.enums.size()) {
			return other.enums.size() - this.enums.size();
		}
		else if (this.enums.size() == 1) {
			// 以第一个元素算
			return this.enums.stream().findFirst().get().ordinal() - other.enums.stream().sorted().findFirst().map(e -> e.ordinal()).orElse(-1);
		}
		return 0;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy