Locator is not required.
More tests passing.
This commit is contained in:
parent
e33ceb62f1
commit
b4ce84740a
6 changed files with 149 additions and 54 deletions
|
|
@ -464,7 +464,7 @@ namespace MatterHackers.MatterControl.PrintLibrary
|
|||
|
||||
public override void OnDragDrop(FileDropEventArgs fileDropEventArgs)
|
||||
{
|
||||
LibraryDataView.CurrentLibraryProvider.AddFilesToLibrary(fileDropEventArgs.DroppedFiles, LibraryDataView.CurrentLibraryProvider.GetProviderLocator());
|
||||
LibraryDataView.CurrentLibraryProvider.AddFilesToLibrary(fileDropEventArgs.DroppedFiles);
|
||||
|
||||
base.OnDragDrop(fileDropEventArgs);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -98,7 +98,7 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider
|
|||
|
||||
public abstract void AddCollectionToLibrary(string collectionName);
|
||||
|
||||
public abstract void AddFilesToLibrary(IList<string> files, List<ProviderLocatorNode> providerSavePath, ReportProgressRatio reportProgress = null, RunWorkerCompletedEventHandler callback = null);
|
||||
public abstract void AddFilesToLibrary(IList<string> files, ReportProgressRatio reportProgress = null, RunWorkerCompletedEventHandler callback = null);
|
||||
|
||||
public abstract void AddItem(PrintItemWrapper itemToAdd);
|
||||
|
||||
|
|
|
|||
|
|
@ -136,23 +136,15 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider
|
|||
}
|
||||
}
|
||||
|
||||
public override void AddFilesToLibrary(IList<string> files, List<ProviderLocatorNode> providerLocator, ReportProgressRatio reportProgress = null, RunWorkerCompletedEventHandler callback = null)
|
||||
public override void AddFilesToLibrary(IList<string> files, ReportProgressRatio reportProgress = null, RunWorkerCompletedEventHandler callback = null)
|
||||
{
|
||||
if (providerLocator == null || providerLocator.Count <= 1)
|
||||
{
|
||||
string destPath = rootPath;
|
||||
string destPath = rootPath;
|
||||
|
||||
CopyAllFiles(files, destPath);
|
||||
}
|
||||
else // we have a path that we need to save to
|
||||
{
|
||||
string destPath = GetPathFromLocator(providerLocator);
|
||||
|
||||
CopyAllFiles(files, destPath);
|
||||
}
|
||||
CopyAllFiles(files, destPath);
|
||||
|
||||
GetFilesAndCollectionsInCurrentDirectory();
|
||||
LibraryProvider.OnDataReloaded(null);
|
||||
LibraryProvider.OnItemAdded(null);
|
||||
}
|
||||
|
||||
public override void AddItem(PrintItemWrapper itemToAdd)
|
||||
|
|
|
|||
|
|
@ -143,12 +143,9 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider
|
|||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public override void AddFilesToLibrary(IList<string> files, List<ProviderLocatorNode> providerSavePath, ReportProgressRatio reportProgress = null, RunWorkerCompletedEventHandler callback = null)
|
||||
public override void AddFilesToLibrary(IList<string> files, ReportProgressRatio reportProgress = null, RunWorkerCompletedEventHandler callback = null)
|
||||
{
|
||||
List<ProviderLocatorNode> subProviderSavePath;
|
||||
int libraryProviderToUseIndex = GetProviderIndex(providerSavePath, out subProviderSavePath);
|
||||
|
||||
libraryProviders[libraryProviderToUseIndex].AddFilesToLibrary(files, subProviderSavePath, reportProgress, callback);
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public override void AddItem(PrintItemWrapper itemToAdd)
|
||||
|
|
|
|||
|
|
@ -234,10 +234,9 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider
|
|||
newCollection.ParentCollectionID = baseLibraryCollection.Id;
|
||||
newCollection.Commit();
|
||||
LoadLibraryItems();
|
||||
LibraryProvider.OnDataReloaded(null);
|
||||
}
|
||||
|
||||
public override void AddFilesToLibrary(IList<string> files, List<ProviderLocatorNode> providerSavePath = null, ReportProgressRatio reportProgress = null, RunWorkerCompletedEventHandler callback = null)
|
||||
public override void AddFilesToLibrary(IList<string> files, ReportProgressRatio reportProgress = null, RunWorkerCompletedEventHandler callback = null)
|
||||
{
|
||||
if (files != null && files.Count > 0)
|
||||
{
|
||||
|
|
@ -254,6 +253,12 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider
|
|||
|
||||
loadFilesIntoLibraryBackgroundWorker.RunWorkerAsync(files);
|
||||
}
|
||||
|
||||
if (baseLibraryCollection != null)
|
||||
{
|
||||
LoadLibraryItems();
|
||||
LibraryProvider.OnDataReloaded(null);
|
||||
}
|
||||
}
|
||||
|
||||
public override void AddItem(PrintItemWrapper itemToAdd)
|
||||
|
|
@ -279,7 +284,7 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider
|
|||
printItems.Insert(indexToInsert, item);
|
||||
// Check if the collection we are adding to is the the currently visible collection.
|
||||
List<ProviderLocatorNode> currentDisplayedCollection = GetProviderLocator();
|
||||
if (currentDisplayedCollection.Count > 0 && currentDisplayedCollection[1].Key == LibraryProviderSQLite.StaticProviderKey)
|
||||
if (currentDisplayedCollection.Count > 0 && currentDisplayedCollection[0].Key == LibraryProviderSQLite.StaticProviderKey)
|
||||
{
|
||||
OnItemAdded(new IndexArgs(indexToInsert));
|
||||
}
|
||||
|
|
@ -328,6 +333,8 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider
|
|||
{
|
||||
childCollections.AddRange(collections);
|
||||
}
|
||||
|
||||
LibraryProvider.OnDataReloaded(null);
|
||||
}
|
||||
|
||||
public override void RemoveCollection(PrintItemCollection collectionToRemove)
|
||||
|
|
@ -351,6 +358,7 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider
|
|||
// and remove it from the data base
|
||||
printItemWrapper.Delete();
|
||||
|
||||
LoadLibraryItems();
|
||||
OnItemRemoved(new IndexArgs(index));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@ using MatterHackers.MatterControl.PrintQueue;
|
|||
using MatterHackers.MatterControl.DataStorage;
|
||||
using System.IO;
|
||||
using MatterHackers.Agg.PlatformAbstract;
|
||||
using System.Threading;
|
||||
|
||||
namespace MatterControl.Tests
|
||||
{
|
||||
|
|
@ -47,7 +48,8 @@ namespace MatterControl.Tests
|
|||
public class LibraryProviderTests
|
||||
{
|
||||
string pathToMesh = Path.Combine("..", "..", "..", "TestData", "TestMeshes", "LibraryProviderData");
|
||||
string meshFileName;
|
||||
string meshFileName = "Box20x20x10.stl";
|
||||
string meshPathAndFileName;
|
||||
|
||||
bool dataReloaded = false;
|
||||
bool itemAdded = false;
|
||||
|
|
@ -65,7 +67,7 @@ namespace MatterControl.Tests
|
|||
[SetUp]
|
||||
public void SetupBeforeTest()
|
||||
{
|
||||
meshFileName = Path.Combine(pathToMesh, "Box20x20x10.stl");
|
||||
meshPathAndFileName = Path.Combine(pathToMesh, meshFileName);
|
||||
|
||||
dataReloaded = false;
|
||||
itemAdded = false;
|
||||
|
|
@ -85,14 +87,15 @@ namespace MatterControl.Tests
|
|||
[Test, Category("LibraryProviderFileSystem")]
|
||||
public void LibraryProviderFileSystem_NavigationWorking()
|
||||
{
|
||||
Datastore.Instance.Initialize();
|
||||
Thread.Sleep(3000); // wait for the library to finish initializing
|
||||
|
||||
LibraryProviderFileSystem testProvider = new LibraryProviderFileSystem(pathToMesh, "TestPath", null);
|
||||
Assert.IsTrue(testProvider.CollectionCount == 0, "Start with a new database for these tests.");
|
||||
Assert.IsTrue(testProvider.ItemCount == 1, "Start with a new database for these tests.");
|
||||
PrintItemWrapper itemAtRoot = testProvider.GetPrintItemWrapper(0);
|
||||
List<ProviderLocatorNode> providerLocator = itemAtRoot.PrintItem.GetLibraryProviderLocator();
|
||||
Assert.IsTrue(providerLocator.Count == 1);
|
||||
|
||||
// create a collection and make sure it is on disk
|
||||
dataReloaded = false; // it has been loaded for the default set of parts
|
||||
string collectionName = "Collection1";
|
||||
string createdDirectory = Path.Combine(pathToMesh, collectionName);
|
||||
Assert.IsTrue(!Directory.Exists(createdDirectory));
|
||||
|
|
@ -102,42 +105,137 @@ namespace MatterControl.Tests
|
|||
Assert.IsTrue(dataReloaded == true);
|
||||
Assert.IsTrue(Directory.Exists(createdDirectory));
|
||||
|
||||
dataReloaded = false;
|
||||
// make sure removing it gets rid of it
|
||||
Assert.IsTrue(dataReloaded == false);
|
||||
testProvider.RemoveCollection(testProvider.GetCollectionItem(0));
|
||||
Assert.IsTrue(dataReloaded == true);
|
||||
Assert.IsTrue(!Directory.Exists(createdDirectory));
|
||||
|
||||
// test GetProviderForItem
|
||||
}
|
||||
|
||||
[Test, Category("LibraryProviderSqlite")]
|
||||
public void LibraryProviderSqlite_NavigationWorking()
|
||||
{
|
||||
LibraryProviderSQLite testProvider = new LibraryProviderSQLite(null, null);
|
||||
Assert.IsTrue(testProvider.CollectionCount == 0, "Start with a new database for these tests.");
|
||||
Assert.IsTrue(testProvider.ItemCount == 1, "Start with a new database for these tests.");
|
||||
PrintItemWrapper itemAtRoot = testProvider.GetPrintItemWrapper(0);
|
||||
List<ProviderLocatorNode> providerLocator = itemAtRoot.PrintItem.GetLibraryProviderLocator();
|
||||
Assert.IsTrue(providerLocator.Count == 1);
|
||||
|
||||
// create a collection and make sure it is on disk
|
||||
string collectionName = "Collection1";
|
||||
//Assert.IsTrue(); // assert that the record does not exist in the DB
|
||||
Assert.IsTrue(dataReloaded == false);
|
||||
testProvider.AddCollectionToLibrary(collectionName);
|
||||
Assert.IsTrue(testProvider.CollectionCount == 1);
|
||||
Assert.IsTrue(dataReloaded == true);
|
||||
// Assert.IsTrue(); // assert that the record does exist in the DB
|
||||
|
||||
// add an item works correctly
|
||||
LibraryProvider subProvider = testProvider.GetProviderForItem(testProvider.GetCollectionItem(0));
|
||||
dataReloaded = false;
|
||||
itemAdded = false;
|
||||
string subPathAndFile = Path.Combine(createdDirectory, meshFileName);
|
||||
Assert.IsTrue(!File.Exists(subPathAndFile));
|
||||
Assert.IsTrue(dataReloaded == false);
|
||||
Assert.IsTrue(itemAdded == false);
|
||||
|
||||
// WIP: saving the name incorectly for this location (does not need to be changed).
|
||||
subProvider.AddFilesToLibrary(new string[] { meshPathAndFileName });
|
||||
Thread.Sleep(3000); // wait for the add to finihs
|
||||
|
||||
Assert.IsTrue(subProvider.ItemCount == 1);
|
||||
Assert.IsTrue(dataReloaded == true);
|
||||
Assert.IsTrue(itemAdded == true);
|
||||
Assert.IsTrue(File.Exists(subPathAndFile));
|
||||
|
||||
// make sure the provider locator is correct
|
||||
|
||||
// remove item works
|
||||
dataReloaded = false;
|
||||
Assert.IsTrue(dataReloaded == false);
|
||||
Assert.IsTrue(itemRemoved == false);
|
||||
subProvider.RemoveItem(subProvider.GetPrintItemWrapper(0));
|
||||
Assert.IsTrue(dataReloaded == true);
|
||||
Assert.IsTrue(itemRemoved == true);
|
||||
Assert.IsTrue(!File.Exists(subPathAndFile));
|
||||
|
||||
// remove collection gets rid of it
|
||||
dataReloaded = false;
|
||||
// make sure removing it gets rid of it
|
||||
Assert.IsTrue(dataReloaded == false);
|
||||
testProvider.RemoveCollection(testProvider.GetCollectionItem(0));
|
||||
Assert.IsTrue(dataReloaded == true);
|
||||
Assert.IsTrue(testProvider.CollectionCount == 0);
|
||||
//Assert.IsTrue(); // assert that the record does not exist in the DB
|
||||
Assert.IsTrue(!Directory.Exists(createdDirectory));
|
||||
}
|
||||
|
||||
private bool NamedCollectionExists(string nameToLookFor)
|
||||
{
|
||||
string query = string.Format("SELECT * FROM PrintItemCollection WHERE Name = '{0}' ORDER BY Name ASC;", nameToLookFor);
|
||||
IEnumerable<PrintItemCollection> result = (IEnumerable<PrintItemCollection>)Datastore.Instance.dbSQLite.Query<PrintItemCollection>(query);
|
||||
foreach (PrintItemCollection collection in result)
|
||||
{
|
||||
if (collection.Name == nameToLookFor)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private bool NamedItemExists(string nameToLookFor)
|
||||
{
|
||||
string query = string.Format("SELECT * FROM PrintItem WHERE Name = '{0}' ORDER BY Name ASC;", nameToLookFor);
|
||||
IEnumerable<PrintItem> result = (IEnumerable<PrintItem>)Datastore.Instance.dbSQLite.Query<PrintItem>(query);
|
||||
foreach (PrintItem collection in result)
|
||||
{
|
||||
if (collection.Name == nameToLookFor)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
[Test, Category("LibraryProviderSqlite")]
|
||||
public void LibraryProviderSqlite_NavigationWorking()
|
||||
{
|
||||
Datastore.Instance.Initialize();
|
||||
LibraryProviderSQLite testProvider = new LibraryProviderSQLite(null, null);
|
||||
Thread.Sleep(3000); // wait for the library to finish initializing
|
||||
Assert.IsTrue(testProvider.CollectionCount == 0, "Start with a new database for these tests.");
|
||||
Assert.IsTrue(testProvider.ItemCount == 1, "Start with a new database for these tests.");
|
||||
|
||||
// create a collection and make sure it is on disk
|
||||
dataReloaded = false; // it has been loaded for the default set of parts
|
||||
string collectionName = "Collection1";
|
||||
Assert.IsTrue(!NamedCollectionExists(collectionName)); // assert that the record does not exist in the DB
|
||||
Assert.IsTrue(dataReloaded == false);
|
||||
testProvider.AddCollectionToLibrary(collectionName);
|
||||
Assert.IsTrue(testProvider.CollectionCount == 1);
|
||||
Assert.IsTrue(dataReloaded == true);
|
||||
Assert.IsTrue(NamedCollectionExists(collectionName)); // assert that the record does exist in the DB
|
||||
|
||||
PrintItemWrapper itemAtRoot = testProvider.GetPrintItemWrapper(0);
|
||||
List<ProviderLocatorNode> providerLocator = itemAtRoot.PrintItem.GetLibraryProviderLocator();
|
||||
Assert.IsTrue(providerLocator.Count == 1);
|
||||
|
||||
// add an item works correctly
|
||||
dataReloaded = false;
|
||||
itemAdded = false;
|
||||
Assert.IsTrue(!NamedItemExists(collectionName));
|
||||
Assert.IsTrue(dataReloaded == false);
|
||||
Assert.IsTrue(itemAdded == false);
|
||||
|
||||
testProvider.AddFilesToLibrary(new string[] { meshPathAndFileName });
|
||||
Thread.Sleep(3000); // wait for the add to finihs
|
||||
|
||||
Assert.IsTrue(testProvider.ItemCount == 2);
|
||||
Assert.IsTrue(dataReloaded == true);
|
||||
Assert.IsTrue(itemAdded == true);
|
||||
string fileNameWithExtension = Path.GetFileNameWithoutExtension(meshPathAndFileName);
|
||||
Assert.IsTrue(NamedItemExists(fileNameWithExtension));
|
||||
|
||||
// make sure the provider locator is correct
|
||||
|
||||
// remove item works
|
||||
dataReloaded = false;
|
||||
Assert.IsTrue(dataReloaded == false);
|
||||
Assert.IsTrue(itemRemoved == false);
|
||||
testProvider.RemoveItem(testProvider.GetPrintItemWrapper(1));
|
||||
Assert.IsTrue(dataReloaded == true);
|
||||
Assert.IsTrue(itemRemoved == true);
|
||||
Assert.IsTrue(!NamedItemExists(fileNameWithExtension));
|
||||
|
||||
// remove collection gets rid of it
|
||||
dataReloaded = false;
|
||||
Assert.IsTrue(dataReloaded == false);
|
||||
testProvider.RemoveCollection(testProvider.GetCollectionItem(0));
|
||||
Assert.IsTrue(dataReloaded == true);
|
||||
Assert.IsTrue(testProvider.CollectionCount == 0);
|
||||
Assert.IsTrue(!NamedCollectionExists(collectionName)); // assert that the record does not exist in the DB
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue