示例#1
0
        protected SelectReferencePresenterBase(ISelectReferenceView view,
                                               IObjectBaseToObjectBaseDTOMapper objectBaseDTOMapper,
                                               IMoBiContext context,
                                               IUserSettings userSettings,
                                               IObjectBaseToDummyMoleculeDTOMapper objectBaseToDummyMoleculeDTOMapper,
                                               IParameterToDummyParameterDTOMapper dummyParameterDTOMapper,
                                               IObjectBaseDTOToReferenceNodeMapper referenceMapper,
                                               IObjectPathCreator objectPathCreator,
                                               Localisations localisation)
            : base(view)
        {
            _objectPathCreator       = objectPathCreator;
            _localisation            = localisation;
            _dummyParameterDTOMapper = dummyParameterDTOMapper;
            _referenceMapper         = referenceMapper;
            _dummyMoleculeDTOMapper  = objectBaseToDummyMoleculeDTOMapper;
            _userSettings            = userSettings;
            _context             = context;
            _objectBaseDTOMapper = objectBaseDTOMapper;
            _objectPathFactory   = _context.ObjectPathFactory;
            _view.ObjectPathType = _userSettings.ObjectPathType;

            _referenceMapper.Initialize(GetChildObjects);

            SelectionPredicate = parameter => true;
        }
        public virtual IEntity Select(Localisations localisation)
        {
            _localisation = localisation;
            var spatialStructures = _context.CurrentProject.SpatialStructureCollection;

            _view.Show(spatialStructures.Select(createSpatialStuctureDTOFrom).ToList());

            if (!_modalPresenter.Show())
            {
                return(null);
            }

            var dto            = _view.Selected;
            var selectedEntity = getSelectedEntity(dto);

            return(isUsableLocalisation(selectedEntity) ? selectedEntity : null);
        }
示例#3
0
        static bool LoadCSV(byte[] bytes, bool isMasterFile = false)
        {
            try
            {
                using (var rdr = new StreamReader(new MemoryStream(bytes)))
                {
                    bool  isHeader = true;
                    int[] columnLanguageMapping = new int[0];
                    foreach (IList <string> columns in FromReader(rdr))
                    {
                        // first row is the header
                        if (isHeader)
                        {
                            // sanity check
                            if (columns.Count < 2)
                            {
                                Debug.Log("File should contain at least 2 columns (KEY,<Language>");
                                return(false);
                            }

                            // find what languages are new and update references for existing ones
                            columnLanguageMapping = new int[columns.Count];         // mapping from new columns to languages array
                            var newLanguageCount = columns.Count - 1;               // the number of languages in the file (1 less for 'KEY')
                            for (var column = 1; column < columns.Count; ++column)
                            {
                                columnLanguageMapping[column] = -1;  // default to not found

                                // check all languages for a match and update if found.
                                for (var j = 0; j < Languages.Length; ++j)
                                {
                                    if (Languages[j] == columns[column])
                                    {
                                        columnLanguageMapping[column] = j;
                                        newLanguageCount--;

                                        if (!isMasterFile && _defaultUserLanguage == null)
                                        {
                                            _defaultUserLanguage = Languages[j];
                                        }

                                        break;
                                    }
                                }
                            }

                            // resize the languages array
                            Array.Resize(ref _languages, Languages.Length + newLanguageCount);

                            // copy new languages to the end and update mapping references
                            int maxLanguageColumn = Languages.Length - newLanguageCount;
                            for (int i = 1; i < columns.Count; ++i)
                            {
                                if (columnLanguageMapping[i] == -1)
                                {
                                    columnLanguageMapping[i]       = maxLanguageColumn;
                                    Languages[maxLanguageColumn++] = columns[i];
                                }
                            }

                            isHeader = false;
                        }

                        else
                        {
                            bool     isNewValue = true;
                            string   key        = columns[0];
                            string[] oldValues;
                            string[] values = new string[Languages.Length];

                            // get reference to existing list if any and copy old values over
                            if (Localisations.TryGetValue(key, out oldValues))
                            {
                                isNewValue = false;
                                Array.Copy(oldValues, values, oldValues.Length);
                            }

                            // copy in new values
                            for (int i = 1; i < columns.Count; ++i)
                            {
                                values[columnLanguageMapping[i]] = columns[i];
                            }

                            if (isNewValue)
                            {
                                Localisations.Add(key, values);
                            }
                            else
                            {
                                Localisations[key] = values;
                            }
                        }
                    }
                }
            }
            catch (Exception)
            {
                return(false);
            }

            return(true);
        }
 public static bool Is(this Localisations localisations, Localisations typeToCompare)
 {
     return((localisations & typeToCompare) != 0);
 }