public static EditOperationType?GetEditOperationType(this BasicFeatureLayer layer)
        {
            if (layer.ConnectionStatus == ConnectionStatus.Broken)
            {
                return(null);
            }
            var gdbType = layer.GetGeodatabaseType();
            var regType = layer.GetRegistrationType();

            //Plugin - new at 2.3
            if (gdbType == null)
            {
                return(null);
            }
            //FileSystem
            if (gdbType == GeodatabaseType.FileSystem)
            {
                return(EditOperationType.Long);
            }
            //LocalDatabase
            if (gdbType == GeodatabaseType.LocalDatabase)
            {
                return(EditOperationType.Long);
            }
            //RemoteDatabase, Versioned
            if (gdbType == GeodatabaseType.RemoteDatabase && (
                    regType == RegistrationType.Versioned || regType == RegistrationType.VersionedWithMoveToBase))
            {
                return(EditOperationType.Long);
            }
            //RemoteDatabase, NonVersioned
            if (gdbType == GeodatabaseType.RemoteDatabase && regType == RegistrationType.Nonversioned)
            {
                return(EditOperationType.Short);
            }
            //Service, NonVersioned
            if (gdbType == GeodatabaseType.Service && regType == RegistrationType.Nonversioned)
            {
                return(EditOperationType.Short);
            }

            //Service, Versioned, Default
            EditOperationType forBranch = EditOperationType.Long;

            if (gdbType == GeodatabaseType.Service && regType == RegistrationType.Versioned)
            {
                using (var dataset = layer.GetTable())
                    using (var gdb = dataset.GetDatastore() as Geodatabase)
                        using (var vmgr = gdb.GetVersionManager())
                            using (var vers = vmgr.GetCurrentVersion())
                                using (var parent = vers.GetParent())
                                {
                                    //non-default supports undo/redo and save/discard. Default does not
                                    forBranch = parent != null ? EditOperationType.Long : EditOperationType.Short;
                                }
            }
            return(forBranch);
        }
Beispiel #2
0
        internal bool ApplyEditChanges(EditOperationType operation, string firstValue, string secondValue)
        {
            if (operation == EditOperationType.Add)
            {
                if (string.IsNullOrEmpty(firstValue) || string.IsNullOrEmpty(secondValue))
                {
                    return(false);
                }
                switch (CurrentMode)
                {
                case EditContextMode.Soilders:
                    var updatedSoilderMetaDataTable = new List <SoldierMetaData>(SoilderMetaDataTable);
                    updatedSoilderMetaDataTable.Add(new SoldierMetaData(firstValue, secondValue));
                    DataLayerAdapter.WriteToSoilderMetaDataTable(updatedSoilderMetaDataTable);
                    SoilderMetaDataTable = new ObservableCollection <SoldierMetaData>(updatedSoilderMetaDataTable);
                    MainWindow.SoilderMetaDataItems.ItemsSource = null;
                    MainWindow.SoilderMetaDataItems.ItemsSource = SoilderMetaDataTable;
                    break;

                case EditContextMode.Equipment:
                    var updatedEquipmentMetaDataTable = new List <EquipmentMetaData>(EquipmentMetaDataTable);
                    updatedEquipmentMetaDataTable.Add(new EquipmentMetaData(firstValue, secondValue));
                    DataLayerAdapter.WriteToEquipmentMetaDataTable(updatedEquipmentMetaDataTable);
                    EquipmentMetaDataTable = new ObservableCollection <EquipmentMetaData>(updatedEquipmentMetaDataTable);
                    MainWindow.EquipmentMetaDataItems.ItemsSource = null;
                    MainWindow.EquipmentMetaDataItems.ItemsSource = EquipmentMetaDataTable;
                    break;

                case EditContextMode.SoildersEquipmentMapping:
                    break;
                }
            }

            else if (operation == EditOperationType.Remove)
            {
                if (string.IsNullOrEmpty(firstValue) || string.IsNullOrEmpty(secondValue))
                {
                    return(false);
                }
                switch (CurrentMode)
                {
                case EditContextMode.Soilders:
                    var updatedSoilderMetaDataTable = new List <SoldierMetaData>(SoilderMetaDataTable);
                    updatedSoilderMetaDataTable.Remove(new SoldierMetaData(firstValue, secondValue));
                    if (updatedSoilderMetaDataTable.Count == SoilderMetaDataTable.Count)
                    {
                        return(false);
                    }
                    DataLayerAdapter.WriteToSoilderMetaDataTable(updatedSoilderMetaDataTable);
                    SoilderMetaDataTable = new ObservableCollection <SoldierMetaData>(updatedSoilderMetaDataTable);
                    MainWindow.SoilderMetaDataItems.ItemsSource = null;
                    MainWindow.SoilderMetaDataItems.ItemsSource = SoilderMetaDataTable;
                    break;

                case EditContextMode.Equipment:
                    break;

                case EditContextMode.SoildersEquipmentMapping:
                    break;
                }
            }

            return(true);
        }