Skip to content

Commit

Permalink
FORGE-1479: Introduced JavaEEUICommandEnricher
Browse files Browse the repository at this point in the history
  • Loading branch information
gastaldi committed Feb 14, 2014
1 parent 7577833 commit c35c43f
Show file tree
Hide file tree
Showing 6 changed files with 184 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,16 @@
package org.jboss.forge.addon.javaee.jpa.ui;

import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;

import javax.inject.Inject;
import javax.persistence.Entity;
import javax.persistence.GenerationType;

import org.jboss.forge.addon.javaee.jpa.JPAFacet;
import org.jboss.forge.addon.javaee.jpa.PersistenceOperations;
import org.jboss.forge.addon.javaee.jpa.ui.setup.JPASetupWizard;
import org.jboss.forge.addon.javaee.ui.AbstractJavaEECommand;
import org.jboss.forge.addon.parser.java.facets.JavaSourceFacet;
import org.jboss.forge.addon.parser.java.resources.JavaResource;
Expand All @@ -22,6 +26,7 @@
import org.jboss.forge.addon.resource.DirectoryResource;
import org.jboss.forge.addon.resource.FileResource;
import org.jboss.forge.addon.resource.visit.VisitContext;
import org.jboss.forge.addon.ui.command.UICommand;
import org.jboss.forge.addon.ui.context.UIBuilder;
import org.jboss.forge.addon.ui.context.UIContext;
import org.jboss.forge.addon.ui.context.UIExecutionContext;
Expand Down Expand Up @@ -161,4 +166,16 @@ protected boolean isProjectRequired()
{
return false;
}

@Override
public List<Class<? extends UICommand>> getSetupSteps(UIContext context)
{
List<Class<? extends UICommand>> setup = new ArrayList<>();
Project project = getSelectedProject(context);
if (!project.hasFacet(JPAFacet.class))
{
setup.add(JPASetupWizard.class);
}
return setup;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,16 @@

import org.jboss.forge.addon.convert.Converter;
import org.jboss.forge.addon.javaee.jpa.FieldOperations;
import org.jboss.forge.addon.javaee.jpa.JPAFacet;
import org.jboss.forge.addon.javaee.jpa.ui.setup.JPASetupWizard;
import org.jboss.forge.addon.javaee.ui.AbstractJavaEECommand;
import org.jboss.forge.addon.parser.java.facets.JavaSourceFacet;
import org.jboss.forge.addon.parser.java.resources.JavaResource;
import org.jboss.forge.addon.parser.java.resources.JavaResourceVisitor;
import org.jboss.forge.addon.projects.Project;
import org.jboss.forge.addon.resource.FileResource;
import org.jboss.forge.addon.resource.visit.VisitContext;
import org.jboss.forge.addon.ui.command.UICommand;
import org.jboss.forge.addon.ui.context.UIBuilder;
import org.jboss.forge.addon.ui.context.UIContext;
import org.jboss.forge.addon.ui.context.UIExecutionContext;
Expand Down Expand Up @@ -385,4 +388,21 @@ protected boolean isProjectRequired()
{
return false;
}

@Override
public List<Class<? extends UICommand>> getSetupSteps(UIContext context)
{
List<Class<? extends UICommand>> setup = new ArrayList<>();
Project project = getSelectedProject(context);
if (!project.hasFacet(JPAFacet.class))
{
setup.add(JPASetupWizard.class);
}
else if (project.getFacet(JPAFacet.class).getAllEntities().isEmpty())
{
setup.add(NewEntityCommand.class);
}
return setup;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,18 @@
import org.jboss.forge.addon.javaee.ejb.EJBFacet;
import org.jboss.forge.addon.javaee.ejb.ui.EJBSetupWizard;
import org.jboss.forge.addon.javaee.jpa.JPAFacet;
import org.jboss.forge.addon.javaee.jpa.ui.setup.JPASetupWizard;
import org.jboss.forge.addon.javaee.rest.RestFacet;
import org.jboss.forge.addon.javaee.rest.generation.RestResourceGenerator;
import org.jboss.forge.addon.javaee.rest.generator.RestGenerationContextImpl;
import org.jboss.forge.addon.javaee.rest.generator.impl.EntityBasedResourceGenerator;
import org.jboss.forge.addon.javaee.rest.ui.setup.RestSetupWizard;
import org.jboss.forge.addon.javaee.ui.AbstractJavaEECommand;
import org.jboss.forge.addon.parser.java.facets.JavaSourceFacet;
import org.jboss.forge.addon.parser.java.resources.JavaResource;
import org.jboss.forge.addon.projects.Project;
import org.jboss.forge.addon.text.Inflector;
import org.jboss.forge.addon.ui.command.UICommand;
import org.jboss.forge.addon.ui.context.UIBuilder;
import org.jboss.forge.addon.ui.context.UIContext;
import org.jboss.forge.addon.ui.context.UIExecutionContext;
Expand Down Expand Up @@ -242,4 +246,20 @@ public NavigationResult next(UINavigationContext context) throws Exception
}
}

@Override
public List<Class<? extends UICommand>> getSetupSteps(UIContext context)
{
List<Class<? extends UICommand>> setup = new ArrayList<>();
Project project = getSelectedProject(context);
if (!project.hasFacet(RestFacet.class))
{
setup.add(RestSetupWizard.class);
}
if (!project.hasFacet(JPAFacet.class))
{
setup.add(JPASetupWizard.class);
}
return setup;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,14 @@

package org.jboss.forge.addon.javaee.ui;

import java.util.Collections;
import java.util.List;

import javax.inject.Inject;

import org.jboss.forge.addon.projects.ProjectFactory;
import org.jboss.forge.addon.projects.ui.AbstractProjectCommand;
import org.jboss.forge.addon.ui.command.UICommand;
import org.jboss.forge.addon.ui.context.UIContext;
import org.jboss.forge.addon.ui.metadata.UICommandMetadata;
import org.jboss.forge.addon.ui.util.Categories;
Expand All @@ -32,4 +36,9 @@ protected ProjectFactory getProjectFactory()
{
return projectFactory;
}

public List<Class<? extends UICommand>> getSetupSteps(UIContext context)
{
return Collections.emptyList();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
/**
* Copyright 2014 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Eclipse Public License version 1.0, available at
* http://www.eclipse.org/legal/epl-v10.html
*/

package org.jboss.forge.addon.javaee.ui;

import org.jboss.forge.addon.ui.command.AbstractUICommand;
import org.jboss.forge.addon.ui.command.UICommand;
import org.jboss.forge.addon.ui.context.UIBuilder;
import org.jboss.forge.addon.ui.context.UIContext;
import org.jboss.forge.addon.ui.context.UIExecutionContext;
import org.jboss.forge.addon.ui.context.UINavigationContext;
import org.jboss.forge.addon.ui.metadata.UICommandMetadata;
import org.jboss.forge.addon.ui.result.NavigationResult;
import org.jboss.forge.addon.ui.result.Result;
import org.jboss.forge.addon.ui.result.Results;
import org.jboss.forge.addon.ui.wizard.UIWizard;

/**
*
* @author <a href="ggastald@redhat.com">George Gastaldi</a>
*/
public class CompositeWizard extends AbstractUICommand implements UIWizard
{
private final UICommand originalCmd;
private final Class<? extends UICommand>[] steps;

public CompositeWizard(UICommand originalCmd, Class<? extends UICommand>[] steps)
{
this.originalCmd = originalCmd;
this.steps = steps;
}

@Override
public UICommandMetadata getMetadata(UIContext context)
{
return originalCmd.getMetadata(context);
}

@Override
public NavigationResult next(UINavigationContext context) throws Exception
{
return Results.navigateTo(steps);
}

@Override
public Result execute(UIExecutionContext context) throws Exception
{
return Results.success();
}

@Override
public void initializeUI(UIBuilder builder) throws Exception
{
// no UI
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
/**
* Copyright 2014 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Eclipse Public License version 1.0, available at
* http://www.eclipse.org/legal/epl-v10.html
*/

package org.jboss.forge.addon.javaee.ui;

import java.util.List;

import javax.inject.Inject;
import javax.inject.Singleton;

import org.jboss.forge.addon.projects.ProjectFactory;
import org.jboss.forge.addon.projects.Projects;
import org.jboss.forge.addon.ui.command.UICommand;
import org.jboss.forge.addon.ui.command.UICommandEnricher;
import org.jboss.forge.addon.ui.context.UIContext;

/**
* Adds the Setup steps on {@link AbstractJavaEECommand}
*
* @author <a href="ggastald@redhat.com">George Gastaldi</a>
*/
@Singleton
public class JavaEEUICommandEnricher implements UICommandEnricher
{
@Inject
private ProjectFactory projectFactory;

@SuppressWarnings("unchecked")
@Override
public UICommand enrich(UIContext context, UICommand original)
{
final UICommand result;
if (original instanceof AbstractJavaEECommand && Projects.containsProject(projectFactory, context))
{
List<Class<? extends UICommand>> previousSteps = ((AbstractJavaEECommand) original).getSetupSteps(context);
if (previousSteps.isEmpty())
{
result = original;
}
else
{
Class<? extends UICommand> classes[] = new Class[previousSteps.size() + 1];
previousSteps.toArray(classes);
classes[classes.length - 1] = (Class<? extends UICommand>) original.getMetadata(context).getType();
result = new CompositeWizard(original, classes);
}
}
else
{
result = original;
}
return result;
}
}

0 comments on commit c35c43f

Please sign in to comment.