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

com.zlyx.easy.access.aspect.AccessAspect Maven / Gradle / Ivy

package com.zlyx.easy.access.aspect;

import java.lang.reflect.Method;
import java.util.List;

import org.aspectj.lang.annotation.Aspect;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.annotation.AnnotationUtils;
import org.springframework.stereotype.Component;

import com.zlyx.easy.access.accesser.AccessAccesser;
import com.zlyx.easy.access.annotations.EasyAccesser;
import com.zlyx.easy.core.loggers.Logger;
import com.zlyx.easy.core.map.EasyMap;
import com.zlyx.easy.core.utils.ObjectUtils;
import com.zlyx.easy.database.annotations.EasySelect;
import com.zlyx.easy.database.aspects.AbstractSelectAspect;
import com.zlyx.easy.database.local.Page;
import com.zlyx.easy.database.local.ReturnType;

@Aspect
@Component
public class AccessAspect extends AbstractSelectAspect {

	@Autowired
	private AccessAccesser accessAccesser;

	@Override
	public Object doAspect(Method method, boolean isPage, String sql, EasyMap paramsMap) {
		if (isPage) {
			if (method.getReturnType() == Page.class) {
				String countSql = sql.replace(sql.substring(sql.indexOf("select") + 6, sql.indexOf("from")),
						" count(*) ");
				ReturnType.clear();
				Object count = accessAccesser.selectOne(countSql);
				if (ObjectUtils.isEmpty(count) || (Long) count == 0) {
					Logger.warn(method.getDeclaringClass(), "No results return!");
					return null;
				}
				ReturnType.setType(method);
				List data = accessAccesser.page(sql, paramsMap.getValue(EasySelect.PAGENUM),
						paramsMap.getValue(EasySelect.PAGSIZE));
				return new Page<>(data, (Long) count);
			} else {
				return accessAccesser.page(sql, paramsMap.getValue(EasySelect.PAGENUM),
						paramsMap.getValue(EasySelect.PAGSIZE));
			}
		}
		return accessAccesser.select(sql);
	}

	@Override
	public boolean isAspect(Method method) {
		return AnnotationUtils.findAnnotation(method.getDeclaringClass(), EasyAccesser.class) != null;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy