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();
}
}
}