Example #1
0
    public static T GetValueOrDefault <T>(this DataRow dataRow, string name)
    {
        ArgumentNullException.ThrowIfNull(dataRow, nameof(dataRow));
        var value = dataRow[name];

        return(ValueReader.GetValueOrDefault <T>(value));
    }
        public override bool Read()
        {
            bool read;

            if (_command.Cancelled)
            {
                read = false;
            }
            else
            {
                if (_first)
                {
                    _first = false;
                    var parameters      = _command.Parameters;
                    var path            = ValueReader.GetValueOrDefault <string>(parameters["path"].Value);
                    var recursionString = ValueReader.GetValueOrDefault <string>(parameters["recursion"].Value);
                    var recursion       = recursionString != null
                        ? Enum <RecursionType> .Parse(recursionString)
                        : RecursionType.Full;

                    var workspace = ValueReader.GetValueOrDefault <string>(parameters["workspace"].Value);
                    var user      = ValueReader.GetValueOrDefault <string>(parameters["user"].Value);
                    _pendingSets = _command.Connection.VersionControlServer.QueryPendingSets(new[] { path }, recursion, workspace, user);
                    _enumerator  = AsEnumerable(_pendingSets).GetEnumerator();
                }

                var moveNext = _enumerator.MoveNext();

                if (moveNext)
                {
                    var pair          = _enumerator.Current;
                    var pendingSet    = _pendingSets[pair.Item1];
                    var pendingChange = pendingSet.PendingChanges[pair.Item2];

                    var values = new object[]
                    {
                        pendingSet.Computer,
                        pendingSet.Name,
                        pendingSet.OwnerName,
                        pendingSet.Type.ToString(),
                        pendingChange.ChangeType.ToString(),
                        pendingChange.CreationDate,
                        pendingChange.FileName,
                        pendingChange.ItemType.ToString(),
                        pendingChange.LockLevelName,
                        pendingChange.ServerItem,
                        pendingChange.LocalItem
                    };

                    Values = values;
                    read   = true;
                }
                else
                {
                    read = false;
                }
            }

            return(read);
        }
Example #3
0
    public static T GetValueOrDefault <T>(this DataRow dataRow, int columnIndex)
    {
        ArgumentNullException.ThrowIfNull(dataRow, nameof(dataRow));
        var value = dataRow[columnIndex];

        return(ValueReader.GetValueOrDefault <T>(value));
    }
    public static T GetValueOrDefault <T>(this DataRow dataRow, string name)
    {
        Assert.IsNotNull(dataRow, nameof(dataRow));
        var value = dataRow[name];

        return(ValueReader.GetValueOrDefault <T>(value));
    }
    public static T GetValueOrDefault <T>(this DataRow dataRow, int columnIndex)
    {
        Assert.IsNotNull(dataRow, nameof(dataRow));
        var value = dataRow[columnIndex];

        return(ValueReader.GetValueOrDefault <T>(value));
    }
Example #6
0
    public static T ExecuteScalarValueOrDefault <T>(this IDbCommand command)
    {
        Assert.IsNotNull(command);

        var scalar = command.ExecuteScalar();

        return(ValueReader.GetValueOrDefault <T>(scalar));
    }
Example #7
0
    public static T ExecuteScalarValueOrDefault <T>(this IDbCommand command)
    {
        ArgumentNullException.ThrowIfNull(command);

        var scalar = command.ExecuteScalar();

        return(ValueReader.GetValueOrDefault <T>(scalar));
    }
        public override bool Read()
        {
            bool read;

            if (_first)
            {
                _first = false;
                var parameters = _command.Parameters;
                var workspace  = ValueReader.GetValueOrDefault <string>(parameters["workspace"].Value);
                var owner      = ValueReader.GetValueOrDefault <string>(parameters["owner"].Value);
                var computer   = ValueReader.GetValueOrDefault <string>(parameters["computer"].Value);
                _workspaces = _command.Connection.VersionControlServer.QueryWorkspaces(workspace, owner, computer);
                _enumerator = AsEnumerable(_workspaces).GetEnumerator();
            }

            var moveNext = _enumerator.MoveNext();

            if (moveNext)
            {
                var pair        = _enumerator.Current;
                var workspace   = _workspaces[pair.Item1];
                var folderIndex = pair.Item2;

                var values = new object[]
                {
                    workspace.Computer,
                    workspace.OwnerName,
                    workspace.Name,
                    workspace.Comment,
                    workspace.DisplayName,
                    null,
                    null,
                    null,
                    null
                };

                if (folderIndex >= 0)
                {
                    var folder = workspace.Folders[folderIndex];
                    values[5] = folder.Type.ToString();
                    values[6] = folder.IsCloaked;
                    values[7] = folder.ServerItem;
                    values[8] = folder.LocalItem;
                }

                Values = values;
                read   = true;
                _index++;
            }
            else
            {
                read = false;
            }

            return(read);
        }
        public override bool Read()
        {
            bool read;

            if (_command.Cancelled)
            {
                read = false;
            }
            else
            {
                if (_first)
                {
                    _first = false;
                    var           parameters      = _command.Parameters;
                    var           path            = parameters["path"].GetValueOrDefault <string>();
                    var           recursionString = ValueReader.GetValueOrDefault <string>(parameters["recursion"].Value);
                    RecursionType recursion;

                    if (recursionString != null)
                    {
                        recursion = (RecursionType)Enum.Parse(typeof(RecursionType), recursionString);
                    }
                    else
                    {
                        recursion = RecursionType.OneLevel;
                    }

                    var itemSet = _command.Connection.VersionControlServer.GetItems(path, recursion);
                    var folders = new List <Item>();
                    var files   = new List <Item>();

                    foreach (var item in itemSet.Items.Skip(1))
                    {
                        switch (item.ItemType)
                        {
                        case ItemType.File:
                            files.Add(item);
                            break;

                        case ItemType.Folder:
                            folders.Add(item);
                            break;

                        default:
                            throw new NotImplementedException();
                        }
                    }

                    _items = folders;
                    _items.AddRange(files);
                }

                if (_index < _items.Count)
                {
                    var    item         = _items[_index];
                    var    itemEncoding = item.Encoding;
                    string encodingString;

                    if (itemEncoding >= 0)
                    {
                        var encoding = Encoding.GetEncoding(item.Encoding);
                        encodingString = encoding.EncodingName;
                    }
                    else
                    {
                        encodingString = null;
                    }

                    var values = new object[]
                    {
                        item.ServerItem,
                        item.ChangesetId,
                        item.CheckinDate,
                        item.ContentLength,
                        encodingString,
                        item.ItemType.ToString()
                    };

                    Values = values;
                    read   = true;
                    _index++;
                }
                else
                {
                    read = false;
                }
            }

            return(read);
        }
Example #10
0
 public static T GetValueOrDefault <T>(this IDataParameter parameter) => ValueReader.GetValueOrDefault <T>(parameter.Value);
        public override bool Read()
        {
            bool read;

            if (_command.Cancelled)
            {
                read = false;
            }
            else
            {
                if (_first)
                {
                    _first = false;
                    var serverPath = (string)_command.Parameters["serverPath"].Value;
                    _item      = _command.Connection.VersionControlServer.GetItem(serverPath);
                    _localPath = ValueReader.GetValueOrDefault <string>(_command.Parameters["localPath"].Value);

                    if (_localPath == null)
                    {
                        _localPath = Path.GetTempPath();
                        _localPath = Path.Combine(_localPath, DateTime.Now.ToString("yyyyMMdd HHmmss.fff"));

                        switch (_item.ItemType)
                        {
                        case ItemType.File:
                        case ItemType.Folder:
                            var name = VersionControlPath.GetFileName(_item.ServerItem);
                            _localPath = Path.Combine(_localPath, name);
                            break;

                        default:
                            throw new NotImplementedException();
                        }
                    }

                    var queryForm = (QueryForm)DataCommanderApplication.Instance.MainForm.ActiveMdiChild;
                    queryForm.AddInfoMessage(InfoMessageFactory.Create(InfoMessageSeverity.Information, null, $"localPath: {_localPath}"));

                    if (!VersionControlPath.IsValidPath(serverPath))
                    {
                        throw new ArgumentException($"The parameter serverPath '{serverPath}' is invalid.");
                    }

                    _queue.Enqueue(_item);
                }

                if (_queue.Count > 0)
                {
                    var current = _queue.Dequeue();
                    var values  = new object[4];
                    values[0] = current.ServerItem;
                    values[1] = current.ItemType;
                    values[2] = current.CheckinDate;
                    values[3] = current.ContentLength;
                    Values    = values;
                    var    name = VersionControlPath.GetFileName(current.ServerItem);
                    string path;

                    if (_item.ServerItem.Length + 1 <= current.ServerItem.Length)
                    {
                        var secondPath = current.ServerItem.Substring(_item.ServerItem.Length + 1);
                        secondPath = secondPath.Replace(VersionControlPath.Separator, Path.DirectorySeparatorChar);
                        path       = Path.Combine(_localPath, secondPath);
                    }
                    else
                    {
                        path = _localPath;
                    }

                    switch (current.ItemType)
                    {
                    case ItemType.File:
                        Log.Write(LogLevel.Trace, "Downloading {0}...", current.ServerItem);
                        current.DownloadFile(path);
                        var checkingDate = current.CheckinDate;
                        var fileInfo     = new FileInfo(path);
                        fileInfo.LastWriteTime = checkingDate;
                        fileInfo.Attributes    = FileAttributes.ReadOnly;
                        break;

                    case ItemType.Folder:
                        if (!Directory.Exists(path))
                        {
                            var directoryInfo = Directory.CreateDirectory(path);

                            if (!directoryInfo.Exists)
                            {
                                throw new ArgumentException($"The directory '{path}' does not exist.");
                            }
                        }

                        var itemSet = current.VersionControlServer.GetItems(current.ServerItem, RecursionType.OneLevel);

                        foreach (var childItem in itemSet.Items.Skip(1))
                        {
                            _queue.Enqueue(childItem);
                        }

                        break;

                    default:
                        throw new NotImplementedException();
                    }

                    read = true;
                }
                else
                {
                    read = false;
                }
            }

            return(read);
        }
        //private static int Count( IEnumerable enumerable )
        //{
        //    Assert.IsNotNull( enumerable, "enumerable" );
        //    IEnumerator enumerator = enumerable.GetEnumerator();
        //    int count = 0;

        //    while (enumerator.MoveNext())
        //    {
        //        count++;
        //    }

        //    return count;
        //}

        public override bool Read()
        {
            bool read;

            if (_first)
            {
                _first = false;
                var parameters = _command.Parameters;
                _path = (string)parameters["path"].Value;
                var         version     = VersionSpec.Latest;
                var         deletionId  = 0;
                var         recursion   = RecursionType.None;
                var         user        = ValueReader.GetValueOrDefault <string>(parameters["user"].Value);
                VersionSpec versionFrom = null;
                VersionSpec versionTo   = null;
                var         parameter   = parameters["maxCount"];

                var maxCount = ValueReader.GetValueOrDefault <int>(parameter.Value);

                if (maxCount == 0)
                {
                    maxCount = (int)parameter.DefaultValue;
                }

                const bool includeChanges = true;
                var        slotMode       = ValueReader.GetValueOrDefault <bool>(parameters["slotMode"].Value);
                _localPath = ValueReader.GetValueOrDefault <string>(parameters["localPath"].Value);

                if (string.IsNullOrEmpty(_localPath))
                {
                    _localPath  = Path.GetTempPath();
                    _localPath += Path.DirectorySeparatorChar;
                    _localPath += $"getversions [{DateTime.Now.ToString("yyyy-MM-dd HH.mm.ss.fff")}]";
                    Directory.CreateDirectory(_localPath);
                }

                var changesets = _command.Connection.VersionControlServer.QueryHistory(_path, version, deletionId, recursion, user, versionFrom, versionTo, maxCount, includeChanges, slotMode);
                _enumerator = AsEnumerable(changesets).GetEnumerator();
            }

            var moveNext = _enumerator.MoveNext();

            if (moveNext)
            {
                var pair      = _enumerator.Current;
                var changeset = pair.Item1;

                var values = new object[]
                {
                    changeset.ChangesetId,
                    changeset.Committer,
                    changeset.CreationDate,
                    changeset.Comment,
                    null,
                    null
                };

                var changeIndex = pair.Item2;

                if (changeIndex >= 0)
                {
                    var change = changeset.Changes[changeIndex];
                    values[4] = change.ChangeType;
                    values[5] = change.Item.ServerItem;
                }

                Values = values;
                var changesetId = changeset.ChangesetId;
                var changeType  = string.Empty;

                for (var i = 0; i < changeset.Changes.Length; i++)
                {
                    var change = changeset.Changes[i];
                    Trace.WriteLine(change.ChangeType);
                    Trace.WriteLine(change.Item.ServerItem);
                    _path = change.Item.ServerItem;

                    if (i > 0)
                    {
                        changeType += ',';
                    }

                    changeType += change.ChangeType;
                }

                var creationDate             = changeset.CreationDate;
                var deletionId               = 0;
                var versionSpec              = new ChangesetVersionSpec(changesetId);
                var fileName                 = VersionControlPath.GetFileName(_path);
                var fileNameWithoutExtension = Path.GetFileNameWithoutExtension(fileName);
                var extension                = VersionControlPath.GetExtension(_path);
                var localFileName            = _localPath + Path.DirectorySeparatorChar + changesetId.ToString().PadLeft(5, '0') + ';' + changeType + ';' + changeset.Committer.Replace('\\', ' ') + extension;
                _command.Connection.VersionControlServer.DownloadFile(_path, deletionId, versionSpec, localFileName);
                File.SetLastWriteTime(localFileName, creationDate);
                File.SetAttributes(localFileName, FileAttributes.ReadOnly);

                read = true;
            }
            else
            {
                read = false;
            }

            return(read);
        }
        public override bool Read()
        {
            bool read;

            if (_first)
            {
                _first = false;
                var           parameters = _command.Parameters;
                var           path       = (string)parameters["path"].Value;
                var           version    = VersionSpec.Latest;
                const int     deletionId = 0;
                var           parameter  = parameters.FirstOrDefault(p => p.ParameterName == "recursion");
                RecursionType recursion;
                if (parameter != null && parameter.Value != null && parameter.Value != DBNull.Value)
                {
                    recursion = Enum <RecursionType> .Parse((string)parameter.Value);
                }
                else
                {
                    recursion = RecursionType.Full;
                }

                parameter = parameters.FirstOrDefault(p => p.ParameterName == "user");
                var user = parameter != null?ValueReader.GetValueOrDefault <string>(parameter.Value) : null;

                VersionSpec versionFrom = null;
                VersionSpec versionTo   = null;
                parameter = parameters.FirstOrDefault(p => p.ParameterName == "maxCount");
                int maxCount;
                if (parameter != null)
                {
                    maxCount = ValueReader.GetValueOrDefault <int>(parameter.Value);
                    if (maxCount == 0)
                    {
                        maxCount = (int)parameter.DefaultValue;
                    }
                }
                else
                {
                    maxCount = (int)TfsDataReaderFactory.Dictionary[_command.CommandText].Parameters["maxCount"].DefaultValue;
                }

                parameter = parameters.FirstOrDefault(p => p.ParameterName == "includeChanges");
                var includeChanges = parameter != null?ValueReader.GetValueOrDefault <bool>(parameters["includeChanges"].Value) : false;

                var slotMode   = ValueReader.GetValueOrDefault <bool>(parameters["slotMode"].Value);
                var changesets = _command.Connection.VersionControlServer.QueryHistory(path, version, deletionId, recursion, user, versionFrom, versionTo, maxCount, includeChanges,
                                                                                       slotMode);
                _enumerator = AsEnumerable(changesets).GetEnumerator();
            }

            var moveNext = _enumerator.MoveNext();

            if (moveNext)
            {
                var pair      = _enumerator.Current;
                var changeset = pair.Item1;

                var values = new object[]
                {
                    changeset.ChangesetId,
                    changeset.Committer,
                    changeset.CreationDate,
                    changeset.Comment,
                    null,
                    null
                };

                var changeIndex = pair.Item2;

                if (changeIndex >= 0)
                {
                    var change = changeset.Changes[changeIndex];
                    values[4] = change.ChangeType;
                    values[5] = change.Item.ServerItem;
                }

                Values = values;
                _recordCount++;
                read = true;
            }
            else
            {
                read = false;
            }

            return(read);
        }
        public override bool Read()
        {
            bool read;

            if (_first)
            {
                _first = false;
                var           parameters = _command.Parameters;
                var           path       = (string)parameters["path"].Value;
                RecursionType recursion;
                var           parameter = parameters.FirstOrDefault(p => p.ParameterName == "recursion");
                if (parameter != null)
                {
                    var recursionString = ValueReader.GetValueOrDefault <string>(parameter.Value);
                    recursion = Enum <RecursionType> .Parse(recursionString);
                }
                else
                {
                    recursion = RecursionType.Full;
                }

                var           versionControlServer = _command.Connection.VersionControlServer;
                var           workspaces           = versionControlServer.QueryWorkspaces(null, null, Environment.MachineName);
                Workspace     workspace            = null;
                WorkingFolder workingFolder        = null;

                foreach (var currentWorkspace in workspaces)
                {
                    workingFolder = currentWorkspace.TryGetWorkingFolderForServerItem(path);

                    if (workingFolder != null)
                    {
                        workspace = currentWorkspace;
                        var itemSpec      = new ItemSpec(path, recursion);
                        var extendedItems = currentWorkspace.GetExtendedItems(new[] { itemSpec }, DeletedState.Any, ItemType.Any);
                        _items = extendedItems[0];
                    }
                }

                if (workingFolder == null)
                {
                    throw new Exception($"Workspace not found for '{path}'");
                }

                string name;

                if (workspace != null)
                {
                    name = workspace.Name;
                }
                else
                {
                    name = "(not found)";
                }

                var queryForm = (QueryForm)DataCommanderApplication.Instance.MainForm.ActiveMdiChild;
                queryForm.AddInfoMessage(new InfoMessage(LocalTime.Default.Now, InfoMessageSeverity.Information, null,
                                                         $"\r\nworkspace.Name: {name}\r\nworkingFolder.LocalItem: {workingFolder.LocalItem}"));
            }

            if (_items != null && _index < _items.Length)
            {
                var item = _items[_index];

                var values = new object[]
                {
                    item.SourceServerItem,
                    item.ChangeType.ToString(),
                    item.LockOwner,
                    item.LockStatus.ToString(),
                    item.IsLatest,
                    item.HasOtherPendingChange,
                    item.VersionLatest,
                    item.VersionLocal
                };

                Values = values;
                read   = true;
                _index++;
            }
            else
            {
                read = false;
            }

            return(read);
        }