/** * Copyright (c) 2012 BMW Car IT and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ package org.jnario.compiler; import com.google.common.base.Predicate; import com.google.inject.Inject; import java.io.File; import java.util.List; import java.util.Map; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.emf.ecore.util.EcoreUtil; import org.eclipse.xtend.core.compiler.batch.XtendBatchCompiler; import org.eclipse.xtend.lib.Property; import org.eclipse.xtext.generator.JavaIoFileSystemAccess; import org.eclipse.xtext.mwe.NameBasedFilter; import org.eclipse.xtext.mwe.PathTraverser; import org.eclipse.xtext.parser.IEncodingProvider; import org.eclipse.xtext.resource.XtextResource; import org.eclipse.xtext.xbase.lib.Pure; import org.jnario.doc.AbstractDocGenerator; import org.jnario.doc.DocOutputConfigurationProvider; import org.jnario.report.Executable2ResultMapping; @SuppressWarnings("all") public class JnarioDocCompiler extends XtendBatchCompiler { private Executable2ResultMapping resultMapping; @Property private String _resultFolder; @Inject private AbstractDocGenerator docGenerator; @Inject private IEncodingProvider.Runtime encodingProvider; private ResourceSet resourceSet; public boolean compile() { this.loadResources(); this.generateDocumentation(this.resultMapping); return true; } @Inject public Executable2ResultMapping setExecutable2ResultMapping(final Executable2ResultMapping resultMapping) { return this.resultMapping = resultMapping; } public ResourceSet loadResources() { ResourceSet _xblockexpression = null; { ResourceSet _get = this.resourceSetProvider.get(); this.resourceSet = _get; String _fileEncoding = this.getFileEncoding(); this.encodingProvider.setDefaultEncoding(_fileEncoding); Map<Object, Object> _loadOptions = this.resourceSet.getLoadOptions(); String _fileEncoding_1 = this.getFileEncoding(); _loadOptions.put(XtextResource.OPTION_ENCODING, _fileEncoding_1); final NameBasedFilter nameBasedFilter = new NameBasedFilter(); String _primaryFileExtension = this.fileExtensionProvider.getPrimaryFileExtension(); nameBasedFilter.setExtension(_primaryFileExtension); final PathTraverser pathTraverser = new PathTraverser(); List<String> _sourcePathDirectories = this.getSourcePathDirectories(); final Predicate<URI> _function = new Predicate<URI>() { public boolean apply(final URI input) { final boolean matches = nameBasedFilter.matches(input); if (matches) { JnarioDocCompiler.this.resourceSet.getResource(input, true); } return matches; } }; pathTraverser.resolvePathes(_sourcePathDirectories, _function); final File classDirectory = this.createTempDir("classes"); this.installJvmTypeProvider(this.resourceSet, classDirectory); EcoreUtil.resolveAll(this.resourceSet); _xblockexpression = this.resourceSet; } return _xblockexpression; } public void generateDocumentation(final Executable2ResultMapping executable2ResultMapping) { final JavaIoFileSystemAccess javaIoFileSystemAccess = this.javaIoFileSystemAccessProvider.get(); javaIoFileSystemAccess.setOutputPath(DocOutputConfigurationProvider.DOC_OUTPUT, this.outputPath); EList<Resource> _resources = this.resourceSet.getResources(); for (final Resource r : _resources) { URI _uRI = r.getURI(); String _fileExtension = _uRI.fileExtension(); boolean _isValid = this.fileExtensionProvider.isValid(_fileExtension); if (_isValid) { this.docGenerator.doGenerate(r, javaIoFileSystemAccess, executable2ResultMapping); } } } @Pure public String getResultFolder() { return this._resultFolder; } public void setResultFolder(final String resultFolder) { this._resultFolder = resultFolder; } }