Fix up any entries that are found to contain MSA references which none of the senses have. Those references are simply removed.
Inheritance: RtFixer
Exemplo n.º 1
0
        /// <summary>
        /// Constructor.  Reads the file and stores any data needed for corrections later on.
        /// </summary>
        public FwDataFixer(string filename, IProgress progress, ErrorLogger logger, ErrorCounter counter)
        {
            m_filename   = filename;
            m_progress   = progress;
            errorLogger  = logger;
            errorCounter = counter;

            m_progress.Minimum  = 0;
            m_progress.Maximum  = 1000;
            m_progress.Position = 0;
            m_progress.Message  = String.Format(Strings.ksReadingTheInputFile, m_filename);
            m_crt = 0;
            // The following fixers will be run on each rt element during FixErrorsAndSave()
            // Note: every change to the file MUST log an error. This is used in FixFwData to set a return code indicating whether anything changed.
            // This in turn is used in Send/Receive to determine whether we need to re-split the file before committing.
            // N.B.: Order is important here!!!!!!!
            m_rtLevelFixers.Add(new DuplicateStyleFixer());
            m_rtLevelFixers.Add(new OriginalFixer());
            m_rtLevelFixers.Add(new CustomPropertyFixer());
            m_rtLevelFixers.Add(new BasicCustomPropertyFixer());
            var senseFixer = new GrammaticalSenseFixer();

            m_rtLevelFixers.Add(senseFixer);
            m_rtLevelFixers.Add(new MorphBundleFixer(senseFixer));             // after we've possibly removed MSAs in GrammaticalSenseFixer
            m_rtLevelFixers.Add(new SequenceFixer());
            m_rtLevelFixers.Add(new HomographFixer());
            m_rtLevelFixers.Add(new DuplicateWordformFixer());
            m_rtLevelFixers.Add(new CustomListNameFixer());
            InitializeFixers(m_filename);
        }
Exemplo n.º 2
0
		/// <summary>
		/// Constructor.  Reads the file and stores any data needed for corrections later on.
		/// </summary>
		public FwDataFixer(string filename, IProgress progress, ErrorLogger logger, ErrorCounter counter)
		{
			m_filename = filename;
			m_progress = progress;
			errorLogger = logger;
			errorCounter = counter;

			m_progress.Minimum = 0;
			m_progress.Maximum = 1000;
			m_progress.Position = 0;
			m_progress.Message = String.Format(Strings.ksReadingTheInputFile, m_filename);
			m_crt = 0;
			// The following fixers will be run on each rt element during FixErrorsAndSave()
			// Note: every change to the file MUST log an error. This is used in FixFwData to set a return code indicating whether anything changed.
			// This in turn is used in Send/Receive to determine whether we need to re-split the file before committing.
			// N.B.: Order is important here!!!!!!!
			m_rtLevelFixers.Add(new DuplicateStyleFixer());
			m_rtLevelFixers.Add(new OriginalFixer());
			m_rtLevelFixers.Add(new CustomPropertyFixer());
			m_rtLevelFixers.Add(new BasicCustomPropertyFixer());
			var senseFixer = new GrammaticalSenseFixer();
			m_rtLevelFixers.Add(senseFixer);
			m_rtLevelFixers.Add(new MorphBundleFixer(senseFixer)); // after we've possibly removed MSAs in GrammaticalSenseFixer
			m_rtLevelFixers.Add(new SequenceFixer());
			m_rtLevelFixers.Add(new HomographFixer());
			m_rtLevelFixers.Add(new DuplicateWordformFixer());
			m_rtLevelFixers.Add(new CustomListNameFixer());
			InitializeFixers(m_filename);
		}
Exemplo n.º 3
0
        /// <summary>
        /// Constructor.  Reads the file and stores any data needed for corrections later on.
        /// </summary>
        public FwDataFixer(string filename, IProgress progress, ErrorLogger logger)
        {
            m_filename  = filename;
            m_progress  = progress;
            errorLogger = logger;

            m_progress.Minimum  = 0;
            m_progress.Maximum  = 1000;
            m_progress.Position = 0;
            m_progress.Message  = String.Format(Strings.ksReadingTheInputFile, m_filename);
            m_crt = 0;
            // The following fixers will be run on each rt element during FixErrorsAndSave()
            // Note: every change to the file MUST log an error. This is used in FixFwData to set a return code indicating whether anything changed.
            // This in turn is used in Send/Receive to determine whether we need to re-split the file before committing.
            // N.B.: Order is important here!!!!!!!
            m_rtLevelFixers.Add(new DuplicateStyleFixer());
            m_rtLevelFixers.Add(new OriginalFixer());
            m_rtLevelFixers.Add(new CustomPropertyFixer());
            m_rtLevelFixers.Add(new BasicCustomPropertyFixer());
            var senseFixer = new GrammaticalSenseFixer();

            m_rtLevelFixers.Add(senseFixer);
            m_rtLevelFixers.Add(new MorphBundleFixer(senseFixer));             // after we've possibly removed MSAs in GrammaticalSenseFixer
            m_rtLevelFixers.Add(new SequenceFixer());
            m_rtLevelFixers.Add(new HomographFixer());
            m_rtLevelFixers.Add(new DuplicateWordformFixer());
            m_rtLevelFixers.Add(new CustomListNameFixer());
            using (XmlReader xrdr = XmlReader.Create(m_filename))
            {
                xrdr.MoveToContent();
                if (xrdr.Name != "languageproject")
                {
                    throw new Exception(String.Format("Unexpected outer element (expected <Lists>): {0}", xrdr.Name));
                }
                xrdr.Read();
                xrdr.MoveToContent();
                if (xrdr.Name == "AdditionalFields")
                {
                    string   customsNode          = xrdr.ReadOuterXml();
                    XElement additionalFieldsElem = XElement.Parse(customsNode);
                    // Give each fixer a chance to gather data on defined custom fields.
                    foreach (var fixer in m_rtLevelFixers)
                    {
                        fixer.InspectAdditionalFieldsElement(additionalFieldsElem);
                    }
                    xrdr.ReadToFollowing("rt");
                }
                while (xrdr.Name == "rt")
                {
                    string   rtXml = xrdr.ReadOuterXml();
                    XElement rt    = XElement.Parse(rtXml);
                    StoreGuidInfoAndOwnership(rt, errorLogger);
                    // Give each fixer a chance to gather data on the first pass,
                    // if it needs two passes to fix its sort of problem.
                    foreach (var fixer in m_rtLevelFixers)
                    {
                        fixer.InspectElement(rt);
                    }
                    xrdr.MoveToContent();
                    ++m_crt;
                    if (m_progress.Position == m_progress.Maximum)
                    {
                        m_progress.Position = 0;
                    }
                    if ((m_crt % 1000) == 0)
                    {
                        m_progress.Step(1);
                    }
                }
                foreach (var fixer in m_rtLevelFixers)
                {
                    fixer.FinalFixerInitialization(m_owners, m_guids, m_parentToOwnedObjsur, m_rtElementsToDelete);
                }
                xrdr.Close();
            }
        }
Exemplo n.º 4
0
		public MorphBundleFixer(GrammaticalSenseFixer senseFixer)
		{
			m_senseFixer = senseFixer;
		}
Exemplo n.º 5
0
 public MorphBundleFixer(GrammaticalSenseFixer senseFixer)
 {
     m_senseFixer = senseFixer;
 }
Exemplo n.º 6
0
		/// <summary>
		/// Constructor.  Reads the file and stores any data needed for corrections later on.
		/// </summary>
		public FwDataFixer(string filename, IProgress progress, ErrorLogger logger)
		{
			m_filename = filename;
			m_progress = progress;
			errorLogger = logger;

			m_progress.Minimum = 0;
			m_progress.Maximum = 1000;
			m_progress.Position = 0;
			m_progress.Message = String.Format(Strings.ksReadingTheInputFile, m_filename);
			m_crt = 0;
			// The following fixers will be run on each rt element during FixErrorsAndSave()
			// Note: every change to the file MUST log an error. This is used in FixFwData to set a return code indicating whether anything changed.
			// This in turn is used in Send/Receive to determine whether we need to re-split the file before committing.
			// N.B.: Order is important here!!!!!!!
			m_rtLevelFixers.Add(new DuplicateStyleFixer());
			m_rtLevelFixers.Add(new OriginalFixer());
			m_rtLevelFixers.Add(new CustomPropertyFixer());
			m_rtLevelFixers.Add(new BasicCustomPropertyFixer());
			var senseFixer = new GrammaticalSenseFixer();
			m_rtLevelFixers.Add(senseFixer);
			m_rtLevelFixers.Add(new MorphBundleFixer(senseFixer)); // after we've possibly removed MSAs in GrammaticalSenseFixer
			m_rtLevelFixers.Add(new SequenceFixer());
			m_rtLevelFixers.Add(new HomographFixer());
			m_rtLevelFixers.Add(new DuplicateWordformFixer());
			m_rtLevelFixers.Add(new CustomListNameFixer());
			using (XmlReader xrdr = XmlReader.Create(m_filename))
			{
				xrdr.MoveToContent();
				if (xrdr.Name != "languageproject")
					throw new Exception(String.Format("Unexpected outer element (expected <Lists>): {0}", xrdr.Name));
				xrdr.Read();
				xrdr.MoveToContent();
				if (xrdr.Name == "AdditionalFields")
				{
					string customsNode = xrdr.ReadOuterXml();
					XElement additionalFieldsElem = XElement.Parse(customsNode);
					// Give each fixer a chance to gather data on defined custom fields.
					foreach (var fixer in m_rtLevelFixers)
						fixer.InspectAdditionalFieldsElement(additionalFieldsElem);
					xrdr.ReadToFollowing("rt");
				}
				while (xrdr.Name == "rt")
				{
					string rtXml = xrdr.ReadOuterXml();
					XElement rt = XElement.Parse(rtXml);
					StoreGuidInfoAndOwnership(rt, errorLogger);
					// Give each fixer a chance to gather data on the first pass,
					// if it needs two passes to fix its sort of problem.
					foreach (var fixer in m_rtLevelFixers)
						fixer.InspectElement(rt);
					xrdr.MoveToContent();
					++m_crt;
					if (m_progress.Position == m_progress.Maximum)
						m_progress.Position = 0;
					if ((m_crt % 1000) == 0)
						m_progress.Step(1);
				}
				foreach (var fixer in m_rtLevelFixers)
					fixer.FinalFixerInitialization(m_owners, m_guids, m_parentToOwnedObjsur, m_rtElementsToDelete);
				xrdr.Close();
			}
		}