⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 objecttokenhandlerbean.java

📁 j2ee源码
💻 JAVA
字号:
package com.leeman.common.handler;

import java.util.ArrayList;

import javax.ejb.ObjectNotFoundException;

import com.leeman.common.dao.Object_Token;
import com.leeman.common.dao.Object_TokenHome;
import com.leeman.common.dao.Object_TokenKey;
import com.leeman.common.entity.ObjectTokenVO;
import com.leeman.common.util.DateUtils;
import com.leeman.common.util.EjbGetter;

/**
 * Bean implementation class for Enterprise Bean: ObjectTokenHandler
 */
public class ObjectTokenHandlerBean implements javax.ejb.SessionBean {
	private javax.ejb.SessionContext mySessionCtx;
	/**
	 * getSessionContext
	 */
	public javax.ejb.SessionContext getSessionContext() {
		return mySessionCtx;
	}
	/**
	 * setSessionContext
	 */
	public void setSessionContext(javax.ejb.SessionContext ctx) {
		mySessionCtx = ctx;
	}
	/**
	 * ejbCreate
	 */
	public void ejbCreate() throws javax.ejb.CreateException {
	}
	/**
	 * ejbActivate
	 */
	public void ejbActivate() {
	}
	/**
	 * ejbPassivate
	 */
	public void ejbPassivate() {
	}
	/**
	 * ejbRemove
	 */
	public void ejbRemove() {
	}
	
	private Object_TokenHome getObject_TokenHome() throws javax.naming.NamingException{
		return (Object_TokenHome)EjbGetter.getEJBHome(Object_Token.JNDINAME, Object_TokenHome.class);
	}

	public boolean setToken(ObjectTokenVO[] objectTokenVO) throws Exception
	{
		try{
			for (int i=0; i < objectTokenVO.length; i++){
				setToken(objectTokenVO[i]);
			}
			return true;
		}
		catch(Exception E){
			mySessionCtx.setRollbackOnly();
			return false;
		}
	}
	
	public boolean setToken(ObjectTokenVO objectTokenVO) throws Exception
	{	
		try
		{
			Object_Token object_Token = null;			
			try{
				try{
					object_Token = getObject_TokenHome().findTableLock(objectTokenVO.getCompany_id(), objectTokenVO.getTable_name(), "Y");					
					object_Token.remove();
					object_Token = getObject_TokenHome().create(objectTokenVO.getCompany_id(), objectTokenVO.getRecord_key(), objectTokenVO.getTable_name());
				}
				catch(ObjectNotFoundException E)
				{
					object_Token = getObject_TokenHome().findByPrimaryKey(
						new Object_TokenKey(objectTokenVO.getCompany_id(), objectTokenVO.getRecord_key(), objectTokenVO.getTable_name()));
				}
			}
			catch(ObjectNotFoundException E){
				object_Token = getObject_TokenHome().create(objectTokenVO.getCompany_id(), objectTokenVO.getRecord_key(), objectTokenVO.getTable_name());
			}
			object_Token.setProgram_id(objectTokenVO.getProgram_id());
			object_Token.setSession_id(objectTokenVO.getSession_id());
			object_Token.setTable_lock(objectTokenVO.getTable_lock());
			object_Token.setToken_datetime(objectTokenVO.getToken_date_time());
			object_Token.setUser_id(objectTokenVO.getUser_id());
			return true;
		}					
		catch (Exception e)
		{
			mySessionCtx.setRollbackOnly();
			throw e;
		}
	}

	public void releaseToken(ObjectTokenVO[] objectTokenVO) throws Exception
	{
		if (objectTokenVO != null)
		{
			for (int i=0; i < objectTokenVO.length; i++)
			{
				releaseToken(objectTokenVO[i]);
			}
		}
	}

	public void releaseToken(ObjectTokenVO objectTokenVO) throws Exception
	{
		Object_Token object_token = null;
		try{
			if (objectTokenVO.getTable_lock() != null && objectTokenVO.getTable_lock().equals("Y"))
			{
				object_token = getObject_TokenHome().findTableLock(objectTokenVO.getCompany_id(), objectTokenVO.getTable_name(), "Y");
			}
			else
			{
				object_token = getObject_TokenHome().findByUserRecordKey(objectTokenVO.getCompany_id(), objectTokenVO.getRecord_key(), objectTokenVO.getTable_name(), objectTokenVO.getSession_id());
			}
		
			object_token.remove();
		}
		catch(ObjectNotFoundException E){}
		catch(Exception E){
			System.out.println("Exception in releaseToken()");
		}
	}

	public void releaseTableToken(String companyID, String tableName) throws Exception
	{
		try{
			java.util.Collection tokenCollection = getObject_TokenHome().findTableToken(companyID, tableName);
			ArrayList object_tokenArray = new ArrayList(tokenCollection);
			for (int i =0;i < tokenCollection.size(); i ++ )
			{
				((Object_Token)object_tokenArray.get(i)).remove();
			}
		}catch(ObjectNotFoundException e){	
		}
	}

	public void releaseAllToken(String companyID, String userId, String sessionId) throws Exception
	{
		java.util.Collection tokenCollection = getObject_TokenHome().findUserSessionToken(companyID, userId, sessionId);
		ArrayList object_tokenArray = new ArrayList(tokenCollection);
		for (int i =0;i < tokenCollection.size(); i ++ )
		{
			((Object_Token)object_tokenArray.get(i)).remove();
		}		
	}

	public void releaseAllToken(String companyID, String userId) throws Exception
	{
		java.util.Collection tokenCollection = getObject_TokenHome().findUserToken(companyID, userId);
		ArrayList object_tokenArray = new ArrayList(tokenCollection);
		for (int i =0;i < tokenCollection.size(); i ++ )
		{
			((Object_Token)object_tokenArray.get(i)).remove();
		}		
	}

	/**
	 * Validate if user have token holded
	 * @param objectTokenVO
	 * @return Return a list of Object Token object which is not owner
	 * @throws Exception
	 */
	public boolean isUserToken(String companyID, String userId) throws Exception
	{
		boolean isToken = false;
		java.util.Collection tokenCollection = getObject_TokenHome().findUserToken(companyID, userId);
		ArrayList object_tokenArray = new ArrayList(tokenCollection);
		if(tokenCollection.size()>0)
			isToken = true;
	
		return isToken;
	}

	/**
	 * Validate if the token are in database
	 * @param objectTokenVO
	 * @return Return a list of Object Token object which is not in database.
	 * @throws Exception
	 */
	public ObjectTokenVO[] validateToken(ObjectTokenVO[] objectTokenVO) throws Exception
	{
		ArrayList notValidTokenList = new ArrayList();
		if (objectTokenVO != null)
		{
			for (int i=0; i < objectTokenVO.length; i++)
			{
				if (!validateToken(objectTokenVO[i]))
				{
					notValidTokenList.add(objectTokenVO[i]);
				}
			}			
		}
		if (notValidTokenList.size() > 0)
		{
			return (ObjectTokenVO[])notValidTokenList.toArray(new ObjectTokenVO[0]);
		}
		else
		{
			return null;
		}
	}

	/***
	 * check if the token is avaliable
	 * @param objectTokenVO
	 * @return if the token can be getted.
	 * @throws Exception
	 */
	public boolean validateToken(ObjectTokenVO objectTokenVO) throws Exception
	{
		Object_Token object_Token = null;
		boolean isLocked = false;
		boolean isOwner = false;

		try{			
			try{
				object_Token = getObject_TokenHome().findTableLock(objectTokenVO.getCompany_id(), objectTokenVO.getTable_name(), "Y");
			}
			catch(ObjectNotFoundException E)
			{
				if(objectTokenVO.getTable_lock() == "Y")
				{
					object_Token = getObject_TokenHome().findTableLock(objectTokenVO.getCompany_id(), objectTokenVO.getTable_name(), "N");
				}
				else
				{
					object_Token = getObject_TokenHome().findByPrimaryKey(new Object_TokenKey(objectTokenVO.getCompany_id(), 
									objectTokenVO.getRecord_key(), objectTokenVO.getTable_name()));	
					
				}
			}
			
			java.util.Date tokenDate = object_Token.getToken_datetime();
			java.util.Date timeNow = DateUtils.getCurrentDateTime();
							
			if (tokenDate != null && timeNow.before(tokenDate))
				isLocked = true;	
			else
				isLocked = false;
		
			if (objectTokenVO.getUser_id().equals(object_Token.getUser_id()) &&
				objectTokenVO.getProgram_id().equals(object_Token.getProgram_id()) &&
				objectTokenVO.getSession_id().equals(object_Token.getSession_id())){
				isOwner = true;	
			}
			else{
				isOwner = false;
			}
		}
		catch(ObjectNotFoundException E)
		{
			isLocked = false;
			isOwner = false;
		}
		return isLocked && isOwner;
	}

	/***
	 * check if the token is avaliable
	 * @param objectTokenVO
	 * @return the token which is in use, null if no inuse
	 * @throws Exception
	 */
	public ObjectTokenVO checkToken(ObjectTokenVO objectTokenVO) throws Exception
	{
		Object_Token object_Token = null;
		ObjectTokenVO inUseToken = new ObjectTokenVO();
		boolean isLocked = false;
		boolean isOwner = false;

		try{			
			try{
				object_Token = getObject_TokenHome().findTableLock(objectTokenVO.getCompany_id(), objectTokenVO.getTable_name(), "Y");
			}
			catch(ObjectNotFoundException E)
			{

				if(objectTokenVO.getTable_lock().equals("Y"))
				{
					object_Token = getObject_TokenHome().findTableLock(objectTokenVO.getCompany_id(), objectTokenVO.getTable_name(), "N");
				}
				else
				{
					object_Token = getObject_TokenHome().findByPrimaryKey(new Object_TokenKey(objectTokenVO.getCompany_id(), 
									objectTokenVO.getRecord_key(), objectTokenVO.getTable_name()));					
				}								
			}
			inUseToken.setCompany_id(objectTokenVO.getCompany_id());
			inUseToken.setProgram_id(object_Token.getProgram_id());
			inUseToken.setRecord_key(objectTokenVO.getRecord_key());
			inUseToken.setSession_id(object_Token.getSession_id());
			inUseToken.setTable_lock(object_Token.getTable_lock());
			inUseToken.setTable_name(objectTokenVO.getTable_name());
			inUseToken.setToken_date_time(object_Token.getToken_datetime());
			inUseToken.setUser_id(object_Token.getUser_id());
			
			java.util.Date tokenDate = object_Token.getToken_datetime();
			java.util.Date timeNow = DateUtils.getCurrentDateTime();
							
			if (tokenDate != null && timeNow.before(tokenDate))
				isLocked = true;
			else
				isLocked = false;
		
			if (objectTokenVO.getUser_id().equals(object_Token.getUser_id()) &&
				objectTokenVO.getProgram_id().equals(object_Token.getProgram_id()) &&
				objectTokenVO.getSession_id().equals(object_Token.getSession_id())){
				isOwner = true;	
			}
			else{
				isOwner = false;
			}
		}
		catch(ObjectNotFoundException E)
		{
			isLocked = false;
			isOwner = false;
		}
	
		if (!isLocked || isOwner){
			return null;
		}
		else
		{
			return inUseToken;
		}
	}

	/***
	 * Try to Set an Array of Object token
	 * @param objectTokenVO
	 * @return Return the token that cannot be obtained. If return null, tokens are getted sucessfully
	 * @throws Exception
	 */
	public ObjectTokenVO[] checkSetToken(ObjectTokenVO[] objectTokenVO) throws Exception
	{
		ObjectTokenVO[] lockedToken = null; 
		boolean locked = false;
		ArrayList lockedList = new ArrayList();
		try{
			for (int i=0; i < objectTokenVO.length; i++){
				ObjectTokenVO inUseToken = checkToken(objectTokenVO[i]);		
				if (inUseToken == null){
					if (!locked){
						setToken(objectTokenVO[i]);
					}
				}
				else{
					locked = true;
					lockedList.add(inUseToken);
				}
			}
			if (locked){
				lockedToken = (ObjectTokenVO[])lockedList.toArray(new ObjectTokenVO[0]);
				mySessionCtx.setRollbackOnly();
				return lockedToken;
			}
			else{
				return lockedToken;
			}
		}
		catch(Exception E){
			mySessionCtx.setRollbackOnly();
			E.printStackTrace();
			throw new Exception("Error in getting Object Token.");
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -