Issue #2828 Added purge cron to Central SBN Simulator.

Amend: Removed comment accidentally merged from other branch.
       Moved logging to outer loop and log count of purged files for each dir.

Change-Id: I7038e7f76d09576903d35a54e733cd6986a4d1c6

Former-commit-id: 6a42f4162ace5a799df4df0e24bf0199905dcf89
This commit is contained in:
Brad Gonzales 2014-02-20 14:22:44 -06:00
parent 6a7e4a147d
commit 12e22752c2
3 changed files with 63 additions and 5 deletions

View file

@ -3,8 +3,10 @@
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
<bean id="sbnSimulator"
class="com.raytheon.uf.edex.datadelivery.bandwidth.sbn.SbnSimulator" />
<bean id="sbnSimulator"
class="com.raytheon.uf.edex.datadelivery.bandwidth.sbn.SbnSimulator">
<property name="fileExpirationInMilliseconds" value="${sbnSimulator-fileExpirationInMilliseconds}" />
</bean>
<camelContext id="SbnSimulator-context"
xmlns="http://camel.apache.org/schema/spring" errorHandlerRef="errorHandler">
@ -12,6 +14,9 @@
<endpoint id="checkForSbnDataCron"
uri="quartz://datadelivery/sbnSimulator?cron=${sbnSimulator-checkForSbnData.cron}" />
<endpoint id="sbnSimulatorPurgeCron"
uri="quartz://datadelivery/sbnSimulatorPurge?cron=${sbnSimulator-sbnDataPurge.cron}" />
<route id="distributeToSiteDirs">
<from uri="checkForSbnDataCron" />
<doTry>
@ -25,6 +30,21 @@
</doCatch>
</doTry>
</route>
<route id="purgeSbnSimulatorFiles">
<from uri="sbnSimulatorPurgeCron" />
<doTry>
<pipeline>
<bean ref="sbnSimulator" method="purgeSbnSimulatorFiles" />
</pipeline>
<doCatch>
<exception>java.lang.Throwable</exception>
<to
uri="log:SbnSimulator" />
</doCatch>
</doTry>
</route>
</camelContext>
</beans>

View file

@ -1,2 +1,6 @@
# How often to check for dropped off SBN data
sbnSimulator-checkForSbnData.cron=0+*+*+*+*+?
sbnSimulator-checkForSbnData.cron=0+*+*+*+*+?
# cron to Purge old SBN data files
sbnSimulator-sbnDataPurge.cron=0+0+0/2+*+*+?
# age in milliseconds that sbn data files should be removed
sbnSimulator-fileExpirationInMilliseconds=7200000

View file

@ -43,6 +43,7 @@ import com.raytheon.uf.edex.core.EDEXUtil;
* ------------ ---------- ----------- --------------------------
* Mar 14, 2013 1648 djohnson Initial creation
* Oct 18, 2013 2267 bgonzale Added distribution to and check in site specific directories.
* Feb 13, 2014 2828 bgonzale Add purge method.
*
* </pre>
*
@ -94,6 +95,8 @@ public class SbnSimulator {
private String site;
private long fileExpirationInMilliseconds;
/**
* Private constructor.
*/
@ -151,8 +154,7 @@ public class SbnSimulator {
*/
public void distributeToSiteDirs() throws IOException {
final List<File> undistributedFiles = FileUtil.listFiles(
directoryToScan,
FilenameFilters.ACCEPT_FILES, false);
directoryToScan, FilenameFilters.ACCEPT_FILES, false);
// get list of site dirs
final List<File> sites = FileUtil.listFiles(sitesDirectory,
FilenameFilters.ACCEPT_DIRECTORIES, false);
@ -178,6 +180,38 @@ public class SbnSimulator {
}
}
/**
* Purge Sbn simulator data files that are older than the given expiration
* time.
*/
public void purgeSbnSimulatorFiles() {
final List<File> siteDirectories = FileUtil.listFiles(sitesDirectory,
FilenameFilters.ACCEPT_DIRECTORIES, false);
for (File siteDir : siteDirectories) {
final List<File> filesInDir = FileUtil.listFiles(siteDir,
FilenameFilters.ACCEPT_FILES, false);
int fileCount = 0;
for (File file : filesInDir) {
if (System.currentTimeMillis() - file.lastModified() > fileExpirationInMilliseconds) {
if (file.delete()) {
++fileCount;
}
}
}
statusHandler.info("purged " + fileCount
+ " sbn simulation data file(s) in " + siteDir);
}
}
/**
* @param fileExpirationInMilliseconds the fileExpirationInMilliseconds to set
*/
public void setFileExpirationInMilliseconds(long fileExpirationInMilliseconds) {
this.fileExpirationInMilliseconds = fileExpirationInMilliseconds;
}
// TODO Java 1.7 version of the distributeToSiteDirs() method
// /**
// * Distribute to the site directories. Enables all site client registries