Ejemplo n.º 1
0
        public void UpdateModifiedByModifiedDate(ModificationInfo entity)
        {
            var userId = _currentUserService.GetCurrentUserId();

            entity.ModifiedBy       = userId;
            entity.ModificationDate = DateTime.Now;
        }
Ejemplo n.º 2
0
        private static void CopyNuterraFiles(ModificationInfo info, string localNuterra)
        {
            string moddedNuterra = Path.Combine(info.TerraTechRoot, "Nuterra_Data");

            CopyDirectory(localNuterra, moddedNuterra, "Assets", "*");
            CopyDirectory(localNuterra, moddedNuterra, "Mods", "*.dll");
        }
Ejemplo n.º 3
0
 public Boolean RemoveUpdatingModificationInfo(ModificationInfo mInfo)
 {
     lock (_lockobject)
     {
         return(_modifications.Remove(mInfo));
     }
 }
Ejemplo n.º 4
0
        private void CreateAt(Transform parent, ModificationInfo info)
        {
            var item = Instantiate(uIModificationItemPrefab, parent);

            item.Controller = this;
            item.SetDescription(info);
            item.ToggleObject.group = toggleGroupObject;
        }
        public ProfileGameGameModeFile(IFile file) : base(file)
        {
            var data = this.ReadAllLines();
            var name = data[0].Split('|')[1];

            ModificationInfo = new ModificationInfo()
            {
                Name = name
            };
        }
Ejemplo n.º 6
0
 public void AddUpdatingModificationInfo(ModificationInfo mInfo)
 {
     lock (_lockobject)
     {
         if (!_modifications.Contains(mInfo))
         {
             _modifications.Add(mInfo);
         }
     }
 }
Ejemplo n.º 7
0
        public void SetDescription(ModificationInfo info)
        {
            ModificationDescription description = info.Description;

            IDLabel.text      = description.ID;
            NameLabel.text    = description.Name;
            AuthorLabel.text  = description.Author;
            VersionLabel.text = description.Version;
            MessageLabel.text = description.Message;
        }
Ejemplo n.º 8
0
        public static dynamic GetTSObject(ModificationInfo dynStruct)
        {
            var tsType = TSActivator.CreateInstance("Tekla.Structures.Model.History.ModificationInfo");

            tsType.Modified         = dynStruct.Modified;
            tsType.Deleted          = dynStruct.Deleted;
            tsType.ModifiedWithInfo = dynStruct.ModifiedWithInfo;

            return(tsType);
        }
Ejemplo n.º 9
0
        public static ModificationInfo FromTSObject(dynamic tsStruct)
        {
            var dynStruct = new ModificationInfo();

            dynStruct.Modified         = tsStruct.Modified;
            dynStruct.Deleted          = tsStruct.Deleted;
            dynStruct.ModifiedWithInfo = tsStruct.ModifiedWithInfo;

            return(dynStruct);
        }
Ejemplo n.º 10
0
 /// <summary>
 /// Create service model from api model
 /// </summary>
 public HistoricValueModel ToServiceModel()
 {
     return(new HistoricValueModel {
         Value = Value,
         StatusCode = StatusCode,
         SourceTimestamp = SourceTimestamp,
         SourcePicoseconds = SourcePicoseconds,
         ServerTimestamp = ServerTimestamp,
         ServerPicoseconds = ServerPicoseconds,
         ModificationInfo = ModificationInfo?.ToServiceModel()
     });
 }
Ejemplo n.º 11
0
        internal void OnSelected(UIModificationItem uiItem)
        {
            if (uiItem == null)
            {
                throw new ArgumentNullException(nameof(uiItem));
            }

            SelectTarget = uiItem;
            ModificationInfo info = uiItem.ModificationInfo;

            uIModificationInfo.SetDescription(info);
        }
Ejemplo n.º 12
0
 public static StartPollOption ToStartPollOption(this ModificationInfo mod)
 {
     return(new StartPollOption
     {
         Description = mod.Description,
         Id = mod.Id,
         Logo = mod.Logo,
         MaxLength = mod.MaxLength,
         MinLength = mod.MinLength,
         Tooltip = mod.Tooltip
     });
 }
Ejemplo n.º 13
0
        public ModificationInfo CreateFeatureModificationInfo(String currentUserName, ModifyState state, long fid, string featureClassName, string featureClassCaption)
        {
            var modifyInfo = new ModificationInfo
            {
                FID                 = fid,
                FeatureClass        = featureClassName,
                FeatureClassCaption = featureClassCaption,
                ModifyTime          = DateTime.Now,
                UserName            = currentUserName,
                State               = state
            };

            return(modifyInfo);
        }
        /// <summary>
        /// Creates a modification info record.
        /// </summary>
        private ModificationInfo GetModificationInfo(SystemContext context, HistoryUpdateType updateType)
        {
            var info = new ModificationInfo {
                UpdateType       = updateType,
                ModificationTime = DateTime.UtcNow
            };

            if (context.OperationContext?.UserIdentity != null)
            {
                info.UserName = context.OperationContext.UserIdentity.DisplayName;
            }

            return(info);
        }
Ejemplo n.º 15
0
        private void InstallerWorkerMethod()
        {
            try
            {
                Console.WriteLine();

                string localNuterra = Path.Combine(Directory.GetCurrentDirectory(), "Nuterra_Data");

                var info = new ModificationInfo();
                info.TerraTechRoot = Path.GetDirectoryName(installSettings.TerraTechRoot);
                info.NuterraData   = localNuterra;
                info.InitDefaults();

                Console.WriteLine("Modding Assembly-CSharp.dll");
                InstallProgram.PerformInstall(info);
                Console.WriteLine();

                if (!ArePathsEqual(Directory.GetCurrentDirectory(), info.TerraTechRoot))
                {
                    CopyNuterraFiles(info, localNuterra);
                }
                else
                {
                    Console.WriteLine("You are running the installer from the terratech root directory, copying files is skipped");
                }

                Console.WriteLine();
                Console.WriteLine("Install succesfull");
                Console.WriteLine("Enjoy Nuterra :3");
            }
            catch (Exception ex)
            {
                Console.WriteLine();
                Console.WriteLine(ex.StackTrace);
                Console.WriteLine();
                Console.WriteLine(ex.Message);
                Console.WriteLine("Install failed");
            }
            finally
            {
                _installerThread = null;
                Invoke(new Action(() => { UpdateFromInstallSettings(logEvents: false); }));
            }
        }
Ejemplo n.º 16
0
        /// <summary>
        /// 设置模组读取顺序(仅Unity线程调用);
        /// </summary>
        public static void SetLoadOrder(IEnumerable <string> modificationIDs)
        {
            if (modificationIDs == null)
            {
                throw new ArgumentNullException(nameof(modificationIDs));
            }

            activatedModificationInfos.Clear();

            foreach (var id in modificationIDs.Distinct())
            {
                int index = modificationInfos.FindIndex(info => info.Description.ID == id);
                if (index >= 0)
                {
                    ModificationInfo info = ModificationInfos[index];
                    activatedModificationInfos.Add(info);
                }
            }
        }
Ejemplo n.º 17
0
        /// <summary>
        /// Adds a value to the grid.
        /// </summary>
        private void AddValue(DataValue value, ModificationInfo modificationInfo)
        {
            DataRow row = m_dataset.Tables[0].NewRow();

            row[0] = m_nextId++;
            row[1] = value.SourceTimestamp.ToLocalTime().ToString("HH:mm:ss.fff");
            row[2] = value.ServerTimestamp.ToLocalTime().ToString("HH:mm:ss.fff");
            row[3] = value.WrappedValue;
            row[4] = new StatusCode(value.StatusCode.Code);
            row[5] = value.StatusCode.AggregateBits.ToString();

            if (modificationInfo != null)
            {
                row[6] = modificationInfo.UpdateType;
                row[7] = modificationInfo.ModificationTime.ToLocalTime().ToString("HH:mm:ss");
                row[8] = modificationInfo.UserName;
            }

            m_dataset.Tables[0].Rows.Add(row);
        }
Ejemplo n.º 18
0
        /// <summary>
        /// Adds a value to the grid.
        /// </summary>
        private void AddValue(DataValue value, ModificationInfo modificationInfo)
        {
            DataRow row = m_dataset.Tables[0].NewRow();

            row[0] = m_nextId++;
            row[1] = value.SourceTimestamp.ToLocalTime().ToString("HH:mm:ss.fff");
            row[2] = value.WrappedValue;
            row[3] = new StatusCode(value.StatusCode.Code);

            if (value.WrappedValue.TypeInfo != null)
            {
                row[4] = value.WrappedValue.TypeInfo.BuiltInType.ToString();
            }
            else
            {
                row[4] = String.Empty;
            }

            m_dataset.Tables[0].Rows.Add(row);
        }
Ejemplo n.º 19
0
 public ModificationInfoTable(ModificationInfo modificationInfo)
 {
     ModificationInfo = modificationInfo;
 }
Ejemplo n.º 20
0
        /// <summary>
        /// Loads the history data from a stream.
        /// </summary>
        private DataSet LoadData(ISystemContext context, DateTime baseline, StreamReader reader)
        {
            var dataset = CreateDataSet();

            var messageContext = new ServiceMessageContext();

            if (context != null)
            {
                messageContext.NamespaceUris = context.NamespaceUris;
                messageContext.ServerUris    = context.ServerUris;
                messageContext.Factory       = context.EncodeableFactory;
            }
            else
            {
                messageContext.NamespaceUris = ServiceMessageContext.GlobalContext.NamespaceUris;
                messageContext.ServerUris    = ServiceMessageContext.GlobalContext.ServerUris;
                messageContext.Factory       = ServiceMessageContext.GlobalContext.Factory;
            }

            var        sourceTimeOffset      = 0;
            var        serverTimeOffset      = 0;
            StatusCode status                = StatusCodes.Good;
            var        recordType            = 0;
            var        modificationTimeOffet = 0;
            var        modificationUser      = string.Empty;
            var        valueType             = BuiltInType.String;
            var        value = Variant.Null;
            var        annotationTimeOffet = 0;
            var        annotationUser      = string.Empty;
            var        annotationMessage   = string.Empty;
            var        lineCount           = 0;

            while (!reader.EndOfStream)
            {
                var line = reader.ReadLine();

                // check for end or error.
                if (line == null)
                {
                    break;
                }

                // ignore blank lines.
                line = line.Trim();
                lineCount++;

                if (string.IsNullOrEmpty(line))
                {
                    continue;
                }

                // ignore commented out lines.
                if (line.StartsWith("//", StringComparison.CurrentCulture))
                {
                    continue;
                }

                // get source time.
                if (!ExtractField(lineCount, ref line, out sourceTimeOffset))
                {
                    continue;
                }

                // get server time.
                if (!ExtractField(lineCount, ref line, out serverTimeOffset))
                {
                    continue;
                }

                // get status code.
                if (!ExtractField(lineCount, ref line, out status))
                {
                    continue;
                }

                // get modification type.
                if (!ExtractField(lineCount, ref line, out recordType))
                {
                    continue;
                }

                // get modification time.
                if (!ExtractField(lineCount, ref line, out modificationTimeOffet))
                {
                    continue;
                }

                // get modification user.
                if (!ExtractField(lineCount, ref line, out modificationUser))
                {
                    continue;
                }

                if (recordType >= 0)
                {
                    // get value type.
                    if (!ExtractField(lineCount, ref line, out valueType))
                    {
                        continue;
                    }

                    // get value.
                    if (!ExtractField(lineCount, ref line, messageContext, valueType, out value))
                    {
                        continue;
                    }
                }
                else
                {
                    // get annotation time.
                    if (!ExtractField(lineCount, ref line, out annotationTimeOffet))
                    {
                        continue;
                    }

                    // get annotation user.
                    if (!ExtractField(lineCount, ref line, out annotationUser))
                    {
                        continue;
                    }

                    // get annotation message.
                    if (!ExtractField(lineCount, ref line, out annotationMessage))
                    {
                        continue;
                    }
                }

                // add values to data table.
                var dataValue = new DataValue {
                    WrappedValue    = value,
                    SourceTimestamp = baseline.AddMilliseconds(sourceTimeOffset),
                    ServerTimestamp = baseline.AddMilliseconds(serverTimeOffset),
                    StatusCode      = status
                };

                DataRow row = null;

                if (recordType == 0)
                {
                    row = dataset.Tables[0].NewRow();

                    row[0] = dataValue.SourceTimestamp;
                    row[1] = dataValue.ServerTimestamp;
                    row[2] = dataValue;
                    row[3] = valueType;
                    row[4] = (value.TypeInfo != null) ? value.TypeInfo.ValueRank : ValueRanks.Any;

                    dataset.Tables[0].Rows.Add(row);
                }

                else if (recordType > 0)
                {
                    row = dataset.Tables[1].NewRow();

                    row[0] = dataValue.SourceTimestamp;
                    row[1] = dataValue.ServerTimestamp;
                    row[2] = dataValue;
                    row[3] = valueType;
                    row[4] = (value.TypeInfo != null) ? value.TypeInfo.ValueRank : ValueRanks.Any;
                    row[5] = recordType;

                    var info = new ModificationInfo {
                        UpdateType       = (HistoryUpdateType)recordType,
                        ModificationTime = baseline.AddMilliseconds(modificationTimeOffet),
                        UserName         = modificationUser
                    };
                    row[6] = info;

                    dataset.Tables[1].Rows.Add(row);
                }

                else if (recordType < 0)
                {
                    row = dataset.Tables[2].NewRow();

                    var annotation = new Annotation {
                        AnnotationTime = baseline.AddMilliseconds(annotationTimeOffet),
                        UserName       = annotationUser,
                        Message        = annotationMessage
                    };
                    dataValue.WrappedValue = new ExtensionObject(annotation);

                    row[0] = dataValue.SourceTimestamp;
                    row[1] = dataValue.ServerTimestamp;
                    row[2] = dataValue;
                    row[3] = valueType;
                    row[4] = (value.TypeInfo != null) ? value.TypeInfo.ValueRank : ValueRanks.Any;
                    row[5] = annotation;

                    dataset.Tables[2].Rows.Add(row);
                }

                dataset.AcceptChanges();
            }

            return(dataset);
        }
Ejemplo n.º 21
0
 /// <summary>
 /// 创建一个条目到激活列表;
 /// </summary>
 public void CreateAsActive(ModificationInfo info)
 {
     CreateAt(activeModificationContent, info);
 }
Ejemplo n.º 22
0
        /// <summary>
        /// Adds a value to the grid.
        /// </summary>
        private void AddValue(DataValue value, ModificationInfo modificationInfo)
        {
            DataRow row = m_dataset.Tables[0].NewRow();

            row[0] = m_nextId++;
            row[1] = value.SourceTimestamp.ToLocalTime().ToString("HH:mm:ss.fff");
            row[2] = value.WrappedValue;
            row[3] = new StatusCode(value.StatusCode.Code);

            if (value.WrappedValue.TypeInfo != null)
            {
                row[4] = value.WrappedValue.TypeInfo.BuiltInType.ToString();
            }
            else
            {
                row[4] = String.Empty;
            }

            m_dataset.Tables[0].Rows.Add(row);
        }
Ejemplo n.º 23
0
 public ModificationFile(IFile file) : base(file)
 {
     ModificationInfo = ModificationInfo.Deserialize(this.ReadAllText());
 }
Ejemplo n.º 24
0
 /// <summary>
 /// 创建一个条目到失效列表;
 /// </summary>
 /// <param name="info"></param>
 public void CreateAsIdle(ModificationInfo info)
 {
     CreateAt(idleModificationContent, info);
 }
Ejemplo n.º 25
0
 internal static ModificationInfoEntity MapFrom(ModificationInfo source) => new ModificationInfoEntity()
 {
     At = source.At
 };
Ejemplo n.º 26
0
        /// <summary>
        /// Loads the history data from a stream.
        /// </summary>
        private DataSet LoadData(ISystemContext context, DateTime baseline, StreamReader reader)
        {
            DataSet dataset = CreateDataSet();
         
            ServiceMessageContext messageContext = new ServiceMessageContext();

            if (context != null)
            {
                messageContext.NamespaceUris = context.NamespaceUris;
                messageContext.ServerUris = context.ServerUris;
                messageContext.Factory = context.EncodeableFactory;
            }
            else
            {
                messageContext.NamespaceUris = ServiceMessageContext.GlobalContext.NamespaceUris;
                messageContext.ServerUris = ServiceMessageContext.GlobalContext.ServerUris;
                messageContext.Factory = ServiceMessageContext.GlobalContext.Factory;
            }

            int sourceTimeOffset = 0;
            int serverTimeOffset = 0;
            StatusCode status = StatusCodes.Good;
            int recordType = 0;
            int modificationTimeOffet = 0;
            string modificationUser = String.Empty;
            BuiltInType valueType = BuiltInType.String;
            Variant value = Variant.Null;
            int annotationTimeOffet = 0;
            string annotationUser = String.Empty;
            string annotationMessage = String.Empty;
            int lineCount = 0;

            while (!reader.EndOfStream)
            {
                string line = reader.ReadLine();

                // check for end or error.
                if (line == null)
                {
                    break;
                }

                // ignore blank lines.
                line = line.Trim();
                lineCount++;
                
                if (String.IsNullOrEmpty(line))
                {
                    continue;
                }

                // ignore commented out lines.
                if (line.StartsWith("//"))
                {
                    continue;
                }

                // get source time.
                if (!ExtractField(lineCount, ref line, out sourceTimeOffset))
                {
                    continue;
                }

                // get server time.
                if (!ExtractField(lineCount, ref line, out serverTimeOffset))
                {
                    continue;
                }

                // get status code.
                if (!ExtractField(lineCount, ref line, out status))
                {
                    continue;
                }
                
                // get modification type.
                if (!ExtractField(lineCount, ref line, out recordType))
                {
                    continue;
                }

                // get modification time.
                if (!ExtractField(lineCount, ref line, out modificationTimeOffet))
                {
                    continue;
                }

                // get modification user.
                if (!ExtractField(lineCount, ref line, out modificationUser))
                {
                    continue;
                }

                if (recordType >= 0)
                {
                    // get value type.
                    if (!ExtractField(lineCount, ref line, out valueType))
                    {
                        continue;
                    }

                    // get value.
                    if (!ExtractField(lineCount, ref line, messageContext, valueType, out value))
                    {
                        continue;
                    }
                }
                else
                {
                    // get annotation time.
                    if (!ExtractField(lineCount, ref line, out annotationTimeOffet))
                    {
                        continue;
                    }

                    // get annotation user.
                    if (!ExtractField(lineCount, ref line, out annotationUser))
                    {
                        continue;
                    }

                    // get annotation message.
                    if (!ExtractField(lineCount, ref line, out annotationMessage))
                    {
                        continue;
                    }
                }

                // add values to data table.
                DataValue dataValue = new DataValue();
                dataValue.WrappedValue = value;
                dataValue.SourceTimestamp = baseline.AddMilliseconds(sourceTimeOffset);
                dataValue.ServerTimestamp = baseline.AddMilliseconds(serverTimeOffset);
                dataValue.StatusCode = status;

                DataRow row = null;

                if (recordType == 0)
                {
                    row = dataset.Tables[0].NewRow();

                    row[0] = dataValue.SourceTimestamp;
                    row[1] = dataValue.ServerTimestamp;
                    row[2] = dataValue;
                    row[3] = valueType;
                    row[4] = (value.TypeInfo != null) ? value.TypeInfo.ValueRank : ValueRanks.Any;

                    dataset.Tables[0].Rows.Add(row);
                }

                else if (recordType > 0)
                {
                    row = dataset.Tables[1].NewRow();

                    row[0] = dataValue.SourceTimestamp;
                    row[1] = dataValue.ServerTimestamp;
                    row[2] = dataValue;
                    row[3] = valueType;
                    row[4] = (value.TypeInfo != null) ? value.TypeInfo.ValueRank : ValueRanks.Any;
                    row[5] = recordType;

                    ModificationInfo info = new ModificationInfo();
                    info.UpdateType = (HistoryUpdateType)recordType;
                    info.ModificationTime = baseline.AddMilliseconds(modificationTimeOffet);
                    info.UserName = modificationUser;
                    row[6] = info;

                    dataset.Tables[1].Rows.Add(row);
                }

                else if (recordType < 0)
                {
                    row = dataset.Tables[2].NewRow();

                    Annotation annotation = new Annotation();
                    annotation.AnnotationTime = baseline.AddMilliseconds(annotationTimeOffet);
                    annotation.UserName = annotationUser;
                    annotation.Message = annotationMessage;
                    dataValue.WrappedValue = new ExtensionObject(annotation);

                    row[0] = dataValue.SourceTimestamp;
                    row[1] = dataValue.ServerTimestamp;
                    row[2] = dataValue;
                    row[3] = valueType;
                    row[4] = (value.TypeInfo != null) ? value.TypeInfo.ValueRank : ValueRanks.Any;
                    row[5] = annotation;

                    dataset.Tables[2].Rows.Add(row);
                }

                dataset.AcceptChanges();
            }

            return dataset;
        }
Ejemplo n.º 27
0
        /// <summary>
        /// Adds a value to the grid.
        /// </summary>
        private void AddValue(DataValue value, ModificationInfo modificationInfo)
        {            
            DataRow row = m_dataset.Tables[0].NewRow();

            m_nextId += 10000;

            row[0] = m_nextId;
            UpdateRow(row, value, modificationInfo);

            m_dataset.Tables[0].Rows.Add(row);
        }
Ejemplo n.º 28
0
 public void SetDescription(ModificationInfo modificationInfo)
 {
     ModificationInfo = modificationInfo;
     modificationNameTextObject.text = modificationInfo.Description.Name;
 }
Ejemplo n.º 29
0
        /// <summary>
        /// Updates a value in the grid.
        /// </summary>
        private void UpdateRow(DataRow row, DataValue value, ModificationInfo modificationInfo)
        {
            row[1] = value.SourceTimestamp.ToLocalTime().ToString("HH:mm:ss.fff");
            row[2] = value.ServerTimestamp.ToLocalTime().ToString("HH:mm:ss.fff");
            row[3] = value.WrappedValue;
            row[4] = new StatusCode(value.StatusCode.Code);
            row[5] = value.StatusCode.AggregateBits.ToString();

            if (modificationInfo != null)
            {
                row[6] = modificationInfo.UpdateType;
                row[7] = modificationInfo.ModificationTime.ToLocalTime().ToString("HH:mm:ss");
                row[8] = modificationInfo.UserName;
            }

            row[9] = value;
        }
Ejemplo n.º 30
0
        /// <summary>
        /// Reads the raw modified data for an item.
        /// </summary>
        private StatusCode ReadModified(HdaHistoryReadRawModifiedRequest request)
        {
            string methodName = "IOPCHDA_SyncRead.ReadModified";

            OPCHDA_TIME htStartTime = ConvertTime(request.StartTime);
            OPCHDA_TIME htEndTime = ConvertTime(request.EndTime);

            int maxReturnValues = request.MaxReturnValues;

            if (m_maxReturnValues > 0 && maxReturnValues > m_maxReturnValues)
            {
                maxReturnValues = m_maxReturnValues;
            }

            IntPtr ppItemValues;
            IntPtr ppErrors;

            try
            {
                IOPCHDA_SyncRead server = BeginComCall<IOPCHDA_SyncRead>(methodName, true);

                server.ReadModified(
                    ref htStartTime,
                    ref htEndTime,
                    maxReturnValues,
                    1,
                    new int[] { request.ServerHandle },
                    out ppItemValues,
                    out ppErrors);
            }
            catch (Exception e)
            {
                if (ComUtils.IsUnknownError(e, ResultIds.E_NOTIMPL))
                {
                    ComCallError(methodName, e);
                }

                return StatusCodes.BadNoData;
            }
            finally
            {
                EndComCall(methodName);
            }

            // check for error.
            int[] errors = ComUtils.GetInt32s(ref ppErrors, 1, true);

            if (errors[0] < 0)
            {
                return StatusCodes.BadNodeIdUnknown;
            }

            // check if operation halted.
            request.Completed = errors[0] != ResultIds.S_MOREDATA;

            // unmarshal the results.
            OPCHDA_MODIFIEDITEM result = (OPCHDA_MODIFIEDITEM)Marshal.PtrToStructure(ppItemValues, typeof(OPCHDA_MODIFIEDITEM));

            if (result.dwCount > 0)
            {
                object[] values = ComUtils.GetVARIANTs(ref result.pvDataValues, result.dwCount, true);
                int[] qualities = ComUtils.GetInt32s(ref result.pdwQualities, result.dwCount, true);
                DateTime[] timestamps = ComUtils.GetDateTimes(ref result.pftTimeStamps, result.dwCount, true);
                DateTime[] modificationTimes = ComUtils.GetDateTimes(ref result.pftModificationTime, result.dwCount, true);
                string[] userNames = ComUtils.GetUnicodeStrings(ref result.szUser, result.dwCount, true);
                int[] editTypes = ComUtils.GetInt32s(ref result.pEditType, result.dwCount, true);

                request.Results = new DataValueCollection(result.dwCount);
                request.ModificationInfos = new ModificationInfoCollection(result.dwCount);

                for (int ii = 0; ii < result.dwCount; ii++)
                {
                    DataValue value = new DataValue();
                    value.Value = ComUtils.ProcessComValue(values[ii]);
                    value.StatusCode = ComUtils.GetHdaQualityCode(Utils.ToUInt32(qualities[ii]));
                    value.SourceTimestamp = timestamps[ii];
                    request.Results.Add(value);

                    ModificationInfo modification = new ModificationInfo();
                    modification.ModificationTime = modificationTimes[ii];
                    modification.UpdateType = (HistoryUpdateType)editTypes[ii];
                    modification.UserName = userNames[ii];
                    request.ModificationInfos.Add(modification);
                }

                if (!request.Completed)
                {
                    request.StartTime = request.Results[request.Results.Count-1].SourceTimestamp;
                }
            }

            Marshal.FreeCoTaskMem(ppItemValues);

            if (result.dwCount == 0)
            {
                return StatusCodes.GoodNoData;
            }

            if (maxReturnValues > 0 && !request.Completed)
            {
                return StatusCodes.GoodMoreData;
            }

            return StatusCodes.Good;
        }
Ejemplo n.º 31
0
        /// <summary>
        /// Adds a value to the grid.
        /// </summary>
        private void AddValue(DataValue value, ModificationInfo modificationInfo)
        {            
            DataRow row = m_dataset.Tables[0].NewRow();

            row[0] = m_nextId++;
            row[1] = value.SourceTimestamp.ToLocalTime().ToString("HH:mm:ss.fff");
            row[2] = value.ServerTimestamp.ToLocalTime().ToString("HH:mm:ss.fff");
            row[3] = value.WrappedValue;
            row[4] = new StatusCode(value.StatusCode.Code);
            row[5] = value.StatusCode.AggregateBits.ToString();

            if (modificationInfo != null)
            {
                row[6] = modificationInfo.UpdateType;
                row[7] = modificationInfo.ModificationTime.ToLocalTime().ToString("HH:mm:ss");
                row[8] = modificationInfo.UserName;
            }

            m_dataset.Tables[0].Rows.Add(row);
        }
Ejemplo n.º 32
0
        /// <summary>
        /// Creates a modification info record.
        /// </summary>
        private ModificationInfo GetModificationInfo(SystemContext context, HistoryUpdateType updateType)
        {
            ModificationInfo info = new ModificationInfo();
            info.UpdateType = updateType;
            info.ModificationTime = DateTime.UtcNow;

            if (context.OperationContext != null && context.OperationContext.UserIdentity != null)
            {
                info.UserName = context.OperationContext.UserIdentity.DisplayName;
            }

            return info;
        }
 public bool AddFeatureModifyLog(ModificationInfo modifyInfo)
 {
     _repositoryModificationInfo.Add(modifyInfo);
     Console.WriteLine("{0}, {1}, {2}, {3}", modifyInfo.UserName, modifyInfo.State, modifyInfo.FeatureClass, modifyInfo.FID);
     return(_repositoryModificationInfo.SaveChanges() > 0);
 }
Ejemplo n.º 34
0
 internal static ModificationInfoResponse MapFrom(ModificationInfo source) => new ModificationInfoResponse()
 {
     At = source.At
 };