Skip to content

Commit

Permalink
WorkItem: 4707 Fixed timesheet export access for standonly iterations.
Browse files Browse the repository at this point in the history
  • Loading branch information
dwfennell committed Mar 31, 2012
1 parent 08ebd6c commit f778938
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 9 deletions.
61 changes: 59 additions & 2 deletions src/fi/hut/soberit/agilefant/web/BacklogAction.java
Expand Up @@ -2,6 +2,7 @@

import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

import org.springframework.beans.factory.annotation.Autowired;
Expand All @@ -12,11 +13,15 @@
import com.opensymphony.xwork2.ActionSupport;

import fi.hut.soberit.agilefant.business.BacklogBusiness;
import fi.hut.soberit.agilefant.business.IterationBusiness;
import fi.hut.soberit.agilefant.model.Backlog;
import fi.hut.soberit.agilefant.model.Iteration;
import fi.hut.soberit.agilefant.model.Product;
import fi.hut.soberit.agilefant.model.Project;
import fi.hut.soberit.agilefant.model.Story;
import fi.hut.soberit.agilefant.model.Team;
import fi.hut.soberit.agilefant.model.User;
import fi.hut.soberit.agilefant.security.SecurityUtil;

@Component("backlogAction")
@Scope("prototype")
Expand All @@ -36,6 +41,8 @@ public class BacklogAction extends ActionSupport {
@Autowired
private BacklogBusiness backlogBusiness;

@Autowired
private IterationBusiness iterationBusiness;

public String retrieve() {
backlog = backlogBusiness.retrieve(backlogId);
Expand All @@ -60,8 +67,15 @@ public String addAssignees() {
*/
public String retrieveSubBacklogs() {
if (backlogId == 0) {
// TODO: Retrieve standalone iterations
backlogs = backlogBusiness.retrieveAllStandAloneIterations();
Collection<Backlog> canditateBacklogs = backlogBusiness.retrieveAllStandAloneIterations();

// Check team access for standalone iterations.
for (Iterator<Backlog> iter = canditateBacklogs.iterator(); iter.hasNext();) {
Backlog backlog = iter.next();
if (checkTeamAccess(backlog.getId())) {
backlogs.add(backlog);
}
}
}
else {
backlog = backlogBusiness.retrieveIfExists(backlogId);
Expand Down Expand Up @@ -117,4 +131,47 @@ public Collection<Story> getStories() {
public Collection<Backlog> getBacklogs() {
return backlogs;
}

private boolean checkTeamAccess(int backlogId) {
User user = SecurityUtil.getLoggedUser();
Collection<Team> teams = user.getTeams();

Product product = (backlogBusiness.getParentProduct(backlogBusiness.retrieve(backlogId)));
if(product == null){
//standalone iteration
Iteration iteration = iterationBusiness.retrieve(backlogId);
if(iteration.isStandAlone()){
for (Iterator<Team> iter = teams.iterator(); iter.hasNext();){
Team team = (Team) iter.next();

Set<Iteration> iterations = team.getIterations();

for (Iterator<Iteration> iterationIterator = iterations.iterator(); iterationIterator.hasNext();) {
Iteration teamIteration = (Iteration) iterationIterator.next();
if (teamIteration.getId() == iteration.getId()) {
return true;
}
}
}
return false;
}
}

for (Iterator<Team> iter = teams.iterator(); iter.hasNext();){
Team team = (Team) iter.next();

Set<Product> products = team.getProducts();

for (Iterator<Product> productIterator = products.iterator(); productIterator.hasNext();) {
Product teamProduct = (Product) productIterator.next();

if (teamProduct.getId() == product.getId()) {
return true;
}
}
}

return false;
}

}
12 changes: 5 additions & 7 deletions src/fi/hut/soberit/agilefant/web/ProductAction.java
Expand Up @@ -104,12 +104,10 @@ public String retrieveAll() {
}

public String retrieveAllTimeSheets() {

// Now that we have teams being able to export "standalone iterations" doesn't make that much sense.
//Product standaloneProduct = new Product();
//standaloneProduct.setName("[Standalone Iterations]");
//standaloneProduct.setId(0);
//products.add(standaloneProduct);
Product standaloneProduct = new Product();
standaloneProduct.setName("[Standalone Iterations]");
standaloneProduct.setId(0);
products.add(standaloneProduct);

Collection<Product> canditateProducts = new ArrayList<Product>();

Expand Down Expand Up @@ -200,7 +198,7 @@ public void setTeamIds(Set<Integer> teamIds) {
this.teamIds = teamIds;
}

public boolean checkTeamAccess(int backlogId) {
private boolean checkTeamAccess(int backlogId) {
User user = SecurityUtil.getLoggedUser();
Collection<Team> teams = user.getTeams();

Expand Down

0 comments on commit f778938

Please sign in to comment.