Skip to content

Commit

Permalink
[BACKLOG-11180] - Old-style 'Repository Connection' dialog is accessi…
Browse files Browse the repository at this point in the history
…ble in Spoon (#3033)
  • Loading branch information
AndreyBurikhin authored and mdamour1976 committed Oct 13, 2016
1 parent 186de29 commit f520eb5
Show file tree
Hide file tree
Showing 5 changed files with 129 additions and 2 deletions.
Expand Up @@ -114,6 +114,7 @@ public enum KettleExtensionPoint {


RepositoryImporterPatchTransStep( "RepositoryImporterPatchTransStep", "Patch the step in a transformation during repository import" ), RepositoryImporterPatchTransStep( "RepositoryImporterPatchTransStep", "Patch the step in a transformation during repository import" ),
RepositoryExporterPatchTransStep( "RepositoryExporterPatchTransStep", "Patch the step in a transformation during repository export" ), RepositoryExporterPatchTransStep( "RepositoryExporterPatchTransStep", "Patch the step in a transformation during repository export" ),
RequestLoginToRepository( "RequestLoginToRepository", "Request to login into repository" ),


OpenMapping( "OpenMapping", "Trigger when opening a mapping from TransGraph" ), OpenMapping( "OpenMapping", "Trigger when opening a mapping from TransGraph" ),


Expand Down
Expand Up @@ -272,9 +272,9 @@ public boolean openRelogin( RepositoryMeta repositoryMeta, String errorMessage )
return open( repositoryMeta, true, errorMessage ); return open( repositoryMeta, true, errorMessage );
} }


public void openLogin( RepositoryMeta repositoryMeta ) { public boolean openLogin( RepositoryMeta repositoryMeta ) {
super.createDialog( LOGIN_TITLE, getRepoURL( LOGIN_WEB_CLIENT_PATH ), OPTIONS, LOGO ); super.createDialog( LOGIN_TITLE, getRepoURL( LOGIN_WEB_CLIENT_PATH ), OPTIONS, LOGO );
open( repositoryMeta ); return open( repositoryMeta );
} }


private void setResult( boolean result ) { private void setResult( boolean result ) {
Expand Down
@@ -0,0 +1,119 @@
/*! ******************************************************************************
*
* Pentaho Data Integration
*
* Copyright (C) 2002-2016 by Pentaho : http://www.pentaho.com
*
*******************************************************************************
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
******************************************************************************/

package org.pentaho.di.ui.repo;

import org.pentaho.di.core.exception.KettleException;
import org.pentaho.di.core.extension.ExtensionPoint;
import org.pentaho.di.core.extension.ExtensionPointInterface;
import org.pentaho.di.core.logging.LogChannelInterface;
import org.pentaho.di.i18n.BaseMessages;
import org.pentaho.di.repository.Repository;
import org.pentaho.di.repository.RepositoryMeta;
import org.pentaho.di.ui.repository.ILoginCallback;
import org.pentaho.di.ui.spoon.Spoon;

@ExtensionPoint(
id = "RequestLoginToRepositoryExtensionPoint",
extensionPointId = "RequestLoginToRepository",
description = "Handles login requests"
)
public class RequestLoginToRepositoryExtensionPoint implements ExtensionPointInterface {

private static Class<?> PKG = RequestLoginToRepositoryExtensionPoint.class;

private static final String KETTE_FILE_REPOSITORY_ID = "KettleFileRepository";

private final ILoginCallback defaultLoginCallback = new DefaultLoginCallback();

private final RepositoryConnectController repositoryConnectController;

public RequestLoginToRepositoryExtensionPoint( RepositoryConnectController repositoryConnectController ) {
this.repositoryConnectController = repositoryConnectController;
}

@Override
public void callExtensionPoint( LogChannelInterface log, Object object ) throws KettleException {
ILoginCallback loginCallback = defaultLoginCallback;
if ( ( object instanceof ILoginCallback ) ) {
loginCallback = (ILoginCallback) object;
}
RepositoryMeta repositoryMeta = findRepositoryToConnect();
if ( repositoryMeta != null ) {
if ( isKettleFileRepository( repositoryMeta ) ) {
repositoryConnectController.connectToRepository( repositoryMeta );
loginCallback.onSuccess( repositoryConnectController.getConnectedRepositoryInstance() );
} else {
loginToRepository( repositoryMeta, loginCallback );
}
} else {
String errorMessage = BaseMessages.getString( PKG, "Repository.NoDefinedRepositoryToConnect" );
KettleException exception = new KettleException( errorMessage );
loginCallback.onError( exception );
}
}

void loginToRepository( RepositoryMeta repositoryMeta, ILoginCallback loginCallback ) {
RepositoryDialog dialog = getRepositoryDialog();
boolean result = dialog.openLogin( repositoryMeta );
if ( result ) {
loginCallback.onSuccess( repositoryConnectController.getConnectedRepositoryInstance() );
} else {
loginCallback.onCancel();
}
}

RepositoryDialog getRepositoryDialog() {
return new RepositoryDialog( getSpoon().getShell(), repositoryConnectController );
}

RepositoryMeta findRepositoryToConnect() {
RepositoryMeta repositoryMeta = repositoryConnectController.getCurrentRepository();
if ( repositoryMeta == null ) {
repositoryMeta = repositoryConnectController.getDefaultRepositoryMeta();
}
return repositoryMeta;
}

static boolean isKettleFileRepository( RepositoryMeta repositoryMeta ) {
return KETTE_FILE_REPOSITORY_ID.equals( repositoryMeta.getId() );
}

private Spoon getSpoon() {
return Spoon.getInstance();
}

private final class DefaultLoginCallback implements ILoginCallback {

@Override
public void onSuccess( Repository repository ) {
}

@Override
public void onCancel() {
}

@Override
public void onError( Throwable t ) {
}
}
}
Expand Up @@ -25,6 +25,12 @@
<pen:di-plugin type="org.pentaho.di.core.extension.ExtensionPointPluginType"/> <pen:di-plugin type="org.pentaho.di.core.extension.ExtensionPointPluginType"/>
</bean> </bean>


<bean id="requestLoginToRepositoryExtensionPoint" scope="singleton"
class="org.pentaho.di.ui.repo.RequestLoginToRepositoryExtensionPoint">
<argument ref="repositoryConnectController"/>
<pen:di-plugin type="org.pentaho.di.core.extension.ExtensionPointPluginType"/>
</bean>

<!-- Actual Plugin Class PluginInterface, references the Spoon Plugin above --> <!-- Actual Plugin Class PluginInterface, references the Spoon Plugin above -->
<bean id="repositoriesPlugin" class="org.pentaho.di.osgi.OSGIPlugin"> <bean id="repositoriesPlugin" class="org.pentaho.di.osgi.OSGIPlugin">
<property name="mainType" value="org.pentaho.di.ui.spoon.SpoonPluginInterface"/> <property name="mainType" value="org.pentaho.di.ui.spoon.SpoonPluginInterface"/>
Expand Down
Expand Up @@ -12,6 +12,7 @@ RepositoryConnection.Error.InvalidServer=You don''t seem to be getting a connect
Repository.NoConnected.Message=Sorry, we didn''t recognize those connection details. Please check the user name and password and try again. Repository.NoConnected.Message=Sorry, we didn''t recognize those connection details. Please check the user name and password and try again.
Repository.NoConnected.Message.Title=Unable to Login Repository.NoConnected.Message.Title=Unable to Login
Repository.Reconnection.Message=You''ve been disconnected due to inactivity. Please reconnect to continue. Repository.Reconnection.Message=You''ve been disconnected due to inactivity. Please reconnect to continue.
Repository.NoDefinedRepositoryToConnect=Can''t choose repository connection to process login request. Use connection menu to login into a repository.


RepositoryDialog.Dialog.NewRepo.Title=New Repository Connection RepositoryDialog.Dialog.NewRepo.Title=New Repository Connection
RepositoryDialog.Dialog.Manager.Title=Repository Manager RepositoryDialog.Dialog.Manager.Title=Repository Manager
Expand Down

0 comments on commit f520eb5

Please sign in to comment.