/*
 * Copyright 2008-2010 Plura Processing, LP 
 */
package test;

import java.util.Calendar;

import com.pluraprocessing.node.affiliate.desktop.JavaPluraConnector;
import com.pluraprocessing.node.exception.PluraIOException;
import com.pluraprocessing.node.exception.PluraInitializationException;
import com.pluraprocessing.node.exception.PluraIntervalException;
import com.pluraprocessing.node.exception.PluraLoadException;
import com.pluraprocessing.node.exception.PluraParameterException;
import com.pluraprocessing.node.exception.PluraStateException;

public class TestDesktopInterface {

	/*
	 * This method tests Sample Client Tracking Code JavaPluraConnector functionality for Java Applications and Java Signed Applets
	 */
	public static void main(String[] args) {
		JavaPluraConnector plura = null;
		
		try {
			//instantiate new JavaPluraConnector with affiliate id = 00000000-0000-0000-0000-000000000000, cpu percentage = .5, 
			//bandwidth percentage = .8, client id = "test", max plura threads = 4 (to use 4 cores on a computer)
			plura = new JavaPluraConnector("00000000-0000-0000-0000-000000000000", .5, .8, "test", 4); 
						
			
			Calendar cal = Calendar.getInstance();
			cal.set(2008, 10, 1);
			
			System.out.println("get work units for client id 'test'"); 
			int numberWorkUnits = plura.getWorkUnitsCompletedByClient("test", cal); //get the number of work units that client 'test' did on October 1, 2008
			
			giveUserReward(numberWorkUnits, "test"); //reward client 'test' for doing work
			
		} 
		catch (PluraInitializationException e) {
			e.printStackTrace(System.out);
		} 
		catch (InterruptedException e) {
			e.printStackTrace(System.out);
		} 
		catch (PluraLoadException e) {
			e.printStackTrace(System.out);
		} 
		catch (PluraParameterException e) {
			e.printStackTrace(System.out);
		} 
		catch (PluraIntervalException e) {
			e.printStackTrace(System.out);
		} 
		catch (PluraIOException e) {
			e.printStackTrace(System.out);
		} 
		catch (PluraStateException e) {
			e.printStackTrace(System.out);
		}
		finally {
			if (plura != null) {
				plura.stop(); //Stop Plura before the application exits (even if it exits on error) so that Plura threads are not abandoned.
			}
		}
	}
	
	private static void giveUserReward(int numberWorkUnits, String clientId) {
		//reward user with clientId for doing numberWorkUnits of Plura work
	}

}