Package org.jboss.forge.furnace.manager.maven.addon

Source Code of org.jboss.forge.furnace.manager.maven.addon.AddonInfoBuilder

/*
* Copyright 2013 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.furnace.manager.maven.addon;

import java.io.File;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

import org.jboss.forge.furnace.addons.AddonId;
import org.jboss.forge.furnace.manager.spi.AddonInfo;
import org.jboss.forge.furnace.repositories.AddonDependencyEntry;

/**
* Information about an addon
*
* @author <a href="mailto:ggastald@redhat.com">George Gastaldi</a>
*
*/
public class AddonInfoBuilder implements AddonInfo
{
   private final AddonId addon;

   private final Map<AddonInfo, Boolean> requiredAddons = new HashMap<AddonInfo, Boolean>();
   private final Map<AddonInfo, Boolean> optionalAddons = new HashMap<AddonInfo, Boolean>();
   private final Set<File> resources = new HashSet<File>();

   private AddonInfoBuilder(AddonId addon)
   {
      this.addon = addon;
   }

   public static AddonInfoBuilder from(AddonId addonId)
   {
      AddonInfoBuilder builder = new AddonInfoBuilder(addonId);
      return builder;
   }

   public AddonInfoBuilder addRequiredDependency(AddonInfo addonInfo, boolean exported)
   {
      requiredAddons.put(addonInfo, exported);
      return this;
   }

   public AddonInfoBuilder addOptionalDependency(AddonInfo addonInfo, boolean exported)
   {
      optionalAddons.put(addonInfo, exported);
      return this;
   }

   public AddonInfoBuilder addResource(File file)
   {
      resources.add(file);
      return this;
   }

   @Override
   public AddonId getAddon()
   {
      return addon;
   }

   /**
    * Returns an unmodifiable list of the required addons
    */
   @Override
   public Set<AddonInfo> getOptionalAddons()
   {
      return Collections.unmodifiableSet(optionalAddons.keySet());
   }

   /**
    * Returns an unmodifiable list of the required addons
    */
   @Override
   public Set<AddonInfo> getRequiredAddons()
   {
      return Collections.unmodifiableSet(requiredAddons.keySet());
   }

   @Override
   public Set<File> getResources()
   {
      return Collections.unmodifiableSet(resources);
   }

   @Override
   public Set<AddonDependencyEntry> getDependencyEntries()
   {
      Set<AddonDependencyEntry> entries = new HashSet<AddonDependencyEntry>();
      for (Entry<AddonInfo, Boolean> entry : requiredAddons.entrySet())
      {
         AddonId key = entry.getKey().getAddon();
         Boolean exported = entry.getValue();
         entries.add(AddonDependencyEntry.create(key.getName(), key.getVersion().toString(), exported, false));
      }
      for (Entry<AddonInfo, Boolean> entry : optionalAddons.entrySet())
      {
         AddonId key = entry.getKey().getAddon();
         Boolean exported = entry.getValue();
         entries.add(AddonDependencyEntry.create(key.getName(), key.getVersion().toString(), exported, true));
      }
      return entries;
   }

   @Override
   public int hashCode()
   {
      final int prime = 31;
      int result = 1;
      result = prime * result + ((addon == null) ? 0 : addon.hashCode());
      return result;
   }

   @Override
   public boolean equals(Object obj)
   {
      if (this == obj)
         return true;
      if (obj == null)
         return false;
      if (!(obj instanceof AddonInfo))
         return false;
      AddonInfo other = (AddonInfo) obj;
      if (addon == null)
      {
         if (other.getAddon() != null)
            return false;
      }
      else if (!addon.equals(other.getAddon()))
         return false;
      return true;
   }

   @Override
   public String toString()
   {
      return addon.toString();
   }
}
TOP

Related Classes of org.jboss.forge.furnace.manager.maven.addon.AddonInfoBuilder

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.