def _ili2db_jar_arg(self): ili2db_bin = get_ili2db_bin( self.tool, self._get_ili2db_version(), self.stdout, self.stderr ) if not ili2db_bin: return self.ILI2DB_NOT_FOUND return ["-jar", ili2db_bin]
def run(self): ili2db_bin = get_ili2db_bin(self.tool, self.stdout, self.stderr) if not ili2db_bin: return ili2db_jar_arg = ["-jar", ili2db_bin] self.configuration.tool = self.tool db_simple_factory = DbSimpleFactory() db_factory = db_simple_factory.create_factory(self.tool) config_manager = db_factory.get_db_command_config_manager( self.configuration) args = config_manager.get_ili2db_args(False) args_hide_password = config_manager.get_ili2db_args(True) java_path = get_java_path(self.configuration.base_configuration) proc = QProcess() proc.readyReadStandardError.connect( functools.partial(self.stderr_ready, proc=proc)) proc.readyReadStandardOutput.connect( functools.partial(self.stdout_ready, proc=proc)) proc.start(java_path, ili2db_jar_arg + args) if not proc.waitForStarted(): proc = None if not proc: raise JavaNotFoundError() safe_args = ili2db_jar_arg + args_hide_password safe_command = java_path + ' ' + ' '.join(safe_args) self.process_started.emit(safe_command) self.__result = Importer.ERROR loop = QEventLoop() proc.finished.connect(loop.exit) loop.exec() self.process_finished.emit(proc.exitCode(), self.__result) return self.__result
def configure_from_modelbaker(iface): """ Configures config.JAVA/ILI2PG paths using modelbaker. Returns whether modelbaker is available, and displays instructions if not. """ REQUIRED_VERSION = "v6.4.0" # TODO : update once https://github.com/opengisch/QgisModelBaker/pull/473 is released modelbaker = plugins.get("QgisModelBaker") if modelbaker is None: iface.messageBar().pushMessage( "Error", "This feature requires the ModelBaker plugin. Please install and activate it from the plugin manager.", level=Qgis.Critical, ) return False elif modelbaker.__version__ != "dev" and parse_version( modelbaker.__version__) < parse_version(REQUIRED_VERSION): iface.messageBar().pushMessage( "Error", f"This feature requires a more recent version of the ModelBaker plugin (currently : {modelbaker.__version__}). Please install and activate version {REQUIRED_VERSION} or newer from the plugin manager.", level=Qgis.Critical, ) return False # We reuse modelbaker's logic to get the java path and ili2pg executables from withing QGIS # Maybe we could reuse even more (IliExecutable...) ? stdout = SimpleNamespace() stdout.emit = logger.info stderr = SimpleNamespace() stderr.emit = logger.error config.JAVA = ili2dbutils.get_java_path(ili2dbconfig.BaseConfiguration()) config.ILI2PG = ili2dbutils.get_ili2db_bin(globals.DbIliMode.ili2pg, 4, stdout, stderr) return True