Program: 108366
Project: 108366
Buggy source:
@Override public void update(ModelEvent event){
  if (event.part == ModelPart.MODEL) {
    this.model=(Model)event.data;
  }
  if (event.part == ModelPart.MODEL || event.part == ModelPart.INPUT) {
    this.attributes.clear();
  }
  if (event.part == ModelPart.ATTRIBUTE_TYPE || event.part == ModelPart.MODEL) {
    if (model != null) {
      DataDefinition definition=model.getInputDefinition();
      List<String> qis=new ArrayList<String>();
      if (definition != null) {
        Set<String> _qis=definition.getQuasiIdentifyingAttributes();
        if (this.attributes.equals(_qis)) {
          return;
        }
        DataHandle handle=model.getInputConfig().getInput().getHandle();
        for (int i=0; i < handle.getNumColumns(); i++) {
          String attr=handle.getAttributeName(i);
          if (_qis.contains(attr)) {
            qis.add(attr);
          }
        }
        attributes.clear();
        attributes.addAll(qis);
      }
      root.setRedraw(false);
      if (panel != null) {
        panel.dispose();
      }
      panel=new Composite(root,SWT.NONE);
      panel.setLayoutData(GridDataFactory.swtDefaults().grab(true,true).align(SWT.FILL,SWT.CENTER).create());
      panel.setLayout(GridLayoutFactory.swtDefaults().numColumns(qis.size()).margins(0,0).equalWidth(true).create());
      List<Composite> composites=new ArrayList<Composite>();
      for (int i=0; i < qis.size(); i++) {
        Composite c=new Composite(panel,SWT.NONE);
        c.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,false,1,1));
        c.setLayout(GridLayoutFactory.swtDefaults().numColumns(1).margins(2,0).create());
        composites.add(c);
      }
      for (int i=0; i < qis.size(); i++) {
        Label label=new Label(composites.get(i),SWT.CENTER);
        label.setText(qis.get(i));
        label.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,false,1,1));
      }
      List<Knob<Double>> knobs=new ArrayList<Knob<Double>>();
      for (int i=0; i < qis.size(); i++) {
        Knob<Double> knob=new Knob<Double>(composites.get(i),SWT.NULL,new KnobRange.Double(0d,1d));
        knob.setLayoutData(GridDataFactory.swtDefaults().grab(false,false).align(SWT.CENTER,SWT.CENTER).hint(30,30).create());
        knob.setDefaultColorProfile(KnobColorProfile.createDefaultSystemProfile(root.getDisplay()));
        knob.setFocusedColorProfile(KnobColorProfile.createFocusedBlueRedProfile(root.getDisplay()));
        knobs.add(knob);
      }
      for (int i=0; i < qis.size(); i++) {
        final Label label=new Label(composites.get(i),SWT.CENTER);
        label.setText("String_Node_Str");
        label.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,false,1,1));
        final String attribute=qis.get(i);
        final Knob<Double> knob=knobs.get(i);
        knob.addSelectionListener(new SelectionAdapter(){
          public void widgetSelected(          SelectionEvent arg0){
            double value=knob.getValue();
            label.setText(format.format(value));
            if (model != null && model.getInputConfig() != null) {
              model.getInputConfig().setAttributeWeight(attribute,value);
            }
          }
        }
);
      }
      for (int i=0; i < qis.size(); i++) {
        if (model != null && model.getInputConfig() != null) {
          knobs.get(i).setValue(model.getInputConfig().getAttributeWeight(qis.get(i)));
        }
      }
      root.setVisible(!qis.isEmpty());
      root.layout(true,true);
      root.setRedraw(true);
    }
  }
}

Fixed version (ground truth):
@Override public void update(ModelEvent event){
  if (event.part == ModelPart.MODEL) {
    this.model=(Model)event.data;
  }
  if (event.part == ModelPart.MODEL || event.part == ModelPart.INPUT) {
    this.attributes.clear();
  }
  if (event.part == ModelPart.ATTRIBUTE_TYPE || event.part == ModelPart.MODEL) {
    if (model != null) {
      DataDefinition definition=model.getInputDefinition();
      List<String> qis=new ArrayList<String>();
      if (definition != null) {
        Set<String> _qis=definition.getQuasiIdentifyingAttributes();
        if (this.attributes.equals(_qis)) {
          return;
        }
        DataHandle handle=model.getInputConfig().getInput().getHandle();
        for (int i=0; i < handle.getNumColumns(); i++) {
          String attr=handle.getAttributeName(i);
          if (_qis.contains(attr)) {
            qis.add(attr);
          }
        }
        attributes.clear();
        attributes.addAll(qis);
      }
      if (root.isDisposed())       return;
      root.setRedraw(false);
      if (panel != null) {
        panel.dispose();
      }
      panel=new Composite(root,SWT.NONE);
      panel.setLayoutData(GridDataFactory.swtDefaults().grab(true,true).align(SWT.FILL,SWT.CENTER).create());
      panel.setLayout(GridLayoutFactory.swtDefaults().numColumns(qis.size()).margins(0,0).equalWidth(true).create());
      List<Composite> composites=new ArrayList<Composite>();
      for (int i=0; i < qis.size(); i++) {
        Composite c=new Composite(panel,SWT.NONE);
        c.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,false,1,1));
        c.setLayout(GridLayoutFactory.swtDefaults().numColumns(1).margins(2,0).create());
        composites.add(c);
      }
      for (int i=0; i < qis.size(); i++) {
        Label label=new Label(composites.get(i),SWT.CENTER);
        label.setText(qis.get(i));
        label.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,false,1,1));
      }
      List<Knob<Double>> knobs=new ArrayList<Knob<Double>>();
      for (int i=0; i < qis.size(); i++) {
        Knob<Double> knob=new Knob<Double>(composites.get(i),SWT.NULL,new KnobRange.Double(0d,1d));
        knob.setLayoutData(GridDataFactory.swtDefaults().grab(false,false).align(SWT.CENTER,SWT.CENTER).hint(30,30).create());
        knob.setDefaultColorProfile(KnobColorProfile.createDefaultSystemProfile(root.getDisplay()));
        knob.setFocusedColorProfile(KnobColorProfile.createFocusedBlueRedProfile(root.getDisplay()));
        knobs.add(knob);
      }
      for (int i=0; i < qis.size(); i++) {
        final Label label=new Label(composites.get(i),SWT.CENTER);
        label.setText("String_Node_Str");
        label.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,false,1,1));
        final String attribute=qis.get(i);
        final Knob<Double> knob=knobs.get(i);
        knob.addSelectionListener(new SelectionAdapter(){
          public void widgetSelected(          SelectionEvent arg0){
            double value=knob.getValue();
            label.setText(format.format(value));
            if (model != null && model.getInputConfig() != null) {
              model.getInputConfig().setAttributeWeight(attribute,value);
            }
          }
        }
);
      }
      for (int i=0; i < qis.size(); i++) {
        if (model != null && model.getInputConfig() != null) {
          knobs.get(i).setValue(model.getInputConfig().getAttributeWeight(qis.get(i)));
        }
      }
      root.setVisible(!qis.isEmpty());
      root.layout(true,true);
      root.setRedraw(true);
    }
  }
}