private void DuplicatePhaidraAttributeExecute(object obj)
        {
            if (SelectedField != null)
            {
                var maxIndex = _phaidraAttributeFields.Where(i => i.PhaidraAttribute == SelectedField.PhaidraAttribute).Max(i => i.Set.Index);
                var set      = new PhaidraMetadataSet(maxIndex + 1);

                int foundIndexForInsertion = -1;

                for (int i = _phaidraAttributeFields.Count - 1; i >= 0; i--)
                {
                    if (_phaidraAttributeFields[i].PhaidraAttribute == SelectedField.PhaidraAttribute)
                    {
                        foundIndexForInsertion = i;
                        break;
                    }
                }

                foreach (var field in SelectedField.PhaidraAttribute.Fields)
                {
                    var attrField = new PhaidraAttributeField()
                    {
                        PhaidraAttribute = SelectedField.PhaidraAttribute,
                        Field            = new KeyValuePair <string, string>(field.Key, field.Value),
                        Set = set
                    };
                    if (foundIndexForInsertion > -1)
                    {
                        _phaidraAttributeFields.Insert(foundIndexForInsertion + 1, attrField);
                        foundIndexForInsertion++;
                    }
                    else
                    {
                        _phaidraAttributeFields.Add(attrField);
                    }
                }
                FilterFields();
            }
        }
示例#2
0
        public MappingsViewModel(Dictionary <int, string> headers, List <Dictionary <int, string> > rows, string rootDir)
        {
            _headers                           = headers;
            _rows                              = rows;
            _rootDir                           = rootDir;
            _currentRowIndex                   = 0;
            AddMappingCommand                  = new Command(AddMappingExecute, AddMappingCanExecute);
            DeleteSelectedMappingCommand       = new Command(RemoveSelectedMappingExecute, RemoveSelectedMappingCanExecute);
            OKCommand                          = new Command(OKExecute);
            ResetMappingsCommand               = new Command(ResetMappingsExecute);
            PreviousRowCommand                 = new Command(PreviousRowExecute, PreviousRowCanExecute);
            NextRowCommand                     = new Command(NextRowExecute, NextRowCanExecute);
            SelectPhaidraAttributeFieldCommand = new Command(SelectPhaidraAttributeFieldExecute, SelectPhaidraAttributeFieldCanExecute);
            DuplicateCsvColumnCommand          = new Command(DuplicateCsvColumnExecute);
            DebugCommand                       = new Command(DebugExecute);
            CsvColumns                         = new ObservableCollection <CsvColumn>();
            PhaidraAttributes                  = new ObservableCollection <PhaidraAttribute>();
            //Mappings = new ObservableCollection<PhaidraMapping>();
            Mappings2 = new ObservableCollection <PhaidraAttributeField2CsvColumn2>();
            PhaidraAttributeFields = new ObservableCollection <PhaidraAttributeField>();
            SelectedMappingPhaidraAttributesField2CsvColumns = new ObservableCollection <PhaidraAttributeField2CsvColumn>();
            CsvColumns.Add(CsvColumn.Empty);
            foreach (var header in _headers)
            {
                CsvColumns.Add(new CsvColumn
                {
                    Name   = header.Value,
                    Header = header
                });
            }

            SetCsvColumnValues();

            var attributes      = PhaidraAttribute.GetPhaidraAttributes();
            var attributeFields = new List <PhaidraAttributeField>();

            attributeFields.Add(PhaidraAttributeField.Empty);
            foreach (var attribute in attributes)
            {
                PhaidraAttributes.Add(attribute);
                var set = new PhaidraMetadataSet(); //marks belonging fields (used when duplicating field sets)
                foreach (var field in attribute.Fields)
                {
                    attributeFields.Add(new PhaidraAttributeField()
                    {
                        PhaidraAttribute = attribute,
                        Field            = field,
                        Set = set
                    });
                }
            }

            foreach (var attributeField in attributeFields.OrderBy(i => i.DisplayName))
            {
                PhaidraAttributeFields.Add(attributeField);
            }

            //PhaidraAttributes.Add(new FilenamePhaidraAttribute());
            //PhaidraAttributes.Add(new CollectionPhaidraAttribute());
            //PhaidraAttributes.Add(new AssociationPhaidraAttribute());
            //PhaidraAttributes.Add(new AccessRestrictionPhaidraAttribute());
            //PhaidraAttributes.Add(new TitlePhaidraAttribute());
            //PhaidraAttributes.Add(new DescriptionPhaidraAttribute());
            //PhaidraAttributes.Add(new DateArrayPhaidraAttribute("Creation date", "Creation date", "dcterms:created"));
            //PhaidraAttributes.Add(new DateArrayPhaidraAttribute("Date of production", "Date of production", "rdau:P60071"));
            //PhaidraAttributes.Add(new RolePhaidraAttribute("Photographer", "role:pht"));
            //PhaidraAttributes.Add(new RolePhaidraAttribute("Author", "role:aut"));

            ResetMappings();
        }