private void AddMetadataObserver(NotifierVisitor notifierVisitor)
		{
			m_wordDocumentVisitor = new WordDocumentVisitor();
			notifierVisitor.Add(m_wordDocumentVisitor);
		}
		private void AddContentAnalysisObserver(NotifierVisitor notifierVisitor)
		{
			if (!Workshare.Interop.Options.OptionApi.GetBool("EnableContentDiscovery"))
				return;

			PolicyLoader policyLoader = new PolicyLoader();
			WsScanRules scanRules = policyLoader.LoadScanRulesFromPolicy();
			m_contentAnalysisVisitor = new ContentAnalysisVisitor(scanRules);
			notifierVisitor.Add(m_contentAnalysisVisitor);
		}
		public void Execute(System.Object document, System.Object metadataElements)
		{
			if(typeof(string) != document.GetType())
				throw new ArgumentException("The first parameter should be of type string.", "document");

			string filename = (string)document;
			if(false == System.IO.File.Exists(filename))
				throw new ArgumentException(string.Format("The file [{0}] does not exist.", filename));

			NotifierVisitor notifierVisitor = new NotifierVisitor();
			AddMetadataObserver(notifierVisitor);
			AddContentAnalysisObserver(notifierVisitor);

			using(DocumentReader reader = DocumentReaderFactory.Create(filename))
			{
				reader.Read(notifierVisitor);
			}

			ProcessMetadata(metadataElements);
			ProcessContentAnalysisResults();
		}