package eu.doppel_helix.netbeans.mantisintegration.issue; import java.beans.PropertyChangeListener; import java.io.File; import java.rmi.RemoteException; import java.util.Collection; import java.util.logging.Logger; import javax.xml.rpc.ServiceException; import org.netbeans.modules.bugtracking.spi.IssueController; import org.netbeans.modules.bugtracking.spi.IssueProvider; public class MantisIssueProvider implements IssueProvider<MantisIssue> { private static final Logger LOG = Logger.getLogger(MantisIssueProvider.class.getName()); @Override public String getDisplayName(MantisIssue data) { return data.getDisplayValue(); } @Override public String getTooltip(MantisIssue data) { return getDisplayName(data); } @Override public String getID(MantisIssue data) { return data.getIdAsString(); } @Override public String getSummary(MantisIssue data) { return data.getSummary(); } @Override public boolean isNew(MantisIssue data) { return data.getId() == null; } @Override public boolean isFinished(MantisIssue data) { return data.isFinished(); } @Override public boolean refresh(MantisIssue data) { try { return data.refresh(); } catch (Exception ex) { data.getMantisRepository() .getExceptionHandler() .handleException(LOG, "Failed to refresh issue", ex); return false; } } @Override public void addComment(MantisIssue data, String comment, boolean closeAsFixed) { try { data.addComment(comment, closeAsFixed); } catch (ServiceException | RemoteException | RuntimeException ex) { data.getMantisRepository() .getExceptionHandler() .handleException(LOG, "Failed to add comment to issue", ex); } } @Override public IssueController getController(MantisIssue data) { return data.getController(); } @Override public void removePropertyChangeListener(MantisIssue data, PropertyChangeListener listener) { data.removePropertyChangeListener(listener); } @Override public void addPropertyChangeListener(MantisIssue data, PropertyChangeListener listener) { data.addPropertyChangeListener(listener); } @Override public Collection<String> getSubtasks(MantisIssue data) { return data.getSubtasks(); } @Override public void attachFile(MantisIssue data, File file, String description, boolean isPatch) { try { data.attachFile(file, description); } catch (Exception ex) { data.getMantisRepository() .getExceptionHandler() .handleException(LOG, "Failed to add patch to issue", ex); } } }