use of org.pentaho.metaverse.api.MetaverseLocatorException in project pentaho-metaverse by pentaho.
the class BaseLocator method startScan.
/**
* Starts a full scan by this locator.
*
* @param locatorRunner The locator runner to use
* @throws MetaverseLocatorException
*/
protected void startScan(LocatorRunner<T> locatorRunner) throws MetaverseLocatorException {
if (futureTask != null && !futureTask.isDone()) {
throw new MetaverseLocatorException(Messages.getString("ERROR.BaseLocator.ScanAlreadyExecuting"));
}
IMetaverseNode node = getLocatorNode();
Date lastRun = new Date();
node.setProperty("lastScan", Long.toString(lastRun.getTime()));
metaverseBuilder.addNode(node);
runner = locatorRunner;
runner.setLocator(this);
LOG.debug(Messages.getString("DEBUG.Locator.StartScan", getLocatorType()));
futureTask = completionService.submit(runner, node.getStringID());
}
use of org.pentaho.metaverse.api.MetaverseLocatorException in project pentaho-metaverse by pentaho.
the class FileSystemLocator method startScan.
@Override
public void startScan() throws MetaverseLocatorException {
File root = new File(rootFolder);
if (!root.exists()) {
LOG.error(Messages.getString("ERROR.FileSystemLocator.RootFolder.DoesNotExist", root.getAbsolutePath()));
throw new MetaverseLocatorException(Messages.getString("ERROR.FileSystemLocator.RootFolder.DoesNotExist", root.getAbsolutePath()));
}
if (!root.isDirectory()) {
LOG.error(Messages.getString("ERROR.FileSystemLocator.RootFolder.NotAFolder", root.getAbsolutePath()));
throw new MetaverseLocatorException(Messages.getString("ERROR.FileSystemLocator.RootFolder.NotAFolder", root.getAbsolutePath()));
}
LocatorRunner<File> lr = new FileSystemLocatorRunner();
lr.setRoot(root);
startScan(lr);
}
use of org.pentaho.metaverse.api.MetaverseLocatorException in project pentaho-metaverse by pentaho.
the class FileSystemLocatorTest method testStartLocator.
/**
* Runs the spyLocator and checks the results
*
* @throws Exception When bad things happen
*/
@Test
public void testStartLocator() throws Exception {
TinkerGraph graph = new TinkerGraph();
IMetaverseBuilder metaverseBuilder = new MetaverseBuilder(graph);
spyLocator.setMetaverseBuilder(metaverseBuilder);
spyLocator.setRepositoryId("testrepo");
spyLocator.addDocumentListener(this);
spyLocator.setRootFolder("src/test/resources/solution");
assertEquals("Root folder is wrong", "src/test/resources/solution", spyLocator.getRootFolder());
TestFileSystemLocator.delay = 0;
spyLocator.setRootFolder("bogus");
events = new ArrayList<IDocumentEvent>();
try {
spyLocator.startScan();
MetaverseCompletionService.getInstance().waitTillEmpty();
fail();
} catch (MetaverseLocatorException e) {
assertEquals("Event count is wrong", 0, events.size());
}
spyLocator.setRootFolder("src/test/resources/solution/folder 2/parse.ktr");
events = new ArrayList<IDocumentEvent>();
try {
spyLocator.startScan();
MetaverseCompletionService.getInstance().waitTillEmpty();
fail();
} catch (MetaverseLocatorException e) {
assertEquals("Event count is wrong", 0, events.size());
}
spyLocator.setRootFolder("src/test/resources/solution");
assertEquals("Repo id is wrong", "testrepo", spyLocator.getRepositoryId());
assertNotNull("Indexer type is null", spyLocator.getLocatorType());
events = new ArrayList<IDocumentEvent>();
spyLocator.startScan();
MetaverseCompletionService.getInstance().waitTillEmpty();
assertEquals("Event count is wrong", 7, events.size());
for (IDocumentEvent event : events) {
System.out.println(event.getDocument().getStringID());
assertNotNull(event.getDocument());
MetaverseDocument document = (MetaverseDocument) event.getDocument();
if (document.getExtension().equals("ktr")) {
assertTrue(document.getContent() instanceof String);
} else if (document.getExtension().equals("kjb")) {
assertTrue(document.getContent() instanceof String);
}
}
spyLocator.removeDocumentListener(this);
events = new ArrayList<IDocumentEvent>();
spyLocator.startScan();
MetaverseCompletionService.getInstance().waitTillEmpty();
assertEquals("Event count is wrong", 0, events.size());
assertNotNull("Graph is null", graph);
GraphMLWriter writer = new GraphMLWriter();
writer.outputGraph(graph, new FileOutputStream(OUTPUT_FOLDER + "FileSystemLocatorTest.graphml"));
}
use of org.pentaho.metaverse.api.MetaverseLocatorException in project pentaho-metaverse by pentaho.
the class RepositoryLocator method startScan.
@Override
public void startScan() throws MetaverseLocatorException {
if (unifiedRepository == null) {
try {
unifiedRepository = getUnifiedRepository(session);
} catch (Exception e) {
throw new MetaverseLocatorException(Messages.getString("ERROR.RepositoryLocator.ScanAbortedNoRepo"), e);
}
}
RepositoryRequest request = new RepositoryRequest(ClientRepositoryPaths.getRootFolderPath(), true, -1, null);
RepositoryFileTree root = unifiedRepository.getTree(request);
List<RepositoryFileTree> children = root.getChildren();
LocatorRunner lr = new RepositoryLocatorRunner();
lr.setRoot(children);
startScan(lr);
}
Aggregations