package jetbrains.mps.project.persistence; /*Generated by MPS */ import org.apache.log4j.Logger; import org.apache.log4j.LogManager; import org.jetbrains.annotations.NotNull; import jetbrains.mps.project.structure.modules.DevkitDescriptor; import org.jdom.Element; import jetbrains.mps.baseLanguage.closures.runtime._FunctionTypes; import jetbrains.mps.project.ModuleId; import jetbrains.mps.internal.collections.runtime.ListSequence; import java.util.List; import org.jetbrains.mps.openapi.persistence.PersistenceFacade; import org.jetbrains.mps.openapi.model.SModelReference; import jetbrains.mps.util.annotation.ToRemove; import jetbrains.mps.vfs.IFile; import org.jdom.Document; import jetbrains.mps.util.JDOMUtil; import org.jetbrains.mps.openapi.module.SModuleReference; import jetbrains.mps.internal.collections.runtime.SetSequence; import java.io.OutputStream; import org.apache.log4j.Level; public class DevkitDescriptorPersistence { private static final Logger LOG = LogManager.getLogger(DevkitDescriptorPersistence.class); public DevkitDescriptorPersistence() { } @NotNull public DevkitDescriptor load(@NotNull final Element root) throws ModuleReadException { try { DevkitDescriptor descriptor = new _FunctionTypes._return_P0_E0<DevkitDescriptor>() { public DevkitDescriptor invoke() { final DevkitDescriptor result_raojav_a0a0a0a0c = new DevkitDescriptor(); final String result_raojav_a0a0a0a0a0c = root.getAttributeValue("name"); result_raojav_a0a0a0a0c.setNamespace(result_raojav_a0a0a0a0a0c); String uuid = root.getAttributeValue("uuid"); if (uuid != null) { final ModuleId result_raojav_a0a2a0a0a0a0c = ModuleId.fromString(uuid); result_raojav_a0a0a0a0c.setId(result_raojav_a0a2a0a0a0a0c); } for (Element exportedLang : ListSequence.fromList((List<Element>) root.getChildren("exported-language"))) { result_raojav_a0a0a0a0c.getExportedLanguages().add(PersistenceFacade.getInstance().createModuleReference(exportedLang.getAttributeValue("name"))); } Element extendedDevKits = ListSequence.fromList(((List<Element>) root.getChildren("extendedDevKits"))).first(); if (extendedDevKits != null) { for (Element xde : ListSequence.fromList((List<Element>) extendedDevKits.getChildren("extendedDevKit"))) { result_raojav_a0a0a0a0c.getExtendedDevkits().add(PersistenceFacade.getInstance().createModuleReference(xde.getText())); } } Element exportedSolutions = ListSequence.fromList(((List<Element>) root.getChildren("exported-solutions"))).first(); if (exportedSolutions != null) { for (Element xse : ListSequence.fromList((List<Element>) exportedSolutions.getChildren("exported-solution"))) { result_raojav_a0a0a0a0c.getExportedSolutions().add(PersistenceFacade.getInstance().createModuleReference(xse.getText())); } } Element genPlanElement; if ((genPlanElement = root.getChild("generation-plan")) != null) { final SModelReference result_raojav_a0a11a0a0a0a0c = PersistenceFacade.getInstance().createModelReference(genPlanElement.getAttributeValue("model")); result_raojav_a0a0a0a0c.setAssociatedPlan(result_raojav_a0a11a0a0a0a0c); } return result_raojav_a0a0a0a0c; } }.invoke(); return descriptor; } catch (Exception e) { throw new ModuleReadException(e); } } /** * * @deprecated use {@link jetbrains.mps.project.persistence.DevkitDescriptorPersistence#save(DevkitDescriptor) instance method} instead */ @Deprecated @ToRemove(version = 3.5) public static DevkitDescriptor loadDevKitDescriptor(IFile file) { try { Document document = JDOMUtil.loadDocument(file); DevkitDescriptor descriptor = new DevkitDescriptorPersistence().load(document.getRootElement()); ModuleDescriptorPersistence.setTimestamp(descriptor, file); return descriptor; } catch (ModuleReadException ex) { throw ex; } catch (Exception e) { throw new ModuleReadException(e); } } @NotNull public Element save(@NotNull final DevkitDescriptor descriptor) { Element root = new _FunctionTypes._return_P0_E0<Element>() { public Element invoke() { final Element result_raojav_a0a0a0g = new Element("dev-kit"); result_raojav_a0a0a0g.setAttribute("name", descriptor.getNamespace()); if (descriptor.getId() != null) { result_raojav_a0a0a0g.setAttribute("uuid", descriptor.getId().toString()); } for (final SModuleReference lang : SetSequence.fromSet(descriptor.getExportedLanguages())) { result_raojav_a0a0a0g.addContent(new _FunctionTypes._return_P0_E0<Element>() { public Element invoke() { final Element result_raojav_a0a0a0a3a0a0a0g = new Element("exported-language"); result_raojav_a0a0a0a3a0a0a0g.setAttribute("name", lang.toString()); return result_raojav_a0a0a0a3a0a0a0g; } }.invoke()); } if (!(descriptor.getExtendedDevkits().isEmpty())) { result_raojav_a0a0a0g.addContent(new _FunctionTypes._return_P0_E0<Element>() { public Element invoke() { final Element result_raojav_a0a0a0a5a0a0a0g = new Element("extendedDevKits"); for (final SModuleReference ref : SetSequence.fromSet(descriptor.getExtendedDevkits())) { result_raojav_a0a0a0a5a0a0a0g.addContent(new _FunctionTypes._return_P0_E0<Element>() { public Element invoke() { final Element result_raojav_a0a0a0a0a0a0a0a5a0a0a0g = new Element("extendedDevKit"); result_raojav_a0a0a0a0a0a0a0a5a0a0a0g.setText(ref.toString()); return result_raojav_a0a0a0a0a0a0a0a5a0a0a0g; } }.invoke()); } return result_raojav_a0a0a0a5a0a0a0g; } }.invoke()); } if (!(descriptor.getExportedSolutions().isEmpty())) { result_raojav_a0a0a0g.addContent(new _FunctionTypes._return_P0_E0<Element>() { public Element invoke() { final Element result_raojav_a0a0a0a7a0a0a0g = new Element("exported-solutions"); for (final SModuleReference ref : SetSequence.fromSet(descriptor.getExportedSolutions())) { result_raojav_a0a0a0a7a0a0a0g.addContent(new _FunctionTypes._return_P0_E0<Element>() { public Element invoke() { final Element result_raojav_a0a0a0a0a0a0a0a7a0a0a0g = new Element("exported-solution"); result_raojav_a0a0a0a0a0a0a0a7a0a0a0g.setText(ref.toString()); return result_raojav_a0a0a0a0a0a0a0a7a0a0a0g; } }.invoke()); } return result_raojav_a0a0a0a7a0a0a0g; } }.invoke()); } if (descriptor.getAssociatedGenPlan() != null) { Element genPlanElement = new Element("generation-plan"); genPlanElement.setAttribute("model", PersistenceFacade.getInstance().asString(descriptor.getAssociatedGenPlan())); result_raojav_a0a0a0g.addContent(genPlanElement); } return result_raojav_a0a0a0g; } }.invoke(); return root; } /** * * @deprecated use {@link jetbrains.mps.project.persistence.DevkitDescriptorPersistence#save(DevkitDescriptor) instance method} instead */ @Deprecated @ToRemove(version = 3.5) public static void saveDevKitDescriptor(IFile file, DevkitDescriptor descriptor) { try { Element root = new DevkitDescriptorPersistence().save(descriptor); OutputStream os = file.openOutputStream(); JDOMUtil.writeDocument(new Document(root), os); } catch (Exception e) { if (LOG.isEnabledFor(Level.ERROR)) { LOG.error("", e); } } ModuleDescriptorPersistence.setTimestamp(descriptor, file); } }