% ------------------------------------------------------------------ %
%                                                                    %
% Datei:        select.tex                                           %
% Autor:        Oliver Nietsch                                       %
%                                                                    %
% Universitaet Hamburg                                               %
% Fachbereich Informatik                                             %
% Arbeitsbereich DBIS                                                %
%                                                                    %
% Thema: Studienarbeit: "Gateway zwischen dem StP-Repository         %
%                        und Tycoon"                                 %
%                                                                    %
% Inhalt: LaTeX-Dokument: Studienarbeit,                             %
%                         Anhang A.1: StP QRL-Skript Select.qrl      %
%                                                                    %
% Version vom  22. 2.1996                                            %
% ------------------------------------------------------------------ %

\subsection{Skriptdatei Select.qrl}
\label{Ann:Skript}

\begin{scriptsize}
\begin{verbatim}
/* -------------------------------------------------------------------- */
/*      Datei:  Select.qrl                                              */
/*      Autor:  Oliver Nietsch                                          */
/*                                                                      */
/*      Universitaet Hamburg                                            */
/*      Fachbereich Informatik                                          */
/*      Arbeitsbereich DBIS                                             */
/*                                                                      */
/*      Inhalt: StP OMS-Anfragen fuer den Zugriff auf Objekte im StP    */
/*              Repository und zur Ausgabe ihrer Attributwerte          */
/*              hier:   nur exemplarischer Skriptinhalt auf Basis       */
/*                      der StP OMS Schnittstellenfunktionen            */
/*              ProjDir: /local/dbis11/software/StP/Examples            */
/*              System:  email                                          */
/*                                                                      */
/*      Version vom  31. 8.1995                                         */
/* -------------------------------------------------------------------- */

void
main()

{

        // Variablendeklaration fuer alle vorgesehenen PDM-Typen:

        cntx_ref        cntx_ref_var;
        cntx            cntx_var;
        file_hist       file_hist_var;
        file_lock       file_lock_var;
        file            file_var;
        item            item_var;
        link_ref        link_ref_var;
        link            link_var;
        node_ref        node_ref_var;
        node            node_var;
        note            note_var;
        viewpoint       viewpoint_var;


        // Anfragen fuer den Zugriff und zur Ausgabe einiger im 
        // StP Repository abgelegter Werte der PDM-Attribute


        //      1. for_each_in_select Funktion:
        //      -------------------------------

        for_each_in_select("cntx_ref", cntx_ref_var)
        print_line("cntx_ref_id: \"" + cntx_ref_var.id + "\" cntx_id: " +
                cntx_ref_var.cntx_id);

        for_each_in_select("cntx", cntx_var)
        print_line("cntx_id: \"" + cntx_var.id + "\" cntx_name: " +
                cntx_var.name + "\" cntx_type: " + cntx_var.type);
        
        for_each_in_select("file_hist[id >= 59302]", file_hist_var)
        print_line("file_hist_id: \"" + file_hist_var.id + "\" file_id: " +
                file_hist_var.file_id + "\" file_hist_type: " 
                + file_hist_var.type + "\" file_hist_user: "
                + file_hist_var.user);

        for_each_in_select("file_lock", file_lock_var)
        print_line("file_lock_id: \"" + file_lock_var.id 
                + "\" file_lock_file_id: " + file_lock_var.file_id 
                + "\" file_lock_time: " + file_lock_var.time);

        for_each_in_select("file[id = 223]", file_var)
        print_line("file_id: \"" + file_var.id 
                + "\" file_name: " + file_var.name
                + "\" file-annot_file_id: " + file_var.annot_file_id);
        
        for_each_in_select("item[id >= 55183]", item_var)
        print_line("item_id: \"" + item_var.id 
                + "\" item_note_id: " + item_var.note_id 
                + "\" item_obj_id: " + item_var.obj_id);

        for_each_in_select("link_ref[id >= 54300]", link_ref_var)
        print_line("link_ref_id: \"" + link_ref_var.id 
                + "\" link_ref_link_id : " + link_ref_var.link_id
                + "\" from_node_ref_id: " + link_ref_var.from_node_ref_id 
                + "\" to_node_ref_id: "+ link_ref_var.to_node_ref_id);

        for_each_in_select("link[id >= 54400]", link_var)
        print_line("link_id: \"" + link_var.id 
                + "\" from_node_id: " + link_var.from_node_id 
                + "\" to_node_id: " + link_var.to_node_id);

        for_each_in_select("node_ref[id >= 57000]", node_ref_var)
        print_line("node_ref_id: \"" + node_ref_var.id
                + "\" node_id: \"" + node_ref_var.node_id 
                + "\" file_id: " + node_ref_var.file_id);

        for_each_in_select("node[type == OMTEvent]", node_var)
        print_line("Der Node \"" + node_var.name + "\" ist" +
                " vom Typ " + node_var.type + ", node_id: " +
                node_var.id + ", annot_file_id: " + node_var.annot_file_id);

        for_each_in_select("note[type = OMTUseCaseDefinition]", note_var)
        print_line("note_id: \"" + note_var.id 
                + "\" note_type : " + note_var.type
                + "\" note_name: " + note_var.name);

        for_each_in_select("viewpoint[id <= 12299]", viewpoint_var)
        print_line("viewpoint_id: \"" + viewpoint_var.id 
                + "\" node_id : " + viewpoint_var.node_id
                + "\" viewpoint_type: " + viewpoint_var.type 
                + "\" node_ref_id: "+ viewpoint_var.node_ref_id);


        //      2. find_by_query Funktion:
        //      --------------------------

        int id = 14209;

        print(find_by_query("node[id == "+id+"]"));


        //      3. selection_count Funktion:
        //      ----------------------------

        string query;
        int zaehler;

        query = "node[type == OMTEvent && annot_file_id == 0]";
        zaehler = selection_count(query);

        print("Anzahl gefundener Objekte, die vom Type OMTEvent sind" +
                " und den Wert 0 als annot_file_id besitzen: " + zaehler);


        //      4. app_type_print_string Funktion: nicht beruecksichtigt.
        //      ----------------------------------


        //      5. id_list_create Funktion:
        //      ---------------------------

        node aktueller_node;
        
        query = "node[OMTEvent]";

        id_list_create(query, "node_liste");
        for_each_in_select("node[node_liste]", aktueller_node)
        print_line(aktueller_node.type + " " + aktueller_node.name);

        query = "node[node_liste && name$'O*']";
        
        for_each_in_select(query, aktueller_node)  
        print_line(aktueller_node.type + " " + aktueller_node.name);    
        

        //      6. id_list_free Funktion:
        //      -------------------------

        id_list_free("node_liste");


        //      7. list_select Funktion:
        //      ------------------------

        list meine_liste;
        
        meine_liste = list_select("node[OMTEvent && 14209 || 14211]");
        print(meine_liste);


        //      8. set_select Funktion: siehe 7., list_select_Funktion
        //      -----------------------


        //      9. to_oms_string Funktion: nicht beruecksichtigt.
        //      --------------------------

}
\end{verbatim}
\end{scriptsize}
\newpage

\subsection{Aufbereitete Skriptausgabe Select\_Output.txt}
\label{Ann:Skriptausgabe}

\begin{scriptsize}
\begin{verbatim}
/* -------------------------------------------------------------------- */
/*      Datei:  Select_Output.txt                                       */
/*      Autor:  Oliver Nietsch                                          */
/*                                                                      */
/*      Universitaet Hamburg                                            */
/*      Fachbereich Informatik                                          */
/*      Arbeitsbereich DBIS                                             */
/*                                                                      */
/*      Inhalt: Ausgabe des QRL Skripts "Select.qrl"                    */
/*              Ausfuehrung: qrp Select.qrl                             */
/*              ProjDir: /local/dbis11/software/StP/Examples            */
/*              System:  email                                          */
/*                                                                      */
/*      Version vom  31. 8.1995                                         */
/* -------------------------------------------------------------------- */

1. for_each_in_select Funktion:
===============================

cntx_ref_id: "54602" cntx_id: 54601
cntx_ref_id: "54604" cntx_id: 54603

cntx_id: "54601" cntx_name: start input" cntx_type: OMTEventStart
cntx_id: "54603" cntx_name: <= start input + 5 minutes" cntx_type: OMTEventConstraintBefore

file_hist_id: "59302" file_id: 231" file_hist_type: FileView" file_hist_user: gschroed
file_hist_id: "59401" file_id: 223" file_hist_type: FileView" file_hist_user: gschroed
file_hist_id: "59402" file_id: 223" file_hist_type: FileView" file_hist_user: gschroed
file_hist_id: "59501" file_id: 73" file_hist_type: FileView" file_hist_user: gschroed

file_lock: nicht vorhanden.

file_id: "223" file_name: Mailbox" file-annot_file_id: 0

item_id: "55183" item_note_id: 55182" item_obj_id: 4601
item_id: "55188" item_note_id: 32202" item_obj_id: 3701
item_id: "55190" item_note_id: 55189" item_obj_id: 3701

link_ref_id: "54301" link_ref_link_id : 54206" from_node_ref_id: 37302" to_node_ref_id: 37301
link_ref_id: "54402" link_ref_link_id : 53703" from_node_ref_id: 15004" to_node_ref_id: 15005
link_ref_id: "54404" link_ref_link_id : 54403" from_node_ref_id: 15004" to_node_ref_id: 15005

link_id: "54403" from_node_id: 402" to_node_id: 301
link_id: "59202" from_node_id: 4001" to_node_id: 401
link_id: "59203" from_node_id: 401" to_node_id: 4001

node_ref_id: "57001" node_id: "7202" file_id: 141
node_ref_id: "57002" node_id: "7204" file_id: 141
node_ref_id: "57003" node_id: "32304" file_id: 141
node_ref_id: "57004" node_id: "3901" file_id: 141

Der Node "send message request" ist vom Typ OMTEvent, node_id: 14209, annot_file_id: 0
Der Node "bad receiver" ist vom Typ OMTEvent, node_id: 14211, annot_file_id: 0
Der Node "create message" ist vom Typ OMTEvent, node_id: 15010, annot_file_id: 0
Der Node "good receiver" ist vom Typ OMTEvent, node_id: 15017, annot_file_id: 0
Der Node "delete message" ist vom Typ OMTEvent, node_id: 15302, annot_file_id: 0
Der Node "create user" ist vom Typ OMTEvent, node_id: 16107, annot_file_id: 0
Der Node "duplicate user" ist vom Typ OMTEvent, node_id: 16109, annot_file_id: 0
Der Node "create message request" ist vom Typ OMTEvent, node_id: 16402, annot_file_id: 0
Der Node "create new user" ist vom Typ OMTEvent, node_id: 16508, annot_file_id: 0
Der Node "create conference" ist vom Typ OMTEvent, node_id: 16707, annot_file_id: 0
Der Node "duplicate conference" ist vom Typ OMTEvent, node_id: 16709, annot_file_id: 0
Der Node "delete user or conference" ist vom Typ OMTEvent, node_id: 17007, annot_file_id: 0
Der Node "bad user or conference" ist vom Typ OMTEvent, node_id: 17009, annot_file_id: 0
Der Node "delete user" ist vom Typ OMTEvent, node_id: 17108, annot_file_id: 0
Der Node "no messages" ist vom Typ OMTEvent, node_id: 17409, annot_file_id: 0
Der Node "bad message number" ist vom Typ OMTEvent, node_id: 17512, annot_file_id: 0
Der Node "show header" ist vom Typ OMTEvent, node_id: 17611, annot_file_id: 0
Der Node "check for empty" ist vom Typ OMTEvent, node_id: 17809, annot_file_id: 0
Der Node "mailbox empty" ist vom Typ OMTEvent, node_id: 17812, annot_file_id: 0
Der Node "messages available" ist vom Typ OMTEvent, node_id: 18112, annot_file_id: 0
Der Node "bad conference" ist vom Typ OMTEvent, node_id: 18209, annot_file_id: 0
Der Node "join conference request" ist vom Typ OMTEvent, node_id: 18306, annot_file_id: 0
Der Node "good conference" ist vom Typ OMTEvent, node_id: 18310, annot_file_id: 0
Der Node "bad user" ist vom Typ OMTEvent, node_id: 18506, annot_file_id: 0
Der Node "login user request" ist vom Typ OMTEvent, node_id: 18601, annot_file_id: 0
Der Node "start" ist vom Typ OMTEvent, node_id: 18706, annot_file_id: 0
Der Node "quit request" ist vom Typ OMTEvent, node_id: 18809, annot_file_id: 0
Der Node "user logged out" ist vom Typ OMTEvent, node_id: 18903, annot_file_id: 0
Der Node "logout request" ist vom Typ OMTEvent, node_id: 18905, annot_file_id: 0
Der Node "print" ist vom Typ OMTEvent, node_id: 25101, annot_file_id: 0
Der Node "incoming message" ist vom Typ OMTEvent, node_id: 41601, annot_file_id: 0
Der Node "create new conference" ist vom Typ OMTEvent, node_id: 51801, annot_file_id: 0
Der Node "delete conference" ist vom Typ OMTEvent, node_id: 52001, annot_file_id: 0
Der Node "print selected message" ist vom Typ OMTEvent, node_id: 52101, annot_file_id: 0
Der Node "list message headers" ist vom Typ OMTEvent, node_id: 52103, annot_file_id: 0
Der Node "send message" ist vom Typ OMTEvent, node_id: 52401, annot_file_id: 0
Der Node "enter body" ist vom Typ OMTEvent, node_id: 52403, annot_file_id: 0
Der Node "read message" ist vom Typ OMTEvent, node_id: 52601, annot_file_id: 0
Der Node "check conference" ist vom Typ OMTEvent, node_id: 53401, annot_file_id: 0
Der Node "add to mailbox" ist vom Typ OMTEvent, node_id: 53601, annot_file_id: 0
Der Node "check user or conference" ist vom Typ OMTEvent, node_id: 53701, annot_file_id: 0

note_id: "38175" note_type : OMTUseCaseDefinition" note_name: 
note_id: "48725" note_type : OMTUseCaseDefinition" note_name: 

viewpoint_id: "12047" node_id : 301" viewpoint_type: AllAggregation" node_ref_id: 12001
viewpoint_id: "12291" node_id : 301" viewpoint_type: AllOperations" node_ref_id: 12117
viewpoint_id: "12292" node_id : 301" viewpoint_type: SubsystemMember" node_ref_id: 12117
viewpoint_id: "12048" node_id : 401" viewpoint_type: AllGeneralization" node_ref_id: 12002
viewpoint_id: "12297" node_id : 401" viewpoint_type: AllOperations" node_ref_id: 12120
viewpoint_id: "12298" node_id : 401" viewpoint_type: SubsystemMember" node_ref_id: 12120
viewpoint_id: "12299" node_id : 402" viewpoint_type: AllOperations" node_ref_id: 12121
viewpoint_id: "12289" node_id : 2501" viewpoint_type: AllOperations" node_ref_id: 12116
viewpoint_id: "12290" node_id : 2501" viewpoint_type: SubsystemMember" node_ref_id: 12116
viewpoint_id: "12295" node_id : 2601" viewpoint_type: AllOperations" node_ref_id: 12119
viewpoint_id: "12296" node_id : 2601" viewpoint_type: SubsystemMember" node_ref_id: 12119
viewpoint_id: "12293" node_id : 3101" viewpoint_type: AllOperations" node_ref_id: 12118
viewpoint_id: "12294" node_id : 3101" viewpoint_type: SubsystemMember" node_ref_id: 12118
viewpoint_id: "12287" node_id : 3701" viewpoint_type: AllOperations" node_ref_id: 12109
viewpoint_id: "12288" node_id : 3701" viewpoint_type: SubsystemMember" node_ref_id: 12109
viewpoint_id: "12049" node_id : 4001" viewpoint_type: AllAggregation" node_ref_id: 12008
viewpoint_id: "12285" node_id : 4001" viewpoint_type: AllOperations" node_ref_id: 12108
viewpoint_id: "12286" node_id : 4001" viewpoint_type: SubsystemMember" node_ref_id: 12108
viewpoint_id: "12283" node_id : 4601" viewpoint_type: AllOperations" node_ref_id: 12107
viewpoint_id: "12284" node_id : 4601" viewpoint_type: SubsystemMember" node_ref_id: 12107
viewpoint_id: "12281" node_id : 6301" viewpoint_type: AllOperations" node_ref_id: 12106
viewpoint_id: "12282" node_id : 6301" viewpoint_type: SubsystemMember" node_ref_id: 12106
viewpoint_id: "12279" node_id : 8101" viewpoint_type: AllOperations" node_ref_id: 12105
viewpoint_id: "12280" node_id : 8101" viewpoint_type: SubsystemMember" node_ref_id: 12105

2. find_by_query_Funktion:
==========================

{
 id = 14209
 name = send message request
 type = OMTEvent
 scope_node_id = 0
 sig = 
 annot_file_id = 0
}

3. selection_count Funktion:
============================

Anzahl gefundener Objekte, die vom Type OMTEvent sind und den Wert 0 als annot_file_id besitzen: 41

5. id_list_create Funktion:
===========================

OMTEvent send message request
OMTEvent bad receiver
OMTEvent create message
OMTEvent good receiver
OMTEvent delete message
OMTEvent create user
OMTEvent duplicate user
OMTEvent create message request
OMTEvent create new user
OMTEvent create conference
OMTEvent duplicate conference
OMTEvent delete user or conference
OMTEvent bad user or conference
OMTEvent delete user
OMTEvent no messages
OMTEvent bad message number
OMTEvent show header
OMTEvent check for empty
OMTEvent mailbox empty
OMTEvent messages available
OMTEvent bad conference
OMTEvent join conference request
OMTEvent good conference
OMTEvent bad user
OMTEvent login user request
OMTEvent start
OMTEvent quit request
OMTEvent user logged out
OMTEvent logout request
OMTEvent print
OMTEvent incoming message
OMTEvent create new conference
OMTEvent delete conference
OMTEvent print selected message
OMTEvent list message headers
OMTEvent send message
OMTEvent enter body
OMTEvent read message
OMTEvent check conference
OMTEvent add to mailbox
OMTEvent check user or conference

7. list_select Funktion:
========================

{
 0 = 
    {
     id = 14209
     name = send message request
     type = OMTEvent
     scope_node_id = 0
     sig = 
     annot_file_id = 0
    }
 1 = 
    {
     id = 14211
     name = bad receiver
     type = OMTEvent
     scope_node_id = 0
     sig = 
     annot_file_id = 0
    }
}
\end{verbatim}
\end{scriptsize}
\newpage

\input{api3}
