/*
* (C) Copyright 2006-2017 Nuxeo (http://nuxeo.com/) and others.
*
* 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.
*
* Contributors:
* Laurent Doguin
*/
package org.nuxeo.ecm.core.versioning;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import org.nuxeo.common.xmap.annotation.XNode;
import org.nuxeo.common.xmap.annotation.XNodeMap;
import org.nuxeo.common.xmap.annotation.XObject;
/**
* Descriptor to contribute new versioning rules.
*
* @author Laurent Doguin
* @since 5.4.2
* @deprecated since 9.1 use 'policy', 'filter' and 'restriction' contributions instead
*/
@Deprecated
@XObject("versioningRule")
public class VersioningRuleDescriptor implements Serializable {
private static final long serialVersionUID = 1L;
@XNode("@enabled")
protected Boolean enabled;
@XNodeMap(value = "options", key = "@lifeCycleState", type = HashMap.class, componentType = SaveOptionsDescriptor.class)
public Map<String, SaveOptionsDescriptor> options = new HashMap<>();
@XNode("initialState")
public InitialStateDescriptor initialState;
@XNode("@typeName")
protected String typeName;
/** True if the boolean is null or TRUE, false otherwise. */
private static boolean defaultTrue(Boolean bool) {
return !Boolean.FALSE.equals(bool);
}
public boolean isEnabled() {
return defaultTrue(enabled);
}
public String getTypeName() {
return typeName;
}
public Map<String, SaveOptionsDescriptor> getOptions() {
return options;
}
public InitialStateDescriptor getInitialState() {
return initialState;
}
/** Empty constructor. */
public VersioningRuleDescriptor() {
}
/** Copy constructor. */
public VersioningRuleDescriptor(VersioningRuleDescriptor other) {
this.enabled = other.enabled;
this.typeName = other.typeName;
this.options = other.options;
this.initialState = other.initialState;
}
public void merge(VersioningRuleDescriptor other) {
if (other.enabled != null) {
enabled = other.enabled;
}
if (other.typeName != null) {
typeName = other.typeName;
}
options.putAll(other.options); // always merge options TODO override flag
if (other.initialState != null) {
initialState = other.initialState;
}
}
}