Search in sources :

Example 6 with Transformation

use of org.pentaho.di.engine.api.model.Transformation in project pentaho-kettle by pentaho.

the class TransMetaConverterTest method testIncludesSubTransformationsFromRepository.

@Test
public void testIncludesSubTransformationsFromRepository() throws Exception {
    TransMeta parentTransMeta = new TransMeta(getClass().getResource("trans-meta-converter-parent.ktr").getPath());
    Repository repository = mock(Repository.class);
    TransMeta transMeta = new TransMeta();
    RepositoryDirectoryInterface repositoryDirectory = new RepositoryDirectory(null, "public");
    String directory = getClass().getResource("").toString().replace(File.separator, "/");
    when(repository.findDirectory("public")).thenReturn(repositoryDirectory);
    when(repository.loadTransformation("trans-meta-converter-sub.ktr", repositoryDirectory, null, true, null)).thenReturn(transMeta);
    parentTransMeta.setRepository(repository);
    parentTransMeta.setRepositoryDirectory(repositoryDirectory);
    parentTransMeta.setVariable("Internal.Entry.Current.Directory", "public");
    Transformation transformation = TransMetaConverter.convert(parentTransMeta);
    @SuppressWarnings({ "unchecked", "ConstantConditions" }) HashMap<String, Transformation> config = (HashMap<String, Transformation>) transformation.getConfig(TransMetaConverter.SUB_TRANSFORMATIONS_KEY).get();
    assertEquals(1, config.size());
    assertNotNull(config.get("public/trans-meta-converter-sub.ktr"));
}
Also used : RepositoryDirectoryInterface(org.pentaho.di.repository.RepositoryDirectoryInterface) Repository(org.pentaho.di.repository.Repository) Transformation(org.pentaho.di.engine.api.model.Transformation) RepositoryDirectory(org.pentaho.di.repository.RepositoryDirectory) HashMap(java.util.HashMap) TransMeta(org.pentaho.di.trans.TransMeta) DummyTransMeta(org.pentaho.di.trans.steps.dummytrans.DummyTransMeta) Test(org.junit.Test)

Example 7 with Transformation

use of org.pentaho.di.engine.api.model.Transformation in project pentaho-kettle by pentaho.

the class TransWebSocketEngineAdapter method wireStatusToTransListeners.

private void wireStatusToTransListeners() throws KettleException {
    messageEventService.addHandler(Util.getTransformationStatusEvent(), new MessageEventHandler() {

        @Override
        public void execute(Message message) throws MessageEventHandlerExecutionException {
            PDIEvent<RemoteSource, Status> transStatusEvent = (PDIEvent<RemoteSource, Status>) message;
            addStepPerformanceSnapShot();
            getTransListeners().forEach(l -> {
                try {
                    switch(transStatusEvent.getData()) {
                        case RUNNING:
                            l.transStarted(TransWebSocketEngineAdapter.this);
                            l.transActive(TransWebSocketEngineAdapter.this);
                            break;
                        case PAUSED:
                            break;
                        case STOPPED:
                            break;
                        case FAILED:
                        case FINISHED:
                            l.transFinished(TransWebSocketEngineAdapter.this);
                            setFinished(true);
                            break;
                    }
                } catch (KettleException e) {
                    throw new RuntimeException(e);
                }
            });
        }

        @Override
        public String getIdentifier() {
            return TRANSFORMATION_STATUS;
        }
    });
    messageEventService.addHandler(Util.getTransformationErrorEvent(), new MessageEventHandler() {

        @Override
        public void execute(Message message) throws MessageEventHandlerExecutionException {
            Throwable throwable = ((PDIEvent<RemoteSource, LogEntry>) message).getData().getThrowable();
            getLogChannel().logError("Error Executing Transformation", throwable);
            errors.incrementAndGet();
            finishProcess(true);
        }

        @Override
        public String getIdentifier() {
            return TRANSFORMATION_ERROR;
        }
    });
    messageEventService.addHandler(Util.getStopMessage(), new MessageEventHandler() {

        @Override
        public void execute(Message message) throws MessageEventHandlerExecutionException {
            StopMessage stopMessage = (StopMessage) message;
            if (stopMessage.sessionWasKilled() || stopMessage.operationFailed()) {
                getLogChannel().logError("Finalizing execution: " + stopMessage.getReasonPhrase());
            } else {
                getLogChannel().logBasic("Finalizing execution: " + stopMessage.getReasonPhrase());
            }
            finishProcess(false);
            try {
                getDaemonEndpoint().close(stopMessage.getReasonPhrase());
            } catch (KettleException e) {
                getLogChannel().logError("Error finalizing", e);
            }
            // let's shutdown the session monitor thread
            closeSessionMonitor();
            // Signal for the the waitUntilFinished blocker...
            transFinishedSignal.countDown();
        }

        @Override
        public String getIdentifier() {
            return TRANSFORMATION_STOP;
        }
    });
}
Also used : Status(org.pentaho.di.engine.api.reporting.Status) Transformation(org.pentaho.di.engine.api.model.Transformation) Result(org.pentaho.di.core.Result) Trans(org.pentaho.di.trans.Trans) TransMetaConverter(org.pentaho.di.trans.ael.adapters.TransMetaConverter) Arrays(java.util.Arrays) LogLevel(org.pentaho.di.engine.api.reporting.LogLevel) KettleException(org.pentaho.di.core.exception.KettleException) HashMap(java.util.HashMap) Operation(org.pentaho.di.engine.api.model.Operation) Function(java.util.function.Function) ArrayList(java.util.ArrayList) MessageEventHandler(org.pentaho.di.trans.ael.websocket.handler.MessageEventHandler) LogEntry(org.pentaho.di.engine.api.reporting.LogEntry) TransMeta(org.pentaho.di.trans.TransMeta) Collectors.toMap(java.util.stream.Collectors.toMap) Status(org.pentaho.di.engine.api.reporting.Status) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) MessageEventHandlerExecutionException(org.pentaho.di.trans.ael.websocket.exception.MessageEventHandlerExecutionException) Map(java.util.Map) ExecutorService(java.util.concurrent.ExecutorService) StepInterface(org.pentaho.di.trans.step.StepInterface) StepMeta(org.pentaho.di.trans.step.StepMeta) StepMetaInterface(org.pentaho.di.trans.step.StepMetaInterface) StopMessage(org.pentaho.di.engine.api.remote.StopMessage) ExecutionRequest(org.pentaho.di.engine.api.remote.ExecutionRequest) ResourceEntry(org.pentaho.di.resource.ResourceEntry) LogChannelInterface(org.pentaho.di.core.logging.LogChannelInterface) Maps(com.google.common.collect.Maps) Collectors(java.util.stream.Collectors) Executors(java.util.concurrent.Executors) TimeUnit(java.util.concurrent.TimeUnit) RemoteSource(org.pentaho.di.engine.api.remote.RemoteSource) CountDownLatch(java.util.concurrent.CountDownLatch) StepMetaDataCombi(org.pentaho.di.trans.step.StepMetaDataCombi) List(java.util.List) Principal(java.security.Principal) HandlerRegistrationException(org.pentaho.di.trans.ael.websocket.exception.HandlerRegistrationException) PDIEvent(org.pentaho.di.engine.api.events.PDIEvent) Optional(java.util.Optional) Message(org.pentaho.di.engine.api.remote.Message) ActingPrincipal(org.pentaho.di.engine.model.ActingPrincipal) RowProducer(org.pentaho.di.trans.RowProducer) KettleException(org.pentaho.di.core.exception.KettleException) StopMessage(org.pentaho.di.engine.api.remote.StopMessage) Message(org.pentaho.di.engine.api.remote.Message) RemoteSource(org.pentaho.di.engine.api.remote.RemoteSource) StopMessage(org.pentaho.di.engine.api.remote.StopMessage) MessageEventHandlerExecutionException(org.pentaho.di.trans.ael.websocket.exception.MessageEventHandlerExecutionException) MessageEventHandler(org.pentaho.di.trans.ael.websocket.handler.MessageEventHandler) PDIEvent(org.pentaho.di.engine.api.events.PDIEvent)

Example 8 with Transformation

use of org.pentaho.di.engine.api.model.Transformation in project pentaho-kettle by pentaho.

the class TransWebSocketEngineAdapter method getSubSteps.

@SuppressWarnings("unchecked")
private List<StepMetaDataCombi> getSubSteps(Transformation transformation, StepMetaDataCombi combi) {
    HashMap<String, Transformation> config = ((Optional<HashMap<String, Transformation>>) transformation.getConfig(TransMetaConverter.SUB_TRANSFORMATIONS_KEY)).orElse(Maps.newHashMap());
    StepMetaInterface smi = combi.stepMeta.getStepMetaInterface();
    return config.keySet().stream().filter(key -> stepHasDependency(combi, smi, key)).flatMap(key -> opsToSteps(config.get(key)).stream()).collect(Collectors.toList());
}
Also used : Transformation(org.pentaho.di.engine.api.model.Transformation) Result(org.pentaho.di.core.Result) Trans(org.pentaho.di.trans.Trans) TransMetaConverter(org.pentaho.di.trans.ael.adapters.TransMetaConverter) Arrays(java.util.Arrays) LogLevel(org.pentaho.di.engine.api.reporting.LogLevel) KettleException(org.pentaho.di.core.exception.KettleException) HashMap(java.util.HashMap) Operation(org.pentaho.di.engine.api.model.Operation) Function(java.util.function.Function) ArrayList(java.util.ArrayList) MessageEventHandler(org.pentaho.di.trans.ael.websocket.handler.MessageEventHandler) LogEntry(org.pentaho.di.engine.api.reporting.LogEntry) TransMeta(org.pentaho.di.trans.TransMeta) Collectors.toMap(java.util.stream.Collectors.toMap) Status(org.pentaho.di.engine.api.reporting.Status) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) MessageEventHandlerExecutionException(org.pentaho.di.trans.ael.websocket.exception.MessageEventHandlerExecutionException) Map(java.util.Map) ExecutorService(java.util.concurrent.ExecutorService) StepInterface(org.pentaho.di.trans.step.StepInterface) StepMeta(org.pentaho.di.trans.step.StepMeta) StepMetaInterface(org.pentaho.di.trans.step.StepMetaInterface) StopMessage(org.pentaho.di.engine.api.remote.StopMessage) ExecutionRequest(org.pentaho.di.engine.api.remote.ExecutionRequest) ResourceEntry(org.pentaho.di.resource.ResourceEntry) LogChannelInterface(org.pentaho.di.core.logging.LogChannelInterface) Maps(com.google.common.collect.Maps) Collectors(java.util.stream.Collectors) Executors(java.util.concurrent.Executors) TimeUnit(java.util.concurrent.TimeUnit) RemoteSource(org.pentaho.di.engine.api.remote.RemoteSource) CountDownLatch(java.util.concurrent.CountDownLatch) StepMetaDataCombi(org.pentaho.di.trans.step.StepMetaDataCombi) List(java.util.List) Principal(java.security.Principal) HandlerRegistrationException(org.pentaho.di.trans.ael.websocket.exception.HandlerRegistrationException) PDIEvent(org.pentaho.di.engine.api.events.PDIEvent) Optional(java.util.Optional) Message(org.pentaho.di.engine.api.remote.Message) ActingPrincipal(org.pentaho.di.engine.model.ActingPrincipal) RowProducer(org.pentaho.di.trans.RowProducer) Transformation(org.pentaho.di.engine.api.model.Transformation) Optional(java.util.Optional) StepMetaInterface(org.pentaho.di.trans.step.StepMetaInterface)

Example 9 with Transformation

use of org.pentaho.di.engine.api.model.Transformation in project pentaho-kettle by pentaho.

the class TransMetaConverterTest method simpleConvert.

@Test
public void simpleConvert() {
    TransMeta meta = new TransMeta();
    meta.setFilename("fileName");
    meta.addStep(new StepMeta("stepName", stepMetaInterface));
    Transformation trans = TransMetaConverter.convert(meta);
    assertThat(trans.getId(), is(meta.getFilename()));
    assertThat(trans.getOperations().size(), is(1));
    assertThat(trans.getOperations().get(0).getId(), is("stepName"));
}
Also used : Transformation(org.pentaho.di.engine.api.model.Transformation) TransMeta(org.pentaho.di.trans.TransMeta) DummyTransMeta(org.pentaho.di.trans.steps.dummytrans.DummyTransMeta) StepMeta(org.pentaho.di.trans.step.StepMeta) BaseStepMeta(org.pentaho.di.trans.step.BaseStepMeta) Test(org.junit.Test)

Example 10 with Transformation

use of org.pentaho.di.engine.api.model.Transformation in project pentaho-kettle by pentaho.

the class TransMetaConverterTest method transConfigItemsNoNameSpecified.

@Test
public void transConfigItemsNoNameSpecified() throws Exception {
    TransMeta meta = new TransMeta();
    Transformation trans = TransMetaConverter.convert(meta);
    assertThat(trans.getConfig().get(TransMetaConverter.TRANS_META_NAME_CONF_KEY), is(TransMetaConverter.TRANS_DEFAULT_NAME));
    assertThat((String) trans.getConfig().get(TransMetaConverter.TRANS_META_CONF_KEY), startsWith("<transformation>"));
}
Also used : Transformation(org.pentaho.di.engine.api.model.Transformation) TransMeta(org.pentaho.di.trans.TransMeta) DummyTransMeta(org.pentaho.di.trans.steps.dummytrans.DummyTransMeta) Test(org.junit.Test)

Aggregations

Transformation (org.pentaho.di.engine.api.model.Transformation)15 TransMeta (org.pentaho.di.trans.TransMeta)15 Test (org.junit.Test)12 DummyTransMeta (org.pentaho.di.trans.steps.dummytrans.DummyTransMeta)12 StepMeta (org.pentaho.di.trans.step.StepMeta)10 BaseStepMeta (org.pentaho.di.trans.step.BaseStepMeta)7 HashMap (java.util.HashMap)6 List (java.util.List)6 Operation (org.pentaho.di.engine.api.model.Operation)6 TransHopMeta (org.pentaho.di.trans.TransHopMeta)6 Map (java.util.Map)5 Collectors (java.util.stream.Collectors)5 KettleException (org.pentaho.di.core.exception.KettleException)5 Hop (org.pentaho.di.engine.api.model.Hop)5 StepMetaInterface (org.pentaho.di.trans.step.StepMetaInterface)5 Optional (java.util.Optional)3 Collectors.toMap (java.util.stream.Collectors.toMap)3 Repository (org.pentaho.di.repository.Repository)3 RepositoryDirectoryInterface (org.pentaho.di.repository.RepositoryDirectoryInterface)3 Trans (org.pentaho.di.trans.Trans)3