private Set<JobEntryCopy> enableDisableNextHops( JobEntryCopy from, boolean enabled, Set<JobEntryCopy> checkedEntries ) { checkedEntries.add( from ); jobMeta.getJobhops().stream() .filter( hop -> from.equals( hop.getFromEntry() ) ) .forEach( hop -> { if ( hop.isEnabled() != enabled ) { JobHopMeta before = (JobHopMeta) hop.clone(); hop.setEnabled( enabled ); JobHopMeta after = (JobHopMeta) hop.clone(); spoon.addUndoChange( jobMeta, new JobHopMeta[]{ before }, new JobHopMeta[]{ after }, new int[]{ jobMeta .indexOfJobHop( hop ) } ); } if ( !checkedEntries.contains( hop.getToEntry() ) ) { enableDisableNextHops( hop.getToEntry(), enabled, checkedEntries ); } } ); return checkedEntries; }
jobMeta.jobhops.add( (JobHopMeta) entry.clone() );
public void enableDisableHopsDownstream( boolean enabled ) { if ( currentHop == null ) { return; } JobHopMeta before = (JobHopMeta) currentHop.clone(); currentHop.setEnabled( enabled ); JobHopMeta after = (JobHopMeta) currentHop.clone(); spoon.addUndoChange( jobMeta, new JobHopMeta[] { before }, new JobHopMeta[] { after }, new int[] { jobMeta .indexOfJobHop( currentHop ) } ); Set<JobEntryCopy> checkedEntries = enableDisableNextHops( currentHop.getToEntry(), enabled, new HashSet<>() ); if ( checkedEntries.stream().anyMatch( entry -> jobMeta.hasLoop( entry ) ) ) { MessageBox mb = new MessageBox( shell, SWT.OK | SWT.ICON_WARNING ); mb.setMessage( BaseMessages.getString( PKG, "JobGraph.Dialog.LoopAfterHopEnabled.Message" ) ); mb.setText( BaseMessages.getString( PKG, "JobGraph.Dialog.LoopAfterHopEnabled.Title" ) ); mb.open(); } spoon.refreshGraph(); }
if ( hi.getFromEntry().equals( jobEntries[j] ) || hi.getToEntry().equals( jobEntries[j] ) ) { int idx = job.indexOfJobHop( hi ); jobHops.add( (JobHopMeta) hi.clone() ); hopIndexes[hopIndex] = idx; job.removeJobHop( idx );
/** * This method enables or disables all the hops between the selected Entries. * **/ public void enableHopsBetweenSelectedEntries( boolean enabled ) { List<JobEntryCopy> list = jobMeta.getSelectedEntries(); boolean hasLoop = false; for ( int i = 0; i < jobMeta.nrJobHops(); i++ ) { JobHopMeta hop = jobMeta.getJobHop( i ); if ( list.contains( hop.getFromEntry() ) && list.contains( hop.getToEntry() ) ) { JobHopMeta before = (JobHopMeta) hop.clone(); hop.setEnabled( enabled ); JobHopMeta after = (JobHopMeta) hop.clone(); spoon.addUndoChange( jobMeta, new JobHopMeta[] { before }, new JobHopMeta[] { after }, new int[] { jobMeta .indexOfJobHop( hop ) } ); if ( jobMeta.hasLoop( hop.getToEntry() ) ) { hasLoop = true; } } } if ( hasLoop && enabled ) { MessageBox mb = new MessageBox( shell, SWT.OK | SWT.ICON_WARNING ); mb.setMessage( BaseMessages.getString( PKG, "JobGraph.Dialog.LoopAfterHopEnabled.Message" ) ); mb.setText( BaseMessages.getString( PKG, "JobGraph.Dialog.LoopAfterHopEnabled.Title" ) ); mb.open(); } spoon.refreshGraph(); }
public void deleteJobEntryCopies( JobMeta jobMeta, JobEntryCopy jobEntry ) { for ( int i = jobMeta.nrJobHops() - 1; i >= 0; i-- ) { JobHopMeta hi = jobMeta.getJobHop( i ); if ( hi.getFromEntry().equals( jobEntry ) || hi.getToEntry().equals( jobEntry ) ) { int idx = jobMeta.indexOfJobHop( hi ); spoon.addUndoDelete( jobMeta, new JobHopMeta[] { (JobHopMeta) hi.clone() }, new int[] { idx } ); jobMeta.removeJobHop( idx ); spoon.refreshTree(); } } int pos = jobMeta.indexOfJobEntry( jobEntry ); jobMeta.removeJobEntry( pos ); spoon.addUndoDelete( jobMeta, new JobEntryCopy[] { jobEntry }, new int[] { pos } ); spoon.refreshTree(); spoon.refreshGraph(); }
protected void detach( JobEntryCopy je ) { JobHopMeta hfrom = jobMeta.findJobHopTo( je ); JobHopMeta hto = jobMeta.findJobHopFrom( je ); if ( hfrom != null && hto != null ) { if ( jobMeta.findJobHop( hfrom.getFromEntry(), hto.getToEntry() ) == null ) { JobHopMeta hnew = new JobHopMeta( hfrom.getFromEntry(), hto.getToEntry() ); jobMeta.addJobHop( hnew ); spoon.addUndoNew( jobMeta, new JobHopMeta[] { (JobHopMeta) hnew.clone() }, new int[] { jobMeta .indexOfJobHop( hnew ) } ); } } if ( hfrom != null ) { int fromidx = jobMeta.indexOfJobHop( hfrom ); if ( fromidx >= 0 ) { jobMeta.removeJobHop( fromidx ); spoon.addUndoDelete( jobMeta, new JobHopMeta[] { hfrom }, new int[] { fromidx } ); } } if ( hto != null ) { int toidx = jobMeta.indexOfJobHop( hto ); if ( toidx >= 0 ) { jobMeta.removeJobHop( toidx ); spoon.addUndoDelete( jobMeta, new JobHopMeta[] { hto }, new int[] { toidx } ); } } spoon.refreshTree(); redraw(); }
JobHopMeta before = (JobHopMeta) hop.clone(); hop.setEnabled( !hop.isEnabled() ); if ( hop.isEnabled() && ( jobMeta.hasLoop( hop.getToEntry() ) ) ) { JobHopMeta after = (JobHopMeta) hop.clone(); spoon.addUndoChange( jobMeta, new JobHopMeta[] { before }, new JobHopMeta[] { after }, new int[] { jobMeta