Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /* ************************************************************************
  #
  #  DivConq
  #
  #  http://divconq.com/
  #
  #  Copyright:
  #    Copyright 2014 eTimeline, LLC. All rights reserved.
  #
 #  License:
 #    See the license.txt file in the project's top-level directory for details.
 #
 #  Authors:
 #    * Andy White
 #
 ************************************************************************ */
 package divconq.count;
 
 
 
 public class CountManager implements Observer {
 
 	public void init(OperationResult orXElement find) {
 		// configure events and tasks as a result of conditions of counters
 	}
 
 	public void stop(OperationResult or) {
 	}
 	
 	public Counter removeCounter(String name) {
 		Counter c = this..remove(name);
 		
 		if (c != null)
 			c.deleteObserver(this);
 		
 		return c;
 	}
 
 	public Counter getCounter(String name) {
 		return this..get(name);
 	}
 	
 	public Collection<CountergetCounters() {
 		return this..values();
 	}
 
 		if (StringUtil.isEmpty(name))
 			return null;
 		
 		Counter c = this..get(name);
 		
 		if (c == null) {
 			c = new NumberCounter(name);
 			c.addObserver(this);
 			this..put(namec);
 		}
 		
 		if (! (c instanceof NumberCounter))
 			return null;
 		
 		return (NumberCounter)c;
 	}
 
 	public NumberCounter allocateSetNumberCounter(String namelong value) {
 		NumberCounter nc = this.allocateNumberCounter(name);
 	
 		if (nc != null)
 			nc.setValue(value);
 		
 		return nc;
 	}
 	
 	public NumberCounter countObjects(String nameObject obj) {
 		NumberCounter nc = this.allocateNumberCounter(name);
 		
 		if (nc != null) {
 			// TODO - find a better way for memory and GC - nc.setCurrentObject(obj);  -- we used to get Task or Session or such in here!! and hold it for indefinite periods
 			nc.increment();
 		}
 		
 		return nc;
 	}
 	
 	public NumberCounter allocateSetNumberCounter(String namedouble value) {
 		NumberCounter nc = this.allocateNumberCounter(name);
 		
 		if (nc != null)
 			nc.setValue(value);
 		
		return nc;
	}
		if (nc != null)
			nc.setValue(value);
		return nc;
	}
		if (StringUtil.isEmpty(name))
			return null;
		Counter c = this..get(name);
		if (c == null) {
			c = new StringCounter(name);
			c.addObserver(this);
			this..put(namec);
		}
		if (! (c instanceof StringCounter))
			return null;
		return (StringCounter)c;
	}
		if (sc != null)
			sc.setValue(value);
		return sc;
	}
		if (StringUtil.isEmpty(name))
			return null;
		Counter c = this..get(name);
		if (c == null) {
			c = new BooleanCounter(name);
			c.addObserver(this);
			this..put(namec);
		}
		if (! (c instanceof BooleanCounter))
			return null;
		return (BooleanCounter)c;
	}
		if (bc != null)
			bc.setValue(value);
		return bc;
	}
	public void update(Observable oObject arg) {
		if (!(o instanceof Counter))
			return;
		// TODO we won't get here anymore because Counter's setChanged now always sends in a null  
		Counter c = (Counter)o;
		// TODO future add conditional logic checks so configure to watch for certain conditions
		// this is an example of throwing the evaluation out into another thread - this is so we don't hold the lock on the counter too long
		// improve on this design
		if ("dcBusMessageSent".equals(c.getName())) {
			// assuming dcBusMessageSent is a number counter
			// when we hit 15
			if (BigDecimal.valueOf(15).compareTo(((NumberCounter)c).getValue()) == 0) {
				// then a tigger has happened, copy the counter to keep the state intact
				/*
				final Counter fc = c.clone();
				// then off load the work of processing the event
				// TODO maybe the event's system will always offload internally so we don't need to here
				Hub.instance.getWorkPool().submit(new IWork() {				
					@Override
					public void run(Task task) {
							System.out.println("event x: " + fc);   // trigger an alert
							task.complete();
					}
				});
				*/
				//System.out.println("dcBusMessageSent test event :)");
			}
		}
		// we leave right after the clone so no major overhead incurred
	}
New to GrepCode? Check out our FAQ X