/* * Copyright (c) 2012 Nat Pryce, Timo Meinen. * * This file is part of Team Piazza. * * Team Piazza is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * Team Piazza is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package com.natpryce.piazza; import jetbrains.buildServer.Build; import jetbrains.buildServer.notification.Notificator; import jetbrains.buildServer.notification.NotificatorRegistry; import jetbrains.buildServer.responsibility.ResponsibilityEntry; import jetbrains.buildServer.responsibility.TestNameResponsibilityEntry; import jetbrains.buildServer.serverSide.*; import jetbrains.buildServer.serverSide.mute.MuteInfo; import jetbrains.buildServer.serverSide.problems.BuildProblemInfo; import jetbrains.buildServer.tests.TestName; import jetbrains.buildServer.users.NotificatorPropertyKey; import jetbrains.buildServer.users.PropertyKey; import jetbrains.buildServer.users.SUser; import jetbrains.buildServer.vcs.VcsRoot; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Set; /** * We use the {@link Notificator} to generate input fields on the user settings notification rules page * * @author Timo Meinen */ public class PiazzaNotificator implements Notificator { private static final String TYPE = Piazza.PLUGIN_NAME; private static final String PROPERTY_USER_IMAGE_NAME = "userImage"; private static final PropertyKey PROPERTY_USER_IMAGE_KEY = new NotificatorPropertyKey(TYPE, PROPERTY_USER_IMAGE_NAME); public PiazzaNotificator(NotificatorRegistry registry) { List<UserPropertyInfo> userProps = Collections .singletonList(new UserPropertyInfo(PROPERTY_USER_IMAGE_NAME, "Your image URL (Leave empty to use Gravatar.com)")); registry.register(this, userProps); } @Override public String getNotificatorType() { return TYPE; } @Override public String getDisplayName() { return "Piazza Build Monitor"; } static String getPortraitUrl(SUser user) { return user.getPropertyValue(PROPERTY_USER_IMAGE_KEY); } @Override public void notifyBuildStarted(SRunningBuild build, Set<SUser> users) { // ignored } @Override public void notifyBuildSuccessful(SRunningBuild build, Set<SUser> users) { // ignored } @Override public void notifyBuildFailed(SRunningBuild build, Set<SUser> users) { // ignored } @Override public void notifyBuildFailedToStart(SRunningBuild build, Set<SUser> users) { // ignored } @Override public void notifyLabelingFailed(Build build, VcsRoot root, Throwable exception, Set<SUser> users) { // ignored } @Override public void notifyBuildFailing(SRunningBuild build, Set<SUser> users) { // ignored } @Override public void notifyBuildProbablyHanging(SRunningBuild build, Set<SUser> users) { // ignored } @Override public void notifyResponsibleChanged(SBuildType buildType, Set<SUser> users) { // ignored } @Override public void notifyResponsibleAssigned(SBuildType buildType, Set<SUser> users) { // ignored } @Override public void notifyResponsibleChanged(TestNameResponsibilityEntry oldValue, TestNameResponsibilityEntry newValue, SProject project, Set<SUser> users) { // ignored } @Override public void notifyResponsibleAssigned(TestNameResponsibilityEntry oldValue, TestNameResponsibilityEntry newValue, SProject project, Set<SUser> users) { // ignored } @Override public void notifyResponsibleChanged(Collection<TestName> testNames, ResponsibilityEntry entry, SProject project, Set<SUser> users) { // ignored } @Override public void notifyResponsibleAssigned(Collection<TestName> testNames, ResponsibilityEntry entry, SProject project, Set<SUser> users) { // ignored } @Override public void notifyBuildProblemResponsibleAssigned(@NotNull Collection<BuildProblemInfo> buildProblemInfos, @NotNull ResponsibilityEntry responsibilityEntry, @NotNull SProject sProject, @NotNull Set<SUser> sUsers) { //To change body of implemented methods use File | Settings | File Templates. } @Override public void notifyBuildProblemResponsibleChanged(@NotNull Collection<BuildProblemInfo> buildProblemInfos, @NotNull ResponsibilityEntry responsibilityEntry, @NotNull SProject sProject, @NotNull Set<SUser> sUsers) { //To change body of implemented methods use File | Settings | File Templates. } @Override public void notifyTestsMuted(Collection<STest> tests, MuteInfo muteInfo, Set<SUser> users) { // ignored } @Override public void notifyTestsUnmuted(Collection<STest> tests, MuteInfo muteInfo, SUser user, Set<SUser> users) { // ignored } @Override public void notifyBuildProblemsMuted(@NotNull Collection<BuildProblemInfo> buildProblemInfos, @NotNull MuteInfo muteInfo, @NotNull Set<SUser> sUsers) { //To change body of implemented methods use File | Settings | File Templates. } @Override public void notifyBuildProblemsUnmuted(@NotNull Collection<BuildProblemInfo> buildProblemInfos, @NotNull MuteInfo muteInfo, @Nullable SUser sUser, @NotNull Set<SUser> sUsers) { //To change body of implemented methods use File | Settings | File Templates. } }