forked from Coded/SIPRP
				
			git-svn-id: https://svn.coded.pt/svn/SIPRP@726 bb69d46d-e84e-40c8-a05a-06db0d633741
	
		
	
				
					
				
			
							parent
							
								
									d8f56fbb77
								
							
						
					
					
						commit
						7198774813
					
				| @ -0,0 +1,109 @@ | ||||
| package siprp.lembretes; | ||||
| 
 | ||||
| import java.util.Calendar; | ||||
| import java.util.Date; | ||||
| import java.util.List; | ||||
| 
 | ||||
| public class LembretesDemon extends Thread | ||||
| { | ||||
| 
 | ||||
| 	private static final long SLEEP_TIME_MILLIS = 60 * 60 * 1000; // one hour
 | ||||
| 	 | ||||
| 	private static boolean isRunning = false; | ||||
| 	 | ||||
| 	private static LembretesDemon instance = null; | ||||
| 	 | ||||
| 	private LembretesDataProvider lembretesProvider = null; | ||||
| 	 | ||||
| 	private boolean doneForToday = false; | ||||
| 	 | ||||
| 	private Calendar lastIteration = Calendar.getInstance(); | ||||
| 	 | ||||
| 	private LembretesDemon() | ||||
| 	{ | ||||
| 		try | ||||
| 		{ | ||||
| 			lembretesProvider = new LembretesDataProvider(); | ||||
| 		} catch( Exception e ) | ||||
| 		{ | ||||
| 			e.printStackTrace(); | ||||
| 		} | ||||
| 	} | ||||
| 	 | ||||
| 	/** | ||||
| 	 * Instanciates and starts a LembretesDemon | ||||
| 	 */ | ||||
| 	public static void go() | ||||
| 	{ | ||||
| 		getInstance(); | ||||
| 		startDemon(); | ||||
| 	} | ||||
| 	 | ||||
| 	/** | ||||
| 	 * Gets LembretesDemon | ||||
| 	 * @return | ||||
| 	 */ | ||||
| 	public static LembretesDemon getInstance() | ||||
| 	{ | ||||
| 		if( LembretesDemon.instance == null ) | ||||
| 		{ | ||||
| 			LembretesDemon.instance = new LembretesDemon(); | ||||
| 		} | ||||
| 		return LembretesDemon.instance; | ||||
| 	} | ||||
| 	 | ||||
| 	public static void stopDemon() | ||||
| 	{ | ||||
| 		if( LembretesDemon.isRunning ) | ||||
| 		{ | ||||
| 			LembretesDemon.isRunning = false; | ||||
| 		} | ||||
| 	} | ||||
| 	 | ||||
| 	public static void startDemon() | ||||
| 	{ | ||||
| 		if( !LembretesDemon.isRunning ) | ||||
| 		{ | ||||
| 			LembretesDemon.isRunning = true; | ||||
| 			instance.start(); | ||||
| 		} | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void run() | ||||
| 	{ | ||||
| 		System.out.println( new Date() + ": Starting LembretesDemon" ); | ||||
| 		while( isRunning ) | ||||
| 		{ | ||||
| 			try | ||||
| 			{ | ||||
| 				Calendar now = Calendar.getInstance(); | ||||
| 				if( !doneForToday || lastIterationWasYesterday( now ) ) | ||||
| 				{ | ||||
| 					doStuff(); | ||||
| 					doneForToday = true; | ||||
| 				} | ||||
| 				lastIteration = now; | ||||
| 				Thread.sleep( SLEEP_TIME_MILLIS ); | ||||
| 			} catch( InterruptedException e ) | ||||
| 			{ | ||||
| 				e.printStackTrace(); | ||||
| 			} | ||||
| 		} | ||||
| 		System.out.println( new Date() + ": Stopping LembretesDemon" ); | ||||
| 	} | ||||
| 	 | ||||
| 	private void doStuff() | ||||
| 	{ | ||||
| 		List<Integer> fichasExpiradas = lembretesProvider.getFichasExpiradasID(); | ||||
| 		fichasExpiradas.addAll( lembretesProvider.getFichasExpiradasSemData() ); | ||||
| 		lembretesProvider.createLembretesForFichas( fichasExpiradas ); | ||||
| 	} | ||||
| 	 | ||||
| 	private boolean lastIterationWasYesterday( Calendar now ) | ||||
| 	{ | ||||
| 		return ( now.get( Calendar.DAY_OF_MONTH ) > lastIteration.get( Calendar.DAY_OF_MONTH ) ) | ||||
| 		|| | ||||
| 		( now.get( Calendar.DAY_OF_MONTH ) == 1 && lastIteration.get( Calendar.DAY_OF_MONTH ) != 1 ); | ||||
| 	} | ||||
| } | ||||
					Loading…
					
					
				
		Reference in new issue