package com.infodesire.v20.datastore;

import com.infodesire.v20.application.Application;
import com.infodesire.v20.datastore.impl.DocumentFinderProperties;
import com.infodesire.v20.document.CollectionDocument;
import com.infodesire.v20.document.Value;
import com.infodesire.v20.scripting.bsh.ContextParameters;

public class ScriptQuery {

  public ScriptQuery( ContextParameters parameters ) throws Exception {
    Application application = parameters.getApplication();
    String cmd = parameters.get( "cmd" );
    if( cmd.equals( "install" ) ) {
      install( application, parameters );
    }
    else {
      perform( application, parameters );
    }
  }


  private void install( Application application, ContextParameters parameters ) {
    DocumentFinderProperties properties = new DocumentFinderProperties();
    parameters.put( "Properties", properties );
    properties.addType( "Employee" );
  }


  private void perform( Application application, ContextParameters parameters ) {
    String filter = null;
    Query query = Query.create( false, "Employee" );
    if( parameters.get( "Context" ) != null ) {
      filter = parameters.get( "Context" ).stringValue( "Text" );
    }
    if( filter != null ) {
      query.add( Query.exp( "Employee", "~", new Value( filter ) ) );
    }
    CollectionDocument result = application.perform( query );
    parameters.put( "result", result );
  }

}
