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

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

/*
* 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.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Properties;

import javax.enterprise.context.Dependent;
import javax.inject.Inject;

import org.apache.maven.model.Model;
import org.apache.maven.model.Parent;
import org.jboss.forge.addon.dependencies.Dependency;
import org.jboss.forge.addon.dependencies.builder.DependencyBuilder;
import org.jboss.forge.addon.facets.AbstractFacet;
import org.jboss.forge.addon.facets.constraints.FacetConstraint;
import org.jboss.forge.addon.maven.projects.MavenBuildSystem;
import org.jboss.forge.addon.maven.projects.MavenFacet;
import org.jboss.forge.addon.projects.Project;
import org.jboss.forge.addon.projects.ProjectProvider;
import org.jboss.forge.addon.projects.facets.MetadataFacet;

/**
* @author <a href="mailto:lincolnbaxter@gmail.com">Lincoln Baxter, III</a>
*/
@Dependent
@FacetConstraint(MavenFacet.class)
public class MavenMetadataFacet extends AbstractFacet<Project> implements MetadataFacet
{
   @Inject
   private MavenBuildSystem buildSystem;

   @Override
   public ProjectProvider getProjectProvider()
   {
      return buildSystem;
   }

   @Override
   public String getProjectName()
   {
      MavenFacet mvn = getFaceted().getFacet(MavenFacet.class);
      Model pom = mvn.getModel();
      return pom.getArtifactId();
   }

   @Override
   public String getProjectVersion()
   {
      MavenFacet mvn = getFaceted().getFacet(MavenFacet.class);
      Model pom = mvn.getModel();
      String version = pom.getVersion();
      if (version == null)
      {
         Parent parent = pom.getParent();
         if (parent != null)
         {
            version = parent.getVersion();
         }
      }
      return version;
   }

   @Override
   public MavenMetadataFacet setProjectVersion(String version)
   {
      MavenFacet mvn = getFaceted().getFacet(MavenFacet.class);
      Model pom = mvn.getModel();
      pom.setVersion(version);
      mvn.setModel(pom);
      return this;
   }

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

   @Override
   public boolean install()
   {
      return true;
   }

   @Override
   public boolean isInstalled()
   {
      return true;
   }

   @Override
   public MavenMetadataFacet setProjectName(final String name)
   {
      MavenFacet mvn = getFaceted().getFacet(MavenFacet.class);
      Model pom = mvn.getModel();
      pom.setArtifactId(name);
      mvn.setModel(pom);
      return this;
   }

   @Override
   @Deprecated
   public MavenMetadataFacet setTopLevelPackage(final String groupId)
   {
      MavenFacet mvn = getFaceted().getFacet(MavenFacet.class);
      Model pom = mvn.getModel();
      pom.setGroupId(groupId);
      mvn.setModel(pom);
      return this;
   }

   @Override
   public MetadataFacet setProjectGroupName(String groupId)
   {
      MavenFacet mvn = getFaceted().getFacet(MavenFacet.class);
      Model pom = mvn.getModel();
      pom.setGroupId(groupId);
      mvn.setModel(pom);
      return this;
   }

   @Override
   public String getProjectGroupName()
   {
      Model pom = getFaceted().getFacet(MavenFacet.class).getModel();
      String groupId = pom.getGroupId();

      // If groupId is null, try to grab the parent's groupId
      if (groupId == null)
      {
         Parent parent = pom.getParent();
         if (parent != null)
         {
            groupId = parent.getGroupId();
         }
      }
      return groupId;
   }

   @Override
   @Deprecated
   public String getTopLevelPackage()
   {
      Model pom = getFaceted().getFacet(MavenFacet.class).getModel();
      String groupId = pom.getGroupId();

      // If groupId is null, try to grab the parent's groupId
      if (groupId == null)
      {
         Parent parent = pom.getParent();
         if (parent != null)
         {
            groupId = parent.getGroupId();
         }
      }
      return groupId;
   }

   @Override
   public Dependency getOutputDependency()
   {
      return DependencyBuilder.create().setGroupId(getProjectGroupName()).setArtifactId(getProjectName())
               .setVersion(getProjectVersion());
   }

   @Override
   public Map<String, String> getEffectiveProperties()
   {
      MavenFacet maven = getFaceted().getFacet(MavenFacet.class);
      return maven.getProperties();
   }

   @Override
   public Map<String, String> getDirectProperties()
   {
      MavenFacet maven = getFaceted().getFacet(MavenFacet.class);
      Model pom = maven.getModel();

      Properties properties = pom.getProperties();
      Map<String, String> result = new HashMap<>();
      for (Entry<Object, Object> o : properties.entrySet())
      {
         result.put((String) o.getKey(), (String) o.getValue());
      }
      return result;
   }

   @Override
   public MavenMetadataFacet setDirectProperty(final String name, final String value)
   {
      MavenFacet maven = getFaceted().getFacet(MavenFacet.class);
      Model pom = maven.getModel();

      Properties properties = pom.getProperties();
      properties.put(name, value);
      maven.setModel(pom);
      return this;
   }

   @Override
   public String getDirectProperty(final String name)
   {
      return getDirectProperties().get(name);
   }

   @Override
   public String getEffectiveProperty(final String name)
   {
      return getEffectiveProperties().get(name);
   }

   @Override
   public String removeDirectProperty(final String name)
   {
      MavenFacet maven = getFaceted().getFacet(MavenFacet.class);
      Model pom = maven.getModel();

      Properties properties = pom.getProperties();
      String result = (String) properties.remove(name);
      maven.setModel(pom);
      return result;
   }

   @Override
   public boolean isValid()
   {
      return getFaceted().getFacet(MavenFacet.class).isModelValid();
   }

}
TOP

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

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.