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