use of org.springframework.roo.file.monitor.event.FileEvent in project spring-roo by spring-projects.
the class PollingFileMonitorService method getFileCreationEvents.
private List<FileEvent> getFileCreationEvents(final MonitoringRequest request, final Map<File, Long> priorFiles) {
final List<FileEvent> createEvents = new ArrayList<FileEvent>();
for (final Iterator<String> iter = notifyCreated.iterator(); iter.hasNext(); ) {
final String filePath = iter.next();
if (isWithin(request, filePath)) {
// We've processed it
iter.remove();
// Skip this file if it doesn't exist
final File thisFile = new File(filePath);
if (thisFile.exists()) {
// Record the notification
createEvents.add(new FileEvent(new FileDetails(thisFile, thisFile.lastModified()), FileOperation.CREATED, null));
// Update the prior execution map so it isn't notified again
// next round
priorFiles.put(thisFile, thisFile.lastModified());
}
}
}
return createEvents;
}
use of org.springframework.roo.file.monitor.event.FileEvent in project spring-roo by spring-projects.
the class PollingFileMonitorService method getFileDeletionEvents.
private List<FileEvent> getFileDeletionEvents(final MonitoringRequest request, final Map<File, Long> priorFiles) {
final List<FileEvent> deleteEvents = new ArrayList<FileEvent>();
for (final Iterator<String> iter = notifyDeleted.iterator(); iter.hasNext(); ) {
final String filePath = iter.next();
if (isWithin(request, filePath)) {
// We've processed it
iter.remove();
// Skip this file if it suddenly exists again (it shouldn't be
// in the notify deleted in this case!)
final File thisFile = new File(filePath);
if (!thisFile.exists()) {
// Record the notification
deleteEvents.add(new FileEvent(new FileDetails(thisFile, null), FileOperation.DELETED, null));
// Update the prior execution map so it isn't notified again
// next round
priorFiles.remove(thisFile);
}
}
}
return deleteEvents;
}
use of org.springframework.roo.file.monitor.event.FileEvent in project spring-roo by spring-projects.
the class PollingFileMonitorService method getFileUpdateEvents.
private List<FileEvent> getFileUpdateEvents(final MonitoringRequest request, final Map<File, Long> priorFiles) {
final List<FileEvent> updateEvents = new ArrayList<FileEvent>();
for (final Iterator<String> iter = notifyChanged.iterator(); iter.hasNext(); ) {
final String filePath = iter.next();
if (isWithin(request, filePath)) {
// We've processed it
iter.remove();
// Skip this file if it doesn't exist
final File thisFile = new File(filePath);
if (thisFile.exists()) {
// Record the notification
updateEvents.add(new FileEvent(new FileDetails(thisFile, thisFile.lastModified()), FileOperation.UPDATED, null));
// Update the prior execution map so it isn't notified again
// next round
priorFiles.put(thisFile, thisFile.lastModified());
// Also remove it from the created list, if it's in there
if (notifyCreated.contains(filePath)) {
notifyCreated.remove(filePath);
}
}
}
}
return updateEvents;
}
use of org.springframework.roo.file.monitor.event.FileEvent in project spring-roo by spring-projects.
the class PollingFileMonitorService method remove.
public boolean remove(final MonitoringRequest request) {
synchronized (lock) {
Validate.notNull(request, "MonitoringRequest required");
// Advise of the cessation to monitoring
if (priorExecution.containsKey(request)) {
final List<FileEvent> eventsToPublish = new ArrayList<FileEvent>();
final Map<File, Long> priorFiles = priorExecution.get(request);
for (final Entry<File, Long> entry : priorFiles.entrySet()) {
final File thisFile = entry.getKey();
final Long lastModified = entry.getValue();
eventsToPublish.add(new FileEvent(new FileDetails(thisFile, lastModified), FileOperation.MONITORING_FINISH, null));
}
publish(eventsToPublish);
}
priorExecution.remove(request);
return requests.remove(request);
}
}
use of org.springframework.roo.file.monitor.event.FileEvent in project spring-roo by spring-projects.
the class PollingFileMonitorService method publishRequestedFileEvents.
private int publishRequestedFileEvents() {
int eventsPublished = 0;
for (final MonitoringRequest request : requests) {
final List<FileEvent> eventsToPublish = new ArrayList<FileEvent>();
// See when each file was last checked
Map<File, Long> priorFiles = priorExecution.get(request);
if (priorFiles == null) {
priorFiles = new HashMap<File, Long>();
priorExecution.put(request, priorFiles);
}
// Handle files apparently updated, created, or deleted since the
// last execution
eventsToPublish.addAll(getFileUpdateEvents(request, priorFiles));
eventsToPublish.addAll(getFileCreationEvents(request, priorFiles));
eventsToPublish.addAll(getFileDeletionEvents(request, priorFiles));
publish(eventsToPublish);
eventsPublished += eventsToPublish.size();
}
return eventsPublished;
}
Aggregations