package org.jboss.windup.rules.apps.mavenize;


import org.jboss.windup.config.AbstractConfigurationOption;
import org.jboss.windup.config.InputType;
import org.jboss.windup.config.ValidationResult;

/**
 * Gives the user the option to skip class not found analysis.
 *
 * @author <a href="http://ondra.zizka.cz/">Ondrej Zizka, ozizka at seznam.cz</a>
 */
public class MavenizeGroupIdOption extends AbstractConfigurationOption
{
    public static final String NAME = "mavenizeGroupId";
    public static final String REGEX_GROUP_ID = "[a-zA-Z][-_a-zA-Z0-9]*(\\.[a-zA-Z][-_a-zA-Z0-9]*)*";

    @Override
    public String getName()
    {
        return NAME;
    }

    @Override
    public String getLabel()
    {
        return "The <groupId> to use for Maven project stub pom.xml's.";
    }

    @Override
    public String getDescription()
    {
        return "All pom.xml files will use this value as their <groupId>. If the parameter"
            + " is ommited, Windup tries to guess some value based on the application,"
            + " but this guess may be wrong. Last resort default value is '"+ModuleAnalysisHelper.LAST_RESORT_DEFAULT_GROUP_ID+"'.";
    }

    @Override
    public Class<?> getType()
    {
        return String.class;
    }

    @Override
    public InputType getUIType()
    {
        return InputType.SINGLE;
    }

    @Override
    public boolean isRequired()
    {
        return false;
    }

    @Override
    public ValidationResult validate(Object value)
    {
        if (value == null)
            return ValidationResult.SUCCESS;

        if (!(value instanceof String))
            return new ValidationResult(ValidationResult.Level.ERROR, NAME + " option must be a String, was: " + value.getClass().getName());

        String strValue = value.toString();
        if (strValue.matches(REGEX_GROUP_ID))
            return new ValidationResult(ValidationResult.Level.ERROR, "Must follow the Maven groupId format - e.g. com.mycompany.groupId.");

        return ValidationResult.SUCCESS;
    }
}

@@ -959,10 +959,10 @@
 s om
-m
 i
+t
 ted,
@@ -1805,16 +1805,17 @@
     if (
+!
 strValue
@@ -1955,16 +1955,17 @@
  - e.g. 
+'
 com.myco
@@ -1977,16 +1977,17 @@
 .groupId
+'
 .%22);%0A%0A  

Fix inverted regex-match logic in --mavenizeGroupId validation, add quotes excluding sentence-ending period for clarity. (#967)