/**
* Copyright (c) 2013-2016 Angelo ZERR and Genuitec LLC.
* 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
*
* Contributors:
* Piotr Tomiak <piotr@genuitec.com> - initial API and implementation
* Angelo Zerr <angelo.zerr@gmail.com> - initial API and implementation
*/
package tern.internal.resources;
import java.io.IOException;
import org.w3c.dom.Document;
import tern.IDOMProvider;
import tern.ITernFileSynchronizer;
import tern.ITernResourcesManagerDelegate;
import tern.ITernFile;
import tern.ITernProject;
import tern.server.protocol.html.IScriptTagRegionProvider;
import tern.server.protocol.html.ScriptTagRegion;
public class InternalTernResourcesManager {
private static final InternalTernResourcesManager INSTANCE = new InternalTernResourcesManager();
private ITernResourcesManagerDelegate ternResourcesManagerDelegate = new DefaultTernResourcesManager();
private IScriptTagRegionProvider scriptTagRegionProvider = new DefaultScriptTagRegionsProvider();
private IDOMProvider provider = DefaultDOMProvider.INSTANCE;
public static synchronized InternalTernResourcesManager getInstance() {
return INSTANCE;
}
public ScriptTagRegion[] getScriptTagRegions(ITernFile file) {
if (scriptTagRegionProvider != null) {
return scriptTagRegionProvider.getScriptTags(file);
}
return null;
}
public ITernProject getTernProject(Object project, boolean force)
throws IOException {
return ternResourcesManagerDelegate.getTernProject(project, force);
}
public ITernFile getTernFile(ITernProject project, String name) {
return ternResourcesManagerDelegate.getTernFile(project, name);
}
public ITernFile getTernFile(Object fileObject) {
return ternResourcesManagerDelegate.getTernFile(fileObject);
}
public ITernFileSynchronizer createTernFileSynchronizer(ITernProject project) {
return ternResourcesManagerDelegate.createTernFileSynchronizer(project);
}
public void setTernResourcesManagerDelegate(
ITernResourcesManagerDelegate ternResourcesFactory) {
this.ternResourcesManagerDelegate = ternResourcesFactory;
}
public void setScriptTagRegionProvider(
IScriptTagRegionProvider scriptTagRegionProvider) {
this.scriptTagRegionProvider = scriptTagRegionProvider;
}
public void setDOMProvider(IDOMProvider provider) {
this.provider = provider;
}
public boolean isHTMLFile(Object fileObject) {
return ternResourcesManagerDelegate.isHTMLFile(fileObject);
}
public boolean isJSFile(Object fileObject) {
return ternResourcesManagerDelegate.isJSFile(fileObject);
}
public Document getDocument(ITernFile resource) {
if (provider != null) {
return provider.getDocument(resource);
}
return null;
}
}