1 package org.apache.maven.continuum.web.action.notifier;
2
3 /*
4 * Licensed to the Apache Software Foundation (ASF) under one
5 * or more contributor license agreements. See the NOTICE file
6 * distributed with this work for additional information
7 * regarding copyright ownership. The ASF licenses this file
8 * to you under the Apache License, Version 2.0 (the
9 * "License"); you may not use this file except in compliance
10 * with the License. You may obtain a copy of the License at
11 *
12 * http://www.apache.org/licenses/LICENSE-2.0
13 *
14 * Unless required by applicable law or agreed to in writing,
15 * software distributed under the License is distributed on an
16 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17 * KIND, either express or implied. See the License for the
18 * specific language governing permissions and limitations
19 * under the License.
20 */
21
22 import org.apache.maven.continuum.ContinuumException;
23 import org.apache.maven.continuum.model.project.Project;
24 import org.apache.maven.continuum.model.project.ProjectGroup;
25 import org.apache.maven.continuum.model.project.ProjectNotifier;
26 import org.apache.maven.continuum.web.exception.AuthorizationRequiredException;
27
28 /**
29 * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
30 * @version $Id: AbstractProjectNotifierEditAction.java 729461 2008-12-26 08:38:10Z olamy $
31 */
32 public abstract class AbstractProjectNotifierEditAction
33 extends AbstractNotifierEditActionSupport
34 {
35
36 /**
37 * Identifier for the {@link Project} who's {@link ProjectNotifier} is being edited.
38 */
39 private int projectId;
40
41 /**
42 * Identifier for the {@link ProjectGroup} instance that the current {@link Project} is a member of.
43 */
44 private int projectGroupId;
45
46 private String projectGroupName = "";
47
48 /**
49 * Save the notifier for the {@link Project} here.<p>
50 * This is used by the subclasses that create/obtain an instance of
51 * {@link ProjectNotifier} to be saved.
52 *
53 * @see org.apache.maven.continuum.web.action.notifier.AbstractNotifierEditActionSupport#saveNotifier(ProjectNotifier)
54 */
55 protected void saveNotifier( ProjectNotifier notifier )
56 throws ContinuumException
57 {
58 boolean isNew = notifier.getId() <= 0;
59 if ( !isNew )
60 {
61 getContinuum().updateNotifier( projectId, notifier );
62 }
63 else
64 {
65 getContinuum().addNotifier( projectId, notifier );
66 }
67 }
68
69 /**
70 * @see org.apache.maven.continuum.web.action.notifier.AbstractNotifierEditActionSupport#getNotifier()
71 */
72 protected ProjectNotifier getNotifier()
73 throws ContinuumException
74 {
75 return getContinuum().getNotifier( projectId, getNotifierId() );
76 }
77
78 /**
79 * Returns the identifier for the current project.
80 *
81 * @return current project's id.
82 */
83 public int getProjectId()
84 {
85 return projectId;
86 }
87
88 /**
89 * Sets the id of the current project for this action.
90 *
91 * @param projectId current project's id.
92 */
93 public void setProjectId( int projectId )
94 {
95 this.projectId = projectId;
96 }
97
98 /**
99 * Returns the identifier for the {@link ProjectGroup} that the
100 * {@link Project} is a member of.
101 *
102 * @return the projectGroupId
103 */
104 public int getProjectGroupId()
105 {
106 return projectGroupId;
107 }
108
109 /**
110 * Sets the identifier for the {@link ProjectGroup} that the
111 * {@link Project} is a member of.
112 *
113 * @param projectGroupId the identifier to set
114 */
115 public void setProjectGroupId( int projectGroupId )
116 {
117 this.projectGroupId = projectGroupId;
118 }
119
120 protected void checkAuthorization()
121 throws AuthorizationRequiredException, ContinuumException
122 {
123 if ( getNotifier() == null )
124 {
125 checkAddProjectNotifierAuthorization( getProjectGroupName() );
126 }
127 else
128 {
129 checkModifyProjectNotifierAuthorization( getProjectGroupName() );
130 }
131 }
132
133 public String getProjectGroupName()
134 throws ContinuumException
135 {
136 if ( projectGroupName == null || "".equals( projectGroupName ) )
137 {
138 if ( projectGroupId != 0 )
139 {
140 projectGroupName = getContinuum().getProjectGroup( projectGroupId ).getName();
141 }
142 else
143 {
144 projectGroupName = getContinuum().getProjectGroupByProjectId( projectId ).getName();
145 }
146 }
147
148 return projectGroupName;
149 }
150
151 }