package org.bundlemaker.core.internal.analysis.cache; import org.bundlemaker.core.resource.IModule; import org.eclipse.core.runtime.Assert; /** * <p> * Class that encapsulates the key for a module. A module can be identified either by its representing {@link IModule} * instance <i>or</i> by a simple name in case that there is no representing {@link IModule} instance (e.g. there is no * representing {@link IModule} instance for the virtual 'missing types' module). * </p> * * @author Gerd Wütherich (gerd@gerd-wuetherich.de) */ public class ModuleKey { /** the name of the module */ private String _moduleName; /** the IModule instance */ private IModule _module; /** * <p> * Creates a new instance of type {@link ModuleKey}. * </p> * * @param moduleName */ public ModuleKey(String moduleName) { Assert.isNotNull(moduleName); // the module name _moduleName = moduleName; } /** * <p> * Creates a new instance of type {@link ModuleKey}. * </p> * * @param module */ public ModuleKey(IModule module) { Assert.isNotNull(module); // the module _module = module; } /** * <p> * Returns the module name or <code>null</code> if no module name is set. * </p> * * @return the module name or <code>null</code> if no module name is set. */ public final String getModuleName() { return _moduleName; } /** * <p> * Returns the module. * </p> * * @return the module. */ public final IModule getModule() { return _module; } /** * <p> * Returns <code>true</code> if this key has an associated module. * </p> * * @return <code>true</code> if this key has an associated module. */ public final boolean hasModule() { return _module != null; } /** * {@inheritDoc} */ @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((_module == null) ? 0 : _module.hashCode()); result = prime * result + ((_moduleName == null) ? 0 : _moduleName.hashCode()); return result; } /** * {@inheritDoc} */ @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; ModuleKey other = (ModuleKey) obj; if (_module == null) { if (other._module != null) return false; } else if (!_module.equals(other._module)) return false; if (_moduleName == null) { if (other._moduleName != null) return false; } else if (!_moduleName.equals(other._moduleName)) return false; return true; } /** * {@inheritDoc} */ @Override public String toString() { return "ModuleKey [_moduleName=" + _moduleName + ", _module=" + _module + "]"; } }