コード例 #1
0
        public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
        {
            CollectionEntry entry = (CollectionEntry)PropertyUtility.GetTargetObjectOfProperty(property);

            SerializedProperty    idProperty = property.FindPropertyRelative("field");
            CollectionInformation info       = EnumerableCollection.GetReflectionInformation(entry.IndexType);

            string[] names = info.fieldNames;

            int currentIndex = -1;

            for (int i = 0; i < names.Length; i++)
            {
                if (names[i] == idProperty.stringValue)
                {
                    currentIndex = i;
                    break;
                }
            }
            if (currentIndex == -1)
            {
                currentIndex           = 0;
                idProperty.stringValue = names[EditorGUI.Popup(position, label.text, currentIndex, names)];
                Debug.Log("Assignig default value");
            }

            EditorGUI.BeginChangeCheck();

            idProperty.stringValue = names[EditorGUI.Popup(position, label.text, currentIndex, names)];

            if (EditorGUI.EndChangeCheck())
            {
                entry.entryIndex = -1;
            }
        }
コード例 #2
0
        public CollectionSettingsViewModel(
            CollectionInformation collectionInformation,
            List <CollectionUserPermissions> collectionPermissions,
            IDataApiClient dataApiClient,
            IReadonlyObjectDatabase <UserProfile> userDatabase)
        {
            this.dataApiClient = dataApiClient;
            this.userDatabase  = userDatabase;

            CollectionName                = collectionInformation.CollectionName;
            IsAdmin                       = collectionInformation.UserRoles.Contains(Role.Admin);
            IsUserManager                 = collectionInformation.UserRoles.Intersect(new[] { Role.Admin, Role.UserManager }).Any();
            DisplayName                   = collectionInformation.DisplayName ?? collectionInformation.CollectionName;
            Description                   = collectionInformation.Description;
            SelectedIdGeneratorType       = collectionInformation.IdGeneratorType;
            NonAdminUsersCanOverwriteData = collectionInformation.NonAdminUsersCanOverwriteData;
            IsProtected                   = collectionInformation.IsProtected;
            IsHidden                      = collectionInformation.IsHidden;
            var currentUser = dataApiClient.LoggedInUsername;
            var userPermissionViewModels = BuildUserPermissionsViewModels(collectionInformation, collectionPermissions, currentUser);

            UserPermissions = new ObservableCollection <UserPermissionsViewModel>(userPermissionViewModels);
            Validators      = collectionInformation.ValidatorDefinitions.Select(x => new ValidatorDefinitionViewModel(x)).ToList();

            AddUserCommand    = new RelayCommand(AddUser, () => CanEditUserPermissions);
            DeleteUserCommand = new RelayCommand(DeleteUser, () => CanEditUserPermissions);
            SaveCommand       = new AsyncRelayCommand <IClosable>(Save);
            CancelCommand     = new RelayCommand <IClosable>(closable => closable.Close(false));
        }
コード例 #3
0
        public void ManagerCanSetRoles()
        {
            UserGenerator.RegisterAndLoginUserWithRole(Role.UserManager, adminDataApiClient, out var managerDataApiClient);
            UserGenerator.RegisterAndLoginUserWithoutRoles(out var unprivilegedDataApiClient);

            var collectionName = nameof(UnitTestDataObject1);

            MakeCollectionProtected(collectionName);
            try
            {
                AssertStatusCode(
                    () => managerDataApiClient.SetCollectionRoleForUser(unprivilegedDataApiClient.LoggedInUsername, new [] { Role.Viewer }, collectionName),
                    HttpStatusCode.OK);
                CollectionInformation collectionPermissions = null;
                AssertStatusCode(
                    () => collectionPermissions = unprivilegedDataApiClient.GetCollectionInformationAsync(collectionName).Result,
                    HttpStatusCode.OK);
                Assert.That(collectionPermissions, Is.Not.Null);
                Assert.That(collectionPermissions.UserRoles.Count, Is.EqualTo(1));
                Assert.That(collectionPermissions.UserRoles.Single(), Is.EqualTo(Role.Viewer));
            }
            finally
            {
                MakeCollectionUnprotected(collectionName);
                UserGenerator.DeleteUser(unprivilegedDataApiClient);
                UserGenerator.DeleteUser(managerDataApiClient);
            }
        }
コード例 #4
0
        public void CanGetCollectionInformation()
        {
            var collectionName = nameof(UnitTestSearchObject);
            CollectionInformation collectionInformation = null;

            AssertStatusCode(
                () => collectionInformation = analystDataApiClient.GetCollectionInformationAsync(collectionName).Result,
                HttpStatusCode.OK);
            Assert.That(collectionInformation, Is.Not.Null);
            Assert.That(collectionInformation.CollectionName, Is.EqualTo(collectionName));
        }
コード例 #5
0
        /// <summary>
        /// 插入一条记录
        /// </summary>
        /// <param name="model"></param>
        public void CreateCollectionInfoRecord(CollectionInformation model)
        {
            var CollectionInfoModel = MongoDBHelper.CollectionInfoLog.Find(c => c.CreatorID == model.CreatorID && c.Name == model.Name && c.BankName == model.BankName && c.BankCode == model.BankCode && c.City == model.City && c.SubbranchBank == model.SubbranchBank).FirstOrDefault();

            if (CollectionInfoModel != null)
            {
                //存在这个数据就不再插入
                return;
            }
            MongoDBHelper.CollectionInfoLog.InsertOne(model);
        }
コード例 #6
0
 public CollectionExplorationViewModel(
     IDataApiClient dataApiClient,
     CollectionInformation collectionInformation,
     DataVisualizer dataVisualizer,
     IClipboard clipboard,
     ICollectionSwitcher collectionSwitcher)
 {
     CollectionInformation   = collectionInformation;
     DataObjectListViewModel = new DataObjectListViewModel(collectionInformation, dataApiClient, dataVisualizer, clipboard, collectionSwitcher);
     QueryEditorViewModel    = new QueryEditorViewModel(dataApiClient, collectionInformation.CollectionName);
     QueryEditorViewModel.JsonSearchFinished += QueryEditorViewModel_JsonSearchFinished;
 }
コード例 #7
0
        private void MenuItem_CreateCollection_Click(object sender, RoutedEventArgs e)
        {
            CollectionInformationEditorWindow collectionInformationEditor = new CollectionInformationEditorWindow();

            collectionInformationEditor.ShowDialog();
            CollectionInformation collectionInformation = collectionInformationEditor.GetCollectionInformation();

            if (collectionInformation.ChangedName)
            {
                CollectionStore.Add(collectionInformation);
                comboBox_CollectionNames.Items.Refresh();
            }
        }
コード例 #8
0
        public CollectionViewModel(
            CollectionInformation collectionInformation,
            IDataApiClient dataApiClient,
            IReadonlyObjectDatabase <UserProfile> userDatabase)
        {
            CollectionInformation = collectionInformation;
            this.dataApiClient    = dataApiClient;

            this.userDatabase = userDatabase;
            Permission        = TranslatePermission(collectionInformation.UserRoles);

            CanEditCollectionSettings           = collectionInformation.UserRoles.Intersect(new[] { Role.UserManager, Role.Admin }).Any();
            OpenCollectionSettingsWindowCommand = new AsyncRelayCommand(OpenCollectionSettingsWindow, () => CanEditCollectionSettings);
        }
コード例 #9
0
ファイル: CodeGenerator.cs プロジェクト: wonderplayer/pnpcore
        private void GenerateModelCollectionFiles(CollectionInformation collectionInformation)
        {
            var classFile     = LoadFile(ModelCollectionInternal);
            var interfaceFile = LoadFile(ModelCollectionPublic);

            Replace(ref classFile, NamespaceKey, collectionInformation.Namespace);
            Replace(ref interfaceFile, NamespaceKey, collectionInformation.Namespace);

            Replace(ref classFile, CollectionNameKey, collectionInformation.Name);
            Replace(ref interfaceFile, CollectionNameKey, collectionInformation.Name);

            Replace(ref classFile, CollectionTypeNameKey, collectionInformation.ModelType);
            Replace(ref interfaceFile, CollectionTypeNameKey, collectionInformation.ModelType);

            SaveFile(classFile, $"{collectionInformation.Name}.cs", collectionInformation.Folder, false);
            SaveFile(interfaceFile, $"I{collectionInformation.Name}.cs", collectionInformation.Folder, true);
        }
コード例 #10
0
        public DataObjectListViewModel(
            CollectionInformation collectionInformation,
            IDataApiClient dataApiClient,
            DataVisualizer dataVisualizer,
            IClipboard clipboard,
            ICollectionSwitcher collectionSwitcher)
        {
            this.dataApiClient = dataApiClient;

            this.dataVisualizer     = dataVisualizer;
            this.clipboard          = clipboard;
            this.collectionSwitcher = collectionSwitcher;
            CollectionInformation   = collectionInformation;
            CanVisualize            = dataVisualizer.CanVisualize(CollectionInformation.CollectionName);
            ExportCommand           = new RelayCommand(Export, CanExport);
            VisualizeCommand        = new RelayCommand(Visualize, () => CanVisualize);
        }
コード例 #11
0
 private void MenuItem_EditCollectionDetails_Click(object sender, RoutedEventArgs e)
 {
     if (comboBox_CollectionNames.SelectedItem != null)
     {
         string     currentCollectionName = (string)comboBox_CollectionNames.SelectedItem;
         Collection collection            = CollectionStore.Get(currentCollectionName);
         CollectionInformationEditorWindow collectionInformationEditor = new CollectionInformationEditorWindow(currentCollectionName, collection.Description);
         collectionInformationEditor.ShowDialog();
         CollectionInformation collectionInformation = collectionInformationEditor.GetCollectionInformation();
         CollectionStore.Edit(currentCollectionName, collectionInformation);
         if (collectionInformation.ChangedName)
         {
             comboBox_CollectionNames.Items.Refresh();
             comboBox_CollectionNames.SelectedItem = collectionInformation.Name;
         }
     }
 }
コード例 #12
0
        public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
        {
            object[] attributeObjects = fieldInfo.GetCustomAttributes(typeof(CollectionTypeAttribute), true);

            if (attributeObjects.Length == 0)
            {
                EditorGUI.HelpBox(position, "There are no " + typeof(CollectionEntry).Name + "'s on \"" +
                                  fieldInfo.Name + "\".", MessageType.None);
                return;
            }

            CollectionTypeAttribute collectionAttribute = (CollectionTypeAttribute)attributeObjects[0];

            SerializedProperty idProperty = property.FindPropertyRelative("field");

            CollectionInformation info = EnumerableCollection.GetReflectionInformation(
                collectionAttribute.collectionType);

            string[] names = info.fieldNames;

            int currentIndex = 0;

            for (int i = 0; i < names.Length; i++)
            {
                if (names[i] == idProperty.stringValue)
                {
                    currentIndex = i;
                    break;
                }
            }

            EditorGUI.BeginChangeCheck();

            idProperty.stringValue = names[EditorGUI.Popup(position, label.text, currentIndex, names)];

            if (EditorGUI.EndChangeCheck())
            {
                CollectionEntry entry = (CollectionEntry)PropertyUtility.GetTargetObjectOfProperty(property);

                entry.entryIndex = -1;
            }
        }
コード例 #13
0
 private static TeamProjectCollection AttachCollection(TfsConfigurationServer server, CollectionInformation collectionInfo, bool cloneCollection)
 {
     var collectionService = server.GetService<ITeamProjectCollectionService>();
     var jobDetail = collectionService.QueueAttachCollection(collectionInfo.ConnectionString, null, cloneCollection, collectionInfo.Name, null, collectionInfo.VirtualDir);
     return collectionService.WaitForCollectionServicingToComplete(jobDetail);
 }
コード例 #14
0
        private static void RestoreDatabase(CollectionInformation collectionInfo, string databaseBackupFile)
        {
            var connectionStringBuilder = new SqlConnectionStringBuilder(collectionInfo.ConnectionString);

            var serverConnection = new ServerConnection(connectionStringBuilder.DataSource);
            var server = new Server(serverConnection);
            var restore = new Restore();
            restore.Devices.AddDevice(databaseBackupFile, DeviceType.File);
            restore.Database = connectionStringBuilder.InitialCatalog;
            restore.ReplaceDatabase = true;

            server.KillAllProcesses(restore.Database);
            restore.SqlRestore(server);
        }
コード例 #15
0
 public CollectionInformationViewModel(CollectionInformation collectionInformation)
 {
     this.Name = collectionInformation.Name;
     this.Text = string.Format("{0} ({1} items, {2} Kb)", collectionInformation.Name,
         collectionInformation.ItemCount, collectionInformation.Size);
 }