/*
* Copyright 2012 James Moger
*
* 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.moxie.ant;
import java.io.File;
import java.text.MessageFormat;
import java.util.Set;
import org.moxie.Build;
import org.moxie.Dependency;
import org.moxie.Pom;
import org.moxie.Scope;
import org.moxie.console.Console;
import org.moxie.utils.FileUtils;
public class MxReport extends MxTask {
private Scope scope;
File destFile;
public MxReport() {
super();
setTaskName("mx:report");
}
public void setScope(String scope) {
this.scope = Scope.fromString(scope);
}
public void setDestfile(File file) {
this.destFile = file;
}
public void execute() {
Build build = getBuild();
titleClass(build.getPom().getCoordinates());
Scope [] scopes;
if (scope == null) {
scopes = new Scope[] { Scope.compile, Scope.runtime, Scope.test, Scope.build };
} else {
scopes = new Scope[] { scope };
}
StringBuilder sb = new StringBuilder();
for (Scope scope : scopes) {
Set<Dependency> dependencies = build.getSolver().getDependencies(scope);
if (dependencies.size() == 0) {
continue;
}
sb.append(getConsole().scope(scope, dependencies.size()));
sb.append('\n');
long totalArtifactsSize = 0;
for (Dependency dep : dependencies) {
Pom depPom = build.getSolver().getPom(dep);
File artifact = build.getSolver().getArtifact(dep);
if (artifact != null && artifact.exists()) {
totalArtifactsSize += artifact.length();
}
sb.append(getConsole().dependencyReport(dep, depPom, artifact));
}
if (totalArtifactsSize > 0) {
String summary = MessageFormat.format("{0} artifacts totaling {1} for {2} scope", dependencies.size(), FileUtils.formatSize(totalArtifactsSize), scope);
getConsole().separator();
getConsole().log(1, summary);
sb.append(Console.SEP).append('\n');
sb.append(summary).append('\n');
}
getConsole().separator();
sb.append(Console.SEP).append('\n');
}
if (destFile != null) {
if (isVerbose()) {
getConsole().debug("generating {0}", destFile.getAbsolutePath());
}
FileUtils.writeContent(destFile, sb.toString());
}
}
}