private Set<StepMeta> enableDisableNextHops( StepMeta from, boolean enabled, Set<StepMeta> checkedEntries ) { checkedEntries.add( from ); transMeta.getTransHops().stream() .filter( hop -> from.equals( hop.getFromStep() ) ) .forEach( hop -> { if ( hop.isEnabled() != enabled ) { TransHopMeta before = (TransHopMeta) hop.clone(); setHopEnabled( hop, enabled ); TransHopMeta after = (TransHopMeta) hop.clone(); spoon.addUndoChange( transMeta, new TransHopMeta[] { before }, new TransHopMeta[] { after }, new int[] { transMeta .indexOfTransHop( hop ) } ); } if ( !checkedEntries.contains( hop.getToStep() ) ) { enableDisableNextHops( hop.getToStep(), enabled, checkedEntries ); } } ); return checkedEntries; }
public void enableDisableHopsDownstream( boolean enabled ) { if ( currentHop == null ) { return; } TransHopMeta before = (TransHopMeta) currentHop.clone(); setHopEnabled( currentHop, enabled ); TransHopMeta after = (TransHopMeta) currentHop.clone(); spoon.addUndoChange( transMeta, new TransHopMeta[] { before }, new TransHopMeta[] { after }, new int[] { transMeta .indexOfTransHop( currentHop ) } ); Set<StepMeta> checkedEntries = enableDisableNextHops( currentHop.getToStep(), enabled, new HashSet<>() ); if ( checkedEntries.stream().anyMatch( entry -> transMeta.hasLoop( entry ) ) ) { modalMessageDialog( getString( "TransGraph.Dialog.HopCausesLoop.Title" ), getString( "TransGraph.Dialog.HopCausesLoop.Message" ), SWT.OK | SWT.ICON_ERROR ); } spoon.refreshGraph(); }
public void editHop( TransMeta transMeta, TransHopMeta transHopMeta ) { // Backup situation BEFORE edit: String name = transHopMeta.toString(); TransHopMeta before = (TransHopMeta) transHopMeta.clone(); TransHopDialog hd = new TransHopDialog( shell, SWT.NONE, transHopMeta, transMeta ); if ( hd.open() != null ) { // Backup situation for redo/undo: TransHopMeta after = (TransHopMeta) transHopMeta.clone(); addUndoChange( transMeta, new TransHopMeta[] { before }, new TransHopMeta[] { after }, new int[] { transMeta .indexOfTransHop( transHopMeta ) } ); String newName = transHopMeta.toString(); if ( !name.equalsIgnoreCase( newName ) ) { refreshTree(); refreshGraph(); // color, nr of copies... } } setShellText(); }
/** * This method enables or disables all the hops between the selected steps. **/ public void enableHopsBetweenSelectedSteps( boolean enabled ) { List<StepMeta> list = transMeta.getSelectedSteps(); boolean hasLoop = false; for ( int i = 0; i < transMeta.nrTransHops(); i++ ) { TransHopMeta hop = transMeta.getTransHop( i ); if ( list.contains( hop.getFromStep() ) && list.contains( hop.getToStep() ) ) { TransHopMeta before = (TransHopMeta) hop.clone(); setHopEnabled( hop, enabled ); TransHopMeta after = (TransHopMeta) hop.clone(); spoon.addUndoChange( transMeta, new TransHopMeta[] { before }, new TransHopMeta[] { after }, new int[] { transMeta.indexOfTransHop( hop ) } ); if ( transMeta.hasLoop( hop.getToStep() ) ) { hasLoop = true; setHopEnabled( hop, false ); } } } if ( enabled && hasLoop ) { modalMessageDialog( getString( "TransGraph.Dialog.HopCausesLoop.Title" ), getString( "TransGraph.Dialog.HopCausesLoop.Message" ), SWT.OK | SWT.ICON_ERROR ); } spoon.refreshGraph(); }
if ( hi.getFromStep().equals( steps[j] ) || hi.getToStep().equals( steps[j] ) ) { int idx = transformation.indexOfTransHop( hi ); transHops.add( (TransHopMeta) hi.clone() ); hopIndexes[hopIndex] = idx; transformation.removeTransHop( idx );
transMeta.addTransHop( (TransHopMeta) hop.clone() );
public void enableHop() { selectionRegion = null; TransHopMeta hi = getCurrentHop(); TransHopMeta before = (TransHopMeta) hi.clone(); setHopEnabled( hi, !hi.isEnabled() ); if ( hi.isEnabled() && transMeta.hasLoop( hi.getToStep() ) ) { setHopEnabled( hi, false ); modalMessageDialog( getString( "TransGraph.Dialog.LoopAfterHopEnabled.Title" ), getString( "TransGraph.Dialog.LoopAfterHopEnabled.Message" ), SWT.OK | SWT.ICON_ERROR ); } else { TransHopMeta after = (TransHopMeta) hi.clone(); spoon.addUndoChange( transMeta, new TransHopMeta[] { before }, new TransHopMeta[] { after }, new int[] { transMeta.indexOfTransHop( hi ) } ); spoon.refreshGraph(); spoon.refreshTree(); } updateErrorMetaForHop( hi ); }
public void delHop( TransMeta transMeta, TransHopMeta transHopMeta ) { int index = transMeta.indexOfTransHop( transHopMeta ); addUndoDelete( transMeta, new Object[] { (TransHopMeta) transHopMeta.clone() }, new int[] { index } ); transMeta.removeTransHop( index );
TransHopMeta before = (TransHopMeta) hop.clone(); setHopEnabled( hop, !hop.isEnabled() ); if ( hop.isEnabled() && transMeta.hasLoop( hop.getToStep() ) ) { getString( "TransGraph.Dialog.HopCausesLoop.Message" ), SWT.OK | SWT.ICON_ERROR ); TransHopMeta after = (TransHopMeta) hop.clone(); spoon.addUndoChange( transMeta, new TransHopMeta[] { before }, new TransHopMeta[] { after }, new int[] { transMeta.indexOfTransHop( hop ) } );
transMeta.addTransHop( idx, (TransHopMeta) prev.clone() );
transMeta.addTransHop( idx, (TransHopMeta) hi.clone() );