Exemplo n.º 1
0
        /// <summary>
        /// adds a new commodity the the dictionary
        /// </summary>
        /// <param name="commodity"></param>
        /// <param name="language"></param>
        private void addCommodity(string commodity, enLanguage language)
        {
            dsCommodities                ownCommodities = new dsCommodities();

            if(File.Exists(@".\Data\Commodities_own.xml"))
                ownCommodities.ReadXml(@".\Data\Commodities_own.xml");

            dsCommodities.NamesRow newCommodity     = (dsCommodities.NamesRow)_commodities.Names.NewRow();
            dsCommodities.NamesRow newOwnCommodity  = (dsCommodities.NamesRow)ownCommodities.Names.NewRow();

            foreach (enLanguage availableLanguage in Enum.GetValues(typeof(enLanguage)))
                newOwnCommodity[availableLanguage.ToString()] = Program.COMMODITY_NOT_SET;

            newOwnCommodity[language.ToString()] = commodity;

            foreach (enLanguage availableLanguage in Enum.GetValues(typeof(enLanguage)))
                newCommodity[availableLanguage.ToString()] = newOwnCommodity[availableLanguage.ToString()];

            // add to both dictionaries
            ownCommodities.Names.AddNamesRow(newOwnCommodity);
            _commodities.Names.AddNamesRow(newCommodity);

            // save to "own" file
            ownCommodities.WriteXml(@".\Data\Commodities_own_new.xml");
            FileSaver.rotateSaveFiles(@".\Data\Commodities_own.xml");

            // reload in working array
            loadCommodities(RegulatedNoiseSettings.Language);
        }
Exemplo n.º 2
0
        /// <summary>
        /// adds objects for not yet existing localized commodities
        /// </summary>
        internal void addLocalized2RN(dsCommodities.NamesDataTable localizedCommodities)
        {
            EDCommoditiesExt EDCommodity    = null;
            enLanguage foundLanguage        = enLanguage.eng;
            bool changed                    = false;

            foreach (dsCommodities.NamesRow localizedItem in localizedCommodities)
            {

                // look if the name is available at least in one language
                foreach (enLanguage availableLanguage in Enum.GetValues(typeof(enLanguage)))
                { 
                    foundLanguage = availableLanguage;
                    EDCommodity =  m_Commodities.Find(x => x.Name.Equals(localizedItem[availableLanguage.ToString()].ToString(), StringComparison.InvariantCultureIgnoreCase));
                    if(EDCommodity != null)
                        break;
                }

                if(EDCommodity != null)
                { 
                    // found
                    if((foundLanguage != enLanguage.eng) && (localizedItem.eng != Program.COMMODITY_NOT_SET))
                    { 
                        // it's not the base(=english) name, but the base(=english) name is available -> change this
                        EDCommodity.Name = localizedItem.eng;
                        changed = true;
                    }
                }
                else
                {
                    // not found, add it with the available 
                    EDCommodity = new EDCommoditiesExt();
                    EDCommodity.Name = localizedItem.eng;

                    if(EDCommodity.Name == Program.COMMODITY_NOT_SET)
                    {
                        // base(=english) name not available, get the next existing name
                        foreach (enLanguage availableLanguage in Enum.GetValues(typeof(enLanguage)))
                        {
                            if(localizedItem[availableLanguage.ToString()].ToString() != Program.COMMODITY_NOT_SET)
                            {
                                // got it -> break
                                EDCommodity.Name = localizedItem[availableLanguage.ToString()].ToString();
                                break;
                            }
                        }                  
                    }
                    EDCommodity.Id = m_Commodities.Max(x => x.Id) + 1;
                    EDCommodity.AveragePrice = -1;

                    m_Commodities.Add(EDCommodity);

                    changed = true;
                }

                if(changed)
                    saveRNCommodityData(@"./Data/commodities_RN.json", true);
            }

        }
Exemplo n.º 3
0
        /// <summary>
        /// loads the localized commodity names and check if 
        /// the self added names now included in the official dictionary
        /// </summary>
        private void prepareCommodityNames()
        {
            dsCommodities                ownCommodities = new dsCommodities();
            List<dsCommodities.NamesRow> forDeleting    = new List<dsCommodities.NamesRow>();
            bool found;

            try
            {
                _commodities.ReadXml(@".\Data\Commodities.xml");

                if(File.Exists(@".\Data\Commodities_own.xml"))
                { 
                    ownCommodities.ReadXml(@".\Data\Commodities_own.xml");

                    foreach (dsCommodities.NamesRow Commodity in ownCommodities.Tables["Names"].Rows)
                    {
                        found = false;

                        foreach (enLanguage language in Enum.GetValues(typeof(enLanguage)))
                        {
                            dsCommodities.NamesRow[] existing = (dsCommodities.NamesRow[])(_commodities.Tables["Names"].Select(String.Format("{0} = '{1}'" , language.ToString(), EscapeLikeValue(Commodity[language.ToString()].ToString()))));

                            Debug.Print(String.Format("{0} = '{1}'" , language.ToString(), Commodity[language.ToString()]));

                            if(existing.GetUpperBound(0) == 0)
                            {
                                // commodity exists in the official directory
                                found = true;
                                break;
                            }
                        }

                        // if commodity is existing at least in one language we remove it
                        if(found)
                            forDeleting.Add(Commodity);

                    }
                }

                // now delete the existing double commodities and save the cleaned data again
                foreach (dsCommodities.NamesRow item in forDeleting)
                    ownCommodities.Tables["Names"].Rows.Remove(item);

                // save the reviewed "own" commodity list
                ownCommodities.WriteXml(@".\Data\Commodities_own_new.xml");
                FileSaver.rotateSaveFiles(@".\Data\Commodities_own.xml");

                // merge both tables
                _commodities.Tables["Names"].Merge(ownCommodities.Tables["Names"]);

            }
            catch (Exception ex)
            {
                throw new Exception("Error while loading commodity names", ex);
            }

        }