/**
* 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.doc;
import com.google.inject.Singleton;
import java.io.InputStream;
import java.util.List;
import java.util.Map;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.resource.URIConverter;
import org.eclipse.xtend.lib.Data;
import org.eclipse.xtext.generator.IFileSystemAccess;
import org.eclipse.xtext.generator.IFileSystemAccessExtension2;
import org.eclipse.xtext.xbase.lib.CollectionLiterals;
import org.eclipse.xtext.xbase.lib.Functions.Function1;
import org.eclipse.xtext.xbase.lib.IterableExtensions;
import org.eclipse.xtext.xbase.lib.ListExtensions;
import org.eclipse.xtext.xbase.lib.Pure;
import org.eclipse.xtext.xbase.lib.util.ToStringHelper;
import org.jnario.doc.DocOutputConfigurationProvider;
import org.jnario.util.Strings;
@Data
@Singleton
@SuppressWarnings("all")
public class HtmlAssets {
private final List<String> _cssFiles = ListExtensions.<String, String>map(CollectionLiterals.<String>newArrayList(
"bootstrap.min.css",
"bootstrap-responsive.min.css",
"custom.css",
"prettify.css"), new Function1<String, String>() {
public String apply(final String it) {
return ("css/" + it);
}
});
private final List<String> _jsFiles = ListExtensions.<String, String>map(CollectionLiterals.<String>newArrayList(
"prettify.js",
"lang-jnario.js",
"jquery.js",
"bootstrap-tab.js"), new Function1<String, String>() {
public String apply(final String it) {
return ("js/" + it);
}
});
public void generate(final IFileSystemAccess fsa) {
List<String> _cssFiles = this.getCssFiles();
this.copy(fsa, _cssFiles);
List<String> _jsFiles = this.getJsFiles();
this.copy(fsa, _jsFiles);
}
private void copy(final IFileSystemAccess fsa, final Iterable<String> files) {
final Function1<String, Boolean> _function = new Function1<String, Boolean>() {
public Boolean apply(final String it) {
boolean _exists = HtmlAssets.this.exists(fsa, it);
return Boolean.valueOf((!_exists));
}
};
Iterable<String> _filter = IterableExtensions.<String>filter(files, _function);
for (final String file : _filter) {
String _load = this.load(file);
fsa.generateFile(file, DocOutputConfigurationProvider.ASSET_OUTPUT, _load);
}
}
private boolean exists(final IFileSystemAccess fsa, final String file) {
if ((!(fsa instanceof IFileSystemAccessExtension2))) {
return false;
}
final IFileSystemAccessExtension2 fsa2 = ((IFileSystemAccessExtension2) fsa);
final URI uri = fsa2.getURI(file, DocOutputConfigurationProvider.ASSET_OUTPUT);
Map<Object, Object> _emptyMap = CollectionLiterals.<Object, Object>emptyMap();
return URIConverter.INSTANCE.exists(uri, _emptyMap);
}
private String load(final String file) {
Class<? extends HtmlAssets> _class = this.getClass();
final InputStream inputStream = _class.getResourceAsStream(file);
return Strings.convertStreamToString(inputStream);
}
@Override
@Pure
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((this._cssFiles== null) ? 0 : this._cssFiles.hashCode());
result = prime * result + ((this._jsFiles== null) ? 0 : this._jsFiles.hashCode());
return result;
}
@Override
@Pure
public boolean equals(final Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
HtmlAssets other = (HtmlAssets) obj;
if (this._cssFiles == null) {
if (other._cssFiles != null)
return false;
} else if (!this._cssFiles.equals(other._cssFiles))
return false;
if (this._jsFiles == null) {
if (other._jsFiles != null)
return false;
} else if (!this._jsFiles.equals(other._jsFiles))
return false;
return true;
}
@Override
@Pure
public String toString() {
String result = new ToStringHelper().toString(this);
return result;
}
@Pure
public List<String> getCssFiles() {
return this._cssFiles;
}
@Pure
public List<String> getJsFiles() {
return this._jsFiles;
}
}