Init
This commit is contained in:
83
Shared/Models/Stateless/Methods/FaceFileSystem.cs
Normal file
83
Shared/Models/Stateless/Methods/FaceFileSystem.cs
Normal file
@ -0,0 +1,83 @@
|
||||
namespace View_by_Distance.Shared.Models.Stateless.Methods;
|
||||
|
||||
internal abstract class FaceFileSystem
|
||||
{ // ...
|
||||
|
||||
internal static void SearchForMissingFile(string fullFileName, FileInfo fileInfo, string dataFullFileName)
|
||||
{
|
||||
if (fileInfo is null || string.IsNullOrEmpty(fileInfo.FullName))
|
||||
fileInfo = new FileInfo(fullFileName);
|
||||
if (Directory.Exists(fileInfo.DirectoryName))
|
||||
throw new Exception($"File [{fileInfo.Name}] <{fullFileName}> doesn't exist!");
|
||||
else
|
||||
{
|
||||
string? parentDirectoryName = Path.GetDirectoryName(fileInfo.DirectoryName);
|
||||
if (!Directory.Exists(parentDirectoryName))
|
||||
throw new Exception($"Parent directory <{parentDirectoryName}> doesn't exist!");
|
||||
else
|
||||
{
|
||||
string[] files = Directory.GetFiles(parentDirectoryName, Path.GetFileName(fullFileName), SearchOption.AllDirectories);
|
||||
if (!files.Any())
|
||||
throw new Exception($"File [{fileInfo.Name}] <{fullFileName}> doesn't exist (deep search)!");
|
||||
else
|
||||
{
|
||||
if (string.IsNullOrEmpty(dataFullFileName) && !dataFullFileName.EndsWith(".json"))
|
||||
throw new Exception($"Maybe file <{Path.GetFileNameWithoutExtension(fullFileName)}> was moved to <{files[0]}>!");
|
||||
else
|
||||
{
|
||||
string json = File.ReadAllText(dataFullFileName);
|
||||
if (!json.Contains("MesaFab"))
|
||||
throw new Exception($"Maybe file <{Path.GetFileNameWithoutExtension(fullFileName)}> was moved to <{files[0]}> (unkown)!");
|
||||
else
|
||||
{
|
||||
json = json.Replace("MesaFab", "Mesa Fab");
|
||||
fileInfo = new FileInfo(dataFullFileName);
|
||||
File.WriteAllText(fileInfo.FullName, json);
|
||||
File.SetLastWriteTime(fileInfo.FullName, fileInfo.LastWriteTime);
|
||||
_ = new FileInfo(fullFileName);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
internal static Models.FaceFileSystem[] GetFaceFileSystemCollection(string requestPath, (string RootResultsDirectoryAbsoluteUri, string C_ResizeContentDirectory, string D_FacesContentDirectory, string E_DistanceCollectionDirectory) tuple, string selectedFileFullName)
|
||||
{
|
||||
List<Models.FaceFileSystem> results = new();
|
||||
FileInfo fileInfo;
|
||||
int? locationIndex;
|
||||
string jsonFileName;
|
||||
string? directoryName;
|
||||
string fileNameWithoutExtension;
|
||||
Models.FaceFileSystem faceFileSystem;
|
||||
string eDistanceCollectionfileFullName;
|
||||
Models.Face[] face = Face.GetFaces(selectedFileFullName);
|
||||
string extension = Path.GetExtension(selectedFileFullName);
|
||||
for (int i = 0; i < face.Length; i++)
|
||||
{
|
||||
if (face[i] is null)
|
||||
continue;
|
||||
locationIndex = face[i].LocationIndex;
|
||||
if (locationIndex is null)
|
||||
locationIndex = 0;
|
||||
else
|
||||
locationIndex = locationIndex.Value;
|
||||
directoryName = Path.GetDirectoryName(face[i].RelativePath);
|
||||
if (directoryName is null)
|
||||
continue;
|
||||
fileNameWithoutExtension = Path.GetFileNameWithoutExtension(face[i].RelativePath);
|
||||
jsonFileName = string.Concat(locationIndex.Value, " - ", fileNameWithoutExtension, extension);
|
||||
eDistanceCollectionfileFullName = string.Concat(tuple.E_DistanceCollectionDirectory, Path.Combine(directoryName, fileNameWithoutExtension, jsonFileName));
|
||||
if (i == 0 && extension is ".json" && eDistanceCollectionfileFullName != selectedFileFullName)
|
||||
throw new Exception();
|
||||
fileInfo = new(eDistanceCollectionfileFullName);
|
||||
if (!fileInfo.Exists)
|
||||
throw new Exception($"File <{eDistanceCollectionfileFullName}> doesn't exist!");
|
||||
faceFileSystem = new Models.FaceFileSystem(requestPath, tuple.RootResultsDirectoryAbsoluteUri.Length, tuple.C_ResizeContentDirectory, tuple.D_FacesContentDirectory, fileInfo.FullName, face[i]);
|
||||
results.Add(faceFileSystem);
|
||||
}
|
||||
return results.ToArray();
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user