| package org.jetbrains.android.importDependencies; |
| |
| import com.intellij.openapi.module.Module; |
| import org.jetbrains.annotations.NotNull; |
| import org.jetbrains.annotations.Nullable; |
| |
| /** |
| * @author Eugene.Kudelevsky |
| */ |
| abstract class ModuleProvider { |
| |
| private ModuleProvider() { |
| } |
| |
| @Nullable |
| public abstract Module getModule(); |
| |
| @NotNull |
| public abstract String getModuleName(); |
| |
| public static ModuleProvider create(@NotNull final ModuleProvidingTask task) { |
| return new MyNewModuleProvider(task); |
| } |
| |
| public static ModuleProvider create(@NotNull final Module module) { |
| return new MyExistingModuleProvider(module); |
| } |
| |
| private static class MyNewModuleProvider extends ModuleProvider { |
| private final ModuleProvidingTask myTask; |
| |
| public MyNewModuleProvider(@NotNull ModuleProvidingTask task) { |
| myTask = task; |
| } |
| |
| @Override |
| public Module getModule() { |
| return myTask.getDepModule(); |
| } |
| |
| @NotNull |
| @Override |
| public String getModuleName() { |
| return myTask.getModuleName(); |
| } |
| |
| @Override |
| public boolean equals(Object o) { |
| if (this == o) return true; |
| if (o == null || getClass() != o.getClass()) return false; |
| |
| MyNewModuleProvider that = (MyNewModuleProvider)o; |
| |
| if (!myTask.equals(that.myTask)) return false; |
| |
| return true; |
| } |
| |
| @Override |
| public int hashCode() { |
| return myTask.hashCode(); |
| } |
| } |
| |
| private static class MyExistingModuleProvider extends ModuleProvider { |
| private final Module myModule; |
| |
| public MyExistingModuleProvider(Module module) { |
| myModule = module; |
| } |
| |
| @Override |
| public Module getModule() { |
| return myModule; |
| } |
| |
| @NotNull |
| @Override |
| public String getModuleName() { |
| return myModule.getName(); |
| } |
| |
| @Override |
| public boolean equals(Object o) { |
| if (this == o) return true; |
| if (o == null || getClass() != o.getClass()) return false; |
| |
| MyExistingModuleProvider that = (MyExistingModuleProvider)o; |
| |
| if (!myModule.equals(that.myModule)) return false; |
| |
| return true; |
| } |
| |
| @Override |
| public int hashCode() { |
| return myModule.hashCode(); |
| } |
| } |
| } |