blob: c1f2117f778670c7327711d6aff07aceed1b50fb [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.apache.nifi.bundle;
import java.io.File;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* Metadata about a bundle.
*/
public class BundleDetails {
private final File workingDirectory;
private final BundleCoordinate coordinate;
private final BundleCoordinate dependencyCoordinate;
private final String buildTag;
private final String buildRevision;
private final String buildBranch;
private final String buildTimestamp;
private final String buildJdk;
private final String builtBy;
private BundleDetails(final Builder builder) {
this.workingDirectory = builder.workingDirectory;
this.coordinate = builder.coordinate;
this.dependencyCoordinate = builder.dependencyCoordinate;
this.buildTag = builder.buildTag;
this.buildRevision = builder.buildRevision;
this.buildBranch = builder.buildBranch;
this.buildTimestamp = builder.buildTimestamp;
this.buildJdk = builder.buildJdk;
this.builtBy = builder.builtBy;
if (this.coordinate == null) {
if (this.workingDirectory == null) {
throw new IllegalStateException("Coordinate cannot be null");
} else {
throw new IllegalStateException("Coordinate cannot be null for " + this.workingDirectory.getAbsolutePath());
}
}
if (this.workingDirectory == null) {
throw new IllegalStateException("Working directory cannot be null for " + this.coordinate.getId());
}
}
public File getWorkingDirectory() {
return workingDirectory;
}
public BundleCoordinate getCoordinate() {
return coordinate;
}
public BundleCoordinate getDependencyCoordinate() {
return dependencyCoordinate;
}
public String getBuildTag() {
return buildTag;
}
public String getBuildRevision() {
return buildRevision;
}
public String getBuildBranch() {
return buildBranch;
}
public String getBuildTimestamp() {
return buildTimestamp;
}
public String getBuildJdk() {
return buildJdk;
}
public String getBuiltBy() {
return builtBy;
}
@Override
public String toString() {
return coordinate.toString();
}
public Date getBuildTimestampDate() {
if (buildTimestamp != null && !buildTimestamp.isEmpty()) {
try {
SimpleDateFormat buildTimestampFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
Date buildTimestampDate = buildTimestampFormat.parse(buildTimestamp);
return buildTimestampDate;
} catch (ParseException parseEx) {
return null;
}
} else {
return null;
}
}
/**
* Builder for NarDetails.
*/
public static class Builder {
private File workingDirectory;
private BundleCoordinate coordinate;
private BundleCoordinate dependencyCoordinate;
private String buildTag;
private String buildRevision;
private String buildBranch;
private String buildTimestamp;
private String buildJdk;
private String builtBy;
public Builder workingDir(final File workingDirectory) {
this.workingDirectory = workingDirectory;
return this;
}
public Builder coordinate(final BundleCoordinate coordinate) {
this.coordinate = coordinate;
return this;
}
public Builder dependencyCoordinate(final BundleCoordinate dependencyCoordinate) {
this.dependencyCoordinate = dependencyCoordinate;
return this;
}
public Builder buildTag(final String buildTag) {
this.buildTag = buildTag;
return this;
}
public Builder buildRevision(final String buildRevision) {
this.buildRevision = buildRevision;
return this;
}
public Builder buildBranch(final String buildBranch) {
this.buildBranch = buildBranch;
return this;
}
public Builder buildTimestamp(final String buildTimestamp) {
this.buildTimestamp = buildTimestamp;
return this;
}
public Builder buildJdk(final String buildJdk) {
this.buildJdk = buildJdk;
return this;
}
public Builder builtBy(final String builtBy) {
this.builtBy = builtBy;
return this;
}
public BundleDetails build() {
return new BundleDetails(this);
}
}
}