@RendererBean(SwingRenderingFormat.class) public class TableModelResultSwingRenderer implements Renderer<TableModelResult, JComponent> { @Override public JComponent render(final TableModelResult result) { final TableModel tableModel = result.toTableModel(); final DCTable table = new DCTable(tableModel); return table.toPanel(); } @Override public RendererPrecedence getPrecedence(final TableModelResult renderable) { return RendererPrecedence.LOW; } }
protected AnnotationBasedRendererBeanDescriptor(final Class<R> rendererClass) throws DescriptorException { super(rendererClass, true); final RendererBean rendererBeanAnnotation = ReflectionUtils.getAnnotation(rendererClass, RendererBean.class); if (rendererBeanAnnotation == null) { throw new DescriptorException(rendererClass + " doesn't implement the RendererBean annotation"); } _renderingFormat = rendererBeanAnnotation.value(); if (_renderingFormat == null || _renderingFormat.isInterface() || Modifier .isAbstract(_renderingFormat.getModifiers())) { throw new DescriptorException("Rendering format (" + _renderingFormat + ") is not a non-abstract class"); } _formatOutputType = ReflectionUtils.getTypeParameter(_renderingFormat, RenderingFormat.class, 0); logger.debug("Found format output type: {}", _formatOutputType); if (_formatOutputType == null) { throw new DescriptorException("Could not determine output type of rendering format: " + _renderingFormat); } @SuppressWarnings("unchecked") final Class<? extends Renderable> rendererInputType = (Class<? extends Renderable>) ReflectionUtils.getTypeParameter(rendererClass, Renderer.class, 0); _rendererInputType = rendererInputType; logger.debug("Found renderer input type: {}", _rendererInputType); _rendererOutputType = ReflectionUtils.getTypeParameter(rendererClass, Renderer.class, 1); logger.debug("Found renderer output type: {}", _rendererOutputType); if (_rendererOutputType == null) { throw new DescriptorException("Could not determine output type of renderer: " + rendererClass); } if (!ReflectionUtils.is(_rendererOutputType, _formatOutputType)) { throw new DescriptorException("The renderer output type (" + _rendererOutputType + ") is not a valid instance or sub-class of format output type (" + _formatOutputType + ")"); } }
/** * The default HTML renderer for any AnalyzerResult. */ @RendererBean(HtmlRenderingFormat.class) public class DefaultAnalyzerResultHtmlRenderer implements Renderer<AnalyzerResult, HtmlFragment> { @Override public RendererPrecedence getPrecedence(AnalyzerResult renderable) { return RendererPrecedence.LOWEST; } @Override public HtmlFragment render(AnalyzerResult result) { final SimpleHtmlFragment frag = new SimpleHtmlFragment(); frag.addBodyElement(new MetricListBodyElement(result)); return frag; } }
@RendererBean(SwingRenderingFormat.class) public class DefaultCrosstabResultSwingRenderer extends AbstractCrosstabResultSwingRenderer<CrosstabResult> { /** * Constructor used for programmatic composition * * @param windowContext * @param rendererFactory */ public DefaultCrosstabResultSwingRenderer(final WindowContext windowContext, final RendererFactory rendererFactory) { super(windowContext, rendererFactory); } /** * Default constructor, used by {@link RendererFactory}. */ public DefaultCrosstabResultSwingRenderer() { super(); } }
/** * A very simple renderer that "renders" the toString() method of results, if a specialized toString() method is available. * * Mostly used for testing (or result types that implement a meaningful * toString() method. */ @RendererBean(TextRenderingFormat.class) public class ToStringTextRenderer implements Renderer<AnalyzerResult, String> { @Override public RendererPrecedence getPrecedence(final AnalyzerResult renderable) { try { // only apply to classes that has a specialized toString() method. final Method toStringMethod = renderable.getClass().getDeclaredMethod("toString"); if (toStringMethod != null) { return RendererPrecedence.LOW; } } catch (final Exception e) { // ignore } return RendererPrecedence.NOT_CAPABLE; } @Override public String render(final AnalyzerResult result) { return result.toString(); } }
@RendererBean(HtmlRenderingFormat.class) public class ListResultHtmlRenderer implements Renderer<ListResult<?>, HtmlFragment> {
@RendererBean(SwingRenderingFormat.class) public class CategorizationResultSwingRenderer extends AbstractCategorizationResultSwingRenderer<CategorizationResult> {
@RendererBean(HtmlRenderingFormat.class) public class AnnotatedRowsHtmlRenderer implements Renderer<AnnotatedRowsResult, HtmlFragment> {
@RendererBean(TextRenderingFormat.class) public class PatternFinderResultTextRenderer extends AbstractRenderer<PatternFinderResult, String> {
@RendererBean(ComponentBuilderPresenterRenderingFormat.class) public class CreateCsvFileAnalyzerSwingRenderer implements Renderer<AnalyzerComponentBuilder<CreateCsvFileAnalyzer>, AnalyzerComponentBuilderPresenter> { @Inject DCModule dcModule; @Override public RendererPrecedence getPrecedence(final AnalyzerComponentBuilder<CreateCsvFileAnalyzer> ajb) { final Class<CreateCsvFileAnalyzer> componentClass = ajb.getDescriptor().getComponentClass(); if (componentClass == CreateCsvFileAnalyzer.class) { return RendererPrecedence.HIGH; } return RendererPrecedence.NOT_CAPABLE; } @Override public AnalyzerComponentBuilderPresenter render(final AnalyzerComponentBuilder<CreateCsvFileAnalyzer> ajb) { final PropertyWidgetFactory propertyWidgetFactory = dcModule.createChildInjectorForComponent(ajb).getInstance(PropertyWidgetFactory.class); return new CustomHeaderColumnNamesAnalyzerJobPanel(ajb, propertyWidgetFactory); } }
@RendererBean(ComponentBuilderPresenterRenderingFormat.class) public class CreateStagingTableAnalyzerSwingRenderer implements Renderer<AnalyzerComponentBuilder<CreateStagingTableAnalyzer>, AnalyzerComponentBuilderPresenter> { @Inject DCModule dcModule; @Override public RendererPrecedence getPrecedence(final AnalyzerComponentBuilder<CreateStagingTableAnalyzer> ajb) { final Class<CreateStagingTableAnalyzer> componentClass = ajb.getDescriptor().getComponentClass(); if (componentClass == CreateStagingTableAnalyzer.class) { return RendererPrecedence.HIGH; } return RendererPrecedence.NOT_CAPABLE; } @Override public AnalyzerComponentBuilderPresenter render(final AnalyzerComponentBuilder<CreateStagingTableAnalyzer> ajb) { final PropertyWidgetFactory propertyWidgetFactory = dcModule.createChildInjectorForComponent(ajb).getInstance(PropertyWidgetFactory.class); return new CustomHeaderColumnNamesAnalyzerJobPanel(ajb, propertyWidgetFactory); } }
@RendererBean(TextRenderingFormat.class) public class DateGapTextRenderer extends AbstractRenderer<DateGapAnalyzerResult, String> {
@RendererBean(SwingRenderingFormat.class) public class UniqueKeyCheckAnalyzerResultSwingRenderer extends AbstractRenderer<UniqueKeyCheckAnalyzerResult, JComponent> {
@RendererBean(ComponentBuilderPresenterRenderingFormat.class) public class CreateExcelSpreadsheetAnalyzerSwingRenderer implements Renderer<AnalyzerComponentBuilder<CreateExcelSpreadsheetAnalyzer>, AnalyzerComponentBuilderPresenter> { @Inject DCModule dcModule; @Override public RendererPrecedence getPrecedence(final AnalyzerComponentBuilder<CreateExcelSpreadsheetAnalyzer> ajb) { final Class<CreateExcelSpreadsheetAnalyzer> componentClass = ajb.getDescriptor().getComponentClass(); if (componentClass == CreateExcelSpreadsheetAnalyzer.class) { return RendererPrecedence.HIGH; } return RendererPrecedence.NOT_CAPABLE; } @Override public AnalyzerComponentBuilderPresenter render( final AnalyzerComponentBuilder<CreateExcelSpreadsheetAnalyzer> ajb) { final PropertyWidgetFactory propertyWidgetFactory = dcModule.createChildInjectorForComponent(ajb).getInstance(PropertyWidgetFactory.class); return new CustomHeaderColumnNamesAnalyzerJobPanel(ajb, propertyWidgetFactory); } }
/** * Specialized {@link Renderer} for a {@link AnalysisJobBuilder} for * {@link CompletenessAnalyzer}. */ @RendererBean(ComponentBuilderPresenterRenderingFormat.class) public class CompletenessAnalyzerComponentBuilderPresenterRenderer implements Renderer<AnalyzerComponentBuilder<CompletenessAnalyzer>, AnalyzerComponentBuilderPresenter> { @Inject DCModule dcModule; @Override public RendererPrecedence getPrecedence(final AnalyzerComponentBuilder<CompletenessAnalyzer> ajb) { if (ajb.getDescriptor().getComponentClass() == CompletenessAnalyzer.class) { return RendererPrecedence.HIGH; } return RendererPrecedence.NOT_CAPABLE; } @Override public AnalyzerComponentBuilderPresenter render(final AnalyzerComponentBuilder<CompletenessAnalyzer> ajb) { final PropertyWidgetFactory propertyWidgetFactory = dcModule.createChildInjectorForComponent(ajb).getInstance(PropertyWidgetFactory.class); return new CompletenessAnalyzerComponentBuilderPresenter(ajb, propertyWidgetFactory); } }
@RendererBean(TextRenderingFormat.class) public class MetricBasedResultTextRenderer implements Renderer<AnalyzerResult, String> {
@RendererBean(SwingRenderingFormat.class) public class NumberAnalyzerResultSwingRenderer extends AbstractCrosstabResultSwingRenderer<NumberAnalyzerResult> {
@RendererBean(ComponentBuilderPresenterRenderingFormat.class) public class EqualsFilterComponentBuilderPresenterRenderer implements Renderer<FilterComponentBuilder<EqualsFilter, EqualsFilter.Category>, FilterComponentBuilderPresenter> {
@RendererBean(ComponentBuilderPresenterRenderingFormat.class) public class CompareFilterComponentBuilderPresenterRenderer implements Renderer<FilterComponentBuilder<CompareFilter, CompareFilter.Category>, FilterComponentBuilderPresenter> {
@RendererBean(TextRenderingFormat.class) public class CrosstabTextRenderer extends AbstractRenderer<CrosstabResult, String> {