content: /*
   * Copyright 2022-2023 the original author or authors.
   *
   * 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
   *
   *      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 com.alibaba.initializer.metadata;
  
  import java.util.ArrayList;
  import java.util.List;
  
  import com.fasterxml.jackson.annotation.JsonIgnore;
  import io.spring.initializr.metadata.DefaultMetadataElement;
  import io.spring.initializr.metadata.InitializrConfiguration;
  import io.spring.initializr.metadata.InitializrProperties;
  import io.spring.initializr.metadata.Type;
  
  import org.springframework.boot.context.properties.ConfigurationProperties;
  
  /**
   * @author <a href="mailto:chenxilzx1@gmail.com">theonefx</a>
   * @see InitializrProperties
   */
  @ConfigurationProperties(prefix = "initializr")
  public class InitializerProperties extends InitializrConfiguration {
  
      /**
       * Available application architecture.
       */
      @JsonIgnore
      private final List<Architecture> architecture = new ArrayList<>();
  
      /**
       * Dependencies, organized in groups (i.e. themes).
       */
      @JsonIgnore
      private final List<EnhancedDependencyGroup> dependencies = new ArrayList<>();
  
      /**
       * Available project types.
       */
      @JsonIgnore
      private final List<Type> types = new ArrayList<>();
  
      /**
       * Available packaging types.
       */
      @JsonIgnore
      private final List<DefaultMetadataElement> packagings = new ArrayList<>();
  
      /**
       * Available java versions.
       */
      @JsonIgnore
      private final List<DefaultMetadataElement> javaVersions = new ArrayList<>();
  
      /**
       * Available programming languages.
       */
      @JsonIgnore
      private final List<DefaultMetadataElement> languages = new ArrayList<>();
  
      /**
       * Available Spring Boot versions.
       */
      @JsonIgnore
      private final List<DefaultMetadataElement> bootVersions = new ArrayList<>();
  
      /**
       * GroupId metadata.
       */
      @JsonIgnore
      private final InitializrProperties.SimpleElement groupId = new InitializrProperties.SimpleElement("com.example");
  
      /**
       * ArtifactId metadata.
       */
      @JsonIgnore
      private final InitializrProperties.SimpleElement artifactId = new InitializrProperties.SimpleElement(null);
  
      /**
       * Version metadata.
       */
      @JsonIgnore
      private final InitializrProperties.SimpleElement version = new InitializrProperties.SimpleElement("0.0.1-SNAPSHOT");
  
      /**
       * Name metadata.
       */
      @JsonIgnore
      private final InitializrProperties.SimpleElement name = new InitializrProperties.SimpleElement("demo");
  
      /**
       * Description metadata.
       */
      @JsonIgnore
      private final InitializrProperties.SimpleElement description = new InitializrProperties.SimpleElement("Demo project for Spring Boot");
  
      /**
       * Package name metadata.
       */
      @JsonIgnore
      private final InitializrProperties.SimpleElement packageName = new InitializrProperties.SimpleElement(null);
  
      public List<Architecture> getArchitecture() {
          return architecture;
      }
  
      public List<EnhancedDependencyGroup> getDependencies() {
          return dependencies;
      }
  
      public List<Type> getTypes() {
          return this.types;
      }
  
      public List<DefaultMetadataElement> getPackagings() {
          return this.packagings;
      }
  
      public List<DefaultMetadataElement> getJavaVersions() {
          return this.javaVersions;
      }
  
      public List<DefaultMetadataElement> getLanguages() {
          return this.languages;
      }
  
      public List<DefaultMetadataElement> getBootVersions() {
          return this.bootVersions;
      }
  
      public InitializrProperties.SimpleElement getGroupId() {
          return this.groupId;
      }
  
      public InitializrProperties.SimpleElement getArtifactId() {
          return this.artifactId;
      }
  
      public InitializrProperties.SimpleElement getVersion() {
          return this.version;
      }
  
      public InitializrProperties.SimpleElement getName() {
          return this.name;
      }
  
      public InitializrProperties.SimpleElement getDescription() {
          return this.description;
      }
  
      public InitializrProperties.SimpleElement getPackageName() {
          return this.packageName;
      }
  }
  