blob: 684f8e6f6f1eaf131618dd1e4e1c54ddfcc0a651 [file] [log] [blame]
// Copyright (C) 2013 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.client.projects;
import com.google.gerrit.client.ErrorDialog;
import com.google.gerrit.client.info.ActionInfo;
import com.google.gerrit.client.rpc.NativeMap;
import com.google.gerrit.extensions.client.InheritableBoolean;
import com.google.gerrit.extensions.client.ProjectState;
import com.google.gerrit.extensions.client.SubmitType;
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.core.client.JsArray;
import com.google.gwt.core.client.JsArrayString;
import com.google.gwtexpui.safehtml.client.FindReplace;
import com.google.gwtexpui.safehtml.client.LinkFindReplace;
import com.google.gwtexpui.safehtml.client.RawFindReplace;
import java.util.ArrayList;
import java.util.List;
public class ConfigInfo extends JavaScriptObject {
public final native String description() /*-{ return this.description }-*/;
public final native InheritedBooleanInfo requireChangeId()
/*-{ return this.require_change_id; }-*/ ;
public final native InheritedBooleanInfo useContentMerge()
/*-{ return this.use_content_merge; }-*/ ;
public final native InheritedBooleanInfo useContributorAgreements()
/*-{ return this.use_contributor_agreements; }-*/ ;
public final native InheritedBooleanInfo createNewChangeForAllNotInTarget()
/*-{ return this.create_new_change_for_all_not_in_target; }-*/ ;
public final native InheritedBooleanInfo useSignedOffBy()
/*-{ return this.use_signed_off_by; }-*/ ;
public final native InheritedBooleanInfo enableSignedPush()
/*-{ return this.enable_signed_push; }-*/ ;
public final native InheritedBooleanInfo requireSignedPush()
/*-{ return this.require_signed_push; }-*/ ;
public final native InheritedBooleanInfo rejectImplicitMerges()
/*-{ return this.reject_implicit_merges; }-*/ ;
public final native InheritedBooleanInfo privateByDefault()
/*-{ return this.private_by_default; }-*/ ;
public final native InheritedBooleanInfo workInProgressByDefault()
/*-{ return this.work_in_progress_by_default; }-*/ ;
public final native InheritedBooleanInfo enableReviewerByEmail()
/*-{ return this.enable_reviewer_by_email; }-*/ ;
public final native InheritedBooleanInfo matchAuthorToCommitterDate()
/*-{ return this.match_author_to_committer_date; }-*/ ;
public final SubmitType submitType() {
return SubmitType.valueOf(submitTypeRaw());
}
public final native SubmitTypeInfo defaultSubmitType() /*-{ return this.default_submit_type; }-*/;
public final native NativeMap<NativeMap<ConfigParameterInfo>> pluginConfig()
/*-{ return this.plugin_config || {}; }-*/ ;
public final native NativeMap<ConfigParameterInfo> pluginConfig(String p)
/*-{ return this.plugin_config[p]; }-*/ ;
public final native NativeMap<ActionInfo> actions() /*-{ return this.actions; }-*/;
private native String submitTypeRaw() /*-{ return this.submit_type }-*/;
public final ProjectState state() {
if (stateRaw() == null) {
return ProjectState.ACTIVE;
}
return ProjectState.valueOf(stateRaw());
}
private native String stateRaw() /*-{ return this.state }-*/;
public final native MaxObjectSizeLimitInfo maxObjectSizeLimit()
/*-{ return this.max_object_size_limit; }-*/ ;
private native NativeMap<CommentLinkInfo> commentlinks0() /*-{ return this.commentlinks; }-*/;
final List<FindReplace> commentlinks() {
JsArray<CommentLinkInfo> cls = commentlinks0().values();
List<FindReplace> commentLinks = new ArrayList<>(cls.length());
for (int i = 0; i < cls.length(); i++) {
CommentLinkInfo cl = cls.get(i);
if (!cl.enabled()) {
continue;
}
if (cl.link() != null) {
commentLinks.add(new LinkFindReplace(cl.match(), cl.link()));
} else {
try {
FindReplace fr = new RawFindReplace(cl.match(), cl.html());
commentLinks.add(fr);
} catch (RuntimeException e) {
int index = e.getMessage().indexOf("at Object");
new ErrorDialog(
"Invalid commentlink configuration: "
+ (index == -1 ? e.getMessage() : e.getMessage().substring(0, index)))
.center();
}
}
}
return commentLinks;
}
final native ThemeInfo theme() /*-{ return this.theme; }-*/;
final native NativeMap<JsArrayString>
extensionPanelNames() /*-{ return this.extension_panel_names; }-*/;
protected ConfigInfo() {}
static class CommentLinkInfo extends JavaScriptObject {
final native String match() /*-{ return this.match; }-*/;
final native String link() /*-{ return this.link; }-*/;
final native String html() /*-{ return this.html; }-*/;
final native boolean enabled() /*-{
return !this.hasOwnProperty('enabled') || this.enabled;
}-*/;
protected CommentLinkInfo() {}
}
public static class InheritedBooleanInfo extends JavaScriptObject {
public static InheritedBooleanInfo create() {
return (InheritedBooleanInfo) createObject();
}
public final native boolean value() /*-{ return this.value ? true : false; }-*/;
public final native boolean inheritedValue()
/*-{ return this.inherited_value ? true : false; }-*/ ;
public final InheritableBoolean configuredValue() {
return InheritableBoolean.valueOf(configuredValueRaw());
}
private native String configuredValueRaw() /*-{ return this.configured_value }-*/;
public final void setConfiguredValue(InheritableBoolean v) {
setConfiguredValueRaw(v.name());
}
public final native void setConfiguredValueRaw(String v)
/*-{ if(v)this.configured_value=v; }-*/ ;
protected InheritedBooleanInfo() {}
}
public static class MaxObjectSizeLimitInfo extends JavaScriptObject {
public final native String value() /*-{ return this.value; }-*/;
public final native String configuredValue() /*-{ return this.configured_value }-*/;
public final native String summary() /*-{ return this.summary; }-*/;
protected MaxObjectSizeLimitInfo() {}
}
public static class ConfigParameterInfo extends JavaScriptObject {
public final native String name() /*-{ return this.name; }-*/;
public final native String displayName() /*-{ return this.display_name; }-*/;
public final native String description() /*-{ return this.description; }-*/;
public final native String warning() /*-{ return this.warning; }-*/;
public final native String type() /*-{ return this.type; }-*/;
public final native String value() /*-{ return this.value; }-*/;
public final native boolean editable() /*-{ return this.editable ? true : false; }-*/;
public final native boolean inheritable() /*-{ return this.inheritable ? true : false; }-*/;
public final native String configuredValue() /*-{ return this.configured_value; }-*/;
public final native String inheritedValue() /*-{ return this.inherited_value; }-*/;
public final native JsArrayString permittedValues() /*-{ return this.permitted_values; }-*/;
public final native JsArrayString values() /*-{ return this.values; }-*/;
protected ConfigParameterInfo() {}
}
public static class ConfigParameterValue extends JavaScriptObject {
final native void init() /*-{ this.values = []; }-*/;
final native void addValue(String v) /*-{ this.values.push(v); }-*/;
final native void setValue(String v) /*-{ if(v)this.value = v; }-*/;
public static ConfigParameterValue create() {
ConfigParameterValue v = createObject().cast();
return v;
}
public final ConfigParameterValue values(String[] values) {
init();
for (String v : values) {
addValue(v);
}
return this;
}
public final ConfigParameterValue value(String v) {
setValue(v);
return this;
}
protected ConfigParameterValue() {}
}
public static class SubmitTypeInfo extends JavaScriptObject {
public final SubmitType value() {
return SubmitType.valueOf(valueRaw());
}
public final SubmitType configuredValue() {
return SubmitType.valueOf(configuredValueRaw());
}
public final SubmitType inheritedValue() {
return SubmitType.valueOf(inheritedValueRaw());
}
private final native String valueRaw() /*-{ return this.value; }-*/;
private final native String configuredValueRaw() /*-{ return this.configured_value; }-*/;
private final native String inheritedValueRaw() /*-{ return this.inherited_value; }-*/;
protected SubmitTypeInfo() {}
}
}