From fd36183afbc4c395357f02c01b1ba87a23f328e0 Mon Sep 17 00:00:00 2001
From: Maximilian Schulz <maximilian.schulz@hs-hannover.de>
Date: Mon, 31 Mar 2014 11:37:27 +0200
Subject: [PATCH] [TASK] Adds can_execute methods for loaders

Before this commit every loader just used the
can_execute of the AbstractLoader.
---
 hshetl/loaders.py | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/hshetl/loaders.py b/hshetl/loaders.py
index 3b21faf..30b6017 100644
--- a/hshetl/loaders.py
+++ b/hshetl/loaders.py
@@ -132,6 +132,9 @@ class CsvLoader(AbstractLoader):
         self.dialect = dialect
         self._resolve_dialect()
 
+    def can_execute(self, connector):
+        '''Defines which connector can be handled by this extractor.'''
+        return isinstance(connector, FileConnector)
 
     def _update(self, data = []):
         '''This loader can not update records. Therefore only empty data is allowed'''
@@ -201,6 +204,10 @@ class SqlAlchemyLoader(AbstractLoader):
         self.table_name = table_name
         '''The name of the table where the records will be load.'''
 
+    def can_execute(self, connector):
+        '''Defines which connector can be handled by this extractor.'''
+        return isinstance(connector, SqlAlchemyConnector)
+
     def _execute(self, result):
         '''Executes the loading of data. Distinguishes between update, insert and delete'''
         self.table = Table(self.table_name,
@@ -299,6 +306,10 @@ class LdapLoader(AbstractLoader):
         self.objectClass = objectClass
         '''The objectClass of new inserted records.'''
 
+    def can_execute(self, connector):
+        '''Defines which connector can be handled by this extractor.'''
+        return isinstance(connector, LdapConnector)
+
     def _execute(self, result):
         '''Executes the loading of data. Distinguishes between update, insert and delete.'''
         logging.debug('Loads data: ' + self.__class__.__name__)
-- 
GitLab