Exemplo n.º 1
0
        public static string AbsolutePath(string path)
        {
            if (string.IsNullOrEmpty(path) || Path.IsPathRooted(path)) return path;

               ///////// EDITED BY LMT 27/NOV/2008 for NHT-11
               string reason;
               if (!PathHelper.IsValidRelativePath(path, out reason))
               {
               if (!path.StartsWith(@".\"))
               {
                   path = @".\" + path;
                   if (!PathHelper.IsValidRelativePath(path, out reason))
                       throw new ArgumentException(string.Format("{0}. {1}", path, reason));
               }
               else
                   throw new ArgumentException(string.Format("{0}. {1}", path, reason));
               }
               FilePathRelative relativePath = new FilePathRelative(path);
               ///////// END EDITED BY LMT 27/NOV/2008 for NHT-11

               DirectoryPathAbsolute absolutePath = new DirectoryPathAbsolute(AppDomain.CurrentDomain.BaseDirectory);
               if (!relativePath.CanGetAbsolutePathFrom(absolutePath))
               throw new ArgumentException(string.Format("Invalid path, " + path));
               return relativePath.GetAbsolutePathFrom(absolutePath).Path;
        }
        private static string GetFilePathAbsoluteFrom(string baseAbsolutePath, string relativePath)
        {
            var absoluteBase     = new FilePathAbsolute(baseAbsolutePath).ParentDirectoryPath;
            var relativeFilePath = new FilePathRelative(relativePath);

            return(relativeFilePath.GetAbsolutePathFrom(absoluteBase).Path);
        }
Exemplo n.º 3
0
        public string GetRelativePath(string absoluteFilePath, string absoluteDirectoryPath)
        {
            FilePathAbsolute      filePathAbsolute1      = new FilePathAbsolute(absoluteFilePath);
            DirectoryPathAbsolute directoryPathAbsolute1 = new DirectoryPathAbsolute(absoluteDirectoryPath);
            FilePathRelative      filePathRelative1      = filePathAbsolute1.GetPathRelativeFrom(directoryPathAbsolute1);

            return(filePathRelative1.Path);
        }
Exemplo n.º 4
0
        private void GetBat()
        {
            Microsoft.Win32.OpenFileDialog openFileDialog2 = new Microsoft.Win32.OpenFileDialog();
            openFileDialog2.Filter = "Known file types (*.bat)|*.bat";
            openFileDialog2.Title  = "Select a batch file that will be run after completion of the model run";

            if (openFileDialog2.ShowDialog().Value)
            {
                DirectoryPathAbsolute dp = new DirectoryPathAbsolute(Path.GetDirectoryName(models.First().DisplayName));
                FilePathAbsolute      fp = new FilePathAbsolute(openFileDialog2.FileName);
                postProcessBat = fp.GetPathRelativeFrom(dp);
                RaisePropertyChanged("PostProcessBat");
            }
        }
Exemplo n.º 5
0
        private void GetMshe()
        {
            Microsoft.Win32.OpenFileDialog openFileDialog2 = new Microsoft.Win32.OpenFileDialog();
            openFileDialog2.Filter = "Known file types (*.she)|*.she";
            openFileDialog2.Title  = "Select the Mike She file corresponding to the first .pst-file";

            if (openFileDialog2.ShowDialog().Value)
            {
                DirectoryPathAbsolute dp = new DirectoryPathAbsolute(Path.GetDirectoryName(models.First().DisplayName));
                FilePathAbsolute      fp = new FilePathAbsolute(openFileDialog2.FileName);
                mikeSheFileName = fp.GetPathRelativeFrom(dp);
                RaisePropertyChanged("MikeSheFileName");
            }
        }
Exemplo n.º 6
0
 /// <summary>
 /// Returns a relative path string from a full path.
 /// </summary>
 /// <returns></returns>
 public static string GetRelativePath(string rootDir, string filePath)
 {
     if (rootDir == null || filePath == null)
     {
         return(filePath);
     }
     if (IsSubdirectory(rootDir, filePath))
     {
         var filePathAbsolute              = new FilePathAbsolute(filePath);
         var directoryPathAbsolute         = new DirectoryPathAbsolute(rootDir);
         FilePathRelative filePathRelative = filePathAbsolute.GetPathRelativeFrom(directoryPathAbsolute);
         return(filePathRelative.Path);
     }
     return(filePath);
 }
Exemplo n.º 7
0
 /// <summary>
 /// Returns a relative path string from a full path.
 /// </summary>
 /// <returns></returns>
 public static string GetRelativePath(string rootDir, string filePath)
 {
     if (rootDir == null || filePath == null)
     {
         return(filePath);
     }
     if (IsSubdirectory(rootDir, filePath))
     {
         if (rootDir.StartsWith("\\")) //network disk?
         {
             return("." + filePath.Substring(rootDir.Length));
         }
         else
         {
             var filePathAbsolute              = new FilePathAbsolute(filePath);
             var directoryPathAbsolute         = new DirectoryPathAbsolute(rootDir);
             FilePathRelative filePathRelative = filePathAbsolute.GetPathRelativeFrom(directoryPathAbsolute);
             return(filePathRelative.Path);
         }
     }
     return(filePath);
 }
Exemplo n.º 8
0
    static void Main(string[] args)
    {
        FilePathAbsolute      filePathAbsolute1, filePathAbsolute2;
        FilePathRelative      filePathRelative1;
        DirectoryPathAbsolute directoryPathAbsolute1;
        DirectoryPathRelative directoryPathRelative1;



        //  Path normalization
        filePathAbsolute1 = new FilePathAbsolute(@"C:/Dir1\\File.txt");
        Debug.Assert(filePathAbsolute1.Path == @"C:\Dir1\File.txt");

        directoryPathAbsolute1 = new DirectoryPathAbsolute(@"C:/Dir1\\Dir2\");
        Debug.Assert(directoryPathAbsolute1.Path == @"C:\Dir1\Dir2");

        directoryPathAbsolute1 = new DirectoryPathAbsolute(@"C:\Dir1\..\Dir2\.");
        Debug.Assert(directoryPathAbsolute1.Path == @"C:\Dir2");



        // Path comparison
        filePathAbsolute1 = new FilePathAbsolute(@"C:/Dir1\\File.txt");
        filePathAbsolute2 = new FilePathAbsolute(@"C:\DIR1\FILE.TXT");
        Debug.Assert(filePathAbsolute1.Equals(filePathAbsolute2));
        Debug.Assert(filePathAbsolute1 == filePathAbsolute2);



        // Relative -> Absolute path conversion
        filePathRelative1      = new FilePathRelative(@"..\..\Dir1\File.txt");
        directoryPathAbsolute1 = new DirectoryPathAbsolute(@"C:\Dir2\Dir3\Dir4");
        filePathAbsolute1      = filePathRelative1.GetAbsolutePathFrom(directoryPathAbsolute1);
        Debug.Assert(filePathAbsolute1.Path == @"C:\Dir2\Dir1\File.txt");



        // Absolute -> Relative path conversion
        filePathAbsolute1      = new FilePathAbsolute(@"C:\Dir1\File.txt");
        directoryPathAbsolute1 = new DirectoryPathAbsolute(@"C:\Dir2\Dir3\Dir4");
        filePathRelative1      = filePathAbsolute1.GetPathRelativeFrom(directoryPathAbsolute1);
        Debug.Assert(filePathRelative1.Path == @"..\..\..\Dir1\File.txt");



        // Path string validation
        string reason;

        Debug.Assert(PathHelper.IsValidAbsolutePath(@"C:\Dir2\Dir1", out reason));
        Debug.Assert(!PathHelper.IsValidAbsolutePath(@"C:\..\Dir1", out reason));
        Debug.Assert(!PathHelper.IsValidAbsolutePath(@".\Dir1", out reason));
        Debug.Assert(!PathHelper.IsValidAbsolutePath(@"1:\Dir1", out reason));
        Debug.Assert(PathHelper.IsValidRelativePath(@".\Dir1\Dir2", out reason));
        Debug.Assert(PathHelper.IsValidRelativePath(@"..\Dir1\Dir2", out reason));
        Debug.Assert(PathHelper.IsValidRelativePath(@".\Dir1\..\Dir2", out reason));
        Debug.Assert(!PathHelper.IsValidRelativePath(@".\Dir1\..\..\Dir2", out reason));
        Debug.Assert(!PathHelper.IsValidRelativePath(@"C:\Dir1\Dir2", out reason));



        // File name & extension
        filePathAbsolute1 = new FilePathAbsolute(@"C:\Dir1\File.cs.Txt");
        Debug.Assert(filePathAbsolute1.FileName == "File.cs.Txt");
        Debug.Assert(filePathAbsolute1.FileNameWithoutExtension == "File.cs");
        Debug.Assert(filePathAbsolute1.FileExtension == ".Txt");
        Debug.Assert(filePathAbsolute1.HasExtension(".txt"));



        // Path browsing
        filePathAbsolute1 = new FilePathAbsolute(@"C:\Dir1\File.cs.Txt");
        Debug.Assert(filePathAbsolute1.ParentDirectoryPath.Path == @"C:\Dir1");
        Debug.Assert(filePathAbsolute1.GetBrotherFileWithName("File.xml").Path == @"C:\Dir1\File.xml");
        Debug.Assert(filePathAbsolute1.ParentDirectoryPath.GetChildDirectoryWithName("Dir2").Path == @"C:\Dir1\Dir2");
        Debug.Assert(filePathAbsolute1.ParentDirectoryPath.GetChildDirectoryWithName("..").Path == @"C:");

        directoryPathRelative1 = new DirectoryPathRelative(@"..\Dir1\Dir2");
        Debug.Assert(directoryPathRelative1.ParentDirectoryPath.Path == @"..\Dir1");



        // Path rebasing
        directoryPathAbsolute1 = new DirectoryPathAbsolute(@"C:\Dir1\Dir2\Dir3");
        DirectoryPathAbsolute directoryPathAbsolute2 = new DirectoryPathAbsolute(@"E:\Dir4\Dir1");
        DirectoryPathAbsolute rebasedPath;

        PathHelper.TryRebasePath(directoryPathAbsolute1, directoryPathAbsolute2, out rebasedPath);
        Debug.Assert(rebasedPath.Path == @"E:\Dir4\Dir1\Dir2\Dir3");


        // List of path  ListOfPathsEquals \ Contains \ TryGetCommonRootDirectory
        List <DirectoryPathAbsolute> list1 = new List <DirectoryPathAbsolute>();
        List <DirectoryPathAbsolute> list2 = new List <DirectoryPathAbsolute>();

        list1.Add(new DirectoryPathAbsolute(@"C:\Dir1\Dir2"));
        list2.Add(new DirectoryPathAbsolute(@"c:\dir1\dir2"));
        list1.Add(new DirectoryPathAbsolute(@"C:\Dir1\Dir3\Dir4"));
        list2.Add(new DirectoryPathAbsolute(@"c:\dir1\dir3\dir4"));
        Debug.Assert(ListOfPathHelper.ListOfPathsEquals(list1, list2));
        Debug.Assert(ListOfPathHelper.Contains(list1, new DirectoryPathAbsolute(@"C:\Dir1\dir2")));
        ListOfPathHelper.TryGetCommonRootDirectory(list1, out directoryPathAbsolute1);
        Debug.Assert(directoryPathAbsolute1.Path == @"C:\Dir1");


        // List of path   GetListOfUniqueDirsAndUniqueFileNames
        List <FilePathAbsolute> list = new List <FilePathAbsolute>();

        list.Add(new FilePathAbsolute(@"E:\Dir1\Dir2\File1.txt"));
        list.Add(new FilePathAbsolute(@"E:\dir1\dir2\File2.txt"));
        list.Add(new FilePathAbsolute(@"E:\Dir1\Dir2\Dir3\file2.txt"));
        List <DirectoryPathAbsolute> listOfUniqueDirs;
        List <string> listOfUniqueFileNames;

        ListOfPathHelper.GetListOfUniqueDirsAndUniqueFileNames(list, out listOfUniqueDirs, out listOfUniqueFileNames);
        Debug.Assert(listOfUniqueDirs.Count == 2);
        Debug.Assert(listOfUniqueDirs[0].Path == @"E:\Dir1\Dir2");
        Debug.Assert(listOfUniqueDirs[1].Path == @"E:\Dir1\Dir2\Dir3");
        Debug.Assert(listOfUniqueFileNames.Count == 2);
        Debug.Assert(listOfUniqueFileNames[0] == "File1.txt");
        Debug.Assert(listOfUniqueFileNames[1] == "File2.txt");


        // Interaction with System.IO API
        filePathAbsolute1 = new FilePathAbsolute(
            System.Reflection.Assembly.GetExecutingAssembly().Location);
        Debug.Assert(filePathAbsolute1.Exists);
        System.IO.FileInfo fileInfo = filePathAbsolute1.FileInfo;

        directoryPathAbsolute1 = filePathAbsolute1.ParentDirectoryPath as DirectoryPathAbsolute;
        Debug.Assert(directoryPathAbsolute1.Exists);
        System.IO.DirectoryInfo directoryInfo = directoryPathAbsolute1.DirectoryInfo;

        List <DirectoryPathAbsolute> listSubDir  = directoryPathAbsolute1.ChildrenDirectoriesPath;
        List <FilePathAbsolute>      listSubFile = directoryPathAbsolute1.ChildrenFilesPath;
    }
Exemplo n.º 9
0
        private void FromXML(XDocument XDoc)
        {
            var Elem = XDoc.Element("ScenarioRuns");

            var m = Elem.Element("ModelFiles");

            if (m != null)
            {
                foreach (var f in m.Elements("FileName"))
                {
                    this.LoadModel(f.Value);
                }
            }

            OutputDirectory = Elem.Element("OutputDirectory").Value;
            Prefix          = Elem.Element("Prefix").Value;

            m = Elem.Element("MikeSheFileName");
            if (m != null)
            {
                mikeSheFileName = new FilePathRelative(m.Value);
                RaisePropertyChanged("MikeSheFileName");
            }

            m = Elem.Element("PostProcessBatFile");
            if (m != null)
            {
                postProcessBat = new FilePathRelative(m.Value);
                RaisePropertyChanged("PostProcessBat");
            }


            var fs = Elem.Element("FilesToCopy");

            if (fs != null)
            {
                foreach (var f in fs.Elements("FileName"))
                {
                    this.FileNamesToCopy.Add(f.Value);
                }
            }


            var slf = Elem.Element("SimlabFileName");

            if (slf != null)
            {
                loadSimLab(slf.Value);
            }

            var sctorun = Elem.Element("ScenariosToRun");

            if (sctorun != null & Runs != null)
            {
                var splits = sctorun.Value.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);

                foreach (var r in Runs)
                {
                    r.RunThis = false;
                }

                foreach (var s in splits)
                {
                    int index;
                    if (int.TryParse(s, out index))
                    {
                        if (index <= Runs.Count)
                        {
                            var r = Runs.SingleOrDefault(var => var.Number == index);
                            if (r != null)
                            {
                                r.RunThis = true;
                            }
                        }
                    }
                }
            }
        }