<!--
 -
 -  $Id$
 -
 -  This file is part of the OpenLink Software Virtuoso Open-Source (VOS)
 -  project.
 -
 -  Copyright (C) 1998-2018 OpenLink Software
 -
 -  This project is free software; you can redistribute it and/or modify it
 -  under the terms of the GNU General Public License as published by the
 -  Free Software Foundation; only version 2 of the License, dated June 1991.
 -
 -  This program is distributed in the hope that it will be useful, but
 -  WITHOUT ANY WARRANTY; without even the implied warranty of
 -  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 -  General Public License for more details.
 -
 -  You should have received a copy of the GNU General Public License along
 -  with this program; if not, write to the Free Software Foundation, Inc.,
 -  51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 -
 -
-->
<v:page name="blog_home_page"
        xmlns:vm="http://www.openlinksw.com/vspx/ods/"
        xmlns:v="http://www.openlinksw.com/vspx/"
        style="index.xsl"
        doctype="-//W3C//DTD XHTML 1.0 Transitional//EN"
        doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <vm:page>
    <vm:variable name="sparql_rq_del" type="int" default="null" param-name="del" persist="temp"/>
    <v:on-init>
      <![CDATA[
      set isolation = 'uncommitted';
      set http_charset='utf-8';
      ]]>
    </v:on-init>

    <vm:header>
      <vm:title>Search</vm:title>
    </vm:header>
    <vm:pagewrapper>
      <vm:navigation-new on="site"/>
      <vm:subnavigation-new on="site"/>
      <vm:body>
        <v:login name="load_login" realm="wa" mode="url" xmlns:v="http://www.openlinksw.com/vspx/" xmlns:xhtml="http://www.w3.org/1999/xhtml">
          <v:template name='inl' type='if-no-login'/>
        </v:login>
        <v:form name="form1" type="simple" method="POST">
          <table border="0" width="100%" height="100%" cellpadding="0" cellspacing="0">
            <tr valign='top'>
              <td>
                <v:template name="tabTemplate" type="simple">
                  <table cellpadding="0" cellspacing="0" border="0">
                    <colgroup>
                      <col/>
                      <col/>
                      <col/>
                    </colgroup>
                    <tr class="navtab_row">
                      <?vsp
                      {
                        declare pg int;
                        pg := 4;
                      ?>
                      <td class="<?V case when pg = 1 then 'navtab_sel' else 'navtab' end ?>" align="center" nowrap="1">
                        <v:url name="b_url21" value="Free Text" format="%s" url="--sprintf('search.vspx?page=1&amp;l=1')" xhtml_class="uddi"/>
                      </td>
                      <td class="<?V case when pg = 2 then 'navtab_sel' else 'navtab' end ?>" align="center" nowrap="1">
                        <v:url name="b_url12" value="Members" format="%s" url="--sprintf('search.vspx?page=2&amp;l=1')" xhtml_class="uddi"/>
                      </td>
                      <!--td class="<?V case when pg = 3 then 'navtab_sel' else 'navtab' end ?>" align="center" nowrap="1">
                      <v:url name="b_url13" value="Network Affiliation" format="%s" url="-#-sprintf('search.vspx?page=3')" xhtml_class="uddi"/>
                       </td-->
                      <td class="<?V case when pg = 4 then 'navtab_sel' else 'navtab' end ?>" align="center" nowrap="1">
                        <v:url name="b_url14" value="SPARQL" format="%s" url="--sprintf('search.vspx?page=4&amp;l=1')" xhtml_class="uddi"/>
                      </td>
                      <td class="page_tab_empty" align="center" width="100%">
                        <table cellpadding="0" cellspacing="0">
                          <tr>
                            <td width="100%" >
                            </td>
                          </tr>
                        </table>
                      </td>
                      <?vsp
                        }
                      ?>
                    </tr>
                  </table>
                </v:template>
                <table class="tab_page">
                  <tr>
                    <td valign="top">
                      <h2>Available stored SPARQL queries</h2>
                      <table border="0" class="listing">
                        <tr class="listing_header_row">
                          <th>Resource Name</th>
                          <th>Action</th>
                        </tr>
                        <?vsp
                          declare usr, pwd varchar;
                          declare N, col, ctr, rc integer;
                          declare searchPath, searchRecursive, searchFilter, searchResult any;

                          if (self.vc_authenticated)
                          {
                            col := DAV_SEARCH_ID ('/DAV/home/'||self.u_name||'/SPARQL/', 'C');
                            pwd := (select pwd_magic_calc (U_NAME, U_PASSWORD, 1) from DB.DBA.SYS_USERS where U_NAME = self.u_name);
                            if (col < 0)
                            {
                              col := DB.DBA.DAV_MAKE_DIR('/DAV/home/'||self.u_name||'/SPARQL/', self.u_id, http_nogroup_gid(), '110110100N');
                            }
                            ctr := 0;
                            if (self.sparql_rq_del is not null)
                            {
                              declare res_path varchar;
                              res_path := (select RES_FULL_PATH from WS.WS.SYS_DAV_RES where RES_ID = self.sparql_rq_del);
                              rc := DAV_DELETE (res_path, 0, self.u_name, pwd);
                              if (rc < 0)
                              {
                                self.vc_is_valid := 0;
                                self.vc_error_message := DAV_PERROR (rc);
                                return;
                              }
                            }
                            usr := self.u_name;
                            searchPath := '/DAV/home/'||self.u_name||'/SPARQL/';
                            searchRecursive := 0;
                          }
                          else
                          {
                            usr := 'dav';
                            pwd := (select pwd_magic_calc (U_NAME, U_PASSWORD, 1) from DB.DBA.SYS_USERS where U_NAME = usr);
                            searchPath := '/DAV/home/';
                            searchRecursive := 1;
                          }
                          searchFilter := vector (vector ('RES_NAME', 'like', '%.rq%' ), vector ('RES_TYPE', 'like', 'application/sparql-query%'));
                          searchResult := DB.DBA.DAV_DIR_FILTER (searchPath, searchRecursive, searchFilter, usr, pwd);

                          for (N := 0; N < length (searchResult); N := N + 1)
                          {
                            if (self.vc_authenticated) {
                              rc := DAV_AUTHENTICATE (searchResult[N][4], 'R', '1__', usr, pwd);
                            } else {
                              rc := searchResult[N][5][6] - ascii('0') - 1;
                              if (rc >= 0)
                              {
                                if (searchResult[N][0] not like ('%/SPARQL/' || searchResult[N][10]))
                                  rc := -1;
                              }
                            }
                            if (rc >= 0)
                            {
                        ?>
                        <tr class="<?V case when mod(ctr, 2) = 0 then 'listing_row_odd' else 'listing_row_even' end ?>">
                          <td>
                            <?V searchResult[N][10] ?>
                          </td>
                          <td>
                            <a href="search.vspx?page=4&amp;l=1&amp;sid=<?V self.sid ?>&amp;realm=<?V self.realm ?>&amp;rq=<?V searchResult[N][4] ?>&amp;rq_res_name=<?V searchResult[N][10] ?>">Load</a>
                            <?vsp
                              if (self.vc_authenticated) {
                            ?>
                            <a href="sparql_load.vspx?sid=<?V self.sid ?>&amp;realm=<?V self.realm ?>&amp;del=<?V searchResult[N][4] ?>">Delete</a>
                            <?vsp
                              }
                            ?>
                          </td>
                        </tr>
                        <?vsp
                              ctr := ctr + 1;
                            }
                          }
                          if (ctr = 0)
                          {
                        ?>
                        <tr>
                           <td colspan="2">Stored queries not found</td>
                        </tr>
                        <tr>
                          <td colspan="2">
                             <v:button name="cancel_bt" action="simple" value="Back">
                               <v:on-post>
                                 <![CDATA[
                                   self.vc_redirect (sprintf ('search.vspx?page=4&l=1&sid=%s&realm=%s', self.sid, self.realm));
                                 ]]>
                               </v:on-post>
                             </v:button>
                          </td>
                        </tr>
                        <?vsp
                          }
                        ?>
                     </table>
                   </td>
                 </tr>
               </table>
             </td>
           </tr>
        </table>
      </v:form>
    </vm:body>
  </vm:pagewrapper>
</vm:page>
</v:page>
