package jetbrains.mps.lang.migration.runtime.base; /*Generated by MPS */ import org.apache.log4j.Logger; import org.apache.log4j.LogManager; import org.jetbrains.mps.openapi.language.SLanguage; import jetbrains.mps.smodel.adapter.ids.MetaIdHelper; import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory; import jetbrains.mps.smodel.adapter.ids.SLanguageId; import jetbrains.mps.smodel.language.LanguageRegistry; import jetbrains.mps.smodel.MPSModuleRepository; import org.apache.log4j.Level; public class MigrationScriptReference implements BaseScriptReference<MigrationScript> { private static final Logger LOG = LogManager.getLogger(MigrationScriptReference.class); private final SLanguage language; private final int fromVersion; public MigrationScriptReference(SLanguage language, int fromVersion) { this.language = language; this.fromVersion = fromVersion; } public SLanguage getLanguage() { return language; } public int getFromVersion() { return fromVersion; } @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || this.getClass() != o.getClass()) { return false; } MigrationScriptReference that = (MigrationScriptReference) o; if (!(language.equals(that.language))) { return false; } if (fromVersion != that.fromVersion) { return false; } return true; } @Override public int hashCode() { return language.hashCode() + 31 * fromVersion; } public String serialize() { return MetaIdHelper.getLanguage(language).serialize() + "(" + language.getQualifiedName() + ")" + "/" + fromVersion; } public static MigrationScriptReference deserialize(String s) { int version = Integer.parseInt(s.substring(s.indexOf('/') + 1)); int ix = s.indexOf('('); SLanguage language = MetaAdapterFactory.getLanguage(SLanguageId.deserialize(s.substring(0, ix)), s.substring(ix + 1, s.indexOf(')', ix))); return new MigrationScriptReference(language, version); } @Override public MigrationScript resolve(boolean silent) { int current = this.getFromVersion(); MigrationAspectDescriptor md = LanguageRegistry.getInstance(MPSModuleRepository.getInstance()).getLanguage(language).getAspect(MigrationAspectDescriptor.class); if (md == null && !(silent)) { if (LOG.isEnabledFor(Level.WARN)) { LOG.warn("Could not load migration descriptor for language " + language + "."); } } MigrationScript script = check_dhbyxl_a0e0k(md, current); if (script == null && !(silent)) { if (LOG.isEnabledFor(Level.WARN)) { LOG.warn("Could not load migration script for language " + language + ", version " + current + "."); } return null; } return script; } private static MigrationScript check_dhbyxl_a0e0k(MigrationAspectDescriptor checkedDotOperand, Integer current) { if (null != checkedDotOperand) { return checkedDotOperand.getScript(current); } return null; } }