Changeset 10991 for branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.4/Implementations/TransactionalPreprocessingData.cs
- Timestamp:
- 06/11/14 14:48:26 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.4/Implementations/TransactionalPreprocessingData.cs
r10978 r10991 89 89 #region Overridden IPreprocessingData Members 90 90 91 public override T GetCell<T>(int columnIndex, int rowIndex) 92 { 93 return (T)variableValues[columnIndex][rowIndex]; 94 } 95 91 96 public override void SetCell<T>(int columnIndex, int rowIndex, T value) { 92 97 SaveSnapshot(DataPreprocessingChangedEventType.ChangeItem, columnIndex, rowIndex); 93 base.SetCell<T>(columnIndex, rowIndex, value);98 variableValues[columnIndex][rowIndex] = value; 94 99 if (!IsInTransaction) 95 100 OnChanged(DataPreprocessingChangedEventType.ChangeItem, columnIndex, rowIndex); 101 } 102 103 public override string GetCellAsString(int columnIndex, int rowIndex) 104 { 105 return variableValues[columnIndex][rowIndex].ToString(); 106 } 107 108 public override string GetVariableName(int columnIndex) 109 { 110 return variableNames[columnIndex]; 111 } 112 113 public override int GetColumnIndex(string variableName) 114 { 115 return variableNames.IndexOf(variableName); 116 } 117 118 public override bool IsType<T>(int columnIndex) 119 { 120 return variableValues[columnIndex] is List<T>; 121 } 122 123 [Obsolete("use the index based variant, is faster")] 124 public override IList<T> GetValues<T>(string variableName, bool considerSelection) 125 { 126 return GetValues<T>(GetColumnIndex(variableName), considerSelection); 127 } 128 129 public override IList<T> GetValues<T>(int columnIndex, bool considerSelection) 130 { 131 if (considerSelection) 132 { 133 var list = new List<T>(); 134 foreach (var rowIdx in selection[columnIndex]) 135 { 136 list.Add((T)variableValues[columnIndex][rowIdx]); 137 } 138 return list; 139 } 140 else 141 { 142 return (IList<T>)variableValues[columnIndex]; 143 } 96 144 } 97 145 98 146 public override void SetValues<T>(int columnIndex, IList<T> values) { 99 147 SaveSnapshot(DataPreprocessingChangedEventType.ChangeColumn, columnIndex, -1); 100 base.SetValues<T>(columnIndex, values); 148 if (IsType<T>(columnIndex)) 149 { 150 variableValues[columnIndex] = (IList)values; 151 } 152 else 153 { 154 throw new ArgumentException("The datatype of column " + columnIndex + " must be of type " + variableValues[columnIndex].GetType().Name + " but was " + typeof(T).Name); 155 } 101 156 if (!IsInTransaction) 102 157 OnChanged(DataPreprocessingChangedEventType.ChangeColumn, columnIndex, -1); … … 105 160 public override void InsertRow(int rowIndex) { 106 161 SaveSnapshot(DataPreprocessingChangedEventType.DeleteRow, -1, rowIndex); 107 base.InsertRow(rowIndex); 162 foreach (IList column in variableValues) 163 { 164 Type type = column.GetType().GetGenericArguments()[0]; 165 column.Insert(rowIndex, type.IsValueType ? Activator.CreateInstance(type) : null); 166 } 108 167 if (!IsInTransaction) 109 168 OnChanged(DataPreprocessingChangedEventType.AddRow, -1, rowIndex); … … 112 171 public override void DeleteRow(int rowIndex) { 113 172 SaveSnapshot(DataPreprocessingChangedEventType.AddRow, -1, rowIndex); 114 base.DeleteRow(rowIndex); 173 foreach (IList column in variableValues) 174 { 175 column.RemoveAt(rowIndex); 176 } 115 177 if (!IsInTransaction) 116 178 OnChanged(DataPreprocessingChangedEventType.DeleteRow, -1, rowIndex); … … 119 181 public override void InsertColumn<T>(string variableName, int columnIndex) { 120 182 SaveSnapshot(DataPreprocessingChangedEventType.DeleteColumn, columnIndex, -1); 121 base.InsertColumn<T>(variableName, columnIndex); 183 variableValues.Insert(columnIndex, new List<T>(Rows)); 184 variableNames.Insert(columnIndex, variableName); 122 185 if (!IsInTransaction) 123 186 OnChanged(DataPreprocessingChangedEventType.AddColumn, columnIndex, -1); … … 126 189 public override void DeleteColumn(int columnIndex) { 127 190 SaveSnapshot(DataPreprocessingChangedEventType.AddColumn, columnIndex, -1); 128 base.DeleteColumn(columnIndex); 191 variableValues.RemoveAt(columnIndex); 192 variableNames.RemoveAt(columnIndex); 129 193 if (!IsInTransaction) 130 194 OnChanged(DataPreprocessingChangedEventType.DeleteColumn, columnIndex, -1); 131 195 } 196 197 public override Dataset ExportToDataset() 198 { 199 IList<IList> values = new List<IList>(); 200 201 for (int i = 0; i < Columns; ++i) 202 { 203 values.Add(variableValues[i]); 204 } 205 206 var dataset = new Dataset(variableNames, values); 207 return dataset; 208 } 209 210 public override void ClearSelection() 211 { 212 Selection = new Dictionary<int, IList<int>>(); 213 } 214 215 public override event EventHandler SelectionChanged; 216 217 protected override void OnSelectionChanged() 218 { 219 var listeners = SelectionChanged; 220 if (listeners != null) listeners(this, EventArgs.Empty); 221 } 222 132 223 133 224 #endregion
Note: See TracChangeset
for help on using the changeset viewer.