package org.jboss.windup.reporting.config.classification;

import org.jboss.windup.reporting.config.Link;
import org.jboss.windup.reporting.category.IssueCategory;
import org.ocpsoft.rewrite.config.OperationBuilder;

/**
 * One of the steps of Classification definition.
 * 
 * @author <a href="mailto:mbriskar@gmail.com">Matej Briskar</a>
 */
public interface ClassificationDescription extends OperationBuilder
{
    /**
     * Specify the link describing the topic more precisely.
     * 
     * @param link the {@link Link} describing the topic more precisely
     * @return next step of {@link Classification} definition to specify more links or effort
     */
    ClassificationLink with(Link link);

    /**
     * Specifies the {@link IssueCategory} level. This will default to {@link Classification#DEFAULT_CATEGORY} if not set here.
     */
    ClassificationWithIssueCategory withIssueCategory(IssueCategory issueCategory);

    /**
     * Specify the effort that that represents the level of effort required to fix the object. Use this only if you don't want to specify any extra
     * link.
     * 
     * @param effort Effort needed to be put. Will be used to count story points for the whole application.
     * @return finish the Classification definition
     */
    Classification withEffort(int effort);
}
