summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Fick <mfick@codeaurora.org>2011-08-25 14:14:17 -0700
committerAndroid Code Review <code-review@android.com>2011-08-25 14:14:17 -0700
commitce3c717e35e135f54805069f73927597d44c7bca (patch)
tree485c5fb2c42116081c0499334b085aec1432f221
parentbb421f1e7b300251546f3d450c1d95130532761d (diff)
parentfccf928042d372f379204fcef61038f94c5b0845 (diff)
Merge "Add additional information in Groups Table."
-rw-r--r--gerrit-common/src/main/java/com/google/gerrit/common/data/AccountSecurity.java4
-rw-r--r--gerrit-common/src/main/java/com/google/gerrit/common/data/GroupList.java8
-rw-r--r--gerrit-gwtui/src/main/java/com/google/gerrit/client/account/MyGroupsScreen.java6
-rw-r--r--gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/AdminConstants.java3
-rw-r--r--gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/AdminConstants.properties3
-rw-r--r--gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/GroupTable.java32
-rw-r--r--gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/account/AccountSecurityImpl.java22
-rw-r--r--gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/account/GroupAdminServiceImpl.java9
-rw-r--r--gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/account/MyGroupsFactory.java2
9 files changed, 70 insertions, 19 deletions
diff --git a/gerrit-common/src/main/java/com/google/gerrit/common/data/AccountSecurity.java b/gerrit-common/src/main/java/com/google/gerrit/common/data/AccountSecurity.java
index 0b765582cf..c9aa0fdbd1 100644
--- a/gerrit-common/src/main/java/com/google/gerrit/common/data/AccountSecurity.java
+++ b/gerrit-common/src/main/java/com/google/gerrit/common/data/AccountSecurity.java
@@ -15,9 +15,9 @@
package com.google.gerrit.common.data;
import com.google.gerrit.common.auth.SignInRequired;
+import com.google.gerrit.common.data.GroupDetail;
import com.google.gerrit.reviewdb.Account;
import com.google.gerrit.reviewdb.AccountExternalId;
-import com.google.gerrit.reviewdb.AccountGroup;
import com.google.gerrit.reviewdb.AccountSshKey;
import com.google.gerrit.reviewdb.ContactInformation;
import com.google.gerrit.reviewdb.ContributorAgreement;
@@ -57,7 +57,7 @@ public interface AccountSecurity extends RemoteJsonService {
void myExternalIds(AsyncCallback<List<AccountExternalId>> callback);
@SignInRequired
- void myGroups(AsyncCallback<List<AccountGroup>> callback);
+ void myGroups(AsyncCallback<List<GroupDetail>> callback);
@SignInRequired
void deleteExternalIds(Set<AccountExternalId.Key> keys,
diff --git a/gerrit-common/src/main/java/com/google/gerrit/common/data/GroupList.java b/gerrit-common/src/main/java/com/google/gerrit/common/data/GroupList.java
index 1f0612092d..bc978cc5f6 100644
--- a/gerrit-common/src/main/java/com/google/gerrit/common/data/GroupList.java
+++ b/gerrit-common/src/main/java/com/google/gerrit/common/data/GroupList.java
@@ -14,19 +14,19 @@
package com.google.gerrit.common.data;
-import com.google.gerrit.reviewdb.AccountGroup;
+import com.google.gerrit.common.data.GroupDetail;
import java.util.List;
public class GroupList {
- protected List<AccountGroup> groups;
+ protected List<GroupDetail> groups;
protected boolean canCreateGroup;
- public List<AccountGroup> getGroups() {
+ public List<GroupDetail> getGroups() {
return groups;
}
- public void setGroups(List<AccountGroup> groups) {
+ public void setGroups(List<GroupDetail> groups) {
this.groups = groups;
}
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/MyGroupsScreen.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/MyGroupsScreen.java
index 437d438fb6..719c3952c2 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/MyGroupsScreen.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/account/MyGroupsScreen.java
@@ -16,7 +16,7 @@ package com.google.gerrit.client.account;
import com.google.gerrit.client.admin.GroupTable;
import com.google.gerrit.client.rpc.ScreenLoadCallback;
-import com.google.gerrit.reviewdb.AccountGroup;
+import com.google.gerrit.common.data.GroupDetail;
import java.util.List;
@@ -33,8 +33,8 @@ public class MyGroupsScreen extends SettingsScreen {
@Override
protected void onLoad() {
super.onLoad();
- Util.ACCOUNT_SEC.myGroups(new ScreenLoadCallback<List<AccountGroup>>(this) {
- public void preDisplay(final List<AccountGroup> result) {
+ Util.ACCOUNT_SEC.myGroups(new ScreenLoadCallback<List<GroupDetail>>(this) {
+ public void preDisplay(final List<GroupDetail> result) {
groups.display(result);
}
});
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/AdminConstants.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/AdminConstants.java
index d886e5a9a0..adad511f77 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/AdminConstants.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/AdminConstants.java
@@ -71,6 +71,9 @@ public interface AdminConstants extends Constants {
String columnEmailAddress();
String columnGroupName();
String columnGroupDescription();
+ String columnGroupType();
+ String columnGroupNotifications();
+ String columnGroupVisibleToAll();
String columnBranchName();
String columnBranchRevision();
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/AdminConstants.properties b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/AdminConstants.properties
index d099f1603e..f782a6327d 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/AdminConstants.properties
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/AdminConstants.properties
@@ -51,6 +51,9 @@ columnMember = Member
columnEmailAddress = Email Address
columnGroupName = Group Name
columnGroupDescription = Description
+columnGroupType = Group Type
+columnGroupNotifications = Email Only Authors
+columnGroupVisibleToAll = Visible To All
columnBranchName = Branch Name
columnBranchRevision = Revision
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/GroupTable.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/GroupTable.java
index 5469d8ee6f..76495e7ce0 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/GroupTable.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/admin/GroupTable.java
@@ -16,8 +16,10 @@ package com.google.gerrit.client.admin;
import com.google.gerrit.client.Dispatcher;
import com.google.gerrit.client.Gerrit;
+import com.google.gerrit.client.rpc.GerritCallback;
import com.google.gerrit.client.ui.Hyperlink;
import com.google.gerrit.client.ui.NavigationTable;
+import com.google.gerrit.common.data.GroupDetail;
import com.google.gerrit.reviewdb.AccountGroup;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
@@ -25,6 +27,7 @@ import com.google.gwt.event.dom.client.KeyCodes;
import com.google.gwt.user.client.History;
import com.google.gwt.user.client.ui.FlexTable.FlexCellFormatter;
import com.google.gwt.user.client.ui.HTMLTable.Cell;
+import com.google.gwt.user.client.ui.Image;
import java.util.List;
@@ -48,6 +51,10 @@ public class GroupTable extends NavigationTable<AccountGroup> {
table.setText(0, 1, Util.C.columnGroupName());
table.setText(0, 2, Util.C.columnGroupDescription());
+ table.setText(0, 3, Util.C.headingOwner());
+ table.setText(0, 4, Util.C.columnGroupType());
+ table.setText(0, 5, Util.C.columnGroupNotifications());
+ table.setText(0, 6, Util.C.columnGroupVisibleToAll());
table.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
@@ -62,6 +69,10 @@ public class GroupTable extends NavigationTable<AccountGroup> {
final FlexCellFormatter fmt = table.getFlexCellFormatter();
fmt.addStyleName(0, 1, Gerrit.RESOURCES.css().dataHeader());
fmt.addStyleName(0, 2, Gerrit.RESOURCES.css().dataHeader());
+ fmt.addStyleName(0, 3, Gerrit.RESOURCES.css().dataHeader());
+ fmt.addStyleName(0, 4, Gerrit.RESOURCES.css().dataHeader());
+ fmt.addStyleName(0, 5, Gerrit.RESOURCES.css().dataHeader());
+ fmt.addStyleName(0, 6, Gerrit.RESOURCES.css().dataHeader());
}
@Override
@@ -74,19 +85,20 @@ public class GroupTable extends NavigationTable<AccountGroup> {
History.newItem(Dispatcher.toGroup(getRowItem(row).getId()));
}
- public void display(final List<AccountGroup> result) {
+ public void display(final List<GroupDetail> result) {
while (1 < table.getRowCount())
table.removeRow(table.getRowCount() - 1);
- for (final AccountGroup k : result) {
+ for(GroupDetail detail : result) {
final int row = table.getRowCount();
table.insertRow(row);
applyDataRowStyle(row);
- populate(row, k);
+ populate(row, detail);
}
}
- void populate(final int row, final AccountGroup k) {
+ void populate(final int row, final GroupDetail detail) {
+ AccountGroup k = detail.group;
if (enableLink) {
table.setWidget(row, 1, new Hyperlink(k.getName(),
Dispatcher.toGroup(k.getId())));
@@ -94,11 +106,23 @@ public class GroupTable extends NavigationTable<AccountGroup> {
table.setText(row, 1, k.getName());
}
table.setText(row, 2, k.getDescription());
+ table.setText(row, 3, detail.ownerGroup.getName());
+ table.setText(row, 4, k.getType().toString());
+ if (k.isEmailOnlyAuthors()) {
+ table.setWidget(row, 5, new Image(Gerrit.RESOURCES.greenCheck()));
+ }
+ if (k.isVisibleToAll()) {
+ table.setWidget(row, 6, new Image(Gerrit.RESOURCES.greenCheck()));
+ }
final FlexCellFormatter fmt = table.getFlexCellFormatter();
fmt.addStyleName(row, 1, Gerrit.RESOURCES.css().dataCell());
fmt.addStyleName(row, 1, Gerrit.RESOURCES.css().groupName());
fmt.addStyleName(row, 2, Gerrit.RESOURCES.css().dataCell());
+ fmt.addStyleName(row, 3, Gerrit.RESOURCES.css().dataCell());
+ fmt.addStyleName(row, 4, Gerrit.RESOURCES.css().dataCell());
+ fmt.addStyleName(row, 5, Gerrit.RESOURCES.css().dataCell());
+ fmt.addStyleName(row, 6, Gerrit.RESOURCES.css().dataCell());
setRowItem(row, k);
}
diff --git a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/account/AccountSecurityImpl.java b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/account/AccountSecurityImpl.java
index df717006c3..173ca602ed 100644
--- a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/account/AccountSecurityImpl.java
+++ b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/account/AccountSecurityImpl.java
@@ -15,10 +15,12 @@
package com.google.gerrit.httpd.rpc.account;
import com.google.gerrit.common.data.AccountSecurity;
+import com.google.gerrit.common.data.GroupDetail;
import com.google.gerrit.common.errors.ContactInformationStoreException;
import com.google.gerrit.common.errors.InvalidSshKeyException;
import com.google.gerrit.common.errors.NameAlreadyUsedException;
import com.google.gerrit.common.errors.NoSuchEntityException;
+import com.google.gerrit.common.errors.NoSuchGroupException;
import com.google.gerrit.httpd.rpc.BaseServiceImplementation;
import com.google.gerrit.httpd.rpc.Handler;
import com.google.gerrit.reviewdb.Account;
@@ -40,6 +42,7 @@ import com.google.gerrit.server.account.AuthRequest;
import com.google.gerrit.server.account.ChangeUserName;
import com.google.gerrit.server.account.ClearPassword;
import com.google.gerrit.server.account.GeneratePassword;
+import com.google.gerrit.server.account.GroupDetailFactory;
import com.google.gerrit.server.account.Realm;
import com.google.gerrit.server.config.AuthConfig;
import com.google.gerrit.server.contact.ContactStore;
@@ -59,6 +62,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Set;
@@ -83,6 +87,7 @@ class AccountSecurityImpl extends BaseServiceImplementation implements
private final DeleteExternalIds.Factory deleteExternalIdsFactory;
private final ExternalIdDetailFactory.Factory externalIdDetailFactory;
private final MyGroupsFactory.Factory myGroupsFactory;
+ private final GroupDetailFactory.Factory groupDetailFactory;
@Inject
AccountSecurityImpl(final Provider<ReviewDb> schema,
@@ -96,7 +101,8 @@ class AccountSecurityImpl extends BaseServiceImplementation implements
final ChangeUserName.CurrentUser changeUserNameFactory,
final DeleteExternalIds.Factory deleteExternalIdsFactory,
final ExternalIdDetailFactory.Factory externalIdDetailFactory,
- final MyGroupsFactory.Factory myGroupsFactory) {
+ final MyGroupsFactory.Factory myGroupsFactory,
+ final GroupDetailFactory.Factory groupDetailFactory) {
super(schema, currentUser);
contactStore = cs;
authConfig = ac;
@@ -116,6 +122,7 @@ class AccountSecurityImpl extends BaseServiceImplementation implements
this.deleteExternalIdsFactory = deleteExternalIdsFactory;
this.externalIdDetailFactory = externalIdDetailFactory;
this.myGroupsFactory = myGroupsFactory;
+ this.groupDetailFactory = groupDetailFactory;
}
public void mySshKeys(final AsyncCallback<List<AccountSshKey>> callback) {
@@ -199,8 +206,17 @@ class AccountSecurityImpl extends BaseServiceImplementation implements
}
@Override
- public void myGroups(final AsyncCallback<List<AccountGroup>> callback) {
- myGroupsFactory.create().to(callback);
+ public void myGroups(final AsyncCallback<List<GroupDetail>> callback) {
+ run(callback, new Action<List<GroupDetail>>() {
+ public List<GroupDetail> run(final ReviewDb db) throws OrmException,
+ NoSuchGroupException, Failure {
+ List<GroupDetail> groupDetails = new ArrayList<GroupDetail>();
+ for(AccountGroup group : myGroupsFactory.create().call()) {
+ groupDetails.add(groupDetailFactory.create(group.getId()).call());
+ }
+ return groupDetails;
+ }
+ });
}
public void deleteExternalIds(final Set<AccountExternalId.Key> keys,
diff --git a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/account/GroupAdminServiceImpl.java b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/account/GroupAdminServiceImpl.java
index 157c89628a..caae4bea42 100644
--- a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/account/GroupAdminServiceImpl.java
+++ b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/account/GroupAdminServiceImpl.java
@@ -91,7 +91,8 @@ class GroupAdminServiceImpl extends BaseServiceImplementation implements
public void visibleGroups(final AsyncCallback<GroupList> callback) {
run(callback, new Action<GroupList>() {
- public GroupList run(ReviewDb db) throws OrmException {
+ public GroupList run(ReviewDb db) throws OrmException,
+ NoSuchGroupException {
final IdentifiedUser user = identifiedUser.get();
final List<AccountGroup> list;
if (user.getCapabilities().canAdministrateServer()) {
@@ -111,8 +112,12 @@ class GroupAdminServiceImpl extends BaseServiceImplementation implements
}
});
+ List<GroupDetail> l = new ArrayList<GroupDetail>();
+ for(AccountGroup group : list) {
+ l.add(groupDetailFactory.create(group.getId()).call());
+ }
GroupList res = new GroupList();
- res.setGroups(list);
+ res.setGroups(l);
res.setCanCreateGroup(user.getCapabilities().canCreateGroup());
return res;
}
diff --git a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/account/MyGroupsFactory.java b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/account/MyGroupsFactory.java
index 088fae26b0..a2277bc945 100644
--- a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/account/MyGroupsFactory.java
+++ b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/account/MyGroupsFactory.java
@@ -41,7 +41,7 @@ class MyGroupsFactory extends Handler<List<AccountGroup>> {
}
@Override
- public List<AccountGroup> call() throws Exception {
+ public List<AccountGroup> call() {
final Set<AccountGroup.UUID> effective = user.getEffectiveGroups();
final int cnt = effective.size();
final List<AccountGroup> groupList = new ArrayList<AccountGroup>(cnt);