Package edu.mit.simile.backstage.model.ui.views

Source Code of edu.mit.simile.backstage.model.ui.views.TileView$ViewRenderingCacheableQuery

package edu.mit.simile.backstage.model.ui.views;

import org.mozilla.javascript.Scriptable;
import org.openrdf.model.URI;
import org.openrdf.model.Value;
import org.openrdf.query.BindingSet;
import org.openrdf.query.TupleQuery;
import org.openrdf.query.TupleQueryResult;
import org.openrdf.query.algebra.Var;
import org.openrdf.repository.sail.SailRepositoryConnection;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import edu.mit.simile.backstage.model.Context;
import edu.mit.simile.backstage.model.TupleQueryBuilder;
import edu.mit.simile.backstage.model.data.CacheableQuery;
import edu.mit.simile.backstage.model.data.Database;
import edu.mit.simile.backstage.util.DefaultScriptableObject;
import edu.mit.simile.backstage.util.ScriptableArrayBuilder;

public class TileView extends View {
    protected static Logger _logger = LoggerFactory.getLogger("backstage.views.tile-view");

    public TileView(Context context, String id) {
        super(context, id);
    }

    @Override
    public Scriptable getComponentState() {
        _logger.debug("> getComponentState");
        TupleQueryBuilder builder = new TupleQueryBuilder();
        Var itemVar = getCollection().getRestrictedItems(builder, null);

        String key = "tile-view-rendering:" + builder.getStringSerialization();
        _logger.debug("component: " + key);
        Scriptable result = (Scriptable)
          _context.getDatabase().cacheAndRun(key, new ViewRenderingCacheableQuery(builder, itemVar));
       
        _logger.debug("< getComponentState");
        return result;
    }
   
    protected class ViewRenderingCacheableQuery extends CacheableQuery {
      final TupleQueryBuilder _builder;
      final Var _itemVar;
     
      ViewRenderingCacheableQuery(TupleQueryBuilder builder, Var itemVar) {
        _builder = builder;
        _itemVar = itemVar;
      }
     
    @Override
    protected Object internalRun() {
            _logger.debug("> internalRun");
          Database database = _context.getDatabase();
         
          DefaultScriptableObject result = new DefaultScriptableObject();
          ScriptableArrayBuilder itemIDs = new ScriptableArrayBuilder();
          ScriptableArrayBuilder lenses = new ScriptableArrayBuilder();
         
          int count = 0;
         
          try {
              SailRepositoryConnection connection = (SailRepositoryConnection)
                  database.getRepository().getConnection();
             
              try {
                  TupleQuery query = _builder.makeTupleQuery(_itemVar, connection);
                  TupleQueryResult queryResult = query.evaluate();
                  try {
                      while (queryResult.hasNext()) {
                          BindingSet bindingSet = queryResult.next();
                          Value v = bindingSet.getValue(_itemVar.getName());
                          if (v instanceof URI) {
                              if (count < 20) {
                                String itemID = database.getItemId((URI) v);
                                  itemIDs.add(itemID);
                                  lenses.add(_context.generateLens(itemID));
                              }
                              count++;
                          }
                      }
                  } finally {
                      queryResult.close();
                  }
              } finally {
                  connection.close();
              }
          } catch (Exception e) {
              _logger.error("Error querying for restricted items", e);
          }
         
          result.put("count", result, count);
          result.put("items", result, itemIDs.toArray());
          result.put("lenses", result, lenses.toArray());
     
            _logger.debug("< internalRun");
          return result;
    }
    }
}
TOP

Related Classes of edu.mit.simile.backstage.model.ui.views.TileView$ViewRenderingCacheableQuery

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.