/*
* 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 org.springframework.boot.gradle.tasks.buildinfo;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import org.gradle.api.Project;
/**
* The properties that are written into the {@code build-info.properties} file.
*
* @author Andy Wilkinson
*/
public class BuildInfoProperties implements Serializable {
private final transient Project project;
private String group;
private String artifact;
private String version;
private String name;
private Map<String, Object> additionalProperties = new HashMap<>();
BuildInfoProperties(Project project) {
this.project = project;
}
/**
* Returns the value used for the {@code build.group} property. Defaults to the
* {@link Project#getGroup() Project's group}.
*
* @return the group
*/
public String getGroup() {
return this.group != null ? this.group : this.project.getGroup().toString();
}
/**
* Sets the value used for the {@code build.group} property.
*
* @param group the group name
*/
public void setGroup(String group) {
this.group = group;
}
/**
* Returns the value used for the {@code build.artifact} property.
*
* @return the artifact
*/
public String getArtifact() {
return this.artifact;
}
/**
* Sets the value used for the {@code build.artifact} property.
*
* @param artifact the artifact
*/
public void setArtifact(String artifact) {
this.artifact = artifact;
}
/**
* Returns the value used for the {@code build.version} property. Defaults to the
* {@link Project#getVersion() Project's version}.
*
* @return the version
*/
public String getVersion() {
return this.version != null ? this.version : this.project.getVersion().toString();
}
/**
* Sets the value used for the {@code build.version} property.
*
* @param version the version
*/
public void setVersion(String version) {
this.version = version;
}
/**
* Returns the value used for the {@code build.name} property. Defaults to the
* {@link Project#getDisplayName() Project's display name}.
*
* @return the name
*/
public String getName() {
return this.name != null ? this.name : this.project.getName();
}
/**
* Sets the value used for the {@code build.name} property.
*
* @param name the name
*/
public void setName(String name) {
this.name = name;
}
/**
* Returns the additional properties that will be included. When written, the name of
* each additional property is prefixed with {@code build.}.
*
* @return the additional properties
*/
public Map<String, Object> getAdditional() {
return this.additionalProperties;
}
/**
* Sets the additional properties that will be included. When written, the name of
* each additional property is prefixed with {@code build.}.
*
* @param additionalProperties the additional properties
*/
public void setAdditional(Map<String, Object> additionalProperties) {
this.additionalProperties = additionalProperties;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((this.additionalProperties == null) ? 0
: this.additionalProperties.hashCode());
result = prime * result
+ ((this.artifact == null) ? 0 : this.artifact.hashCode());
result = prime * result + ((this.group == null) ? 0 : this.group.hashCode());
result = prime * result + ((this.name == null) ? 0 : this.name.hashCode());
result = prime * result + ((this.version == null) ? 0 : this.version.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
BuildInfoProperties other = (BuildInfoProperties) obj;
if (this.additionalProperties == null) {
if (other.additionalProperties != null) {
return false;
}
}
else if (!this.additionalProperties.equals(other.additionalProperties)) {
return false;
}
if (this.artifact == null) {
if (other.artifact != null) {
return false;
}
}
else if (!this.artifact.equals(other.artifact)) {
return false;
}
if (this.group == null) {
if (other.group != null) {
return false;
}
}
else if (!this.group.equals(other.group)) {
return false;
}
if (this.name == null) {
if (other.name != null) {
return false;
}
}
else if (!this.name.equals(other.name)) {
return false;
}
if (this.version == null) {
if (other.version != null) {
return false;
}
}
else if (!this.version.equals(other.version)) {
return false;
}
return true;
}
}