diff options
Diffstat (limited to 'java/com/google/gerrit/reviewdb/client/Project.java')
-rw-r--r-- | java/com/google/gerrit/reviewdb/client/Project.java | 254 |
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; + } +} |