package nsf.playground.beans;
import lotus.domino.NotesException;
import lotus.domino.ViewEntry;
import com.ibm.commons.util.StringUtil;
import com.ibm.sbt.playground.assets.AssetNode;
import com.ibm.sbt.playground.assets.CategoryNode;
import com.ibm.sbt.playground.assets.RootNode;
import com.ibm.sbt.playground.assets.jssnippets.JSSnippetAssetNode;
import com.ibm.xsp.sbtsdk.servlets.JavaScriptLibraries;
import com.ibm.xsp.sbtsdk.servlets.JavaScriptLibraries.JSLibrary;
/**
* Classes that encapsulates the business logic for a JS snippet.
*
* @author priand
*/
public abstract class JavaScriptSnippetBean extends AssetBean {
public static final String FORM = "JavaScriptSnippet";
public JavaScriptSnippetBean() {
}
public String getDefaultJavaScriptLibrary() {
return JavaScriptLibraries.LIBRARIES[0].getLabel();
}
public String[] getJavaScriptLibraries() {
String[] libs = new String[JavaScriptLibraries.LIBRARIES.length];
for(int i=0; i<libs.length; i++) {
libs[i] = JavaScriptLibraries.LIBRARIES[i].getLabel();
}
return libs;
}
protected String getAssetForm() {
return FORM;
}
protected RootNode readSnippetsNodes() throws NotesException {
this.assetLoaderJavaScriptLibrary = JavaScriptLibraries.getCurrentJavaScriptLibrary();
try {
return super.readSnippetsNodes();
} finally {
this.assetLoaderJavaScriptLibrary = null;
}
}
// Just for readSnippetsNodes
private transient JSLibrary assetLoaderJavaScriptLibrary;
protected boolean acceptAsset(ViewEntry e, String filterRuntimes, String filterLibraries) {
if(!super.acceptAsset(e, filterRuntimes, filterLibraries)) {
return false;
}
// Check for the JavaScript libraries
// The current library should match the properties
if(assetLoaderJavaScriptLibrary!=null && StringUtil.isNotEmpty(filterLibraries)) {
boolean ok = false;
String[] jsl = StringUtil.splitString(filterLibraries, ',', true);
for(int i=0; i<jsl.length; i++) {
String js = jsl[i];
if(assetLoaderJavaScriptLibrary.getTag().startsWith(js)) {
ok = true;
break;
}
}
if(!ok) {
return false;
}
}
// Ok, we want it!
return true;
}
protected AssetNode createAssetNode(String notesUnid, CategoryNode parent, String name, String category, String assetId) {
return new JSSnippetAssetNode(parent,name,category,notesUnid,assetId);
}
}