Files
.vscode
Compare
Date-Group
FaceRecognitionDotNet
Instance
Map
Metadata
Not-Copy-Copy
PrepareForOld
Property
Property-Compare
Resize
Shared
.vscode
Models
Methods
Properties
Stateless
Methods
%ClassName%.cs .ai
Age.cs
Closest.cs
Container.cs
DistanceHolder.cs
Face.cs
FaceFileSystem.cs
FacePoint.cs
FileHolder.cs
FileSystem.cs
I%ClassName%.cs .ai
IAge.cs
IBackgroundPage.cs
IClosest.cs
IContainer.cs
IDirectoryFileSystem.cs
IDistanceHolder.cs
IFace.cs
IFaceFileSystem.cs
IFacePoint.cs
IFileHolder.cs
IFileSystem.cs
IIMapping.cs
IIndex.cs
IItem.cs
ILocation.cs
IMetadataFile.cs
IMetadataFileCollection.cs
IMetadataFileId.cs
IMethodName.cs
IPath.cs
IPerson.cs
IPersonAddress.cs
IPersonAddressCity.cs
IPersonAddressState.cs
IPersonAddressStreet.cs
IPersonAddressZipCode.cs
IPersonBirthday.cs
IPersonComment.cs
IPersonEmail.cs
IPersonId.cs
IPersonName.cs
IPersonNameAlias.cs
IPersonNameFirst.cs
IPersonNameLast.cs
IPersonNameMiddle.cs
IPersonNumber.cs
IPersonURL.cs
IProperty.cs
IRelativePaths.cs
IStorage.cs
IWorkingDirectory.cs
ImageHelper.cs
Index.cs
Item.cs
Location.cs
Mapping.cs
MetadataFile.cs
MetadataFileCollection.cs
MetadataFileId.cs
Person.cs
PersonAddress.cs
PersonAddressCity.cs
PersonAddressState.cs
PersonAddressStreet.cs
PersonAddressZipCode.cs
PersonBirthday.cs
PersonComment.cs
PersonEmail.cs
PersonId.cs
PersonName.cs
PersonNameAlias.cs
PersonNameFirst.cs
PersonNameLast.cs
PersonNameMiddle.cs
PersonNumber.cs
PersonURL.cs
Property.cs
RelativePaths.cs
Storage.cs
WorkingDirectory.cs
XPath.cs
FacePart.cs
IClosest.cs
IExif.cs
IFaceDistance.cs
ILocation.cs
IMapping.cs
IPerson.cs
IPersonBirthday.cs
ImageFormat.cs
Mode.cs
Model.cs
PredictorModel.cs
%ClassName%.cs .ai
Closest.cs
Console.cs
Container.cs
DirectoryFileSystem.cs
DistanceHolder.cs
Face.cs
FaceDistance.cs
FaceEncoding.cs
FaceFileSystem.cs
FacePoint.cs
FileHolder.cs
FileSystem.cs
Item.cs
Location.cs
Mapping.cs
MappingContainer.cs
MetadataFile.cs
MetadataFileCollection.cs
MetadataFileId.cs
Navigate.cs
OutputResolution.cs
Person.cs
PersonAddress.cs
PersonAddressCity.cs
PersonAddressState.cs
PersonAddressStreet.cs
PersonAddressZipCode.cs
PersonBirthday.cs
PersonComment.cs
PersonEmail.cs
PersonId.cs
PersonImport.cs
PersonName.cs
PersonNameAlias.cs
PersonNameFirst.cs
PersonNameLast.cs
PersonNameMiddle.cs
PersonNumber.cs
PersonURL.cs
Property.cs
RelativePaths.cs
Storage.cs
XPath.cs
Phares
Sample-Data
View-by-Distance.Shared.csproj
Tests
TestsWithFaceRecognitionDotNet
.editorconfig
.gitattributes
.gitignore
.txt
View-by-Distance-MKLink-Console.sln
package.json
view-by-distance-mklink-con…/Shared/Models/Stateless/Methods/FileSystem.cs
2022-08-22 09:10:19 -07:00

66 lines
3.7 KiB
C#

namespace View_by_Distance.Shared.Models.Stateless.Methods;
internal abstract class FileSystem
{ // ...
private static void SetFileSystemCollection(string requestPath, (string RootResultsDirectoryAbsoluteUri, string C_ResizeContentDirectory, string D_FacesContentDirectory, string E_DistanceCollectionDirectory) tuple, bool all, List<Models.FileSystem> results, IEnumerator<string> subDirectoryFiles, List<Models.FaceFileSystem> faceFileSystemCollection)
{
Models.Face face;
Models.FaceFileSystem faceFileSystem;
face = Face.GetFace(subDirectoryFiles.Current);
faceFileSystem = new Models.FaceFileSystem(requestPath, tuple.RootResultsDirectoryAbsoluteUri.Length, tuple.C_ResizeContentDirectory, tuple.D_FacesContentDirectory, subDirectoryFiles.Current, face);
if (!all)
results.Add(faceFileSystem);
else
faceFileSystemCollection.Add(faceFileSystem);
}
private static void LoopFileSystemCollection(string requestPath, (string RootResultsDirectoryAbsoluteUri, string C_ResizeContentDirectory, string D_FacesContentDirectory, string E_DistanceCollectionDirectory) tuple, bool all, List<Models.FileSystem> results, IEnumerator<string> subDirectoryFiles, List<Models.FaceFileSystem> faceFileSystemCollection)
{
for (int j = 0; j < int.MaxValue; j++)
{
SetFileSystemCollection(requestPath, tuple, all, results, subDirectoryFiles, faceFileSystemCollection);
if (!all || !subDirectoryFiles.MoveNext())
break;
}
}
private static void SetFileSystemCollection(string[] directories, List<Models.FileSystem> results, int i)
{
DirectoryInfo directoryInfo = new(directories[i]);
Models.FileSystem fileSystem = new DirectoryFileSystem(directoryInfo);
results.Add(fileSystem);
}
private static void LoopFileSystemCollection(string requestPath, (string RootResultsDirectoryAbsoluteUri, string C_ResizeContentDirectory, string D_FacesContentDirectory, string E_DistanceCollectionDirectory) tuple, string[] directories, bool all, List<Models.FileSystem> results, IEnumerator<string> subDirectoryFiles, List<Models.FaceFileSystem> faceFileSystemCollection, int i)
{
if (subDirectoryFiles.MoveNext())
LoopFileSystemCollection(requestPath, tuple, all, results, subDirectoryFiles, faceFileSystemCollection);
else
SetFileSystemCollection(directories, results, i);
}
internal static List<Models.FileSystem> GetFileSystemCollection(string requestPath, (string RootResultsDirectoryAbsoluteUri, string C_ResizeContentDirectory, string D_FacesContentDirectory, string E_DistanceCollectionDirectory) tuple, string[] directories, string[] files, bool all)
{
List<Models.FileSystem> results = new();
Models.Face face;
Models.FaceFileSystem faceFileSystem;
IEnumerator<string> subDirectoryFiles;
List<Models.FaceFileSystem> faceFileSystemCollection = new();
for (int i = 0; i < directories.Length; i++)
{
subDirectoryFiles = Directory.EnumerateFiles(directories[i], "*.json", SearchOption.TopDirectoryOnly).GetEnumerator();
LoopFileSystemCollection(requestPath, tuple, directories, all, results, subDirectoryFiles, faceFileSystemCollection, i);
}
for (int i = 0; i < files.Length; i++)
{
face = Face.GetFace(files[i]);
faceFileSystem = new Models.FaceFileSystem(requestPath, tuple.RootResultsDirectoryAbsoluteUri.Length, tuple.C_ResizeContentDirectory, tuple.D_FacesContentDirectory, files[i], face);
results.Add(faceFileSystem);
}
if (all)
results.AddRange(faceFileSystemCollection);
return results;
}
}