Display submit type in the change info block

This is a preparation for a Prolog based submit type rule which will
compute submit type for each change. In this first step we simply
return the project-wide default submit type for each change.

Change-Id: I38745e544b215197074ce1fb8d6b106f3c1c1e56
Signed-off-by: Sasa Zivkov <sasa.zivkov@sap.com>
This commit is contained in:
Sasa Zivkov
2012-08-09 14:35:09 +02:00
committed by Gerrit Code Review
parent edb573adbb
commit dad5620441
11 changed files with 55 additions and 9 deletions

View File

@@ -17,6 +17,7 @@ package com.google.gerrit.common.data;
import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.reviewdb.client.ChangeMessage;
import com.google.gerrit.reviewdb.client.PatchSet;
import com.google.gerrit.reviewdb.client.Project;
import java.util.ArrayList;
import java.util.Collection;
@@ -40,6 +41,7 @@ public class ChangeDetail {
protected List<PatchSet> patchSets;
protected List<ApprovalDetail> approvals;
protected List<SubmitRecord> submitRecords;
protected Project.SubmitType submitType;
protected boolean canSubmit;
protected List<ChangeMessage> messages;
protected PatchSet.Id currentPatchSetId;
@@ -187,6 +189,14 @@ public class ChangeDetail {
return submitRecords;
}
public void setSubmitType(Project.SubmitType submitType) {
this.submitType = submitType;
}
public Project.SubmitType getSubmitType() {
return submitType;
}
public boolean isCurrentPatchSet(final PatchSetDetail detail) {
return currentPatchSetId != null
&& detail.getPatchSet().getId().equals(currentPatchSetId);

View File

@@ -19,6 +19,7 @@ import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.reviewdb.client.PatchLineComment;
import com.google.gerrit.reviewdb.client.PatchSetApproval;
import com.google.gerrit.reviewdb.client.PatchSetInfo;
import com.google.gerrit.reviewdb.client.Project;
import java.util.ArrayList;
import java.util.Collection;
@@ -33,6 +34,7 @@ public class PatchSetPublishDetail {
protected List<PermissionRange> labels;
protected List<ApprovalDetail> approvals;
protected List<SubmitRecord> submitRecords;
protected Project.SubmitType submitType;
protected List<PatchSetApproval> given;
protected boolean canSubmit;
@@ -61,6 +63,14 @@ public class PatchSetPublishDetail {
return submitRecords;
}
public void setSubmitType(Project.SubmitType submitType) {
this.submitType = submitType;
}
public Project.SubmitType getSubmitType() {
return submitType;
}
public List<PatchSetApproval> getGiven() {
return given;
}

View File

@@ -95,6 +95,7 @@ public interface ChangeConstants extends Constants {
String changeInfoBlockUploaded();
String changeInfoBlockUpdated();
String changeInfoBlockStatus();
String changeInfoBlockSubmitType();
String changePermalink();
String changeInfoBlockCanMerge();
String changeInfoBlockCanMergeYes();

View File

@@ -72,6 +72,7 @@ changeInfoBlockTopic = Topic
changeInfoBlockUploaded = Uploaded
changeInfoBlockUpdated = Updated
changeInfoBlockStatus = Status
changeInfoBlockSubmitType = Submit Type
changePermalink = Permalink
changeInfoBlockCanMerge = Can Merge
changeInfoBlockCanMergeYes = Yes

View File

@@ -17,6 +17,7 @@ package com.google.gerrit.client.changes;
import com.google.gerrit.common.data.AccountInfoCache;
import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.reviewdb.client.PatchSetInfo;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwtexpui.globalkey.client.KeyCommandSet;
@@ -36,8 +37,8 @@ public class ChangeDescriptionBlock extends Composite {
}
public void display(Change chg, Boolean starred, PatchSetInfo info,
final AccountInfoCache acc) {
infoBlock.display(chg, acc);
final AccountInfoCache acc, Project.SubmitType submitType) {
infoBlock.display(chg, acc, submitType);
messageBlock.display(chg.getId(), starred, info.getMessage());
}
}

View File

@@ -23,6 +23,7 @@ import com.google.gerrit.client.ui.ProjectLink;
import com.google.gerrit.common.data.AccountInfoCache;
import com.google.gerrit.reviewdb.client.Branch;
import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.HTMLTable.CellFormatter;
@@ -36,9 +37,10 @@ public class ChangeInfoBlock extends Composite {
private static final int R_TOPIC = 4;
private static final int R_UPLOADED = 5;
private static final int R_UPDATED = 6;
private static final int R_STATUS = 7;
private static final int R_MERGE_TEST = 8;
private static final int R_CNT = 9;
private static final int R_SUBMIT_TYPE = 7;
private static final int R_STATUS = 8;
private static final int R_MERGE_TEST = 9;
private static final int R_CNT = 10;
private final Grid table;
@@ -59,6 +61,7 @@ public class ChangeInfoBlock extends Composite {
initRow(R_UPLOADED, Util.C.changeInfoBlockUploaded());
initRow(R_UPDATED, Util.C.changeInfoBlockUpdated());
initRow(R_STATUS, Util.C.changeInfoBlockStatus());
initRow(R_SUBMIT_TYPE, Util.C.changeInfoBlockSubmitType());
if (Gerrit.getConfig().testChangeMerge()) {
initRow(R_MERGE_TEST, Util.C.changeInfoBlockCanMerge());
}
@@ -77,7 +80,8 @@ public class ChangeInfoBlock extends Composite {
table.getCellFormatter().addStyleName(row, 0, Gerrit.RESOURCES.css().header());
}
public void display(final Change chg, final AccountInfoCache acc) {
public void display(final Change chg, final AccountInfoCache acc,
Project.SubmitType submitType) {
final Branch.NameKey dst = chg.getDest();
CopyableLabel changeIdLabel =
@@ -94,6 +98,8 @@ public class ChangeInfoBlock extends Composite {
table.setText(R_UPLOADED, 1, mediumFormat(chg.getCreatedOn()));
table.setText(R_UPDATED, 1, mediumFormat(chg.getLastUpdatedOn()));
table.setText(R_STATUS, 1, Util.toLongString(chg.getStatus()));
table.setText(R_SUBMIT_TYPE, 1,
com.google.gerrit.client.admin.Util.toLongString(submitType));
final Change.Status status = chg.getStatus();
if (Gerrit.getConfig().testChangeMerge()) {
if (status.equals(Change.Status.NEW) || status.equals(Change.Status.DRAFT)) {

View File

@@ -282,7 +282,7 @@ public class ChangeScreen extends Screen
descriptionBlock.display(detail.getChange(),
detail.isStarred(),
detail.getCurrentPatchSetDetail().getInfo(),
detail.getAccounts());
detail.getAccounts(), detail.getSubmitType());
dependsOn.display(detail.getDependsOn());
neededBy.display(detail.getNeededBy());
approvals.display(detail);

View File

@@ -274,7 +274,8 @@ public class PublishCommentScreen extends AccountScreen implements
private void display(final PatchSetPublishDetail r) {
setPageTitle(Util.M.publishComments(r.getChange().getKey().abbreviate(),
patchSetId.get()));
descBlock.display(r.getChange(), null, r.getPatchSetInfo(), r.getAccounts());
descBlock.display(r.getChange(), null, r.getPatchSetInfo(), r.getAccounts(),
r.getSubmitType());
if (r.getChange().getStatus().isOpen()) {
initApprovals(r, approvalPanel);

View File

@@ -168,6 +168,8 @@ public class ChangeDetailFactory extends Handler<ChangeDetail> {
}
detail.setSubmitRecords(submitRecords);
detail.setSubmitType(control.getSubmitType());
patchsetsById = new HashMap<PatchSet.Id, PatchSet>();
loadPatchSets();
loadMessages();

View File

@@ -34,6 +34,7 @@ import com.google.gerrit.server.patch.PatchSetInfoFactory;
import com.google.gerrit.server.patch.PatchSetInfoNotAvailableException;
import com.google.gerrit.server.project.ChangeControl;
import com.google.gerrit.server.project.NoSuchChangeException;
import com.google.gerrit.server.project.ProjectCache;
import com.google.gerrit.server.workflow.CategoryFunction;
import com.google.gerrit.server.workflow.FunctionState;
import com.google.gwtorm.server.OrmException;
@@ -60,6 +61,7 @@ final class PatchSetPublishDetailFactory extends Handler<PatchSetPublishDetail>
private final ApprovalTypes approvalTypes;
private final AccountInfoCacheFactory aic;
private final IdentifiedUser user;
private final ProjectCache projectCache;
private final PatchSet.Id patchSetId;
@@ -76,7 +78,9 @@ final class PatchSetPublishDetailFactory extends Handler<PatchSetPublishDetail>
final ChangeControl.GenericFactory changeControlGenericFactory,
final IdentifiedUser.GenericFactory identifiedUserFactory,
final ApprovalTypes approvalTypes,
final IdentifiedUser user, @Assisted final PatchSet.Id patchSetId) {
final IdentifiedUser user,
final ProjectCache projectCache,
@Assisted final PatchSet.Id patchSetId) {
this.infoFactory = infoFactory;
this.db = db;
this.functionState = functionState;
@@ -86,6 +90,7 @@ final class PatchSetPublishDetailFactory extends Handler<PatchSetPublishDetail>
this.approvalTypes = approvalTypes;
this.aic = accountInfoCacheFactory.create();
this.user = user;
this.projectCache = projectCache;
this.patchSetId = patchSetId;
}
@@ -186,6 +191,9 @@ final class PatchSetPublishDetailFactory extends Handler<PatchSetPublishDetail>
detail.setSubmitRecords(submitRecords);
}
detail.setSubmitType(projectCache.get(change.getProject())
.getProject().getSubmitType());
detail.setLabels(allowed);
detail.setGiven(given);
loadApprovals(detail, control);

View File

@@ -21,6 +21,7 @@ import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.reviewdb.client.PatchSet;
import com.google.gerrit.reviewdb.client.PatchSetApproval;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.reviewdb.client.Project.SubmitType;
import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.rules.PrologEnvironment;
import com.google.gerrit.rules.StoredValues;
@@ -528,6 +529,11 @@ public class ChangeControl {
return out;
}
public SubmitType getSubmitType() {
ProjectState projectState = getProjectControl().getProjectState();
return projectState.getProject().getSubmitType();
}
private List<SubmitRecord> logInvalidResult(Term rule, Term record) {
return logRuleError("Submit rule " + rule + " for change " + change.getId()
+ " of " + getProject().getName() + " output invalid result: " + record);