blob: 8d7893d20fcadbc7b9b5603adf030d74553955bf [file] [log] [blame]
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();
}
}
}