Пример #1
0
 private TestSModelDescriptor(String modelName, SModel toCopy) {
   super(
       PersistenceFacade.getInstance()
           .createModelReference(null, jetbrains.mps.smodel.SModelId.generate(), modelName));
   myLongName = SModelStereotype.withoutStereotype(modelName);
   myToCopy = toCopy;
 }
Пример #2
0
  @NotNull
  @Override
  public SModel create(DataSource dataSource, @NotNull Map<String, String> options)
      throws IOException {
    if (!(dataSource instanceof StreamDataSource)) {
      throw new UnsupportedDataSourceException(dataSource);
    }

    StreamDataSource source = (StreamDataSource) dataSource;
    String modelName = options.get(OPTION_MODELNAME);
    if (modelName == null) {
      throw new IOException("modelName is not provided");
    }
    String modulRef = options.get(OPTION_MODULEREF);
    if (modulRef == null) {
      throw new IOException("moduleRef is not provided");
    }

    final SModelHeader header = new SModelHeader();
    header.setModelReference(
        PersistenceFacade.getInstance()
            .createModelReference(null, jetbrains.mps.smodel.SModelId.generate(), modelName));
    return new DefaultSModelDescriptor(new PersistenceFacility(this, source), header);
  }
Пример #3
0
/** Igor Alshannikov May 31, 2007 */
public class AuxilaryRuntimeModel implements ModelOwner, CoreComponent {
  private static final SModelFqName myModelFqName =
      new SModelFqName("" + System.currentTimeMillis(), "$orphan-stuff$");
  private static final SModelReference MY_MODEL_REFERENCE =
      new SModelReference(myModelFqName, SModelId.generate());

  private static AuxilaryRuntimeModel INSTANCE;

  public AuxilaryRuntimeModel(SModelRepository repository) {
    ourInstance = new AuxModelDescriptor();
  }

  private final SModelDescriptor ourInstance;

  public static SModelDescriptor getDescriptor() {
    return INSTANCE.ourInstance;
  }

  public static boolean isAuxModel(SModel model) {
    if (model == null) return false;
    SModelDescriptor descriptor = getDescriptor();
    return model.getModelDescriptor() == descriptor;
  }

  @Override
  public void init() {
    if (INSTANCE != null) {
      throw new IllegalStateException("double initialization");
    }

    INSTANCE = this;
    SModelRepository.getInstance().registerModelDescriptor(ourInstance, this);
  }

  @Override
  public void dispose() {
    ModelAccess.instance()
        .runWriteAction(
            new Runnable() {
              @Override
              public void run() {
                SModelRepository.getInstance()
                    .unRegisterModelDescriptor(ourInstance, AuxilaryRuntimeModel.this);
              }
            });
    INSTANCE = null;
  }

  private static class AuxModelDescriptor extends BaseSpecialModelDescriptor {
    public AuxModelDescriptor() {
      super(AuxilaryRuntimeModel.MY_MODEL_REFERENCE, false);
    }

    protected SModel createModel() {
      return new SModel(getSModelReference()) {
        protected void performUndoableAction(SNodeUndoableAction action) {
          if (!UndoHelper.getInstance().needRegisterUndo(this)) return;
          UndoHelper.getInstance().addUndoableAction(action);
        }

        protected boolean canFireEvent() {
          return false;
        }
      };
    }
  }
}