Merge "reduce too many method param"
diff --git a/model/model-api/src/main/java/org/onap/policy/apex/model/modelapi/impl/ApexModelImpl.java b/model/model-api/src/main/java/org/onap/policy/apex/model/modelapi/impl/ApexModelImpl.java
index 12b415a..615ed2d 100644
--- a/model/model-api/src/main/java/org/onap/policy/apex/model/modelapi/impl/ApexModelImpl.java
+++ b/model/model-api/src/main/java/org/onap/policy/apex/model/modelapi/impl/ApexModelImpl.java
@@ -1,6 +1,7 @@
 /*-
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2016-2018 Ericsson. All rights reserved.
+ *  Modifications Copyright (C) 2019 Samsung Electronics Co., Ltd.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -370,37 +371,65 @@
         return eventFacade.deleteEventPar(name, version, parName);
     }
 
-    /*
-     * (non-Javadoc)
-     *
-     * @see org.onap.policy.apex.model.modelapi.ApexEditorAPI#createContextAlbum(java.lang.String,
-     * java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String,
-     * java.lang.String, java.lang.String)
-     */
-    @Override
-    // CHECKSTYLE:OFF: checkstyle:parameterNumber
-    public ApexApiResult createContextAlbum(final String name, final String version, final String scope,
-            final String writable, final String contextSchemaName, final String contextSchemaVersion, final String uuid,
-            final String description) {
-        return contextAlbumFacade.createContextAlbum(name, version, scope, writable, contextSchemaName,
-                contextSchemaVersion, uuid, description);
+  /*
+   * (non-Javadoc)
+   *
+   * @see org.onap.policy.apex.model.modelapi.ApexEditorAPI#createContextAlbum(java.lang.String,
+   * java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String,
+   * java.lang.String, java.lang.String)
+   */
+  @Override
+  // CHECKSTYLE:OFF: checkstyle:parameterNumber
+  public ApexApiResult createContextAlbum(
+      final String name,
+      final String version,
+      final String scope,
+      final String writable,
+      final String contextSchemaName,
+      final String contextSchemaVersion,
+      final String uuid,
+      final String description) {
+    return contextAlbumFacade.createContextAlbum(
+        new ContextAlbumBuilder()
+            .setName(name)
+            .setVersion(version)
+            .setScope(scope)
+            .setWritable(writable)
+            .setContextSchemaName(contextSchemaName)
+            .setContextSchemaVersion(contextSchemaVersion)
+            .setUuid(uuid)
+            .setDescription(description));
     }
-    // CHECKSTYLE:ON: checkstyle:parameterNumber
+  // CHECKSTYLE:ON: checkstyle:parameterNumber
 
-    /*
-     * (non-Javadoc)
-     *
-     * @see org.onap.policy.apex.model.modelapi.ApexEditorAPI#updateContextAlbum(java.lang.String,
-     * java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String,
-     * java.lang.String, java.lang.String)
-     */
-    // CHECKSTYLE:OFF: checkstyle:parameterNumber
-    @Override
-    public ApexApiResult updateContextAlbum(final String name, final String version, final String scope,
-            final String writable, final String contextSchemaName, final String contextSchemaVersion, final String uuid,
-            final String description) {
-        return contextAlbumFacade.updateContextAlbum(name, version, scope, writable, contextSchemaName,
-                contextSchemaVersion, uuid, description);
+  /*
+   * (non-Javadoc)
+   *
+   * @see org.onap.policy.apex.model.modelapi.ApexEditorAPI#updateContextAlbum(java.lang.String,
+   * java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String,
+   * java.lang.String, java.lang.String)
+   */
+  // CHECKSTYLE:OFF: checkstyle:parameterNumber
+  @Override
+  public ApexApiResult updateContextAlbum(
+      final String name,
+      final String version,
+      final String scope,
+      final String writable,
+      final String contextSchemaName,
+      final String contextSchemaVersion,
+      final String uuid,
+      final String description) {
+    return contextAlbumFacade.updateContextAlbum(
+        new ContextAlbumBuilder()
+            .setName(name)
+            .setVersion(version)
+            .setScope(scope)
+            .setWritable(writable)
+            .setContextSchemaName(contextSchemaName)
+            .setContextSchemaVersion(contextSchemaVersion)
+            .setUuid(uuid)
+            .setDescription(description));
     }
     // CHECKSTYLE:ON: checkstyle:parameterNumber
 
diff --git a/model/model-api/src/main/java/org/onap/policy/apex/model/modelapi/impl/ContextAlbumBuilder.java b/model/model-api/src/main/java/org/onap/policy/apex/model/modelapi/impl/ContextAlbumBuilder.java
new file mode 100644
index 0000000..88ee648
--- /dev/null
+++ b/model/model-api/src/main/java/org/onap/policy/apex/model/modelapi/impl/ContextAlbumBuilder.java
@@ -0,0 +1,103 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2019 Samsung Electronics Co., Ltd. All rights reserved.
+ * ================================================================================
+ * 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.policy.apex.model.modelapi.impl;
+
+public class ContextAlbumBuilder {
+  private String name;
+  private String version;
+  private String scope;
+  private String writable;
+  private String contextSchemaName;
+  private String contextSchemaVersion;
+  private String uuid;
+  private String description;
+
+  public String getName() {
+    return name;
+  }
+
+  public ContextAlbumBuilder setName(String name) {
+    this.name = name;
+    return this;
+  }
+
+  public String getVersion() {
+    return version;
+  }
+
+  public ContextAlbumBuilder setVersion(String version) {
+    this.version = version;
+    return this;
+  }
+
+  public String getScope() {
+    return scope;
+  }
+
+  public ContextAlbumBuilder setScope(String scope) {
+    this.scope = scope;
+    return this;
+  }
+
+  public String getWritable() {
+    return writable;
+  }
+
+  public ContextAlbumBuilder setWritable(String writable) {
+    this.writable = writable;
+    return this;
+  }
+
+  public String getContextSchemaName() {
+    return contextSchemaName;
+  }
+
+  public ContextAlbumBuilder setContextSchemaName(String contextSchemaName) {
+    this.contextSchemaName = contextSchemaName;
+    return this;
+  }
+
+  public String getContextSchemaVersion() {
+    return contextSchemaVersion;
+  }
+
+  public ContextAlbumBuilder setContextSchemaVersion(String contextSchemaVersion) {
+    this.contextSchemaVersion = contextSchemaVersion;
+    return this;
+  }
+
+  public String getUuid() {
+    return uuid;
+  }
+
+  public ContextAlbumBuilder setUuid(String uuid) {
+    this.uuid = uuid;
+    return this;
+  }
+
+  public String getDescription() {
+    return description;
+  }
+
+  public ContextAlbumBuilder setDescription(String description) {
+    this.description = description;
+    return this;
+  }
+}
diff --git a/model/model-api/src/main/java/org/onap/policy/apex/model/modelapi/impl/ContextAlbumFacade.java b/model/model-api/src/main/java/org/onap/policy/apex/model/modelapi/impl/ContextAlbumFacade.java
index c361701..920dc5e 100644
--- a/model/model-api/src/main/java/org/onap/policy/apex/model/modelapi/impl/ContextAlbumFacade.java
+++ b/model/model-api/src/main/java/org/onap/policy/apex/model/modelapi/impl/ContextAlbumFacade.java
@@ -1,6 +1,7 @@
 /*-
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2016-2018 Ericsson. All rights reserved.
+ *  Modifications Copyright (C) 2019 Samsung Electronics Co., Ltd.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -70,121 +71,140 @@
         keyInformationFacade = new KeyInformationFacade(apexModel, apexProperties, jsonMode);
     }
 
-    /**
-     * Create a context album.
-     *
-     * @param name name of the context album
-     * @param version version of the context album, set to null to use the default version
-     * @param scope of the context album
-     * @param writable "true" or "t" if the context album is writable, set to null or any other
-     *        value for a read-only album
-     * @param contextSchemaName name of the parameter context schema
-     * @param contextSchemaVersion version of the parameter context schema, set to null to use the
-     *        latest version
-     * @param uuid context album UUID, set to null to generate a UUID
-     * @param description context album description, set to null to generate a description
-     * @return result of the operation
-     */
-    // CHECKSTYLE:OFF: checkstyle:parameterNumber
-    public ApexApiResult createContextAlbum(final String name, final String version, final String scope,
-            final String writable, final String contextSchemaName, final String contextSchemaVersion, final String uuid,
-            final String description) {
-        try {
-            final AxArtifactKey key = new AxArtifactKey();
-            key.setName(name);
-            if (version != null) {
-                key.setVersion(version);
-            } else {
-                key.setVersion(apexProperties.getProperty("DEFAULT_CONCEPT_VERSION"));
-            }
+  /**
+   * Create a context album.
+   *
+   * @param name name of the context album
+   * @param version version of the context album, set to null to use the default version
+   * @param scope of the context album
+   * @param writable "true" or "t" if the context album is writable, set to null or any other value
+   *     for a read-only album
+   * @param contextSchemaName name of the parameter context schema
+   * @param contextSchemaVersion version of the parameter context schema, set to null to use the
+   *     latest version
+   * @param uuid context album UUID, set to null to generate a UUID
+   * @param description context album description, set to null to generate a description
+   * @return result of the operation
+   */
+  // CHECKSTYLE:OFF: checkstyle:parameterNumber
+  public ApexApiResult createContextAlbum(ContextAlbumBuilder builder) {
+    try {
+      final AxArtifactKey key = new AxArtifactKey();
+      key.setName(builder.getName());
+      if (builder.getVersion() != null) {
+        key.setVersion(builder.getVersion());
+      } else {
+        key.setVersion(apexProperties.getProperty("DEFAULT_CONCEPT_VERSION"));
+      }
 
-            if (apexModel.getPolicyModel().getAlbums().getAlbumsMap().containsKey(key)) {
-                return new ApexApiResult(ApexApiResult.Result.CONCEPT_EXISTS,
-                        CONCEPT + key.getId() + " already exists");
-            }
+      if (apexModel.getPolicyModel().getAlbums().getAlbumsMap().containsKey(key)) {
+        return new ApexApiResult(
+            ApexApiResult.Result.CONCEPT_EXISTS, CONCEPT + key.getId() + " already exists");
+      }
 
-            final AxContextSchema schema =
-                    apexModel.getPolicyModel().getSchemas().get(contextSchemaName, contextSchemaVersion);
-            if (schema == null) {
-                return new ApexApiResult(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST,
-                        CONCEPT + contextSchemaName + ':' + contextSchemaVersion + DOES_NOT_EXIST);
-            }
+      final AxContextSchema schema =
+          apexModel
+              .getPolicyModel()
+              .getSchemas()
+              .get(builder.getContextSchemaName(), builder.getContextSchemaVersion());
+      if (schema == null) {
+        return new ApexApiResult(
+            ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST,
+            CONCEPT
+                + builder.getContextSchemaName()
+                + ':'
+                + builder.getContextSchemaVersion()
+                + DOES_NOT_EXIST);
+      }
 
-            final AxContextAlbum contextAlbum = new AxContextAlbum(key);
-            contextAlbum.setScope(scope);
-            contextAlbum.setItemSchema(schema.getKey());
+      final AxContextAlbum contextAlbum = new AxContextAlbum(key);
+      contextAlbum.setScope(builder.getScope());
+      contextAlbum.setItemSchema(schema.getKey());
 
-            if (writable != null
-                    && ("true".equalsIgnoreCase(writable.trim()) || "t".equalsIgnoreCase(writable.trim()))) {
-                contextAlbum.setWritable(true);
-            } else {
-                contextAlbum.setWritable(false);
-            }
+      if (builder.getWritable() != null
+          && ("true".equalsIgnoreCase(builder.getWritable().trim())
+              || "t".equalsIgnoreCase(builder.getWritable().trim()))) {
+        contextAlbum.setWritable(true);
+      } else {
+        contextAlbum.setWritable(false);
+      }
 
-            apexModel.getPolicyModel().getAlbums().getAlbumsMap().put(key, contextAlbum);
+      apexModel.getPolicyModel().getAlbums().getAlbumsMap().put(key, contextAlbum);
 
-            if (apexModel.getPolicyModel().getKeyInformation().getKeyInfoMap().containsKey(key)) {
-                return keyInformationFacade.updateKeyInformation(name, version, uuid, description);
-            } else {
-                return keyInformationFacade.createKeyInformation(name, version, uuid, description);
-            }
-        } catch (final Exception e) {
-            return new ApexApiResult(ApexApiResult.Result.FAILED, e);
-        }
+      if (apexModel.getPolicyModel().getKeyInformation().getKeyInfoMap().containsKey(key)) {
+        return keyInformationFacade.updateKeyInformation(
+            builder.getName(), builder.getVersion(), builder.getUuid(), builder.getDescription());
+      } else {
+        return keyInformationFacade.createKeyInformation(
+            builder.getName(), builder.getVersion(), builder.getUuid(), builder.getDescription());
+      }
+    } catch (final Exception e) {
+      return new ApexApiResult(ApexApiResult.Result.FAILED, e);
     }
-    // CHECKSTYLE:ON: checkstyle:parameterNumber
+    }
+  // CHECKSTYLE:ON: checkstyle:parameterNumber
 
-    /**
-     * Update a context album.
-     *
-     * @param name name of the context album
-     * @param version version of the context album, set to null to use the default version
-     * @param scope of the context album
-     * @param writable "true" or "t" if the context album is writable, set to null or any other
-     *        value for a read-only album
-     * @param contextSchemaName name of the parameter context schema
-     * @param contextSchemaVersion version of the parameter context schema, set to null to use the
-     *        latest version
-     * @param uuid context album UUID, set to null to generate a UUID
-     * @param description context album description, set to null to generate a description
-     * @return result of the operation
-     */
-    // CHECKSTYLE:OFF: checkstyle:parameterNumber
-    public ApexApiResult updateContextAlbum(final String name, final String version, final String scope,
-            final String writable, final String contextSchemaName, final String contextSchemaVersion, final String uuid,
-            final String description) {
-        try {
-            final AxContextAlbum contextAlbum = apexModel.getPolicyModel().getAlbums().get(name, version);
-            if (contextAlbum == null) {
-                return new ApexApiResult(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST,
-                        CONCEPT + name + ':' + version + DOES_NOT_EXIST);
-            }
+  /**
+   * Update a context album.
+   *
+   * @param name name of the context album
+   * @param version version of the context album, set to null to use the default version
+   * @param scope of the context album
+   * @param writable "true" or "t" if the context album is writable, set to null or any other value
+   *     for a read-only album
+   * @param contextSchemaName name of the parameter context schema
+   * @param contextSchemaVersion version of the parameter context schema, set to null to use the
+   *     latest version
+   * @param uuid context album UUID, set to null to generate a UUID
+   * @param description context album description, set to null to generate a description
+   * @return result of the operation
+   */
+  // CHECKSTYLE:OFF: checkstyle:parameterNumber
+  public ApexApiResult updateContextAlbum(ContextAlbumBuilder builder) {
+    try {
+      final AxContextAlbum contextAlbum =
+          apexModel.getPolicyModel().getAlbums().get(builder.getName(), builder.getVersion());
+      if (contextAlbum == null) {
+        return new ApexApiResult(
+            ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST,
+            CONCEPT + builder.getName() + ':' + builder.getVersion() + DOES_NOT_EXIST);
+      }
 
-            if (scope != null) {
-                contextAlbum.setScope(scope);
-            }
-            if (writable != null) {
-                if ("true".equalsIgnoreCase(writable.trim()) || "t".equalsIgnoreCase(writable.trim())) {
-                    contextAlbum.setWritable(true);
-                } else {
-                    contextAlbum.setWritable(false);
-                }
-            }
-
-            if (contextSchemaName != null) {
-                final AxContextSchema schema =
-                        apexModel.getPolicyModel().getSchemas().get(contextSchemaName, contextSchemaVersion);
-                if (schema == null) {
-                    return new ApexApiResult(ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST,
-                            CONCEPT + contextSchemaName + ':' + contextSchemaVersion + DOES_NOT_EXIST);
-                }
-                contextAlbum.setItemSchema(schema.getKey());
-            }
-
-            return keyInformationFacade.updateKeyInformation(name, version, uuid, description);
-        } catch (final Exception e) {
-            return new ApexApiResult(ApexApiResult.Result.FAILED, e);
+      if (builder.getScope() != null) {
+        contextAlbum.setScope(builder.getScope());
+      }
+      if (builder.getWritable() != null) {
+        if ("true".equalsIgnoreCase(builder.getWritable().trim())
+            || "t".equalsIgnoreCase(builder.getWritable().trim())) {
+          contextAlbum.setWritable(true);
+        } else {
+          contextAlbum.setWritable(false);
         }
+      }
+
+      if (builder.getContextSchemaName() != null) {
+        final AxContextSchema schema =
+            apexModel
+                .getPolicyModel()
+                .getSchemas()
+                .get(builder.getContextSchemaName(), builder.getContextSchemaVersion());
+        if (schema == null) {
+          return new ApexApiResult(
+              ApexApiResult.Result.CONCEPT_DOES_NOT_EXIST,
+              CONCEPT
+                  + builder.getContextSchemaName()
+                  + ':'
+                  + builder.getContextSchemaVersion()
+                  + DOES_NOT_EXIST);
+        }
+        contextAlbum.setItemSchema(schema.getKey());
+      }
+
+      return keyInformationFacade.updateKeyInformation(
+          builder.getName(), builder.getVersion(), builder.getUuid(), builder.getDescription());
+    } catch (final Exception e) {
+      return new ApexApiResult(ApexApiResult.Result.FAILED, e);
+    }
     }
     // CHECKSTYLE:ON: checkstyle:parameterNumber