content: /*
   *  Licensed to the Apache Software Foundation (ASF) under one or more
   *  contributor license agreements.  See the NOTICE file distributed with
   *  this work for additional information regarding copyright ownership.
   *  The ASF licenses this file to You 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
   *
   *      https://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 org.apache.ivy.plugins.parser.xml;
  
  import java.util.Collections;
  import java.util.Date;
  import java.util.Map;
  
  import org.apache.ivy.core.module.descriptor.ModuleDescriptor;
  import org.apache.ivy.core.module.id.ModuleRevisionId;
  import org.apache.ivy.plugins.namespace.Namespace;
  import org.apache.ivy.plugins.parser.ParserSettings;
  
  public class UpdateOptions {
      /**
       * Settings to use for update, may be <code>null</code>.
       */
      private ParserSettings settings = null;
  
      /**
       * Namespace in which the module to update is, may be <code>null</code>.
       */
      private Namespace namespace = null;
  
      /**
       * Map from ModuleId of dependencies to new revision (as String)
       */
      private Map<ModuleRevisionId, String> resolvedRevisions = Collections.emptyMap();
  
      /**
       * Map from ModuleId of dependencies to new branch (as String)
       */
      private Map<ModuleRevisionId, String> resolvedBranches = Collections.emptyMap();
  
      /**
       * the new status, <code>null</code> to keep the old one
       */
      private String status = null;
  
      /**
       * the new revision, <code>null</code> to keep the old one
       */
      private String revision = null;
  
      /**
       * the new publication date, <code>null</code> to keep the old one
       */
      private Date pubdate = null;
  
      /**
       * Should included information be replaced
       */
      private boolean replaceInclude = true;
  
      /**
       * Should parent descriptor be merged inline
       */
      private boolean merge = true;
  
      private ModuleDescriptor mergedDescriptor = null;
  
      /**
       * Configurations to exclude during update, or <code>null</code> to keep all confs.
       */
      private String[] confsToExclude = null;
  
      /**
       * True to set branch information on dependencies to default branch when omitted, false to keep
       * it as is.
       */
      private boolean updateBranch = true;
  
      private String branch;
  
      /**
       * True to indicate that the revConstraint attribute should be generated if applicable, false to
       * never generate the revConstraint attribute.
       */
      private boolean generateRevConstraint = true;
  
      public ParserSettings getSettings() {
          return settings;
      }
  
      public UpdateOptions setSettings(ParserSettings settings) {
          this.settings = settings;
          return this;
      }
  
      public Namespace getNamespace() {
          return namespace;
      }
  
      public UpdateOptions setNamespace(Namespace ns) {
          this.namespace = ns;
          return this;
      }
  
      public Map<ModuleRevisionId, String> getResolvedRevisions() {
          return resolvedRevisions;
      }
  
      public UpdateOptions setResolvedRevisions(Map<ModuleRevisionId, String> resolvedRevisions) {
          this.resolvedRevisions = resolvedRevisions;
          return this;
      }
  
      public String getStatus() {
          return status;
      }
  
      public UpdateOptions setStatus(String status) {
          this.status = status;
          return this;
      }
  
      public String getRevision() {
          return revision;
      }
  
      public UpdateOptions setRevision(String revision) {
          this.revision = revision;
          return this;
      }
  
      public Date getPubdate() {
          return pubdate;
      }
  
      public UpdateOptions setPubdate(Date pubdate) {
          this.pubdate = pubdate;
          return this;
      }
  
      public boolean isReplaceInclude() {
          return replaceInclude;
      }
  
      public UpdateOptions setReplaceInclude(boolean replaceInclude) {
          this.replaceInclude = replaceInclude;
          return this;
      }
  
      public boolean isMerge() {
          // only return true if merge is set to true and if there is something to merge!
          return merge && (mergedDescriptor != null)
                  && (mergedDescriptor.getInheritedDescriptors().length > 0);
      }
  
      public UpdateOptions setMerge(boolean merge) {
          this.merge = merge;
          return this;
      }
  
      public ModuleDescriptor getMergedDescriptor() {
          return mergedDescriptor;
      }
  
      public UpdateOptions setMergedDescriptor(ModuleDescriptor mergedDescriptor) {
          this.mergedDescriptor = mergedDescriptor;
          return this;
      }
  
      public String[] getConfsToExclude() {
          return confsToExclude;
      }
  
      public UpdateOptions setConfsToExclude(String[] confsToExclude) {
          this.confsToExclude = confsToExclude;
          return this;
      }
  
      public boolean isUpdateBranch() {
          return updateBranch;
      }
  
      public UpdateOptions setUpdateBranch(boolean updateBranch) {
          this.updateBranch = updateBranch;
          return this;
      }
  
      public String getBranch() {
          return branch;
      }
  
      public UpdateOptions setBranch(String pubBranch) {
          this.branch = pubBranch;
          return this;
      }
  
      public boolean isGenerateRevConstraint() {
          return generateRevConstraint;
      }
  
      public UpdateOptions setGenerateRevConstraint(boolean generateRevConstraint) {
          this.generateRevConstraint = generateRevConstraint;
          return this;
      }
  
      public Map<ModuleRevisionId, String> getResolvedBranches() {
          return resolvedBranches;
      }
  
      public UpdateOptions setResolvedBranches(Map<ModuleRevisionId, String> resolvedBranches) {
          this.resolvedBranches = resolvedBranches;
          return this;
      }
  }
  