private void Duplicate(object sender, RoutedEventArgs e) { //TODO: Need to move code from if else to the respective classes. if (DSDetails.DSType == DataSourceBase.eDSType.MSAccess) { AccessDataSource dsDetailsCopy = (AccessDataSource)CopyTreeItemWithNewName((RepositoryItemBase)DSDetails); if (dsDetailsCopy == null) { return; } //TODO: use Path.Combine instead of string concat dsDetailsCopy.FilePath = DSDetails.ContainingFolder + "\\" + dsDetailsCopy.Name + ".mdb"; dsDetailsCopy.FileFullPath = DSDetails.ContainingFolderFullPath + "\\" + dsDetailsCopy.Name + ".mdb"; if (File.Exists(dsDetailsCopy.FileFullPath)) { Reporter.ToUser(eUserMsgKey.DuplicateDSDetails, dsDetailsCopy.FileFullPath); return; } File.Copy(DSDetails.FileFullPath, dsDetailsCopy.FileFullPath); (WorkSpace.Instance.SolutionRepository.GetItemRepositoryFolder(((RepositoryItemBase)DSDetails))).AddRepositoryItem(dsDetailsCopy); } else { GingerLiteDB dsDetailsCopy = (GingerLiteDB)CopyTreeItemWithNewName((RepositoryItemBase)DSDetails); if (dsDetailsCopy == null) { return; } dsDetailsCopy.FilePath = DSDetails.ContainingFolder + "\\" + dsDetailsCopy.Name + ".db"; dsDetailsCopy.FileFullPath = DSDetails.ContainingFolderFullPath + "\\" + dsDetailsCopy.Name + ".db"; if (File.Exists(dsDetailsCopy.FileFullPath)) { Reporter.ToUser(eUserMsgKey.DuplicateDSDetails, dsDetailsCopy.FileFullPath); return; } File.Copy(DSDetails.FileFullPath, dsDetailsCopy.FileFullPath); (WorkSpace.Instance.SolutionRepository.GetItemRepositoryFolder(((RepositoryItemBase)DSDetails))).AddRepositoryItem(dsDetailsCopy); } }