#region License Information /* HeuristicLab * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL) * * This file is part of HeuristicLab. * * HeuristicLab is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * HeuristicLab is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with HeuristicLab. If not, see . */ #endregion using HeuristicLab.DataPreprocessing.Filter; using System.Collections.Generic; using System; using System.Linq; namespace HeuristicLab.DataPreprocessing { public class FilterLogic : IFilterLogic { private ITransactionalPreprocessingData preprocessingData; public FilterLogic(ITransactionalPreprocessingData preprocessingData) { this.preprocessingData = preprocessingData; } public bool[] Preview(IList filters) { bool[] result = Enumerable.Repeat(true, preprocessingData.Rows).ToArray(); foreach (IFilter filter in filters) { if (filter.ConstraintData == null) { continue; } bool[] filterResult = filter.Check(); for(int row = 0; row < result.Length; ++row) { result[row] = result[row] && filterResult[row]; } } return result; } public void Apply(IList filters) { bool[] results = Preview(filters); for(int row = 0; row < results.Length; ++row) { if(!results[row]){ preprocessingData.DeleteRow(row); } } } public IPreprocessingData PreprocessingData { get { return preprocessingData; } } } }