adding basic uis for data browsing
diff --git a/app/config/app.php b/app/config/app.php
index 27f995f..3e1abe2 100755
--- a/app/config/app.php
+++ b/app/config/app.php
@@ -123,6 +123,7 @@
         'Illuminate\Workbench\WorkbenchServiceProvider',
         'Wsis\WsisServiceProvider',
         'Airavata\AiravataServiceProvider',
+        'Airavata\DataManager\DataManagerServiceProvider',
         'Teepluss\Theme\ThemeServiceProvider',
         'GrahamCampbell\Markdown\MarkdownServiceProvider',
     ),
@@ -193,6 +194,7 @@
         'View' => 'Illuminate\Support\Facades\View',
         'WSIS' => 'Wsis\Facades\Wsis',
         'Airavata' => 'Airavata\Facades\Airavata',
+        'DataManager' => 'Airavata\DataManager\Facades\DataManager',
         'Theme' => 'Teepluss\Theme\Facades\Theme',
         'Markdown' => 'GrahamCampbell\Markdown\Facades\Markdown',
     ),
diff --git a/app/config/pga_config.php b/app/config/pga_config.php
new file mode 100644
index 0000000..cfdd6b0
--- /dev/null
+++ b/app/config/pga_config.php
@@ -0,0 +1,224 @@
+<?php
+return array(
+    /**
+     * *****************************************************************
+     *  These are WSO2 Identity Server Related Configurations
+     * *****************************************************************
+     */
+
+    'wsis' => [
+
+        /**
+         * Admin Role Name
+         */
+        'admin-role-name' => 'Internal/everyone',
+
+        /**
+         * Read only Admin Role Name
+         */
+        'read-only-admin-role-name' => 'admin-read-only',
+
+        /**
+         * Gateway user role
+         */
+        'user-role-name' => 'airavata-user',
+
+        /**
+         * Tenant Domain
+         */
+        'tenant-domain' => 'master.airavata',
+
+        /**
+         * Tenant admin's username
+         */
+        'admin-username' => 'master',
+
+        /**
+         * Tenant admin's password
+         */
+        'admin-password' => 'master',
+
+        /**
+         * OAuth client key
+         */
+        'oauth-client-key' => 'O3iUdkkVYyHgzWPiVTQpY_tb96Ma',
+
+        /**
+         * OAuth client secret
+         */
+        'oauth-client-secret' => '6Ck1jZoa2oRtrzodSqkUZ2iINkUa',
+
+        /**
+         * Identity server domain
+         */
+        'server' => 'idp.scigap.org',
+
+        /**
+         * Identity server url
+         */
+        'service-url' => 'https://idp.scigap.org:7443/',
+
+        /**
+         * Enable HTTPS server verification
+         */
+        'verify-peer' => true,
+
+        /**
+         * Path to the server certificate file
+         */
+        'cafile-path' => app_path() . '/resources/security/idp_scigap_org.pem',
+
+        /**
+         * Allow self signed server certificates
+         */
+        'allow-self-signed-cert' => false
+    ],
+
+
+    /**
+     * *****************************************************************
+     *  These are Airavata Related Configurations
+     * *****************************************************************
+     */
+    'airavata' => [
+
+        /**
+         * Airavata API server location. Use tls:// as the protocol to
+         * connect TLS enabled Airavata
+         */
+        'airavata-server' => 'gw77.iu.xsede.org',
+
+        /**
+         * Airavata API server port
+         */
+        'airavata-port' => '8930',
+
+        /**
+         * Airavata API server thrift communication timeout
+         */
+        'airavata-timeout' => '1000000',
+
+        /**
+         * Data Manager CPI server host
+         */
+        'data-manager-server' => 'localhost',
+
+        /**
+         * Data Manager CPI server port
+         */
+        'data-manager-port' => '8990',
+
+        /**
+         * Data Manager CPI server thrift communication timeout
+         */
+        'data-manager-timeout' => '1000000',
+
+        /**
+         * PGA Gateway ID
+         */
+        'gateway-id' => 'seagrid',
+
+        /**
+         * Maximum size of a file which is allowed to upload to the server
+         */
+        'server-allowed-file-size' => 64,
+
+        /**
+         * absolute path of the data dir
+         */
+        'experiment-data-absolute-path' => '/Library/WebServer/Documents/experimentData',
+
+        /**
+         * username for the user for accessing the experiment data over ssh
+         */
+        'ssh-user' => 'root',
+
+        /**
+         * Advanced experiments options
+         */
+        'advanced-experiment-options' => '',
+
+        /**
+         * Default queue name
+         */
+        'queue-name' => 'long',
+
+        /**
+         * Default node count
+         */
+        'node-count' => '1',
+
+        /**
+         * Default total core count
+         */
+        'total-cpu-count' => '16',
+
+        /**
+         * Default wall time limit
+         */
+        'wall-time-limit' => '30',
+
+        /**
+         * Enable app-catalog cache
+         */
+        'enable-app-catalog-cache' => true,
+
+        /**
+         * Life time of app catalog data cache in minutes
+         */
+        'app-catalog-cache-duration' => 5,
+
+        /**
+         * Gateway data store resource id
+         */
+         'gateway-data-store-resource-id' => ''
+    ],
+    /**
+     * *****************************************************************
+     *  Portal Related Configurations
+     * *****************************************************************
+     */
+    'portal' => [
+
+        /**
+         * Whether this portal is the super admin portal
+         */
+        'super-admin-portal' => true,
+
+        /**
+         * Set the name of theme in use here
+         */
+        'theme' => 'base',
+
+        /**
+         * Portal titles
+         */
+        'portal-title' => 'Airavata PHP Gateway',
+
+        /**
+         * Email addresses of the portal admins. Portal admins well get email notifications for events
+         * such as new user creation
+         */
+        'admin-emails' => ['eroma.abeysinghe@gmail.com','supun.nakandala@gmail.com'],
+
+        /**
+         * Email account that the portal should login to send emails
+         */
+        'portal-email-username' => 'pga.airavata@gmail.com',
+
+        /**
+         * Password for the portal's email account
+         */
+        'portal-email-password' => 'airavata12',
+
+        /**
+         * SMTP server on which the portal should connect
+         */
+        'portal-smtp-server-host' => 'smtp.gmail.com',
+
+        /**
+         * SMTP server port on which the portal should connect
+         */
+        'portal-smtp-server-port' => '587'
+    ]
+);
diff --git a/app/config/pga_config.php.template b/app/config/pga_config.php.template
index 07520a4..d95a1cb 100644
--- a/app/config/pga_config.php.template
+++ b/app/config/pga_config.php.template
@@ -99,6 +99,21 @@
         'airavata-timeout' => '1000000',
 
         /**
+         * Data Manager CPI server host
+         */
+        'data-manager-server' => 'localhost',
+
+        /**
+         * Data Manager CPI server port
+         */
+        'data-manager-port' => '8990',
+
+        /**
+         * Data Manager CPI server thrift communication timeout
+         */
+        'data-manager-timeout' => '1000000',
+
+        /**
          * PGA Gateway ID
          */
         'gateway-id' => 'default',
diff --git a/app/controllers/DataController.php b/app/controllers/DataController.php
new file mode 100755
index 0000000..285fb74
--- /dev/null
+++ b/app/controllers/DataController.php
@@ -0,0 +1,13 @@
+<?php
+
+class DataController extends BaseController {
+
+	public function browseView()
+	{
+		$metadataModels = DataManager::searchMetadata("scnakandala", "default", "test query");
+		return View::make('data/browse', array("metadataModels" => $metadataModels));
+	}
+
+}
+
+?>
diff --git a/app/libraries/Airavata/Data/Manager/Cpi/DataManagerService.php b/app/libraries/Airavata/Data/Manager/Cpi/DataManagerService.php
new file mode 100644
index 0000000..9c936a1
--- /dev/null
+++ b/app/libraries/Airavata/Data/Manager/Cpi/DataManagerService.php
@@ -0,0 +1,534 @@
+<?php
+namespace Airavata\Data\Manager\Cpi;
+/**
+ * Autogenerated by Thrift Compiler (0.9.3)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+interface DataManagerServiceIf {
+  /**
+   * Query DM server to fetch the CPI version
+   * 
+   * @return string
+   */
+  public function getDMServiceVersion();
+  /**
+   *  * Query the DM server to fetch matching metadata models
+   * *
+   * 
+   * @param string $username
+   * @param string $gatewayId
+   * @param string $searchText
+   * @return \Airavata\Model\Data\Metadata\MetadataModel[]
+   * @throws \Airavata\API\Error\DataManagerServiceException
+   */
+  public function searchMetadata($username, $gatewayId, $searchText);
+}
+
+class DataManagerServiceClient implements \Airavata\Data\Manager\Cpi\DataManagerServiceIf {
+  protected $input_ = null;
+  protected $output_ = null;
+
+  protected $seqid_ = 0;
+
+  public function __construct($input, $output=null) {
+    $this->input_ = $input;
+    $this->output_ = $output ? $output : $input;
+  }
+
+  public function getDMServiceVersion()
+  {
+    $this->send_getDMServiceVersion();
+    return $this->recv_getDMServiceVersion();
+  }
+
+  public function send_getDMServiceVersion()
+  {
+    $args = new \Airavata\Data\Manager\Cpi\DataManagerService_getDMServiceVersion_args();
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'getDMServiceVersion', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('getDMServiceVersion', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_getDMServiceVersion()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\Data\Manager\Cpi\DataManagerService_getDMServiceVersion_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\Data\Manager\Cpi\DataManagerService_getDMServiceVersion_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    throw new \Exception("getDMServiceVersion failed: unknown result");
+  }
+
+  public function searchMetadata($username, $gatewayId, $searchText)
+  {
+    $this->send_searchMetadata($username, $gatewayId, $searchText);
+    return $this->recv_searchMetadata();
+  }
+
+  public function send_searchMetadata($username, $gatewayId, $searchText)
+  {
+    $args = new \Airavata\Data\Manager\Cpi\DataManagerService_searchMetadata_args();
+    $args->username = $username;
+    $args->gatewayId = $gatewayId;
+    $args->searchText = $searchText;
+    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
+    if ($bin_accel)
+    {
+      thrift_protocol_write_binary($this->output_, 'searchMetadata', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
+    }
+    else
+    {
+      $this->output_->writeMessageBegin('searchMetadata', TMessageType::CALL, $this->seqid_);
+      $args->write($this->output_);
+      $this->output_->writeMessageEnd();
+      $this->output_->getTransport()->flush();
+    }
+  }
+
+  public function recv_searchMetadata()
+  {
+    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
+    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\Data\Manager\Cpi\DataManagerService_searchMetadata_result', $this->input_->isStrictRead());
+    else
+    {
+      $rseqid = 0;
+      $fname = null;
+      $mtype = 0;
+
+      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
+      if ($mtype == TMessageType::EXCEPTION) {
+        $x = new TApplicationException();
+        $x->read($this->input_);
+        $this->input_->readMessageEnd();
+        throw $x;
+      }
+      $result = new \Airavata\Data\Manager\Cpi\DataManagerService_searchMetadata_result();
+      $result->read($this->input_);
+      $this->input_->readMessageEnd();
+    }
+    if ($result->success !== null) {
+      return $result->success;
+    }
+    if ($result->dme !== null) {
+      throw $result->dme;
+    }
+    throw new \Exception("searchMetadata failed: unknown result");
+  }
+
+}
+
+// HELPER FUNCTIONS AND STRUCTURES
+
+class DataManagerService_getDMServiceVersion_args {
+  static $_TSPEC;
+
+
+  public function __construct() {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        );
+    }
+  }
+
+  public function getName() {
+    return 'DataManagerService_getDMServiceVersion_args';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('DataManagerService_getDMServiceVersion_args');
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class DataManagerService_getDMServiceVersion_result {
+  static $_TSPEC;
+
+  /**
+   * @var string
+   */
+  public $success = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        0 => array(
+          'var' => 'success',
+          'type' => TType::STRING,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['success'])) {
+        $this->success = $vals['success'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'DataManagerService_getDMServiceVersion_result';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 0:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->success);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('DataManagerService_getDMServiceVersion_result');
+    if ($this->success !== null) {
+      $xfer += $output->writeFieldBegin('success', TType::STRING, 0);
+      $xfer += $output->writeString($this->success);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class DataManagerService_searchMetadata_args {
+  static $_TSPEC;
+
+  /**
+   * @var string
+   */
+  public $username = null;
+  /**
+   * @var string
+   */
+  public $gatewayId = null;
+  /**
+   * @var string
+   */
+  public $searchText = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'username',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'gatewayId',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'searchText',
+          'type' => TType::STRING,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['username'])) {
+        $this->username = $vals['username'];
+      }
+      if (isset($vals['gatewayId'])) {
+        $this->gatewayId = $vals['gatewayId'];
+      }
+      if (isset($vals['searchText'])) {
+        $this->searchText = $vals['searchText'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'DataManagerService_searchMetadata_args';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->username);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->gatewayId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->searchText);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('DataManagerService_searchMetadata_args');
+    if ($this->username !== null) {
+      $xfer += $output->writeFieldBegin('username', TType::STRING, 1);
+      $xfer += $output->writeString($this->username);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->gatewayId !== null) {
+      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 2);
+      $xfer += $output->writeString($this->gatewayId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->searchText !== null) {
+      $xfer += $output->writeFieldBegin('searchText', TType::STRING, 3);
+      $xfer += $output->writeString($this->searchText);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class DataManagerService_searchMetadata_result {
+  static $_TSPEC;
+
+  /**
+   * @var \Airavata\Model\Data\Metadata\MetadataModel[]
+   */
+  public $success = null;
+  /**
+   * @var \Airavata\API\Error\DataManagerServiceException
+   */
+  public $dme = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        0 => array(
+          'var' => 'success',
+          'type' => TType::LST,
+          'etype' => TType::STRUCT,
+          'elem' => array(
+            'type' => TType::STRUCT,
+            'class' => '\Airavata\Model\Data\Metadata\MetadataModel',
+            ),
+          ),
+        1 => array(
+          'var' => 'dme',
+          'type' => TType::STRUCT,
+          'class' => '\Airavata\API\Error\DataManagerServiceException',
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['success'])) {
+        $this->success = $vals['success'];
+      }
+      if (isset($vals['dme'])) {
+        $this->dme = $vals['dme'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'DataManagerService_searchMetadata_result';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 0:
+          if ($ftype == TType::LST) {
+            $this->success = array();
+            $_size0 = 0;
+            $_etype3 = 0;
+            $xfer += $input->readListBegin($_etype3, $_size0);
+            for ($_i4 = 0; $_i4 < $_size0; ++$_i4)
+            {
+              $elem5 = null;
+              $elem5 = new \Airavata\Model\Data\Metadata\MetadataModel();
+              $xfer += $elem5->read($input);
+              $this->success []= $elem5;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 1:
+          if ($ftype == TType::STRUCT) {
+            $this->dme = new \Airavata\API\Error\DataManagerServiceException();
+            $xfer += $this->dme->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('DataManagerService_searchMetadata_result');
+    if ($this->success !== null) {
+      if (!is_array($this->success)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('success', TType::LST, 0);
+      {
+        $output->writeListBegin(TType::STRUCT, count($this->success));
+        {
+          foreach ($this->success as $iter6)
+          {
+            $xfer += $iter6->write($output);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->dme !== null) {
+      $xfer += $output->writeFieldBegin('dme', TType::STRUCT, 1);
+      $xfer += $this->dme->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+
diff --git a/app/libraries/Airavata/Data/Manager/Cpi/Types.php b/app/libraries/Airavata/Data/Manager/Cpi/Types.php
new file mode 100644
index 0000000..dc567dd
--- /dev/null
+++ b/app/libraries/Airavata/Data/Manager/Cpi/Types.php
@@ -0,0 +1,28 @@
+<?php
+namespace Airavata\Data\Manager\Cpi;
+
+/**
+ * Autogenerated by Thrift Compiler (0.9.3)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+final class Constant extends \Thrift\Type\TConstant {
+  static protected $DM_CPI_VERSION;
+
+  static protected function init_DM_CPI_VERSION() {
+    return "0.16.0";
+  }
+}
+
+
diff --git a/app/libraries/Airavata/Data/Manager/DataManagerServiceProvider.php b/app/libraries/Airavata/Data/Manager/DataManagerServiceProvider.php
new file mode 100755
index 0000000..b2ae084
--- /dev/null
+++ b/app/libraries/Airavata/Data/Manager/DataManagerServiceProvider.php
@@ -0,0 +1,78 @@
+<?php namespace Airavata\DataManager;
+
+use Illuminate\Routing\UrlGenerator;
+use Illuminate\Support\ServiceProvider;
+use Illuminate\Support\Facades\Config;
+use Airavata\Data\Manager\Cpi;
+use Thrift\Transport\TSocket;
+use Thrift\Protocol\TBinaryProtocol;
+use Illuminate\Routing\Redirector;
+
+class DataManagerServiceProvider extends ServiceProvider {
+
+	/**
+	 * Indicates if loading of the provider is deferred.
+	 *
+	 * @var bool
+	 */
+	protected $defer = false;
+
+    /**
+     * Bootstrap the application events.
+     *
+     * @return void
+     */
+    public function boot()
+    {
+        $this->package('airavata/data-manager');
+    }
+
+	/**
+	 * Register the service provider.
+	 *
+	 * @return void
+	 */
+	public function register()
+	{
+        //registering service provider
+        $this->app['data-manager'] = $this->app->share(function($app)
+        {
+            try{
+                $transport = new TSocket(Config::get('pga_config.airavata')['data-manager-server'], Config::get('pga_config.airavata')['data-manager-port']);
+                $transport->setRecvTimeout(Config::get('pga_config.airavata')['data-manager-timeout']);
+                $transport->setSendTimeout(Config::get('pga_config.airavata')['data-manager-timeout']);
+
+                $protocol = new TBinaryProtocol($transport);
+                $transport->open();
+
+                $client = new Cpi\DataManagerServiceClient($protocol);
+
+            }catch (\Exception $ex){
+                throw new \Exception("Unable to instantiate Data Manager Client", 0,  $ex);
+            }
+
+            if( is_object( $client))
+                return $client;
+            else
+                throw new \Exception("Unable to instantiate Data Manager Client");
+        });
+
+        //registering alias
+        $this->app->booting(function()
+        {
+            $loader = \Illuminate\Foundation\AliasLoader::getInstance();
+            $loader->alias('DataManager', 'Airavata\DataManager\Facades\DataManager');
+        });
+	}
+
+	/**
+	 * Get the services provided by the provider.
+	 *
+	 * @return array
+	 */
+	public function provides()
+	{
+		return array('data-manager');
+	}
+
+}
diff --git a/app/libraries/Airavata/Data/Manager/Facades/DataManager.php b/app/libraries/Airavata/Data/Manager/Facades/DataManager.php
new file mode 100755
index 0000000..0dea04d
--- /dev/null
+++ b/app/libraries/Airavata/Data/Manager/Facades/DataManager.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace Airavata\DataManager\Facades;
+
+use Illuminate\Support\Facades\Facade;
+
+class DataManager extends Facade {
+
+    /**
+     * Get the registered name of the component.
+     *
+     * @return string
+     */
+    protected static function getFacadeAccessor() { return 'data-manager'; }
+
+}
\ No newline at end of file
diff --git a/app/libraries/Airavata/Model/Data/Metadata/Types.php b/app/libraries/Airavata/Model/Data/Metadata/Types.php
new file mode 100644
index 0000000..ccc9ede
--- /dev/null
+++ b/app/libraries/Airavata/Model/Data/Metadata/Types.php
@@ -0,0 +1,440 @@
+<?php
+namespace Airavata\Model\Data\Metadata;
+
+/**
+ * Autogenerated by Thrift Compiler (0.9.3)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+final class MetadataType {
+  const FILE = 0;
+  const COLLECTION = 1;
+  static public $__names = array(
+    0 => 'FILE',
+    1 => 'COLLECTION',
+  );
+}
+
+class MetadataModel {
+  static $_TSPEC;
+
+  /**
+   * @var string
+   */
+  public $metadataId = null;
+  /**
+   * @var string
+   */
+  public $gatewayId = null;
+  /**
+   * @var string
+   */
+  public $username = null;
+  /**
+   * @var double
+   */
+  public $size = null;
+  /**
+   * @var string[]
+   */
+  public $sharedUsers = null;
+  /**
+   * @var bool
+   */
+  public $sharedPublic = null;
+  /**
+   * @var string
+   */
+  public $userFriendlyName = null;
+  /**
+   * @var string
+   */
+  public $userFriendlyDescription = null;
+  /**
+   * @var int
+   */
+  public $metadataType = null;
+  /**
+   * @var string
+   */
+  public $associatedEntityId = null;
+  /**
+   * @var array
+   */
+  public $customInformation = null;
+  /**
+   * @var int
+   */
+  public $creationTime = null;
+  /**
+   * @var int
+   */
+  public $lastModifiedTime = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'metadataId',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'gatewayId',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'username',
+          'type' => TType::STRING,
+          ),
+        4 => array(
+          'var' => 'size',
+          'type' => TType::DOUBLE,
+          ),
+        5 => array(
+          'var' => 'sharedUsers',
+          'type' => TType::LST,
+          'etype' => TType::STRING,
+          'elem' => array(
+            'type' => TType::STRING,
+            ),
+          ),
+        6 => array(
+          'var' => 'sharedPublic',
+          'type' => TType::BOOL,
+          ),
+        7 => array(
+          'var' => 'userFriendlyName',
+          'type' => TType::STRING,
+          ),
+        8 => array(
+          'var' => 'userFriendlyDescription',
+          'type' => TType::STRING,
+          ),
+        9 => array(
+          'var' => 'metadataType',
+          'type' => TType::I32,
+          ),
+        10 => array(
+          'var' => 'associatedEntityId',
+          'type' => TType::STRING,
+          ),
+        11 => array(
+          'var' => 'customInformation',
+          'type' => TType::MAP,
+          'ktype' => TType::STRING,
+          'vtype' => TType::STRING,
+          'key' => array(
+            'type' => TType::STRING,
+          ),
+          'val' => array(
+            'type' => TType::STRING,
+            ),
+          ),
+        12 => array(
+          'var' => 'creationTime',
+          'type' => TType::I64,
+          ),
+        13 => array(
+          'var' => 'lastModifiedTime',
+          'type' => TType::I64,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['metadataId'])) {
+        $this->metadataId = $vals['metadataId'];
+      }
+      if (isset($vals['gatewayId'])) {
+        $this->gatewayId = $vals['gatewayId'];
+      }
+      if (isset($vals['username'])) {
+        $this->username = $vals['username'];
+      }
+      if (isset($vals['size'])) {
+        $this->size = $vals['size'];
+      }
+      if (isset($vals['sharedUsers'])) {
+        $this->sharedUsers = $vals['sharedUsers'];
+      }
+      if (isset($vals['sharedPublic'])) {
+        $this->sharedPublic = $vals['sharedPublic'];
+      }
+      if (isset($vals['userFriendlyName'])) {
+        $this->userFriendlyName = $vals['userFriendlyName'];
+      }
+      if (isset($vals['userFriendlyDescription'])) {
+        $this->userFriendlyDescription = $vals['userFriendlyDescription'];
+      }
+      if (isset($vals['metadataType'])) {
+        $this->metadataType = $vals['metadataType'];
+      }
+      if (isset($vals['associatedEntityId'])) {
+        $this->associatedEntityId = $vals['associatedEntityId'];
+      }
+      if (isset($vals['customInformation'])) {
+        $this->customInformation = $vals['customInformation'];
+      }
+      if (isset($vals['creationTime'])) {
+        $this->creationTime = $vals['creationTime'];
+      }
+      if (isset($vals['lastModifiedTime'])) {
+        $this->lastModifiedTime = $vals['lastModifiedTime'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'MetadataModel';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->metadataId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->gatewayId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->username);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::DOUBLE) {
+            $xfer += $input->readDouble($this->size);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 5:
+          if ($ftype == TType::LST) {
+            $this->sharedUsers = array();
+            $_size0 = 0;
+            $_etype3 = 0;
+            $xfer += $input->readListBegin($_etype3, $_size0);
+            for ($_i4 = 0; $_i4 < $_size0; ++$_i4)
+            {
+              $elem5 = null;
+              $xfer += $input->readString($elem5);
+              $this->sharedUsers []= $elem5;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 6:
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->sharedPublic);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 7:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->userFriendlyName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 8:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->userFriendlyDescription);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 9:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->metadataType);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 10:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->associatedEntityId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 11:
+          if ($ftype == TType::MAP) {
+            $this->customInformation = array();
+            $_size6 = 0;
+            $_ktype7 = 0;
+            $_vtype8 = 0;
+            $xfer += $input->readMapBegin($_ktype7, $_vtype8, $_size6);
+            for ($_i10 = 0; $_i10 < $_size6; ++$_i10)
+            {
+              $key11 = '';
+              $val12 = '';
+              $xfer += $input->readString($key11);
+              $xfer += $input->readString($val12);
+              $this->customInformation[$key11] = $val12;
+            }
+            $xfer += $input->readMapEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 12:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->creationTime);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 13:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->lastModifiedTime);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('MetadataModel');
+    if ($this->metadataId !== null) {
+      $xfer += $output->writeFieldBegin('metadataId', TType::STRING, 1);
+      $xfer += $output->writeString($this->metadataId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->gatewayId !== null) {
+      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 2);
+      $xfer += $output->writeString($this->gatewayId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->username !== null) {
+      $xfer += $output->writeFieldBegin('username', TType::STRING, 3);
+      $xfer += $output->writeString($this->username);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->size !== null) {
+      $xfer += $output->writeFieldBegin('size', TType::DOUBLE, 4);
+      $xfer += $output->writeDouble($this->size);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->sharedUsers !== null) {
+      if (!is_array($this->sharedUsers)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('sharedUsers', TType::LST, 5);
+      {
+        $output->writeListBegin(TType::STRING, count($this->sharedUsers));
+        {
+          foreach ($this->sharedUsers as $iter13)
+          {
+            $xfer += $output->writeString($iter13);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->sharedPublic !== null) {
+      $xfer += $output->writeFieldBegin('sharedPublic', TType::BOOL, 6);
+      $xfer += $output->writeBool($this->sharedPublic);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->userFriendlyName !== null) {
+      $xfer += $output->writeFieldBegin('userFriendlyName', TType::STRING, 7);
+      $xfer += $output->writeString($this->userFriendlyName);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->userFriendlyDescription !== null) {
+      $xfer += $output->writeFieldBegin('userFriendlyDescription', TType::STRING, 8);
+      $xfer += $output->writeString($this->userFriendlyDescription);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->metadataType !== null) {
+      $xfer += $output->writeFieldBegin('metadataType', TType::I32, 9);
+      $xfer += $output->writeI32($this->metadataType);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->associatedEntityId !== null) {
+      $xfer += $output->writeFieldBegin('associatedEntityId', TType::STRING, 10);
+      $xfer += $output->writeString($this->associatedEntityId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->customInformation !== null) {
+      if (!is_array($this->customInformation)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('customInformation', TType::MAP, 11);
+      {
+        $output->writeMapBegin(TType::STRING, TType::STRING, count($this->customInformation));
+        {
+          foreach ($this->customInformation as $kiter14 => $viter15)
+          {
+            $xfer += $output->writeString($kiter14);
+            $xfer += $output->writeString($viter15);
+          }
+        }
+        $output->writeMapEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->creationTime !== null) {
+      $xfer += $output->writeFieldBegin('creationTime', TType::I64, 12);
+      $xfer += $output->writeI64($this->creationTime);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->lastModifiedTime !== null) {
+      $xfer += $output->writeFieldBegin('lastModifiedTime', TType::I64, 13);
+      $xfer += $output->writeI64($this->lastModifiedTime);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+
diff --git a/app/libraries/Airavata/Model/Data/Replica/Types.php b/app/libraries/Airavata/Model/Data/Replica/Types.php
new file mode 100644
index 0000000..38ee07f
--- /dev/null
+++ b/app/libraries/Airavata/Model/Data/Replica/Types.php
@@ -0,0 +1,1028 @@
+<?php
+namespace Airavata\Model\Data\Replica;
+
+/**
+ * Autogenerated by Thrift Compiler (0.9.3)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+final class FileModelType {
+  const FILE = 0;
+  const DIRECTORY = 1;
+  static public $__names = array(
+    0 => 'FILE',
+    1 => 'DIRECTORY',
+  );
+}
+
+final class StorageResourceType {
+  const GATEWAY_DATA_STORE = 0;
+  const BACKUP_GATEWAY_DATA_STORE = 1;
+  const COMPUTE_RESOURCE = 2;
+  const LONG_TERM_STORAGE_RESOURCE = 3;
+  const OTHER = 4;
+  static public $__names = array(
+    0 => 'GATEWAY_DATA_STORE',
+    1 => 'BACKUP_GATEWAY_DATA_STORE',
+    2 => 'COMPUTE_RESOURCE',
+    3 => 'LONG_TERM_STORAGE_RESOURCE',
+    4 => 'OTHER',
+  );
+}
+
+final class ReplicaPersistentType {
+  const TRANSIENT = 0;
+  const PERSISTENT = 1;
+  static public $__names = array(
+    0 => 'TRANSIENT',
+    1 => 'PERSISTENT',
+  );
+}
+
+class FileCollectionModel {
+  static $_TSPEC;
+
+  /**
+   * @var string
+   */
+  public $collectionId = null;
+  /**
+   * @var string
+   */
+  public $gatewayId = null;
+  /**
+   * @var string
+   */
+  public $username = null;
+  /**
+   * @var string[]
+   */
+  public $sharedUsers = null;
+  /**
+   * @var bool
+   */
+  public $sharedPublic = null;
+  /**
+   * @var string
+   */
+  public $collectionName = null;
+  /**
+   * @var string
+   */
+  public $collectionDescription = null;
+  /**
+   * @var string[]
+   */
+  public $fileIdList = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'collectionId',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'gatewayId',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'username',
+          'type' => TType::STRING,
+          ),
+        4 => array(
+          'var' => 'sharedUsers',
+          'type' => TType::LST,
+          'etype' => TType::STRING,
+          'elem' => array(
+            'type' => TType::STRING,
+            ),
+          ),
+        5 => array(
+          'var' => 'sharedPublic',
+          'type' => TType::BOOL,
+          ),
+        6 => array(
+          'var' => 'collectionName',
+          'type' => TType::STRING,
+          ),
+        7 => array(
+          'var' => 'collectionDescription',
+          'type' => TType::STRING,
+          ),
+        8 => array(
+          'var' => 'fileIdList',
+          'type' => TType::LST,
+          'etype' => TType::STRING,
+          'elem' => array(
+            'type' => TType::STRING,
+            ),
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['collectionId'])) {
+        $this->collectionId = $vals['collectionId'];
+      }
+      if (isset($vals['gatewayId'])) {
+        $this->gatewayId = $vals['gatewayId'];
+      }
+      if (isset($vals['username'])) {
+        $this->username = $vals['username'];
+      }
+      if (isset($vals['sharedUsers'])) {
+        $this->sharedUsers = $vals['sharedUsers'];
+      }
+      if (isset($vals['sharedPublic'])) {
+        $this->sharedPublic = $vals['sharedPublic'];
+      }
+      if (isset($vals['collectionName'])) {
+        $this->collectionName = $vals['collectionName'];
+      }
+      if (isset($vals['collectionDescription'])) {
+        $this->collectionDescription = $vals['collectionDescription'];
+      }
+      if (isset($vals['fileIdList'])) {
+        $this->fileIdList = $vals['fileIdList'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'FileCollectionModel';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->collectionId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->gatewayId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->username);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::LST) {
+            $this->sharedUsers = array();
+            $_size0 = 0;
+            $_etype3 = 0;
+            $xfer += $input->readListBegin($_etype3, $_size0);
+            for ($_i4 = 0; $_i4 < $_size0; ++$_i4)
+            {
+              $elem5 = null;
+              $xfer += $input->readString($elem5);
+              $this->sharedUsers []= $elem5;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 5:
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->sharedPublic);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 6:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->collectionName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 7:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->collectionDescription);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 8:
+          if ($ftype == TType::LST) {
+            $this->fileIdList = array();
+            $_size6 = 0;
+            $_etype9 = 0;
+            $xfer += $input->readListBegin($_etype9, $_size6);
+            for ($_i10 = 0; $_i10 < $_size6; ++$_i10)
+            {
+              $elem11 = null;
+              $xfer += $input->readString($elem11);
+              $this->fileIdList []= $elem11;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('FileCollectionModel');
+    if ($this->collectionId !== null) {
+      $xfer += $output->writeFieldBegin('collectionId', TType::STRING, 1);
+      $xfer += $output->writeString($this->collectionId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->gatewayId !== null) {
+      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 2);
+      $xfer += $output->writeString($this->gatewayId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->username !== null) {
+      $xfer += $output->writeFieldBegin('username', TType::STRING, 3);
+      $xfer += $output->writeString($this->username);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->sharedUsers !== null) {
+      if (!is_array($this->sharedUsers)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('sharedUsers', TType::LST, 4);
+      {
+        $output->writeListBegin(TType::STRING, count($this->sharedUsers));
+        {
+          foreach ($this->sharedUsers as $iter12)
+          {
+            $xfer += $output->writeString($iter12);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->sharedPublic !== null) {
+      $xfer += $output->writeFieldBegin('sharedPublic', TType::BOOL, 5);
+      $xfer += $output->writeBool($this->sharedPublic);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->collectionName !== null) {
+      $xfer += $output->writeFieldBegin('collectionName', TType::STRING, 6);
+      $xfer += $output->writeString($this->collectionName);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->collectionDescription !== null) {
+      $xfer += $output->writeFieldBegin('collectionDescription', TType::STRING, 7);
+      $xfer += $output->writeString($this->collectionDescription);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->fileIdList !== null) {
+      if (!is_array($this->fileIdList)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('fileIdList', TType::LST, 8);
+      {
+        $output->writeListBegin(TType::STRING, count($this->fileIdList));
+        {
+          foreach ($this->fileIdList as $iter13)
+          {
+            $xfer += $output->writeString($iter13);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class FileModel {
+  static $_TSPEC;
+
+  /**
+   * @var string
+   */
+  public $fileId = null;
+  /**
+   * @var string
+   */
+  public $gatewayId = null;
+  /**
+   * @var string
+   */
+  public $username = null;
+  /**
+   * @var string[]
+   */
+  public $sharedUsers = null;
+  /**
+   * @var bool
+   */
+  public $sharedPublic = null;
+  /**
+   * @var string
+   */
+  public $fileName = null;
+  /**
+   * @var string
+   */
+  public $fileDescription = null;
+  /**
+   * @var string
+   */
+  public $sha256Checksum = null;
+  /**
+   * @var int
+   */
+  public $fileType = null;
+  /**
+   * @var int
+   */
+  public $fileSize = null;
+  /**
+   * @var string
+   */
+  public $dataType = null;
+  /**
+   * @var int
+   */
+  public $creationTime = null;
+  /**
+   * @var int
+   */
+  public $lastModifiedTime = null;
+  /**
+   * @var \Airavata\Model\Data\Replica\FileReplicaModel[]
+   */
+  public $fileReplicas = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'fileId',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'gatewayId',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'username',
+          'type' => TType::STRING,
+          ),
+        4 => array(
+          'var' => 'sharedUsers',
+          'type' => TType::LST,
+          'etype' => TType::STRING,
+          'elem' => array(
+            'type' => TType::STRING,
+            ),
+          ),
+        5 => array(
+          'var' => 'sharedPublic',
+          'type' => TType::BOOL,
+          ),
+        6 => array(
+          'var' => 'fileName',
+          'type' => TType::STRING,
+          ),
+        7 => array(
+          'var' => 'fileDescription',
+          'type' => TType::STRING,
+          ),
+        8 => array(
+          'var' => 'sha256Checksum',
+          'type' => TType::STRING,
+          ),
+        9 => array(
+          'var' => 'fileType',
+          'type' => TType::I32,
+          ),
+        10 => array(
+          'var' => 'fileSize',
+          'type' => TType::I32,
+          ),
+        11 => array(
+          'var' => 'dataType',
+          'type' => TType::STRING,
+          ),
+        12 => array(
+          'var' => 'creationTime',
+          'type' => TType::I64,
+          ),
+        13 => array(
+          'var' => 'lastModifiedTime',
+          'type' => TType::I64,
+          ),
+        14 => array(
+          'var' => 'fileReplicas',
+          'type' => TType::LST,
+          'etype' => TType::STRUCT,
+          'elem' => array(
+            'type' => TType::STRUCT,
+            'class' => '\Airavata\Model\Data\Replica\FileReplicaModel',
+            ),
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['fileId'])) {
+        $this->fileId = $vals['fileId'];
+      }
+      if (isset($vals['gatewayId'])) {
+        $this->gatewayId = $vals['gatewayId'];
+      }
+      if (isset($vals['username'])) {
+        $this->username = $vals['username'];
+      }
+      if (isset($vals['sharedUsers'])) {
+        $this->sharedUsers = $vals['sharedUsers'];
+      }
+      if (isset($vals['sharedPublic'])) {
+        $this->sharedPublic = $vals['sharedPublic'];
+      }
+      if (isset($vals['fileName'])) {
+        $this->fileName = $vals['fileName'];
+      }
+      if (isset($vals['fileDescription'])) {
+        $this->fileDescription = $vals['fileDescription'];
+      }
+      if (isset($vals['sha256Checksum'])) {
+        $this->sha256Checksum = $vals['sha256Checksum'];
+      }
+      if (isset($vals['fileType'])) {
+        $this->fileType = $vals['fileType'];
+      }
+      if (isset($vals['fileSize'])) {
+        $this->fileSize = $vals['fileSize'];
+      }
+      if (isset($vals['dataType'])) {
+        $this->dataType = $vals['dataType'];
+      }
+      if (isset($vals['creationTime'])) {
+        $this->creationTime = $vals['creationTime'];
+      }
+      if (isset($vals['lastModifiedTime'])) {
+        $this->lastModifiedTime = $vals['lastModifiedTime'];
+      }
+      if (isset($vals['fileReplicas'])) {
+        $this->fileReplicas = $vals['fileReplicas'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'FileModel';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->fileId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->gatewayId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->username);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::LST) {
+            $this->sharedUsers = array();
+            $_size14 = 0;
+            $_etype17 = 0;
+            $xfer += $input->readListBegin($_etype17, $_size14);
+            for ($_i18 = 0; $_i18 < $_size14; ++$_i18)
+            {
+              $elem19 = null;
+              $xfer += $input->readString($elem19);
+              $this->sharedUsers []= $elem19;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 5:
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->sharedPublic);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 6:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->fileName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 7:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->fileDescription);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 8:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->sha256Checksum);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 9:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->fileType);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 10:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->fileSize);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 11:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->dataType);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 12:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->creationTime);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 13:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->lastModifiedTime);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 14:
+          if ($ftype == TType::LST) {
+            $this->fileReplicas = array();
+            $_size20 = 0;
+            $_etype23 = 0;
+            $xfer += $input->readListBegin($_etype23, $_size20);
+            for ($_i24 = 0; $_i24 < $_size20; ++$_i24)
+            {
+              $elem25 = null;
+              $elem25 = new \Airavata\Model\Data\Replica\FileReplicaModel();
+              $xfer += $elem25->read($input);
+              $this->fileReplicas []= $elem25;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('FileModel');
+    if ($this->fileId !== null) {
+      $xfer += $output->writeFieldBegin('fileId', TType::STRING, 1);
+      $xfer += $output->writeString($this->fileId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->gatewayId !== null) {
+      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 2);
+      $xfer += $output->writeString($this->gatewayId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->username !== null) {
+      $xfer += $output->writeFieldBegin('username', TType::STRING, 3);
+      $xfer += $output->writeString($this->username);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->sharedUsers !== null) {
+      if (!is_array($this->sharedUsers)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('sharedUsers', TType::LST, 4);
+      {
+        $output->writeListBegin(TType::STRING, count($this->sharedUsers));
+        {
+          foreach ($this->sharedUsers as $iter26)
+          {
+            $xfer += $output->writeString($iter26);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->sharedPublic !== null) {
+      $xfer += $output->writeFieldBegin('sharedPublic', TType::BOOL, 5);
+      $xfer += $output->writeBool($this->sharedPublic);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->fileName !== null) {
+      $xfer += $output->writeFieldBegin('fileName', TType::STRING, 6);
+      $xfer += $output->writeString($this->fileName);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->fileDescription !== null) {
+      $xfer += $output->writeFieldBegin('fileDescription', TType::STRING, 7);
+      $xfer += $output->writeString($this->fileDescription);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->sha256Checksum !== null) {
+      $xfer += $output->writeFieldBegin('sha256Checksum', TType::STRING, 8);
+      $xfer += $output->writeString($this->sha256Checksum);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->fileType !== null) {
+      $xfer += $output->writeFieldBegin('fileType', TType::I32, 9);
+      $xfer += $output->writeI32($this->fileType);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->fileSize !== null) {
+      $xfer += $output->writeFieldBegin('fileSize', TType::I32, 10);
+      $xfer += $output->writeI32($this->fileSize);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->dataType !== null) {
+      $xfer += $output->writeFieldBegin('dataType', TType::STRING, 11);
+      $xfer += $output->writeString($this->dataType);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->creationTime !== null) {
+      $xfer += $output->writeFieldBegin('creationTime', TType::I64, 12);
+      $xfer += $output->writeI64($this->creationTime);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->lastModifiedTime !== null) {
+      $xfer += $output->writeFieldBegin('lastModifiedTime', TType::I64, 13);
+      $xfer += $output->writeI64($this->lastModifiedTime);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->fileReplicas !== null) {
+      if (!is_array($this->fileReplicas)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('fileReplicas', TType::LST, 14);
+      {
+        $output->writeListBegin(TType::STRUCT, count($this->fileReplicas));
+        {
+          foreach ($this->fileReplicas as $iter27)
+          {
+            $xfer += $iter27->write($output);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class FileReplicaModel {
+  static $_TSPEC;
+
+  /**
+   * @var string
+   */
+  public $replicaName = null;
+  /**
+   * @var string
+   */
+  public $replicaDescription = null;
+  /**
+   * @var string
+   */
+  public $storageHostname = null;
+  /**
+   * @var string
+   */
+  public $storageResourceId = null;
+  /**
+   * @var string
+   */
+  public $filePath = null;
+  /**
+   * @var int
+   */
+  public $creationTime = null;
+  /**
+   * @var int
+   */
+  public $validUntilTime = null;
+  /**
+   * @var int
+   */
+  public $storageResourceType = null;
+  /**
+   * @var int
+   */
+  public $replicaPersistentType = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'replicaName',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'replicaDescription',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'storageHostname',
+          'type' => TType::STRING,
+          ),
+        4 => array(
+          'var' => 'storageResourceId',
+          'type' => TType::STRING,
+          ),
+        5 => array(
+          'var' => 'filePath',
+          'type' => TType::STRING,
+          ),
+        6 => array(
+          'var' => 'creationTime',
+          'type' => TType::I64,
+          ),
+        7 => array(
+          'var' => 'validUntilTime',
+          'type' => TType::I64,
+          ),
+        8 => array(
+          'var' => 'storageResourceType',
+          'type' => TType::I32,
+          ),
+        9 => array(
+          'var' => 'replicaPersistentType',
+          'type' => TType::I32,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['replicaName'])) {
+        $this->replicaName = $vals['replicaName'];
+      }
+      if (isset($vals['replicaDescription'])) {
+        $this->replicaDescription = $vals['replicaDescription'];
+      }
+      if (isset($vals['storageHostname'])) {
+        $this->storageHostname = $vals['storageHostname'];
+      }
+      if (isset($vals['storageResourceId'])) {
+        $this->storageResourceId = $vals['storageResourceId'];
+      }
+      if (isset($vals['filePath'])) {
+        $this->filePath = $vals['filePath'];
+      }
+      if (isset($vals['creationTime'])) {
+        $this->creationTime = $vals['creationTime'];
+      }
+      if (isset($vals['validUntilTime'])) {
+        $this->validUntilTime = $vals['validUntilTime'];
+      }
+      if (isset($vals['storageResourceType'])) {
+        $this->storageResourceType = $vals['storageResourceType'];
+      }
+      if (isset($vals['replicaPersistentType'])) {
+        $this->replicaPersistentType = $vals['replicaPersistentType'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'FileReplicaModel';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->replicaName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->replicaDescription);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->storageHostname);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->storageResourceId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 5:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->filePath);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 6:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->creationTime);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 7:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->validUntilTime);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 8:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->storageResourceType);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 9:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->replicaPersistentType);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('FileReplicaModel');
+    if ($this->replicaName !== null) {
+      $xfer += $output->writeFieldBegin('replicaName', TType::STRING, 1);
+      $xfer += $output->writeString($this->replicaName);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->replicaDescription !== null) {
+      $xfer += $output->writeFieldBegin('replicaDescription', TType::STRING, 2);
+      $xfer += $output->writeString($this->replicaDescription);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->storageHostname !== null) {
+      $xfer += $output->writeFieldBegin('storageHostname', TType::STRING, 3);
+      $xfer += $output->writeString($this->storageHostname);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->storageResourceId !== null) {
+      $xfer += $output->writeFieldBegin('storageResourceId', TType::STRING, 4);
+      $xfer += $output->writeString($this->storageResourceId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->filePath !== null) {
+      $xfer += $output->writeFieldBegin('filePath', TType::STRING, 5);
+      $xfer += $output->writeString($this->filePath);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->creationTime !== null) {
+      $xfer += $output->writeFieldBegin('creationTime', TType::I64, 6);
+      $xfer += $output->writeI64($this->creationTime);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->validUntilTime !== null) {
+      $xfer += $output->writeFieldBegin('validUntilTime', TType::I64, 7);
+      $xfer += $output->writeI64($this->validUntilTime);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->storageResourceType !== null) {
+      $xfer += $output->writeFieldBegin('storageResourceType', TType::I32, 8);
+      $xfer += $output->writeI32($this->storageResourceType);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->replicaPersistentType !== null) {
+      $xfer += $output->writeFieldBegin('replicaPersistentType', TType::I32, 9);
+      $xfer += $output->writeI32($this->replicaPersistentType);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+
diff --git a/app/libraries/Airavata/Model/Data/Resource/Types.php b/app/libraries/Airavata/Model/Data/Resource/Types.php
deleted file mode 100644
index cd5542a..0000000
--- a/app/libraries/Airavata/Model/Data/Resource/Types.php
+++ /dev/null
@@ -1,854 +0,0 @@
-<?php
-namespace Airavata\Model\Data\Resource;
-
-/**
- * Autogenerated by Thrift Compiler (0.9.3)
- *
- * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
- *  @generated
- */
-use Thrift\Base\TBase;
-use Thrift\Type\TType;
-use Thrift\Type\TMessageType;
-use Thrift\Exception\TException;
-use Thrift\Exception\TProtocolException;
-use Thrift\Protocol\TProtocol;
-use Thrift\Protocol\TBinaryProtocolAccelerated;
-use Thrift\Exception\TApplicationException;
-
-
-final class ReplicaLocationCategory {
-  const GATEWAY_DATA_STORE = 0;
-  const COMPUTE_RESOURCE = 1;
-  const LONG_TERM_STORAGE_RESOURCE = 2;
-  const OTHER = 3;
-  static public $__names = array(
-    0 => 'GATEWAY_DATA_STORE',
-    1 => 'COMPUTE_RESOURCE',
-    2 => 'LONG_TERM_STORAGE_RESOURCE',
-    3 => 'OTHER',
-  );
-}
-
-final class ReplicaPersistentType {
-  const TRANSIENT = 0;
-  const PERSISTENT = 1;
-  static public $__names = array(
-    0 => 'TRANSIENT',
-    1 => 'PERSISTENT',
-  );
-}
-
-final class DataResourceType {
-  const COLLECTION = 0;
-  const FILE = 1;
-  static public $__names = array(
-    0 => 'COLLECTION',
-    1 => 'FILE',
-  );
-}
-
-class DataResourceModel {
-  static $_TSPEC;
-
-  /**
-   * @var string
-   */
-  public $resourceId = null;
-  /**
-   * @var string
-   */
-  public $gatewayId = null;
-  /**
-   * @var string
-   */
-  public $parentResourceId = null;
-  /**
-   * @var string
-   */
-  public $resourceName = null;
-  /**
-   * @var string
-   */
-  public $resourceDescription = null;
-  /**
-   * @var string
-   */
-  public $ownerName = null;
-  /**
-   * @var int
-   */
-  public $dataResourceType = null;
-  /**
-   * @var int
-   */
-  public $resourceSize = null;
-  /**
-   * @var int
-   */
-  public $creationTime = null;
-  /**
-   * @var int
-   */
-  public $lastModifiedTime = null;
-  /**
-   * @var array
-   */
-  public $resourceMetadata = null;
-  /**
-   * @var \Airavata\Model\Data\Resource\DataReplicaLocationModel[]
-   */
-  public $replicaLocations = null;
-  /**
-   * @var \Airavata\Model\Data\Resource\DataResourceModel[]
-   */
-  public $childResources = null;
-
-  public function __construct($vals=null) {
-    if (!isset(self::$_TSPEC)) {
-      self::$_TSPEC = array(
-        1 => array(
-          'var' => 'resourceId',
-          'type' => TType::STRING,
-          ),
-        2 => array(
-          'var' => 'gatewayId',
-          'type' => TType::STRING,
-          ),
-        3 => array(
-          'var' => 'parentResourceId',
-          'type' => TType::STRING,
-          ),
-        4 => array(
-          'var' => 'resourceName',
-          'type' => TType::STRING,
-          ),
-        5 => array(
-          'var' => 'resourceDescription',
-          'type' => TType::STRING,
-          ),
-        6 => array(
-          'var' => 'ownerName',
-          'type' => TType::STRING,
-          ),
-        7 => array(
-          'var' => 'dataResourceType',
-          'type' => TType::I32,
-          ),
-        8 => array(
-          'var' => 'resourceSize',
-          'type' => TType::I32,
-          ),
-        9 => array(
-          'var' => 'creationTime',
-          'type' => TType::I64,
-          ),
-        10 => array(
-          'var' => 'lastModifiedTime',
-          'type' => TType::I64,
-          ),
-        11 => array(
-          'var' => 'resourceMetadata',
-          'type' => TType::MAP,
-          'ktype' => TType::STRING,
-          'vtype' => TType::STRING,
-          'key' => array(
-            'type' => TType::STRING,
-          ),
-          'val' => array(
-            'type' => TType::STRING,
-            ),
-          ),
-        12 => array(
-          'var' => 'replicaLocations',
-          'type' => TType::LST,
-          'etype' => TType::STRUCT,
-          'elem' => array(
-            'type' => TType::STRUCT,
-            'class' => '\Airavata\Model\Data\Resource\DataReplicaLocationModel',
-            ),
-          ),
-        13 => array(
-          'var' => 'childResources',
-          'type' => TType::LST,
-          'etype' => TType::STRUCT,
-          'elem' => array(
-            'type' => TType::STRUCT,
-            'class' => '\Airavata\Model\Data\Resource\DataResourceModel',
-            ),
-          ),
-        );
-    }
-    if (is_array($vals)) {
-      if (isset($vals['resourceId'])) {
-        $this->resourceId = $vals['resourceId'];
-      }
-      if (isset($vals['gatewayId'])) {
-        $this->gatewayId = $vals['gatewayId'];
-      }
-      if (isset($vals['parentResourceId'])) {
-        $this->parentResourceId = $vals['parentResourceId'];
-      }
-      if (isset($vals['resourceName'])) {
-        $this->resourceName = $vals['resourceName'];
-      }
-      if (isset($vals['resourceDescription'])) {
-        $this->resourceDescription = $vals['resourceDescription'];
-      }
-      if (isset($vals['ownerName'])) {
-        $this->ownerName = $vals['ownerName'];
-      }
-      if (isset($vals['dataResourceType'])) {
-        $this->dataResourceType = $vals['dataResourceType'];
-      }
-      if (isset($vals['resourceSize'])) {
-        $this->resourceSize = $vals['resourceSize'];
-      }
-      if (isset($vals['creationTime'])) {
-        $this->creationTime = $vals['creationTime'];
-      }
-      if (isset($vals['lastModifiedTime'])) {
-        $this->lastModifiedTime = $vals['lastModifiedTime'];
-      }
-      if (isset($vals['resourceMetadata'])) {
-        $this->resourceMetadata = $vals['resourceMetadata'];
-      }
-      if (isset($vals['replicaLocations'])) {
-        $this->replicaLocations = $vals['replicaLocations'];
-      }
-      if (isset($vals['childResources'])) {
-        $this->childResources = $vals['childResources'];
-      }
-    }
-  }
-
-  public function getName() {
-    return 'DataResourceModel';
-  }
-
-  public function read($input)
-  {
-    $xfer = 0;
-    $fname = null;
-    $ftype = 0;
-    $fid = 0;
-    $xfer += $input->readStructBegin($fname);
-    while (true)
-    {
-      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
-      if ($ftype == TType::STOP) {
-        break;
-      }
-      switch ($fid)
-      {
-        case 1:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->resourceId);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 2:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->gatewayId);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 3:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->parentResourceId);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 4:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->resourceName);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 5:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->resourceDescription);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 6:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->ownerName);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 7:
-          if ($ftype == TType::I32) {
-            $xfer += $input->readI32($this->dataResourceType);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 8:
-          if ($ftype == TType::I32) {
-            $xfer += $input->readI32($this->resourceSize);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 9:
-          if ($ftype == TType::I64) {
-            $xfer += $input->readI64($this->creationTime);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 10:
-          if ($ftype == TType::I64) {
-            $xfer += $input->readI64($this->lastModifiedTime);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 11:
-          if ($ftype == TType::MAP) {
-            $this->resourceMetadata = array();
-            $_size0 = 0;
-            $_ktype1 = 0;
-            $_vtype2 = 0;
-            $xfer += $input->readMapBegin($_ktype1, $_vtype2, $_size0);
-            for ($_i4 = 0; $_i4 < $_size0; ++$_i4)
-            {
-              $key5 = '';
-              $val6 = '';
-              $xfer += $input->readString($key5);
-              $xfer += $input->readString($val6);
-              $this->resourceMetadata[$key5] = $val6;
-            }
-            $xfer += $input->readMapEnd();
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 12:
-          if ($ftype == TType::LST) {
-            $this->replicaLocations = array();
-            $_size7 = 0;
-            $_etype10 = 0;
-            $xfer += $input->readListBegin($_etype10, $_size7);
-            for ($_i11 = 0; $_i11 < $_size7; ++$_i11)
-            {
-              $elem12 = null;
-              $elem12 = new \Airavata\Model\Data\Resource\DataReplicaLocationModel();
-              $xfer += $elem12->read($input);
-              $this->replicaLocations []= $elem12;
-            }
-            $xfer += $input->readListEnd();
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 13:
-          if ($ftype == TType::LST) {
-            $this->childResources = array();
-            $_size13 = 0;
-            $_etype16 = 0;
-            $xfer += $input->readListBegin($_etype16, $_size13);
-            for ($_i17 = 0; $_i17 < $_size13; ++$_i17)
-            {
-              $elem18 = null;
-              $elem18 = new \Airavata\Model\Data\Resource\DataResourceModel();
-              $xfer += $elem18->read($input);
-              $this->childResources []= $elem18;
-            }
-            $xfer += $input->readListEnd();
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        default:
-          $xfer += $input->skip($ftype);
-          break;
-      }
-      $xfer += $input->readFieldEnd();
-    }
-    $xfer += $input->readStructEnd();
-    return $xfer;
-  }
-
-  public function write($output) {
-    $xfer = 0;
-    $xfer += $output->writeStructBegin('DataResourceModel');
-    if ($this->resourceId !== null) {
-      $xfer += $output->writeFieldBegin('resourceId', TType::STRING, 1);
-      $xfer += $output->writeString($this->resourceId);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->gatewayId !== null) {
-      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 2);
-      $xfer += $output->writeString($this->gatewayId);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->parentResourceId !== null) {
-      $xfer += $output->writeFieldBegin('parentResourceId', TType::STRING, 3);
-      $xfer += $output->writeString($this->parentResourceId);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->resourceName !== null) {
-      $xfer += $output->writeFieldBegin('resourceName', TType::STRING, 4);
-      $xfer += $output->writeString($this->resourceName);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->resourceDescription !== null) {
-      $xfer += $output->writeFieldBegin('resourceDescription', TType::STRING, 5);
-      $xfer += $output->writeString($this->resourceDescription);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->ownerName !== null) {
-      $xfer += $output->writeFieldBegin('ownerName', TType::STRING, 6);
-      $xfer += $output->writeString($this->ownerName);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->dataResourceType !== null) {
-      $xfer += $output->writeFieldBegin('dataResourceType', TType::I32, 7);
-      $xfer += $output->writeI32($this->dataResourceType);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->resourceSize !== null) {
-      $xfer += $output->writeFieldBegin('resourceSize', TType::I32, 8);
-      $xfer += $output->writeI32($this->resourceSize);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->creationTime !== null) {
-      $xfer += $output->writeFieldBegin('creationTime', TType::I64, 9);
-      $xfer += $output->writeI64($this->creationTime);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->lastModifiedTime !== null) {
-      $xfer += $output->writeFieldBegin('lastModifiedTime', TType::I64, 10);
-      $xfer += $output->writeI64($this->lastModifiedTime);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->resourceMetadata !== null) {
-      if (!is_array($this->resourceMetadata)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('resourceMetadata', TType::MAP, 11);
-      {
-        $output->writeMapBegin(TType::STRING, TType::STRING, count($this->resourceMetadata));
-        {
-          foreach ($this->resourceMetadata as $kiter19 => $viter20)
-          {
-            $xfer += $output->writeString($kiter19);
-            $xfer += $output->writeString($viter20);
-          }
-        }
-        $output->writeMapEnd();
-      }
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->replicaLocations !== null) {
-      if (!is_array($this->replicaLocations)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('replicaLocations', TType::LST, 12);
-      {
-        $output->writeListBegin(TType::STRUCT, count($this->replicaLocations));
-        {
-          foreach ($this->replicaLocations as $iter21)
-          {
-            $xfer += $iter21->write($output);
-          }
-        }
-        $output->writeListEnd();
-      }
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->childResources !== null) {
-      if (!is_array($this->childResources)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('childResources', TType::LST, 13);
-      {
-        $output->writeListBegin(TType::STRUCT, count($this->childResources));
-        {
-          foreach ($this->childResources as $iter22)
-          {
-            $xfer += $iter22->write($output);
-          }
-        }
-        $output->writeListEnd();
-      }
-      $xfer += $output->writeFieldEnd();
-    }
-    $xfer += $output->writeFieldStop();
-    $xfer += $output->writeStructEnd();
-    return $xfer;
-  }
-
-}
-
-class DataReplicaLocationModel {
-  static $_TSPEC;
-
-  /**
-   * @var string
-   */
-  public $replicaId = null;
-  /**
-   * @var string
-   */
-  public $resourceId = null;
-  /**
-   * @var string
-   */
-  public $replicaName = null;
-  /**
-   * @var string
-   */
-  public $replicaDescription = null;
-  /**
-   * @var int
-   */
-  public $creationTime = null;
-  /**
-   * @var int
-   */
-  public $lastModifiedTime = null;
-  /**
-   * @var int
-   */
-  public $validUntilTime = null;
-  /**
-   * @var int
-   */
-  public $replicaLocationCategory = null;
-  /**
-   * @var int
-   */
-  public $replicaPersistentType = null;
-  /**
-   * @var string
-   */
-  public $storageResourceId = null;
-  /**
-   * @var string
-   */
-  public $fileAbsolutePath = null;
-  /**
-   * @var array
-   */
-  public $replicaMetadata = null;
-
-  public function __construct($vals=null) {
-    if (!isset(self::$_TSPEC)) {
-      self::$_TSPEC = array(
-        1 => array(
-          'var' => 'replicaId',
-          'type' => TType::STRING,
-          ),
-        2 => array(
-          'var' => 'resourceId',
-          'type' => TType::STRING,
-          ),
-        3 => array(
-          'var' => 'replicaName',
-          'type' => TType::STRING,
-          ),
-        4 => array(
-          'var' => 'replicaDescription',
-          'type' => TType::STRING,
-          ),
-        5 => array(
-          'var' => 'creationTime',
-          'type' => TType::I64,
-          ),
-        6 => array(
-          'var' => 'lastModifiedTime',
-          'type' => TType::I64,
-          ),
-        7 => array(
-          'var' => 'validUntilTime',
-          'type' => TType::I64,
-          ),
-        8 => array(
-          'var' => 'replicaLocationCategory',
-          'type' => TType::I32,
-          ),
-        9 => array(
-          'var' => 'replicaPersistentType',
-          'type' => TType::I32,
-          ),
-        10 => array(
-          'var' => 'storageResourceId',
-          'type' => TType::STRING,
-          ),
-        11 => array(
-          'var' => 'fileAbsolutePath',
-          'type' => TType::STRING,
-          ),
-        12 => array(
-          'var' => 'replicaMetadata',
-          'type' => TType::MAP,
-          'ktype' => TType::STRING,
-          'vtype' => TType::STRING,
-          'key' => array(
-            'type' => TType::STRING,
-          ),
-          'val' => array(
-            'type' => TType::STRING,
-            ),
-          ),
-        );
-    }
-    if (is_array($vals)) {
-      if (isset($vals['replicaId'])) {
-        $this->replicaId = $vals['replicaId'];
-      }
-      if (isset($vals['resourceId'])) {
-        $this->resourceId = $vals['resourceId'];
-      }
-      if (isset($vals['replicaName'])) {
-        $this->replicaName = $vals['replicaName'];
-      }
-      if (isset($vals['replicaDescription'])) {
-        $this->replicaDescription = $vals['replicaDescription'];
-      }
-      if (isset($vals['creationTime'])) {
-        $this->creationTime = $vals['creationTime'];
-      }
-      if (isset($vals['lastModifiedTime'])) {
-        $this->lastModifiedTime = $vals['lastModifiedTime'];
-      }
-      if (isset($vals['validUntilTime'])) {
-        $this->validUntilTime = $vals['validUntilTime'];
-      }
-      if (isset($vals['replicaLocationCategory'])) {
-        $this->replicaLocationCategory = $vals['replicaLocationCategory'];
-      }
-      if (isset($vals['replicaPersistentType'])) {
-        $this->replicaPersistentType = $vals['replicaPersistentType'];
-      }
-      if (isset($vals['storageResourceId'])) {
-        $this->storageResourceId = $vals['storageResourceId'];
-      }
-      if (isset($vals['fileAbsolutePath'])) {
-        $this->fileAbsolutePath = $vals['fileAbsolutePath'];
-      }
-      if (isset($vals['replicaMetadata'])) {
-        $this->replicaMetadata = $vals['replicaMetadata'];
-      }
-    }
-  }
-
-  public function getName() {
-    return 'DataReplicaLocationModel';
-  }
-
-  public function read($input)
-  {
-    $xfer = 0;
-    $fname = null;
-    $ftype = 0;
-    $fid = 0;
-    $xfer += $input->readStructBegin($fname);
-    while (true)
-    {
-      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
-      if ($ftype == TType::STOP) {
-        break;
-      }
-      switch ($fid)
-      {
-        case 1:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->replicaId);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 2:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->resourceId);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 3:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->replicaName);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 4:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->replicaDescription);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 5:
-          if ($ftype == TType::I64) {
-            $xfer += $input->readI64($this->creationTime);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 6:
-          if ($ftype == TType::I64) {
-            $xfer += $input->readI64($this->lastModifiedTime);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 7:
-          if ($ftype == TType::I64) {
-            $xfer += $input->readI64($this->validUntilTime);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 8:
-          if ($ftype == TType::I32) {
-            $xfer += $input->readI32($this->replicaLocationCategory);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 9:
-          if ($ftype == TType::I32) {
-            $xfer += $input->readI32($this->replicaPersistentType);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 10:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->storageResourceId);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 11:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->fileAbsolutePath);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 12:
-          if ($ftype == TType::MAP) {
-            $this->replicaMetadata = array();
-            $_size23 = 0;
-            $_ktype24 = 0;
-            $_vtype25 = 0;
-            $xfer += $input->readMapBegin($_ktype24, $_vtype25, $_size23);
-            for ($_i27 = 0; $_i27 < $_size23; ++$_i27)
-            {
-              $key28 = '';
-              $val29 = '';
-              $xfer += $input->readString($key28);
-              $xfer += $input->readString($val29);
-              $this->replicaMetadata[$key28] = $val29;
-            }
-            $xfer += $input->readMapEnd();
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        default:
-          $xfer += $input->skip($ftype);
-          break;
-      }
-      $xfer += $input->readFieldEnd();
-    }
-    $xfer += $input->readStructEnd();
-    return $xfer;
-  }
-
-  public function write($output) {
-    $xfer = 0;
-    $xfer += $output->writeStructBegin('DataReplicaLocationModel');
-    if ($this->replicaId !== null) {
-      $xfer += $output->writeFieldBegin('replicaId', TType::STRING, 1);
-      $xfer += $output->writeString($this->replicaId);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->resourceId !== null) {
-      $xfer += $output->writeFieldBegin('resourceId', TType::STRING, 2);
-      $xfer += $output->writeString($this->resourceId);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->replicaName !== null) {
-      $xfer += $output->writeFieldBegin('replicaName', TType::STRING, 3);
-      $xfer += $output->writeString($this->replicaName);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->replicaDescription !== null) {
-      $xfer += $output->writeFieldBegin('replicaDescription', TType::STRING, 4);
-      $xfer += $output->writeString($this->replicaDescription);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->creationTime !== null) {
-      $xfer += $output->writeFieldBegin('creationTime', TType::I64, 5);
-      $xfer += $output->writeI64($this->creationTime);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->lastModifiedTime !== null) {
-      $xfer += $output->writeFieldBegin('lastModifiedTime', TType::I64, 6);
-      $xfer += $output->writeI64($this->lastModifiedTime);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->validUntilTime !== null) {
-      $xfer += $output->writeFieldBegin('validUntilTime', TType::I64, 7);
-      $xfer += $output->writeI64($this->validUntilTime);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->replicaLocationCategory !== null) {
-      $xfer += $output->writeFieldBegin('replicaLocationCategory', TType::I32, 8);
-      $xfer += $output->writeI32($this->replicaLocationCategory);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->replicaPersistentType !== null) {
-      $xfer += $output->writeFieldBegin('replicaPersistentType', TType::I32, 9);
-      $xfer += $output->writeI32($this->replicaPersistentType);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->storageResourceId !== null) {
-      $xfer += $output->writeFieldBegin('storageResourceId', TType::STRING, 10);
-      $xfer += $output->writeString($this->storageResourceId);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->fileAbsolutePath !== null) {
-      $xfer += $output->writeFieldBegin('fileAbsolutePath', TType::STRING, 11);
-      $xfer += $output->writeString($this->fileAbsolutePath);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->replicaMetadata !== null) {
-      if (!is_array($this->replicaMetadata)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('replicaMetadata', TType::MAP, 12);
-      {
-        $output->writeMapBegin(TType::STRING, TType::STRING, count($this->replicaMetadata));
-        {
-          foreach ($this->replicaMetadata as $kiter30 => $viter31)
-          {
-            $xfer += $output->writeString($kiter30);
-            $xfer += $output->writeString($viter31);
-          }
-        }
-        $output->writeMapEnd();
-      }
-      $xfer += $output->writeFieldEnd();
-    }
-    $xfer += $output->writeFieldStop();
-    $xfer += $output->writeStructEnd();
-    return $xfer;
-  }
-
-}
-
-
diff --git a/app/libraries/Airavata/Model/Data/Transfer/Types.php b/app/libraries/Airavata/Model/Data/Transfer/Types.php
new file mode 100644
index 0000000..e8a211c
--- /dev/null
+++ b/app/libraries/Airavata/Model/Data/Transfer/Types.php
@@ -0,0 +1,890 @@
+<?php
+namespace Airavata\Model\Data\Transfer;
+
+/**
+ * Autogenerated by Thrift Compiler (0.9.3)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+use Thrift\Base\TBase;
+use Thrift\Type\TType;
+use Thrift\Type\TMessageType;
+use Thrift\Exception\TException;
+use Thrift\Exception\TProtocolException;
+use Thrift\Protocol\TProtocol;
+use Thrift\Protocol\TBinaryProtocolAccelerated;
+use Thrift\Exception\TApplicationException;
+
+
+final class StorageResourceProtocol {
+  const SCP = 0;
+  const SFTP = 1;
+  const HTTP = 2;
+  const HTTPS = 3;
+  const GridFTP = 4;
+  const LOCAL = 5;
+  static public $__names = array(
+    0 => 'SCP',
+    1 => 'SFTP',
+    2 => 'HTTP',
+    3 => 'HTTPS',
+    4 => 'GridFTP',
+    5 => 'LOCAL',
+  );
+}
+
+final class LSEntryType {
+  const DIRECTORY = 0;
+  const FILE = 1;
+  static public $__names = array(
+    0 => 'DIRECTORY',
+    1 => 'FILE',
+  );
+}
+
+final class FileTransferMode {
+  const SYNC = 0;
+  const ASYNC = 1;
+  static public $__names = array(
+    0 => 'SYNC',
+    1 => 'ASYNC',
+  );
+}
+
+final class FileTransferStatus {
+  const CREATED = 0;
+  const QUEUED = 1;
+  const RUNNING = 2;
+  const COMPLETED = 3;
+  const FAILED = 4;
+  static public $__names = array(
+    0 => 'CREATED',
+    1 => 'QUEUED',
+    2 => 'RUNNING',
+    3 => 'COMPLETED',
+    4 => 'FAILED',
+  );
+}
+
+class FileTransferRequestModel {
+  static $_TSPEC;
+
+  /**
+   * @var string
+   */
+  public $transferId = null;
+  /**
+   * @var string
+   */
+  public $gatewayId = null;
+  /**
+   * @var string
+   */
+  public $username = null;
+  /**
+   * @var string
+   */
+  public $srcHostname = null;
+  /**
+   * @var string
+   */
+  public $srcLoginName = null;
+  /**
+   * @var int
+   */
+  public $srcPort = null;
+  /**
+   * @var int
+   */
+  public $srcProtocol = null;
+  /**
+   * @var string
+   */
+  public $srcFilePath = null;
+  /**
+   * @var string
+   */
+  public $srcHostCredToken = null;
+  /**
+   * @var string
+   */
+  public $destHostname = null;
+  /**
+   * @var string
+   */
+  public $destLoginName = null;
+  /**
+   * @var int
+   */
+  public $destPort = null;
+  /**
+   * @var int
+   */
+  public $destProtocol = null;
+  /**
+   * @var string
+   */
+  public $destFilePath = null;
+  /**
+   * @var string
+   */
+  public $destHostCredToken = null;
+  /**
+   * @var int
+   */
+  public $fileTransferMode = null;
+  /**
+   * @var int
+   */
+  public $transferStatus = null;
+  /**
+   * @var int
+   */
+  public $fileSize = null;
+  /**
+   * @var int
+   */
+  public $transferTime = null;
+  /**
+   * @var int
+   */
+  public $createdTime = null;
+  /**
+   * @var int
+   */
+  public $lastModifiedType = null;
+  /**
+   * @var string[]
+   */
+  public $callbackEmails = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'transferId',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'gatewayId',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'username',
+          'type' => TType::STRING,
+          ),
+        4 => array(
+          'var' => 'srcHostname',
+          'type' => TType::STRING,
+          ),
+        5 => array(
+          'var' => 'srcLoginName',
+          'type' => TType::STRING,
+          ),
+        6 => array(
+          'var' => 'srcPort',
+          'type' => TType::I64,
+          ),
+        7 => array(
+          'var' => 'srcProtocol',
+          'type' => TType::I32,
+          ),
+        8 => array(
+          'var' => 'srcFilePath',
+          'type' => TType::STRING,
+          ),
+        9 => array(
+          'var' => 'srcHostCredToken',
+          'type' => TType::STRING,
+          ),
+        10 => array(
+          'var' => 'destHostname',
+          'type' => TType::STRING,
+          ),
+        11 => array(
+          'var' => 'destLoginName',
+          'type' => TType::STRING,
+          ),
+        12 => array(
+          'var' => 'destPort',
+          'type' => TType::I64,
+          ),
+        13 => array(
+          'var' => 'destProtocol',
+          'type' => TType::I32,
+          ),
+        14 => array(
+          'var' => 'destFilePath',
+          'type' => TType::STRING,
+          ),
+        15 => array(
+          'var' => 'destHostCredToken',
+          'type' => TType::STRING,
+          ),
+        16 => array(
+          'var' => 'fileTransferMode',
+          'type' => TType::I32,
+          ),
+        17 => array(
+          'var' => 'transferStatus',
+          'type' => TType::I32,
+          ),
+        18 => array(
+          'var' => 'fileSize',
+          'type' => TType::I64,
+          ),
+        19 => array(
+          'var' => 'transferTime',
+          'type' => TType::I64,
+          ),
+        20 => array(
+          'var' => 'createdTime',
+          'type' => TType::I64,
+          ),
+        21 => array(
+          'var' => 'lastModifiedType',
+          'type' => TType::I64,
+          ),
+        22 => array(
+          'var' => 'callbackEmails',
+          'type' => TType::LST,
+          'etype' => TType::STRING,
+          'elem' => array(
+            'type' => TType::STRING,
+            ),
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['transferId'])) {
+        $this->transferId = $vals['transferId'];
+      }
+      if (isset($vals['gatewayId'])) {
+        $this->gatewayId = $vals['gatewayId'];
+      }
+      if (isset($vals['username'])) {
+        $this->username = $vals['username'];
+      }
+      if (isset($vals['srcHostname'])) {
+        $this->srcHostname = $vals['srcHostname'];
+      }
+      if (isset($vals['srcLoginName'])) {
+        $this->srcLoginName = $vals['srcLoginName'];
+      }
+      if (isset($vals['srcPort'])) {
+        $this->srcPort = $vals['srcPort'];
+      }
+      if (isset($vals['srcProtocol'])) {
+        $this->srcProtocol = $vals['srcProtocol'];
+      }
+      if (isset($vals['srcFilePath'])) {
+        $this->srcFilePath = $vals['srcFilePath'];
+      }
+      if (isset($vals['srcHostCredToken'])) {
+        $this->srcHostCredToken = $vals['srcHostCredToken'];
+      }
+      if (isset($vals['destHostname'])) {
+        $this->destHostname = $vals['destHostname'];
+      }
+      if (isset($vals['destLoginName'])) {
+        $this->destLoginName = $vals['destLoginName'];
+      }
+      if (isset($vals['destPort'])) {
+        $this->destPort = $vals['destPort'];
+      }
+      if (isset($vals['destProtocol'])) {
+        $this->destProtocol = $vals['destProtocol'];
+      }
+      if (isset($vals['destFilePath'])) {
+        $this->destFilePath = $vals['destFilePath'];
+      }
+      if (isset($vals['destHostCredToken'])) {
+        $this->destHostCredToken = $vals['destHostCredToken'];
+      }
+      if (isset($vals['fileTransferMode'])) {
+        $this->fileTransferMode = $vals['fileTransferMode'];
+      }
+      if (isset($vals['transferStatus'])) {
+        $this->transferStatus = $vals['transferStatus'];
+      }
+      if (isset($vals['fileSize'])) {
+        $this->fileSize = $vals['fileSize'];
+      }
+      if (isset($vals['transferTime'])) {
+        $this->transferTime = $vals['transferTime'];
+      }
+      if (isset($vals['createdTime'])) {
+        $this->createdTime = $vals['createdTime'];
+      }
+      if (isset($vals['lastModifiedType'])) {
+        $this->lastModifiedType = $vals['lastModifiedType'];
+      }
+      if (isset($vals['callbackEmails'])) {
+        $this->callbackEmails = $vals['callbackEmails'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'FileTransferRequestModel';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->transferId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->gatewayId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->username);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->srcHostname);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 5:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->srcLoginName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 6:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->srcPort);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 7:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->srcProtocol);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 8:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->srcFilePath);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 9:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->srcHostCredToken);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 10:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->destHostname);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 11:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->destLoginName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 12:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->destPort);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 13:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->destProtocol);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 14:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->destFilePath);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 15:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->destHostCredToken);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 16:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->fileTransferMode);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 17:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->transferStatus);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 18:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->fileSize);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 19:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->transferTime);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 20:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->createdTime);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 21:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->lastModifiedType);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 22:
+          if ($ftype == TType::LST) {
+            $this->callbackEmails = array();
+            $_size0 = 0;
+            $_etype3 = 0;
+            $xfer += $input->readListBegin($_etype3, $_size0);
+            for ($_i4 = 0; $_i4 < $_size0; ++$_i4)
+            {
+              $elem5 = null;
+              $xfer += $input->readString($elem5);
+              $this->callbackEmails []= $elem5;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('FileTransferRequestModel');
+    if ($this->transferId !== null) {
+      $xfer += $output->writeFieldBegin('transferId', TType::STRING, 1);
+      $xfer += $output->writeString($this->transferId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->gatewayId !== null) {
+      $xfer += $output->writeFieldBegin('gatewayId', TType::STRING, 2);
+      $xfer += $output->writeString($this->gatewayId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->username !== null) {
+      $xfer += $output->writeFieldBegin('username', TType::STRING, 3);
+      $xfer += $output->writeString($this->username);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->srcHostname !== null) {
+      $xfer += $output->writeFieldBegin('srcHostname', TType::STRING, 4);
+      $xfer += $output->writeString($this->srcHostname);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->srcLoginName !== null) {
+      $xfer += $output->writeFieldBegin('srcLoginName', TType::STRING, 5);
+      $xfer += $output->writeString($this->srcLoginName);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->srcPort !== null) {
+      $xfer += $output->writeFieldBegin('srcPort', TType::I64, 6);
+      $xfer += $output->writeI64($this->srcPort);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->srcProtocol !== null) {
+      $xfer += $output->writeFieldBegin('srcProtocol', TType::I32, 7);
+      $xfer += $output->writeI32($this->srcProtocol);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->srcFilePath !== null) {
+      $xfer += $output->writeFieldBegin('srcFilePath', TType::STRING, 8);
+      $xfer += $output->writeString($this->srcFilePath);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->srcHostCredToken !== null) {
+      $xfer += $output->writeFieldBegin('srcHostCredToken', TType::STRING, 9);
+      $xfer += $output->writeString($this->srcHostCredToken);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->destHostname !== null) {
+      $xfer += $output->writeFieldBegin('destHostname', TType::STRING, 10);
+      $xfer += $output->writeString($this->destHostname);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->destLoginName !== null) {
+      $xfer += $output->writeFieldBegin('destLoginName', TType::STRING, 11);
+      $xfer += $output->writeString($this->destLoginName);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->destPort !== null) {
+      $xfer += $output->writeFieldBegin('destPort', TType::I64, 12);
+      $xfer += $output->writeI64($this->destPort);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->destProtocol !== null) {
+      $xfer += $output->writeFieldBegin('destProtocol', TType::I32, 13);
+      $xfer += $output->writeI32($this->destProtocol);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->destFilePath !== null) {
+      $xfer += $output->writeFieldBegin('destFilePath', TType::STRING, 14);
+      $xfer += $output->writeString($this->destFilePath);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->destHostCredToken !== null) {
+      $xfer += $output->writeFieldBegin('destHostCredToken', TType::STRING, 15);
+      $xfer += $output->writeString($this->destHostCredToken);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->fileTransferMode !== null) {
+      $xfer += $output->writeFieldBegin('fileTransferMode', TType::I32, 16);
+      $xfer += $output->writeI32($this->fileTransferMode);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->transferStatus !== null) {
+      $xfer += $output->writeFieldBegin('transferStatus', TType::I32, 17);
+      $xfer += $output->writeI32($this->transferStatus);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->fileSize !== null) {
+      $xfer += $output->writeFieldBegin('fileSize', TType::I64, 18);
+      $xfer += $output->writeI64($this->fileSize);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->transferTime !== null) {
+      $xfer += $output->writeFieldBegin('transferTime', TType::I64, 19);
+      $xfer += $output->writeI64($this->transferTime);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->createdTime !== null) {
+      $xfer += $output->writeFieldBegin('createdTime', TType::I64, 20);
+      $xfer += $output->writeI64($this->createdTime);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->lastModifiedType !== null) {
+      $xfer += $output->writeFieldBegin('lastModifiedType', TType::I64, 21);
+      $xfer += $output->writeI64($this->lastModifiedType);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->callbackEmails !== null) {
+      if (!is_array($this->callbackEmails)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('callbackEmails', TType::LST, 22);
+      {
+        $output->writeListBegin(TType::STRING, count($this->callbackEmails));
+        {
+          foreach ($this->callbackEmails as $iter6)
+          {
+            $xfer += $output->writeString($iter6);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class LSEntryModel {
+  static $_TSPEC;
+
+  /**
+   * @var int
+   */
+  public $type = null;
+  /**
+   * @var int
+   */
+  public $size = null;
+  /**
+   * @var string
+   */
+  public $nativeType = null;
+  /**
+   * @var string
+   */
+  public $name = null;
+  /**
+   * @var string
+   */
+  public $path = null;
+  /**
+   * @var string
+   */
+  public $storageHostName = null;
+  /**
+   * @var int
+   */
+  public $lastModifiedType = null;
+  /**
+   * @var int
+   */
+  public $createdTime = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'type',
+          'type' => TType::I32,
+          ),
+        2 => array(
+          'var' => 'size',
+          'type' => TType::I64,
+          ),
+        3 => array(
+          'var' => 'nativeType',
+          'type' => TType::STRING,
+          ),
+        4 => array(
+          'var' => 'name',
+          'type' => TType::STRING,
+          ),
+        5 => array(
+          'var' => 'path',
+          'type' => TType::STRING,
+          ),
+        6 => array(
+          'var' => 'storageHostName',
+          'type' => TType::STRING,
+          ),
+        7 => array(
+          'var' => 'lastModifiedType',
+          'type' => TType::I64,
+          ),
+        8 => array(
+          'var' => 'createdTime',
+          'type' => TType::I64,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['type'])) {
+        $this->type = $vals['type'];
+      }
+      if (isset($vals['size'])) {
+        $this->size = $vals['size'];
+      }
+      if (isset($vals['nativeType'])) {
+        $this->nativeType = $vals['nativeType'];
+      }
+      if (isset($vals['name'])) {
+        $this->name = $vals['name'];
+      }
+      if (isset($vals['path'])) {
+        $this->path = $vals['path'];
+      }
+      if (isset($vals['storageHostName'])) {
+        $this->storageHostName = $vals['storageHostName'];
+      }
+      if (isset($vals['lastModifiedType'])) {
+        $this->lastModifiedType = $vals['lastModifiedType'];
+      }
+      if (isset($vals['createdTime'])) {
+        $this->createdTime = $vals['createdTime'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'LSEntryModel';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->type);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->size);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->nativeType);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->name);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 5:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->path);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 6:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->storageHostName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 7:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->lastModifiedType);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 8:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->createdTime);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('LSEntryModel');
+    if ($this->type !== null) {
+      $xfer += $output->writeFieldBegin('type', TType::I32, 1);
+      $xfer += $output->writeI32($this->type);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->size !== null) {
+      $xfer += $output->writeFieldBegin('size', TType::I64, 2);
+      $xfer += $output->writeI64($this->size);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->nativeType !== null) {
+      $xfer += $output->writeFieldBegin('nativeType', TType::STRING, 3);
+      $xfer += $output->writeString($this->nativeType);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->name !== null) {
+      $xfer += $output->writeFieldBegin('name', TType::STRING, 4);
+      $xfer += $output->writeString($this->name);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->path !== null) {
+      $xfer += $output->writeFieldBegin('path', TType::STRING, 5);
+      $xfer += $output->writeString($this->path);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->storageHostName !== null) {
+      $xfer += $output->writeFieldBegin('storageHostName', TType::STRING, 6);
+      $xfer += $output->writeString($this->storageHostName);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->lastModifiedType !== null) {
+      $xfer += $output->writeFieldBegin('lastModifiedType', TType::I64, 7);
+      $xfer += $output->writeI64($this->lastModifiedType);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->createdTime !== null) {
+      $xfer += $output->writeFieldBegin('createdTime', TType::I64, 8);
+      $xfer += $output->writeI64($this->createdTime);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+
diff --git a/app/libraries/CommonUtilities.php b/app/libraries/CommonUtilities.php
index 4c55d7b..d79ee5d 100644
--- a/app/libraries/CommonUtilities.php
+++ b/app/libraries/CommonUtilities.php
@@ -112,6 +112,10 @@
                 (
                     array('label' => 'Create', 'url' => URL::to('/') . '/experiment/create', "nav-active" => "experiment"),
                     array('label' => 'Browse', 'url' => URL::to('/') . '/experiment/browse', "nav-active" => "experiment")
+                ),
+                'Data' => array
+                (
+                    array('label' => 'Browse', 'url' => URL::to('/') . '/data/browse', "nav-active" => "experiment")
                 )
             );
 
diff --git a/app/routes.php b/app/routes.php
index c32dd48..b394190 100755
--- a/app/routes.php
+++ b/app/routes.php
@@ -1,5 +1,11 @@
 <?php
 
+
+/**
+ * Data Manager Related Routes
+ */
+Route::get("data/browse", "DataController@browseView");
+
 /*
 |--------------------------------------------------------------------------
 | Application Routes
diff --git a/app/views/data/browse.blade.php b/app/views/data/browse.blade.php
new file mode 100644
index 0000000..0d92e7c
--- /dev/null
+++ b/app/views/data/browse.blade.php
@@ -0,0 +1,35 @@
+@extends('layout.basic')
+
+@section('page-header')
+    @parent
+@stop
+
+@section('content')
+    <br/>
+    <div class="container" style="max-width: 60%;">
+        @foreach( $metadataModels as $index => $metadataModel )
+        <div>
+            <div><a href="">{{$metadataModel->userFriendlyName}}</a></div>
+            <div>
+
+            </div>
+            <div>
+                <span><a href="">{{$metadataModel->username}}</a></span> |
+                <span>2016-01-05 02:22</span> |
+                <span>ID: {{$metadataModel->metadataId}}</span> |
+                <span>{{$metadataModel->size/1024}} MB</span>
+            </div>
+            <div>Dynamo similar to C2-2, with a stress-free boundaries
+                and a 100km thick thermal layer
+                codBC.txt.in
+                2 0 0 0.129 0.0
+            </div>
+        </div>
+        <hr/>
+        @endforeach
+    </div>
+@stop
+
+@section('scripts')
+    @parent
+@stop
\ No newline at end of file