// Path: src/main/java/com/edorasware/one/initializr/util/VersionProperty.java
// public class VersionProperty implements Serializable, Comparable<VersionProperty> {
// 
// 	private static final List<Character> SUPPORTED_CHARS = Arrays.asList('.', '-');
// 
// 	private final String property;
// 
// 	public VersionProperty(String property) {
// 		this.property = validateFormat(property);
// 	}
// 
// 	/**
// 	 * Return a camel cased representation of this instance.
// 	 */
// 	public String toCamelCaseFormat() {
// 		String[] tokens = this.property.split("\\-|\\.");
// 		StringBuilder sb = new StringBuilder();
// 		for (int i  = 0; i < tokens.length; i++) {
// 			String part = tokens[i];
// 			if (i > 0) {
// 				part = StringUtils.capitalize(part);
// 			}
// 			sb.append(part);
// 		}
// 		return sb.toString();
// 	}
// 
// 	public String toStandardFormat() {
// 		return this.property;
// 	}
// 
// 
// 	private static String validateFormat(String property) {
// 		for (char c : property.toCharArray()) {
// 			if (Character.isUpperCase(c)) {
// 				throw new IllegalArgumentException(
// 						"Invalid property '" + property + "', must not contain upper case");
// 			}
// 			if (!Character.isLetterOrDigit(c) && !SUPPORTED_CHARS.contains(c)) {
// 				throw new IllegalArgumentException(
// 						"Unsupported character '" + c + "' for '" + property + "'");
// 			}
// 		}
// 		return property;
// 	}
// 
// 	@Override
// 	public int compareTo(VersionProperty o) {
// 		return this.property.compareTo(o.property);
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return this.property;
// 	}
// 
// 	@Override
// 	public boolean equals(Object o) {
// 		if (this == o) return true;
// 		if (o == null || getClass() != o.getClass()) return false;
// 
// 		VersionProperty that = (VersionProperty) o;
// 
// 		return property.equals(that.property);
// 	}
// 
// 	@Override
// 	public int hashCode() {
// 		return property.hashCode();
// 	}
// 
// }


import com.edorasware.one.initializr.util.VersionProperty;
import java.util.Map;
import java.util.TreeMap;
import java.util.function.Supplier;
/*
 * Copyright 2012-2016 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 com.edorasware.one.initializr.generator;



/**
 * Build properties associated to a project request.
 *
 * @author Stephane Nicoll
 */
public class BuildProperties {

	/**
	 * Maven-specific build properties, added to the regular {@code properties} element.
	 */
	private final TreeMap<String, Supplier<String>> maven = new TreeMap<>();

	/**
	 * Gradle-specific build properties, added to the {@code buildscript} section
	 * of the gradle build.
	 */
	private final TreeMap<String, Supplier<String>> gradle = new TreeMap<>();

	/**
	 * Version properties. Shared between the two build systems.
	 */
// Path: src/main/java/com/edorasware/one/initializr/util/VersionProperty.java
// public class VersionProperty implements Serializable, Comparable<VersionProperty> {
// 
// 	private static final List<Character> SUPPORTED_CHARS = Arrays.asList('.', '-');
// 
// 	private final String property;
// 
// 	public VersionProperty(String property) {
// 		this.property = validateFormat(property);
// 	}
// 
// 	/**
// 	 * Return a camel cased representation of this instance.
// 	 */
// 	public String toCamelCaseFormat() {
// 		String[] tokens = this.property.split("\\-|\\.");
// 		StringBuilder sb = new StringBuilder();
// 		for (int i  = 0; i < tokens.length; i++) {
// 			String part = tokens[i];
// 			if (i > 0) {
// 				part = StringUtils.capitalize(part);
// 			}
// 			sb.append(part);
// 		}
// 		return sb.toString();
// 	}
// 
// 	public String toStandardFormat() {
// 		return this.property;
// 	}
// 
// 
// 	private static String validateFormat(String property) {
// 		for (char c : property.toCharArray()) {
// 			if (Character.isUpperCase(c)) {
// 				throw new IllegalArgumentException(
// 						"Invalid property '" + property + "', must not contain upper case");
// 			}
// 			if (!Character.isLetterOrDigit(c) && !SUPPORTED_CHARS.contains(c)) {
// 				throw new IllegalArgumentException(
// 						"Unsupported character '" + c + "' for '" + property + "'");
// 			}
// 		}
// 		return property;
// 	}
// 
// 	@Override
// 	public int compareTo(VersionProperty o) {
// 		return this.property.compareTo(o.property);
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return this.property;
// 	}
// 
// 	@Override
// 	public boolean equals(Object o) {
// 		if (this == o) return true;
// 		if (o == null || getClass() != o.getClass()) return false;
// 
// 		VersionProperty that = (VersionProperty) o;
// 
// 		return property.equals(that.property);
// 	}
// 
// 	@Override
// 	public int hashCode() {
// 		return property.hashCode();
// 	}
// 
// }


// Path: src/main/java/com/edorasware/one/initializr/generator/BuildProperties.java
import com.edorasware.one.initializr.util.VersionProperty;
import java.util.Map;
import java.util.TreeMap;
import java.util.function.Supplier;

/*
 * Copyright 2012-2016 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 com.edorasware.one.initializr.generator;



/**
 * Build properties associated to a project request.
 *
 * @author Stephane Nicoll
 */
public class BuildProperties {

	/**
	 * Maven-specific build properties, added to the regular {@code properties} element.
	 */
	private final TreeMap<String, Supplier<String>> maven = new TreeMap<>();

	/**
	 * Gradle-specific build properties, added to the {@code buildscript} section
	 * of the gradle build.
	 */
	private final TreeMap<String, Supplier<String>> gradle = new TreeMap<>();

	/**
	 * Version properties. Shared between the two build systems.
	 */
	private final TreeMap<VersionProperty, Supplier<String>> versions = new TreeMap<>();