package jetbrains.mps.project.io; /*Generated by MPS */ import jetbrains.mps.project.structure.modules.SolutionDescriptor; import jetbrains.mps.project.structure.modules.LanguageDescriptor; import jetbrains.mps.project.structure.modules.DevkitDescriptor; import jetbrains.mps.vfs.IFile; import jetbrains.mps.project.persistence.SolutionDescriptorPersistence; import jetbrains.mps.util.MacrosFactory; import jetbrains.mps.project.persistence.ModuleReadException; import jetbrains.mps.project.persistence.ModuleDescriptorPersistence; import org.jdom.Element; import jetbrains.mps.project.persistence.LanguageDescriptorPersistence; import jetbrains.mps.project.persistence.DevkitDescriptorPersistence; public class StandardDescriptorIOProvider implements DescriptorIOProvider { private static final StandardDescriptorIOProvider.SolutionDescriptorIO SOLUTION = new StandardDescriptorIOProvider.SolutionDescriptorIO(); private static final StandardDescriptorIOProvider.LanguageDescriptorIO LANGUAGE = new StandardDescriptorIOProvider.LanguageDescriptorIO(); private static final StandardDescriptorIOProvider.DevkitDescriptorIO DEVKIT = new StandardDescriptorIOProvider.DevkitDescriptorIO(); /*package*/ StandardDescriptorIOProvider() { } @Override public DescriptorIO<SolutionDescriptor> solutionDescriptorIO() { return SOLUTION; } @Override public DescriptorIO<LanguageDescriptor> languageDescriptorIO() { return LANGUAGE; } @Override public DescriptorIO<DevkitDescriptor> devkitDescriptorIO() { return DEVKIT; } public static class SolutionDescriptorIO implements DescriptorIO<SolutionDescriptor> { public SolutionDescriptorIO() { } @Override public SolutionDescriptor readFromFile(IFile file) throws DescriptorIOException { try { return SolutionDescriptorPersistence.loadSolutionDescriptor(file, MacrosFactory.forModuleFile(file)); } catch (ModuleReadException ex) { SolutionDescriptor sd = new SolutionDescriptor(); ModuleDescriptorPersistence.loadBrokenModule(sd, file, ex); return sd; } } @Override public void writeToFile(SolutionDescriptor sd, IFile file) { SolutionDescriptorPersistence.saveSolutionDescriptor(file, sd, MacrosFactory.forModuleFile(file)); } @Override public void writeToXml(SolutionDescriptor sd, Element element, IFile anchorFile) { throw new UnsupportedOperationException(); } @Override public SolutionDescriptor readFromXml(Element element, IFile anchorFile) { throw new UnsupportedOperationException(); } } public static class LanguageDescriptorIO implements DescriptorIO<LanguageDescriptor> { public LanguageDescriptorIO() { } @Override public LanguageDescriptor readFromFile(IFile file) throws DescriptorIOException { try { return LanguageDescriptorPersistence.loadLanguageDescriptor(file, MacrosFactory.forModuleFile(file)); } catch (ModuleReadException ex) { LanguageDescriptor ld = new LanguageDescriptor(); ModuleDescriptorPersistence.loadBrokenModule(ld, file, ex); return ld; } } @Override public void writeToFile(LanguageDescriptor ld, IFile file) { LanguageDescriptorPersistence.saveLanguageDescriptor(file, ld, MacrosFactory.forModuleFile(file)); } @Override public void writeToXml(LanguageDescriptor ld, Element element, IFile anchorFile) { throw new UnsupportedOperationException(); } @Override public LanguageDescriptor readFromXml(Element element, IFile anchorFile) { throw new UnsupportedOperationException(); } } public static class DevkitDescriptorIO implements DescriptorIO<DevkitDescriptor> { public DevkitDescriptorIO() { } @Override public DevkitDescriptor readFromFile(IFile file) throws DescriptorIOException { try { return DevkitDescriptorPersistence.loadDevKitDescriptor(file); } catch (ModuleReadException ex) { DevkitDescriptor dd = new DevkitDescriptor(); ModuleDescriptorPersistence.loadBrokenModule(dd, file, ex); return dd; } } @Override public void writeToFile(DevkitDescriptor dd, IFile file) { DevkitDescriptorPersistence.saveDevKitDescriptor(file, dd); } @Override public DevkitDescriptor readFromXml(Element element, IFile anchorFile) { throw new UnsupportedOperationException(); } @Override public void writeToXml(DevkitDescriptor t, Element element, IFile anchorFile) { throw new UnsupportedOperationException(); } } }