public ConnectionGroupInfo GetGroup(long groupId)
        {
            ConnectionGroupRow groupRow = this._groupManager
                                          .GetGroupById(groupId);

            if (groupRow == null)
            {
                return(null);
            }

            ConnectionGroupInfo group = new ConnectionGroupInfo
            {
                Identity           = groupId,
                Name               = groupRow.Name,
                IsDirectConnection = groupRow.IsDirect
            };

            group.Connections = GetGroupInstances(groupId);

            return(group);
        }
        public ConnectionGroupRow GetGroupByName(string name)
        {
            string clause = string.Join(" AND ", Lists.Of(
                                            ConnectionGroupDirectory.NameFn.AsSqlClausePair(),
                                            ConnectionGroupDirectory.IsDirectConnectionFn.AsSqlClausePair()
                                            ));

            List <SQLiteParameter> parameters = Lists.Of(
                new SQLiteParameter(ConnectionGroupDirectory.NameFn, name),
                new SQLiteParameter(ConnectionGroupDirectory.IsDirectConnectionFn, true)
                );

            ConnectionGroupRow row =
                this._storage.ConnectionGroupDirectory.GetRows(
                    clause,
                    parameters,
                    1
                    )
                .Select(RowConverter.Convert <ConnectionGroupRow>)
                .FirstOrDefault();

            return(row);
        }
        public void UpdateGroupInstances(ConnectionGroupInfo group, string protocolType)
        {
            ConnectionGroupRow savedGroupRow = this._groupManager.GetGroupByName(group.Name);

            if (savedGroupRow == null)
            {
                return;
            }

            long id = savedGroupRow.Identity;

            List <ServerInstanceRow> savedRows = this._instanceManager
                                                 .GetAllGroupInstances(id, protocolType);

            List <InstanceInfo> newInstances = group.Connections;

            foreach (ServerInstanceRow savedRow in savedRows)
            {
                InstanceInfo savedInstance = CreateFromRow(savedRow);
                bool         exist         = newInstances.Any(Predicates.MatchesTo(savedInstance));

                if (savedRow.IsDeleted)
                {
                    if (exist)
                    {
                        this._instanceManager.RestoreInstance(savedRow);
                    }
                }
                else
                {
                    if (!exist)
                    {
                        this._instanceManager.DeleteInstance(savedRow);
                    }
                }
            }
        }