/* * 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); } } }