public string Translate(Guid srcMigrationSourceId, string srcServerPath) { IServerPathTranslationService srcTranslationService = LookupService(srcMigrationSourceId); string canonicalPath = srcTranslationService.TranslateToCanonicalPathCaseSensitive(srcServerPath); if (!m_pathValidator.IsSyntaxCorrect(canonicalPath)) { throw new InvalidServerPathException(string.Format( MigrationToolkitResources.VCPathTranslationErrVCPathTranslationError_InvalidCanonicalPath, canonicalPath)); } string canonicalFilterPath; canonicalPath = ApplyFilterMapping(srcMigrationSourceId, canonicalPath, out canonicalFilterPath); foreach (Guid sourceId in m_adapterPathTranslationServices.Keys) { if (!sourceId.Equals(srcMigrationSourceId)) { IServerPathTranslationService destTranslationService = LookupService(sourceId); return(destTranslationService.TranslateFromCanonicalPath(canonicalPath, canonicalFilterPath)); } } throw new ServerPathTranslationException( string.Format( MigrationToolkitResources.Culture, MigrationToolkitResources.VCPathTranslationError_CannotFindFilterString, srcServerPath)); }
private bool IsPathMapped(string path, AnalysisContext analysisContext) { // TraceManager.TraceInformation("IsPathMapped: Entering with path: " + path); string translatedPath = m_serverPathTranslationService.TranslateToCanonicalPathCaseSensitive(path); // TraceManager.TraceInformation("IsPathMapped: translatedPath: " + translatedPath); foreach (MappingEntry mapping in m_configurationService.Filters) { // TraceManager.TraceInformation("IsPathMapped: mapping.Path: " + mapping.Path); string canonicalFilterString = m_serverPathTranslationService.TranslateToCanonicalPathCaseSensitive(mapping.Path); // TraceManager.TraceInformation("IsPathMapped: canonicalFilterString: " + canonicalFilterString); if (translatedPath.StartsWith(canonicalFilterString, StringComparison.OrdinalIgnoreCase)) { // TraceManager.TraceInformation("IsPathMapped: returning true"); return(true); } } // TraceManager.TraceInformation("IsPathMapped: returning false"); return(false); }
public override void PostAnalysis(AnalysisContext analysisContext) { HashSet <string> symbolicLinks = new HashSet <string>(); // Find symbolic links in all VOB used foreach (string vob in m_vobNames) { FindSymbolicLinks(vob, symbolicLinks); } try { using (StreamWriter streamWriter = new StreamWriter(m_symbolLinkOutputFilePath, false)) { foreach (string symbolicLinkPath in symbolicLinks) { // Translate the symbolLinkPath to the path format used on the target side try { string canonicalPath = m_serverPathTranslationService.TranslateToCanonicalPathCaseSensitive(symbolicLinkPath); string translatedPath = m_vcTranslationService.GetMappedPath(canonicalPath, m_sourceId); streamWriter.WriteLine(translatedPath); } catch (Exception ex) { TraceManager.TraceWarning(String.Format(CultureInfo.InvariantCulture, "Unable to translate ClearCase Path '{0}': {1}", symbolicLinkPath, ex.ToString())); TraceManager.TraceWarning(String.Format(CultureInfo.InvariantCulture, "Writing untranslated ClearCase Path to '{0}'", m_symbolLinkOutputFilePath)); streamWriter.WriteLine(symbolicLinkPath); } } } } catch (Exception e) { throw new MigrationException(string.Format(CultureInfo.InvariantCulture, ClearCaseSymbolicLinkMonitorAnalysisAddinResources.UnableToOpenOutputFile, m_symbolLinkOutputFilePath, e.Message)); } }
private void TranslateFilterStringPairs( Collection <FilterPair> filterStrings, Guid leftMigrationSourceId, Guid rightMigrationSourceId) { m_canonicalFilterStringsCloakedOnly.Add(leftMigrationSourceId, new List <string>()); m_canonicalFilterStringsCloakedOnly.Add(rightMigrationSourceId, new List <string>()); IServerPathTranslationService leftPathTranslationService = LookupService(leftMigrationSourceId); IServerPathTranslationService rightPathTranslationService = LookupService(rightMigrationSourceId); foreach (FilterPair filterPair in filterStrings) { Debug.Assert(filterPair.FilterItem.Count == 2, "FilterPairs must have exactly two items"); string leftCanonicalFilter = null; string rightCanonicalFilter = null; for (int i = 0; i < 2; ++i) { FilterItem filterItem = filterPair.FilterItem[i]; string adapterSpecificFilterStr = filterItem.FilterString; Guid filterOwnerMigrationSourceId = new Guid(filterItem.MigrationSourceUniqueId); if (leftMigrationSourceId.Equals(filterOwnerMigrationSourceId)) { leftCanonicalFilter = leftPathTranslationService.TranslateToCanonicalPathCaseSensitive(adapterSpecificFilterStr); if (m_pathValidator.IsSyntaxCorrect(leftCanonicalFilter)) { leftCanonicalFilter = RemoveTailingDelimiter(leftCanonicalFilter); } if (filterPair.Neglect) { m_canonicalFilterStringsCloakedOnly[leftMigrationSourceId].Add(leftCanonicalFilter); } } else if (rightMigrationSourceId.Equals(filterOwnerMigrationSourceId)) { rightCanonicalFilter = rightPathTranslationService.TranslateToCanonicalPathCaseSensitive(adapterSpecificFilterStr); if (m_pathValidator.IsSyntaxCorrect(rightCanonicalFilter)) { rightCanonicalFilter = RemoveTailingDelimiter(rightCanonicalFilter); } if (filterPair.Neglect) { m_canonicalFilterStringsCloakedOnly[rightMigrationSourceId].Add(rightCanonicalFilter); } } } if (!string.IsNullOrEmpty(leftCanonicalFilter) && !string.IsNullOrEmpty(rightCanonicalFilter)) { if (!m_canonicalFilterStrings.ContainsKey(leftMigrationSourceId)) { m_canonicalFilterStrings.Add(leftMigrationSourceId, new Dictionary <string, string>()); } if (!m_canonicalFilterStrings.ContainsKey(rightMigrationSourceId)) { m_canonicalFilterStrings.Add(rightMigrationSourceId, new Dictionary <string, string>()); } // there should be no 1:M filter mapping in the config if (!m_canonicalFilterStrings[leftMigrationSourceId].ContainsKey(leftCanonicalFilter) && !m_canonicalFilterStrings[rightMigrationSourceId].ContainsKey(rightCanonicalFilter)) { m_canonicalFilterStrings[leftMigrationSourceId].Add(leftCanonicalFilter, rightCanonicalFilter); m_canonicalFilterStrings[rightMigrationSourceId].Add(rightCanonicalFilter, leftCanonicalFilter); } } } }