Changeset 15081 for stable/HeuristicLab.Services.OKB/3.3/RunCreation
- Timestamp:
- 06/28/17 22:10:45 (7 years ago)
- Location:
- stable
- Files:
-
- 4 edited
- 2 copied
Legend:
- Unmodified
- Added
- Removed
-
stable
- Property svn:mergeinfo changed
/trunk/sources merged: 13501,13503,13511,13513,13534-13535,13540,13550,13552,13593,13666
- Property svn:mergeinfo changed
-
stable/HeuristicLab.Services.OKB/3.3/RunCreation/Convert.cs
r14186 r15081 68 68 entity.Values.Add(Convert.ToEntity(value, entity, DA.ValueNameCategory.Result, okb, binCache)); 69 69 return entity; 70 } 71 72 public static DT.Value ToDto(DA.CharacteristicValue source) { 73 if (source == null) return null; 74 if (source.Characteristic.Type == DA.CharacteristicType.Bool) { 75 return new DT.BoolValue { Name = source.Characteristic.Name, DataType = Convert.ToDto(source.DataType), Value = source.BoolValue.GetValueOrDefault() }; 76 } else if (source.Characteristic.Type == DA.CharacteristicType.Int) { 77 return new DT.IntValue { Name = source.Characteristic.Name, DataType = Convert.ToDto(source.DataType), Value = source.IntValue.GetValueOrDefault() }; 78 } else if (source.Characteristic.Type == DA.CharacteristicType.TimeSpan) { 79 return new DT.TimeSpanValue { Name = source.Characteristic.Name, DataType = Convert.ToDto(source.DataType), Value = source.LongValue.GetValueOrDefault() }; 80 } else if (source.Characteristic.Type == DA.CharacteristicType.Long) { 81 return new DT.LongValue { Name = source.Characteristic.Name, DataType = Convert.ToDto(source.DataType), Value = source.LongValue.GetValueOrDefault() }; 82 } else if (source.Characteristic.Type == DA.CharacteristicType.Float) { 83 return new DT.FloatValue { Name = source.Characteristic.Name, DataType = Convert.ToDto(source.DataType), Value = source.FloatValue.GetValueOrDefault() }; 84 } else if (source.Characteristic.Type == DA.CharacteristicType.Double) { 85 return new DT.DoubleValue { Name = source.Characteristic.Name, DataType = Convert.ToDto(source.DataType), Value = source.DoubleValue.GetValueOrDefault() }; 86 } else if (source.Characteristic.Type == DA.CharacteristicType.Percent) { 87 return new DT.PercentValue { Name = source.Characteristic.Name, DataType = Convert.ToDto(source.DataType), Value = source.DoubleValue.GetValueOrDefault() }; 88 } else if (source.Characteristic.Type == DA.CharacteristicType.String) { 89 return new DT.StringValue { Name = source.Characteristic.Name, DataType = Convert.ToDto(source.DataType), Value = source.StringValue }; 90 } else { 91 throw new ArgumentException("Unknown characteristic type.", "source"); 92 } 93 } 94 95 public static DA.CharacteristicValue ToEntity(DT.Value source, DA.OKBDataContext okb, DA.Problem problem, DA.CharacteristicType type) { 96 if (okb == null || problem == null || source == null || string.IsNullOrEmpty(source.Name)) throw new ArgumentNullException(); 97 var entity = new DA.CharacteristicValue(); 98 entity.Problem = problem; 99 entity.DataType = Convert.ToEntity(source.DataType, okb); 100 entity.Characteristic = Convert.ToEntity(source.Name, type, okb); 101 if (source is DT.BoolValue) { 102 entity.BoolValue = ((DT.BoolValue)source).Value; 103 } else if (source is DT.IntValue) { 104 entity.IntValue = ((DT.IntValue)source).Value; 105 } else if (source is DT.TimeSpanValue) { 106 entity.LongValue = ((DT.TimeSpanValue)source).Value; 107 } else if (source is DT.LongValue) { 108 entity.LongValue = ((DT.LongValue)source).Value; 109 } else if (source is DT.FloatValue) { 110 entity.FloatValue = ((DT.FloatValue)source).Value; 111 } else if (source is DT.DoubleValue) { 112 entity.DoubleValue = ((DT.DoubleValue)source).Value; 113 } else if (source is DT.PercentValue) { 114 entity.DoubleValue = ((DT.PercentValue)source).Value; 115 } else if (source is DT.StringValue) { 116 entity.StringValue = ((DT.StringValue)source).Value; 117 } else { 118 throw new ArgumentException("Unknown characteristic type.", "source"); 119 } 120 return entity; 121 } 122 123 private static DA.Characteristic ToEntity(string name, DA.CharacteristicType type, DA.OKBDataContext okb) { 124 if (string.IsNullOrEmpty(name)) return null; 125 var entity = okb.Characteristics.FirstOrDefault(x => (x.Name == name) && (x.Type == type)); 126 return entity ?? new DA.Characteristic() { Id = 0, Name = name, Type = type }; 70 127 } 71 128 -
stable/HeuristicLab.Services.OKB/3.3/RunCreation/IRunCreationService.cs
r14186 r15081 45 45 [OperationContract] 46 46 void AddRun(Run run); 47 48 [OperationContract] 49 IEnumerable<Value> GetCharacteristicValues(long problemId); 50 51 [OperationContract] 52 [FaultContract(typeof(MissingProblem))] 53 [FaultContract(typeof(UnknownCharacteristicType))] 54 void SetCharacteristicValue(long problemId, Value value); 55 56 [OperationContract] 57 [FaultContract(typeof(MissingProblem))] 58 [FaultContract(typeof(UnknownCharacteristicType))] 59 void SetCharacteristicValues(long problemId, Value[] values); 47 60 } 48 61 } -
stable/HeuristicLab.Services.OKB/3.3/RunCreation/RunCreationService.cs
r14186 r15081 20 20 #endregion 21 21 22 using System; 22 23 using System.Collections.Generic; 23 24 using System.Data.Linq; … … 135 136 } 136 137 } 138 139 public IEnumerable<DataTransfer.Value> GetCharacteristicValues(long problemId) { 140 using (OKBDataContext okb = new OKBDataContext()) { 141 var prob = okb.Problems.SingleOrDefault(x => x.Id == problemId); 142 if (prob == null) return Enumerable.Empty<DataTransfer.Value>(); 143 return prob.CharacteristicValues.Select(Convert.ToDto).ToArray(); 144 } 145 } 146 147 public void SetCharacteristicValue(long problemId, DataTransfer.Value value) { 148 roleVerifier.AuthenticateForAnyRole(OKBRoles.OKBAdministrator, OKBRoles.OKBUser); 149 150 using (OKBDataContext okb = new OKBDataContext()) { 151 var problem = okb.Problems.SingleOrDefault(x => x.Id == problemId); 152 if (problem == null) throw new FaultException<MissingProblem>(new MissingProblem("Problem with id {0} cannot be found", problemId)); 153 154 DoSetCharacteristicValue(okb, problem, value); 155 okb.SubmitChanges(); 156 } 157 } 158 159 public void SetCharacteristicValues(long problemId, DataTransfer.Value[] values) { 160 roleVerifier.AuthenticateForAnyRole(OKBRoles.OKBAdministrator, OKBRoles.OKBUser); 161 162 using (OKBDataContext okb = new OKBDataContext()) { 163 var problem = okb.Problems.SingleOrDefault(x => x.Id == problemId); 164 if (problem == null) throw new FaultException<MissingProblem>(new MissingProblem("Problem with id {0} cannot be found", problemId)); 165 166 foreach (var v in values) { 167 DoSetCharacteristicValue(okb, problem, v); 168 } 169 okb.SubmitChanges(); 170 } 171 } 172 173 private void DoSetCharacteristicValue(OKBDataContext okb, Problem problem, DataTransfer.Value value) { 174 CharacteristicType characteristicType; 175 try { 176 characteristicType = GetCharacteristicType(value); 177 } catch (ArgumentException ex) { 178 throw new FaultException<UnknownCharacteristicType>(new UnknownCharacteristicType(ex.Message)); 179 } 180 181 var entity = problem.CharacteristicValues.SingleOrDefault(x => x.Characteristic.Name == value.Name && x.Characteristic.Type == characteristicType); 182 if (entity != null) { 183 // Update 184 switch (characteristicType) { 185 case CharacteristicType.Bool: entity.BoolValue = ((DataTransfer.BoolValue)value).Value; break; 186 case CharacteristicType.Int: entity.IntValue = ((DataTransfer.IntValue)value).Value; break; 187 case CharacteristicType.Long: entity.LongValue = ((DataTransfer.LongValue)value).Value; break; 188 case CharacteristicType.Float: entity.FloatValue = ((DataTransfer.FloatValue)value).Value; break; 189 case CharacteristicType.Double: entity.DoubleValue = ((DataTransfer.DoubleValue)value).Value; break; 190 case CharacteristicType.Percent: entity.DoubleValue = ((DataTransfer.PercentValue)value).Value; break; 191 case CharacteristicType.String: entity.StringValue = ((DataTransfer.StringValue)value).Value; break; 192 case CharacteristicType.TimeSpan: entity.LongValue = ((DataTransfer.TimeSpanValue)value).Value; break; 193 } 194 } else { 195 // Insert 196 entity = Convert.ToEntity(value, okb, problem, characteristicType); 197 okb.CharacteristicValues.InsertOnSubmit(entity); 198 } 199 200 } 201 202 private CharacteristicType GetCharacteristicType(DataTransfer.Value source) { 203 if (source is DataTransfer.BoolValue) { 204 return CharacteristicType.Bool; 205 } else if (source is DataTransfer.IntValue) { 206 return CharacteristicType.Int; 207 } else if (source is DataTransfer.TimeSpanValue) { 208 return CharacteristicType.TimeSpan; 209 } else if (source is DataTransfer.LongValue) { 210 return CharacteristicType.Long; 211 } else if (source is DataTransfer.FloatValue) { 212 return CharacteristicType.Float; 213 } else if (source is DataTransfer.DoubleValue) { 214 return CharacteristicType.Double; 215 } else if (source is DataTransfer.PercentValue) { 216 return CharacteristicType.Percent; 217 } else if (source is DataTransfer.StringValue) { 218 return CharacteristicType.String; 219 } else { 220 throw new ArgumentException("Unknown characteristic type.", "source"); 221 } 222 } 137 223 } 138 224 } -
stable/HeuristicLab.Services.OKB/3.3/RunCreation/UnknownCharacteristicType.cs
r13501 r15081 1 using System.Runtime.Serialization; 1 #region License Information 2 /* HeuristicLab 3 * Copyright (C) 2002-2016 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 * 5 * This file is part of HeuristicLab. 6 * 7 * HeuristicLab is free software: you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation, either version 3 of the License, or 10 * (at your option) any later version. 11 * 12 * HeuristicLab is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>. 19 */ 20 #endregion 21 22 using System.Runtime.Serialization; 2 23 3 24 namespace HeuristicLab.Services.OKB.RunCreation {
Note: See TracChangeset
for help on using the changeset viewer.