/*
* Copyright 2012-2017 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
*
* 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 io.spring.initializr.metadata;
import java.util.ArrayList;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonIgnore;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.util.StringUtils;
/**
* Configuration of the initializr service.
*
* @author Stephane Nicoll
*/
@ConfigurationProperties(prefix = "initializr")
public class InitializrProperties extends InitializrConfiguration {
/**
* Dependencies, organized in groups (i.e. themes).
*/
@JsonIgnore
private final List<DependencyGroup> 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 SimpleElement groupId = new SimpleElement("com.example");
/**
* ArtifactId metadata.
*/
@JsonIgnore
private final SimpleElement artifactId = new SimpleElement(null);
/**
* Version metadata.
*/
@JsonIgnore
private final SimpleElement version = new SimpleElement("0.0.1-SNAPSHOT");
/**
* Name metadata.
*/
@JsonIgnore
private final SimpleElement name = new SimpleElement("demo");
/**
* Description metadata.
*/
@JsonIgnore
private final SimpleElement description = new SimpleElement(
"Demo project for Spring Boot");
/**
* Package name metadata.
*/
@JsonIgnore
private final SimpleElement packageName = new SimpleElement(null);
public List<DependencyGroup> getDependencies() {
return dependencies;
}
public List<Type> getTypes() {
return types;
}
public List<DefaultMetadataElement> getPackagings() {
return packagings;
}
public List<DefaultMetadataElement> getJavaVersions() {
return javaVersions;
}
public List<DefaultMetadataElement> getLanguages() {
return languages;
}
public List<DefaultMetadataElement> getBootVersions() {
return bootVersions;
}
public SimpleElement getGroupId() {
return groupId;
}
public SimpleElement getArtifactId() {
return artifactId;
}
public SimpleElement getVersion() {
return version;
}
public SimpleElement getName() {
return name;
}
public SimpleElement getDescription() {
return description;
}
public SimpleElement getPackageName() {
return packageName;
}
public static class SimpleElement {
/**
* Element title.
*/
private String title;
/**
* Element description.
*/
private String description;
/**
* Element default value.
*/
private String value;
public SimpleElement(String value) {
this.value = value;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public void apply(TextCapability capability) {
if (StringUtils.hasText(title)) {
capability.setTitle(title);
}
if (StringUtils.hasText(description)) {
capability.setDescription(description);
}
if (StringUtils.hasText(value)) {
capability.setContent(value);
}
}
}
}