Package org.jboss.forge.addon.maven.projects.facets

Source Code of org.jboss.forge.addon.maven.projects.facets.MavenResourcesFacet

/*
* Copyright 2012 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.maven.projects.facets;

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

import javax.enterprise.context.Dependent;

import org.apache.maven.model.Build;
import org.jboss.forge.addon.facets.AbstractFacet;
import org.jboss.forge.addon.facets.constraints.FacetConstraint;
import org.jboss.forge.addon.maven.projects.MavenFacet;
import org.jboss.forge.addon.projects.Project;
import org.jboss.forge.addon.projects.facets.ResourcesFacet;
import org.jboss.forge.addon.resource.DirectoryResource;
import org.jboss.forge.addon.resource.FileResource;
import org.jboss.forge.addon.resource.Resource;
import org.jboss.forge.addon.resource.ResourceFilter;
import org.jboss.forge.addon.resource.visit.ResourceVisit;
import org.jboss.forge.addon.resource.visit.ResourceVisitor;

/**
* Handles Maven Resource folders
*
* @author <a href="mailto:lincolnbaxter@gmail.com">Lincoln Baxter, III</a>
* @author <a href="mailto:ggastald@redhat.com">George Gastaldi</a>
*/
@Dependent
@FacetConstraint(MavenFacet.class)
public class MavenResourcesFacet extends AbstractFacet<Project> implements ResourcesFacet
{
   @Override
   public List<DirectoryResource> getResourceDirectories()
   {
      List<DirectoryResource> result = new ArrayList<>();
      result.add(getResourceDirectory());
      result.add(getTestResourceDirectory());
      return result;
   }

   @Override
   public DirectoryResource getResourceDirectory()
   {
      MavenFacet mavenFacet = getFaceted().getFacet(MavenFacet.class);
      Build build = mavenFacet.getModel().getBuild();
      final String resFolderName;
      if (build != null && !build.getResources().isEmpty() && build.getResources().get(0).getDirectory() != null)
      {
         resFolderName = build.getResources().get(0).getDirectory();
      }
      else
      {
         resFolderName = "src" + File.separator + "main" + File.separator + "resources";
      }
      DirectoryResource projectRoot = getFaceted().getRootDirectory();
      return projectRoot.getChildDirectory(resFolderName);
   }

   @Override
   public DirectoryResource getTestResourceDirectory()
   {
      MavenFacet mavenFacet = getFaceted().getFacet(MavenFacet.class);
      Build build = mavenFacet.getModel().getBuild();
      final String resFolderName;
      if (build != null && !build.getTestResources().isEmpty()
               && build.getTestResources().get(0).getDirectory() != null)
      {
         resFolderName = build.getTestResources().get(0).getDirectory();
      }
      else
      {
         resFolderName = "src" + File.separator + "test" + File.separator + "resources";
      }
      DirectoryResource projectRoot = getFaceted().getRootDirectory();
      return projectRoot.getChildDirectory(resFolderName);
   }

   @Override
   public void setFaceted(Project origin)
   {
      super.setFaceted(origin);
   }

   @Override
   public boolean isInstalled()
   {
      return getResourceDirectory().exists();
   }

   @Override
   public boolean install()
   {
      if (!this.isInstalled())
      {
         for (DirectoryResource folder : getResourceDirectories())
         {
            folder.mkdirs();
         }
      }
      return true;
   }

   @Override
   public FileResource<?> getResource(final String relativePath)
   {
      return (FileResource<?>) getResourceDirectory().getChild(relativePath);
   }

   @Override
   public FileResource<?> getTestResource(final String relativePath)
   {
      return (FileResource<?>) getTestResourceDirectory().getChild(relativePath);
   }

   @Override
   public FileResource<?> createResource(final char[] bytes, final String relativeFilename)
   {
      FileResource<?> file = (FileResource<?>) getResourceDirectory().getChild(relativeFilename);
      file.setContents(bytes);
      return file;
   }

   @Override
   public FileResource<?> createTestResource(final char[] bytes, final String relativeFilename)
   {
      FileResource<?> file = (FileResource<?>) getTestResourceDirectory().getChild(relativeFilename);
      file.setContents(bytes);
      return file;
   }

   @Override
   public void visitResources(ResourceVisitor visitor)
   {
      new ResourceVisit(getResourceDirectory()).perform(visitor, new ResourceFilter()
      {
         @Override
         public boolean accept(Resource<?> resource)
         {
            return resource instanceof DirectoryResource;
         }
      }, new ResourceFilter()
      {
         @Override
         public boolean accept(Resource<?> type)
         {
            return true;
         }
      });
   }

   @Override
   public void visitTestResources(ResourceVisitor visitor)
   {
      new ResourceVisit(getTestResourceDirectory()).perform(visitor, new ResourceFilter()
      {
         @Override
         public boolean accept(Resource<?> resource)
         {
            return resource instanceof DirectoryResource;
         }
      }, new ResourceFilter()
      {
         @Override
         public boolean accept(Resource<?> type)
         {
            return true;
         }
      });
   }
}
TOP

Related Classes of org.jboss.forge.addon.maven.projects.facets.MavenResourcesFacet

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.