package jetbrains.mps.project.foreign;
/*Generated by MPS */
import jetbrains.mps.vfs.IFile;
import org.jdom.JDOMException;
import java.io.IOException;
import org.jdom.Element;
import jetbrains.mps.util.JDOMUtil;
import jetbrains.mps.util.xml.XmlUtil;
import jetbrains.mps.internal.collections.runtime.Sequence;
import jetbrains.mps.internal.collections.runtime.IWhereFilter;
public class IdeaModuleConfiguration {
private MPSFacetConfiguration myMpsFacetConfiguration;
private IFile myFile;
private IdeaModuleConfiguration(IFile file) {
this.myFile = file;
}
public IFile getModuleFile() {
return myFile;
}
public MPSFacetConfiguration getMPSFacetConfiguration() {
return myMpsFacetConfiguration;
}
private void setMPSFacetConfiguration(MPSFacetConfiguration mpsFacet) {
this.myMpsFacetConfiguration = mpsFacet;
}
public static IdeaModuleConfiguration readFile(IFile moduleFile) throws JDOMException, IOException, FacetConfigurationFormatException {
IdeaModuleConfiguration imc = new IdeaModuleConfiguration(moduleFile);
Element module = JDOMUtil.loadDocument(moduleFile).getRootElement();
Iterable<Element> components = XmlUtil.children(module, "component");
Element facetManager = Sequence.fromIterable(components).findFirst(new IWhereFilter<Element>() {
public boolean accept(Element it) {
return "FacetManager".equals(it.getAttributeValue("name"));
}
});
if (facetManager == null) {
return imc;
}
Element mpsFacet = Sequence.fromIterable(XmlUtil.children(facetManager, "facet")).findFirst(new IWhereFilter<Element>() {
public boolean accept(Element fct) {
return "MPS".equals(fct.getAttributeValue("name"));
}
});
if (mpsFacet == null) {
return imc;
}
Element cfg = XmlUtil.first(mpsFacet, "configuration");
if (cfg != null) {
MPSFacetConfiguration mpsFacetConfig = new MPSFacetConfiguration();
mpsFacetConfig.readFromXml(cfg);
imc.setMPSFacetConfiguration(mpsFacetConfig);
}
return imc;
}
}