
hudson.plugins.dry.DryDetailBuilder Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of dry Show documentation
Show all versions of dry Show documentation
This plug-in generates reports of duplicated code in a project.
The newest version!
package hudson.plugins.dry;
import hudson.model.AbstractBuild;
import hudson.plugins.analysis.util.model.AnnotationContainer;
import hudson.plugins.analysis.util.model.FileAnnotation;
import hudson.plugins.analysis.views.DetailFactory;
import hudson.plugins.analysis.views.SourceDetail;
import hudson.plugins.analysis.views.TabDetail;
import hudson.plugins.dry.parser.DuplicateCode;
import java.util.Collection;
import org.apache.commons.lang.StringUtils;
/**
* A detail builder for dry annotations capable of showing details of linked annotations.
*
* @author Ulli Hafner
*/
public class DryDetailBuilder extends DetailFactory {
@Override
public Object createDetails(final String link, final AbstractBuild, ?> owner,
final AnnotationContainer container, final String defaultEncoding, final String displayName) {
if (link.startsWith("link.")) {
String suffix = StringUtils.substringAfter(link, "link.");
String[] fromToStrings = StringUtils.split(suffix, ".");
if (fromToStrings.length == 2) {
return createDrySourceDetail(owner, container, defaultEncoding, fromToStrings[0], fromToStrings[1]);
}
return null;
}
return super.createDetails(link, owner, container, defaultEncoding, displayName);
}
/**
* Creates the dry source detail view.
*
* @param owner
* the owner
* @param container
* the container
* @param defaultEncoding
* the default encoding
* @param fromString
* from ID
* @param toString
* to ID
* @return the detail view or null
*/
private Object createDrySourceDetail(final AbstractBuild, ?> owner,
final AnnotationContainer container, final String defaultEncoding,
final String fromString, final String toString) {
long from = Long.parseLong(fromString);
long to = Long.parseLong(toString);
FileAnnotation fromAnnotation = container.getAnnotation(from);
if (fromAnnotation instanceof DuplicateCode) {
return new SourceDetail(owner, ((DuplicateCode)fromAnnotation).getLink(to), defaultEncoding);
}
return null;
}
@Override
protected TabDetail createTabDetail(final AbstractBuild, ?> owner, final Collection annotations,
final String url, final String defaultEncoding) {
return new DryTabDetail(owner, this, annotations, url, defaultEncoding);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy