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

com.eshore.uas.system.DefaultUserProvider Maven / Gradle / Ivy

There is a newer version: 2.0.3
Show newest version
package com.eshore.uas.system;

import javax.sql.DataSource;

import com.eshore.tools.Alias;
import com.eshore.uas.extensions.Glue;
import com.eshore.uas.jdbc.impl.SQLQuery;
import com.eshore.uas.server.api.User;
import com.eshore.uas.server.api.UserProvider;

/**
 * 
 * @author eshore
 *
 */
public class DefaultUserProvider implements UserProvider {
	
	private String userDomain;
	public DefaultUserProvider() {
		
	}
	
	DataSource ds;
	public DataSource getDs(AuthSource as) {
		if(ds==null) {
			ds=Glue.getDataSourceFactory().getDataSource(as);
		}
		return ds;
	}
	
	private AuthSource as;
	public DefaultUserProvider(AuthSource as) {
		this.as=as;
		this.userDomain=as.getUserDomain();
	}
	
	private SQLQuery db() {
		SQLQuery query= new SQLQuery(){
			public DataSource getDataSource() {
				return getDs(as);
			}
		};
		return query;
	}

	@Override
	public User findByAccount(String account) {
		User u =Glue.getUserCache().byAccount(account+"@"+userDomain);
		if(u!=null)return u;
		u=findUser(as.getSqlByAccount(),account);
		if(u!=null)Glue.getUserCache().cache(u);
		return u;
	}
	
	private User findUser(String sql,String param) {
		if(sql==null||param==null)return null;
		User u =(User) db().query(sql)
				.alias(Alias.getAlias(User.class))
				.clazz(User.class)
				.param(param)
				.findOne();
		if(u!=null) {
			u.setDomain(userDomain);
		}
		return u;
	}
	@Override
	public User findByID(String id) {
		User u =Glue.getUserCache().byId(id+"@"+userDomain);
		if(u!=null)return u;
		u= findUser(as.getSqlById(),id);
		if(u!=null)Glue.getUserCache().cache(u);
		return u;
	}

	@Override
	public User findByEmail(String mail) {
		User u =Glue.getUserCache().byMail(mail+"@"+userDomain);
		if(u!=null)return u;
		u= findUser(as.getSqlByEmail(),mail);
		if(u!=null)Glue.getUserCache().cache(u);
		return u;
	}

	@Override
	public User findByPhone(String phone) {
		User u =Glue.getUserCache().byPhone(phone+"@"+userDomain);
		if(u!=null)return u;
		u= findUser(as.getSqlByPhone(),phone);
		if(u!=null)Glue.getUserCache().cache(u);
		return u;
	}

	/**
	 * 
	 */
	@Override
	public User findByAccount(String account, String domain) {
		return findByAccount(account);
	}

	@Override
	public User findByID(String id, String domain) {
		return findByID(id);
	}

	@Override
	public User findByEmail(String mail, String domain) {
		return findByEmail(mail);
	}

	@Override
	public User findByPhone(String phone, String domain) {
		return findByPhone(phone);
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy