Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
07/19/17 14:32:57 (7 years ago)
Author:
pfleck
Message:

#2809:

  • Removed FilterLogic.
  • Made Contents storable and implemented proper cloning.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/DataPreprocessing Cleanup/HeuristicLab.DataPreprocessing/3.4/Logic/ManipulationLogic.cs

    r15270 r15274  
    2323using System.Collections.Generic;
    2424using System.Linq;
     25using HeuristicLab.Common;
     26using HeuristicLab.Core;
    2527using HeuristicLab.Data;
     28using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    2629using HeuristicLab.Random;
    2730
    2831namespace HeuristicLab.DataPreprocessing {
    29   public class ManipulationLogic {
    30     private readonly IPreprocessingData preprocessingData;
     32  [Item("ManipulationLogic", "")]
     33  [StorableClass]
     34  public class ManipulationLogic : Item {
     35
     36    [Storable]
     37    private readonly IFilteredPreprocessingData preprocessingData;
     38
     39    [Storable]
    3140    private readonly StatisticsLogic statisticsLogic;
    3241
     
    3544    }
    3645
    37     public IPreprocessingData PreProcessingData {
     46    public IFilteredPreprocessingData PreProcessingData {
    3847      get { return preprocessingData; }
    3948    }
    4049
    41     public ManipulationLogic(IPreprocessingData preprocessingData, StatisticsLogic theStatisticsLogic) {
     50    #region Constructor, Cloning & Persistence
     51    public ManipulationLogic(IFilteredPreprocessingData preprocessingData, StatisticsLogic theStatisticsLogic) {
    4252      this.preprocessingData = preprocessingData;
    4353      statisticsLogic = theStatisticsLogic;
    4454    }
     55    public ManipulationLogic(ManipulationLogic original, Cloner cloner)
     56      : base(original, cloner) {
     57      preprocessingData = cloner.Clone(original.preprocessingData);
     58      statisticsLogic = cloner.Clone(original.statisticsLogic);
     59    }
     60    public override IDeepCloneable Clone(Cloner cloner) {
     61      return new ManipulationLogic(this, cloner);
     62    }
     63
     64    [StorableConstructor]
     65    protected ManipulationLogic(bool deserializing)
     66      : base(deserializing) { }
     67    #endregion
    4568
    4669    public void ReplaceIndicesByValue<T>(int columnIndex, IEnumerable<int> rowIndices, T value) {
     
    123146      for (int i = 0; i < count; ++i) {
    124147        if (start == int.MinValue) {
    125           start = indexOfPrevPresentValue(column.Key, rowIndices[i]);
     148          start = IndexOfPrevPresentValue(column.Key, rowIndices[i]);
    126149        }
    127150        if (i + 1 == count || (i + 1 < count && rowIndices[i + 1] - rowIndices[i] > 1)) {
    128           int next = indexOfNextPresentValue(column.Key, rowIndices[i]);
     151          int next = IndexOfNextPresentValue(column.Key, rowIndices[i]);
    129152          if (start > 0 && next < preprocessingData.Rows) {
    130153            startEndings.Add(new Tuple<int, int>(start, next));
     
    144167            // dont replace first or last values
    145168            if (index > 0 && index < countValues) {
    146               int prevIndex = indexOfPrevPresentValue(column.Key, index);
    147               int nextIndex = indexOfNextPresentValue(column.Key, index);
     169              int prevIndex = IndexOfPrevPresentValue(column.Key, index);
     170              int nextIndex = IndexOfNextPresentValue(column.Key, index);
    148171
    149172              // no neighbours found
     
    183206    }
    184207
    185     private int indexOfPrevPresentValue(int columnIndex, int start) {
     208    private int IndexOfPrevPresentValue(int columnIndex, int start) {
    186209      int offset = start - 1;
    187210      while (offset >= 0 && preprocessingData.IsCellEmpty(columnIndex, offset)) {
     
    192215    }
    193216
    194     private int indexOfNextPresentValue(int columnIndex, int start) {
     217    private int IndexOfNextPresentValue(int columnIndex, int start) {
    195218      int offset = start + 1;
    196219      while (offset < preprocessingData.Rows && preprocessingData.IsCellEmpty(columnIndex, offset)) {
Note: See TracChangeset for help on using the changeset viewer.