blob: 145b5215fc24efa616fb98d2f716444540cd2211 [file] [log] [blame]
#region Apache License, Version 2.0
//
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
//
#endregion
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using NPanday.Model.Setting;
namespace NPanday.Artifact
{
public class PathUtil
{
public static FileInfo GetPrivateApplicationBaseFileFor(Artifact artifact, DirectoryInfo localRepository, string currentDir)
{
FileInfo target = new FileInfo(currentDir + Path.PathSeparator + "target" + Path.PathSeparator+artifact.ArtifactId + artifact.Extension);
FileInfo source = GetUserAssemblyCacheFileFor(artifact, localRepository);
if(source.Exists)
{
File.Copy( source.ToString(), target.ToString());
}
return target;
}
public static FileInfo GetUserAssemblyCacheFileFor(Artifact artifact, DirectoryInfo localRepository)
{
return new FileInfo( Path.Combine(localRepository.ToString(), string.Format(@"{0}\{1}\{2}\{1}-{2}.{3}", Tokenize(artifact.GroupId), artifact.ArtifactId, artifact.Version, artifact.Extension)));
}
public static string Tokenize(String id)
{
return id.Replace(".",Path.DirectorySeparatorChar.ToString());
}
public static string[] GetRelativePathTokens(DirectoryInfo parentPath, FileInfo path)
{
return GetRelativePathTokens(parentPath.FullName, path.FullName);
}
public static string[] GetRelativePathTokens(DirectoryInfo parentPath, DirectoryInfo path)
{
return GetRelativePathTokens(parentPath.FullName, path.FullName);
}
public static string[] GetRelativePathTokens(FileInfo parentPath, FileInfo path)
{
return GetRelativePathTokens(parentPath.FullName, path.FullName);
}
public static string[] GetRelativePathTokens(string parentPath, string path)
{
string[] parent = TokenizePath(parentPath);
string[] child = TokenizePath(path);
List<string> list = new List<string>();
for (int i = 0; i < parent.Length - 1; i++)
{
if (!parent[i].Equals(child[i], StringComparison.OrdinalIgnoreCase))
{
throw new Exception(string.Format("Path {0} is not a child path of {1}", path, parentPath));
}
}
list.AddRange(child);
list.RemoveRange(0, parent.Length - 1);
return list.ToArray();
}
public static string[] TokenizePath(FileInfo fileInfo)
{
return TokenizePath(fileInfo.FullName);
}
public static string[] tokenizePath(DirectoryInfo directoryInfo)
{
return TokenizePath(directoryInfo.FullName);
}
public static string[] TokenizePath(string filename)
{
string path = Path.GetFullPath(filename);
path = path.Replace('/', '\\');
return path.Split('\\');
}
}
}