summaryrefslogtreecommitdiffstats
path: root/java/com/google/gerrit/reviewdb/client/Project.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/google/gerrit/reviewdb/client/Project.java')
-rw-r--r--java/com/google/gerrit/reviewdb/client/Project.java254
1 files changed, 254 insertions, 0 deletions
diff --git a/java/com/google/gerrit/reviewdb/client/Project.java b/java/com/google/gerrit/reviewdb/client/Project.java
new file mode 100644
index 0000000000..996f1ecc4f
--- /dev/null
+++ b/java/com/google/gerrit/reviewdb/client/Project.java
@@ -0,0 +1,254 @@
+// Copyright (C) 2008 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.reviewdb.client;
+
+import com.google.gerrit.extensions.client.InheritableBoolean;
+import com.google.gerrit.extensions.client.ProjectState;
+import com.google.gerrit.extensions.client.SubmitType;
+import com.google.gwtorm.client.Column;
+import com.google.gwtorm.client.StringKey;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+
+/** Projects match a source code repository managed by Gerrit */
+public final class Project {
+ /** Default submit type for new projects. */
+ public static final SubmitType DEFAULT_SUBMIT_TYPE = SubmitType.MERGE_IF_NECESSARY;
+
+ /** Default submit type for root project (All-Projects). */
+ public static final SubmitType DEFAULT_ALL_PROJECTS_SUBMIT_TYPE = SubmitType.MERGE_IF_NECESSARY;
+
+ /** Project name key */
+ public static class NameKey extends StringKey<com.google.gwtorm.client.Key<?>> {
+ private static final long serialVersionUID = 1L;
+
+ @Column(id = 1)
+ protected String name;
+
+ protected NameKey() {}
+
+ public NameKey(String n) {
+ name = n;
+ }
+
+ @Override
+ public String get() {
+ return name;
+ }
+
+ @Override
+ protected void set(String newValue) {
+ name = newValue;
+ }
+
+ @Override
+ public int hashCode() {
+ return get().hashCode();
+ }
+
+ @Override
+ public boolean equals(Object b) {
+ if (b instanceof NameKey) {
+ return get().equals(((NameKey) b).get());
+ }
+ return false;
+ }
+
+ /** Parse a Project.NameKey out of a string representation. */
+ public static NameKey parse(String str) {
+ final NameKey r = new NameKey();
+ r.fromString(str);
+ return r;
+ }
+
+ public static String asStringOrNull(NameKey key) {
+ return key == null ? null : key.get();
+ }
+ }
+
+ protected NameKey name;
+
+ protected String description;
+
+ protected Map<BooleanProjectConfig, InheritableBoolean> booleanConfigs;
+
+ protected SubmitType submitType;
+
+ protected ProjectState state;
+
+ protected NameKey parent;
+
+ protected String maxObjectSizeLimit;
+
+ protected String defaultDashboardId;
+
+ protected String localDefaultDashboardId;
+
+ protected String themeName;
+
+ protected String configRefState;
+
+ protected Project() {}
+
+ public Project(Project.NameKey nameKey) {
+ name = nameKey;
+ submitType = SubmitType.MERGE_IF_NECESSARY;
+ state = ProjectState.ACTIVE;
+
+ booleanConfigs = new HashMap<>();
+ Arrays.stream(BooleanProjectConfig.values())
+ .forEach(c -> booleanConfigs.put(c, InheritableBoolean.INHERIT));
+ }
+
+ public Project.NameKey getNameKey() {
+ return name;
+ }
+
+ public String getName() {
+ return name != null ? name.get() : null;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String d) {
+ description = d;
+ }
+
+ public String getMaxObjectSizeLimit() {
+ return maxObjectSizeLimit;
+ }
+
+ public InheritableBoolean getBooleanConfig(BooleanProjectConfig config) {
+ return booleanConfigs.get(config);
+ }
+
+ public void setBooleanConfig(BooleanProjectConfig config, InheritableBoolean val) {
+ booleanConfigs.replace(config, val);
+ }
+
+ public void setMaxObjectSizeLimit(String limit) {
+ maxObjectSizeLimit = limit;
+ }
+
+ /**
+ * Submit type as configured in {@code project.config}.
+ *
+ * <p>Does not take inheritance into account, i.e. may return {@link SubmitType#INHERIT}.
+ *
+ * @return submit type.
+ */
+ public SubmitType getConfiguredSubmitType() {
+ return submitType;
+ }
+
+ public void setSubmitType(SubmitType type) {
+ submitType = type;
+ }
+
+ public ProjectState getState() {
+ return state;
+ }
+
+ public void setState(ProjectState newState) {
+ state = newState;
+ }
+
+ public String getDefaultDashboard() {
+ return defaultDashboardId;
+ }
+
+ public void setDefaultDashboard(String defaultDashboardId) {
+ this.defaultDashboardId = defaultDashboardId;
+ }
+
+ public String getLocalDefaultDashboard() {
+ return localDefaultDashboardId;
+ }
+
+ public void setLocalDefaultDashboard(String localDefaultDashboardId) {
+ this.localDefaultDashboardId = localDefaultDashboardId;
+ }
+
+ public String getThemeName() {
+ return themeName;
+ }
+
+ public void setThemeName(String themeName) {
+ this.themeName = themeName;
+ }
+
+ public void copySettingsFrom(Project update) {
+ description = update.description;
+ booleanConfigs = new HashMap<>(update.booleanConfigs);
+ submitType = update.submitType;
+ state = update.state;
+ maxObjectSizeLimit = update.maxObjectSizeLimit;
+ }
+
+ /**
+ * Returns the name key of the parent project.
+ *
+ * @return name key of the parent project, {@code null} if this project is the wild project,
+ * {@code null} or the name key of the wild project if this project is a direct child of the
+ * wild project
+ */
+ public Project.NameKey getParent() {
+ return parent;
+ }
+
+ /**
+ * Returns the name key of the parent project.
+ *
+ * @param allProjectsName name key of the wild project
+ * @return name key of the parent project, {@code null} if this project is the All-Projects
+ * project
+ */
+ public Project.NameKey getParent(Project.NameKey allProjectsName) {
+ if (parent != null) {
+ return parent;
+ }
+
+ if (name.equals(allProjectsName)) {
+ return null;
+ }
+
+ return allProjectsName;
+ }
+
+ public String getParentName() {
+ return parent != null ? parent.get() : null;
+ }
+
+ public void setParentName(String n) {
+ parent = n != null ? new NameKey(n) : null;
+ }
+
+ public void setParentName(NameKey n) {
+ parent = n;
+ }
+
+ /** Returns the {@code ObjectId} as 40 digit hex of {@code refs/meta/config}'s HEAD. */
+ public String getConfigRefState() {
+ return configRefState;
+ }
+
+ /** Sets the {@code ObjectId} as 40 digit hex of {@code refs/meta/config}'s HEAD. */
+ public void setConfigRefState(String state) {
+ configRefState = state;
+ }
+}