/** * Will find the {@link ComponentBuilder} that publishes records (via an * {@link OutputDataStream}) to a certain {@link AnalysisJobBuilder}. * * @param analysisJobBuilder * the {@link AnalysisJobBuilder} to find the publisher for. * @return */ public ComponentBuilder findComponentBuilder(final AnalysisJobBuilder analysisJobBuilder) { if (analysisJobBuilder == _rootJobBuilder) { return null; } for (final ComponentBuilder osComponenBuilder : getComponentBuildersWithOutputDataStreams(_rootJobBuilder)) { for (final OutputDataStream outputDataStream : osComponenBuilder.getOutputDataStreams()) { final AnalysisJobBuilder osJobBuilder = osComponenBuilder.getOutputDataStreamJobBuilder(outputDataStream); if (osJobBuilder == analysisJobBuilder) { return osComponenBuilder; } } } throw new IllegalArgumentException( "No component publishing to " + LabelUtils.getScopeLabel(analysisJobBuilder)); }
/** * This will check if components are in a different scope, and ask the user * for permission to change the scope of the target component * * @return true if permitted or irrelevant, false if user refused a * necessary scope change. */ private boolean scopeUpdatePermitted(final AnalysisJobBuilder sourceAnalysisJobBuilder, final ComponentBuilder componentBuilder) { if (sourceAnalysisJobBuilder != componentBuilder.getAnalysisJobBuilder()) { if (componentBuilder.getInput().length > 0 || componentBuilder.getComponentRequirement() != null) { final String scopeText; scopeText = LabelUtils.getScopeLabel(sourceAnalysisJobBuilder); final int response = JOptionPane.showConfirmDialog(_graphContext.getVisualizationViewer(), "This will move " + LabelUtils.getLabel(componentBuilder) + " into the " + scopeText + ", thereby losing its configured columns and/or requirements", "Change scope?", JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE); if (response == JOptionPane.CANCEL_OPTION) { _graphContext.getJobGraph().refresh(); return false; } } } return true; }