package jetbrains.mps.vcs.changesmanager.tree.features;
/*Generated by MPS */
import org.jetbrains.mps.openapi.model.SNodeReference;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.mps.openapi.module.SRepository;
import org.jetbrains.mps.openapi.model.SNode;
import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations;
import jetbrains.mps.lang.smodel.generator.smodelAdapter.SPropertyOperations;
import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory;
import jetbrains.mps.smodel.SNodePointer;
import org.jetbrains.annotations.NotNull;
public class NodeFeature extends AbstractNodeFeature {
public NodeFeature(SNodeReference nodePointer) {
super(nodePointer);
}
@Nullable
@Override
protected Feature getParent(SRepository repo) {
SNode node = getNodePointer().resolve(repo);
SNode parentNode = SNodeOperations.getParent(node);
if (parentNode == null) {
String virtualPackage = SPropertyOperations.getString(node, MetaAdapterFactory.getProperty(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x10802efe25aL, 0x115eca8579fL, "virtualPackage"));
if ((virtualPackage == null || virtualPackage.length() == 0)) {
return null;
} else {
return new VirtualPackageFeature(getModelReference(), virtualPackage);
}
}
return new NodeFeature(new SNodePointer(parentNode));
}
@Override
@NotNull
public String toString() {
return "Node {" + getNodePointerString() + "}";
}
}