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