You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fx-dev@ws.apache.org by ja...@apache.org on 2004/08/16 14:15:57 UTC

cvs commit: ws-fx/sandesha/src/org/apache/sandesha/server/dao ServerQueueDAO.java

jaliya      2004/08/16 05:15:57

  Added:       sandesha/src/org/apache/sandesha/server/dao
                        ServerQueueDAO.java
  Log:
  An Implementation of IServerDAO to access a queue
  
  Revision  Changes    Path
  1.1                  ws-fx/sandesha/src/org/apache/sandesha/server/dao/ServerQueueDAO.java
  
  Index: ServerQueueDAO.java
  ===================================================================
  /*
   * Copyright  1999-2004 The Apache Software Foundation.
   *
   *  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 org.apache.sandesha.server.dao;
  
  import java.util.Iterator;
  import java.util.Random;
  import java.util.Set;
  import java.util.Vector;
  
  
  import org.apache.axis.components.logger.LogFactory;
  import org.apache.commons.logging.Log;
  import org.apache.sandesha.RMMessageContext;
  import org.apache.sandesha.server.queue.QueueException;
  import org.apache.sandesha.server.queue.ServerQueue;
  
  /**
   * @author Chamikara Jayalath
   * @author Jaliya Ekanayaka
   */
  
  public class ServerQueueDAO implements IServerDAO {
  
  	protected static Log log =
  		 LogFactory.getLog(ServerQueueDAO.class.getName());
  		     
  	public boolean addSequence(String sequenceId) {
  	    boolean result = false;
  		try{
  		  	ServerQueue sq = ServerQueue.getInstance();
  			sq.createNewSequence(sequenceId);
  			result=true;
  		}catch(QueueException e){
  			log.error(e);
  		}
  		
  		return result;
  	}
  	
  	
  
  	public boolean addOutQueueMessage(RMMessageContext msg) {
  		boolean result = false;
  		try{
  			ServerQueue sq = ServerQueue.getInstance();  
  			sq.addMessageToOutQueue(msg);
  		}catch(QueueException e){
  			log.error(e);
  		}
  		
  		return result;
  	}
  	
  	
  
  	public RMMessageContext getNextMessageToSend() {
  		RMMessageContext msg = null;
  		try{
  			ServerQueue sq = ServerQueue.getInstance();
  			msg = sq.nextOutQueueMessage();
  		}catch(QueueException e){
  			log.error(e);
  			e.printStackTrace(); 
  		}
  		
  		return msg;
  	}
  
  
  	/* (non-Javadoc)
  	 * @see org.apache.sandesha.server.dao.IServerDAO#addMessageToSequence(java.lang.String, java.lang.Long, org.apache.sandesha.RMMessageContext)
  	 */
  	public boolean addMessageToSequence(
  		String sequenceId,
  		Long msgNo,
  		RMMessageContext rmMessageContext) {
  			
  		boolean result = false;	
  		try{	
  			ServerQueue sq = ServerQueue.getInstance();
  			sq.addMessageToSequence(sequenceId,msgNo,rmMessageContext);
  			result = true;
  		}catch(QueueException e){
  			log.error(e);
  			e.printStackTrace(); 
  		}
  		return result;
  	}
  
  	/* (non-Javadoc)
  	 * @see org.apache.sandesha.server.dao.IServerDAO#isSequenceExists(java.lang.String)
  	 */
  	public boolean isSequenceExists(String sequenceId) {
  		
  		ServerQueue sq = ServerQueue.getInstance();
  		boolean exists = sq.isSequenceExists(sequenceId);
  
  		return exists;
  	}
  
  	/* (non-Javadoc)
  	 * @see org.apache.sandesha.server.dao.IServerDAO#getNextMsgContextToProcess(java.lang.String)
  	 */
  	public RMMessageContext getNextMsgContextToProcess(String sequenceId) {
  		ServerQueue sq = ServerQueue.getInstance();
  		
  		RMMessageContext msg = null;
  		try{
  			msg = sq.nextMessageToProcess(sequenceId);
  		}catch(Exception e){
  			log.error(e);
  			e.printStackTrace(); 
  		}
  		
  		return msg;
  	}
  
  	/* (non-Javadoc)
  	 * @see org.apache.sandesha.server.dao.IServerDAO#hasNewMessages()
  	 */
  	public boolean hasNewMessages() {
  		// TODO Auto-generated method stub
  		return false;
  	}
  
  
  	/* (non-Javadoc)
  	 * @see org.apache.sandesha.server.dao.IServerDAO#getRandomSeqIdToProcess()
  	 */
  	public String getRandomSeqIdToProcess() {
  		// TODO Auto-generated method stub
  		ServerQueue sq = ServerQueue.getInstance();
  		Vector ids = sq.nextAllSeqIdsToProcess();
  		
  		int size = ids.size();
  		
  		if(size<=0)
  		    return null;
  		    
  		Random r = new Random();
  		int number = r.nextInt(size);
  		String id = (String) ids.get(number);
  		
  		sq.setSequenceLock(id,true);   //Locks the sequence temporarily to tell that it is locked.
  		return id;
  	}
  	
  
  	/* (non-Javadoc)
  	 * @see org.apache.sandesha.server.dao.IServerDAO#getAllReceivedMsgNumsOfSeq(java.lang.String)
  	 */
  	public Set getAllReceivedMsgNumsOfSeq(String sequenceId) {
  		
  		ServerQueue sq = ServerQueue.getInstance();
  		return sq.getAllReceivedMsgNumsOfSeq(sequenceId);
  	}
  
  	/* (non-Javadoc)
  	 * @see org.apache.sandesha.server.dao.IServerDAO#isMessageExists(java.lang.String, java.lang.String)
  	 */
  	public boolean isMessageExists(String sequenceId, Long msgNo) {
  
  		ServerQueue sq = ServerQueue.getInstance();
  		return sq.isMessageExists(sequenceId,msgNo);
  	}
  
  }