Skip to content

Commit

Permalink
Implementation of recommended version
Browse files Browse the repository at this point in the history
  • Loading branch information
rafabene committed Jun 25, 2012
1 parent b1c1bbc commit b9e36e6
Show file tree
Hide file tree
Showing 5 changed files with 115 additions and 44 deletions.
16 changes: 12 additions & 4 deletions src/main/java/org/jboss/jdf/plugins/JDFPlugin.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
import org.jboss.forge.shell.plugins.RequiresProject;
import org.jboss.jdf.plugins.providers.JDFBOMProvider;
import org.jboss.jdf.plugins.shell.AvailableStacksCompleter;
import org.jboss.jdf.plugins.shell.JDFVersionCompleter;
import org.jboss.jdf.plugins.shell.StackVersionCompleter;
import org.jboss.jdf.plugins.stacks.Stack;

/**
Expand All @@ -46,6 +46,7 @@
@RequiresProject
public class JDFPlugin implements Plugin
{
public static final String OPTION_STACK = "stack";

@Inject
private List<Stack> availableStacks;
Expand All @@ -55,8 +56,9 @@ public class JDFPlugin implements Plugin

@DefaultCommand(help = "Install a JDF JBoss Stack")
public void installStack(
@Option(name = "stack", required = true, completer = AvailableStacksCompleter.class) String stack,
@Option(name = "version", required = true, completer = JDFVersionCompleter.class) String version,
@Option(name = OPTION_STACK, required = true, completer = AvailableStacksCompleter.class, description = "Stack Id") String stack,
@Option(name = "version", required = true, completer = StackVersionCompleter.class,
description = "Stack Version - '*' Recommended JDF Stack Version") String version,
PipeOut out)
{
Stack selectedStack = getSelectedStack(stack);
Expand All @@ -75,7 +77,13 @@ public void installStack(

if (bomProvider.isDependencyManagementInstalled(selectedStack.getArtifact()))
{
out.println("Stack " + stack + " already installed");
String installedStackVersion = bomProvider.getInstalledVersionStack(selectedStack.getArtifact());
out.print("Stack " + stack + " already installed");
if (!installedStackVersion.equals(version))
{
out.print(" with a diferent version: " + installedStackVersion);
}
out.println();
}
else
{
Expand Down
18 changes: 13 additions & 5 deletions src/main/java/org/jboss/jdf/plugins/providers/JDFBOMProvider.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,18 +20,26 @@ public class JDFBOMProvider
* planned to be used in a update feature in future releases
*
*/
public boolean isDependencyManagementInstalled(String artfact)
public boolean isDependencyManagementInstalled(String artifact)
{
DependencyFacet dependencyFacet = project.getFacet(DependencyFacet.class);
Dependency dependency = DependencyBuilder.create(GROUPID + ":" + artfact);
return dependencyFacet.hasDirectManagedDependency(dependency);
Dependency dependency = DependencyBuilder.create(GROUPID + ":" + artifact);
return dependencyFacet.hasDirectManagedDependency(dependency) || dependencyFacet.hasEffectiveDependency(dependency);
}

public void installBom(String artfact, String version)
public void installBom(String artifact, String version)
{
String parsedVersion = version.replaceAll("[*]", ""); //Removes the * (recommend version) tag
DependencyFacet dependencyFacet = project.getFacet(DependencyFacet.class);
Dependency bom = DependencyBuilder.create(GROUPID + ":" + artfact + ":" + version + ":import:pom");
Dependency bom = DependencyBuilder.create(GROUPID + ":" + artifact + ":" + parsedVersion + ":import:pom");
dependencyFacet.addManagedDependency(bom);
}

public String getInstalledVersionStack(String artifact){
DependencyFacet dependencyFacet = project.getFacet(DependencyFacet.class);
Dependency dependency = DependencyBuilder.create(GROUPID + ":" + artifact);
Dependency effeDependency = dependencyFacet.getManagedDependency(dependency);
return effeDependency.getVersion();
}

}
35 changes: 0 additions & 35 deletions src/main/java/org/jboss/jdf/plugins/shell/JDFVersionCompleter.java

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
package org.jboss.jdf.plugins.shell;

import java.util.List;
import java.util.Set;
import java.util.TreeSet;

import javax.inject.Inject;

import org.jboss.forge.shell.completer.CommandCompleterState;
import org.jboss.forge.shell.completer.SimpleTokenCompleter;
import org.jboss.jdf.plugins.stacks.Stack;
import org.jboss.jdf.plugins.stacks.StacksComparator;

import static org.jboss.jdf.plugins.JDFPlugin.OPTION_STACK;

public class StackVersionCompleter extends SimpleTokenCompleter
{

private CommandCompleterState state;

@Inject
private List<Stack> availableStacks;

@Override
public Set<String> getCompletionTokens()
{
Set<String> versions = new TreeSet<String>(new StacksComparator());
String informedStack = getInformedStack();
Stack stack = getSelectedStack(informedStack);
if (stack != null)
{
versions.addAll(stack.getVersions());
}
return versions;
}

private Stack getSelectedStack(String informedStack)
{
for (Stack stack : availableStacks)
{
if (informedStack.equals(stack.getId()))
{
return stack;
}
}
return null;
}

private String getInformedStack()
{
String completeCommand = state.getBuffer();
String[] splitedCommand = completeCommand.split("[\\s]++"); // split by one or more whitespaces
int cont = 0;
for (String token : splitedCommand)
{
cont++;
if (("--" + OPTION_STACK).equals(token))
{
break;
}
}
return splitedCommand[cont];
}

@Override
public void complete(CommandCompleterState state)
{
this.state = state;
super.complete(state);
}

}
18 changes: 18 additions & 0 deletions src/main/java/org/jboss/jdf/plugins/stacks/StacksComparator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package org.jboss.jdf.plugins.stacks;

import java.util.Comparator;

public class StacksComparator implements Comparator<String>
{

@Override
public int compare(String version1, String version2)
{
if (version1.endsWith("*")){
return -1;
}else{
return +1;
}
}

}

0 comments on commit b9e36e6

Please sign in to comment.