Skip to content

Commit

Permalink
Merge pull request #3394 from flbrino/BACKLOG-14128
Browse files Browse the repository at this point in the history
[BACKLOG-14128] Solved - Error runing DET opening a transformation vi…
  • Loading branch information
mkambol committed Jan 19, 2017
2 parents 6e5fbed + e3acd0a commit ef76e54
Show file tree
Hide file tree
Showing 2 changed files with 81 additions and 5 deletions.
17 changes: 12 additions & 5 deletions ui/src/org/pentaho/di/ui/spoon/Spoon.java
Original file line number Diff line number Diff line change
Expand Up @@ -1124,7 +1124,9 @@ public boolean closeAllJobsAndTransformations( boolean force ) {
// Yes - User specified that they want to close all.
return closeAllFiles( force );
} else if ( ( isCloseAllFiles == SWT.NO ) && ( executePerms ) ) {
// No - don't close tabs only if user has execute permissions.
// No - don't close tabs
// if user has execute permissions mark tabs for save
markTabsChanged( force );
// Return true so we can disconnect from repo
return true;
} else {
Expand Down Expand Up @@ -6845,7 +6847,7 @@ public void setShellText() {

shell.setText( text );

markTabsChanged();
markTabsChanged( false );
}

public void enableMenus() {
Expand Down Expand Up @@ -7028,14 +7030,14 @@ private void disableMenuItem( org.pentaho.ui.xul.dom.Document doc, String itemId
}
}

private void markTabsChanged() {
private void markTabsChanged( boolean force ) {

for ( TabMapEntry entry : delegates.tabs.getTabs() ) {
if ( entry.getTabItem().isDisposed() ) {
continue;
}

boolean changed = entry.getObject().hasContentChanged();
boolean changed = force || entry.getObject().hasContentChanged();
if ( changed ) {
// Call extension point to alert plugins that a transformation or job has changed
Object tabObject = entry.getObject().getManagedObject();
Expand All @@ -7044,10 +7046,15 @@ private void markTabsChanged() {
changedId = KettleExtensionPoint.TransChanged.id;
} else if ( tabObject instanceof JobMeta ) {
changedId = KettleExtensionPoint.JobChanged.id;
} else {
changed = false;
}

if ( changedId != null ) {
try {
if ( force ) {
( (AbstractMeta) tabObject ).setChanged();
}
ExtensionPointHandler.callExtensionPoint( log, changedId, tabObject );
} catch ( KettleException e ) {
// fails gracefully
Expand Down Expand Up @@ -8157,7 +8164,7 @@ private void loadLastUsedFile(

if ( !lastUsedFile.isSourceRepository() && !Utils.isEmpty( lastUsedFile.getFilename() ) ) {
if ( lastUsedFile.isTransformation() ) {
openFile( lastUsedFile.getFilename(), false );
openFile( lastUsedFile.getFilename(), rep != null );
}
if ( lastUsedFile.isJob() ) {
openFile( lastUsedFile.getFilename(), false );
Expand Down
69 changes: 69 additions & 0 deletions ui/test-src/org/pentaho/di/ui/spoon/SpoonTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
import org.mockito.stubbing.Answer;
import org.pentaho.di.base.AbstractMeta;
import org.pentaho.di.core.KettleEnvironment;
import org.pentaho.di.core.LastUsedFile;
import org.pentaho.di.core.NotePadMeta;
import org.pentaho.di.core.exception.KettleException;
import org.pentaho.di.core.gui.Point;
Expand Down Expand Up @@ -655,4 +656,72 @@ private static void prepareSetSaveTests( Spoon spoon, LogChannelInterface log, S

doReturn( fileType ).when( metaData ).getFileType();
}

@Test
public void testLoadLastUsedTransLocalWithRepository() throws Exception {
String repositoryName = "repositoryName";
String fileName = "fileName";

setLoadLastUsedJobLocalWithRepository( false, repositoryName, null, fileName, true );
verify( spoon ).openFile( fileName, true );
}

@Test
public void testLoadLastUsedTransLocalNoRepository() throws Exception {
String repositoryName = null;
String fileName = "fileName";

setLoadLastUsedJobLocalWithRepository( false, repositoryName, null, fileName, true );
verify( spoon ).openFile( fileName, false );
}

@Test
public void testLoadLastUsedTransLocalNoFilename() throws Exception {
String repositoryName = null;
String fileName = null;

setLoadLastUsedJobLocalWithRepository( false, repositoryName, null, fileName, true );
verify( spoon, never() ).openFile( anyString(), anyBoolean() );
}

@Test
public void testLoadLastUsedJobLocalWithRepository() throws Exception {
String repositoryName = null;
String fileName = "fileName";

setLoadLastUsedJobLocalWithRepository( false, repositoryName, null, fileName, false );
verify( spoon ).openFile( fileName, false );
}

@Test
public void testLoadLastUsedRepTransNoRepository() throws Exception {
String repositoryName = null;
String fileName = "fileName";

setLoadLastUsedJobLocalWithRepository( true, repositoryName, null, fileName, false );
verify( spoon, never() ).openFile( anyString(), anyBoolean() );
}

private void setLoadLastUsedJobLocalWithRepository( boolean isSourceRepository, String repositoryName,
String directoryName, String fileName, boolean isTransformation ) throws Exception {
LastUsedFile mockLastUsedFile = mock( LastUsedFile.class );

if ( repositoryName != null ) {
Repository mockRepository = mock( Repository.class );
spoon.rep = mockRepository;
doReturn( repositoryName ).when( mockRepository ).getName();
} else {
spoon.rep = null;
}

doReturn( isSourceRepository ).when( mockLastUsedFile ).isSourceRepository();
doReturn( repositoryName ).when( mockLastUsedFile ).getRepositoryName();
doReturn( directoryName ).when( mockLastUsedFile ).getDirectory();
doReturn( fileName ).when( mockLastUsedFile ).getFilename();
doReturn( isTransformation ).when( mockLastUsedFile ).isTransformation();
doReturn( !isTransformation ).when( mockLastUsedFile ).isJob();

doCallRealMethod().when( spoon ).loadLastUsedFile( mockLastUsedFile, repositoryName );
spoon.loadLastUsedFile( mockLastUsedFile, repositoryName );
}
}

0 comments on commit ef76e54

Please sign in to comment.