Program: 136958
Project: 136958
Buggy source:
@SuppressWarnings("String_Node_Str") public void chartMouseClicked(ChartMouseEvent event){
  boolean flag=event.getTrigger().getButton() != MouseEvent.BUTTON3;
  chartComp.setDomainZoomable(flag);
  chartComp.setRangeZoomable(flag);
  final ExecutionLanguage currentEngine=analysis.getParameters().getExecutionLanguage();
  if (flag) {
    return;
  }
  ChartEntity chartEntity=event.getEntity();
  if (chartEntity != null && chartEntity instanceof CategoryItemEntity) {
    CategoryItemEntity cateEntity=(CategoryItemEntity)chartEntity;
    ICustomerDataset dataEntity=(ICustomerDataset)cateEntity.getDataset();
    final ChartDataEntity currentDataEntity=getCurrentChartDateEntity(cateEntity,dataEntity);
    if (currentDataEntity != null) {
      if (!analysis.getParameters().isStoreData()) {
        return;
      }
      if (0 == analysis.getResults().getIndicToRowMap().size()) {
        return;
      }
      Menu menu=new Menu(chartComp.getShell(),SWT.POP_UP);
      chartComp.setMenu(menu);
      final Indicator currentIndicator=currentDataEntity.getIndicator();
      AnalyzedDataSet analyDataSet=analysis.getResults().getIndicToRowMap().get(currentIndicator);
      if (analyDataSet == null || analyDataSet.getData() == null || analyDataSet.getData().size() == 0) {
        return;
      }
      int createPatternFlag=0;
      MenuItemEntity[] itemEntities=ChartTableMenuGenerator.generate(explorer,analysis,currentDataEntity);
      for (      final MenuItemEntity itemEntity : itemEntities) {
        MenuItem item=new MenuItem(menu,SWT.PUSH);
        item.setText(itemEntity.getLabel());
        item.setImage(itemEntity.getIcon());
        try {
          int mapSize=DrillDownUtils.getMapDB(currentDataEntity,analysis,itemEntity).size();
          item.setEnabled(mapSize > 0);
        }
 catch (        IOError e) {
          item.setEnabled(false);
        }
        item.addSelectionListener(new SelectionAdapter(){
          @Override public void widgetSelected(          SelectionEvent e){
            if (ExecutionLanguage.JAVA == currentEngine) {
              try {
                CorePlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage().openEditor(new DrillDownEditorInput(analysis,currentDataEntity,itemEntity),"String_Node_Str");
              }
 catch (              PartInitException e1) {
                e1.printStackTrace();
              }
            }
 else {
              Display.getDefault().asyncExec(new Runnable(){
                public void run(){
                  Connection tdDataProvider=SwitchHelpers.CONNECTION_SWITCH.doSwitch(analysis.getContext().getConnection());
                  String query=itemEntity.getQuery();
                  String editorName=currentIndicator.getName();
                  SqlExplorerUtils.getDefault().runInDQViewer(tdDataProvider,query,editorName);
                }
              }
);
            }
          }
        }
);
        if ((currentIndicator instanceof PatternFreqIndicator || currentIndicator instanceof PatternLowFreqIndicator) && createPatternFlag == 0) {
          MenuItem itemCreatePatt=new MenuItem(menu,SWT.PUSH);
          itemCreatePatt.setText(DefaultMessagesImpl.getString("String_Node_Str"));
          final PatternTransformer pattTransformer=new PatternTransformer(DbmsLanguageFactory.createDbmsLanguage(analysis));
          itemCreatePatt.addSelectionListener(new SelectionAdapter(){
            @Override public void widgetSelected(            SelectionEvent e){
              Display.getDefault().asyncExec(new Runnable(){
                public void run(){
                  ChartTableFactory.createPattern(analysis,itemEntity,pattTransformer);
                }
              }
);
            }
          }
);
        }
        createPatternFlag++;
      }
      ChartTableFactory.addJobGenerationMenu(menu,analysis,currentIndicator);
      menu.setVisible(true);
    }
  }
}

Fixed version (ground truth):
@SuppressWarnings("String_Node_Str") public void chartMouseClicked(ChartMouseEvent event){
  boolean flag=event.getTrigger().getButton() != MouseEvent.BUTTON3;
  chartComp.setDomainZoomable(flag);
  chartComp.setRangeZoomable(flag);
  final ExecutionLanguage currentEngine=analysis.getParameters().getExecutionLanguage();
  if (flag) {
    return;
  }
  ChartEntity chartEntity=event.getEntity();
  if (chartEntity != null && chartEntity instanceof CategoryItemEntity) {
    CategoryItemEntity cateEntity=(CategoryItemEntity)chartEntity;
    ICustomerDataset dataEntity=(ICustomerDataset)cateEntity.getDataset();
    final ChartDataEntity currentDataEntity=getCurrentChartDateEntity(cateEntity,dataEntity);
    if (currentDataEntity != null) {
      if (!analysis.getParameters().isStoreData()) {
        return;
      }
      if (0 == analysis.getResults().getIndicToRowMap().size()) {
        return;
      }
      Menu menu=new Menu(chartComp.getShell(),SWT.POP_UP);
      chartComp.setMenu(menu);
      final Indicator currentIndicator=currentDataEntity.getIndicator();
      AnalyzedDataSet analyDataSet=analysis.getResults().getIndicToRowMap().get(currentIndicator);
      if (analyDataSet == null || analyDataSet.getData() == null || analyDataSet.getData().size() == 0) {
        return;
      }
      int createPatternFlag=0;
      MenuItemEntity[] itemEntities=ChartTableMenuGenerator.generate(explorer,analysis,currentDataEntity);
      for (      final MenuItemEntity itemEntity : itemEntities) {
        MenuItem item=new MenuItem(menu,SWT.PUSH);
        item.setText(itemEntity.getLabel());
        item.setImage(itemEntity.getIcon());
        item.setEnabled(DrillDownUtils.isMenuItemEnable(currentDataEntity,itemEntity,analysis));
        item.addSelectionListener(new SelectionAdapter(){
          @Override public void widgetSelected(          SelectionEvent e){
            if (ExecutionLanguage.JAVA == currentEngine) {
              try {
                CorePlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage().openEditor(new DrillDownEditorInput(analysis,currentDataEntity,itemEntity),"String_Node_Str");
              }
 catch (              PartInitException e1) {
                e1.printStackTrace();
              }
            }
 else {
              Display.getDefault().asyncExec(new Runnable(){
                public void run(){
                  Connection tdDataProvider=SwitchHelpers.CONNECTION_SWITCH.doSwitch(analysis.getContext().getConnection());
                  String query=itemEntity.getQuery();
                  String editorName=currentIndicator.getName();
                  SqlExplorerUtils.getDefault().runInDQViewer(tdDataProvider,query,editorName);
                }
              }
);
            }
          }
        }
);
        if ((currentIndicator instanceof PatternFreqIndicator || currentIndicator instanceof PatternLowFreqIndicator) && createPatternFlag == 0) {
          MenuItem itemCreatePatt=new MenuItem(menu,SWT.PUSH);
          itemCreatePatt.setText(DefaultMessagesImpl.getString("String_Node_Str"));
          final PatternTransformer pattTransformer=new PatternTransformer(DbmsLanguageFactory.createDbmsLanguage(analysis));
          itemCreatePatt.addSelectionListener(new SelectionAdapter(){
            @Override public void widgetSelected(            SelectionEvent e){
              Display.getDefault().asyncExec(new Runnable(){
                public void run(){
                  ChartTableFactory.createPattern(analysis,itemEntity,pattTransformer);
                }
              }
);
            }
          }
);
        }
        createPatternFlag++;
      }
      ChartTableFactory.addJobGenerationMenu(menu,analysis,currentIndicator);
      menu.setVisible(true);
    }
  }
}