/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package org.pieShare.pieShareApp.service.fileFilterService; import org.pieShare.pieShareApp.service.fileFilterService.filters.api.IFilter; import java.io.File; import java.util.ArrayList; import javax.annotation.PostConstruct; import org.pieShare.pieShareApp.service.database.api.IDatabaseService; import org.pieShare.pieShareApp.service.fileFilterService.api.*; import org.pieShare.pieShareApp.model.pieFile.PieFile; /** * * @author Richard */ public class FileFilterService implements IFileFilterService { private IDatabaseService databaseService; private final ArrayList<IFilter> filters; public FileFilterService() { filters = new ArrayList<>(); } @PostConstruct public void init() { refreshFilterList(); } @Override public void setDatabaseService(IDatabaseService databaseService) { this.databaseService = databaseService; } @Override public synchronized void addFilter(IFilter filer) { databaseService.persistFileFilter(filer); refreshFilterList(); } @Override public synchronized void removeFilter(IFilter filer) { databaseService.removeFileFilter(filer); refreshFilterList(); } @Override public synchronized boolean checkFile(PieFile file) { for (IFilter f : filters) { if (f.matches(file.getRelativeFilePath())) { return false; } } return true; } @Override public synchronized boolean checkFile(File file) { for (IFilter f : filters) { if (f.matches(file.toPath().toString())) { return false; } } return true; } @Override public synchronized ArrayList<IFilter> getAllFilters() { ArrayList<IFilter> ff = new ArrayList<>(); ff.addAll(filters); return ff; } public synchronized void refreshFilterList() { filters.clear(); filters.addAll(databaseService.findAllFilters()); } }