EMMA Coverage Report (generated Sun Sep 18 11:34:27 PHT 2011)
[all classes][org.apache.continuum.dao]

COVERAGE SUMMARY FOR SOURCE FILE [ProjectGroupDaoImpl.java]

nameclass, %method, %block, %line, %
ProjectGroupDaoImpl.java100% (1/1)59%  (10/17)43%  (109/255)51%  (27/53)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class ProjectGroupDaoImpl100% (1/1)59%  (10/17)43%  (109/255)51%  (27/53)
getAllProjectGroups (): List 0%   (0/1)0%   (0/6)0%   (0/1)
getAllProjectGroupsWithTheLot (): List 0%   (0/1)0%   (0/35)0%   (0/2)
getProjectGroupByGroupIdWithBuildDetails (String): ProjectGroup 0%   (0/1)0%   (0/8)0%   (0/1)
getProjectGroupByGroupIdWithProjects (String): ProjectGroup 0%   (0/1)0%   (0/8)0%   (0/1)
getProjectGroupByProject (Project): ProjectGroup 0%   (0/1)0%   (0/5)0%   (0/1)
getProjectGroupByProjectId (int): ProjectGroup 0%   (0/1)0%   (0/19)0%   (0/3)
getProjectGroupByRepository (int): List 0%   (0/1)0%   (0/53)0%   (0/11)
removeProjectGroup (ProjectGroup): void 100% (1/1)83%  (57/69)74%  (17/23)
ProjectGroupDaoImpl (): void 100% (1/1)100% (3/3)100% (1/1)
addProjectGroup (ProjectGroup): ProjectGroup 100% (1/1)100% (5/5)100% (1/1)
getAllProjectGroupsWithBuildDetails (): List 100% (1/1)100% (6/6)100% (1/1)
getAllProjectGroupsWithProjects (): Collection 100% (1/1)100% (6/6)100% (1/1)
getProjectGroup (int): ProjectGroup 100% (1/1)100% (6/6)100% (1/1)
getProjectGroupByGroupId (String): ProjectGroup 100% (1/1)100% (8/8)100% (1/1)
getProjectGroupWithBuildDetailsByProjectGroupId (int): ProjectGroup 100% (1/1)100% (7/7)100% (1/1)
getProjectGroupWithProjects (int): ProjectGroup 100% (1/1)100% (7/7)100% (1/1)
updateProjectGroup (ProjectGroup): void 100% (1/1)100% (4/4)100% (2/2)

1package org.apache.continuum.dao;
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 
22import java.util.ArrayList;
23import java.util.Arrays;
24import java.util.Collection;
25import java.util.Collections;
26import java.util.Iterator;
27import java.util.List;
28 
29import javax.annotation.Resource;
30import javax.jdo.Extent;
31import javax.jdo.PersistenceManager;
32import javax.jdo.Query;
33import javax.jdo.Transaction;
34 
35import org.apache.maven.continuum.model.project.BuildDefinition;
36import org.apache.maven.continuum.model.project.Project;
37import org.apache.maven.continuum.model.project.ProjectGroup;
38import org.apache.maven.continuum.store.ContinuumObjectNotFoundException;
39import org.apache.maven.continuum.store.ContinuumStoreException;
40import org.codehaus.plexus.jdo.PlexusJdoUtils;
41import org.springframework.stereotype.Repository;
42 
43/**
44 * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
45 * @version $Id: ProjectGroupDaoImpl.java 765340 2009-04-15 20:22:00Z evenisse $
46 * @plexus.component role="org.apache.continuum.dao.ProjectGroupDao"
47 */
48@Repository("projectGroupDao")
49public class ProjectGroupDaoImpl
50    extends AbstractDao
51    implements ProjectGroupDao
52{
53    /**
54     * @plexus.requirement role=org.apache.continuum.dao.ProjectDao"
55     */
56    @Resource
57    private ProjectDao projectDao;
58 
59    public ProjectGroup addProjectGroup( ProjectGroup group )
60    {
61        return (ProjectGroup) addObject( group );
62    }
63 
64    public void removeProjectGroup( ProjectGroup projectGroup )
65    {
66        ProjectGroup pg = null;
67        try
68        {
69            pg = getProjectGroupWithBuildDetailsByProjectGroupId( projectGroup.getId() );
70        }
71        catch ( Exception e )
72        {
73            // Do nothing
74        }
75 
76        if ( pg != null )
77        {
78            // TODO: why do we need to do this? if not - build results are not
79            // removed and a integrity constraint is violated. I assume its
80            // because of the fetch groups
81            for ( Project p : (List<Project>) pg.getProjects() )
82            {
83                projectDao.removeProject( p );
84            }
85 
86            List<BuildDefinition> buildDefs = new ArrayList<BuildDefinition>();
87            Iterator<BuildDefinition> it = pg.getBuildDefinitions().listIterator();
88            boolean template = false;
89            while ( it.hasNext() )
90            {
91                BuildDefinition bd = it.next();
92                if ( bd.isTemplate() )
93                {
94                    template = true;
95                }
96                else
97                {
98                    buildDefs.add( bd );
99                }
100            }
101            if ( template )
102            {
103                try
104                {
105                    pg.setBuildDefinitions( buildDefs );
106                    updateProjectGroup( pg );
107                }
108                catch ( ContinuumStoreException e )
109                {
110                    // Do nothing
111                }
112            }
113 
114            removeObject( pg );
115        }
116    }
117 
118    public ProjectGroup getProjectGroup( int projectGroupId )
119        throws ContinuumStoreException
120    {
121        return (ProjectGroup) getObjectById( ProjectGroup.class, projectGroupId );
122    }
123 
124    public ProjectGroup getProjectGroupByGroupId( String groupId )
125        throws ContinuumStoreException
126    {
127        return (ProjectGroup) getObjectFromQuery( ProjectGroup.class, "groupId", groupId, null );
128    }
129 
130    public ProjectGroup getProjectGroupByGroupIdWithBuildDetails( String groupId )
131        throws ContinuumStoreException
132    {
133        return (ProjectGroup) getObjectFromQuery( ProjectGroup.class, "groupId", groupId,
134                                                  PROJECT_BUILD_DETAILS_FETCH_GROUP );
135    }
136 
137    public ProjectGroup getProjectGroupByGroupIdWithProjects( String groupId )
138        throws ContinuumStoreException
139    {
140        return (ProjectGroup) getObjectFromQuery( ProjectGroup.class, "groupId", groupId,
141                                                  PROJECTGROUP_PROJECTS_FETCH_GROUP );
142    }
143 
144    public ProjectGroup getProjectGroupByProjectId( int projectId )
145        throws ContinuumObjectNotFoundException
146    {
147        try
148        {
149            return projectDao.getProject( projectId ).getProjectGroup();
150        }
151        catch ( ContinuumStoreException e )
152        {
153            throw new ContinuumObjectNotFoundException(
154                "unable to find project group containing project with id: " + projectId );
155 
156        }
157    }
158 
159    public ProjectGroup getProjectGroupByProject( Project project )
160        throws ContinuumObjectNotFoundException
161    {
162        return getProjectGroupByProjectId( project.getId() );
163    }
164 
165    public void updateProjectGroup( ProjectGroup group )
166        throws ContinuumStoreException
167    {
168        updateObject( group );
169    }
170 
171    public ProjectGroup getProjectGroupWithProjects( int projectGroupId )
172        throws ContinuumStoreException
173    {
174        return (ProjectGroup) getObjectById( ProjectGroup.class, projectGroupId, PROJECTGROUP_PROJECTS_FETCH_GROUP );
175    }
176 
177    public Collection<ProjectGroup> getAllProjectGroupsWithProjects()
178    {
179        return getAllObjectsDetached( ProjectGroup.class, "name ascending", PROJECTGROUP_PROJECTS_FETCH_GROUP );
180    }
181 
182    public List<ProjectGroup> getAllProjectGroupsWithBuildDetails()
183    {
184        return getAllObjectsDetached( ProjectGroup.class, "name ascending", PROJECT_BUILD_DETAILS_FETCH_GROUP );
185    }
186 
187    public List<ProjectGroup> getAllProjectGroups()
188    {
189        return getAllObjectsDetached( ProjectGroup.class, "name ascending", null );
190    }
191 
192    public List<ProjectGroup> getAllProjectGroupsWithTheLot()
193    {
194        List fetchGroups = Arrays.asList(
195            new String[]{PROJECT_WITH_BUILDS_FETCH_GROUP, PROJECTGROUP_PROJECTS_FETCH_GROUP,
196                BUILD_RESULT_WITH_DETAILS_FETCH_GROUP, PROJECT_WITH_CHECKOUT_RESULT_FETCH_GROUP,
197                PROJECT_ALL_DETAILS_FETCH_GROUP, PROJECT_BUILD_DETAILS_FETCH_GROUP} );
198        return PlexusJdoUtils.getAllObjectsDetached( getPersistenceManager(), ProjectGroup.class, "name ascending",
199                                                     fetchGroups );
200    }
201 
202    public ProjectGroup getProjectGroupWithBuildDetailsByProjectGroupId( int projectGroupId )
203        throws ContinuumStoreException
204    {
205        return (ProjectGroup) getObjectById( ProjectGroup.class, projectGroupId, PROJECT_BUILD_DETAILS_FETCH_GROUP );
206    }
207 
208    public List<ProjectGroup> getProjectGroupByRepository( int repositoryId )
209    {
210        PersistenceManager pm = getPersistenceManager();
211 
212        Transaction tx = pm.currentTransaction();
213 
214        try
215        {
216            tx.begin();
217 
218            Extent extent = pm.getExtent( ProjectGroup.class, true );
219 
220            Query query = pm.newQuery( extent );
221 
222            query.declareParameters( "int repositoryId" );
223 
224            query.setFilter( "this.localRepository.id == repositoryId" );
225 
226            List result = (List) query.execute( repositoryId );
227 
228            return result == null ? Collections.EMPTY_LIST : (List) pm.detachCopyAll( result );
229        }
230        finally
231        {
232            tx.commit();
233 
234            rollback( tx );
235        }
236    }
237 
238}

[all classes][org.apache.continuum.dao]
EMMA 2.0.5312 (C) Vladimir Roubtsov