Package nsf.playground.snippets

Source Code of nsf.playground.snippets.GadgetSnippetImporter

package nsf.playground.snippets;

import lotus.domino.Database;
import lotus.domino.Document;
import nsf.playground.beans.GadgetSnippetBean;

import com.ibm.commons.util.PathUtil;
import com.ibm.commons.util.StringUtil;
import com.ibm.sbt.playground.assets.Asset;
import com.ibm.sbt.playground.assets.AssetNode;
import com.ibm.sbt.playground.assets.Node;
import com.ibm.sbt.playground.assets.NodeFactory;
import com.ibm.sbt.playground.assets.opensocial.GadgetSnippet;
import com.ibm.sbt.playground.assets.opensocial.GadgetSnippetNodeFactory;
import com.ibm.sbt.playground.vfs.VFSFile;

/**
* Class for importing OpenSocial Gadget Snippets.
*
* @author priand
*
*/
public class GadgetSnippetImporter extends AssetImporter {
 
  public static final String TYPE = "gadget";
  public static final String FORM = GadgetSnippetBean.FORM;
 
  public GadgetSnippetImporter(Database db) {
    super(db);
  }
 
  protected String getAssetType() {
    return TYPE;
  }

  protected String getAssetForm() {
    return FORM;
  }

  protected NodeFactory getNodeFactory() {
    return new GadgetSnippetNodeFactory();
  }

  @Override
  protected void saveAsset(ImportSource source, VFSFile root, AssetNode node, Asset asset) throws Exception {
    GadgetSnippet snippet = (GadgetSnippet)asset;
    Document doc = getDatabase().createDocument();
    try {
      // The gadget are actually imported with their directory
      // We adapt the category & unid consequently
      String name = snippet.getTitle();
      if(StringUtil.isEmpty(name)) {
        name = createPrettyName(node.getParent().getName());
      }
      String cat = createPrettyName(node.getParent().getCategory());
      String unid = PathUtil.concat(cat,node.getUnid(),Node.SEPARATOR);
      unid = Node.encodeUnid(unid);
     
      setItemValue(doc,"Form", FORM);
      setItemValue(doc,"Author", doc.getParentDatabase().getParent().getEffectiveUserName()); // Should we make this private (reader field)?
      setItemValue(doc,"Id", unid);
      setItemValue(doc,"Category", cat);
      setItemValue(doc,"Name", name);
      setItemValue(doc,"FilterRuntimes", snippet.getProperty("runtimes"));
      setItemValue(doc,"Description", snippet.getProperty("description"));
      setItemValues(doc,"Tags", snippet.getProperty("tags"));
      setItemValue(doc,"ImportSource", source.getName());
      setItemValueRichText(doc,"Gadget", snippet.getGadgetXml());
      setItemValueRichText(doc,"Html", snippet.getHtml());
      setItemValueRichText(doc,"Css", snippet.getCss());
      setItemValueRichText(doc,"JavaScript", snippet.getJs());
      setItemValueRichText(doc,"Json", snippet.getJson());
      snippet.getProperties().remove("endpoints");
      snippet.getProperties().remove("description");
      setItemValueRichText(doc,"Properties", snippet.getPropertiesAsString());
      setItemValueRichText(doc,"Documentation", snippet.getDocHtml());

      doc.save();
    } finally {
      doc.recycle();
    }
  }
 
  protected String createPrettyName(String s) {
    StringBuilder sb = new StringBuilder();
    boolean cap = true;
    int len = s.length();
    for(int i=0; i<len; i++) {
      char c = s.charAt(i);
      if(c=='_' || c=='-' || c==' ') {
        c = ' '; cap = true;
      } else if(cap && Character.isLetter(c)) {
        c = Character.toUpperCase(c); cap = false;
      }
      sb.append(c);
    }
    return sb.toString();
  }
 
}
TOP

Related Classes of nsf.playground.snippets.GadgetSnippetImporter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.