package com.intellij.lang.javascript.flex.projectStructure.model.impl;
import com.intellij.lang.javascript.flex.projectStructure.model.ModifiableDependencyEntry;
import com.intellij.lang.javascript.flex.projectStructure.model.ModifiableSharedLibraryEntry;
import org.jetbrains.annotations.NotNull;
/**
* @author ksafonov
*/
class SharedLibraryEntryImpl implements ModifiableSharedLibraryEntry, StatefulDependencyEntry {
private final DependencyTypeImpl myDependencyType = new DependencyTypeImpl();
@NotNull
private final String myLibraryName;
@NotNull
private final String myLibraryLevel;
public SharedLibraryEntryImpl(@NotNull String libraryName, @NotNull String libraryLevel) {
myLibraryName = libraryName;
myLibraryLevel = libraryLevel;
}
@Override
@NotNull
public String getLibraryName() {
return myLibraryName;
}
@NotNull
public String getLibraryLevel() {
return myLibraryLevel;
}
@NotNull
@Override
public DependencyTypeImpl getDependencyType() {
return myDependencyType;
}
public SharedLibraryEntryImpl getCopy() {
SharedLibraryEntryImpl copy = new SharedLibraryEntryImpl(myLibraryName, myLibraryLevel);
applyTo(copy);
return copy;
}
private void applyTo(ModifiableSharedLibraryEntry copy) {
myDependencyType.applyTo(copy.getDependencyType());
}
@Override
public boolean isEqual(ModifiableDependencyEntry other) {
if (!(other instanceof SharedLibraryEntryImpl)) return false;
if (!myLibraryName.equals(((SharedLibraryEntryImpl)other).myLibraryName)) return false;
if (!myLibraryLevel.equals(((SharedLibraryEntryImpl)other).myLibraryLevel)) return false;
if (!myDependencyType.isEqual(((SharedLibraryEntryImpl)other).myDependencyType)) return false;
return true;
}
public EntryState getState() {
EntryState state = new EntryState();
state.LIBRARY_NAME = myLibraryName;
state.LIBRARY_LEVEL = myLibraryLevel;
state.DEPENDENCY_TYPE = myDependencyType.getState();
return state;
}
}