<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.itcollege.ee/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Rruga</id>
	<title>ICO wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.itcollege.ee/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Rruga"/>
	<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php/Special:Contributions/Rruga"/>
	<updated>2026-05-06T14:33:19Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=33730</id>
		<title>Meeskond &quot;FoodWars&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=33730"/>
		<updated>2011-06-05T18:08:25Z</updated>

		<summary type="html">&lt;p&gt;Rruga: /* Logi */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Idee ==&lt;br /&gt;
Meie tiimil on plaanis teha internetipõhine söökla menüü süsteem (aluseks IT Kolledži kohvik, aga suunitlus selline, et kõik kohvikud/sööklad saaksid teha endale kasutajakonto ja hakata rakendust kasutama), kust saaks jälgida menüüd, mis sööke saab süüa, mis veel järgi on, kasutajatel on ka võimalus sööke hinnata (stiilis &amp;quot;meeldib&amp;quot;, &amp;quot;ei meeldi&amp;quot; nagu Facebook-is).&lt;br /&gt;
&lt;br /&gt;
Kohvikupidaja Teele soovid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* elektroonilisest menüüst asju kustutada, isegi siis kui asja peaks olema teoreetiliselt alles, aga tegelikult on asi otsas.&lt;br /&gt;
* elektrikatkestuse korral jääb menüü püsima. Ta peab teadma hindu mistahes olukorras.&lt;br /&gt;
* menüül näidatakse automaatselt ka ISIC kaardi omanike soodushinnad&lt;br /&gt;
* süsteem toetab ka poole portsjoni müümist.&lt;br /&gt;
&lt;br /&gt;
Linnar Viigi soovid/visioonid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* kõik oleks ka internetist kättesaadav, peale LCD ekraani, mis kajastab menüüd sööklas.&lt;br /&gt;
* aluseks facebook, kus siis söögid oleks nagu facebook-i alateemad.&lt;br /&gt;
* saab sööke hinnata, kommenteerida (täna oli väga maitsev praad).&lt;br /&gt;
* kasutajad saaks vaadata, mis menüüs on (ka järgmisel nädalal) ja mitu portsu veel alles on.&lt;br /&gt;
* kasutajad saaksid välja pakkuda menüüsid.&lt;br /&gt;
* erinevate söögikohtade kasutajad saaksid omavahel muljeid jagada.&lt;br /&gt;
* kuu aja aktiivsemad saavad prii lõuna.&lt;br /&gt;
* mingil ajal võib olla &amp;quot;happy hour&amp;quot; (enne sulgemist saab odavamalt).&lt;br /&gt;
* piiranguks on see, et toitu broneerida ei saa &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vaba tarkvara kasutamise võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Antud projekti puhul oleks võimalik kasutada [http://www.postgresql.org/ PostgreSQL] andmebaasi (vt. lisaks http://en.wikipedia.org/wiki/PostgreSQL ) Microsoft SQL Server&#039;i asemel. See võiks anda kasutajale võimaluse valida .NET ning [http://www.mono-project.com/ Mono] (vt. lisaks http://en.wikipedia.org/wiki/Mono_(software) ) platvormide vahel. Sel viisil oleks kliendil võimalik Microsoft&#039;i platvormi kõrval valida tõenäoliselt soodsam vaba tarkvara platvorm. Andmebaasi lõplik valik pole hetkel veel otsustatud.&lt;br /&gt;
&lt;br /&gt;
== Meeskond ja tööjaotus==&lt;br /&gt;
* Kristjan Stolin - projektijuht, suhtlus kliendiga, XML, wiki, teenuskihtide progemine, rollide halduse lehe progemine&lt;br /&gt;
* Ilmar Telga - XML, kliendiga suhtlus, wiki, teenuskihtide progemine, lõpprakenduste menüüd, login&lt;br /&gt;
* Rauno Rüga - XML, XSLT, andmebaasi loomine, wiki, mobiilirakendus, statistika&lt;br /&gt;
* Lauri Kermas - teenuskihtide ehitamine, wiki, rakenduse rollid ja kasutajad, login, kommenteerimise võimaluste progemine&lt;br /&gt;
&lt;br /&gt;
== XML Fail ==&lt;br /&gt;
=== XML ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Toidud&amp;gt;&lt;br /&gt;
  &amp;lt;Toit&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduNimetus&amp;gt;Viineri kaste&amp;lt;/ToiduNimetus&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduLiik&amp;gt;Praad&amp;lt;/ToiduLiik&amp;gt;&lt;br /&gt;
    &amp;lt;OlemasolevatYhikut&amp;gt;5&amp;lt;/OlemasolevatYhikut&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduKogus&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Poolportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;2011&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;1&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;9&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;15&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;07&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;23&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;        &lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.15&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;0&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;0&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;0&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;00&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;00&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;00&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Täisportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.80&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
    &amp;lt;/ToiduKogus&amp;gt;&lt;br /&gt;
    &amp;lt;Kommentaarid&amp;gt;&lt;br /&gt;
      &amp;lt;Kommentaar&amp;gt;&lt;br /&gt;
        &amp;lt;Saatja&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaNimi&amp;gt;Kristjan&amp;lt;/SaatjaNimi&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaRoll&amp;gt;Tudeng&amp;lt;/SaatjaRoll&amp;gt;&lt;br /&gt;
        &amp;lt;/Saatja&amp;gt;&lt;br /&gt;
        &amp;lt;Sisu&amp;gt;Minu lemmik toit ! Kui algebra tund ei hakkaks, sööks veel 5 portsjonit.&amp;lt;/Sisu&amp;gt;&lt;br /&gt;
      &amp;lt;/Kommentaar&amp;gt;&lt;br /&gt;
    &amp;lt;/Kommentaarid&amp;gt;&lt;br /&gt;
  &amp;lt;/Toit&amp;gt;&lt;br /&gt;
&amp;lt;/Toidud&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kommentaariks siis niipalju, et meie näide on ilma kohviku osata, selleks et näidet mitte liiga suureks ajada.&lt;br /&gt;
&lt;br /&gt;
Ka on meil moment puudu ID väljad, mis on igasugu andmebaasiga suhtlemiseks hädavajalikud, samas siin näidises palju juurde ei anna.&lt;br /&gt;
&lt;br /&gt;
Asja tegemisel avastasime, et põhiliseks arusaamatuse kohaks on toitude erinevad kogused (ehk siis pool portsjonit, suur / väike ja muud võrdlevad ühikud). Esimese võimalusena kaalusime teha lihtsalt täiesti eraldi toidud kõige kohta, stiilis &amp;quot;väike viineripraad&amp;quot; ja &amp;quot;suur viineripraad&amp;quot;. Kahjuks see variant ei kõlbaks eriti hästi, kuna need erinevad portsjonid kasutavad ikkagi samu materjale ja kui me peaks mingi süsteemiga näitama kui palju portsjoneid alles on. Sööklast näiteks pakuti et väike portsjon kasutab materjale kuskil 0.8 suure portsjoni ulatuses, ehk see suhtarv peaks olema kasutaja poolt (kohvikupidaja, restoraniomanik) ise sätitav. &lt;br /&gt;
&lt;br /&gt;
Tänu sellele sai meie süsteemi alustalaks siiski Toit, millel on oma Portsjonid siis erinevate hindade ja soodustustega. Moment pole meil ka Portsjoni XML osas toodud ära seost kogusega. (Kui palju ühe portsjoni lisamine/müümine peaks toidu üldkogust muutma).&lt;br /&gt;
&lt;br /&gt;
Kommenteerida saab meil moment toitu ennast, mitte eraldi portsjonit. Isegi kui kasutajad tahavad lisada kommentaare stiilis &amp;quot;See väike supp oli tõesti väga väike&amp;quot;, ei soovi nad seda ilmselt eraldi portsjoni alla panna. Tulevikus peaks kindlasti olema ka võimalus pigem kommenteerida üldisemalt (Kohvikut ennast, söögipaiku üldse), kui spetsiifilisemalt (Väikse prae kaste lisandi kohta).&lt;br /&gt;
&lt;br /&gt;
=== XML Schema ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Toidud&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Toit&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduNimetus&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;OlemasolevatYhikut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduKogus&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:choice maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;PortsjoniLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;Myygiaeg&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Aasta&amp;quot; type=&amp;quot;xs:unsignedShort&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Kuu&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Paev&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Tund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Minut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Sekund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;ToiduHind&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Eurohind&amp;quot; type=&amp;quot;xs:decimal&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Soodustus&amp;quot;&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseProtsent&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:choice&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Kommentaarid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Saatja&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaNimi&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaRoll&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Sisu&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
  &amp;lt;h2&amp;gt;Kohvikus müüdavad toidud&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr bgcolor=&amp;quot;#9acd32&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Veel alles&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Portsjon&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Müügiaeg&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustuse liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Kommentaar(id)&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;Toidud/Toit&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduNimetus&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduLiik&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;OlemasolevatYhikut&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;PortsjoniLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Paev&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Kuu&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Aasta&amp;quot; /&amp;gt; &amp;amp;nbsp;  &lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Tund&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Minut&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Sekund&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Eurohind&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseProtsent&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Kommentaarid/Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Sisu&amp;quot; /&amp;gt;&amp;amp;nbsp;(&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaRoll&amp;quot; /&amp;gt;&amp;amp;nbsp;&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaNimi&amp;quot; /&amp;gt;)&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XSLT poolt loodud tulemus on järgnev (lisasin veel kaks toitu XML faili, siin wiki lehel on ruumi kokkuhoiuks vaid 1 toit toitude listis):&lt;br /&gt;
[[File:Xslt.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arhitektuur ==&lt;br /&gt;
&lt;br /&gt;
Süsteem oli vahepeal plaanis ehitada kolmekihilise arhitektuuriga ([http://en.wikipedia.org/wiki/Multitier_architecture#Three-tier_architecture Three-tier architecture]). See peaks lihtsustama süsteemi haldamist ja laiendamist tulevikus. Aga kuna selle jaoks otsest vajadust polenud ja oleks vaid süsteemi keeruliseks ajanud, siis loobusime sellest.&lt;br /&gt;
&lt;br /&gt;
[[Image:three-tier.png|thumb|center|alt=Arhitektuuri skeem.|Arhitektuuri skeem.]]&lt;br /&gt;
&lt;br /&gt;
== Veebiteenus ==&lt;br /&gt;
===Andmemudel===&lt;br /&gt;
[[Image:KohvikuAndmemudel.jpg|thumb|right|alt=Kohviku projekti andmemudel|Andmemudel]]&lt;br /&gt;
Enne veebiteenuse meetodite kirjeldamist koostasime andmemudeli. Loodud andmemudeli põhjal lõime andmebaasi vajalike tabelite ja atribuutidega. Andmemudeli peal on rohelisega tähistatud tabelid, mis on oseselt seotud kohviku valdajaga ja mida WPF rakenduse jaoks kindlasti vaja on. Ülejäänud helesinised tabelid on vajalikud kasutajate võimaluste jaoks. Lisaks on andmemudelil kaks tabelit, mis pole teisega seotud, need on süsteemi administraatori jaoks, et oleks ülevaade, mis rakendused teenust enim kasutavad ning mis meetodeid kõige rohkem välja kutsutakse.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Teenuskihis olevad meetodid===&lt;br /&gt;
&lt;br /&gt;
====Kasutajatega seotud meetodid:====&lt;br /&gt;
*SaidiKasutajaLiik() - Tagastab antud kasutaja ID järgi kasutaja liigi nimetuse&lt;br /&gt;
*KustutaSaidiKasutaja() - Kustutab antud kasutaja ID järgi kasutaja tabelis Kasutaja&lt;br /&gt;
*AnnaKoikSaidiKasutajad() - Tagastab kõik kirjed tabelist Kasutaja&lt;br /&gt;
*AnnaKoikKohvikuKasutajad() - Tagastab antud kohviku ID järgi kõik kohviku kasutajad massiivina&lt;br /&gt;
*MuudaSaidiKasutajaLiik() - Muudab antud kasutaja ID järgi kasutaja liigi tabelis Kasutaja&lt;br /&gt;
*KoikLubatudSaidiKasutajaTyybid() - Tagastab andmebaasi kõik võimalikud kohviku kasutaja rollid (id-d ja nimed), muud andmed jäävad tühjaks&lt;br /&gt;
*KoikLubatudKohvikuRollid() - Tagastab andmebaasi kõik võimalikud site kasutaja rollid (id-d ja nimed), kohviku_id jääb tühjaks&lt;br /&gt;
*KasutajaKohvikuRollid() - Tagastab antud kasutaja ID järgi kõik kasutaja rollid kõikides kohvikutes&lt;br /&gt;
*MuudaKohvikuKasutajaRoll() - Muudab antud kasutaja ID ja kohviku ID järgi kasutaja rolli kohvikus, kui rolli pole, siis tekitatakse uus&lt;br /&gt;
*SaidiKasutajaLiikID() - Tagastab antud kasutaja ID järgi kasutaja liigi ID&lt;br /&gt;
*KohvikuKasutajaLiikID() - Tagastab antud kasutaja ID ja kohviku ID järgi kohviku kasutaja rolli ID&lt;br /&gt;
*AnnaKasutajaMeiliAadress() - Tagastab antud kasutaja nime alusel kasutaja meiliaadressi&lt;br /&gt;
*AnnaKasutajaIdJargi() - Tagastab kasutajanime kasutaja ID järgi&lt;br /&gt;
*AuthendiKasutaja() - Autendib kasutaja, õnnestumisel tagastab kasutaja ID, ebaõnnestumisel null &lt;br /&gt;
*RegistreeriKasutaja() - Registreerib kasutaja andmebaasi ja tagastab true kui kasutaja loomine õnnestus&lt;br /&gt;
&lt;br /&gt;
====Menüüga seotud meetodid====&lt;br /&gt;
*LisaArtikkelMenuuse() - Seob menüüartikli ja menüü&lt;br /&gt;
*LisaKohvikuleMenuu() - Seob menüü ja kohviku&lt;br /&gt;
*TagastabMenuuMuutujad() - Tagastab menüü järgi kas inimesel oleks õigust seda muuta&lt;br /&gt;
*KustutaMenuuJaKohvikuSeos() - Kustutab menüü ja kohviku seose&lt;br /&gt;
*LisaUusMenuu() - Teeb uue menüü, seob selle kohvikuga, kui kohviku ID on parameetrina kaasa antud&lt;br /&gt;
*MenuuKohvikuIdJargi() - Tagastab kohviku ID järgi kohviku tänaste või mitte tänaste menüüde ID-de massiivi&lt;br /&gt;
*LisaMenuuArtikkelMenuuse() - Sisestab antud müügiartikli menüüsse, mille ID on menyy_id&lt;br /&gt;
*KustutaMenuuArtikkel() - Kustutab müügiartikli ID ja menüü ID järgi müügiartikli menüüst&lt;br /&gt;
*TagastaMenuuArtiklid() - Tagastab menüü ID järgi menüüs olevad müügiartiklid&lt;br /&gt;
*VahetaMenuuArtiklit() - Muudab antud müügiartikli tabelis Myygiartikkel&lt;br /&gt;
*MenuuNimetus() - Tagastab menüü ID järgi menüü nimetuse&lt;br /&gt;
*AnnaMuugiartiklidMidaMenuusPole() - Tagastab müügiartiklid, mis pole veel menüüs, kus on juba müügiartiklid, mille IDd on antud massiivis&lt;br /&gt;
*AnnaMenuuNimed() - Tagastab kõigi menüüde nimetused tabelis Menyy&lt;br /&gt;
&lt;br /&gt;
====Kohvikutest üldiselt====&lt;br /&gt;
*KohvikuteNimed() - Tagastab kõigi kohvikute nimed massiivina&lt;br /&gt;
*KohvikuNimiIdJargi() - Tagastab antud kohviku ID järgi kohviku nime&lt;br /&gt;
*AnnaKoikOmanikuKohvikud() - Tagastab antud omaniku ID järgi kõik omaniku kohvikute ID-d massiivina&lt;br /&gt;
*Kohvikud() - Tagastab kõik kohvikute kirjed tabelist Kohvik&lt;br /&gt;
*KohvikuteArv() - Tagastab kõigi kohvikute arvu&lt;br /&gt;
*AnnaKaubad() - Tagastab kõik kaubad tabelist Kaup&lt;br /&gt;
*LisaKaup() - Lisab kauba kaupade nimekirja&lt;br /&gt;
*LisaKohvik() - Uue kohviku lisamine&lt;br /&gt;
&lt;br /&gt;
====Kommentaaridega seotud meetodid:====&lt;br /&gt;
*KohvikuKommentaarideArv() - Kohviku kommentaaride arv&lt;br /&gt;
*AnnaKohvikuKommentaarid() - Tagastab kommentaarid lehtede kaupa&lt;br /&gt;
*AnnaKohvikuKommentaar() - Tagastab üksiku kommentaari&lt;br /&gt;
*AnnaKohvikuKommentaarideHinded() - Tagastab kommentaaride jaoks võimalikud hinded koos kirjeldustega&lt;br /&gt;
*LisaKohvikuKommentaar() - Lisab kohviku kommentaari&lt;br /&gt;
*MuudaKohvikuKommentaar() - Muudab kohviku kommentaari&lt;br /&gt;
*MuudaKohvikuKommentaariOlek() - Muudab kohviku kommentaari oleku&lt;br /&gt;
*MuudaKohvikuKommentaariPeidetus() - Muudab kohviku kommentaari peidetust&lt;br /&gt;
&lt;br /&gt;
====Statistikaga seotud meetodid:====&lt;br /&gt;
*StatistikaRakendusteKohtaTana() - Tagastab rakenduse nimed ja nende vastu tehtud päringud tänasel päeval&lt;br /&gt;
*StatistikaRakendusteKohtaViimaneNadal() - Tagastab rakenduse nimed ja nende vastu tehtud päringud viimase nädala jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaSellelKuul() - Tagastab rakenduse nimed ja nende vastu tehtud päringud selle kuu jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaKokku() - Tagastab rakenduse nimed ja nende vastu tehtud päringud kogu aja vältel&lt;br /&gt;
*StatistikaMeetoditeKohtaTana() - Meetod leiab tänase päeva jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaViimaneNadal() - Meetod leiab viimase nädala jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaSellelKuul() - Meetod leiab kuu jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaKokku() - Meetod leiab kogu aja vältel kasutatud meetodid ja paringute arvu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebiteenuse projekti (WCF + andmebaas) saab siit: http://enos.itcollege.ee/~rruga/VRII/Teenusekiht.zip&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : CMS ==&lt;br /&gt;
&lt;br /&gt;
Meie loodud veebirakenduses on realiseeritud järgnevad CMS seotud funktsionaalsused :&lt;br /&gt;
*Kõikide kohvikute lehed on eraldi aadressiga, mis võimaldab eri kohvikud bookmarkida ja facebooki like anda. See on saavutatud tänu ?kohvik=1 aadressiribal, kus parameeteri kohvik number identifitseerib kohviku.&lt;br /&gt;
*Adminni õigustega kasutajal on võimalik lisada uus kohvikuid andembaasi&lt;br /&gt;
*Kohviku omanik saab lisada menüüd, muuta seda ja kustutada&lt;br /&gt;
*Adminnid saavad kasutajaid hallata, määrates nendele rolle, mis omakorda tagab teatud õigused&lt;br /&gt;
*Kohviku omanikud saavad  oma kohviku kasutajaid hallata, määrates neile näiteks müüja või kliendi rolli.&lt;br /&gt;
*Kogu menüü põhineb sitemapil, mille alus on kirjeldatud eraldi sitemap failis, lisaks sellel lisatakse sinna dünaamiselt kohvikud juurde ( mis andmebaasis olemas on )&lt;br /&gt;
*Kohviku omanik saab kohviku lehte isikupärastada tänu richteksti osale, näiteks lisada html osi.&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Veebirakendus ==&lt;br /&gt;
&lt;br /&gt;
Veebiteenust kasutavaks veebirakenduseks on ASP.NET rakendus. &lt;br /&gt;
&lt;br /&gt;
* Esilehel saab otsida kohvikuid või minna kohe huvipakkuva kohviku menüü lehele.&lt;br /&gt;
* Kohviku menüü lehel on näha tänased ja teised menüüd, kohviku lahtioleku aeg. Kui panna veebirakendus internetti, siis on võimalus Facebook-i kaudu kohviku fänniks hakata. Kommenteerimise ja soodustuste osa on veel pooleli.&lt;br /&gt;
* Sisse loginud kohviku omanik saab ka kohviku menüüsid muuta, lisada, kustutada. &lt;br /&gt;
* Kasutajate lehel saab sisse loginud kohviku omanik hallata kohviku kasutajaid.&lt;br /&gt;
* Statistika lehel saab vaadata statistikat teenust kasutanud rakenduste ja kasutatud meetodite kohta. Näeb nii tänase päeva, viimase nädala, selle kuu ja aasta statistikat&lt;br /&gt;
* Kohviku lisamise lehel saab aga admini õigustege kasutaja lisada uue kohviku.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:KohvikuMenuEdit.JPG|800px|Kohviku menüü muutmise leht. ITK kohviku menüüde muutmiseks tuleb logida sisse kasutajaga Ilmar parooliga &amp;quot;ilmar&amp;quot;.]]&lt;br /&gt;
&lt;br /&gt;
Kohviku menüü muutmise leht. ITK kohviku menüüde muutmiseks tuleb logida sisse kasutajaga Ilmar parooliga &amp;quot;ilmar&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Kohviku admin osa nägemiseks võib sisse logida kasutajaga rauno, parool on ka rauno. Sellega saab ligi statistikale ja uue kohviku loomisele.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebirakenduse koos uuendatud teenuskihiga saab siit: http://enos.itcollege.ee/~rruga/VRII/KohvikuProjekt.rar&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Kommentaaride komponent ==&lt;br /&gt;
&lt;br /&gt;
Kommentaaride sisestamiseks ja haldamiseks on loodud iseseisev ning enam jaolt taas kasutatav kommentaaride komponent. Komponent on hetkel realiseeritud ASP&#039;i User Control&#039;ina ja mitte Custom Control&#039;ina, mis vähendab veidi selle üleviidavust teistesse projektidesse. Siiski on selle muutmine ASP&#039;i Custom Control&#039;iks mõningate muudatustega võimalik.&lt;br /&gt;
&lt;br /&gt;
[[Image:comskeem.png|thumb|center|alt=Kommentaari komponendi skeem.|Kommentaari komponendi skeem.]]&lt;br /&gt;
&lt;br /&gt;
Kommentaaride komponent koosneb kahest osast, mis lisatakse lehele, millel vajatakse kommenteerimise funktsionaalsust:&lt;br /&gt;
sisendkontroll - see komponent on vajalik uute kommentaaride sisestamiseks;&lt;br /&gt;
väljundkontroll - antud komponent esitab olemasolevad kommentaarid hulga kaupa.&lt;br /&gt;
&lt;br /&gt;
Mõlemad kommentaari komponendi osad on kasutatavad ka iseseisvalt, kui see peaks vajalik olema. Kommentaari andmeid esitavad need komponendid läbi iseseisvate kommentaarikontrollide, mida võib ühel kontrollil olla ka mitu. Kommentaarikontrollid ei ole võimelised iseseisvalt kommentaaride andmeid hankima ning seepärast tuleb need täita väljapoolt, kas sisend- või väljundkontrollide poolt. Samuti tuleb uue kommentaari loomine läbi viia kommentaarikontrolli väliselt - seda teostabki sisendikontroll. Samas kogu ülejäänud kommentaari haldus, nagu olemasolevate kommentaaride muutmine ning uute olekute seadmine toimub üksnes läbi iseseisvate kommentaarikontrollide, mis sisaldavad täies mahus vastavat funktsionaalsust.&lt;br /&gt;
&lt;br /&gt;
Kommentaaride komponendi kõik kolm osa (sisendkontroll, väljundkontroll ja kommentaarikontroll) suhtlevad teenusekihiga läbi vastava ligipääsuobjekti. Ligipääsuobjekt tegeleb ühenduse ning sellega seonduvate võimalike vigade haldamisega. Kokkuvõtlikult loob see vajaduse korral uue ühenduse, sooritab päringud ning lõpuks sulgeb ühenduse, kui vastav korraldus antakse.&lt;br /&gt;
&lt;br /&gt;
Teenuses on vastavad protseduurid, mida teenusega suhtlemisel välja kutsutakse ning mis teostavad reaalseid muudatusi andmebaasis, seda muidugi vastavalt reeglitele.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus II : Mobiilirakendus ==&lt;br /&gt;
&lt;br /&gt;
Teine rakendus, mis veebiteenuse peale ehitatud sai, oli Windows Phone 7 rakendus. Lühidalt kirjeldades saab peale rakenduse käivitamist näha listi kõikidest olemasolevatest kohvikutest. Kui vajutad mingi kohviku nime peale, avaneb täpsem kirjeldus kohviku kohta, kust näeb lisaks kohviku nimele ka lühikest kirjeldust, tänast lahtiolekuaega ja kohviku aadressit. Samuti on kohviku kirjelduse lehel viide kohviku tänasele menüüle ja kommenteerimisele. Vajutades vaata menüüd nuppu avaneb vaade täna müügis olevatest müügiartiklitest ja nende hinnast, vajutades aga kommenteeri kohvikut nupule avaneb võimalus lisada kohviku kohta kommentaar.&lt;br /&gt;
&lt;br /&gt;
Kokkuvõttev pilt realiseeritud võimalustest:&lt;br /&gt;
&lt;br /&gt;
[[Image:WP7 rakendus.jpg|alt=WP7 rakendus.|WP7 rakenduse võimalused.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mobiilirakenduse saab alla tõmmata siit: http://enos.itcollege.ee/~rruga/VRII/Mobiilirakendus.rar&lt;br /&gt;
&lt;br /&gt;
NB! Et mobiilirakendust proovida ja mõistliku tulemust saada peab teil olema kõige uuem versioon meie projekti teenuskihist ning teenuskiht peab töötama.&lt;br /&gt;
&lt;br /&gt;
== Meeskonna punktide jaotus ==&lt;br /&gt;
Kõigi grupiliikmetega sai arutatud punktide jagamise üle ja ühine arvamus oli, et punktid jaotatakse järgnevalt:&lt;br /&gt;
*Rauno Rüga - 29 punkti&lt;br /&gt;
*Ilmar Telga - 20 punkti&lt;br /&gt;
*Kristjan Stolin - 17 punkti&lt;br /&gt;
*Lauri Kermas - 14 punkti&lt;br /&gt;
&lt;br /&gt;
== Meeskonna kokkuvõttev aruanne ==&lt;br /&gt;
&lt;br /&gt;
=== Mis sai tehtud ? ===&lt;br /&gt;
&lt;br /&gt;
Projektiks valisime ühtse kohvikute süsteemi loomise, et klientidel oleks hea mõnus kohvikute kohta infot vaadata ja samamoodi kohviku omanik saaks menüüd läbi arvuti hallata. Selle jaoks sai valmis tehtud korralik andmemudel, mille põhjal andmebaas genereeritud. Andmebaas olemas, sai hakatud teenuskihti ehitama kõigi vajalike meetoditega rakenduste jaoks. Paralleelselt sai hakatud ka lõpprakendusi tegema, sest nii oli hea arendad, kuna rakendust tehes tekkisid ideed, mis meetodeid oleks vaja, et mingit tegevust läbi viia. Valmis kaks klientrakendust, millest esimene oli põhjalikum asp.net rakendus, mis oli sunatud nii klientidele, kohvikute omanikele kui kogu süsteemi administreerijatele. Teine rakendus, mobiilirakendus, oli väiksema sisuga, rohkem suunatud klientidele, et vaadata infot kohvikute kohta ja kohvikuid kommenteerida.&lt;br /&gt;
&lt;br /&gt;
=== Mida oleks paremini saanud teha ? ===&lt;br /&gt;
Mõtlesime, et mis saab siis, kui kohviku kassa arvutis pole parajasti internetiühendust ja kohvikupidaja tahab muuta menüüd. Selleks tuleb ilmselt kohalikus arvutis salvestada muudetud menüü XML formaadis ning internetiühenduse taastumisel toimuks menüü muutus ka serveris. Küsisime õppejõult nõu, kuidas oleks seda kõige mõistlikum teostada. Õppejõu seisukoht on, et kuna selle probleemi lahendamine väljub aine &amp;quot;Võrgurakendused II&amp;quot; raamidest ja on ajaliselt mahukas ülesanne, siis ei ole mõtet sellega õppetöö raames tegeleda.&lt;br /&gt;
&lt;br /&gt;
=== Mida sai peale viimast esitlust veel täiendatud ?  ===&lt;br /&gt;
&lt;br /&gt;
*ASP.NET rakendusel sai statistika charte sipakene väiksemaks tehtud, et nad näeksid paremad välja ja korraga ekraanil oleks näha nii päeva, nädala, kuu kui ka kogu aja jaotus (loomulikult normaalse suurusega ekraani puhul)&lt;br /&gt;
*Mobiilirakenduses menüü kuvamine korralikumaks (toit ja hind palkirjad juurde)&lt;br /&gt;
*Mobiilirakenduses kommenteerija nimi salvestatakse mobiili mällu, niiet kommenteerima tulles on kohe nime lahtris oma nimi alati olemas&lt;br /&gt;
&lt;br /&gt;
(Täiendused on olemas ka juba projekti rar failidel, millele siin wikis viited on)&lt;br /&gt;
&lt;br /&gt;
=== Õpitud teadmised / omandatud kogemused ===&lt;br /&gt;
&lt;br /&gt;
* XML, XSLT koostamine&lt;br /&gt;
* Teenuskihi ehitamine ja selle ühildamine nii andmebaasi kui rakendustega&lt;br /&gt;
* Rakenduste ehitamine teenuskihi peale&lt;br /&gt;
* Meeskonnatöö korraldamine&lt;br /&gt;
* Aja planeerimine&lt;br /&gt;
&lt;br /&gt;
=== Ligikaudne ajahinnang tehtud tööle ===&lt;br /&gt;
&lt;br /&gt;
* XML,XSLT koostamine ja selle arutamine rühmas - 5 h&lt;br /&gt;
* Andmemudeli arutamine grupis, selle loomine, täiendamine ja projekti ühildamine - 20 h&lt;br /&gt;
* Teenuskihi ehitamine - 60 h&lt;br /&gt;
* ASP.NET rakenduse tegemine - 75 h  &lt;br /&gt;
* Mobiilirakenduse tegemine - 24 h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(Arvesse võtsime nii reaalse töö projekti kallal kui ka seotud teemadega tutvumine (näidete uurimine/läbi tegemine jne))&#039;&#039;&lt;br /&gt;
&#039;&#039;(Töö tunnid on kõigi inimeste peale kokku ehk kui arutasime kolmekesi XML struktuuri 1 tunni, siis kokku 3 töötundi).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Kokkuvõtva esitluse slaidid ===&lt;br /&gt;
&lt;br /&gt;
Kokkuvõtva esitluse slaidi saab siit: http://enos.itcollege.ee/~rruga/VRII/VR_II.ppt&lt;br /&gt;
&lt;br /&gt;
== Logi ==&lt;br /&gt;
&lt;br /&gt;
=== 2. Juuni ===&lt;br /&gt;
Wiki täiendamine ja kokkuvõtva osa loomine.&lt;br /&gt;
&lt;br /&gt;
=== 22. Mai ===&lt;br /&gt;
Viimased täiendused asp.net ja mobiilirakendusele.&lt;br /&gt;
&lt;br /&gt;
=== 18. Mai ===&lt;br /&gt;
ASP.net rakendusele lisatud CMS osa (sitemap ja html loomise osa)&lt;br /&gt;
&lt;br /&gt;
=== 8. Mai ===&lt;br /&gt;
Veebirakendus esitluseks valmis. Täiendatud vikilehte.&lt;br /&gt;
&lt;br /&gt;
=== 7. Mai ===&lt;br /&gt;
Mobiilirakendus sai valmis ja selle kohta uuendatud vikilehte.&lt;br /&gt;
&lt;br /&gt;
=== 17. aprill ===&lt;br /&gt;
Wikilehe täiendamine andmemudeli ja veebiteenuse meetodite kirjeldusega.&lt;br /&gt;
&lt;br /&gt;
=== 9. aprill ===&lt;br /&gt;
Tegime rollide halduse, münüüde muutmise vormi. Meili saatmine registreerimisel. Toimus andmebaasi andmemudeli väike muutus. &lt;br /&gt;
&lt;br /&gt;
=== 30. märts ===&lt;br /&gt;
Tehtud on kohviku menüü ja kohviku kommenteerimise leht.&lt;br /&gt;
&lt;br /&gt;
=== 26. märts ===&lt;br /&gt;
Tehtud on esimesed veebiteenuse meetodid ja veebirakendusele kasutajate registreerimine.&lt;br /&gt;
&lt;br /&gt;
=== 10. märts ===&lt;br /&gt;
Väikese häki abil õnnestus kohviku kassa arvutis saada tööle üks Forms-i proovirakendus.&lt;br /&gt;
&lt;br /&gt;
=== 8. märts ===&lt;br /&gt;
Kuna kassa-aparaadis on operatsioonisüsteemiks Windows XP ja raud on 1.99 GHz, 256 RAM siis peaks saama&lt;br /&gt;
prototüübiks teha sinna peale rakenduse, mille ülesandeks menüüga tegelemine. &lt;br /&gt;
&lt;br /&gt;
=== 7. märts ===&lt;br /&gt;
Linnar Viik andis meile järgmist nõu: tuleb eristada kahte asja - see, mis peab valmis saama (&#039;&#039;must&#039;&#039;) ja see, mis oleks tore (&#039;&#039;nice to have&#039;&#039;). Valmis peab saama menüüga ekraan seinal (esialgu kasutajale prototüübi näitamiseks kasvõi näiteks PowerPoint-i abil tehtud). Alles siis kui on kasutajalt positiivne tagasiside saadud, võib edasi minna reaalse tarkvaralahenduse loomisega. Kui ka see on valmis ja kasutaja sellega rahul võib juurde mõelda &#039;&#039;nice to have&#039;&#039; asju (näiteks eelinfo järgmise päeva menüü kohta, üliõpilasesinduse sõnumite riba ja muid asju).&lt;br /&gt;
&lt;br /&gt;
Saime teada, et kui tahame, et meie loodav süsteem suhtleks IT Kohviku kassasüsteemiga, siis tuleb selle süsteemi tootjatega ühendust võtta ja nendega konsulteerida.&lt;br /&gt;
&lt;br /&gt;
=== 19.Veebruar ===&lt;br /&gt;
*Valmis XSLT fail.&lt;br /&gt;
&lt;br /&gt;
=== 9.Veebruar ===&lt;br /&gt;
* Esmane versioon XML ja XML Schemast olemas&lt;br /&gt;
* Tekkis küsimus kas XSLT faili tuleb käsitsi tekitada või automaatselt.&lt;br /&gt;
* Küsimus oli ka kas lahendasime portsjoni asja mõistlikult või oleks mõni teine lähenemine parem olnud.&lt;br /&gt;
* Küsimus, kas XML fail on liiga üle pingutatud või sobiva keerukusega&lt;br /&gt;
&lt;br /&gt;
=== 7. Veebruar ===&lt;br /&gt;
* Võtsime õppejõu poolt pakutud ideest kohe kinni, sest me eelistame teha praktilist asja, mida saab kasutada ja mille kasutamist saame ka iga päev jälgida. &lt;br /&gt;
* Esimese asjana otsustasime välja uurida mida meie &amp;quot;kliendid&amp;quot; (süsteemi tellijad) meilt ootavad. (Soovid idee punkti all)&lt;br /&gt;
* Valminud on lihtne teenusest ja klientidest koosnev süsteemi testmudel.&lt;br /&gt;
&lt;br /&gt;
== Kasulikud lingid ==&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCF_auto_client_proxies.aspx&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/ms178472.aspx&lt;br /&gt;
&lt;br /&gt;
http://support.microsoft.com/kb/305141&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/aa702565.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/scottgu/archive/2007/04/06/tip-trick-enabling-ssl-on-iis7-using-self-signed-certificates.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/scottgu/archive/2010/06/28/introducing-iis-express.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/scottgu/archive/2011/01/03/vs-2010-sp1-beta-and-iis-developer-express.aspx&lt;br /&gt;
&lt;br /&gt;
http://blogs.msdn.com/b/webdevtools/archive/2011/03/14/enabling-iis-express-support-in-vs-2010-sp1.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/gunnarpeipman/archive/2010/12/11/visual-studio-2010-sp1-beta-supports-iis-express.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.dotnetcurry.com/ShowArticle.aspx?ID=487&lt;br /&gt;
&lt;br /&gt;
http://davidkiff.co.uk/post/2009/09/22/Setting-up-SSL-for-WCF-in-Development.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.request-response.com/blog/CommentView,guid,e9bb929b-d0b4-4626-b302-1d2715fc344a.aspx&lt;br /&gt;
&lt;br /&gt;
=== Kokkuvõtvad lingid ===&lt;br /&gt;
&lt;br /&gt;
* WCF&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/library/ee958158.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCF_auto_client_proxies.aspx&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/aa702565.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCFInstance.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCFConcurrency.aspx&lt;br /&gt;
&lt;br /&gt;
http://codeidol.com/csharp/wcf/Concurrency-Management/Service-Concurrency-Mode/&lt;br /&gt;
&lt;br /&gt;
* ASP&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/ms178472.aspx&lt;br /&gt;
&lt;br /&gt;
http://support.microsoft.com/kb/305141&lt;br /&gt;
&lt;br /&gt;
http://www.west-wind.com/weblog/posts/2008/Aug/14/ASPNET-gets-no-Respect&lt;br /&gt;
&lt;br /&gt;
http://lostechies.com/jimmybogard/2008/05/19/asp-net-officially-unmaintainable/&lt;br /&gt;
&lt;br /&gt;
http://www.lullabot.com/blog/why-not-asp-net&lt;br /&gt;
&lt;br /&gt;
http://reverseblade.blogspot.com/2008/06/web-development-aspnet-webforms-versus.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Võrgurakendused II: hajussüsteemide ehitamine]]&lt;br /&gt;
[[Category: Veebirakenduste loomine ASP.NET abil]]&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=33729</id>
		<title>Meeskond &quot;FoodWars&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=33729"/>
		<updated>2011-06-05T18:04:12Z</updated>

		<summary type="html">&lt;p&gt;Rruga: /* Meeskonna kokkuvõttev aruanne */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Idee ==&lt;br /&gt;
Meie tiimil on plaanis teha internetipõhine söökla menüü süsteem (aluseks IT Kolledži kohvik, aga suunitlus selline, et kõik kohvikud/sööklad saaksid teha endale kasutajakonto ja hakata rakendust kasutama), kust saaks jälgida menüüd, mis sööke saab süüa, mis veel järgi on, kasutajatel on ka võimalus sööke hinnata (stiilis &amp;quot;meeldib&amp;quot;, &amp;quot;ei meeldi&amp;quot; nagu Facebook-is).&lt;br /&gt;
&lt;br /&gt;
Kohvikupidaja Teele soovid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* elektroonilisest menüüst asju kustutada, isegi siis kui asja peaks olema teoreetiliselt alles, aga tegelikult on asi otsas.&lt;br /&gt;
* elektrikatkestuse korral jääb menüü püsima. Ta peab teadma hindu mistahes olukorras.&lt;br /&gt;
* menüül näidatakse automaatselt ka ISIC kaardi omanike soodushinnad&lt;br /&gt;
* süsteem toetab ka poole portsjoni müümist.&lt;br /&gt;
&lt;br /&gt;
Linnar Viigi soovid/visioonid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* kõik oleks ka internetist kättesaadav, peale LCD ekraani, mis kajastab menüüd sööklas.&lt;br /&gt;
* aluseks facebook, kus siis söögid oleks nagu facebook-i alateemad.&lt;br /&gt;
* saab sööke hinnata, kommenteerida (täna oli väga maitsev praad).&lt;br /&gt;
* kasutajad saaks vaadata, mis menüüs on (ka järgmisel nädalal) ja mitu portsu veel alles on.&lt;br /&gt;
* kasutajad saaksid välja pakkuda menüüsid.&lt;br /&gt;
* erinevate söögikohtade kasutajad saaksid omavahel muljeid jagada.&lt;br /&gt;
* kuu aja aktiivsemad saavad prii lõuna.&lt;br /&gt;
* mingil ajal võib olla &amp;quot;happy hour&amp;quot; (enne sulgemist saab odavamalt).&lt;br /&gt;
* piiranguks on see, et toitu broneerida ei saa &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vaba tarkvara kasutamise võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Antud projekti puhul oleks võimalik kasutada [http://www.postgresql.org/ PostgreSQL] andmebaasi (vt. lisaks http://en.wikipedia.org/wiki/PostgreSQL ) Microsoft SQL Server&#039;i asemel. See võiks anda kasutajale võimaluse valida .NET ning [http://www.mono-project.com/ Mono] (vt. lisaks http://en.wikipedia.org/wiki/Mono_(software) ) platvormide vahel. Sel viisil oleks kliendil võimalik Microsoft&#039;i platvormi kõrval valida tõenäoliselt soodsam vaba tarkvara platvorm. Andmebaasi lõplik valik pole hetkel veel otsustatud.&lt;br /&gt;
&lt;br /&gt;
== Meeskond ja tööjaotus==&lt;br /&gt;
* Kristjan Stolin - projektijuht, suhtlus kliendiga, XML, wiki, teenuskihtide progemine, rollide halduse lehe progemine&lt;br /&gt;
* Ilmar Telga - XML, kliendiga suhtlus, wiki, teenuskihtide progemine, lõpprakenduste menüüd, login&lt;br /&gt;
* Rauno Rüga - XML, XSLT, andmebaasi loomine, wiki, mobiilirakendus, statistika&lt;br /&gt;
* Lauri Kermas - teenuskihtide ehitamine, wiki, rakenduse rollid ja kasutajad, login, kommenteerimise võimaluste progemine&lt;br /&gt;
&lt;br /&gt;
== XML Fail ==&lt;br /&gt;
=== XML ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Toidud&amp;gt;&lt;br /&gt;
  &amp;lt;Toit&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduNimetus&amp;gt;Viineri kaste&amp;lt;/ToiduNimetus&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduLiik&amp;gt;Praad&amp;lt;/ToiduLiik&amp;gt;&lt;br /&gt;
    &amp;lt;OlemasolevatYhikut&amp;gt;5&amp;lt;/OlemasolevatYhikut&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduKogus&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Poolportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;2011&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;1&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;9&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;15&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;07&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;23&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;        &lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.15&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;0&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;0&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;0&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;00&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;00&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;00&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Täisportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.80&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
    &amp;lt;/ToiduKogus&amp;gt;&lt;br /&gt;
    &amp;lt;Kommentaarid&amp;gt;&lt;br /&gt;
      &amp;lt;Kommentaar&amp;gt;&lt;br /&gt;
        &amp;lt;Saatja&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaNimi&amp;gt;Kristjan&amp;lt;/SaatjaNimi&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaRoll&amp;gt;Tudeng&amp;lt;/SaatjaRoll&amp;gt;&lt;br /&gt;
        &amp;lt;/Saatja&amp;gt;&lt;br /&gt;
        &amp;lt;Sisu&amp;gt;Minu lemmik toit ! Kui algebra tund ei hakkaks, sööks veel 5 portsjonit.&amp;lt;/Sisu&amp;gt;&lt;br /&gt;
      &amp;lt;/Kommentaar&amp;gt;&lt;br /&gt;
    &amp;lt;/Kommentaarid&amp;gt;&lt;br /&gt;
  &amp;lt;/Toit&amp;gt;&lt;br /&gt;
&amp;lt;/Toidud&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kommentaariks siis niipalju, et meie näide on ilma kohviku osata, selleks et näidet mitte liiga suureks ajada.&lt;br /&gt;
&lt;br /&gt;
Ka on meil moment puudu ID väljad, mis on igasugu andmebaasiga suhtlemiseks hädavajalikud, samas siin näidises palju juurde ei anna.&lt;br /&gt;
&lt;br /&gt;
Asja tegemisel avastasime, et põhiliseks arusaamatuse kohaks on toitude erinevad kogused (ehk siis pool portsjonit, suur / väike ja muud võrdlevad ühikud). Esimese võimalusena kaalusime teha lihtsalt täiesti eraldi toidud kõige kohta, stiilis &amp;quot;väike viineripraad&amp;quot; ja &amp;quot;suur viineripraad&amp;quot;. Kahjuks see variant ei kõlbaks eriti hästi, kuna need erinevad portsjonid kasutavad ikkagi samu materjale ja kui me peaks mingi süsteemiga näitama kui palju portsjoneid alles on. Sööklast näiteks pakuti et väike portsjon kasutab materjale kuskil 0.8 suure portsjoni ulatuses, ehk see suhtarv peaks olema kasutaja poolt (kohvikupidaja, restoraniomanik) ise sätitav. &lt;br /&gt;
&lt;br /&gt;
Tänu sellele sai meie süsteemi alustalaks siiski Toit, millel on oma Portsjonid siis erinevate hindade ja soodustustega. Moment pole meil ka Portsjoni XML osas toodud ära seost kogusega. (Kui palju ühe portsjoni lisamine/müümine peaks toidu üldkogust muutma).&lt;br /&gt;
&lt;br /&gt;
Kommenteerida saab meil moment toitu ennast, mitte eraldi portsjonit. Isegi kui kasutajad tahavad lisada kommentaare stiilis &amp;quot;See väike supp oli tõesti väga väike&amp;quot;, ei soovi nad seda ilmselt eraldi portsjoni alla panna. Tulevikus peaks kindlasti olema ka võimalus pigem kommenteerida üldisemalt (Kohvikut ennast, söögipaiku üldse), kui spetsiifilisemalt (Väikse prae kaste lisandi kohta).&lt;br /&gt;
&lt;br /&gt;
=== XML Schema ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Toidud&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Toit&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduNimetus&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;OlemasolevatYhikut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduKogus&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:choice maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;PortsjoniLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;Myygiaeg&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Aasta&amp;quot; type=&amp;quot;xs:unsignedShort&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Kuu&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Paev&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Tund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Minut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Sekund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;ToiduHind&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Eurohind&amp;quot; type=&amp;quot;xs:decimal&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Soodustus&amp;quot;&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseProtsent&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:choice&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Kommentaarid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Saatja&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaNimi&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaRoll&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Sisu&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
  &amp;lt;h2&amp;gt;Kohvikus müüdavad toidud&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr bgcolor=&amp;quot;#9acd32&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Veel alles&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Portsjon&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Müügiaeg&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustuse liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Kommentaar(id)&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;Toidud/Toit&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduNimetus&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduLiik&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;OlemasolevatYhikut&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;PortsjoniLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Paev&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Kuu&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Aasta&amp;quot; /&amp;gt; &amp;amp;nbsp;  &lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Tund&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Minut&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Sekund&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Eurohind&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseProtsent&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Kommentaarid/Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Sisu&amp;quot; /&amp;gt;&amp;amp;nbsp;(&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaRoll&amp;quot; /&amp;gt;&amp;amp;nbsp;&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaNimi&amp;quot; /&amp;gt;)&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XSLT poolt loodud tulemus on järgnev (lisasin veel kaks toitu XML faili, siin wiki lehel on ruumi kokkuhoiuks vaid 1 toit toitude listis):&lt;br /&gt;
[[File:Xslt.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arhitektuur ==&lt;br /&gt;
&lt;br /&gt;
Süsteem oli vahepeal plaanis ehitada kolmekihilise arhitektuuriga ([http://en.wikipedia.org/wiki/Multitier_architecture#Three-tier_architecture Three-tier architecture]). See peaks lihtsustama süsteemi haldamist ja laiendamist tulevikus. Aga kuna selle jaoks otsest vajadust polenud ja oleks vaid süsteemi keeruliseks ajanud, siis loobusime sellest.&lt;br /&gt;
&lt;br /&gt;
[[Image:three-tier.png|thumb|center|alt=Arhitektuuri skeem.|Arhitektuuri skeem.]]&lt;br /&gt;
&lt;br /&gt;
== Veebiteenus ==&lt;br /&gt;
===Andmemudel===&lt;br /&gt;
[[Image:KohvikuAndmemudel.jpg|thumb|right|alt=Kohviku projekti andmemudel|Andmemudel]]&lt;br /&gt;
Enne veebiteenuse meetodite kirjeldamist koostasime andmemudeli. Loodud andmemudeli põhjal lõime andmebaasi vajalike tabelite ja atribuutidega. Andmemudeli peal on rohelisega tähistatud tabelid, mis on oseselt seotud kohviku valdajaga ja mida WPF rakenduse jaoks kindlasti vaja on. Ülejäänud helesinised tabelid on vajalikud kasutajate võimaluste jaoks. Lisaks on andmemudelil kaks tabelit, mis pole teisega seotud, need on süsteemi administraatori jaoks, et oleks ülevaade, mis rakendused teenust enim kasutavad ning mis meetodeid kõige rohkem välja kutsutakse.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Teenuskihis olevad meetodid===&lt;br /&gt;
&lt;br /&gt;
====Kasutajatega seotud meetodid:====&lt;br /&gt;
*SaidiKasutajaLiik() - Tagastab antud kasutaja ID järgi kasutaja liigi nimetuse&lt;br /&gt;
*KustutaSaidiKasutaja() - Kustutab antud kasutaja ID järgi kasutaja tabelis Kasutaja&lt;br /&gt;
*AnnaKoikSaidiKasutajad() - Tagastab kõik kirjed tabelist Kasutaja&lt;br /&gt;
*AnnaKoikKohvikuKasutajad() - Tagastab antud kohviku ID järgi kõik kohviku kasutajad massiivina&lt;br /&gt;
*MuudaSaidiKasutajaLiik() - Muudab antud kasutaja ID järgi kasutaja liigi tabelis Kasutaja&lt;br /&gt;
*KoikLubatudSaidiKasutajaTyybid() - Tagastab andmebaasi kõik võimalikud kohviku kasutaja rollid (id-d ja nimed), muud andmed jäävad tühjaks&lt;br /&gt;
*KoikLubatudKohvikuRollid() - Tagastab andmebaasi kõik võimalikud site kasutaja rollid (id-d ja nimed), kohviku_id jääb tühjaks&lt;br /&gt;
*KasutajaKohvikuRollid() - Tagastab antud kasutaja ID järgi kõik kasutaja rollid kõikides kohvikutes&lt;br /&gt;
*MuudaKohvikuKasutajaRoll() - Muudab antud kasutaja ID ja kohviku ID järgi kasutaja rolli kohvikus, kui rolli pole, siis tekitatakse uus&lt;br /&gt;
*SaidiKasutajaLiikID() - Tagastab antud kasutaja ID järgi kasutaja liigi ID&lt;br /&gt;
*KohvikuKasutajaLiikID() - Tagastab antud kasutaja ID ja kohviku ID järgi kohviku kasutaja rolli ID&lt;br /&gt;
*AnnaKasutajaMeiliAadress() - Tagastab antud kasutaja nime alusel kasutaja meiliaadressi&lt;br /&gt;
*AnnaKasutajaIdJargi() - Tagastab kasutajanime kasutaja ID järgi&lt;br /&gt;
*AuthendiKasutaja() - Autendib kasutaja, õnnestumisel tagastab kasutaja ID, ebaõnnestumisel null &lt;br /&gt;
*RegistreeriKasutaja() - Registreerib kasutaja andmebaasi ja tagastab true kui kasutaja loomine õnnestus&lt;br /&gt;
&lt;br /&gt;
====Menüüga seotud meetodid====&lt;br /&gt;
*LisaArtikkelMenuuse() - Seob menüüartikli ja menüü&lt;br /&gt;
*LisaKohvikuleMenuu() - Seob menüü ja kohviku&lt;br /&gt;
*TagastabMenuuMuutujad() - Tagastab menüü järgi kas inimesel oleks õigust seda muuta&lt;br /&gt;
*KustutaMenuuJaKohvikuSeos() - Kustutab menüü ja kohviku seose&lt;br /&gt;
*LisaUusMenuu() - Teeb uue menüü, seob selle kohvikuga, kui kohviku ID on parameetrina kaasa antud&lt;br /&gt;
*MenuuKohvikuIdJargi() - Tagastab kohviku ID järgi kohviku tänaste või mitte tänaste menüüde ID-de massiivi&lt;br /&gt;
*LisaMenuuArtikkelMenuuse() - Sisestab antud müügiartikli menüüsse, mille ID on menyy_id&lt;br /&gt;
*KustutaMenuuArtikkel() - Kustutab müügiartikli ID ja menüü ID järgi müügiartikli menüüst&lt;br /&gt;
*TagastaMenuuArtiklid() - Tagastab menüü ID järgi menüüs olevad müügiartiklid&lt;br /&gt;
*VahetaMenuuArtiklit() - Muudab antud müügiartikli tabelis Myygiartikkel&lt;br /&gt;
*MenuuNimetus() - Tagastab menüü ID järgi menüü nimetuse&lt;br /&gt;
*AnnaMuugiartiklidMidaMenuusPole() - Tagastab müügiartiklid, mis pole veel menüüs, kus on juba müügiartiklid, mille IDd on antud massiivis&lt;br /&gt;
*AnnaMenuuNimed() - Tagastab kõigi menüüde nimetused tabelis Menyy&lt;br /&gt;
&lt;br /&gt;
====Kohvikutest üldiselt====&lt;br /&gt;
*KohvikuteNimed() - Tagastab kõigi kohvikute nimed massiivina&lt;br /&gt;
*KohvikuNimiIdJargi() - Tagastab antud kohviku ID järgi kohviku nime&lt;br /&gt;
*AnnaKoikOmanikuKohvikud() - Tagastab antud omaniku ID järgi kõik omaniku kohvikute ID-d massiivina&lt;br /&gt;
*Kohvikud() - Tagastab kõik kohvikute kirjed tabelist Kohvik&lt;br /&gt;
*KohvikuteArv() - Tagastab kõigi kohvikute arvu&lt;br /&gt;
*AnnaKaubad() - Tagastab kõik kaubad tabelist Kaup&lt;br /&gt;
*LisaKaup() - Lisab kauba kaupade nimekirja&lt;br /&gt;
*LisaKohvik() - Uue kohviku lisamine&lt;br /&gt;
&lt;br /&gt;
====Kommentaaridega seotud meetodid:====&lt;br /&gt;
*KohvikuKommentaarideArv() - Kohviku kommentaaride arv&lt;br /&gt;
*AnnaKohvikuKommentaarid() - Tagastab kommentaarid lehtede kaupa&lt;br /&gt;
*AnnaKohvikuKommentaar() - Tagastab üksiku kommentaari&lt;br /&gt;
*AnnaKohvikuKommentaarideHinded() - Tagastab kommentaaride jaoks võimalikud hinded koos kirjeldustega&lt;br /&gt;
*LisaKohvikuKommentaar() - Lisab kohviku kommentaari&lt;br /&gt;
*MuudaKohvikuKommentaar() - Muudab kohviku kommentaari&lt;br /&gt;
*MuudaKohvikuKommentaariOlek() - Muudab kohviku kommentaari oleku&lt;br /&gt;
*MuudaKohvikuKommentaariPeidetus() - Muudab kohviku kommentaari peidetust&lt;br /&gt;
&lt;br /&gt;
====Statistikaga seotud meetodid:====&lt;br /&gt;
*StatistikaRakendusteKohtaTana() - Tagastab rakenduse nimed ja nende vastu tehtud päringud tänasel päeval&lt;br /&gt;
*StatistikaRakendusteKohtaViimaneNadal() - Tagastab rakenduse nimed ja nende vastu tehtud päringud viimase nädala jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaSellelKuul() - Tagastab rakenduse nimed ja nende vastu tehtud päringud selle kuu jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaKokku() - Tagastab rakenduse nimed ja nende vastu tehtud päringud kogu aja vältel&lt;br /&gt;
*StatistikaMeetoditeKohtaTana() - Meetod leiab tänase päeva jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaViimaneNadal() - Meetod leiab viimase nädala jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaSellelKuul() - Meetod leiab kuu jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaKokku() - Meetod leiab kogu aja vältel kasutatud meetodid ja paringute arvu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebiteenuse projekti (WCF + andmebaas) saab siit: http://enos.itcollege.ee/~rruga/VRII/Teenusekiht.zip&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : CMS ==&lt;br /&gt;
&lt;br /&gt;
Meie loodud veebirakenduses on realiseeritud järgnevad CMS seotud funktsionaalsused :&lt;br /&gt;
*Kõikide kohvikute lehed on eraldi aadressiga, mis võimaldab eri kohvikud bookmarkida ja facebooki like anda. See on saavutatud tänu ?kohvik=1 aadressiribal, kus parameeteri kohvik number identifitseerib kohviku.&lt;br /&gt;
*Adminni õigustega kasutajal on võimalik lisada uus kohvikuid andembaasi&lt;br /&gt;
*Kohviku omanik saab lisada menüüd, muuta seda ja kustutada&lt;br /&gt;
*Adminnid saavad kasutajaid hallata, määrates nendele rolle, mis omakorda tagab teatud õigused&lt;br /&gt;
*Kohviku omanikud saavad  oma kohviku kasutajaid hallata, määrates neile näiteks müüja või kliendi rolli.&lt;br /&gt;
*Kogu menüü põhineb sitemapil, mille alus on kirjeldatud eraldi sitemap failis, lisaks sellel lisatakse sinna dünaamiselt kohvikud juurde ( mis andmebaasis olemas on )&lt;br /&gt;
*Kohviku omanik saab kohviku lehte isikupärastada tänu richteksti osale, näiteks lisada html osi.&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Veebirakendus ==&lt;br /&gt;
&lt;br /&gt;
Veebiteenust kasutavaks veebirakenduseks on ASP.NET rakendus. &lt;br /&gt;
&lt;br /&gt;
* Esilehel saab otsida kohvikuid või minna kohe huvipakkuva kohviku menüü lehele.&lt;br /&gt;
* Kohviku menüü lehel on näha tänased ja teised menüüd, kohviku lahtioleku aeg. Kui panna veebirakendus internetti, siis on võimalus Facebook-i kaudu kohviku fänniks hakata. Kommenteerimise ja soodustuste osa on veel pooleli.&lt;br /&gt;
* Sisse loginud kohviku omanik saab ka kohviku menüüsid muuta, lisada, kustutada. &lt;br /&gt;
* Kasutajate lehel saab sisse loginud kohviku omanik hallata kohviku kasutajaid.&lt;br /&gt;
* Statistika lehel saab vaadata statistikat teenust kasutanud rakenduste ja kasutatud meetodite kohta. Näeb nii tänase päeva, viimase nädala, selle kuu ja aasta statistikat&lt;br /&gt;
* Kohviku lisamise lehel saab aga admini õigustege kasutaja lisada uue kohviku.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:KohvikuMenuEdit.JPG|800px|Kohviku menüü muutmise leht. ITK kohviku menüüde muutmiseks tuleb logida sisse kasutajaga Ilmar parooliga &amp;quot;ilmar&amp;quot;.]]&lt;br /&gt;
&lt;br /&gt;
Kohviku menüü muutmise leht. ITK kohviku menüüde muutmiseks tuleb logida sisse kasutajaga Ilmar parooliga &amp;quot;ilmar&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Kohviku admin osa nägemiseks võib sisse logida kasutajaga rauno, parool on ka rauno. Sellega saab ligi statistikale ja uue kohviku loomisele.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebirakenduse koos uuendatud teenuskihiga saab siit: http://enos.itcollege.ee/~rruga/VRII/KohvikuProjekt.rar&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Kommentaaride komponent ==&lt;br /&gt;
&lt;br /&gt;
Kommentaaride sisestamiseks ja haldamiseks on loodud iseseisev ning enam jaolt taas kasutatav kommentaaride komponent. Komponent on hetkel realiseeritud ASP&#039;i User Control&#039;ina ja mitte Custom Control&#039;ina, mis vähendab veidi selle üleviidavust teistesse projektidesse. Siiski on selle muutmine ASP&#039;i Custom Control&#039;iks mõningate muudatustega võimalik.&lt;br /&gt;
&lt;br /&gt;
[[Image:comskeem.png|thumb|center|alt=Kommentaari komponendi skeem.|Kommentaari komponendi skeem.]]&lt;br /&gt;
&lt;br /&gt;
Kommentaaride komponent koosneb kahest osast, mis lisatakse lehele, millel vajatakse kommenteerimise funktsionaalsust:&lt;br /&gt;
sisendkontroll - see komponent on vajalik uute kommentaaride sisestamiseks;&lt;br /&gt;
väljundkontroll - antud komponent esitab olemasolevad kommentaarid hulga kaupa.&lt;br /&gt;
&lt;br /&gt;
Mõlemad kommentaari komponendi osad on kasutatavad ka iseseisvalt, kui see peaks vajalik olema. Kommentaari andmeid esitavad need komponendid läbi iseseisvate kommentaarikontrollide, mida võib ühel kontrollil olla ka mitu. Kommentaarikontrollid ei ole võimelised iseseisvalt kommentaaride andmeid hankima ning seepärast tuleb need täita väljapoolt, kas sisend- või väljundkontrollide poolt. Samuti tuleb uue kommentaari loomine läbi viia kommentaarikontrolli väliselt - seda teostabki sisendikontroll. Samas kogu ülejäänud kommentaari haldus, nagu olemasolevate kommentaaride muutmine ning uute olekute seadmine toimub üksnes läbi iseseisvate kommentaarikontrollide, mis sisaldavad täies mahus vastavat funktsionaalsust.&lt;br /&gt;
&lt;br /&gt;
Kommentaaride komponendi kõik kolm osa (sisendkontroll, väljundkontroll ja kommentaarikontroll) suhtlevad teenusekihiga läbi vastava ligipääsuobjekti. Ligipääsuobjekt tegeleb ühenduse ning sellega seonduvate võimalike vigade haldamisega. Kokkuvõtlikult loob see vajaduse korral uue ühenduse, sooritab päringud ning lõpuks sulgeb ühenduse, kui vastav korraldus antakse.&lt;br /&gt;
&lt;br /&gt;
Teenuses on vastavad protseduurid, mida teenusega suhtlemisel välja kutsutakse ning mis teostavad reaalseid muudatusi andmebaasis, seda muidugi vastavalt reeglitele.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus II : Mobiilirakendus ==&lt;br /&gt;
&lt;br /&gt;
Teine rakendus, mis veebiteenuse peale ehitatud sai, oli Windows Phone 7 rakendus. Lühidalt kirjeldades saab peale rakenduse käivitamist näha listi kõikidest olemasolevatest kohvikutest. Kui vajutad mingi kohviku nime peale, avaneb täpsem kirjeldus kohviku kohta, kust näeb lisaks kohviku nimele ka lühikest kirjeldust, tänast lahtiolekuaega ja kohviku aadressit. Samuti on kohviku kirjelduse lehel viide kohviku tänasele menüüle ja kommenteerimisele. Vajutades vaata menüüd nuppu avaneb vaade täna müügis olevatest müügiartiklitest ja nende hinnast, vajutades aga kommenteeri kohvikut nupule avaneb võimalus lisada kohviku kohta kommentaar.&lt;br /&gt;
&lt;br /&gt;
Kokkuvõttev pilt realiseeritud võimalustest:&lt;br /&gt;
&lt;br /&gt;
[[Image:WP7 rakendus.jpg|alt=WP7 rakendus.|WP7 rakenduse võimalused.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mobiilirakenduse saab alla tõmmata siit: http://enos.itcollege.ee/~rruga/VRII/Mobiilirakendus.rar&lt;br /&gt;
&lt;br /&gt;
NB! Et mobiilirakendust proovida ja mõistliku tulemust saada peab teil olema kõige uuem versioon meie projekti teenuskihist ning teenuskiht peab töötama.&lt;br /&gt;
&lt;br /&gt;
== Meeskonna punktide jaotus ==&lt;br /&gt;
Kõigi grupiliikmetega sai arutatud punktide jagamise üle ja ühine arvamus oli, et punktid jaotatakse järgnevalt:&lt;br /&gt;
*Rauno Rüga - 29 punkti&lt;br /&gt;
*Ilmar Telga - 20 punkti&lt;br /&gt;
*Kristjan Stolin - 17 punkti&lt;br /&gt;
*Lauri Kermas - 14 punkti&lt;br /&gt;
&lt;br /&gt;
== Meeskonna kokkuvõttev aruanne ==&lt;br /&gt;
&lt;br /&gt;
=== Mis sai tehtud ? ===&lt;br /&gt;
&lt;br /&gt;
Projektiks valisime ühtse kohvikute süsteemi loomise, et klientidel oleks hea mõnus kohvikute kohta infot vaadata ja samamoodi kohviku omanik saaks menüüd läbi arvuti hallata. Selle jaoks sai valmis tehtud korralik andmemudel, mille põhjal andmebaas genereeritud. Andmebaas olemas, sai hakatud teenuskihti ehitama kõigi vajalike meetoditega rakenduste jaoks. Paralleelselt sai hakatud ka lõpprakendusi tegema, sest nii oli hea arendad, kuna rakendust tehes tekkisid ideed, mis meetodeid oleks vaja, et mingit tegevust läbi viia. Valmis kaks klientrakendust, millest esimene oli põhjalikum asp.net rakendus, mis oli sunatud nii klientidele, kohvikute omanikele kui kogu süsteemi administreerijatele. Teine rakendus, mobiilirakendus, oli väiksema sisuga, rohkem suunatud klientidele, et vaadata infot kohvikute kohta ja kohvikuid kommenteerida.&lt;br /&gt;
&lt;br /&gt;
=== Mida oleks paremini saanud teha ? ===&lt;br /&gt;
Mõtlesime, et mis saab siis, kui kohviku kassa arvutis pole parajasti internetiühendust ja kohvikupidaja tahab muuta menüüd. Selleks tuleb ilmselt kohalikus arvutis salvestada muudetud menüü XML formaadis ning internetiühenduse taastumisel toimuks menüü muutus ka serveris. Küsisime õppejõult nõu, kuidas oleks seda kõige mõistlikum teostada. Õppejõu seisukoht on, et kuna selle probleemi lahendamine väljub aine &amp;quot;Võrgurakendused II&amp;quot; raamidest ja on ajaliselt mahukas ülesanne, siis ei ole mõtet sellega õppetöö raames tegeleda.&lt;br /&gt;
&lt;br /&gt;
=== Mida sai peale viimast esitlust veel täiendatud ?  ===&lt;br /&gt;
&lt;br /&gt;
*ASP.NET rakendusel sai statistika charte sipakene väiksemaks tehtud, et nad näeksid paremad välja ja korraga ekraanil oleks näha nii päeva, nädala, kuu kui ka kogu aja jaotus (loomulikult normaalse suurusega ekraani puhul)&lt;br /&gt;
*Mobiilirakenduses menüü kuvamine korralikumaks (toit ja hind palkirjad juurde)&lt;br /&gt;
*Mobiilirakenduses kommenteerija nimi salvestatakse mobiili mällu, niiet kommenteerima tulles on kohe nime lahtris oma nimi alati olemas&lt;br /&gt;
&lt;br /&gt;
(Täiendused on olemas ka juba projekti rar failidel, millele siin wikis viited on)&lt;br /&gt;
&lt;br /&gt;
=== Õpitud teadmised / omandatud kogemused ===&lt;br /&gt;
&lt;br /&gt;
* XML, XSLT koostamine&lt;br /&gt;
* Teenuskihi ehitamine ja selle ühildamine nii andmebaasi kui rakendustega&lt;br /&gt;
* Rakenduste ehitamine teenuskihi peale&lt;br /&gt;
* Meeskonnatöö korraldamine&lt;br /&gt;
* Aja planeerimine&lt;br /&gt;
&lt;br /&gt;
=== Ligikaudne ajahinnang tehtud tööle ===&lt;br /&gt;
&lt;br /&gt;
* XML,XSLT koostamine ja selle arutamine rühmas - 5 h&lt;br /&gt;
* Andmemudeli arutamine grupis, selle loomine, täiendamine ja projekti ühildamine - 20 h&lt;br /&gt;
* Teenuskihi ehitamine - 60 h&lt;br /&gt;
* ASP.NET rakenduse tegemine - 75 h  &lt;br /&gt;
* Mobiilirakenduse tegemine - 24 h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(Arvesse võtsime nii reaalse töö projekti kallal kui ka seotud teemadega tutvumine (näidete uurimine/läbi tegemine jne))&#039;&#039;&lt;br /&gt;
&#039;&#039;(Töö tunnid on kõigi inimeste peale kokku ehk kui arutasime kolmekesi XML struktuuri 1 tunni, siis kokku 3 töötundi).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Kokkuvõtva esitluse slaidid ===&lt;br /&gt;
&lt;br /&gt;
Kokkuvõtva esitluse slaidi saab siit: http://enos.itcollege.ee/~rruga/VRII/VR_II.ppt&lt;br /&gt;
&lt;br /&gt;
== Logi ==&lt;br /&gt;
&lt;br /&gt;
=== 8. Mai ===&lt;br /&gt;
Veebirakendus esitluseks valmis. Täiendatud vikilehte.&lt;br /&gt;
&lt;br /&gt;
=== 7. Mai ===&lt;br /&gt;
Mobiilirakendus sai valmis ja selle kohta uuendatud vikilehte.&lt;br /&gt;
&lt;br /&gt;
=== 17. aprill ===&lt;br /&gt;
Wikilehe täiendamine andmemudeli ja veebiteenuse meetodite kirjeldusega.&lt;br /&gt;
&lt;br /&gt;
=== 9. aprill ===&lt;br /&gt;
Tegime rollide halduse, münüüde muutmise vormi. Meili saatmine registreerimisel. Toimus andmebaasi andmemudeli väike muutus. &lt;br /&gt;
&lt;br /&gt;
=== 30. märts ===&lt;br /&gt;
Tehtud on kohviku menüü ja kohviku kommenteerimise leht.&lt;br /&gt;
&lt;br /&gt;
=== 26. märts ===&lt;br /&gt;
Tehtud on esimesed veebiteenuse meetodid ja veebirakendusele kasutajate registreerimine.&lt;br /&gt;
&lt;br /&gt;
=== 10. märts ===&lt;br /&gt;
Väikese häki abil õnnestus kohviku kassa arvutis saada tööle üks Forms-i proovirakendus.&lt;br /&gt;
&lt;br /&gt;
=== 8. märts ===&lt;br /&gt;
Kuna kassa-aparaadis on operatsioonisüsteemiks Windows XP ja raud on 1.99 GHz, 256 RAM siis peaks saama&lt;br /&gt;
prototüübiks teha sinna peale rakenduse, mille ülesandeks menüüga tegelemine. &lt;br /&gt;
&lt;br /&gt;
=== 7. märts ===&lt;br /&gt;
Linnar Viik andis meile järgmist nõu: tuleb eristada kahte asja - see, mis peab valmis saama (&#039;&#039;must&#039;&#039;) ja see, mis oleks tore (&#039;&#039;nice to have&#039;&#039;). Valmis peab saama menüüga ekraan seinal (esialgu kasutajale prototüübi näitamiseks kasvõi näiteks PowerPoint-i abil tehtud). Alles siis kui on kasutajalt positiivne tagasiside saadud, võib edasi minna reaalse tarkvaralahenduse loomisega. Kui ka see on valmis ja kasutaja sellega rahul võib juurde mõelda &#039;&#039;nice to have&#039;&#039; asju (näiteks eelinfo järgmise päeva menüü kohta, üliõpilasesinduse sõnumite riba ja muid asju).&lt;br /&gt;
&lt;br /&gt;
Saime teada, et kui tahame, et meie loodav süsteem suhtleks IT Kohviku kassasüsteemiga, siis tuleb selle süsteemi tootjatega ühendust võtta ja nendega konsulteerida.&lt;br /&gt;
&lt;br /&gt;
=== 19.Veebruar ===&lt;br /&gt;
*Valmis XSLT fail.&lt;br /&gt;
&lt;br /&gt;
=== 9.Veebruar ===&lt;br /&gt;
* Esmane versioon XML ja XML Schemast olemas&lt;br /&gt;
* Tekkis küsimus kas XSLT faili tuleb käsitsi tekitada või automaatselt.&lt;br /&gt;
* Küsimus oli ka kas lahendasime portsjoni asja mõistlikult või oleks mõni teine lähenemine parem olnud.&lt;br /&gt;
* Küsimus, kas XML fail on liiga üle pingutatud või sobiva keerukusega&lt;br /&gt;
&lt;br /&gt;
=== 7. Veebruar ===&lt;br /&gt;
* Võtsime õppejõu poolt pakutud ideest kohe kinni, sest me eelistame teha praktilist asja, mida saab kasutada ja mille kasutamist saame ka iga päev jälgida. &lt;br /&gt;
* Esimese asjana otsustasime välja uurida mida meie &amp;quot;kliendid&amp;quot; (süsteemi tellijad) meilt ootavad. (Soovid idee punkti all)&lt;br /&gt;
* Valminud on lihtne teenusest ja klientidest koosnev süsteemi testmudel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Kasulikud lingid ==&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCF_auto_client_proxies.aspx&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/ms178472.aspx&lt;br /&gt;
&lt;br /&gt;
http://support.microsoft.com/kb/305141&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/aa702565.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/scottgu/archive/2007/04/06/tip-trick-enabling-ssl-on-iis7-using-self-signed-certificates.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/scottgu/archive/2010/06/28/introducing-iis-express.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/scottgu/archive/2011/01/03/vs-2010-sp1-beta-and-iis-developer-express.aspx&lt;br /&gt;
&lt;br /&gt;
http://blogs.msdn.com/b/webdevtools/archive/2011/03/14/enabling-iis-express-support-in-vs-2010-sp1.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/gunnarpeipman/archive/2010/12/11/visual-studio-2010-sp1-beta-supports-iis-express.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.dotnetcurry.com/ShowArticle.aspx?ID=487&lt;br /&gt;
&lt;br /&gt;
http://davidkiff.co.uk/post/2009/09/22/Setting-up-SSL-for-WCF-in-Development.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.request-response.com/blog/CommentView,guid,e9bb929b-d0b4-4626-b302-1d2715fc344a.aspx&lt;br /&gt;
&lt;br /&gt;
=== Kokkuvõtvad lingid ===&lt;br /&gt;
&lt;br /&gt;
* WCF&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/library/ee958158.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCF_auto_client_proxies.aspx&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/aa702565.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCFInstance.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCFConcurrency.aspx&lt;br /&gt;
&lt;br /&gt;
http://codeidol.com/csharp/wcf/Concurrency-Management/Service-Concurrency-Mode/&lt;br /&gt;
&lt;br /&gt;
* ASP&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/ms178472.aspx&lt;br /&gt;
&lt;br /&gt;
http://support.microsoft.com/kb/305141&lt;br /&gt;
&lt;br /&gt;
http://www.west-wind.com/weblog/posts/2008/Aug/14/ASPNET-gets-no-Respect&lt;br /&gt;
&lt;br /&gt;
http://lostechies.com/jimmybogard/2008/05/19/asp-net-officially-unmaintainable/&lt;br /&gt;
&lt;br /&gt;
http://www.lullabot.com/blog/why-not-asp-net&lt;br /&gt;
&lt;br /&gt;
http://reverseblade.blogspot.com/2008/06/web-development-aspnet-webforms-versus.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Võrgurakendused II: hajussüsteemide ehitamine]]&lt;br /&gt;
[[Category: Veebirakenduste loomine ASP.NET abil]]&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=V%C3%B5rgurakendused_II:_2011_kevadel_valminud_kodut%C3%B6%C3%B6d&amp;diff=33608</id>
		<title>Võrgurakendused II: 2011 kevadel valminud kodutööd</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=V%C3%B5rgurakendused_II:_2011_kevadel_valminud_kodut%C3%B6%C3%B6d&amp;diff=33608"/>
		<updated>2011-06-04T20:35:19Z</updated>

		<summary type="html">&lt;p&gt;Rruga: /* Rauno Rüga */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Jaan Igamees=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Kert Suvi=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Helen Muidik=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Mihkel Sokk=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Seda Sahradyan=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Priit Siimo=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Siim Sarv=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Reigo Männiste=&lt;br /&gt;
* Meeskond [[Meeskond Tool]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Karl Männil=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;H2&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Ilmar Telga=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;Hungry Student Food Board&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Siim Aaver=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;H2&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Taavi Ilves=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Hungry_Student_Food_Board&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;ASP-tastic&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond_&amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Jaan Kruusma=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Hungry_Student_Food_Board&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Andrus Reedla=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Jaak Lehtsalu=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;H2&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Jana Mrots=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond  &amp;quot;Hungry Student Food Board&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Heiki Tamm=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;H2&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Meeskond&amp;quot;]]&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond  &amp;quot;Hungry Student Food Board&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Toomas Soha=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Miina Sikk=&lt;br /&gt;
* Meeskond [[Meeskond Tool]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Rauno Rüga=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
=Tanel Liiv=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Hungry Student Food Board&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Gaspar Karm=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Joosep Ilves=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;H2&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond_&amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Taivo Türnpu=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;ASP-tastic&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Sander Baikov=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;ASP-tastic&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Allar Anijago=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tool&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Madis Sarv=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Kaspar Kallasmaa=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Jarko Kaskmaa=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;ASP-tastic&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond_%22H2%22]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond_%22H2%22]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Indrek Kõue=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;ASP-tastic&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Erik Kaju=&lt;br /&gt;
* Meeskond [[Meeskond Tool]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Mailis Toompuu=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;H2&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Madis Kõosaar=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Gert Glükmann=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;ASP-tastic&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Martin Lensment=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond_&amp;quot;FoodWars&amp;quot;]] ja [[Talk:Meeskond_Tool]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond_Tool]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=V%C3%B5rgurakendused_II:_2011_kevadel_valminud_kodut%C3%B6%C3%B6d&amp;diff=33607</id>
		<title>Võrgurakendused II: 2011 kevadel valminud kodutööd</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=V%C3%B5rgurakendused_II:_2011_kevadel_valminud_kodut%C3%B6%C3%B6d&amp;diff=33607"/>
		<updated>2011-06-04T20:35:00Z</updated>

		<summary type="html">&lt;p&gt;Rruga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Jaan Igamees=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Kert Suvi=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Helen Muidik=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Mihkel Sokk=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Seda Sahradyan=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Priit Siimo=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Siim Sarv=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Reigo Männiste=&lt;br /&gt;
* Meeskond [[Meeskond Tool]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Karl Männil=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;H2&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Ilmar Telga=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;Hungry Student Food Board&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Siim Aaver=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;H2&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Taavi Ilves=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Hungry_Student_Food_Board&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;ASP-tastic&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond_&amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Jaan Kruusma=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Hungry_Student_Food_Board&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Andrus Reedla=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Jaak Lehtsalu=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;H2&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Jana Mrots=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond  &amp;quot;Hungry Student Food Board&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Heiki Tamm=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;H2&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Meeskond&amp;quot;]]&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond  &amp;quot;Hungry Student Food Board&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Toomas Soha=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Miina Sikk=&lt;br /&gt;
* Meeskond [[Meeskond Tool]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Rauno Rüga=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;Tool&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
=Tanel Liiv=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Hungry Student Food Board&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Gaspar Karm=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Joosep Ilves=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;H2&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond_&amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Taivo Türnpu=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;ASP-tastic&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Sander Baikov=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;ASP-tastic&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Allar Anijago=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tool&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Madis Sarv=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Kaspar Kallasmaa=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Jarko Kaskmaa=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;ASP-tastic&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond_%22H2%22]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond_%22H2%22]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Indrek Kõue=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;ASP-tastic&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Erik Kaju=&lt;br /&gt;
* Meeskond [[Meeskond Tool]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Mailis Toompuu=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;H2&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Madis Kõosaar=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Gert Glükmann=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;ASP-tastic&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Martin Lensment=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond_&amp;quot;FoodWars&amp;quot;]] ja [[Talk:Meeskond_Tool]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond_Tool]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:Meeskond_%22Tyhik%22&amp;diff=33606</id>
		<title>Talk:Meeskond &quot;Tyhik&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:Meeskond_%22Tyhik%22&amp;diff=33606"/>
		<updated>2011-06-04T20:31:53Z</updated>

		<summary type="html">&lt;p&gt;Rruga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
Arvustus&lt;br /&gt;
&lt;br /&gt;
Meeskonna Tyhik loodud kinokavade xml faili struktuur on nõuetekohane, kenasti stiilis &lt;br /&gt;
&amp;lt;kinod&amp;gt;&lt;br /&gt;
   &amp;lt;kino&amp;gt;&lt;br /&gt;
      ...&lt;br /&gt;
ning &lt;br /&gt;
&amp;lt;filmid&amp;gt;&lt;br /&gt;
   &amp;lt;film&amp;gt;&lt;br /&gt;
      ...&lt;br /&gt;
Stiili- ja abifailid on olemas ning kui ma neid läbi vaatasin, siis vigu ei tuvastanud.&lt;br /&gt;
Lehe esialgne kujundus on hea, mulle meeldib.&lt;br /&gt;
Kokkuvõttes: minu arvates hea raam, millele veebirakendus ümber ehitada.&lt;br /&gt;
&lt;br /&gt;
Indrek Tamm, meeskond Tool, 4.III.2011&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Võib öelda, et XML on väga põhjalik ja seal on kajastatud kõik andmed, mis kinokülastajale huvi võiksid pakkuda. Isiklikult ei leidnudki kohta, kus oleks tahtnud midagi teistmoodi teha. Sellise XML põhjal on kindlasti võimalik korralik teenus ja klientrakendus ehitada. Samuti on olemas skeemifail ja korralik XSLT, mis esitab andmeid vägagi loetaval ja ülevaatlikul kujul.&lt;br /&gt;
&lt;br /&gt;
Siim Aaver, D21&lt;br /&gt;
&lt;br /&gt;
Uurides XML, uurisin mis uurisin aga ei oska kohe midagi ette heita. XML fail tundub ilusti struktureeritud, ja paistab et on olemas ka kõik vajalikud asjad, mis kinosüsteemis peaksolemas olema. Kõik failid on korralikult loetaavad ja arusaamisega probleeme ei teki. Lihtne ülesehitus.&lt;br /&gt;
&lt;br /&gt;
Jaak Lehtsalu D22&lt;br /&gt;
&lt;br /&gt;
XML fail keskendub elementidele, struktuur on loogiline. Andmed hoitakse võimalikult detailselt, nii et midagi halba pole öelda. Skeemifailis on seatud elementidele vastavusse andmetüübid, mida neis hoitakse, korralik töö. Stiilifail mitte ainult ei loe lihtsalt XMLi elementide sisu vaid paneb need ka stiliseeritud tabelisse, mis parandab loetavust. Tore oleks tõesti sait, kust kerge kinodes toimuvast infot saada ning see on hea põhi sellise teenuse loomiseks.&lt;br /&gt;
&lt;br /&gt;
Reigo Männiste D22&lt;br /&gt;
&lt;br /&gt;
Väga põhjalik XML fail ning väga hästi ülesehitatud stiilifail. Kõik vajalik on olemas ning veel lisaks ka muudki.&lt;br /&gt;
&lt;br /&gt;
Nimetused oleks võinud teistmoodi üles ehitada. Seal on olemas originaal ning tõlgitud filmi nimi, kuid sinna võiks olla võimalik lisada ka muid keeli. Kuigi kui rakendus jääbki ainult eesti keelseks siis pole vahet.&lt;br /&gt;
&lt;br /&gt;
Jarko Kaskmaa D21&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Teenuse arvamus&lt;br /&gt;
&lt;br /&gt;
Erinevaid teenuseid tundub olevat piisavalt palju, et antud veebiteenusele&lt;br /&gt;
saaks ehitada ühe korraliku ja kasuliku rakenduse. &lt;br /&gt;
Natuke tekitavad kahtlused näitkes võta hind, kustuta hind - mille jaoks neid vaja on?&lt;br /&gt;
Kui see käib mingi seansi kohta, siis võiks see olla näiteks filmi objekti küljes&lt;br /&gt;
koos teiste filmi parameetritega. Kui liiga palju meetoteid on, pole ka alati hea.&lt;br /&gt;
Aga samas, see on minu arvamus. Edu!&lt;br /&gt;
&lt;br /&gt;
Taavi Ilves D21&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Vastus: &lt;br /&gt;
&lt;br /&gt;
Tegelikult saab filmi küsimise meetodile öelda, kas ta annab ka alamobjektid (hind, zanr, inimesed jne) või mitte. &lt;br /&gt;
Eraldi ongi sellepärast, et saaks küsida ainult filmi kohta infot. Pannes üheks parameetriks &amp;quot;true&amp;quot;, siis pistetakse&lt;br /&gt;
hind filmi objekti külge. Samas on vaja hinda eraldi pärida näiteks kino hinnakirja genereerimiseks. Ning hindasid&lt;br /&gt;
peab saama eraldi ka kustutada, kuna hinnad ei ole ju jäigalt seotud filmiga vaid ikka kinoga.&lt;br /&gt;
&lt;br /&gt;
Aga täname arvamuse eest :)&lt;br /&gt;
&lt;br /&gt;
Kert Suvi D22&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Teenuse arvustus&lt;br /&gt;
&lt;br /&gt;
Teenuseid on korralik hulk, kuid Eestikeelsed API nimed ei ole arusaadavad välismaalastele. Segadust tekitab veel &amp;quot;anna*&amp;quot; ja &amp;quot;võta*&amp;quot;, kas mina annan talle ja ta võtab, või võtab tema ja annab mulle - nimi peaks ütleme kohe mis suunas liiklus käib. Tundub et mõned päringud saaks kokku &#039;&#039;mergeda&#039;&#039;, näiteks annaFilmid ja annaFilmidNimi. Üldiselt aga on kena :)&lt;br /&gt;
&lt;br /&gt;
-Tanel Liiv D22&lt;br /&gt;
&lt;br /&gt;
Teenuse arvustus&lt;br /&gt;
&lt;br /&gt;
Esimese asjana hakkas silma, et te olete iga päringu tüübi jaoks teinud eraldi teenuse. Minu arvates koodi loetavuse mõttes on see hea, aga teenust ennast oleks mugavam kasutada kui kõik meetodid oleks üheks teenuseks koondatud.&lt;br /&gt;
Üldiselt tundub, et teenusel on olemas kõikvõimalikud meetodid, mida vaja võiks minna. Positiivne on, et peaaegu kõigil meetoditel on olemas ka kirjeldus, et mida see teeb ning mis parameetreid vajab.&lt;br /&gt;
Projektiga võiksite .sln või vähemalt .csproj failid ka kaasa panna, et visual studios parem vaadata oleks ning käivitada saaks.&lt;br /&gt;
&lt;br /&gt;
Siim Aaver D21&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Vastus: &lt;br /&gt;
&lt;br /&gt;
Üks põhjus, miks jagasime tükkideks oligi loetavus. Teine põhjus on see, et kui keegi peaks avaldama soovi rakenduse tegemiseks meie teenusele, siis saame anda ligipääsu ainult &amp;quot;AnnaTeenus&amp;quot;-ele. Kui keegi teeb lihtsalt kinokava kuvamise rakenduse, siis pole tal vaja ei lisamise ega kustutamise teenust/meetodeid näha.&lt;br /&gt;
&lt;br /&gt;
Aga täname arvamuse eest :)&lt;br /&gt;
&lt;br /&gt;
Kert Suvi D22&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Kokkuvõttev arvustus===&lt;br /&gt;
&lt;br /&gt;
Meeskond valis hea teema. Kino infosüsteemi on kindlasti midagi, mida saaks ka reaalselt kasutada, muidugi kui kõik väga korralikult teha ning rakendust piisavalt siluda. Samas oleks võinud selle teema kohta alguses wikis ka natuke juttu olla, et  millist lõpptulemust oodatakse, millise funktsionaalsusega ning mis rakendustega.&lt;br /&gt;
&lt;br /&gt;
XML tehti igati korralikult nagu ka teenusekiht, kus kõik teemade kaupa ilusasti ära oli jagatud. Rakenduse puhul meeldis mulle välimus, mis jäi kohe positiivse asjan silma. On küll sees väiksemaid buge, kuid põhifunktsionaalsus paistab töötavat.&lt;br /&gt;
&lt;br /&gt;
Meeskonna toimimise poole pealt on hea näha seda, et võeti kasutusele teises aines õpitud ekstreemprogrammeerimise praktika, et rakendust tõhusamalt ehitada. Lisaks tehti enamus asju ühiselt valmis, seega ilmselt kõik meeskonnaliikmeid panustasid korralikult lõpptulemusele.&lt;br /&gt;
&lt;br /&gt;
Kui jätta välja teine klientrakendus, siis tundub, et kõik nõuded said täidetud, muidugi wiki oleks võinud natuke põhjalikum olla. Aga vaadates üldist projektide taset, siis igati korralik tulemus !&lt;br /&gt;
&lt;br /&gt;
Rauno Rüga, D21&lt;br /&gt;
&lt;br /&gt;
[[User:Rruga|Rruga]]&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=33384</id>
		<title>Meeskond &quot;FoodWars&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=33384"/>
		<updated>2011-05-30T14:28:21Z</updated>

		<summary type="html">&lt;p&gt;Rruga: /* Meeskonna kokkuvõttev aruanne */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Idee ==&lt;br /&gt;
Meie tiimil on plaanis teha internetipõhine söökla menüü süsteem (aluseks IT Kolledži kohvik, aga suunitlus selline, et kõik kohvikud/sööklad saaksid teha endale kasutajakonto ja hakata rakendust kasutama), kust saaks jälgida menüüd, mis sööke saab süüa, mis veel järgi on, kasutajatel on ka võimalus sööke hinnata (stiilis &amp;quot;meeldib&amp;quot;, &amp;quot;ei meeldi&amp;quot; nagu Facebook-is).&lt;br /&gt;
&lt;br /&gt;
Kohvikupidaja Teele soovid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* elektroonilisest menüüst asju kustutada, isegi siis kui asja peaks olema teoreetiliselt alles, aga tegelikult on asi otsas.&lt;br /&gt;
* elektrikatkestuse korral jääb menüü püsima. Ta peab teadma hindu mistahes olukorras.&lt;br /&gt;
* menüül näidatakse automaatselt ka ISIC kaardi omanike soodushinnad&lt;br /&gt;
* süsteem toetab ka poole portsjoni müümist.&lt;br /&gt;
&lt;br /&gt;
Linnar Viigi soovid/visioonid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* kõik oleks ka internetist kättesaadav, peale LCD ekraani, mis kajastab menüüd sööklas.&lt;br /&gt;
* aluseks facebook, kus siis söögid oleks nagu facebook-i alateemad.&lt;br /&gt;
* saab sööke hinnata, kommenteerida (täna oli väga maitsev praad).&lt;br /&gt;
* kasutajad saaks vaadata, mis menüüs on (ka järgmisel nädalal) ja mitu portsu veel alles on.&lt;br /&gt;
* kasutajad saaksid välja pakkuda menüüsid.&lt;br /&gt;
* erinevate söögikohtade kasutajad saaksid omavahel muljeid jagada.&lt;br /&gt;
* kuu aja aktiivsemad saavad prii lõuna.&lt;br /&gt;
* mingil ajal võib olla &amp;quot;happy hour&amp;quot; (enne sulgemist saab odavamalt).&lt;br /&gt;
* piiranguks on see, et toitu broneerida ei saa &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vaba tarkvara kasutamise võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Antud projekti puhul oleks võimalik kasutada [http://www.postgresql.org/ PostgreSQL] andmebaasi (vt. lisaks http://en.wikipedia.org/wiki/PostgreSQL ) Microsoft SQL Server&#039;i asemel. See võiks anda kasutajale võimaluse valida .NET ning [http://www.mono-project.com/ Mono] (vt. lisaks http://en.wikipedia.org/wiki/Mono_(software) ) platvormide vahel. Sel viisil oleks kliendil võimalik Microsoft&#039;i platvormi kõrval valida tõenäoliselt soodsam vaba tarkvara platvorm. Andmebaasi lõplik valik pole hetkel veel otsustatud.&lt;br /&gt;
&lt;br /&gt;
== Meeskond ja tööjaotus==&lt;br /&gt;
* Kristjan Stolin - projektijuht, suhtlus kliendiga, XML, wiki, teenuskihtide progemine, rollide halduse lehe progemine&lt;br /&gt;
* Ilmar Telga - XML, kliendiga suhtlus, wiki, teenuskihtide progemine, lõpprakenduste menüüd, login&lt;br /&gt;
* Rauno Rüga - XML, XSLT, andmebaasi loomine, wiki, mobiilirakendus, statistika&lt;br /&gt;
* Lauri Kermas - teenuskihtide ehitamine, wiki, rakenduse rollid ja kasutajad, login, kommenteerimise võimaluste progemine&lt;br /&gt;
&lt;br /&gt;
== XML Fail ==&lt;br /&gt;
=== XML ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Toidud&amp;gt;&lt;br /&gt;
  &amp;lt;Toit&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduNimetus&amp;gt;Viineri kaste&amp;lt;/ToiduNimetus&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduLiik&amp;gt;Praad&amp;lt;/ToiduLiik&amp;gt;&lt;br /&gt;
    &amp;lt;OlemasolevatYhikut&amp;gt;5&amp;lt;/OlemasolevatYhikut&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduKogus&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Poolportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;2011&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;1&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;9&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;15&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;07&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;23&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;        &lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.15&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;0&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;0&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;0&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;00&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;00&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;00&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Täisportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.80&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
    &amp;lt;/ToiduKogus&amp;gt;&lt;br /&gt;
    &amp;lt;Kommentaarid&amp;gt;&lt;br /&gt;
      &amp;lt;Kommentaar&amp;gt;&lt;br /&gt;
        &amp;lt;Saatja&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaNimi&amp;gt;Kristjan&amp;lt;/SaatjaNimi&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaRoll&amp;gt;Tudeng&amp;lt;/SaatjaRoll&amp;gt;&lt;br /&gt;
        &amp;lt;/Saatja&amp;gt;&lt;br /&gt;
        &amp;lt;Sisu&amp;gt;Minu lemmik toit ! Kui algebra tund ei hakkaks, sööks veel 5 portsjonit.&amp;lt;/Sisu&amp;gt;&lt;br /&gt;
      &amp;lt;/Kommentaar&amp;gt;&lt;br /&gt;
    &amp;lt;/Kommentaarid&amp;gt;&lt;br /&gt;
  &amp;lt;/Toit&amp;gt;&lt;br /&gt;
&amp;lt;/Toidud&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kommentaariks siis niipalju, et meie näide on ilma kohviku osata, selleks et näidet mitte liiga suureks ajada.&lt;br /&gt;
&lt;br /&gt;
Ka on meil moment puudu ID väljad, mis on igasugu andmebaasiga suhtlemiseks hädavajalikud, samas siin näidises palju juurde ei anna.&lt;br /&gt;
&lt;br /&gt;
Asja tegemisel avastasime, et põhiliseks arusaamatuse kohaks on toitude erinevad kogused (ehk siis pool portsjonit, suur / väike ja muud võrdlevad ühikud). Esimese võimalusena kaalusime teha lihtsalt täiesti eraldi toidud kõige kohta, stiilis &amp;quot;väike viineripraad&amp;quot; ja &amp;quot;suur viineripraad&amp;quot;. Kahjuks see variant ei kõlbaks eriti hästi, kuna need erinevad portsjonid kasutavad ikkagi samu materjale ja kui me peaks mingi süsteemiga näitama kui palju portsjoneid alles on. Sööklast näiteks pakuti et väike portsjon kasutab materjale kuskil 0.8 suure portsjoni ulatuses, ehk see suhtarv peaks olema kasutaja poolt (kohvikupidaja, restoraniomanik) ise sätitav. &lt;br /&gt;
&lt;br /&gt;
Tänu sellele sai meie süsteemi alustalaks siiski Toit, millel on oma Portsjonid siis erinevate hindade ja soodustustega. Moment pole meil ka Portsjoni XML osas toodud ära seost kogusega. (Kui palju ühe portsjoni lisamine/müümine peaks toidu üldkogust muutma).&lt;br /&gt;
&lt;br /&gt;
Kommenteerida saab meil moment toitu ennast, mitte eraldi portsjonit. Isegi kui kasutajad tahavad lisada kommentaare stiilis &amp;quot;See väike supp oli tõesti väga väike&amp;quot;, ei soovi nad seda ilmselt eraldi portsjoni alla panna. Tulevikus peaks kindlasti olema ka võimalus pigem kommenteerida üldisemalt (Kohvikut ennast, söögipaiku üldse), kui spetsiifilisemalt (Väikse prae kaste lisandi kohta).&lt;br /&gt;
&lt;br /&gt;
=== XML Schema ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Toidud&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Toit&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduNimetus&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;OlemasolevatYhikut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduKogus&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:choice maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;PortsjoniLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;Myygiaeg&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Aasta&amp;quot; type=&amp;quot;xs:unsignedShort&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Kuu&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Paev&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Tund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Minut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Sekund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;ToiduHind&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Eurohind&amp;quot; type=&amp;quot;xs:decimal&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Soodustus&amp;quot;&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseProtsent&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:choice&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Kommentaarid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Saatja&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaNimi&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaRoll&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Sisu&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
  &amp;lt;h2&amp;gt;Kohvikus müüdavad toidud&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr bgcolor=&amp;quot;#9acd32&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Veel alles&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Portsjon&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Müügiaeg&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustuse liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Kommentaar(id)&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;Toidud/Toit&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduNimetus&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduLiik&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;OlemasolevatYhikut&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;PortsjoniLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Paev&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Kuu&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Aasta&amp;quot; /&amp;gt; &amp;amp;nbsp;  &lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Tund&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Minut&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Sekund&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Eurohind&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseProtsent&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Kommentaarid/Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Sisu&amp;quot; /&amp;gt;&amp;amp;nbsp;(&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaRoll&amp;quot; /&amp;gt;&amp;amp;nbsp;&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaNimi&amp;quot; /&amp;gt;)&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XSLT poolt loodud tulemus on järgnev (lisasin veel kaks toitu XML faili, siin wiki lehel on ruumi kokkuhoiuks vaid 1 toit toitude listis):&lt;br /&gt;
[[File:Xslt.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arhitektuur ==&lt;br /&gt;
&lt;br /&gt;
Süsteem oli vahepeal plaanis ehitada kolmekihilise arhitektuuriga ([http://en.wikipedia.org/wiki/Multitier_architecture#Three-tier_architecture Three-tier architecture]). See peaks lihtsustama süsteemi haldamist ja laiendamist tulevikus. Aga kuna selle jaoks otsest vajadust polenud ja oleks vaid süsteemi keeruliseks ajanud, siis loobusime sellest.&lt;br /&gt;
&lt;br /&gt;
[[Image:three-tier.png|thumb|center|alt=Arhitektuuri skeem.|Arhitektuuri skeem.]]&lt;br /&gt;
&lt;br /&gt;
== Veebiteenus ==&lt;br /&gt;
===Andmemudel===&lt;br /&gt;
[[Image:KohvikuAndmemudel.jpg|thumb|right|alt=Kohviku projekti andmemudel|Andmemudel]]&lt;br /&gt;
Enne veebiteenuse meetodite kirjeldamist koostasime andmemudeli. Loodud andmemudeli põhjal lõime andmebaasi vajalike tabelite ja atribuutidega. Andmemudeli peal on rohelisega tähistatud tabelid, mis on oseselt seotud kohviku valdajaga ja mida WPF rakenduse jaoks kindlasti vaja on. Ülejäänud helesinised tabelid on vajalikud kasutajate võimaluste jaoks. Lisaks on andmemudelil kaks tabelit, mis pole teisega seotud, need on süsteemi administraatori jaoks, et oleks ülevaade, mis rakendused teenust enim kasutavad ning mis meetodeid kõige rohkem välja kutsutakse.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Teenuskihis olevad meetodid===&lt;br /&gt;
&lt;br /&gt;
====Kasutajatega seotud meetodid:====&lt;br /&gt;
*SaidiKasutajaLiik() - Tagastab antud kasutaja ID järgi kasutaja liigi nimetuse&lt;br /&gt;
*KustutaSaidiKasutaja() - Kustutab antud kasutaja ID järgi kasutaja tabelis Kasutaja&lt;br /&gt;
*AnnaKoikSaidiKasutajad() - Tagastab kõik kirjed tabelist Kasutaja&lt;br /&gt;
*AnnaKoikKohvikuKasutajad() - Tagastab antud kohviku ID järgi kõik kohviku kasutajad massiivina&lt;br /&gt;
*MuudaSaidiKasutajaLiik() - Muudab antud kasutaja ID järgi kasutaja liigi tabelis Kasutaja&lt;br /&gt;
*KoikLubatudSaidiKasutajaTyybid() - Tagastab andmebaasi kõik võimalikud kohviku kasutaja rollid (id-d ja nimed), muud andmed jäävad tühjaks&lt;br /&gt;
*KoikLubatudKohvikuRollid() - Tagastab andmebaasi kõik võimalikud site kasutaja rollid (id-d ja nimed), kohviku_id jääb tühjaks&lt;br /&gt;
*KasutajaKohvikuRollid() - Tagastab antud kasutaja ID järgi kõik kasutaja rollid kõikides kohvikutes&lt;br /&gt;
*MuudaKohvikuKasutajaRoll() - Muudab antud kasutaja ID ja kohviku ID järgi kasutaja rolli kohvikus, kui rolli pole, siis tekitatakse uus&lt;br /&gt;
*SaidiKasutajaLiikID() - Tagastab antud kasutaja ID järgi kasutaja liigi ID&lt;br /&gt;
*KohvikuKasutajaLiikID() - Tagastab antud kasutaja ID ja kohviku ID järgi kohviku kasutaja rolli ID&lt;br /&gt;
*AnnaKasutajaMeiliAadress() - Tagastab antud kasutaja nime alusel kasutaja meiliaadressi&lt;br /&gt;
*AnnaKasutajaIdJargi() - Tagastab kasutajanime kasutaja ID järgi&lt;br /&gt;
*AuthendiKasutaja() - Autendib kasutaja, õnnestumisel tagastab kasutaja ID, ebaõnnestumisel null &lt;br /&gt;
*RegistreeriKasutaja() - Registreerib kasutaja andmebaasi ja tagastab true kui kasutaja loomine õnnestus&lt;br /&gt;
&lt;br /&gt;
====Menüüga seotud meetodid====&lt;br /&gt;
*LisaArtikkelMenuuse() - Seob menüüartikli ja menüü&lt;br /&gt;
*LisaKohvikuleMenuu() - Seob menüü ja kohviku&lt;br /&gt;
*TagastabMenuuMuutujad() - Tagastab menüü järgi kas inimesel oleks õigust seda muuta&lt;br /&gt;
*KustutaMenuuJaKohvikuSeos() - Kustutab menüü ja kohviku seose&lt;br /&gt;
*LisaUusMenuu() - Teeb uue menüü, seob selle kohvikuga, kui kohviku ID on parameetrina kaasa antud&lt;br /&gt;
*MenuuKohvikuIdJargi() - Tagastab kohviku ID järgi kohviku tänaste või mitte tänaste menüüde ID-de massiivi&lt;br /&gt;
*LisaMenuuArtikkelMenuuse() - Sisestab antud müügiartikli menüüsse, mille ID on menyy_id&lt;br /&gt;
*KustutaMenuuArtikkel() - Kustutab müügiartikli ID ja menüü ID järgi müügiartikli menüüst&lt;br /&gt;
*TagastaMenuuArtiklid() - Tagastab menüü ID järgi menüüs olevad müügiartiklid&lt;br /&gt;
*VahetaMenuuArtiklit() - Muudab antud müügiartikli tabelis Myygiartikkel&lt;br /&gt;
*MenuuNimetus() - Tagastab menüü ID järgi menüü nimetuse&lt;br /&gt;
*AnnaMuugiartiklidMidaMenuusPole() - Tagastab müügiartiklid, mis pole veel menüüs, kus on juba müügiartiklid, mille IDd on antud massiivis&lt;br /&gt;
*AnnaMenuuNimed() - Tagastab kõigi menüüde nimetused tabelis Menyy&lt;br /&gt;
&lt;br /&gt;
====Kohvikutest üldiselt====&lt;br /&gt;
*KohvikuteNimed() - Tagastab kõigi kohvikute nimed massiivina&lt;br /&gt;
*KohvikuNimiIdJargi() - Tagastab antud kohviku ID järgi kohviku nime&lt;br /&gt;
*AnnaKoikOmanikuKohvikud() - Tagastab antud omaniku ID järgi kõik omaniku kohvikute ID-d massiivina&lt;br /&gt;
*Kohvikud() - Tagastab kõik kohvikute kirjed tabelist Kohvik&lt;br /&gt;
*KohvikuteArv() - Tagastab kõigi kohvikute arvu&lt;br /&gt;
*AnnaKaubad() - Tagastab kõik kaubad tabelist Kaup&lt;br /&gt;
*LisaKaup() - Lisab kauba kaupade nimekirja&lt;br /&gt;
*LisaKohvik() - Uue kohviku lisamine&lt;br /&gt;
&lt;br /&gt;
====Kommentaaridega seotud meetodid:====&lt;br /&gt;
*KohvikuKommentaarideArv() - Kohviku kommentaaride arv&lt;br /&gt;
*AnnaKohvikuKommentaarid() - Tagastab kommentaarid lehtede kaupa&lt;br /&gt;
*AnnaKohvikuKommentaar() - Tagastab üksiku kommentaari&lt;br /&gt;
*AnnaKohvikuKommentaarideHinded() - Tagastab kommentaaride jaoks võimalikud hinded koos kirjeldustega&lt;br /&gt;
*LisaKohvikuKommentaar() - Lisab kohviku kommentaari&lt;br /&gt;
*MuudaKohvikuKommentaar() - Muudab kohviku kommentaari&lt;br /&gt;
*MuudaKohvikuKommentaariOlek() - Muudab kohviku kommentaari oleku&lt;br /&gt;
*MuudaKohvikuKommentaariPeidetus() - Muudab kohviku kommentaari peidetust&lt;br /&gt;
&lt;br /&gt;
====Statistikaga seotud meetodid:====&lt;br /&gt;
*StatistikaRakendusteKohtaTana() - Tagastab rakenduse nimed ja nende vastu tehtud päringud tänasel päeval&lt;br /&gt;
*StatistikaRakendusteKohtaViimaneNadal() - Tagastab rakenduse nimed ja nende vastu tehtud päringud viimase nädala jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaSellelKuul() - Tagastab rakenduse nimed ja nende vastu tehtud päringud selle kuu jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaKokku() - Tagastab rakenduse nimed ja nende vastu tehtud päringud kogu aja vältel&lt;br /&gt;
*StatistikaMeetoditeKohtaTana() - Meetod leiab tänase päeva jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaViimaneNadal() - Meetod leiab viimase nädala jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaSellelKuul() - Meetod leiab kuu jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaKokku() - Meetod leiab kogu aja vältel kasutatud meetodid ja paringute arvu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebiteenuse projekti (WCF + andmebaas) saab siit: http://enos.itcollege.ee/~rruga/VRII/Teenusekiht.zip&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : CMS ==&lt;br /&gt;
&lt;br /&gt;
Meie loodud veebirakenduses on realiseeritud järgnevad CMS seotud funktsionaalsused :&lt;br /&gt;
*Kõikide kohvikute lehed on eraldi aadressiga, mis võimaldab eri kohvikud bookmarkida ja facebooki like anda. See on saavutatud tänu ?kohvik=1 aadressiribal, kus parameeteri kohvik number identifitseerib kohviku.&lt;br /&gt;
*Adminni õigustega kasutajal on võimalik lisada uus kohvikuid andembaasi&lt;br /&gt;
*Kohviku omanik saab lisada menüüd, muuta seda ja kustutada&lt;br /&gt;
*Adminnid saavad kasutajaid hallata, määrates nendele rolle, mis omakorda tagab teatud õigused&lt;br /&gt;
*Kohviku omanikud saavad  oma kohviku kasutajaid hallata, määrates neile näiteks müüja või kliendi rolli.&lt;br /&gt;
*Kogu menüü põhineb sitemapil, mille alus on kirjeldatud eraldi sitemap failis, lisaks sellel lisatakse sinna dünaamiselt kohvikud juurde ( mis andmebaasis olemas on )&lt;br /&gt;
*Kohviku omanik saab kohviku lehte isikupärastada tänu richteksti osale, näiteks lisada html osi.&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Veebirakendus ==&lt;br /&gt;
&lt;br /&gt;
Veebiteenust kasutavaks veebirakenduseks on ASP.NET rakendus. &lt;br /&gt;
&lt;br /&gt;
* Esilehel saab otsida kohvikuid või minna kohe huvipakkuva kohviku menüü lehele.&lt;br /&gt;
* Kohviku menüü lehel on näha tänased ja teised menüüd, kohviku lahtioleku aeg. Kui panna veebirakendus internetti, siis on võimalus Facebook-i kaudu kohviku fänniks hakata. Kommenteerimise ja soodustuste osa on veel pooleli.&lt;br /&gt;
* Sisse loginud kohviku omanik saab ka kohviku menüüsid muuta, lisada, kustutada. &lt;br /&gt;
* Kasutajate lehel saab sisse loginud kohviku omanik hallata kohviku kasutajaid.&lt;br /&gt;
* Statistika lehel saab vaadata statistikat teenust kasutanud rakenduste ja kasutatud meetodite kohta. Näeb nii tänase päeva, viimase nädala, selle kuu ja aasta statistikat&lt;br /&gt;
* Kohviku lisamise lehel saab aga admini õigustege kasutaja lisada uue kohviku.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:KohvikuMenuEdit.JPG|800px|Kohviku menüü muutmise leht. ITK kohviku menüüde muutmiseks tuleb logida sisse kasutajaga Ilmar parooliga &amp;quot;ilmar&amp;quot;.]]&lt;br /&gt;
&lt;br /&gt;
Kohviku menüü muutmise leht. ITK kohviku menüüde muutmiseks tuleb logida sisse kasutajaga Ilmar parooliga &amp;quot;ilmar&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Kohviku admin osa nägemiseks võib sisse logida kasutajaga rauno, parool on ka rauno. Sellega saab ligi statistikale ja uue kohviku loomisele.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebirakenduse koos uuendatud teenuskihiga saab siit: http://enos.itcollege.ee/~rruga/VRII/KohvikuProjekt.rar&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Kommentaaride komponent ==&lt;br /&gt;
&lt;br /&gt;
Kommentaaride sisestamiseks ja haldamiseks on loodud iseseisev ning enam jaolt taas kasutatav kommentaaride komponent. Komponent on hetkel realiseeritud ASP&#039;i User Control&#039;ina ja mitte Custom Control&#039;ina, mis vähendab veidi selle üleviidavust teistesse projektidesse. Siiski on selle muutmine ASP&#039;i Custom Control&#039;iks mõningate muudatustega võimalik.&lt;br /&gt;
&lt;br /&gt;
[[Image:comskeem.png|thumb|center|alt=Kommentaari komponendi skeem.|Kommentaari komponendi skeem.]]&lt;br /&gt;
&lt;br /&gt;
Kommentaaride komponent koosneb kahest osast, mis lisatakse lehele, millel vajatakse kommenteerimise funktsionaalsust:&lt;br /&gt;
sisendkontroll - see komponent on vajalik uute kommentaaride sisestamiseks;&lt;br /&gt;
väljundkontroll - antud komponent esitab olemasolevad kommentaarid hulga kaupa.&lt;br /&gt;
&lt;br /&gt;
Mõlemad kommentaari komponendi osad on kasutatavad ka iseseisvalt, kui see peaks vajalik olema. Kommentaari andmeid esitavad need komponendid läbi iseseisvate kommentaarikontrollide, mida võib ühel kontrollil olla ka mitu. Kommentaarikontrollid ei ole võimelised iseseisvalt kommentaaride andmeid hankima ning seepärast tuleb need täita väljapoolt, kas sisend- või väljundkontrollide poolt. Samuti tuleb uue kommentaari loomine läbi viia kommentaarikontrolli väliselt - seda teostabki sisendikontroll. Samas kogu ülejäänud kommentaari haldus, nagu olemasolevate kommentaaride muutmine ning uute olekute seadmine toimub üksnes läbi iseseisvate kommentaarikontrollide, mis sisaldavad täies mahus vastavat funktsionaalsust.&lt;br /&gt;
&lt;br /&gt;
Kommentaaride komponendi kõik kolm osa (sisendkontroll, väljundkontroll ja kommentaarikontroll) suhtlevad teenusekihiga läbi vastava ligipääsuobjekti. Ligipääsuobjekt tegeleb ühenduse ning sellega seonduvate võimalike vigade haldamisega. Kokkuvõtlikult loob see vajaduse korral uue ühenduse, sooritab päringud ning lõpuks sulgeb ühenduse, kui vastav korraldus antakse.&lt;br /&gt;
&lt;br /&gt;
Teenuses on vastavad protseduurid, mida teenusega suhtlemisel välja kutsutakse ning mis teostavad reaalseid muudatusi andmebaasis, seda muidugi vastavalt reeglitele.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus II : Mobiilirakendus ==&lt;br /&gt;
&lt;br /&gt;
Teine rakendus, mis veebiteenuse peale ehitatud sai, oli Windows Phone 7 rakendus. Lühidalt kirjeldades saab peale rakenduse käivitamist näha listi kõikidest olemasolevatest kohvikutest. Kui vajutad mingi kohviku nime peale, avaneb täpsem kirjeldus kohviku kohta, kust näeb lisaks kohviku nimele ka lühikest kirjeldust, tänast lahtiolekuaega ja kohviku aadressit. Samuti on kohviku kirjelduse lehel viide kohviku tänasele menüüle ja kommenteerimisele. Vajutades vaata menüüd nuppu avaneb vaade täna müügis olevatest müügiartiklitest ja nende hinnast, vajutades aga kommenteeri kohvikut nupule avaneb võimalus lisada kohviku kohta kommentaar.&lt;br /&gt;
&lt;br /&gt;
Kokkuvõttev pilt realiseeritud võimalustest:&lt;br /&gt;
&lt;br /&gt;
[[Image:WP7 rakendus.jpg|alt=WP7 rakendus.|WP7 rakenduse võimalused.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mobiilirakenduse saab alla tõmmata siit: http://enos.itcollege.ee/~rruga/VRII/Mobiilirakendus.rar&lt;br /&gt;
&lt;br /&gt;
NB! Et mobiilirakendust proovida ja mõistliku tulemust saada peab teil olema kõige uuem versioon meie projekti teenuskihist ning teenuskiht peab töötama.&lt;br /&gt;
&lt;br /&gt;
== Meeskonna punktide jaotus ==&lt;br /&gt;
Kõigi grupiliikmetega sai arutatud punktide jagamise üle ja ühine arvamus oli, et punktid jaotatakse järgnevalt:&lt;br /&gt;
*Rauno Rüga - 29 punkti&lt;br /&gt;
*Ilmar Telga - 20 punkti&lt;br /&gt;
*Kristjan Stolin - 17 punkti&lt;br /&gt;
*Lauri Kermas - 14 punkti&lt;br /&gt;
&lt;br /&gt;
== Meeskonna kokkuvõttev aruanne ==&lt;br /&gt;
&lt;br /&gt;
===Mis sai tehtud ?===&lt;br /&gt;
&lt;br /&gt;
Projektiks valisime ühtse kohvikute süsteemi loomise, et klientidel oleks hea mõnus kohvikute kohta infot vaadata ja samamoodi kohviku omanik saaks menüüd läbi arvuti hallata. Selle jaoks sai valmis tehtud korralik andmemudel, mille põhjal andmebaas genereeritud. Andmebaas olemas, sai hakatud teenuskihti ehitama kõigi vajalike meetoditega rakenduste jaoks. Paralleelselt sai hakatud ka lõpprakendusi tegema, sest nii oli hea arendad, kuna rakendust tehes tekkisid ideed, mis meetodeid oleks vaja, et mingit tegevust läbi viia. Valmis kaks klientrakendust, millest esimene oli põhjalikum asp.net rakendus, mis oli sunatud nii klientidele, kohvikute omanikele kui kogu süsteemi administreerijatele. Teine rakendus, mobiilirakendus, oli väiksema sisuga, rohkem suunatud klientidele, et vaadata infot kohvikute kohta ja kohvikuid kommenteerida.&lt;br /&gt;
&lt;br /&gt;
===Mida sai peale viimast esitlust veel täiendatud ?===&lt;br /&gt;
&lt;br /&gt;
*ASP.NET rakendusel sai statistika charte sipakene väiksemaks tehtud, et nad näeksid paremad välja ja korraga ekraanil oleks näha nii päeva, nädala, kuu kui ka kogu aja jaotus (loomulikult normaalse suurusega ekraani puhul)&lt;br /&gt;
*Mobiilirakenduses menüü kuvamine korralikumaks (toit ja hind palkirjad juurde)&lt;br /&gt;
*Mobiilirakenduses kommenteerija nimi salvestatakse mobiili mällu, niiet kommenteerima tulles on kohe nime lahtris oma nimi alati olemas&lt;br /&gt;
&lt;br /&gt;
(Täiendused on olemas ka juba projekti rar failidel, millele siin wikis viited on)&lt;br /&gt;
&lt;br /&gt;
===Õpitud teadmised / omandatud kogemused===&lt;br /&gt;
&lt;br /&gt;
*XML, XSLT koostamine&lt;br /&gt;
*Teenuskihi ehitamine ja selle ühildamine nii andmebaasi kui rakendustega&lt;br /&gt;
*Rakenduste ehitamine teenuskihi peale&lt;br /&gt;
*Meeskonnatöö korraldamine&lt;br /&gt;
*Aja planeerimine&lt;br /&gt;
&lt;br /&gt;
===Ligikaudne ajahinnang tehtud tööle===&lt;br /&gt;
&lt;br /&gt;
*XML,XSLT koostamine ja selle arutamine rühmas - 5 h&lt;br /&gt;
*Andmemudeli arutamine grupis, selle loomine, täiendamine ja projekti ühildamine - 20 h&lt;br /&gt;
*Teenuskihi ehitamine - 60 h&lt;br /&gt;
*ASP.NET rakenduse tegemine - 75 h  &lt;br /&gt;
*Mobiilirakenduse tegemine - 24 h&lt;br /&gt;
&lt;br /&gt;
(Arvesse võtsime nii reaalse töö projekti kallal kui ka seotud teemadega tutvumine (näidete uurimine/läbi tegemine jne))&lt;br /&gt;
(Töö tunnid on kõigi inimeste peale kokku ehk kui arutasime kolmekesi XML struktuuri 1 tunni, siis kokku 3 töötundi)&lt;br /&gt;
===Kokkuvõtva esitluse slaidid ===&lt;br /&gt;
&lt;br /&gt;
== Logi ==&lt;br /&gt;
&lt;br /&gt;
=== 8. Mai ===&lt;br /&gt;
Veebirakendus esitluseks valmis. Täiendatud vikilehte.&lt;br /&gt;
&lt;br /&gt;
=== 7. Mai ===&lt;br /&gt;
Mobiilirakendus sai valmis ja selle kohta uuendatud vikilehte.&lt;br /&gt;
&lt;br /&gt;
=== 17. aprill ===&lt;br /&gt;
Wikilehe täiendamine andmemudeli ja veebiteenuse meetodite kirjeldusega.&lt;br /&gt;
&lt;br /&gt;
=== 9. aprill ===&lt;br /&gt;
Tegime rollide halduse, münüüde muutmise vormi. Meili saatmine registreerimisel. Toimus andmebaasi andmemudeli väike muutus. &lt;br /&gt;
&lt;br /&gt;
=== 30. märts ===&lt;br /&gt;
Tehtud on kohviku menüü ja kohviku kommenteerimise leht.&lt;br /&gt;
&lt;br /&gt;
=== 26. märts ===&lt;br /&gt;
Tehtud on esimesed veebiteenuse meetodid ja veebirakendusele kasutajate registreerimine.&lt;br /&gt;
&lt;br /&gt;
=== 10. märts ===&lt;br /&gt;
Väikese häki abil õnnestus kohviku kassa arvutis saada tööle üks Forms-i proovirakendus.&lt;br /&gt;
&lt;br /&gt;
=== 8. märts ===&lt;br /&gt;
Kuna kassa-aparaadis on operatsioonisüsteemiks Windows XP ja raud on 1.99 GHz, 256 RAM siis peaks saama&lt;br /&gt;
prototüübiks teha sinna peale rakenduse, mille ülesandeks menüüga tegelemine. &lt;br /&gt;
&lt;br /&gt;
=== 7. märts ===&lt;br /&gt;
Linnar Viik andis meile järgmist nõu: tuleb eristada kahte asja - see, mis peab valmis saama (&#039;&#039;must&#039;&#039;) ja see, mis oleks tore (&#039;&#039;nice to have&#039;&#039;). Valmis peab saama menüüga ekraan seinal (esialgu kasutajale prototüübi näitamiseks kasvõi näiteks PowerPoint-i abil tehtud). Alles siis kui on kasutajalt positiivne tagasiside saadud, võib edasi minna reaalse tarkvaralahenduse loomisega. Kui ka see on valmis ja kasutaja sellega rahul võib juurde mõelda &#039;&#039;nice to have&#039;&#039; asju (näiteks eelinfo järgmise päeva menüü kohta, üliõpilasesinduse sõnumite riba ja muid asju).&lt;br /&gt;
&lt;br /&gt;
Saime teada, et kui tahame, et meie loodav süsteem suhtleks IT Kohviku kassasüsteemiga, siis tuleb selle süsteemi tootjatega ühendust võtta ja nendega konsulteerida.&lt;br /&gt;
&lt;br /&gt;
=== 19.Veebruar ===&lt;br /&gt;
*Valmis XSLT fail.&lt;br /&gt;
&lt;br /&gt;
=== 9.Veebruar ===&lt;br /&gt;
* Esmane versioon XML ja XML Schemast olemas&lt;br /&gt;
* Tekkis küsimus kas XSLT faili tuleb käsitsi tekitada või automaatselt.&lt;br /&gt;
* Küsimus oli ka kas lahendasime portsjoni asja mõistlikult või oleks mõni teine lähenemine parem olnud.&lt;br /&gt;
* Küsimus, kas XML fail on liiga üle pingutatud või sobiva keerukusega&lt;br /&gt;
&lt;br /&gt;
=== 7. Veebruar ===&lt;br /&gt;
* Võtsime õppejõu poolt pakutud ideest kohe kinni, sest me eelistame teha praktilist asja, mida saab kasutada ja mille kasutamist saame ka iga päev jälgida. &lt;br /&gt;
* Esimese asjana otsustasime välja uurida mida meie &amp;quot;kliendid&amp;quot; (süsteemi tellijad) meilt ootavad. (Soovid idee punkti all)&lt;br /&gt;
* Valminud on lihtne teenusest ja klientidest koosnev süsteemi testmudel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Kasulikud lingid ==&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCF_auto_client_proxies.aspx&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/ms178472.aspx&lt;br /&gt;
&lt;br /&gt;
http://support.microsoft.com/kb/305141&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/aa702565.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/scottgu/archive/2007/04/06/tip-trick-enabling-ssl-on-iis7-using-self-signed-certificates.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/scottgu/archive/2010/06/28/introducing-iis-express.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/scottgu/archive/2011/01/03/vs-2010-sp1-beta-and-iis-developer-express.aspx&lt;br /&gt;
&lt;br /&gt;
http://blogs.msdn.com/b/webdevtools/archive/2011/03/14/enabling-iis-express-support-in-vs-2010-sp1.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/gunnarpeipman/archive/2010/12/11/visual-studio-2010-sp1-beta-supports-iis-express.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.dotnetcurry.com/ShowArticle.aspx?ID=487&lt;br /&gt;
&lt;br /&gt;
http://davidkiff.co.uk/post/2009/09/22/Setting-up-SSL-for-WCF-in-Development.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.request-response.com/blog/CommentView,guid,e9bb929b-d0b4-4626-b302-1d2715fc344a.aspx&lt;br /&gt;
&lt;br /&gt;
=== Kokkuvõtvad lingid ===&lt;br /&gt;
&lt;br /&gt;
* WCF&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/library/ee958158.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCF_auto_client_proxies.aspx&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/aa702565.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCFInstance.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCFConcurrency.aspx&lt;br /&gt;
&lt;br /&gt;
http://codeidol.com/csharp/wcf/Concurrency-Management/Service-Concurrency-Mode/&lt;br /&gt;
&lt;br /&gt;
* ASP&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/ms178472.aspx&lt;br /&gt;
&lt;br /&gt;
http://support.microsoft.com/kb/305141&lt;br /&gt;
&lt;br /&gt;
http://www.west-wind.com/weblog/posts/2008/Aug/14/ASPNET-gets-no-Respect&lt;br /&gt;
&lt;br /&gt;
http://lostechies.com/jimmybogard/2008/05/19/asp-net-officially-unmaintainable/&lt;br /&gt;
&lt;br /&gt;
http://www.lullabot.com/blog/why-not-asp-net&lt;br /&gt;
&lt;br /&gt;
http://reverseblade.blogspot.com/2008/06/web-development-aspnet-webforms-versus.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Võrgurakendused II: hajussüsteemide ehitamine]]&lt;br /&gt;
[[Category: Veebirakenduste loomine ASP.NET abil]]&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=33383</id>
		<title>Meeskond &quot;FoodWars&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=33383"/>
		<updated>2011-05-30T14:20:31Z</updated>

		<summary type="html">&lt;p&gt;Rruga: /* Meeskonna kokkuvõttev aruanne */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Idee ==&lt;br /&gt;
Meie tiimil on plaanis teha internetipõhine söökla menüü süsteem (aluseks IT Kolledži kohvik, aga suunitlus selline, et kõik kohvikud/sööklad saaksid teha endale kasutajakonto ja hakata rakendust kasutama), kust saaks jälgida menüüd, mis sööke saab süüa, mis veel järgi on, kasutajatel on ka võimalus sööke hinnata (stiilis &amp;quot;meeldib&amp;quot;, &amp;quot;ei meeldi&amp;quot; nagu Facebook-is).&lt;br /&gt;
&lt;br /&gt;
Kohvikupidaja Teele soovid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* elektroonilisest menüüst asju kustutada, isegi siis kui asja peaks olema teoreetiliselt alles, aga tegelikult on asi otsas.&lt;br /&gt;
* elektrikatkestuse korral jääb menüü püsima. Ta peab teadma hindu mistahes olukorras.&lt;br /&gt;
* menüül näidatakse automaatselt ka ISIC kaardi omanike soodushinnad&lt;br /&gt;
* süsteem toetab ka poole portsjoni müümist.&lt;br /&gt;
&lt;br /&gt;
Linnar Viigi soovid/visioonid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* kõik oleks ka internetist kättesaadav, peale LCD ekraani, mis kajastab menüüd sööklas.&lt;br /&gt;
* aluseks facebook, kus siis söögid oleks nagu facebook-i alateemad.&lt;br /&gt;
* saab sööke hinnata, kommenteerida (täna oli väga maitsev praad).&lt;br /&gt;
* kasutajad saaks vaadata, mis menüüs on (ka järgmisel nädalal) ja mitu portsu veel alles on.&lt;br /&gt;
* kasutajad saaksid välja pakkuda menüüsid.&lt;br /&gt;
* erinevate söögikohtade kasutajad saaksid omavahel muljeid jagada.&lt;br /&gt;
* kuu aja aktiivsemad saavad prii lõuna.&lt;br /&gt;
* mingil ajal võib olla &amp;quot;happy hour&amp;quot; (enne sulgemist saab odavamalt).&lt;br /&gt;
* piiranguks on see, et toitu broneerida ei saa &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vaba tarkvara kasutamise võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Antud projekti puhul oleks võimalik kasutada [http://www.postgresql.org/ PostgreSQL] andmebaasi (vt. lisaks http://en.wikipedia.org/wiki/PostgreSQL ) Microsoft SQL Server&#039;i asemel. See võiks anda kasutajale võimaluse valida .NET ning [http://www.mono-project.com/ Mono] (vt. lisaks http://en.wikipedia.org/wiki/Mono_(software) ) platvormide vahel. Sel viisil oleks kliendil võimalik Microsoft&#039;i platvormi kõrval valida tõenäoliselt soodsam vaba tarkvara platvorm. Andmebaasi lõplik valik pole hetkel veel otsustatud.&lt;br /&gt;
&lt;br /&gt;
== Meeskond ja tööjaotus==&lt;br /&gt;
* Kristjan Stolin - projektijuht, suhtlus kliendiga, XML, wiki, teenuskihtide progemine, rollide halduse lehe progemine&lt;br /&gt;
* Ilmar Telga - XML, kliendiga suhtlus, wiki, teenuskihtide progemine, lõpprakenduste menüüd, login&lt;br /&gt;
* Rauno Rüga - XML, XSLT, andmebaasi loomine, wiki, mobiilirakendus, statistika&lt;br /&gt;
* Lauri Kermas - teenuskihtide ehitamine, wiki, rakenduse rollid ja kasutajad, login, kommenteerimise võimaluste progemine&lt;br /&gt;
&lt;br /&gt;
== XML Fail ==&lt;br /&gt;
=== XML ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Toidud&amp;gt;&lt;br /&gt;
  &amp;lt;Toit&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduNimetus&amp;gt;Viineri kaste&amp;lt;/ToiduNimetus&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduLiik&amp;gt;Praad&amp;lt;/ToiduLiik&amp;gt;&lt;br /&gt;
    &amp;lt;OlemasolevatYhikut&amp;gt;5&amp;lt;/OlemasolevatYhikut&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduKogus&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Poolportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;2011&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;1&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;9&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;15&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;07&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;23&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;        &lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.15&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;0&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;0&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;0&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;00&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;00&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;00&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Täisportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.80&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
    &amp;lt;/ToiduKogus&amp;gt;&lt;br /&gt;
    &amp;lt;Kommentaarid&amp;gt;&lt;br /&gt;
      &amp;lt;Kommentaar&amp;gt;&lt;br /&gt;
        &amp;lt;Saatja&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaNimi&amp;gt;Kristjan&amp;lt;/SaatjaNimi&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaRoll&amp;gt;Tudeng&amp;lt;/SaatjaRoll&amp;gt;&lt;br /&gt;
        &amp;lt;/Saatja&amp;gt;&lt;br /&gt;
        &amp;lt;Sisu&amp;gt;Minu lemmik toit ! Kui algebra tund ei hakkaks, sööks veel 5 portsjonit.&amp;lt;/Sisu&amp;gt;&lt;br /&gt;
      &amp;lt;/Kommentaar&amp;gt;&lt;br /&gt;
    &amp;lt;/Kommentaarid&amp;gt;&lt;br /&gt;
  &amp;lt;/Toit&amp;gt;&lt;br /&gt;
&amp;lt;/Toidud&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kommentaariks siis niipalju, et meie näide on ilma kohviku osata, selleks et näidet mitte liiga suureks ajada.&lt;br /&gt;
&lt;br /&gt;
Ka on meil moment puudu ID väljad, mis on igasugu andmebaasiga suhtlemiseks hädavajalikud, samas siin näidises palju juurde ei anna.&lt;br /&gt;
&lt;br /&gt;
Asja tegemisel avastasime, et põhiliseks arusaamatuse kohaks on toitude erinevad kogused (ehk siis pool portsjonit, suur / väike ja muud võrdlevad ühikud). Esimese võimalusena kaalusime teha lihtsalt täiesti eraldi toidud kõige kohta, stiilis &amp;quot;väike viineripraad&amp;quot; ja &amp;quot;suur viineripraad&amp;quot;. Kahjuks see variant ei kõlbaks eriti hästi, kuna need erinevad portsjonid kasutavad ikkagi samu materjale ja kui me peaks mingi süsteemiga näitama kui palju portsjoneid alles on. Sööklast näiteks pakuti et väike portsjon kasutab materjale kuskil 0.8 suure portsjoni ulatuses, ehk see suhtarv peaks olema kasutaja poolt (kohvikupidaja, restoraniomanik) ise sätitav. &lt;br /&gt;
&lt;br /&gt;
Tänu sellele sai meie süsteemi alustalaks siiski Toit, millel on oma Portsjonid siis erinevate hindade ja soodustustega. Moment pole meil ka Portsjoni XML osas toodud ära seost kogusega. (Kui palju ühe portsjoni lisamine/müümine peaks toidu üldkogust muutma).&lt;br /&gt;
&lt;br /&gt;
Kommenteerida saab meil moment toitu ennast, mitte eraldi portsjonit. Isegi kui kasutajad tahavad lisada kommentaare stiilis &amp;quot;See väike supp oli tõesti väga väike&amp;quot;, ei soovi nad seda ilmselt eraldi portsjoni alla panna. Tulevikus peaks kindlasti olema ka võimalus pigem kommenteerida üldisemalt (Kohvikut ennast, söögipaiku üldse), kui spetsiifilisemalt (Väikse prae kaste lisandi kohta).&lt;br /&gt;
&lt;br /&gt;
=== XML Schema ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Toidud&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Toit&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduNimetus&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;OlemasolevatYhikut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduKogus&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:choice maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;PortsjoniLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;Myygiaeg&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Aasta&amp;quot; type=&amp;quot;xs:unsignedShort&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Kuu&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Paev&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Tund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Minut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Sekund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;ToiduHind&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Eurohind&amp;quot; type=&amp;quot;xs:decimal&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Soodustus&amp;quot;&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseProtsent&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:choice&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Kommentaarid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Saatja&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaNimi&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaRoll&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Sisu&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
  &amp;lt;h2&amp;gt;Kohvikus müüdavad toidud&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr bgcolor=&amp;quot;#9acd32&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Veel alles&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Portsjon&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Müügiaeg&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustuse liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Kommentaar(id)&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;Toidud/Toit&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduNimetus&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduLiik&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;OlemasolevatYhikut&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;PortsjoniLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Paev&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Kuu&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Aasta&amp;quot; /&amp;gt; &amp;amp;nbsp;  &lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Tund&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Minut&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Sekund&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Eurohind&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseProtsent&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Kommentaarid/Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Sisu&amp;quot; /&amp;gt;&amp;amp;nbsp;(&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaRoll&amp;quot; /&amp;gt;&amp;amp;nbsp;&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaNimi&amp;quot; /&amp;gt;)&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XSLT poolt loodud tulemus on järgnev (lisasin veel kaks toitu XML faili, siin wiki lehel on ruumi kokkuhoiuks vaid 1 toit toitude listis):&lt;br /&gt;
[[File:Xslt.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arhitektuur ==&lt;br /&gt;
&lt;br /&gt;
Süsteem oli vahepeal plaanis ehitada kolmekihilise arhitektuuriga ([http://en.wikipedia.org/wiki/Multitier_architecture#Three-tier_architecture Three-tier architecture]). See peaks lihtsustama süsteemi haldamist ja laiendamist tulevikus. Aga kuna selle jaoks otsest vajadust polenud ja oleks vaid süsteemi keeruliseks ajanud, siis loobusime sellest.&lt;br /&gt;
&lt;br /&gt;
[[Image:three-tier.png|thumb|center|alt=Arhitektuuri skeem.|Arhitektuuri skeem.]]&lt;br /&gt;
&lt;br /&gt;
== Veebiteenus ==&lt;br /&gt;
===Andmemudel===&lt;br /&gt;
[[Image:KohvikuAndmemudel.jpg|thumb|right|alt=Kohviku projekti andmemudel|Andmemudel]]&lt;br /&gt;
Enne veebiteenuse meetodite kirjeldamist koostasime andmemudeli. Loodud andmemudeli põhjal lõime andmebaasi vajalike tabelite ja atribuutidega. Andmemudeli peal on rohelisega tähistatud tabelid, mis on oseselt seotud kohviku valdajaga ja mida WPF rakenduse jaoks kindlasti vaja on. Ülejäänud helesinised tabelid on vajalikud kasutajate võimaluste jaoks. Lisaks on andmemudelil kaks tabelit, mis pole teisega seotud, need on süsteemi administraatori jaoks, et oleks ülevaade, mis rakendused teenust enim kasutavad ning mis meetodeid kõige rohkem välja kutsutakse.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Teenuskihis olevad meetodid===&lt;br /&gt;
&lt;br /&gt;
====Kasutajatega seotud meetodid:====&lt;br /&gt;
*SaidiKasutajaLiik() - Tagastab antud kasutaja ID järgi kasutaja liigi nimetuse&lt;br /&gt;
*KustutaSaidiKasutaja() - Kustutab antud kasutaja ID järgi kasutaja tabelis Kasutaja&lt;br /&gt;
*AnnaKoikSaidiKasutajad() - Tagastab kõik kirjed tabelist Kasutaja&lt;br /&gt;
*AnnaKoikKohvikuKasutajad() - Tagastab antud kohviku ID järgi kõik kohviku kasutajad massiivina&lt;br /&gt;
*MuudaSaidiKasutajaLiik() - Muudab antud kasutaja ID järgi kasutaja liigi tabelis Kasutaja&lt;br /&gt;
*KoikLubatudSaidiKasutajaTyybid() - Tagastab andmebaasi kõik võimalikud kohviku kasutaja rollid (id-d ja nimed), muud andmed jäävad tühjaks&lt;br /&gt;
*KoikLubatudKohvikuRollid() - Tagastab andmebaasi kõik võimalikud site kasutaja rollid (id-d ja nimed), kohviku_id jääb tühjaks&lt;br /&gt;
*KasutajaKohvikuRollid() - Tagastab antud kasutaja ID järgi kõik kasutaja rollid kõikides kohvikutes&lt;br /&gt;
*MuudaKohvikuKasutajaRoll() - Muudab antud kasutaja ID ja kohviku ID järgi kasutaja rolli kohvikus, kui rolli pole, siis tekitatakse uus&lt;br /&gt;
*SaidiKasutajaLiikID() - Tagastab antud kasutaja ID järgi kasutaja liigi ID&lt;br /&gt;
*KohvikuKasutajaLiikID() - Tagastab antud kasutaja ID ja kohviku ID järgi kohviku kasutaja rolli ID&lt;br /&gt;
*AnnaKasutajaMeiliAadress() - Tagastab antud kasutaja nime alusel kasutaja meiliaadressi&lt;br /&gt;
*AnnaKasutajaIdJargi() - Tagastab kasutajanime kasutaja ID järgi&lt;br /&gt;
*AuthendiKasutaja() - Autendib kasutaja, õnnestumisel tagastab kasutaja ID, ebaõnnestumisel null &lt;br /&gt;
*RegistreeriKasutaja() - Registreerib kasutaja andmebaasi ja tagastab true kui kasutaja loomine õnnestus&lt;br /&gt;
&lt;br /&gt;
====Menüüga seotud meetodid====&lt;br /&gt;
*LisaArtikkelMenuuse() - Seob menüüartikli ja menüü&lt;br /&gt;
*LisaKohvikuleMenuu() - Seob menüü ja kohviku&lt;br /&gt;
*TagastabMenuuMuutujad() - Tagastab menüü järgi kas inimesel oleks õigust seda muuta&lt;br /&gt;
*KustutaMenuuJaKohvikuSeos() - Kustutab menüü ja kohviku seose&lt;br /&gt;
*LisaUusMenuu() - Teeb uue menüü, seob selle kohvikuga, kui kohviku ID on parameetrina kaasa antud&lt;br /&gt;
*MenuuKohvikuIdJargi() - Tagastab kohviku ID järgi kohviku tänaste või mitte tänaste menüüde ID-de massiivi&lt;br /&gt;
*LisaMenuuArtikkelMenuuse() - Sisestab antud müügiartikli menüüsse, mille ID on menyy_id&lt;br /&gt;
*KustutaMenuuArtikkel() - Kustutab müügiartikli ID ja menüü ID järgi müügiartikli menüüst&lt;br /&gt;
*TagastaMenuuArtiklid() - Tagastab menüü ID järgi menüüs olevad müügiartiklid&lt;br /&gt;
*VahetaMenuuArtiklit() - Muudab antud müügiartikli tabelis Myygiartikkel&lt;br /&gt;
*MenuuNimetus() - Tagastab menüü ID järgi menüü nimetuse&lt;br /&gt;
*AnnaMuugiartiklidMidaMenuusPole() - Tagastab müügiartiklid, mis pole veel menüüs, kus on juba müügiartiklid, mille IDd on antud massiivis&lt;br /&gt;
*AnnaMenuuNimed() - Tagastab kõigi menüüde nimetused tabelis Menyy&lt;br /&gt;
&lt;br /&gt;
====Kohvikutest üldiselt====&lt;br /&gt;
*KohvikuteNimed() - Tagastab kõigi kohvikute nimed massiivina&lt;br /&gt;
*KohvikuNimiIdJargi() - Tagastab antud kohviku ID järgi kohviku nime&lt;br /&gt;
*AnnaKoikOmanikuKohvikud() - Tagastab antud omaniku ID järgi kõik omaniku kohvikute ID-d massiivina&lt;br /&gt;
*Kohvikud() - Tagastab kõik kohvikute kirjed tabelist Kohvik&lt;br /&gt;
*KohvikuteArv() - Tagastab kõigi kohvikute arvu&lt;br /&gt;
*AnnaKaubad() - Tagastab kõik kaubad tabelist Kaup&lt;br /&gt;
*LisaKaup() - Lisab kauba kaupade nimekirja&lt;br /&gt;
*LisaKohvik() - Uue kohviku lisamine&lt;br /&gt;
&lt;br /&gt;
====Kommentaaridega seotud meetodid:====&lt;br /&gt;
*KohvikuKommentaarideArv() - Kohviku kommentaaride arv&lt;br /&gt;
*AnnaKohvikuKommentaarid() - Tagastab kommentaarid lehtede kaupa&lt;br /&gt;
*AnnaKohvikuKommentaar() - Tagastab üksiku kommentaari&lt;br /&gt;
*AnnaKohvikuKommentaarideHinded() - Tagastab kommentaaride jaoks võimalikud hinded koos kirjeldustega&lt;br /&gt;
*LisaKohvikuKommentaar() - Lisab kohviku kommentaari&lt;br /&gt;
*MuudaKohvikuKommentaar() - Muudab kohviku kommentaari&lt;br /&gt;
*MuudaKohvikuKommentaariOlek() - Muudab kohviku kommentaari oleku&lt;br /&gt;
*MuudaKohvikuKommentaariPeidetus() - Muudab kohviku kommentaari peidetust&lt;br /&gt;
&lt;br /&gt;
====Statistikaga seotud meetodid:====&lt;br /&gt;
*StatistikaRakendusteKohtaTana() - Tagastab rakenduse nimed ja nende vastu tehtud päringud tänasel päeval&lt;br /&gt;
*StatistikaRakendusteKohtaViimaneNadal() - Tagastab rakenduse nimed ja nende vastu tehtud päringud viimase nädala jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaSellelKuul() - Tagastab rakenduse nimed ja nende vastu tehtud päringud selle kuu jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaKokku() - Tagastab rakenduse nimed ja nende vastu tehtud päringud kogu aja vältel&lt;br /&gt;
*StatistikaMeetoditeKohtaTana() - Meetod leiab tänase päeva jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaViimaneNadal() - Meetod leiab viimase nädala jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaSellelKuul() - Meetod leiab kuu jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaKokku() - Meetod leiab kogu aja vältel kasutatud meetodid ja paringute arvu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebiteenuse projekti (WCF + andmebaas) saab siit: http://enos.itcollege.ee/~rruga/VRII/Teenusekiht.zip&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : CMS ==&lt;br /&gt;
&lt;br /&gt;
Meie loodud veebirakenduses on realiseeritud järgnevad CMS seotud funktsionaalsused :&lt;br /&gt;
*Kõikide kohvikute lehed on eraldi aadressiga, mis võimaldab eri kohvikud bookmarkida ja facebooki like anda. See on saavutatud tänu ?kohvik=1 aadressiribal, kus parameeteri kohvik number identifitseerib kohviku.&lt;br /&gt;
*Adminni õigustega kasutajal on võimalik lisada uus kohvikuid andembaasi&lt;br /&gt;
*Kohviku omanik saab lisada menüüd, muuta seda ja kustutada&lt;br /&gt;
*Adminnid saavad kasutajaid hallata, määrates nendele rolle, mis omakorda tagab teatud õigused&lt;br /&gt;
*Kohviku omanikud saavad  oma kohviku kasutajaid hallata, määrates neile näiteks müüja või kliendi rolli.&lt;br /&gt;
*Kogu menüü põhineb sitemapil, mille alus on kirjeldatud eraldi sitemap failis, lisaks sellel lisatakse sinna dünaamiselt kohvikud juurde ( mis andmebaasis olemas on )&lt;br /&gt;
*Kohviku omanik saab kohviku lehte isikupärastada tänu richteksti osale, näiteks lisada html osi.&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Veebirakendus ==&lt;br /&gt;
&lt;br /&gt;
Veebiteenust kasutavaks veebirakenduseks on ASP.NET rakendus. &lt;br /&gt;
&lt;br /&gt;
* Esilehel saab otsida kohvikuid või minna kohe huvipakkuva kohviku menüü lehele.&lt;br /&gt;
* Kohviku menüü lehel on näha tänased ja teised menüüd, kohviku lahtioleku aeg. Kui panna veebirakendus internetti, siis on võimalus Facebook-i kaudu kohviku fänniks hakata. Kommenteerimise ja soodustuste osa on veel pooleli.&lt;br /&gt;
* Sisse loginud kohviku omanik saab ka kohviku menüüsid muuta, lisada, kustutada. &lt;br /&gt;
* Kasutajate lehel saab sisse loginud kohviku omanik hallata kohviku kasutajaid.&lt;br /&gt;
* Statistika lehel saab vaadata statistikat teenust kasutanud rakenduste ja kasutatud meetodite kohta. Näeb nii tänase päeva, viimase nädala, selle kuu ja aasta statistikat&lt;br /&gt;
* Kohviku lisamise lehel saab aga admini õigustege kasutaja lisada uue kohviku.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:KohvikuMenuEdit.JPG|800px|Kohviku menüü muutmise leht. ITK kohviku menüüde muutmiseks tuleb logida sisse kasutajaga Ilmar parooliga &amp;quot;ilmar&amp;quot;.]]&lt;br /&gt;
&lt;br /&gt;
Kohviku menüü muutmise leht. ITK kohviku menüüde muutmiseks tuleb logida sisse kasutajaga Ilmar parooliga &amp;quot;ilmar&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Kohviku admin osa nägemiseks võib sisse logida kasutajaga rauno, parool on ka rauno. Sellega saab ligi statistikale ja uue kohviku loomisele.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebirakenduse koos uuendatud teenuskihiga saab siit: http://enos.itcollege.ee/~rruga/VRII/KohvikuProjekt.rar&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Kommentaaride komponent ==&lt;br /&gt;
&lt;br /&gt;
Kommentaaride sisestamiseks ja haldamiseks on loodud iseseisev ning enam jaolt taas kasutatav kommentaaride komponent. Komponent on hetkel realiseeritud ASP&#039;i User Control&#039;ina ja mitte Custom Control&#039;ina, mis vähendab veidi selle üleviidavust teistesse projektidesse. Siiski on selle muutmine ASP&#039;i Custom Control&#039;iks mõningate muudatustega võimalik.&lt;br /&gt;
&lt;br /&gt;
[[Image:comskeem.png|thumb|center|alt=Kommentaari komponendi skeem.|Kommentaari komponendi skeem.]]&lt;br /&gt;
&lt;br /&gt;
Kommentaaride komponent koosneb kahest osast, mis lisatakse lehele, millel vajatakse kommenteerimise funktsionaalsust:&lt;br /&gt;
sisendkontroll - see komponent on vajalik uute kommentaaride sisestamiseks;&lt;br /&gt;
väljundkontroll - antud komponent esitab olemasolevad kommentaarid hulga kaupa.&lt;br /&gt;
&lt;br /&gt;
Mõlemad kommentaari komponendi osad on kasutatavad ka iseseisvalt, kui see peaks vajalik olema. Kommentaari andmeid esitavad need komponendid läbi iseseisvate kommentaarikontrollide, mida võib ühel kontrollil olla ka mitu. Kommentaarikontrollid ei ole võimelised iseseisvalt kommentaaride andmeid hankima ning seepärast tuleb need täita väljapoolt, kas sisend- või väljundkontrollide poolt. Samuti tuleb uue kommentaari loomine läbi viia kommentaarikontrolli väliselt - seda teostabki sisendikontroll. Samas kogu ülejäänud kommentaari haldus, nagu olemasolevate kommentaaride muutmine ning uute olekute seadmine toimub üksnes läbi iseseisvate kommentaarikontrollide, mis sisaldavad täies mahus vastavat funktsionaalsust.&lt;br /&gt;
&lt;br /&gt;
Kommentaaride komponendi kõik kolm osa (sisendkontroll, väljundkontroll ja kommentaarikontroll) suhtlevad teenusekihiga läbi vastava ligipääsuobjekti. Ligipääsuobjekt tegeleb ühenduse ning sellega seonduvate võimalike vigade haldamisega. Kokkuvõtlikult loob see vajaduse korral uue ühenduse, sooritab päringud ning lõpuks sulgeb ühenduse, kui vastav korraldus antakse.&lt;br /&gt;
&lt;br /&gt;
Teenuses on vastavad protseduurid, mida teenusega suhtlemisel välja kutsutakse ning mis teostavad reaalseid muudatusi andmebaasis, seda muidugi vastavalt reeglitele.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus II : Mobiilirakendus ==&lt;br /&gt;
&lt;br /&gt;
Teine rakendus, mis veebiteenuse peale ehitatud sai, oli Windows Phone 7 rakendus. Lühidalt kirjeldades saab peale rakenduse käivitamist näha listi kõikidest olemasolevatest kohvikutest. Kui vajutad mingi kohviku nime peale, avaneb täpsem kirjeldus kohviku kohta, kust näeb lisaks kohviku nimele ka lühikest kirjeldust, tänast lahtiolekuaega ja kohviku aadressit. Samuti on kohviku kirjelduse lehel viide kohviku tänasele menüüle ja kommenteerimisele. Vajutades vaata menüüd nuppu avaneb vaade täna müügis olevatest müügiartiklitest ja nende hinnast, vajutades aga kommenteeri kohvikut nupule avaneb võimalus lisada kohviku kohta kommentaar.&lt;br /&gt;
&lt;br /&gt;
Kokkuvõttev pilt realiseeritud võimalustest:&lt;br /&gt;
&lt;br /&gt;
[[Image:WP7 rakendus.jpg|alt=WP7 rakendus.|WP7 rakenduse võimalused.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mobiilirakenduse saab alla tõmmata siit: http://enos.itcollege.ee/~rruga/VRII/Mobiilirakendus.rar&lt;br /&gt;
&lt;br /&gt;
NB! Et mobiilirakendust proovida ja mõistliku tulemust saada peab teil olema kõige uuem versioon meie projekti teenuskihist ning teenuskiht peab töötama.&lt;br /&gt;
&lt;br /&gt;
== Meeskonna punktide jaotus ==&lt;br /&gt;
Kõigi grupiliikmetega sai arutatud punktide jagamise üle ja ühine arvamus oli, et punktid jaotatakse järgnevalt:&lt;br /&gt;
*Rauno Rüga - 29 punkti&lt;br /&gt;
*Ilmar Telga - 20 punkti&lt;br /&gt;
*Kristjan Stolin - 17 punkti&lt;br /&gt;
*Lauri Kermas - 14 punkti&lt;br /&gt;
&lt;br /&gt;
== Meeskonna kokkuvõttev aruanne ==&lt;br /&gt;
&lt;br /&gt;
===Mis sai tehtud ?===&lt;br /&gt;
&lt;br /&gt;
===Mida sai peale viimast esitlust veel täiendatud ?===&lt;br /&gt;
&lt;br /&gt;
*ASP.NET rakendusel sai statistika charte sipakene väiksemaks tehtud, et nad näeksid paremad välja ja korraga ekraanil oleks näha nii päeva, nädala, kuu kui ka kogu aja jaotus (loomulikult normaalse suurusega ekraani puhul)&lt;br /&gt;
*Mobiilirakenduses menüü kuvamine korralikumaks (toit ja hind palkirjad juurde)&lt;br /&gt;
*Mobiilirakenduses kommenteerija nimi salvestatakse mobiili mällu, niiet kommenteerima tulles on kohe nime lahtris oma nimi alati olemas&lt;br /&gt;
&lt;br /&gt;
(Täiendused on olemas ka juba projekti rar failidel, millele siin wikis viited on)&lt;br /&gt;
&lt;br /&gt;
===Õpitud teadmised / omandatud kogemused===&lt;br /&gt;
&lt;br /&gt;
*XML, XSLT koostamine&lt;br /&gt;
*Teenuskihi ehitamine ja selle ühildamine nii andmebaasi kui rakendustega&lt;br /&gt;
*Rakenduste ehitamine teenuskihi peale&lt;br /&gt;
*Meeskonnatöö korraldamine&lt;br /&gt;
*Aja planeerimine&lt;br /&gt;
&lt;br /&gt;
===Ligikaudne ajahinnang tehtud tööle===&lt;br /&gt;
&lt;br /&gt;
*XML,XSLT koostamine ja selle arutamine rühmas - 5 h&lt;br /&gt;
*Andmemudeli arutamine grupis, selle loomine, täiendamine ja projekti ühildamine - 20 h&lt;br /&gt;
*Teenuskihi ehitamine - 60 h&lt;br /&gt;
*ASP.NET rakenduse tegemine - 75 h  &lt;br /&gt;
*Mobiilirakenduse tegemine - 24 h&lt;br /&gt;
&lt;br /&gt;
(Arvesse võtsime nii reaalse töö projekti kallal kui ka seotud teemadega tutvumine (näidete uurimine/läbi tegemine jne))&lt;br /&gt;
(Töö tunnid on kõigi inimeste peale kokku ehk kui arutasime kolmekesi XML struktuuri 1 tunni, siis kokku 3 töötundi)&lt;br /&gt;
===Kokkuvõtva esitluse slaidid ===&lt;br /&gt;
&lt;br /&gt;
== Logi ==&lt;br /&gt;
&lt;br /&gt;
=== 8. Mai ===&lt;br /&gt;
Veebirakendus esitluseks valmis. Täiendatud vikilehte.&lt;br /&gt;
&lt;br /&gt;
=== 7. Mai ===&lt;br /&gt;
Mobiilirakendus sai valmis ja selle kohta uuendatud vikilehte.&lt;br /&gt;
&lt;br /&gt;
=== 17. aprill ===&lt;br /&gt;
Wikilehe täiendamine andmemudeli ja veebiteenuse meetodite kirjeldusega.&lt;br /&gt;
&lt;br /&gt;
=== 9. aprill ===&lt;br /&gt;
Tegime rollide halduse, münüüde muutmise vormi. Meili saatmine registreerimisel. Toimus andmebaasi andmemudeli väike muutus. &lt;br /&gt;
&lt;br /&gt;
=== 30. märts ===&lt;br /&gt;
Tehtud on kohviku menüü ja kohviku kommenteerimise leht.&lt;br /&gt;
&lt;br /&gt;
=== 26. märts ===&lt;br /&gt;
Tehtud on esimesed veebiteenuse meetodid ja veebirakendusele kasutajate registreerimine.&lt;br /&gt;
&lt;br /&gt;
=== 10. märts ===&lt;br /&gt;
Väikese häki abil õnnestus kohviku kassa arvutis saada tööle üks Forms-i proovirakendus.&lt;br /&gt;
&lt;br /&gt;
=== 8. märts ===&lt;br /&gt;
Kuna kassa-aparaadis on operatsioonisüsteemiks Windows XP ja raud on 1.99 GHz, 256 RAM siis peaks saama&lt;br /&gt;
prototüübiks teha sinna peale rakenduse, mille ülesandeks menüüga tegelemine. &lt;br /&gt;
&lt;br /&gt;
=== 7. märts ===&lt;br /&gt;
Linnar Viik andis meile järgmist nõu: tuleb eristada kahte asja - see, mis peab valmis saama (&#039;&#039;must&#039;&#039;) ja see, mis oleks tore (&#039;&#039;nice to have&#039;&#039;). Valmis peab saama menüüga ekraan seinal (esialgu kasutajale prototüübi näitamiseks kasvõi näiteks PowerPoint-i abil tehtud). Alles siis kui on kasutajalt positiivne tagasiside saadud, võib edasi minna reaalse tarkvaralahenduse loomisega. Kui ka see on valmis ja kasutaja sellega rahul võib juurde mõelda &#039;&#039;nice to have&#039;&#039; asju (näiteks eelinfo järgmise päeva menüü kohta, üliõpilasesinduse sõnumite riba ja muid asju).&lt;br /&gt;
&lt;br /&gt;
Saime teada, et kui tahame, et meie loodav süsteem suhtleks IT Kohviku kassasüsteemiga, siis tuleb selle süsteemi tootjatega ühendust võtta ja nendega konsulteerida.&lt;br /&gt;
&lt;br /&gt;
=== 19.Veebruar ===&lt;br /&gt;
*Valmis XSLT fail.&lt;br /&gt;
&lt;br /&gt;
=== 9.Veebruar ===&lt;br /&gt;
* Esmane versioon XML ja XML Schemast olemas&lt;br /&gt;
* Tekkis küsimus kas XSLT faili tuleb käsitsi tekitada või automaatselt.&lt;br /&gt;
* Küsimus oli ka kas lahendasime portsjoni asja mõistlikult või oleks mõni teine lähenemine parem olnud.&lt;br /&gt;
* Küsimus, kas XML fail on liiga üle pingutatud või sobiva keerukusega&lt;br /&gt;
&lt;br /&gt;
=== 7. Veebruar ===&lt;br /&gt;
* Võtsime õppejõu poolt pakutud ideest kohe kinni, sest me eelistame teha praktilist asja, mida saab kasutada ja mille kasutamist saame ka iga päev jälgida. &lt;br /&gt;
* Esimese asjana otsustasime välja uurida mida meie &amp;quot;kliendid&amp;quot; (süsteemi tellijad) meilt ootavad. (Soovid idee punkti all)&lt;br /&gt;
* Valminud on lihtne teenusest ja klientidest koosnev süsteemi testmudel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Kasulikud lingid ==&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCF_auto_client_proxies.aspx&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/ms178472.aspx&lt;br /&gt;
&lt;br /&gt;
http://support.microsoft.com/kb/305141&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/aa702565.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/scottgu/archive/2007/04/06/tip-trick-enabling-ssl-on-iis7-using-self-signed-certificates.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/scottgu/archive/2010/06/28/introducing-iis-express.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/scottgu/archive/2011/01/03/vs-2010-sp1-beta-and-iis-developer-express.aspx&lt;br /&gt;
&lt;br /&gt;
http://blogs.msdn.com/b/webdevtools/archive/2011/03/14/enabling-iis-express-support-in-vs-2010-sp1.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/gunnarpeipman/archive/2010/12/11/visual-studio-2010-sp1-beta-supports-iis-express.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.dotnetcurry.com/ShowArticle.aspx?ID=487&lt;br /&gt;
&lt;br /&gt;
http://davidkiff.co.uk/post/2009/09/22/Setting-up-SSL-for-WCF-in-Development.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.request-response.com/blog/CommentView,guid,e9bb929b-d0b4-4626-b302-1d2715fc344a.aspx&lt;br /&gt;
&lt;br /&gt;
=== Kokkuvõtvad lingid ===&lt;br /&gt;
&lt;br /&gt;
* WCF&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/library/ee958158.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCF_auto_client_proxies.aspx&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/aa702565.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCFInstance.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCFConcurrency.aspx&lt;br /&gt;
&lt;br /&gt;
http://codeidol.com/csharp/wcf/Concurrency-Management/Service-Concurrency-Mode/&lt;br /&gt;
&lt;br /&gt;
* ASP&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/ms178472.aspx&lt;br /&gt;
&lt;br /&gt;
http://support.microsoft.com/kb/305141&lt;br /&gt;
&lt;br /&gt;
http://www.west-wind.com/weblog/posts/2008/Aug/14/ASPNET-gets-no-Respect&lt;br /&gt;
&lt;br /&gt;
http://lostechies.com/jimmybogard/2008/05/19/asp-net-officially-unmaintainable/&lt;br /&gt;
&lt;br /&gt;
http://www.lullabot.com/blog/why-not-asp-net&lt;br /&gt;
&lt;br /&gt;
http://reverseblade.blogspot.com/2008/06/web-development-aspnet-webforms-versus.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Võrgurakendused II: hajussüsteemide ehitamine]]&lt;br /&gt;
[[Category: Veebirakenduste loomine ASP.NET abil]]&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=33382</id>
		<title>Meeskond &quot;FoodWars&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=33382"/>
		<updated>2011-05-30T14:20:11Z</updated>

		<summary type="html">&lt;p&gt;Rruga: /* Meeskonna kokkuvõttev aruanne */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Idee ==&lt;br /&gt;
Meie tiimil on plaanis teha internetipõhine söökla menüü süsteem (aluseks IT Kolledži kohvik, aga suunitlus selline, et kõik kohvikud/sööklad saaksid teha endale kasutajakonto ja hakata rakendust kasutama), kust saaks jälgida menüüd, mis sööke saab süüa, mis veel järgi on, kasutajatel on ka võimalus sööke hinnata (stiilis &amp;quot;meeldib&amp;quot;, &amp;quot;ei meeldi&amp;quot; nagu Facebook-is).&lt;br /&gt;
&lt;br /&gt;
Kohvikupidaja Teele soovid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* elektroonilisest menüüst asju kustutada, isegi siis kui asja peaks olema teoreetiliselt alles, aga tegelikult on asi otsas.&lt;br /&gt;
* elektrikatkestuse korral jääb menüü püsima. Ta peab teadma hindu mistahes olukorras.&lt;br /&gt;
* menüül näidatakse automaatselt ka ISIC kaardi omanike soodushinnad&lt;br /&gt;
* süsteem toetab ka poole portsjoni müümist.&lt;br /&gt;
&lt;br /&gt;
Linnar Viigi soovid/visioonid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* kõik oleks ka internetist kättesaadav, peale LCD ekraani, mis kajastab menüüd sööklas.&lt;br /&gt;
* aluseks facebook, kus siis söögid oleks nagu facebook-i alateemad.&lt;br /&gt;
* saab sööke hinnata, kommenteerida (täna oli väga maitsev praad).&lt;br /&gt;
* kasutajad saaks vaadata, mis menüüs on (ka järgmisel nädalal) ja mitu portsu veel alles on.&lt;br /&gt;
* kasutajad saaksid välja pakkuda menüüsid.&lt;br /&gt;
* erinevate söögikohtade kasutajad saaksid omavahel muljeid jagada.&lt;br /&gt;
* kuu aja aktiivsemad saavad prii lõuna.&lt;br /&gt;
* mingil ajal võib olla &amp;quot;happy hour&amp;quot; (enne sulgemist saab odavamalt).&lt;br /&gt;
* piiranguks on see, et toitu broneerida ei saa &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vaba tarkvara kasutamise võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Antud projekti puhul oleks võimalik kasutada [http://www.postgresql.org/ PostgreSQL] andmebaasi (vt. lisaks http://en.wikipedia.org/wiki/PostgreSQL ) Microsoft SQL Server&#039;i asemel. See võiks anda kasutajale võimaluse valida .NET ning [http://www.mono-project.com/ Mono] (vt. lisaks http://en.wikipedia.org/wiki/Mono_(software) ) platvormide vahel. Sel viisil oleks kliendil võimalik Microsoft&#039;i platvormi kõrval valida tõenäoliselt soodsam vaba tarkvara platvorm. Andmebaasi lõplik valik pole hetkel veel otsustatud.&lt;br /&gt;
&lt;br /&gt;
== Meeskond ja tööjaotus==&lt;br /&gt;
* Kristjan Stolin - projektijuht, suhtlus kliendiga, XML, wiki, teenuskihtide progemine, rollide halduse lehe progemine&lt;br /&gt;
* Ilmar Telga - XML, kliendiga suhtlus, wiki, teenuskihtide progemine, lõpprakenduste menüüd, login&lt;br /&gt;
* Rauno Rüga - XML, XSLT, andmebaasi loomine, wiki, mobiilirakendus, statistika&lt;br /&gt;
* Lauri Kermas - teenuskihtide ehitamine, wiki, rakenduse rollid ja kasutajad, login, kommenteerimise võimaluste progemine&lt;br /&gt;
&lt;br /&gt;
== XML Fail ==&lt;br /&gt;
=== XML ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Toidud&amp;gt;&lt;br /&gt;
  &amp;lt;Toit&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduNimetus&amp;gt;Viineri kaste&amp;lt;/ToiduNimetus&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduLiik&amp;gt;Praad&amp;lt;/ToiduLiik&amp;gt;&lt;br /&gt;
    &amp;lt;OlemasolevatYhikut&amp;gt;5&amp;lt;/OlemasolevatYhikut&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduKogus&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Poolportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;2011&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;1&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;9&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;15&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;07&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;23&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;        &lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.15&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;0&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;0&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;0&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;00&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;00&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;00&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Täisportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.80&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
    &amp;lt;/ToiduKogus&amp;gt;&lt;br /&gt;
    &amp;lt;Kommentaarid&amp;gt;&lt;br /&gt;
      &amp;lt;Kommentaar&amp;gt;&lt;br /&gt;
        &amp;lt;Saatja&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaNimi&amp;gt;Kristjan&amp;lt;/SaatjaNimi&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaRoll&amp;gt;Tudeng&amp;lt;/SaatjaRoll&amp;gt;&lt;br /&gt;
        &amp;lt;/Saatja&amp;gt;&lt;br /&gt;
        &amp;lt;Sisu&amp;gt;Minu lemmik toit ! Kui algebra tund ei hakkaks, sööks veel 5 portsjonit.&amp;lt;/Sisu&amp;gt;&lt;br /&gt;
      &amp;lt;/Kommentaar&amp;gt;&lt;br /&gt;
    &amp;lt;/Kommentaarid&amp;gt;&lt;br /&gt;
  &amp;lt;/Toit&amp;gt;&lt;br /&gt;
&amp;lt;/Toidud&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kommentaariks siis niipalju, et meie näide on ilma kohviku osata, selleks et näidet mitte liiga suureks ajada.&lt;br /&gt;
&lt;br /&gt;
Ka on meil moment puudu ID väljad, mis on igasugu andmebaasiga suhtlemiseks hädavajalikud, samas siin näidises palju juurde ei anna.&lt;br /&gt;
&lt;br /&gt;
Asja tegemisel avastasime, et põhiliseks arusaamatuse kohaks on toitude erinevad kogused (ehk siis pool portsjonit, suur / väike ja muud võrdlevad ühikud). Esimese võimalusena kaalusime teha lihtsalt täiesti eraldi toidud kõige kohta, stiilis &amp;quot;väike viineripraad&amp;quot; ja &amp;quot;suur viineripraad&amp;quot;. Kahjuks see variant ei kõlbaks eriti hästi, kuna need erinevad portsjonid kasutavad ikkagi samu materjale ja kui me peaks mingi süsteemiga näitama kui palju portsjoneid alles on. Sööklast näiteks pakuti et väike portsjon kasutab materjale kuskil 0.8 suure portsjoni ulatuses, ehk see suhtarv peaks olema kasutaja poolt (kohvikupidaja, restoraniomanik) ise sätitav. &lt;br /&gt;
&lt;br /&gt;
Tänu sellele sai meie süsteemi alustalaks siiski Toit, millel on oma Portsjonid siis erinevate hindade ja soodustustega. Moment pole meil ka Portsjoni XML osas toodud ära seost kogusega. (Kui palju ühe portsjoni lisamine/müümine peaks toidu üldkogust muutma).&lt;br /&gt;
&lt;br /&gt;
Kommenteerida saab meil moment toitu ennast, mitte eraldi portsjonit. Isegi kui kasutajad tahavad lisada kommentaare stiilis &amp;quot;See väike supp oli tõesti väga väike&amp;quot;, ei soovi nad seda ilmselt eraldi portsjoni alla panna. Tulevikus peaks kindlasti olema ka võimalus pigem kommenteerida üldisemalt (Kohvikut ennast, söögipaiku üldse), kui spetsiifilisemalt (Väikse prae kaste lisandi kohta).&lt;br /&gt;
&lt;br /&gt;
=== XML Schema ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Toidud&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Toit&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduNimetus&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;OlemasolevatYhikut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduKogus&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:choice maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;PortsjoniLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;Myygiaeg&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Aasta&amp;quot; type=&amp;quot;xs:unsignedShort&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Kuu&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Paev&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Tund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Minut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Sekund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;ToiduHind&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Eurohind&amp;quot; type=&amp;quot;xs:decimal&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Soodustus&amp;quot;&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseProtsent&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:choice&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Kommentaarid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Saatja&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaNimi&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaRoll&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Sisu&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
  &amp;lt;h2&amp;gt;Kohvikus müüdavad toidud&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr bgcolor=&amp;quot;#9acd32&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Veel alles&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Portsjon&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Müügiaeg&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustuse liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Kommentaar(id)&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;Toidud/Toit&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduNimetus&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduLiik&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;OlemasolevatYhikut&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;PortsjoniLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Paev&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Kuu&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Aasta&amp;quot; /&amp;gt; &amp;amp;nbsp;  &lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Tund&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Minut&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Sekund&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Eurohind&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseProtsent&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Kommentaarid/Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Sisu&amp;quot; /&amp;gt;&amp;amp;nbsp;(&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaRoll&amp;quot; /&amp;gt;&amp;amp;nbsp;&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaNimi&amp;quot; /&amp;gt;)&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XSLT poolt loodud tulemus on järgnev (lisasin veel kaks toitu XML faili, siin wiki lehel on ruumi kokkuhoiuks vaid 1 toit toitude listis):&lt;br /&gt;
[[File:Xslt.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arhitektuur ==&lt;br /&gt;
&lt;br /&gt;
Süsteem oli vahepeal plaanis ehitada kolmekihilise arhitektuuriga ([http://en.wikipedia.org/wiki/Multitier_architecture#Three-tier_architecture Three-tier architecture]). See peaks lihtsustama süsteemi haldamist ja laiendamist tulevikus. Aga kuna selle jaoks otsest vajadust polenud ja oleks vaid süsteemi keeruliseks ajanud, siis loobusime sellest.&lt;br /&gt;
&lt;br /&gt;
[[Image:three-tier.png|thumb|center|alt=Arhitektuuri skeem.|Arhitektuuri skeem.]]&lt;br /&gt;
&lt;br /&gt;
== Veebiteenus ==&lt;br /&gt;
===Andmemudel===&lt;br /&gt;
[[Image:KohvikuAndmemudel.jpg|thumb|right|alt=Kohviku projekti andmemudel|Andmemudel]]&lt;br /&gt;
Enne veebiteenuse meetodite kirjeldamist koostasime andmemudeli. Loodud andmemudeli põhjal lõime andmebaasi vajalike tabelite ja atribuutidega. Andmemudeli peal on rohelisega tähistatud tabelid, mis on oseselt seotud kohviku valdajaga ja mida WPF rakenduse jaoks kindlasti vaja on. Ülejäänud helesinised tabelid on vajalikud kasutajate võimaluste jaoks. Lisaks on andmemudelil kaks tabelit, mis pole teisega seotud, need on süsteemi administraatori jaoks, et oleks ülevaade, mis rakendused teenust enim kasutavad ning mis meetodeid kõige rohkem välja kutsutakse.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Teenuskihis olevad meetodid===&lt;br /&gt;
&lt;br /&gt;
====Kasutajatega seotud meetodid:====&lt;br /&gt;
*SaidiKasutajaLiik() - Tagastab antud kasutaja ID järgi kasutaja liigi nimetuse&lt;br /&gt;
*KustutaSaidiKasutaja() - Kustutab antud kasutaja ID järgi kasutaja tabelis Kasutaja&lt;br /&gt;
*AnnaKoikSaidiKasutajad() - Tagastab kõik kirjed tabelist Kasutaja&lt;br /&gt;
*AnnaKoikKohvikuKasutajad() - Tagastab antud kohviku ID järgi kõik kohviku kasutajad massiivina&lt;br /&gt;
*MuudaSaidiKasutajaLiik() - Muudab antud kasutaja ID järgi kasutaja liigi tabelis Kasutaja&lt;br /&gt;
*KoikLubatudSaidiKasutajaTyybid() - Tagastab andmebaasi kõik võimalikud kohviku kasutaja rollid (id-d ja nimed), muud andmed jäävad tühjaks&lt;br /&gt;
*KoikLubatudKohvikuRollid() - Tagastab andmebaasi kõik võimalikud site kasutaja rollid (id-d ja nimed), kohviku_id jääb tühjaks&lt;br /&gt;
*KasutajaKohvikuRollid() - Tagastab antud kasutaja ID järgi kõik kasutaja rollid kõikides kohvikutes&lt;br /&gt;
*MuudaKohvikuKasutajaRoll() - Muudab antud kasutaja ID ja kohviku ID järgi kasutaja rolli kohvikus, kui rolli pole, siis tekitatakse uus&lt;br /&gt;
*SaidiKasutajaLiikID() - Tagastab antud kasutaja ID järgi kasutaja liigi ID&lt;br /&gt;
*KohvikuKasutajaLiikID() - Tagastab antud kasutaja ID ja kohviku ID järgi kohviku kasutaja rolli ID&lt;br /&gt;
*AnnaKasutajaMeiliAadress() - Tagastab antud kasutaja nime alusel kasutaja meiliaadressi&lt;br /&gt;
*AnnaKasutajaIdJargi() - Tagastab kasutajanime kasutaja ID järgi&lt;br /&gt;
*AuthendiKasutaja() - Autendib kasutaja, õnnestumisel tagastab kasutaja ID, ebaõnnestumisel null &lt;br /&gt;
*RegistreeriKasutaja() - Registreerib kasutaja andmebaasi ja tagastab true kui kasutaja loomine õnnestus&lt;br /&gt;
&lt;br /&gt;
====Menüüga seotud meetodid====&lt;br /&gt;
*LisaArtikkelMenuuse() - Seob menüüartikli ja menüü&lt;br /&gt;
*LisaKohvikuleMenuu() - Seob menüü ja kohviku&lt;br /&gt;
*TagastabMenuuMuutujad() - Tagastab menüü järgi kas inimesel oleks õigust seda muuta&lt;br /&gt;
*KustutaMenuuJaKohvikuSeos() - Kustutab menüü ja kohviku seose&lt;br /&gt;
*LisaUusMenuu() - Teeb uue menüü, seob selle kohvikuga, kui kohviku ID on parameetrina kaasa antud&lt;br /&gt;
*MenuuKohvikuIdJargi() - Tagastab kohviku ID järgi kohviku tänaste või mitte tänaste menüüde ID-de massiivi&lt;br /&gt;
*LisaMenuuArtikkelMenuuse() - Sisestab antud müügiartikli menüüsse, mille ID on menyy_id&lt;br /&gt;
*KustutaMenuuArtikkel() - Kustutab müügiartikli ID ja menüü ID järgi müügiartikli menüüst&lt;br /&gt;
*TagastaMenuuArtiklid() - Tagastab menüü ID järgi menüüs olevad müügiartiklid&lt;br /&gt;
*VahetaMenuuArtiklit() - Muudab antud müügiartikli tabelis Myygiartikkel&lt;br /&gt;
*MenuuNimetus() - Tagastab menüü ID järgi menüü nimetuse&lt;br /&gt;
*AnnaMuugiartiklidMidaMenuusPole() - Tagastab müügiartiklid, mis pole veel menüüs, kus on juba müügiartiklid, mille IDd on antud massiivis&lt;br /&gt;
*AnnaMenuuNimed() - Tagastab kõigi menüüde nimetused tabelis Menyy&lt;br /&gt;
&lt;br /&gt;
====Kohvikutest üldiselt====&lt;br /&gt;
*KohvikuteNimed() - Tagastab kõigi kohvikute nimed massiivina&lt;br /&gt;
*KohvikuNimiIdJargi() - Tagastab antud kohviku ID järgi kohviku nime&lt;br /&gt;
*AnnaKoikOmanikuKohvikud() - Tagastab antud omaniku ID järgi kõik omaniku kohvikute ID-d massiivina&lt;br /&gt;
*Kohvikud() - Tagastab kõik kohvikute kirjed tabelist Kohvik&lt;br /&gt;
*KohvikuteArv() - Tagastab kõigi kohvikute arvu&lt;br /&gt;
*AnnaKaubad() - Tagastab kõik kaubad tabelist Kaup&lt;br /&gt;
*LisaKaup() - Lisab kauba kaupade nimekirja&lt;br /&gt;
*LisaKohvik() - Uue kohviku lisamine&lt;br /&gt;
&lt;br /&gt;
====Kommentaaridega seotud meetodid:====&lt;br /&gt;
*KohvikuKommentaarideArv() - Kohviku kommentaaride arv&lt;br /&gt;
*AnnaKohvikuKommentaarid() - Tagastab kommentaarid lehtede kaupa&lt;br /&gt;
*AnnaKohvikuKommentaar() - Tagastab üksiku kommentaari&lt;br /&gt;
*AnnaKohvikuKommentaarideHinded() - Tagastab kommentaaride jaoks võimalikud hinded koos kirjeldustega&lt;br /&gt;
*LisaKohvikuKommentaar() - Lisab kohviku kommentaari&lt;br /&gt;
*MuudaKohvikuKommentaar() - Muudab kohviku kommentaari&lt;br /&gt;
*MuudaKohvikuKommentaariOlek() - Muudab kohviku kommentaari oleku&lt;br /&gt;
*MuudaKohvikuKommentaariPeidetus() - Muudab kohviku kommentaari peidetust&lt;br /&gt;
&lt;br /&gt;
====Statistikaga seotud meetodid:====&lt;br /&gt;
*StatistikaRakendusteKohtaTana() - Tagastab rakenduse nimed ja nende vastu tehtud päringud tänasel päeval&lt;br /&gt;
*StatistikaRakendusteKohtaViimaneNadal() - Tagastab rakenduse nimed ja nende vastu tehtud päringud viimase nädala jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaSellelKuul() - Tagastab rakenduse nimed ja nende vastu tehtud päringud selle kuu jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaKokku() - Tagastab rakenduse nimed ja nende vastu tehtud päringud kogu aja vältel&lt;br /&gt;
*StatistikaMeetoditeKohtaTana() - Meetod leiab tänase päeva jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaViimaneNadal() - Meetod leiab viimase nädala jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaSellelKuul() - Meetod leiab kuu jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaKokku() - Meetod leiab kogu aja vältel kasutatud meetodid ja paringute arvu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebiteenuse projekti (WCF + andmebaas) saab siit: http://enos.itcollege.ee/~rruga/VRII/Teenusekiht.zip&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : CMS ==&lt;br /&gt;
&lt;br /&gt;
Meie loodud veebirakenduses on realiseeritud järgnevad CMS seotud funktsionaalsused :&lt;br /&gt;
*Kõikide kohvikute lehed on eraldi aadressiga, mis võimaldab eri kohvikud bookmarkida ja facebooki like anda. See on saavutatud tänu ?kohvik=1 aadressiribal, kus parameeteri kohvik number identifitseerib kohviku.&lt;br /&gt;
*Adminni õigustega kasutajal on võimalik lisada uus kohvikuid andembaasi&lt;br /&gt;
*Kohviku omanik saab lisada menüüd, muuta seda ja kustutada&lt;br /&gt;
*Adminnid saavad kasutajaid hallata, määrates nendele rolle, mis omakorda tagab teatud õigused&lt;br /&gt;
*Kohviku omanikud saavad  oma kohviku kasutajaid hallata, määrates neile näiteks müüja või kliendi rolli.&lt;br /&gt;
*Kogu menüü põhineb sitemapil, mille alus on kirjeldatud eraldi sitemap failis, lisaks sellel lisatakse sinna dünaamiselt kohvikud juurde ( mis andmebaasis olemas on )&lt;br /&gt;
*Kohviku omanik saab kohviku lehte isikupärastada tänu richteksti osale, näiteks lisada html osi.&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Veebirakendus ==&lt;br /&gt;
&lt;br /&gt;
Veebiteenust kasutavaks veebirakenduseks on ASP.NET rakendus. &lt;br /&gt;
&lt;br /&gt;
* Esilehel saab otsida kohvikuid või minna kohe huvipakkuva kohviku menüü lehele.&lt;br /&gt;
* Kohviku menüü lehel on näha tänased ja teised menüüd, kohviku lahtioleku aeg. Kui panna veebirakendus internetti, siis on võimalus Facebook-i kaudu kohviku fänniks hakata. Kommenteerimise ja soodustuste osa on veel pooleli.&lt;br /&gt;
* Sisse loginud kohviku omanik saab ka kohviku menüüsid muuta, lisada, kustutada. &lt;br /&gt;
* Kasutajate lehel saab sisse loginud kohviku omanik hallata kohviku kasutajaid.&lt;br /&gt;
* Statistika lehel saab vaadata statistikat teenust kasutanud rakenduste ja kasutatud meetodite kohta. Näeb nii tänase päeva, viimase nädala, selle kuu ja aasta statistikat&lt;br /&gt;
* Kohviku lisamise lehel saab aga admini õigustege kasutaja lisada uue kohviku.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:KohvikuMenuEdit.JPG|800px|Kohviku menüü muutmise leht. ITK kohviku menüüde muutmiseks tuleb logida sisse kasutajaga Ilmar parooliga &amp;quot;ilmar&amp;quot;.]]&lt;br /&gt;
&lt;br /&gt;
Kohviku menüü muutmise leht. ITK kohviku menüüde muutmiseks tuleb logida sisse kasutajaga Ilmar parooliga &amp;quot;ilmar&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Kohviku admin osa nägemiseks võib sisse logida kasutajaga rauno, parool on ka rauno. Sellega saab ligi statistikale ja uue kohviku loomisele.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebirakenduse koos uuendatud teenuskihiga saab siit: http://enos.itcollege.ee/~rruga/VRII/KohvikuProjekt.rar&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Kommentaaride komponent ==&lt;br /&gt;
&lt;br /&gt;
Kommentaaride sisestamiseks ja haldamiseks on loodud iseseisev ning enam jaolt taas kasutatav kommentaaride komponent. Komponent on hetkel realiseeritud ASP&#039;i User Control&#039;ina ja mitte Custom Control&#039;ina, mis vähendab veidi selle üleviidavust teistesse projektidesse. Siiski on selle muutmine ASP&#039;i Custom Control&#039;iks mõningate muudatustega võimalik.&lt;br /&gt;
&lt;br /&gt;
[[Image:comskeem.png|thumb|center|alt=Kommentaari komponendi skeem.|Kommentaari komponendi skeem.]]&lt;br /&gt;
&lt;br /&gt;
Kommentaaride komponent koosneb kahest osast, mis lisatakse lehele, millel vajatakse kommenteerimise funktsionaalsust:&lt;br /&gt;
sisendkontroll - see komponent on vajalik uute kommentaaride sisestamiseks;&lt;br /&gt;
väljundkontroll - antud komponent esitab olemasolevad kommentaarid hulga kaupa.&lt;br /&gt;
&lt;br /&gt;
Mõlemad kommentaari komponendi osad on kasutatavad ka iseseisvalt, kui see peaks vajalik olema. Kommentaari andmeid esitavad need komponendid läbi iseseisvate kommentaarikontrollide, mida võib ühel kontrollil olla ka mitu. Kommentaarikontrollid ei ole võimelised iseseisvalt kommentaaride andmeid hankima ning seepärast tuleb need täita väljapoolt, kas sisend- või väljundkontrollide poolt. Samuti tuleb uue kommentaari loomine läbi viia kommentaarikontrolli väliselt - seda teostabki sisendikontroll. Samas kogu ülejäänud kommentaari haldus, nagu olemasolevate kommentaaride muutmine ning uute olekute seadmine toimub üksnes läbi iseseisvate kommentaarikontrollide, mis sisaldavad täies mahus vastavat funktsionaalsust.&lt;br /&gt;
&lt;br /&gt;
Kommentaaride komponendi kõik kolm osa (sisendkontroll, väljundkontroll ja kommentaarikontroll) suhtlevad teenusekihiga läbi vastava ligipääsuobjekti. Ligipääsuobjekt tegeleb ühenduse ning sellega seonduvate võimalike vigade haldamisega. Kokkuvõtlikult loob see vajaduse korral uue ühenduse, sooritab päringud ning lõpuks sulgeb ühenduse, kui vastav korraldus antakse.&lt;br /&gt;
&lt;br /&gt;
Teenuses on vastavad protseduurid, mida teenusega suhtlemisel välja kutsutakse ning mis teostavad reaalseid muudatusi andmebaasis, seda muidugi vastavalt reeglitele.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus II : Mobiilirakendus ==&lt;br /&gt;
&lt;br /&gt;
Teine rakendus, mis veebiteenuse peale ehitatud sai, oli Windows Phone 7 rakendus. Lühidalt kirjeldades saab peale rakenduse käivitamist näha listi kõikidest olemasolevatest kohvikutest. Kui vajutad mingi kohviku nime peale, avaneb täpsem kirjeldus kohviku kohta, kust näeb lisaks kohviku nimele ka lühikest kirjeldust, tänast lahtiolekuaega ja kohviku aadressit. Samuti on kohviku kirjelduse lehel viide kohviku tänasele menüüle ja kommenteerimisele. Vajutades vaata menüüd nuppu avaneb vaade täna müügis olevatest müügiartiklitest ja nende hinnast, vajutades aga kommenteeri kohvikut nupule avaneb võimalus lisada kohviku kohta kommentaar.&lt;br /&gt;
&lt;br /&gt;
Kokkuvõttev pilt realiseeritud võimalustest:&lt;br /&gt;
&lt;br /&gt;
[[Image:WP7 rakendus.jpg|alt=WP7 rakendus.|WP7 rakenduse võimalused.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mobiilirakenduse saab alla tõmmata siit: http://enos.itcollege.ee/~rruga/VRII/Mobiilirakendus.rar&lt;br /&gt;
&lt;br /&gt;
NB! Et mobiilirakendust proovida ja mõistliku tulemust saada peab teil olema kõige uuem versioon meie projekti teenuskihist ning teenuskiht peab töötama.&lt;br /&gt;
&lt;br /&gt;
== Meeskonna punktide jaotus ==&lt;br /&gt;
Kõigi grupiliikmetega sai arutatud punktide jagamise üle ja ühine arvamus oli, et punktid jaotatakse järgnevalt:&lt;br /&gt;
*Rauno Rüga - 29 punkti&lt;br /&gt;
*Ilmar Telga - 20 punkti&lt;br /&gt;
*Kristjan Stolin - 17 punkti&lt;br /&gt;
*Lauri Kermas - 14 punkti&lt;br /&gt;
&lt;br /&gt;
== Meeskonna kokkuvõttev aruanne ==&lt;br /&gt;
&lt;br /&gt;
===Mis sai tehtud ?===&lt;br /&gt;
&lt;br /&gt;
===Mida sai peale viimast esitlust veel täiendatud ?===&lt;br /&gt;
&lt;br /&gt;
*ASP.NET rakendusel sai statistika charte sipakene väiksemaks tehtud, et nad näeksid paremad välja ja korraga ekraanil oleks näha nii päeva, nädala, kuu kui ka kogu aja jaotus (loomulikult normaalse suurusega ekraani puhul)&lt;br /&gt;
*Mobiilirakenduses menüü kuvamine korralikumaks (toit ja hind palkirjad juurde)&lt;br /&gt;
*Mobiilirakenduses kommenteerija nimi salvestatakse mobiili mällu, niiet kommenteerima tulles on kohe nime lahtris oma nimi alati olemas&lt;br /&gt;
&lt;br /&gt;
(Täiendused on olemas ka juba projekti rar failidel, millele siin wikis viited on)&lt;br /&gt;
&lt;br /&gt;
===Õpitud teadmised===&lt;br /&gt;
&lt;br /&gt;
*XML, XSLT koostamine&lt;br /&gt;
*Teenuskihi ehitamine ja selle ühildamine nii andmebaasi kui rakendustega&lt;br /&gt;
*Rakenduste ehitamine teenuskihi peale&lt;br /&gt;
*Meeskonnatöö korraldamine&lt;br /&gt;
*Aja planeerimine&lt;br /&gt;
&lt;br /&gt;
===Ligikaudne ajahinnang tehtud tööle===&lt;br /&gt;
&lt;br /&gt;
*XML,XSLT koostamine ja selle arutamine rühmas - 5 h&lt;br /&gt;
*Andmemudeli arutamine grupis, selle loomine, täiendamine ja projekti ühildamine - 20 h&lt;br /&gt;
*Teenuskihi ehitamine - 60 h&lt;br /&gt;
*ASP.NET rakenduse tegemine - 75 h  &lt;br /&gt;
*Mobiilirakenduse tegemine - 24 h&lt;br /&gt;
&lt;br /&gt;
(Arvesse võtsime nii reaalse töö projekti kallal kui ka seotud teemadega tutvumine (näidete uurimine/läbi tegemine jne))&lt;br /&gt;
(Töö tunnid on kõigi inimeste peale kokku ehk kui arutasime kolmekesi XML struktuuri 1 tunni, siis kokku 3 töötundi)&lt;br /&gt;
===Kokkuvõtva esitluse slaidid ===&lt;br /&gt;
&lt;br /&gt;
== Logi ==&lt;br /&gt;
&lt;br /&gt;
=== 8. Mai ===&lt;br /&gt;
Veebirakendus esitluseks valmis. Täiendatud vikilehte.&lt;br /&gt;
&lt;br /&gt;
=== 7. Mai ===&lt;br /&gt;
Mobiilirakendus sai valmis ja selle kohta uuendatud vikilehte.&lt;br /&gt;
&lt;br /&gt;
=== 17. aprill ===&lt;br /&gt;
Wikilehe täiendamine andmemudeli ja veebiteenuse meetodite kirjeldusega.&lt;br /&gt;
&lt;br /&gt;
=== 9. aprill ===&lt;br /&gt;
Tegime rollide halduse, münüüde muutmise vormi. Meili saatmine registreerimisel. Toimus andmebaasi andmemudeli väike muutus. &lt;br /&gt;
&lt;br /&gt;
=== 30. märts ===&lt;br /&gt;
Tehtud on kohviku menüü ja kohviku kommenteerimise leht.&lt;br /&gt;
&lt;br /&gt;
=== 26. märts ===&lt;br /&gt;
Tehtud on esimesed veebiteenuse meetodid ja veebirakendusele kasutajate registreerimine.&lt;br /&gt;
&lt;br /&gt;
=== 10. märts ===&lt;br /&gt;
Väikese häki abil õnnestus kohviku kassa arvutis saada tööle üks Forms-i proovirakendus.&lt;br /&gt;
&lt;br /&gt;
=== 8. märts ===&lt;br /&gt;
Kuna kassa-aparaadis on operatsioonisüsteemiks Windows XP ja raud on 1.99 GHz, 256 RAM siis peaks saama&lt;br /&gt;
prototüübiks teha sinna peale rakenduse, mille ülesandeks menüüga tegelemine. &lt;br /&gt;
&lt;br /&gt;
=== 7. märts ===&lt;br /&gt;
Linnar Viik andis meile järgmist nõu: tuleb eristada kahte asja - see, mis peab valmis saama (&#039;&#039;must&#039;&#039;) ja see, mis oleks tore (&#039;&#039;nice to have&#039;&#039;). Valmis peab saama menüüga ekraan seinal (esialgu kasutajale prototüübi näitamiseks kasvõi näiteks PowerPoint-i abil tehtud). Alles siis kui on kasutajalt positiivne tagasiside saadud, võib edasi minna reaalse tarkvaralahenduse loomisega. Kui ka see on valmis ja kasutaja sellega rahul võib juurde mõelda &#039;&#039;nice to have&#039;&#039; asju (näiteks eelinfo järgmise päeva menüü kohta, üliõpilasesinduse sõnumite riba ja muid asju).&lt;br /&gt;
&lt;br /&gt;
Saime teada, et kui tahame, et meie loodav süsteem suhtleks IT Kohviku kassasüsteemiga, siis tuleb selle süsteemi tootjatega ühendust võtta ja nendega konsulteerida.&lt;br /&gt;
&lt;br /&gt;
=== 19.Veebruar ===&lt;br /&gt;
*Valmis XSLT fail.&lt;br /&gt;
&lt;br /&gt;
=== 9.Veebruar ===&lt;br /&gt;
* Esmane versioon XML ja XML Schemast olemas&lt;br /&gt;
* Tekkis küsimus kas XSLT faili tuleb käsitsi tekitada või automaatselt.&lt;br /&gt;
* Küsimus oli ka kas lahendasime portsjoni asja mõistlikult või oleks mõni teine lähenemine parem olnud.&lt;br /&gt;
* Küsimus, kas XML fail on liiga üle pingutatud või sobiva keerukusega&lt;br /&gt;
&lt;br /&gt;
=== 7. Veebruar ===&lt;br /&gt;
* Võtsime õppejõu poolt pakutud ideest kohe kinni, sest me eelistame teha praktilist asja, mida saab kasutada ja mille kasutamist saame ka iga päev jälgida. &lt;br /&gt;
* Esimese asjana otsustasime välja uurida mida meie &amp;quot;kliendid&amp;quot; (süsteemi tellijad) meilt ootavad. (Soovid idee punkti all)&lt;br /&gt;
* Valminud on lihtne teenusest ja klientidest koosnev süsteemi testmudel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Kasulikud lingid ==&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCF_auto_client_proxies.aspx&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/ms178472.aspx&lt;br /&gt;
&lt;br /&gt;
http://support.microsoft.com/kb/305141&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/aa702565.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/scottgu/archive/2007/04/06/tip-trick-enabling-ssl-on-iis7-using-self-signed-certificates.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/scottgu/archive/2010/06/28/introducing-iis-express.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/scottgu/archive/2011/01/03/vs-2010-sp1-beta-and-iis-developer-express.aspx&lt;br /&gt;
&lt;br /&gt;
http://blogs.msdn.com/b/webdevtools/archive/2011/03/14/enabling-iis-express-support-in-vs-2010-sp1.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/gunnarpeipman/archive/2010/12/11/visual-studio-2010-sp1-beta-supports-iis-express.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.dotnetcurry.com/ShowArticle.aspx?ID=487&lt;br /&gt;
&lt;br /&gt;
http://davidkiff.co.uk/post/2009/09/22/Setting-up-SSL-for-WCF-in-Development.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.request-response.com/blog/CommentView,guid,e9bb929b-d0b4-4626-b302-1d2715fc344a.aspx&lt;br /&gt;
&lt;br /&gt;
=== Kokkuvõtvad lingid ===&lt;br /&gt;
&lt;br /&gt;
* WCF&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/library/ee958158.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCF_auto_client_proxies.aspx&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/aa702565.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCFInstance.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCFConcurrency.aspx&lt;br /&gt;
&lt;br /&gt;
http://codeidol.com/csharp/wcf/Concurrency-Management/Service-Concurrency-Mode/&lt;br /&gt;
&lt;br /&gt;
* ASP&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/ms178472.aspx&lt;br /&gt;
&lt;br /&gt;
http://support.microsoft.com/kb/305141&lt;br /&gt;
&lt;br /&gt;
http://www.west-wind.com/weblog/posts/2008/Aug/14/ASPNET-gets-no-Respect&lt;br /&gt;
&lt;br /&gt;
http://lostechies.com/jimmybogard/2008/05/19/asp-net-officially-unmaintainable/&lt;br /&gt;
&lt;br /&gt;
http://www.lullabot.com/blog/why-not-asp-net&lt;br /&gt;
&lt;br /&gt;
http://reverseblade.blogspot.com/2008/06/web-development-aspnet-webforms-versus.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Võrgurakendused II: hajussüsteemide ehitamine]]&lt;br /&gt;
[[Category: Veebirakenduste loomine ASP.NET abil]]&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=33381</id>
		<title>Meeskond &quot;FoodWars&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=33381"/>
		<updated>2011-05-30T14:18:15Z</updated>

		<summary type="html">&lt;p&gt;Rruga: /* Meeskonna kokkuvõttev aruanne */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Idee ==&lt;br /&gt;
Meie tiimil on plaanis teha internetipõhine söökla menüü süsteem (aluseks IT Kolledži kohvik, aga suunitlus selline, et kõik kohvikud/sööklad saaksid teha endale kasutajakonto ja hakata rakendust kasutama), kust saaks jälgida menüüd, mis sööke saab süüa, mis veel järgi on, kasutajatel on ka võimalus sööke hinnata (stiilis &amp;quot;meeldib&amp;quot;, &amp;quot;ei meeldi&amp;quot; nagu Facebook-is).&lt;br /&gt;
&lt;br /&gt;
Kohvikupidaja Teele soovid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* elektroonilisest menüüst asju kustutada, isegi siis kui asja peaks olema teoreetiliselt alles, aga tegelikult on asi otsas.&lt;br /&gt;
* elektrikatkestuse korral jääb menüü püsima. Ta peab teadma hindu mistahes olukorras.&lt;br /&gt;
* menüül näidatakse automaatselt ka ISIC kaardi omanike soodushinnad&lt;br /&gt;
* süsteem toetab ka poole portsjoni müümist.&lt;br /&gt;
&lt;br /&gt;
Linnar Viigi soovid/visioonid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* kõik oleks ka internetist kättesaadav, peale LCD ekraani, mis kajastab menüüd sööklas.&lt;br /&gt;
* aluseks facebook, kus siis söögid oleks nagu facebook-i alateemad.&lt;br /&gt;
* saab sööke hinnata, kommenteerida (täna oli väga maitsev praad).&lt;br /&gt;
* kasutajad saaks vaadata, mis menüüs on (ka järgmisel nädalal) ja mitu portsu veel alles on.&lt;br /&gt;
* kasutajad saaksid välja pakkuda menüüsid.&lt;br /&gt;
* erinevate söögikohtade kasutajad saaksid omavahel muljeid jagada.&lt;br /&gt;
* kuu aja aktiivsemad saavad prii lõuna.&lt;br /&gt;
* mingil ajal võib olla &amp;quot;happy hour&amp;quot; (enne sulgemist saab odavamalt).&lt;br /&gt;
* piiranguks on see, et toitu broneerida ei saa &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vaba tarkvara kasutamise võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Antud projekti puhul oleks võimalik kasutada [http://www.postgresql.org/ PostgreSQL] andmebaasi (vt. lisaks http://en.wikipedia.org/wiki/PostgreSQL ) Microsoft SQL Server&#039;i asemel. See võiks anda kasutajale võimaluse valida .NET ning [http://www.mono-project.com/ Mono] (vt. lisaks http://en.wikipedia.org/wiki/Mono_(software) ) platvormide vahel. Sel viisil oleks kliendil võimalik Microsoft&#039;i platvormi kõrval valida tõenäoliselt soodsam vaba tarkvara platvorm. Andmebaasi lõplik valik pole hetkel veel otsustatud.&lt;br /&gt;
&lt;br /&gt;
== Meeskond ja tööjaotus==&lt;br /&gt;
* Kristjan Stolin - projektijuht, suhtlus kliendiga, XML, wiki, teenuskihtide progemine, rollide halduse lehe progemine&lt;br /&gt;
* Ilmar Telga - XML, kliendiga suhtlus, wiki, teenuskihtide progemine, lõpprakenduste menüüd, login&lt;br /&gt;
* Rauno Rüga - XML, XSLT, andmebaasi loomine, wiki, mobiilirakendus, statistika&lt;br /&gt;
* Lauri Kermas - teenuskihtide ehitamine, wiki, rakenduse rollid ja kasutajad, login, kommenteerimise võimaluste progemine&lt;br /&gt;
&lt;br /&gt;
== XML Fail ==&lt;br /&gt;
=== XML ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Toidud&amp;gt;&lt;br /&gt;
  &amp;lt;Toit&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduNimetus&amp;gt;Viineri kaste&amp;lt;/ToiduNimetus&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduLiik&amp;gt;Praad&amp;lt;/ToiduLiik&amp;gt;&lt;br /&gt;
    &amp;lt;OlemasolevatYhikut&amp;gt;5&amp;lt;/OlemasolevatYhikut&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduKogus&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Poolportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;2011&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;1&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;9&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;15&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;07&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;23&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;        &lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.15&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;0&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;0&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;0&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;00&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;00&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;00&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Täisportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.80&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
    &amp;lt;/ToiduKogus&amp;gt;&lt;br /&gt;
    &amp;lt;Kommentaarid&amp;gt;&lt;br /&gt;
      &amp;lt;Kommentaar&amp;gt;&lt;br /&gt;
        &amp;lt;Saatja&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaNimi&amp;gt;Kristjan&amp;lt;/SaatjaNimi&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaRoll&amp;gt;Tudeng&amp;lt;/SaatjaRoll&amp;gt;&lt;br /&gt;
        &amp;lt;/Saatja&amp;gt;&lt;br /&gt;
        &amp;lt;Sisu&amp;gt;Minu lemmik toit ! Kui algebra tund ei hakkaks, sööks veel 5 portsjonit.&amp;lt;/Sisu&amp;gt;&lt;br /&gt;
      &amp;lt;/Kommentaar&amp;gt;&lt;br /&gt;
    &amp;lt;/Kommentaarid&amp;gt;&lt;br /&gt;
  &amp;lt;/Toit&amp;gt;&lt;br /&gt;
&amp;lt;/Toidud&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kommentaariks siis niipalju, et meie näide on ilma kohviku osata, selleks et näidet mitte liiga suureks ajada.&lt;br /&gt;
&lt;br /&gt;
Ka on meil moment puudu ID väljad, mis on igasugu andmebaasiga suhtlemiseks hädavajalikud, samas siin näidises palju juurde ei anna.&lt;br /&gt;
&lt;br /&gt;
Asja tegemisel avastasime, et põhiliseks arusaamatuse kohaks on toitude erinevad kogused (ehk siis pool portsjonit, suur / väike ja muud võrdlevad ühikud). Esimese võimalusena kaalusime teha lihtsalt täiesti eraldi toidud kõige kohta, stiilis &amp;quot;väike viineripraad&amp;quot; ja &amp;quot;suur viineripraad&amp;quot;. Kahjuks see variant ei kõlbaks eriti hästi, kuna need erinevad portsjonid kasutavad ikkagi samu materjale ja kui me peaks mingi süsteemiga näitama kui palju portsjoneid alles on. Sööklast näiteks pakuti et väike portsjon kasutab materjale kuskil 0.8 suure portsjoni ulatuses, ehk see suhtarv peaks olema kasutaja poolt (kohvikupidaja, restoraniomanik) ise sätitav. &lt;br /&gt;
&lt;br /&gt;
Tänu sellele sai meie süsteemi alustalaks siiski Toit, millel on oma Portsjonid siis erinevate hindade ja soodustustega. Moment pole meil ka Portsjoni XML osas toodud ära seost kogusega. (Kui palju ühe portsjoni lisamine/müümine peaks toidu üldkogust muutma).&lt;br /&gt;
&lt;br /&gt;
Kommenteerida saab meil moment toitu ennast, mitte eraldi portsjonit. Isegi kui kasutajad tahavad lisada kommentaare stiilis &amp;quot;See väike supp oli tõesti väga väike&amp;quot;, ei soovi nad seda ilmselt eraldi portsjoni alla panna. Tulevikus peaks kindlasti olema ka võimalus pigem kommenteerida üldisemalt (Kohvikut ennast, söögipaiku üldse), kui spetsiifilisemalt (Väikse prae kaste lisandi kohta).&lt;br /&gt;
&lt;br /&gt;
=== XML Schema ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Toidud&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Toit&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduNimetus&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;OlemasolevatYhikut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduKogus&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:choice maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;PortsjoniLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;Myygiaeg&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Aasta&amp;quot; type=&amp;quot;xs:unsignedShort&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Kuu&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Paev&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Tund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Minut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Sekund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;ToiduHind&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Eurohind&amp;quot; type=&amp;quot;xs:decimal&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Soodustus&amp;quot;&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseProtsent&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:choice&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Kommentaarid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Saatja&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaNimi&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaRoll&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Sisu&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
  &amp;lt;h2&amp;gt;Kohvikus müüdavad toidud&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr bgcolor=&amp;quot;#9acd32&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Veel alles&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Portsjon&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Müügiaeg&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustuse liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Kommentaar(id)&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;Toidud/Toit&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduNimetus&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduLiik&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;OlemasolevatYhikut&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;PortsjoniLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Paev&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Kuu&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Aasta&amp;quot; /&amp;gt; &amp;amp;nbsp;  &lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Tund&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Minut&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Sekund&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Eurohind&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseProtsent&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Kommentaarid/Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Sisu&amp;quot; /&amp;gt;&amp;amp;nbsp;(&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaRoll&amp;quot; /&amp;gt;&amp;amp;nbsp;&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaNimi&amp;quot; /&amp;gt;)&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XSLT poolt loodud tulemus on järgnev (lisasin veel kaks toitu XML faili, siin wiki lehel on ruumi kokkuhoiuks vaid 1 toit toitude listis):&lt;br /&gt;
[[File:Xslt.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arhitektuur ==&lt;br /&gt;
&lt;br /&gt;
Süsteem oli vahepeal plaanis ehitada kolmekihilise arhitektuuriga ([http://en.wikipedia.org/wiki/Multitier_architecture#Three-tier_architecture Three-tier architecture]). See peaks lihtsustama süsteemi haldamist ja laiendamist tulevikus. Aga kuna selle jaoks otsest vajadust polenud ja oleks vaid süsteemi keeruliseks ajanud, siis loobusime sellest.&lt;br /&gt;
&lt;br /&gt;
[[Image:three-tier.png|thumb|center|alt=Arhitektuuri skeem.|Arhitektuuri skeem.]]&lt;br /&gt;
&lt;br /&gt;
== Veebiteenus ==&lt;br /&gt;
===Andmemudel===&lt;br /&gt;
[[Image:KohvikuAndmemudel.jpg|thumb|right|alt=Kohviku projekti andmemudel|Andmemudel]]&lt;br /&gt;
Enne veebiteenuse meetodite kirjeldamist koostasime andmemudeli. Loodud andmemudeli põhjal lõime andmebaasi vajalike tabelite ja atribuutidega. Andmemudeli peal on rohelisega tähistatud tabelid, mis on oseselt seotud kohviku valdajaga ja mida WPF rakenduse jaoks kindlasti vaja on. Ülejäänud helesinised tabelid on vajalikud kasutajate võimaluste jaoks. Lisaks on andmemudelil kaks tabelit, mis pole teisega seotud, need on süsteemi administraatori jaoks, et oleks ülevaade, mis rakendused teenust enim kasutavad ning mis meetodeid kõige rohkem välja kutsutakse.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Teenuskihis olevad meetodid===&lt;br /&gt;
&lt;br /&gt;
====Kasutajatega seotud meetodid:====&lt;br /&gt;
*SaidiKasutajaLiik() - Tagastab antud kasutaja ID järgi kasutaja liigi nimetuse&lt;br /&gt;
*KustutaSaidiKasutaja() - Kustutab antud kasutaja ID järgi kasutaja tabelis Kasutaja&lt;br /&gt;
*AnnaKoikSaidiKasutajad() - Tagastab kõik kirjed tabelist Kasutaja&lt;br /&gt;
*AnnaKoikKohvikuKasutajad() - Tagastab antud kohviku ID järgi kõik kohviku kasutajad massiivina&lt;br /&gt;
*MuudaSaidiKasutajaLiik() - Muudab antud kasutaja ID järgi kasutaja liigi tabelis Kasutaja&lt;br /&gt;
*KoikLubatudSaidiKasutajaTyybid() - Tagastab andmebaasi kõik võimalikud kohviku kasutaja rollid (id-d ja nimed), muud andmed jäävad tühjaks&lt;br /&gt;
*KoikLubatudKohvikuRollid() - Tagastab andmebaasi kõik võimalikud site kasutaja rollid (id-d ja nimed), kohviku_id jääb tühjaks&lt;br /&gt;
*KasutajaKohvikuRollid() - Tagastab antud kasutaja ID järgi kõik kasutaja rollid kõikides kohvikutes&lt;br /&gt;
*MuudaKohvikuKasutajaRoll() - Muudab antud kasutaja ID ja kohviku ID järgi kasutaja rolli kohvikus, kui rolli pole, siis tekitatakse uus&lt;br /&gt;
*SaidiKasutajaLiikID() - Tagastab antud kasutaja ID järgi kasutaja liigi ID&lt;br /&gt;
*KohvikuKasutajaLiikID() - Tagastab antud kasutaja ID ja kohviku ID järgi kohviku kasutaja rolli ID&lt;br /&gt;
*AnnaKasutajaMeiliAadress() - Tagastab antud kasutaja nime alusel kasutaja meiliaadressi&lt;br /&gt;
*AnnaKasutajaIdJargi() - Tagastab kasutajanime kasutaja ID järgi&lt;br /&gt;
*AuthendiKasutaja() - Autendib kasutaja, õnnestumisel tagastab kasutaja ID, ebaõnnestumisel null &lt;br /&gt;
*RegistreeriKasutaja() - Registreerib kasutaja andmebaasi ja tagastab true kui kasutaja loomine õnnestus&lt;br /&gt;
&lt;br /&gt;
====Menüüga seotud meetodid====&lt;br /&gt;
*LisaArtikkelMenuuse() - Seob menüüartikli ja menüü&lt;br /&gt;
*LisaKohvikuleMenuu() - Seob menüü ja kohviku&lt;br /&gt;
*TagastabMenuuMuutujad() - Tagastab menüü järgi kas inimesel oleks õigust seda muuta&lt;br /&gt;
*KustutaMenuuJaKohvikuSeos() - Kustutab menüü ja kohviku seose&lt;br /&gt;
*LisaUusMenuu() - Teeb uue menüü, seob selle kohvikuga, kui kohviku ID on parameetrina kaasa antud&lt;br /&gt;
*MenuuKohvikuIdJargi() - Tagastab kohviku ID järgi kohviku tänaste või mitte tänaste menüüde ID-de massiivi&lt;br /&gt;
*LisaMenuuArtikkelMenuuse() - Sisestab antud müügiartikli menüüsse, mille ID on menyy_id&lt;br /&gt;
*KustutaMenuuArtikkel() - Kustutab müügiartikli ID ja menüü ID järgi müügiartikli menüüst&lt;br /&gt;
*TagastaMenuuArtiklid() - Tagastab menüü ID järgi menüüs olevad müügiartiklid&lt;br /&gt;
*VahetaMenuuArtiklit() - Muudab antud müügiartikli tabelis Myygiartikkel&lt;br /&gt;
*MenuuNimetus() - Tagastab menüü ID järgi menüü nimetuse&lt;br /&gt;
*AnnaMuugiartiklidMidaMenuusPole() - Tagastab müügiartiklid, mis pole veel menüüs, kus on juba müügiartiklid, mille IDd on antud massiivis&lt;br /&gt;
*AnnaMenuuNimed() - Tagastab kõigi menüüde nimetused tabelis Menyy&lt;br /&gt;
&lt;br /&gt;
====Kohvikutest üldiselt====&lt;br /&gt;
*KohvikuteNimed() - Tagastab kõigi kohvikute nimed massiivina&lt;br /&gt;
*KohvikuNimiIdJargi() - Tagastab antud kohviku ID järgi kohviku nime&lt;br /&gt;
*AnnaKoikOmanikuKohvikud() - Tagastab antud omaniku ID järgi kõik omaniku kohvikute ID-d massiivina&lt;br /&gt;
*Kohvikud() - Tagastab kõik kohvikute kirjed tabelist Kohvik&lt;br /&gt;
*KohvikuteArv() - Tagastab kõigi kohvikute arvu&lt;br /&gt;
*AnnaKaubad() - Tagastab kõik kaubad tabelist Kaup&lt;br /&gt;
*LisaKaup() - Lisab kauba kaupade nimekirja&lt;br /&gt;
*LisaKohvik() - Uue kohviku lisamine&lt;br /&gt;
&lt;br /&gt;
====Kommentaaridega seotud meetodid:====&lt;br /&gt;
*KohvikuKommentaarideArv() - Kohviku kommentaaride arv&lt;br /&gt;
*AnnaKohvikuKommentaarid() - Tagastab kommentaarid lehtede kaupa&lt;br /&gt;
*AnnaKohvikuKommentaar() - Tagastab üksiku kommentaari&lt;br /&gt;
*AnnaKohvikuKommentaarideHinded() - Tagastab kommentaaride jaoks võimalikud hinded koos kirjeldustega&lt;br /&gt;
*LisaKohvikuKommentaar() - Lisab kohviku kommentaari&lt;br /&gt;
*MuudaKohvikuKommentaar() - Muudab kohviku kommentaari&lt;br /&gt;
*MuudaKohvikuKommentaariOlek() - Muudab kohviku kommentaari oleku&lt;br /&gt;
*MuudaKohvikuKommentaariPeidetus() - Muudab kohviku kommentaari peidetust&lt;br /&gt;
&lt;br /&gt;
====Statistikaga seotud meetodid:====&lt;br /&gt;
*StatistikaRakendusteKohtaTana() - Tagastab rakenduse nimed ja nende vastu tehtud päringud tänasel päeval&lt;br /&gt;
*StatistikaRakendusteKohtaViimaneNadal() - Tagastab rakenduse nimed ja nende vastu tehtud päringud viimase nädala jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaSellelKuul() - Tagastab rakenduse nimed ja nende vastu tehtud päringud selle kuu jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaKokku() - Tagastab rakenduse nimed ja nende vastu tehtud päringud kogu aja vältel&lt;br /&gt;
*StatistikaMeetoditeKohtaTana() - Meetod leiab tänase päeva jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaViimaneNadal() - Meetod leiab viimase nädala jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaSellelKuul() - Meetod leiab kuu jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaKokku() - Meetod leiab kogu aja vältel kasutatud meetodid ja paringute arvu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebiteenuse projekti (WCF + andmebaas) saab siit: http://enos.itcollege.ee/~rruga/VRII/Teenusekiht.zip&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : CMS ==&lt;br /&gt;
&lt;br /&gt;
Meie loodud veebirakenduses on realiseeritud järgnevad CMS seotud funktsionaalsused :&lt;br /&gt;
*Kõikide kohvikute lehed on eraldi aadressiga, mis võimaldab eri kohvikud bookmarkida ja facebooki like anda. See on saavutatud tänu ?kohvik=1 aadressiribal, kus parameeteri kohvik number identifitseerib kohviku.&lt;br /&gt;
*Adminni õigustega kasutajal on võimalik lisada uus kohvikuid andembaasi&lt;br /&gt;
*Kohviku omanik saab lisada menüüd, muuta seda ja kustutada&lt;br /&gt;
*Adminnid saavad kasutajaid hallata, määrates nendele rolle, mis omakorda tagab teatud õigused&lt;br /&gt;
*Kohviku omanikud saavad  oma kohviku kasutajaid hallata, määrates neile näiteks müüja või kliendi rolli.&lt;br /&gt;
*Kogu menüü põhineb sitemapil, mille alus on kirjeldatud eraldi sitemap failis, lisaks sellel lisatakse sinna dünaamiselt kohvikud juurde ( mis andmebaasis olemas on )&lt;br /&gt;
*Kohviku omanik saab kohviku lehte isikupärastada tänu richteksti osale, näiteks lisada html osi.&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Veebirakendus ==&lt;br /&gt;
&lt;br /&gt;
Veebiteenust kasutavaks veebirakenduseks on ASP.NET rakendus. &lt;br /&gt;
&lt;br /&gt;
* Esilehel saab otsida kohvikuid või minna kohe huvipakkuva kohviku menüü lehele.&lt;br /&gt;
* Kohviku menüü lehel on näha tänased ja teised menüüd, kohviku lahtioleku aeg. Kui panna veebirakendus internetti, siis on võimalus Facebook-i kaudu kohviku fänniks hakata. Kommenteerimise ja soodustuste osa on veel pooleli.&lt;br /&gt;
* Sisse loginud kohviku omanik saab ka kohviku menüüsid muuta, lisada, kustutada. &lt;br /&gt;
* Kasutajate lehel saab sisse loginud kohviku omanik hallata kohviku kasutajaid.&lt;br /&gt;
* Statistika lehel saab vaadata statistikat teenust kasutanud rakenduste ja kasutatud meetodite kohta. Näeb nii tänase päeva, viimase nädala, selle kuu ja aasta statistikat&lt;br /&gt;
* Kohviku lisamise lehel saab aga admini õigustege kasutaja lisada uue kohviku.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:KohvikuMenuEdit.JPG|800px|Kohviku menüü muutmise leht. ITK kohviku menüüde muutmiseks tuleb logida sisse kasutajaga Ilmar parooliga &amp;quot;ilmar&amp;quot;.]]&lt;br /&gt;
&lt;br /&gt;
Kohviku menüü muutmise leht. ITK kohviku menüüde muutmiseks tuleb logida sisse kasutajaga Ilmar parooliga &amp;quot;ilmar&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Kohviku admin osa nägemiseks võib sisse logida kasutajaga rauno, parool on ka rauno. Sellega saab ligi statistikale ja uue kohviku loomisele.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebirakenduse koos uuendatud teenuskihiga saab siit: http://enos.itcollege.ee/~rruga/VRII/KohvikuProjekt.rar&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Kommentaaride komponent ==&lt;br /&gt;
&lt;br /&gt;
Kommentaaride sisestamiseks ja haldamiseks on loodud iseseisev ning enam jaolt taas kasutatav kommentaaride komponent. Komponent on hetkel realiseeritud ASP&#039;i User Control&#039;ina ja mitte Custom Control&#039;ina, mis vähendab veidi selle üleviidavust teistesse projektidesse. Siiski on selle muutmine ASP&#039;i Custom Control&#039;iks mõningate muudatustega võimalik.&lt;br /&gt;
&lt;br /&gt;
[[Image:comskeem.png|thumb|center|alt=Kommentaari komponendi skeem.|Kommentaari komponendi skeem.]]&lt;br /&gt;
&lt;br /&gt;
Kommentaaride komponent koosneb kahest osast, mis lisatakse lehele, millel vajatakse kommenteerimise funktsionaalsust:&lt;br /&gt;
sisendkontroll - see komponent on vajalik uute kommentaaride sisestamiseks;&lt;br /&gt;
väljundkontroll - antud komponent esitab olemasolevad kommentaarid hulga kaupa.&lt;br /&gt;
&lt;br /&gt;
Mõlemad kommentaari komponendi osad on kasutatavad ka iseseisvalt, kui see peaks vajalik olema. Kommentaari andmeid esitavad need komponendid läbi iseseisvate kommentaarikontrollide, mida võib ühel kontrollil olla ka mitu. Kommentaarikontrollid ei ole võimelised iseseisvalt kommentaaride andmeid hankima ning seepärast tuleb need täita väljapoolt, kas sisend- või väljundkontrollide poolt. Samuti tuleb uue kommentaari loomine läbi viia kommentaarikontrolli väliselt - seda teostabki sisendikontroll. Samas kogu ülejäänud kommentaari haldus, nagu olemasolevate kommentaaride muutmine ning uute olekute seadmine toimub üksnes läbi iseseisvate kommentaarikontrollide, mis sisaldavad täies mahus vastavat funktsionaalsust.&lt;br /&gt;
&lt;br /&gt;
Kommentaaride komponendi kõik kolm osa (sisendkontroll, väljundkontroll ja kommentaarikontroll) suhtlevad teenusekihiga läbi vastava ligipääsuobjekti. Ligipääsuobjekt tegeleb ühenduse ning sellega seonduvate võimalike vigade haldamisega. Kokkuvõtlikult loob see vajaduse korral uue ühenduse, sooritab päringud ning lõpuks sulgeb ühenduse, kui vastav korraldus antakse.&lt;br /&gt;
&lt;br /&gt;
Teenuses on vastavad protseduurid, mida teenusega suhtlemisel välja kutsutakse ning mis teostavad reaalseid muudatusi andmebaasis, seda muidugi vastavalt reeglitele.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus II : Mobiilirakendus ==&lt;br /&gt;
&lt;br /&gt;
Teine rakendus, mis veebiteenuse peale ehitatud sai, oli Windows Phone 7 rakendus. Lühidalt kirjeldades saab peale rakenduse käivitamist näha listi kõikidest olemasolevatest kohvikutest. Kui vajutad mingi kohviku nime peale, avaneb täpsem kirjeldus kohviku kohta, kust näeb lisaks kohviku nimele ka lühikest kirjeldust, tänast lahtiolekuaega ja kohviku aadressit. Samuti on kohviku kirjelduse lehel viide kohviku tänasele menüüle ja kommenteerimisele. Vajutades vaata menüüd nuppu avaneb vaade täna müügis olevatest müügiartiklitest ja nende hinnast, vajutades aga kommenteeri kohvikut nupule avaneb võimalus lisada kohviku kohta kommentaar.&lt;br /&gt;
&lt;br /&gt;
Kokkuvõttev pilt realiseeritud võimalustest:&lt;br /&gt;
&lt;br /&gt;
[[Image:WP7 rakendus.jpg|alt=WP7 rakendus.|WP7 rakenduse võimalused.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mobiilirakenduse saab alla tõmmata siit: http://enos.itcollege.ee/~rruga/VRII/Mobiilirakendus.rar&lt;br /&gt;
&lt;br /&gt;
NB! Et mobiilirakendust proovida ja mõistliku tulemust saada peab teil olema kõige uuem versioon meie projekti teenuskihist ning teenuskiht peab töötama.&lt;br /&gt;
&lt;br /&gt;
== Meeskonna punktide jaotus ==&lt;br /&gt;
Kõigi grupiliikmetega sai arutatud punktide jagamise üle ja ühine arvamus oli, et punktid jaotatakse järgnevalt:&lt;br /&gt;
*Rauno Rüga - 29 punkti&lt;br /&gt;
*Ilmar Telga - 20 punkti&lt;br /&gt;
*Kristjan Stolin - 17 punkti&lt;br /&gt;
*Lauri Kermas - 14 punkti&lt;br /&gt;
&lt;br /&gt;
== Meeskonna kokkuvõttev aruanne ==&lt;br /&gt;
&lt;br /&gt;
===Mis sai tehtud ?===&lt;br /&gt;
&lt;br /&gt;
===Mida sai peale viimast esitlust veel täiendatud ?===&lt;br /&gt;
&lt;br /&gt;
*ASP.NET rakendusel sai statistika charte sipakene väiksemaks tehtud, et nad näeksid paremad välja ja korraga ekraanil oleks näha nii päeva, nädala, kuu kui ka kogu aja jaotus (loomulikult normaalse suurusega ekraani puhul)&lt;br /&gt;
*Mobiilirakenduses menüü kuvamine korralikumaks (toit ja hind palkirjad juurde)&lt;br /&gt;
*Mobiilirakenduses kommenteerija nimi salvestatakse mobiili mällu, niiet kommenteerima tulles on kohe nime lahtris oma nimi alati olemas&lt;br /&gt;
&lt;br /&gt;
(Täiendused on olemas ka juba projekti rar failidel, millele siin wikis viited on)&lt;br /&gt;
&lt;br /&gt;
===Õpitud teadmised===&lt;br /&gt;
&lt;br /&gt;
===Ligikaudne ajahinnang tehtud tööle===&lt;br /&gt;
&lt;br /&gt;
*XML,XSLT koostamine ja selle arutamine rühmas - 5 h&lt;br /&gt;
*Andmemudeli arutamine grupis, selle loomine, täiendamine ja projekti ühildamine - 20 h&lt;br /&gt;
*Teenuskihi ehitamine - 60 h&lt;br /&gt;
*ASP.NET rakenduse tegemine - 75 h  &lt;br /&gt;
*Mobiilirakenduse tegemine - 24 h&lt;br /&gt;
&lt;br /&gt;
(Arvesse võtsime nii reaalse töö projekti kallal kui ka seotud teemadega tutvumine (näidete uurimine/läbi tegemine jne))&lt;br /&gt;
(Töö tunnid on kõigi inimeste peale kokku ehk kui arutasime kolmekesi XML struktuuri 1 tunni, siis kokku 3 töötundi)&lt;br /&gt;
===Kokkuvõtva esitluse slaidid ===&lt;br /&gt;
&lt;br /&gt;
== Logi ==&lt;br /&gt;
&lt;br /&gt;
=== 8. Mai ===&lt;br /&gt;
Veebirakendus esitluseks valmis. Täiendatud vikilehte.&lt;br /&gt;
&lt;br /&gt;
=== 7. Mai ===&lt;br /&gt;
Mobiilirakendus sai valmis ja selle kohta uuendatud vikilehte.&lt;br /&gt;
&lt;br /&gt;
=== 17. aprill ===&lt;br /&gt;
Wikilehe täiendamine andmemudeli ja veebiteenuse meetodite kirjeldusega.&lt;br /&gt;
&lt;br /&gt;
=== 9. aprill ===&lt;br /&gt;
Tegime rollide halduse, münüüde muutmise vormi. Meili saatmine registreerimisel. Toimus andmebaasi andmemudeli väike muutus. &lt;br /&gt;
&lt;br /&gt;
=== 30. märts ===&lt;br /&gt;
Tehtud on kohviku menüü ja kohviku kommenteerimise leht.&lt;br /&gt;
&lt;br /&gt;
=== 26. märts ===&lt;br /&gt;
Tehtud on esimesed veebiteenuse meetodid ja veebirakendusele kasutajate registreerimine.&lt;br /&gt;
&lt;br /&gt;
=== 10. märts ===&lt;br /&gt;
Väikese häki abil õnnestus kohviku kassa arvutis saada tööle üks Forms-i proovirakendus.&lt;br /&gt;
&lt;br /&gt;
=== 8. märts ===&lt;br /&gt;
Kuna kassa-aparaadis on operatsioonisüsteemiks Windows XP ja raud on 1.99 GHz, 256 RAM siis peaks saama&lt;br /&gt;
prototüübiks teha sinna peale rakenduse, mille ülesandeks menüüga tegelemine. &lt;br /&gt;
&lt;br /&gt;
=== 7. märts ===&lt;br /&gt;
Linnar Viik andis meile järgmist nõu: tuleb eristada kahte asja - see, mis peab valmis saama (&#039;&#039;must&#039;&#039;) ja see, mis oleks tore (&#039;&#039;nice to have&#039;&#039;). Valmis peab saama menüüga ekraan seinal (esialgu kasutajale prototüübi näitamiseks kasvõi näiteks PowerPoint-i abil tehtud). Alles siis kui on kasutajalt positiivne tagasiside saadud, võib edasi minna reaalse tarkvaralahenduse loomisega. Kui ka see on valmis ja kasutaja sellega rahul võib juurde mõelda &#039;&#039;nice to have&#039;&#039; asju (näiteks eelinfo järgmise päeva menüü kohta, üliõpilasesinduse sõnumite riba ja muid asju).&lt;br /&gt;
&lt;br /&gt;
Saime teada, et kui tahame, et meie loodav süsteem suhtleks IT Kohviku kassasüsteemiga, siis tuleb selle süsteemi tootjatega ühendust võtta ja nendega konsulteerida.&lt;br /&gt;
&lt;br /&gt;
=== 19.Veebruar ===&lt;br /&gt;
*Valmis XSLT fail.&lt;br /&gt;
&lt;br /&gt;
=== 9.Veebruar ===&lt;br /&gt;
* Esmane versioon XML ja XML Schemast olemas&lt;br /&gt;
* Tekkis küsimus kas XSLT faili tuleb käsitsi tekitada või automaatselt.&lt;br /&gt;
* Küsimus oli ka kas lahendasime portsjoni asja mõistlikult või oleks mõni teine lähenemine parem olnud.&lt;br /&gt;
* Küsimus, kas XML fail on liiga üle pingutatud või sobiva keerukusega&lt;br /&gt;
&lt;br /&gt;
=== 7. Veebruar ===&lt;br /&gt;
* Võtsime õppejõu poolt pakutud ideest kohe kinni, sest me eelistame teha praktilist asja, mida saab kasutada ja mille kasutamist saame ka iga päev jälgida. &lt;br /&gt;
* Esimese asjana otsustasime välja uurida mida meie &amp;quot;kliendid&amp;quot; (süsteemi tellijad) meilt ootavad. (Soovid idee punkti all)&lt;br /&gt;
* Valminud on lihtne teenusest ja klientidest koosnev süsteemi testmudel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Kasulikud lingid ==&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCF_auto_client_proxies.aspx&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/ms178472.aspx&lt;br /&gt;
&lt;br /&gt;
http://support.microsoft.com/kb/305141&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/aa702565.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/scottgu/archive/2007/04/06/tip-trick-enabling-ssl-on-iis7-using-self-signed-certificates.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/scottgu/archive/2010/06/28/introducing-iis-express.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/scottgu/archive/2011/01/03/vs-2010-sp1-beta-and-iis-developer-express.aspx&lt;br /&gt;
&lt;br /&gt;
http://blogs.msdn.com/b/webdevtools/archive/2011/03/14/enabling-iis-express-support-in-vs-2010-sp1.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/gunnarpeipman/archive/2010/12/11/visual-studio-2010-sp1-beta-supports-iis-express.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.dotnetcurry.com/ShowArticle.aspx?ID=487&lt;br /&gt;
&lt;br /&gt;
http://davidkiff.co.uk/post/2009/09/22/Setting-up-SSL-for-WCF-in-Development.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.request-response.com/blog/CommentView,guid,e9bb929b-d0b4-4626-b302-1d2715fc344a.aspx&lt;br /&gt;
&lt;br /&gt;
=== Kokkuvõtvad lingid ===&lt;br /&gt;
&lt;br /&gt;
* WCF&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/library/ee958158.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCF_auto_client_proxies.aspx&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/aa702565.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCFInstance.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCFConcurrency.aspx&lt;br /&gt;
&lt;br /&gt;
http://codeidol.com/csharp/wcf/Concurrency-Management/Service-Concurrency-Mode/&lt;br /&gt;
&lt;br /&gt;
* ASP&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/ms178472.aspx&lt;br /&gt;
&lt;br /&gt;
http://support.microsoft.com/kb/305141&lt;br /&gt;
&lt;br /&gt;
http://www.west-wind.com/weblog/posts/2008/Aug/14/ASPNET-gets-no-Respect&lt;br /&gt;
&lt;br /&gt;
http://lostechies.com/jimmybogard/2008/05/19/asp-net-officially-unmaintainable/&lt;br /&gt;
&lt;br /&gt;
http://www.lullabot.com/blog/why-not-asp-net&lt;br /&gt;
&lt;br /&gt;
http://reverseblade.blogspot.com/2008/06/web-development-aspnet-webforms-versus.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Võrgurakendused II: hajussüsteemide ehitamine]]&lt;br /&gt;
[[Category: Veebirakenduste loomine ASP.NET abil]]&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=33380</id>
		<title>Meeskond &quot;FoodWars&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=33380"/>
		<updated>2011-05-30T14:03:33Z</updated>

		<summary type="html">&lt;p&gt;Rruga: /* Meeskonna kokkuvõttev aruanne */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Idee ==&lt;br /&gt;
Meie tiimil on plaanis teha internetipõhine söökla menüü süsteem (aluseks IT Kolledži kohvik, aga suunitlus selline, et kõik kohvikud/sööklad saaksid teha endale kasutajakonto ja hakata rakendust kasutama), kust saaks jälgida menüüd, mis sööke saab süüa, mis veel järgi on, kasutajatel on ka võimalus sööke hinnata (stiilis &amp;quot;meeldib&amp;quot;, &amp;quot;ei meeldi&amp;quot; nagu Facebook-is).&lt;br /&gt;
&lt;br /&gt;
Kohvikupidaja Teele soovid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* elektroonilisest menüüst asju kustutada, isegi siis kui asja peaks olema teoreetiliselt alles, aga tegelikult on asi otsas.&lt;br /&gt;
* elektrikatkestuse korral jääb menüü püsima. Ta peab teadma hindu mistahes olukorras.&lt;br /&gt;
* menüül näidatakse automaatselt ka ISIC kaardi omanike soodushinnad&lt;br /&gt;
* süsteem toetab ka poole portsjoni müümist.&lt;br /&gt;
&lt;br /&gt;
Linnar Viigi soovid/visioonid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* kõik oleks ka internetist kättesaadav, peale LCD ekraani, mis kajastab menüüd sööklas.&lt;br /&gt;
* aluseks facebook, kus siis söögid oleks nagu facebook-i alateemad.&lt;br /&gt;
* saab sööke hinnata, kommenteerida (täna oli väga maitsev praad).&lt;br /&gt;
* kasutajad saaks vaadata, mis menüüs on (ka järgmisel nädalal) ja mitu portsu veel alles on.&lt;br /&gt;
* kasutajad saaksid välja pakkuda menüüsid.&lt;br /&gt;
* erinevate söögikohtade kasutajad saaksid omavahel muljeid jagada.&lt;br /&gt;
* kuu aja aktiivsemad saavad prii lõuna.&lt;br /&gt;
* mingil ajal võib olla &amp;quot;happy hour&amp;quot; (enne sulgemist saab odavamalt).&lt;br /&gt;
* piiranguks on see, et toitu broneerida ei saa &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vaba tarkvara kasutamise võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Antud projekti puhul oleks võimalik kasutada [http://www.postgresql.org/ PostgreSQL] andmebaasi (vt. lisaks http://en.wikipedia.org/wiki/PostgreSQL ) Microsoft SQL Server&#039;i asemel. See võiks anda kasutajale võimaluse valida .NET ning [http://www.mono-project.com/ Mono] (vt. lisaks http://en.wikipedia.org/wiki/Mono_(software) ) platvormide vahel. Sel viisil oleks kliendil võimalik Microsoft&#039;i platvormi kõrval valida tõenäoliselt soodsam vaba tarkvara platvorm. Andmebaasi lõplik valik pole hetkel veel otsustatud.&lt;br /&gt;
&lt;br /&gt;
== Meeskond ja tööjaotus==&lt;br /&gt;
* Kristjan Stolin - projektijuht, suhtlus kliendiga, XML, wiki, teenuskihtide progemine, rollide halduse lehe progemine&lt;br /&gt;
* Ilmar Telga - XML, kliendiga suhtlus, wiki, teenuskihtide progemine, lõpprakenduste menüüd, login&lt;br /&gt;
* Rauno Rüga - XML, XSLT, andmebaasi loomine, wiki, mobiilirakendus, statistika&lt;br /&gt;
* Lauri Kermas - teenuskihtide ehitamine, wiki, rakenduse rollid ja kasutajad, login, kommenteerimise võimaluste progemine&lt;br /&gt;
&lt;br /&gt;
== XML Fail ==&lt;br /&gt;
=== XML ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Toidud&amp;gt;&lt;br /&gt;
  &amp;lt;Toit&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduNimetus&amp;gt;Viineri kaste&amp;lt;/ToiduNimetus&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduLiik&amp;gt;Praad&amp;lt;/ToiduLiik&amp;gt;&lt;br /&gt;
    &amp;lt;OlemasolevatYhikut&amp;gt;5&amp;lt;/OlemasolevatYhikut&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduKogus&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Poolportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;2011&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;1&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;9&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;15&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;07&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;23&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;        &lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.15&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;0&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;0&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;0&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;00&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;00&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;00&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Täisportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.80&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
    &amp;lt;/ToiduKogus&amp;gt;&lt;br /&gt;
    &amp;lt;Kommentaarid&amp;gt;&lt;br /&gt;
      &amp;lt;Kommentaar&amp;gt;&lt;br /&gt;
        &amp;lt;Saatja&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaNimi&amp;gt;Kristjan&amp;lt;/SaatjaNimi&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaRoll&amp;gt;Tudeng&amp;lt;/SaatjaRoll&amp;gt;&lt;br /&gt;
        &amp;lt;/Saatja&amp;gt;&lt;br /&gt;
        &amp;lt;Sisu&amp;gt;Minu lemmik toit ! Kui algebra tund ei hakkaks, sööks veel 5 portsjonit.&amp;lt;/Sisu&amp;gt;&lt;br /&gt;
      &amp;lt;/Kommentaar&amp;gt;&lt;br /&gt;
    &amp;lt;/Kommentaarid&amp;gt;&lt;br /&gt;
  &amp;lt;/Toit&amp;gt;&lt;br /&gt;
&amp;lt;/Toidud&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kommentaariks siis niipalju, et meie näide on ilma kohviku osata, selleks et näidet mitte liiga suureks ajada.&lt;br /&gt;
&lt;br /&gt;
Ka on meil moment puudu ID väljad, mis on igasugu andmebaasiga suhtlemiseks hädavajalikud, samas siin näidises palju juurde ei anna.&lt;br /&gt;
&lt;br /&gt;
Asja tegemisel avastasime, et põhiliseks arusaamatuse kohaks on toitude erinevad kogused (ehk siis pool portsjonit, suur / väike ja muud võrdlevad ühikud). Esimese võimalusena kaalusime teha lihtsalt täiesti eraldi toidud kõige kohta, stiilis &amp;quot;väike viineripraad&amp;quot; ja &amp;quot;suur viineripraad&amp;quot;. Kahjuks see variant ei kõlbaks eriti hästi, kuna need erinevad portsjonid kasutavad ikkagi samu materjale ja kui me peaks mingi süsteemiga näitama kui palju portsjoneid alles on. Sööklast näiteks pakuti et väike portsjon kasutab materjale kuskil 0.8 suure portsjoni ulatuses, ehk see suhtarv peaks olema kasutaja poolt (kohvikupidaja, restoraniomanik) ise sätitav. &lt;br /&gt;
&lt;br /&gt;
Tänu sellele sai meie süsteemi alustalaks siiski Toit, millel on oma Portsjonid siis erinevate hindade ja soodustustega. Moment pole meil ka Portsjoni XML osas toodud ära seost kogusega. (Kui palju ühe portsjoni lisamine/müümine peaks toidu üldkogust muutma).&lt;br /&gt;
&lt;br /&gt;
Kommenteerida saab meil moment toitu ennast, mitte eraldi portsjonit. Isegi kui kasutajad tahavad lisada kommentaare stiilis &amp;quot;See väike supp oli tõesti väga väike&amp;quot;, ei soovi nad seda ilmselt eraldi portsjoni alla panna. Tulevikus peaks kindlasti olema ka võimalus pigem kommenteerida üldisemalt (Kohvikut ennast, söögipaiku üldse), kui spetsiifilisemalt (Väikse prae kaste lisandi kohta).&lt;br /&gt;
&lt;br /&gt;
=== XML Schema ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Toidud&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Toit&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduNimetus&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;OlemasolevatYhikut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduKogus&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:choice maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;PortsjoniLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;Myygiaeg&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Aasta&amp;quot; type=&amp;quot;xs:unsignedShort&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Kuu&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Paev&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Tund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Minut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Sekund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;ToiduHind&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Eurohind&amp;quot; type=&amp;quot;xs:decimal&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Soodustus&amp;quot;&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseProtsent&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:choice&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Kommentaarid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Saatja&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaNimi&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaRoll&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Sisu&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
  &amp;lt;h2&amp;gt;Kohvikus müüdavad toidud&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr bgcolor=&amp;quot;#9acd32&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Veel alles&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Portsjon&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Müügiaeg&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustuse liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Kommentaar(id)&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;Toidud/Toit&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduNimetus&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduLiik&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;OlemasolevatYhikut&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;PortsjoniLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Paev&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Kuu&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Aasta&amp;quot; /&amp;gt; &amp;amp;nbsp;  &lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Tund&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Minut&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Sekund&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Eurohind&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseProtsent&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Kommentaarid/Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Sisu&amp;quot; /&amp;gt;&amp;amp;nbsp;(&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaRoll&amp;quot; /&amp;gt;&amp;amp;nbsp;&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaNimi&amp;quot; /&amp;gt;)&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XSLT poolt loodud tulemus on järgnev (lisasin veel kaks toitu XML faili, siin wiki lehel on ruumi kokkuhoiuks vaid 1 toit toitude listis):&lt;br /&gt;
[[File:Xslt.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arhitektuur ==&lt;br /&gt;
&lt;br /&gt;
Süsteem oli vahepeal plaanis ehitada kolmekihilise arhitektuuriga ([http://en.wikipedia.org/wiki/Multitier_architecture#Three-tier_architecture Three-tier architecture]). See peaks lihtsustama süsteemi haldamist ja laiendamist tulevikus. Aga kuna selle jaoks otsest vajadust polenud ja oleks vaid süsteemi keeruliseks ajanud, siis loobusime sellest.&lt;br /&gt;
&lt;br /&gt;
[[Image:three-tier.png|thumb|center|alt=Arhitektuuri skeem.|Arhitektuuri skeem.]]&lt;br /&gt;
&lt;br /&gt;
== Veebiteenus ==&lt;br /&gt;
===Andmemudel===&lt;br /&gt;
[[Image:KohvikuAndmemudel.jpg|thumb|right|alt=Kohviku projekti andmemudel|Andmemudel]]&lt;br /&gt;
Enne veebiteenuse meetodite kirjeldamist koostasime andmemudeli. Loodud andmemudeli põhjal lõime andmebaasi vajalike tabelite ja atribuutidega. Andmemudeli peal on rohelisega tähistatud tabelid, mis on oseselt seotud kohviku valdajaga ja mida WPF rakenduse jaoks kindlasti vaja on. Ülejäänud helesinised tabelid on vajalikud kasutajate võimaluste jaoks. Lisaks on andmemudelil kaks tabelit, mis pole teisega seotud, need on süsteemi administraatori jaoks, et oleks ülevaade, mis rakendused teenust enim kasutavad ning mis meetodeid kõige rohkem välja kutsutakse.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Teenuskihis olevad meetodid===&lt;br /&gt;
&lt;br /&gt;
====Kasutajatega seotud meetodid:====&lt;br /&gt;
*SaidiKasutajaLiik() - Tagastab antud kasutaja ID järgi kasutaja liigi nimetuse&lt;br /&gt;
*KustutaSaidiKasutaja() - Kustutab antud kasutaja ID järgi kasutaja tabelis Kasutaja&lt;br /&gt;
*AnnaKoikSaidiKasutajad() - Tagastab kõik kirjed tabelist Kasutaja&lt;br /&gt;
*AnnaKoikKohvikuKasutajad() - Tagastab antud kohviku ID järgi kõik kohviku kasutajad massiivina&lt;br /&gt;
*MuudaSaidiKasutajaLiik() - Muudab antud kasutaja ID järgi kasutaja liigi tabelis Kasutaja&lt;br /&gt;
*KoikLubatudSaidiKasutajaTyybid() - Tagastab andmebaasi kõik võimalikud kohviku kasutaja rollid (id-d ja nimed), muud andmed jäävad tühjaks&lt;br /&gt;
*KoikLubatudKohvikuRollid() - Tagastab andmebaasi kõik võimalikud site kasutaja rollid (id-d ja nimed), kohviku_id jääb tühjaks&lt;br /&gt;
*KasutajaKohvikuRollid() - Tagastab antud kasutaja ID järgi kõik kasutaja rollid kõikides kohvikutes&lt;br /&gt;
*MuudaKohvikuKasutajaRoll() - Muudab antud kasutaja ID ja kohviku ID järgi kasutaja rolli kohvikus, kui rolli pole, siis tekitatakse uus&lt;br /&gt;
*SaidiKasutajaLiikID() - Tagastab antud kasutaja ID järgi kasutaja liigi ID&lt;br /&gt;
*KohvikuKasutajaLiikID() - Tagastab antud kasutaja ID ja kohviku ID järgi kohviku kasutaja rolli ID&lt;br /&gt;
*AnnaKasutajaMeiliAadress() - Tagastab antud kasutaja nime alusel kasutaja meiliaadressi&lt;br /&gt;
*AnnaKasutajaIdJargi() - Tagastab kasutajanime kasutaja ID järgi&lt;br /&gt;
*AuthendiKasutaja() - Autendib kasutaja, õnnestumisel tagastab kasutaja ID, ebaõnnestumisel null &lt;br /&gt;
*RegistreeriKasutaja() - Registreerib kasutaja andmebaasi ja tagastab true kui kasutaja loomine õnnestus&lt;br /&gt;
&lt;br /&gt;
====Menüüga seotud meetodid====&lt;br /&gt;
*LisaArtikkelMenuuse() - Seob menüüartikli ja menüü&lt;br /&gt;
*LisaKohvikuleMenuu() - Seob menüü ja kohviku&lt;br /&gt;
*TagastabMenuuMuutujad() - Tagastab menüü järgi kas inimesel oleks õigust seda muuta&lt;br /&gt;
*KustutaMenuuJaKohvikuSeos() - Kustutab menüü ja kohviku seose&lt;br /&gt;
*LisaUusMenuu() - Teeb uue menüü, seob selle kohvikuga, kui kohviku ID on parameetrina kaasa antud&lt;br /&gt;
*MenuuKohvikuIdJargi() - Tagastab kohviku ID järgi kohviku tänaste või mitte tänaste menüüde ID-de massiivi&lt;br /&gt;
*LisaMenuuArtikkelMenuuse() - Sisestab antud müügiartikli menüüsse, mille ID on menyy_id&lt;br /&gt;
*KustutaMenuuArtikkel() - Kustutab müügiartikli ID ja menüü ID järgi müügiartikli menüüst&lt;br /&gt;
*TagastaMenuuArtiklid() - Tagastab menüü ID järgi menüüs olevad müügiartiklid&lt;br /&gt;
*VahetaMenuuArtiklit() - Muudab antud müügiartikli tabelis Myygiartikkel&lt;br /&gt;
*MenuuNimetus() - Tagastab menüü ID järgi menüü nimetuse&lt;br /&gt;
*AnnaMuugiartiklidMidaMenuusPole() - Tagastab müügiartiklid, mis pole veel menüüs, kus on juba müügiartiklid, mille IDd on antud massiivis&lt;br /&gt;
*AnnaMenuuNimed() - Tagastab kõigi menüüde nimetused tabelis Menyy&lt;br /&gt;
&lt;br /&gt;
====Kohvikutest üldiselt====&lt;br /&gt;
*KohvikuteNimed() - Tagastab kõigi kohvikute nimed massiivina&lt;br /&gt;
*KohvikuNimiIdJargi() - Tagastab antud kohviku ID järgi kohviku nime&lt;br /&gt;
*AnnaKoikOmanikuKohvikud() - Tagastab antud omaniku ID järgi kõik omaniku kohvikute ID-d massiivina&lt;br /&gt;
*Kohvikud() - Tagastab kõik kohvikute kirjed tabelist Kohvik&lt;br /&gt;
*KohvikuteArv() - Tagastab kõigi kohvikute arvu&lt;br /&gt;
*AnnaKaubad() - Tagastab kõik kaubad tabelist Kaup&lt;br /&gt;
*LisaKaup() - Lisab kauba kaupade nimekirja&lt;br /&gt;
*LisaKohvik() - Uue kohviku lisamine&lt;br /&gt;
&lt;br /&gt;
====Kommentaaridega seotud meetodid:====&lt;br /&gt;
*KohvikuKommentaarideArv() - Kohviku kommentaaride arv&lt;br /&gt;
*AnnaKohvikuKommentaarid() - Tagastab kommentaarid lehtede kaupa&lt;br /&gt;
*AnnaKohvikuKommentaar() - Tagastab üksiku kommentaari&lt;br /&gt;
*AnnaKohvikuKommentaarideHinded() - Tagastab kommentaaride jaoks võimalikud hinded koos kirjeldustega&lt;br /&gt;
*LisaKohvikuKommentaar() - Lisab kohviku kommentaari&lt;br /&gt;
*MuudaKohvikuKommentaar() - Muudab kohviku kommentaari&lt;br /&gt;
*MuudaKohvikuKommentaariOlek() - Muudab kohviku kommentaari oleku&lt;br /&gt;
*MuudaKohvikuKommentaariPeidetus() - Muudab kohviku kommentaari peidetust&lt;br /&gt;
&lt;br /&gt;
====Statistikaga seotud meetodid:====&lt;br /&gt;
*StatistikaRakendusteKohtaTana() - Tagastab rakenduse nimed ja nende vastu tehtud päringud tänasel päeval&lt;br /&gt;
*StatistikaRakendusteKohtaViimaneNadal() - Tagastab rakenduse nimed ja nende vastu tehtud päringud viimase nädala jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaSellelKuul() - Tagastab rakenduse nimed ja nende vastu tehtud päringud selle kuu jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaKokku() - Tagastab rakenduse nimed ja nende vastu tehtud päringud kogu aja vältel&lt;br /&gt;
*StatistikaMeetoditeKohtaTana() - Meetod leiab tänase päeva jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaViimaneNadal() - Meetod leiab viimase nädala jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaSellelKuul() - Meetod leiab kuu jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaKokku() - Meetod leiab kogu aja vältel kasutatud meetodid ja paringute arvu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebiteenuse projekti (WCF + andmebaas) saab siit: http://enos.itcollege.ee/~rruga/VRII/Teenusekiht.zip&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : CMS ==&lt;br /&gt;
&lt;br /&gt;
Meie loodud veebirakenduses on realiseeritud järgnevad CMS seotud funktsionaalsused :&lt;br /&gt;
*Kõikide kohvikute lehed on eraldi aadressiga, mis võimaldab eri kohvikud bookmarkida ja facebooki like anda. See on saavutatud tänu ?kohvik=1 aadressiribal, kus parameeteri kohvik number identifitseerib kohviku.&lt;br /&gt;
*Adminni õigustega kasutajal on võimalik lisada uus kohvikuid andembaasi&lt;br /&gt;
*Kohviku omanik saab lisada menüüd, muuta seda ja kustutada&lt;br /&gt;
*Adminnid saavad kasutajaid hallata, määrates nendele rolle, mis omakorda tagab teatud õigused&lt;br /&gt;
*Kohviku omanikud saavad  oma kohviku kasutajaid hallata, määrates neile näiteks müüja või kliendi rolli.&lt;br /&gt;
*Kogu menüü põhineb sitemapil, mille alus on kirjeldatud eraldi sitemap failis, lisaks sellel lisatakse sinna dünaamiselt kohvikud juurde ( mis andmebaasis olemas on )&lt;br /&gt;
*Kohviku omanik saab kohviku lehte isikupärastada tänu richteksti osale, näiteks lisada html osi.&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Veebirakendus ==&lt;br /&gt;
&lt;br /&gt;
Veebiteenust kasutavaks veebirakenduseks on ASP.NET rakendus. &lt;br /&gt;
&lt;br /&gt;
* Esilehel saab otsida kohvikuid või minna kohe huvipakkuva kohviku menüü lehele.&lt;br /&gt;
* Kohviku menüü lehel on näha tänased ja teised menüüd, kohviku lahtioleku aeg. Kui panna veebirakendus internetti, siis on võimalus Facebook-i kaudu kohviku fänniks hakata. Kommenteerimise ja soodustuste osa on veel pooleli.&lt;br /&gt;
* Sisse loginud kohviku omanik saab ka kohviku menüüsid muuta, lisada, kustutada. &lt;br /&gt;
* Kasutajate lehel saab sisse loginud kohviku omanik hallata kohviku kasutajaid.&lt;br /&gt;
* Statistika lehel saab vaadata statistikat teenust kasutanud rakenduste ja kasutatud meetodite kohta. Näeb nii tänase päeva, viimase nädala, selle kuu ja aasta statistikat&lt;br /&gt;
* Kohviku lisamise lehel saab aga admini õigustege kasutaja lisada uue kohviku.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:KohvikuMenuEdit.JPG|800px|Kohviku menüü muutmise leht. ITK kohviku menüüde muutmiseks tuleb logida sisse kasutajaga Ilmar parooliga &amp;quot;ilmar&amp;quot;.]]&lt;br /&gt;
&lt;br /&gt;
Kohviku menüü muutmise leht. ITK kohviku menüüde muutmiseks tuleb logida sisse kasutajaga Ilmar parooliga &amp;quot;ilmar&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Kohviku admin osa nägemiseks võib sisse logida kasutajaga rauno, parool on ka rauno. Sellega saab ligi statistikale ja uue kohviku loomisele.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebirakenduse koos uuendatud teenuskihiga saab siit: http://enos.itcollege.ee/~rruga/VRII/KohvikuProjekt.rar&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Kommentaaride komponent ==&lt;br /&gt;
&lt;br /&gt;
Kommentaaride sisestamiseks ja haldamiseks on loodud iseseisev ning enam jaolt taas kasutatav kommentaaride komponent. Komponent on hetkel realiseeritud ASP&#039;i User Control&#039;ina ja mitte Custom Control&#039;ina, mis vähendab veidi selle üleviidavust teistesse projektidesse. Siiski on selle muutmine ASP&#039;i Custom Control&#039;iks mõningate muudatustega võimalik.&lt;br /&gt;
&lt;br /&gt;
[[Image:comskeem.png|thumb|center|alt=Kommentaari komponendi skeem.|Kommentaari komponendi skeem.]]&lt;br /&gt;
&lt;br /&gt;
Kommentaaride komponent koosneb kahest osast, mis lisatakse lehele, millel vajatakse kommenteerimise funktsionaalsust:&lt;br /&gt;
sisendkontroll - see komponent on vajalik uute kommentaaride sisestamiseks;&lt;br /&gt;
väljundkontroll - antud komponent esitab olemasolevad kommentaarid hulga kaupa.&lt;br /&gt;
&lt;br /&gt;
Mõlemad kommentaari komponendi osad on kasutatavad ka iseseisvalt, kui see peaks vajalik olema. Kommentaari andmeid esitavad need komponendid läbi iseseisvate kommentaarikontrollide, mida võib ühel kontrollil olla ka mitu. Kommentaarikontrollid ei ole võimelised iseseisvalt kommentaaride andmeid hankima ning seepärast tuleb need täita väljapoolt, kas sisend- või väljundkontrollide poolt. Samuti tuleb uue kommentaari loomine läbi viia kommentaarikontrolli väliselt - seda teostabki sisendikontroll. Samas kogu ülejäänud kommentaari haldus, nagu olemasolevate kommentaaride muutmine ning uute olekute seadmine toimub üksnes läbi iseseisvate kommentaarikontrollide, mis sisaldavad täies mahus vastavat funktsionaalsust.&lt;br /&gt;
&lt;br /&gt;
Kommentaaride komponendi kõik kolm osa (sisendkontroll, väljundkontroll ja kommentaarikontroll) suhtlevad teenusekihiga läbi vastava ligipääsuobjekti. Ligipääsuobjekt tegeleb ühenduse ning sellega seonduvate võimalike vigade haldamisega. Kokkuvõtlikult loob see vajaduse korral uue ühenduse, sooritab päringud ning lõpuks sulgeb ühenduse, kui vastav korraldus antakse.&lt;br /&gt;
&lt;br /&gt;
Teenuses on vastavad protseduurid, mida teenusega suhtlemisel välja kutsutakse ning mis teostavad reaalseid muudatusi andmebaasis, seda muidugi vastavalt reeglitele.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus II : Mobiilirakendus ==&lt;br /&gt;
&lt;br /&gt;
Teine rakendus, mis veebiteenuse peale ehitatud sai, oli Windows Phone 7 rakendus. Lühidalt kirjeldades saab peale rakenduse käivitamist näha listi kõikidest olemasolevatest kohvikutest. Kui vajutad mingi kohviku nime peale, avaneb täpsem kirjeldus kohviku kohta, kust näeb lisaks kohviku nimele ka lühikest kirjeldust, tänast lahtiolekuaega ja kohviku aadressit. Samuti on kohviku kirjelduse lehel viide kohviku tänasele menüüle ja kommenteerimisele. Vajutades vaata menüüd nuppu avaneb vaade täna müügis olevatest müügiartiklitest ja nende hinnast, vajutades aga kommenteeri kohvikut nupule avaneb võimalus lisada kohviku kohta kommentaar.&lt;br /&gt;
&lt;br /&gt;
Kokkuvõttev pilt realiseeritud võimalustest:&lt;br /&gt;
&lt;br /&gt;
[[Image:WP7 rakendus.jpg|alt=WP7 rakendus.|WP7 rakenduse võimalused.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mobiilirakenduse saab alla tõmmata siit: http://enos.itcollege.ee/~rruga/VRII/Mobiilirakendus.rar&lt;br /&gt;
&lt;br /&gt;
NB! Et mobiilirakendust proovida ja mõistliku tulemust saada peab teil olema kõige uuem versioon meie projekti teenuskihist ning teenuskiht peab töötama.&lt;br /&gt;
&lt;br /&gt;
== Meeskonna punktide jaotus ==&lt;br /&gt;
Kõigi grupiliikmetega sai arutatud punktide jagamise üle ja ühine arvamus oli, et punktid jaotatakse järgnevalt:&lt;br /&gt;
*Rauno Rüga - 29 punkti&lt;br /&gt;
*Ilmar Telga - 20 punkti&lt;br /&gt;
*Kristjan Stolin - 17 punkti&lt;br /&gt;
*Lauri Kermas - 14 punkti&lt;br /&gt;
&lt;br /&gt;
== Meeskonna kokkuvõttev aruanne ==&lt;br /&gt;
&lt;br /&gt;
===Mis sai tehtud ?===&lt;br /&gt;
&lt;br /&gt;
===Mida sai peale viimast esitlust veel täiendatud ?===&lt;br /&gt;
&lt;br /&gt;
*ASP.NET rakendusel sai statistika charte sipakene väiksemaks tehtud, et nad näeksid paremad välja ja korraga ekraanil oleks näha nii päeva, nädala, kuu kui ka kogu aja jaotus (loomulikult normaalse suurusega ekraani puhul)&lt;br /&gt;
*Mobiilirakenduses menüü kuvamine korralikumaks (toit ja hind palkirjad juurde)&lt;br /&gt;
*Mobiilirakenduses kommenteerija nimi salvestatakse mobiili mällu, niiet kommenteerima tulles on kohe nime lahtris oma nimi alati olemas&lt;br /&gt;
&lt;br /&gt;
(Täiendused on olemas ka juba projekti rar failidel, millele siin wikis viited on)&lt;br /&gt;
&lt;br /&gt;
===Õpitud teadmised===&lt;br /&gt;
&lt;br /&gt;
===Kokkuvõtva esitluse slaidid ===&lt;br /&gt;
&lt;br /&gt;
== Logi ==&lt;br /&gt;
&lt;br /&gt;
=== 8. Mai ===&lt;br /&gt;
Veebirakendus esitluseks valmis. Täiendatud vikilehte.&lt;br /&gt;
&lt;br /&gt;
=== 7. Mai ===&lt;br /&gt;
Mobiilirakendus sai valmis ja selle kohta uuendatud vikilehte.&lt;br /&gt;
&lt;br /&gt;
=== 17. aprill ===&lt;br /&gt;
Wikilehe täiendamine andmemudeli ja veebiteenuse meetodite kirjeldusega.&lt;br /&gt;
&lt;br /&gt;
=== 9. aprill ===&lt;br /&gt;
Tegime rollide halduse, münüüde muutmise vormi. Meili saatmine registreerimisel. Toimus andmebaasi andmemudeli väike muutus. &lt;br /&gt;
&lt;br /&gt;
=== 30. märts ===&lt;br /&gt;
Tehtud on kohviku menüü ja kohviku kommenteerimise leht.&lt;br /&gt;
&lt;br /&gt;
=== 26. märts ===&lt;br /&gt;
Tehtud on esimesed veebiteenuse meetodid ja veebirakendusele kasutajate registreerimine.&lt;br /&gt;
&lt;br /&gt;
=== 10. märts ===&lt;br /&gt;
Väikese häki abil õnnestus kohviku kassa arvutis saada tööle üks Forms-i proovirakendus.&lt;br /&gt;
&lt;br /&gt;
=== 8. märts ===&lt;br /&gt;
Kuna kassa-aparaadis on operatsioonisüsteemiks Windows XP ja raud on 1.99 GHz, 256 RAM siis peaks saama&lt;br /&gt;
prototüübiks teha sinna peale rakenduse, mille ülesandeks menüüga tegelemine. &lt;br /&gt;
&lt;br /&gt;
=== 7. märts ===&lt;br /&gt;
Linnar Viik andis meile järgmist nõu: tuleb eristada kahte asja - see, mis peab valmis saama (&#039;&#039;must&#039;&#039;) ja see, mis oleks tore (&#039;&#039;nice to have&#039;&#039;). Valmis peab saama menüüga ekraan seinal (esialgu kasutajale prototüübi näitamiseks kasvõi näiteks PowerPoint-i abil tehtud). Alles siis kui on kasutajalt positiivne tagasiside saadud, võib edasi minna reaalse tarkvaralahenduse loomisega. Kui ka see on valmis ja kasutaja sellega rahul võib juurde mõelda &#039;&#039;nice to have&#039;&#039; asju (näiteks eelinfo järgmise päeva menüü kohta, üliõpilasesinduse sõnumite riba ja muid asju).&lt;br /&gt;
&lt;br /&gt;
Saime teada, et kui tahame, et meie loodav süsteem suhtleks IT Kohviku kassasüsteemiga, siis tuleb selle süsteemi tootjatega ühendust võtta ja nendega konsulteerida.&lt;br /&gt;
&lt;br /&gt;
=== 19.Veebruar ===&lt;br /&gt;
*Valmis XSLT fail.&lt;br /&gt;
&lt;br /&gt;
=== 9.Veebruar ===&lt;br /&gt;
* Esmane versioon XML ja XML Schemast olemas&lt;br /&gt;
* Tekkis küsimus kas XSLT faili tuleb käsitsi tekitada või automaatselt.&lt;br /&gt;
* Küsimus oli ka kas lahendasime portsjoni asja mõistlikult või oleks mõni teine lähenemine parem olnud.&lt;br /&gt;
* Küsimus, kas XML fail on liiga üle pingutatud või sobiva keerukusega&lt;br /&gt;
&lt;br /&gt;
=== 7. Veebruar ===&lt;br /&gt;
* Võtsime õppejõu poolt pakutud ideest kohe kinni, sest me eelistame teha praktilist asja, mida saab kasutada ja mille kasutamist saame ka iga päev jälgida. &lt;br /&gt;
* Esimese asjana otsustasime välja uurida mida meie &amp;quot;kliendid&amp;quot; (süsteemi tellijad) meilt ootavad. (Soovid idee punkti all)&lt;br /&gt;
* Valminud on lihtne teenusest ja klientidest koosnev süsteemi testmudel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Kasulikud lingid ==&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCF_auto_client_proxies.aspx&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/ms178472.aspx&lt;br /&gt;
&lt;br /&gt;
http://support.microsoft.com/kb/305141&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/aa702565.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/scottgu/archive/2007/04/06/tip-trick-enabling-ssl-on-iis7-using-self-signed-certificates.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/scottgu/archive/2010/06/28/introducing-iis-express.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/scottgu/archive/2011/01/03/vs-2010-sp1-beta-and-iis-developer-express.aspx&lt;br /&gt;
&lt;br /&gt;
http://blogs.msdn.com/b/webdevtools/archive/2011/03/14/enabling-iis-express-support-in-vs-2010-sp1.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/gunnarpeipman/archive/2010/12/11/visual-studio-2010-sp1-beta-supports-iis-express.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.dotnetcurry.com/ShowArticle.aspx?ID=487&lt;br /&gt;
&lt;br /&gt;
http://davidkiff.co.uk/post/2009/09/22/Setting-up-SSL-for-WCF-in-Development.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.request-response.com/blog/CommentView,guid,e9bb929b-d0b4-4626-b302-1d2715fc344a.aspx&lt;br /&gt;
&lt;br /&gt;
=== Kokkuvõtvad lingid ===&lt;br /&gt;
&lt;br /&gt;
* WCF&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/library/ee958158.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCF_auto_client_proxies.aspx&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/aa702565.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCFInstance.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCFConcurrency.aspx&lt;br /&gt;
&lt;br /&gt;
http://codeidol.com/csharp/wcf/Concurrency-Management/Service-Concurrency-Mode/&lt;br /&gt;
&lt;br /&gt;
* ASP&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/ms178472.aspx&lt;br /&gt;
&lt;br /&gt;
http://support.microsoft.com/kb/305141&lt;br /&gt;
&lt;br /&gt;
http://www.west-wind.com/weblog/posts/2008/Aug/14/ASPNET-gets-no-Respect&lt;br /&gt;
&lt;br /&gt;
http://lostechies.com/jimmybogard/2008/05/19/asp-net-officially-unmaintainable/&lt;br /&gt;
&lt;br /&gt;
http://www.lullabot.com/blog/why-not-asp-net&lt;br /&gt;
&lt;br /&gt;
http://reverseblade.blogspot.com/2008/06/web-development-aspnet-webforms-versus.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Võrgurakendused II: hajussüsteemide ehitamine]]&lt;br /&gt;
[[Category: Veebirakenduste loomine ASP.NET abil]]&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=33181</id>
		<title>Meeskond &quot;FoodWars&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=33181"/>
		<updated>2011-05-28T14:51:45Z</updated>

		<summary type="html">&lt;p&gt;Rruga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Idee ==&lt;br /&gt;
Meie tiimil on plaanis teha internetipõhine söökla menüü süsteem (aluseks IT Kolledži kohvik, aga suunitlus selline, et kõik kohvikud/sööklad saaksid teha endale kasutajakonto ja hakata rakendust kasutama), kust saaks jälgida menüüd, mis sööke saab süüa, mis veel järgi on, kasutajatel on ka võimalus sööke hinnata (stiilis &amp;quot;meeldib&amp;quot;, &amp;quot;ei meeldi&amp;quot; nagu Facebook-is).&lt;br /&gt;
&lt;br /&gt;
Kohvikupidaja Teele soovid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* elektroonilisest menüüst asju kustutada, isegi siis kui asja peaks olema teoreetiliselt alles, aga tegelikult on asi otsas.&lt;br /&gt;
* elektrikatkestuse korral jääb menüü püsima. Ta peab teadma hindu mistahes olukorras.&lt;br /&gt;
* menüül näidatakse automaatselt ka ISIC kaardi omanike soodushinnad&lt;br /&gt;
* süsteem toetab ka poole portsjoni müümist.&lt;br /&gt;
&lt;br /&gt;
Linnar Viigi soovid/visioonid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* kõik oleks ka internetist kättesaadav, peale LCD ekraani, mis kajastab menüüd sööklas.&lt;br /&gt;
* aluseks facebook, kus siis söögid oleks nagu facebook-i alateemad.&lt;br /&gt;
* saab sööke hinnata, kommenteerida (täna oli väga maitsev praad).&lt;br /&gt;
* kasutajad saaks vaadata, mis menüüs on (ka järgmisel nädalal) ja mitu portsu veel alles on.&lt;br /&gt;
* kasutajad saaksid välja pakkuda menüüsid.&lt;br /&gt;
* erinevate söögikohtade kasutajad saaksid omavahel muljeid jagada.&lt;br /&gt;
* kuu aja aktiivsemad saavad prii lõuna.&lt;br /&gt;
* mingil ajal võib olla &amp;quot;happy hour&amp;quot; (enne sulgemist saab odavamalt).&lt;br /&gt;
* piiranguks on see, et toitu broneerida ei saa &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vaba tarkvara kasutamise võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Antud projekti puhul oleks võimalik kasutada [http://www.postgresql.org/ PostgreSQL] andmebaasi (vt. lisaks http://en.wikipedia.org/wiki/PostgreSQL ) Microsoft SQL Server&#039;i asemel. See võiks anda kasutajale võimaluse valida .NET ning [http://www.mono-project.com/ Mono] (vt. lisaks http://en.wikipedia.org/wiki/Mono_(software) ) platvormide vahel. Sel viisil oleks kliendil võimalik Microsoft&#039;i platvormi kõrval valida tõenäoliselt soodsam vaba tarkvara platvorm. Andmebaasi lõplik valik pole hetkel veel otsustatud.&lt;br /&gt;
&lt;br /&gt;
== Meeskond ja tööjaotus==&lt;br /&gt;
* Kristjan Stolin - projektijuht, suhtlus kliendiga, XML, wiki, teenuskihtide progemine, rollide halduse lehe progemine&lt;br /&gt;
* Ilmar Telga - XML, kliendiga suhtlus, wiki, teenuskihtide progemine, lõpprakenduste menüüd, login&lt;br /&gt;
* Rauno Rüga - XML, XSLT, andmebaasi loomine, wiki, mobiilirakendus, statistika&lt;br /&gt;
* Lauri Kermas - teenuskihtide ehitamine, wiki, rakenduse rollid ja kasutajad, login, kommenteerimise võimaluste progemine&lt;br /&gt;
&lt;br /&gt;
== XML Fail ==&lt;br /&gt;
=== XML ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Toidud&amp;gt;&lt;br /&gt;
  &amp;lt;Toit&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduNimetus&amp;gt;Viineri kaste&amp;lt;/ToiduNimetus&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduLiik&amp;gt;Praad&amp;lt;/ToiduLiik&amp;gt;&lt;br /&gt;
    &amp;lt;OlemasolevatYhikut&amp;gt;5&amp;lt;/OlemasolevatYhikut&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduKogus&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Poolportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;2011&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;1&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;9&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;15&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;07&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;23&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;        &lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.15&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;0&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;0&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;0&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;00&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;00&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;00&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Täisportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.80&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
    &amp;lt;/ToiduKogus&amp;gt;&lt;br /&gt;
    &amp;lt;Kommentaarid&amp;gt;&lt;br /&gt;
      &amp;lt;Kommentaar&amp;gt;&lt;br /&gt;
        &amp;lt;Saatja&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaNimi&amp;gt;Kristjan&amp;lt;/SaatjaNimi&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaRoll&amp;gt;Tudeng&amp;lt;/SaatjaRoll&amp;gt;&lt;br /&gt;
        &amp;lt;/Saatja&amp;gt;&lt;br /&gt;
        &amp;lt;Sisu&amp;gt;Minu lemmik toit ! Kui algebra tund ei hakkaks, sööks veel 5 portsjonit.&amp;lt;/Sisu&amp;gt;&lt;br /&gt;
      &amp;lt;/Kommentaar&amp;gt;&lt;br /&gt;
    &amp;lt;/Kommentaarid&amp;gt;&lt;br /&gt;
  &amp;lt;/Toit&amp;gt;&lt;br /&gt;
&amp;lt;/Toidud&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kommentaariks siis niipalju, et meie näide on ilma kohviku osata, selleks et näidet mitte liiga suureks ajada.&lt;br /&gt;
&lt;br /&gt;
Ka on meil moment puudu ID väljad, mis on igasugu andmebaasiga suhtlemiseks hädavajalikud, samas siin näidises palju juurde ei anna.&lt;br /&gt;
&lt;br /&gt;
Asja tegemisel avastasime, et põhiliseks arusaamatuse kohaks on toitude erinevad kogused (ehk siis pool portsjonit, suur / väike ja muud võrdlevad ühikud). Esimese võimalusena kaalusime teha lihtsalt täiesti eraldi toidud kõige kohta, stiilis &amp;quot;väike viineripraad&amp;quot; ja &amp;quot;suur viineripraad&amp;quot;. Kahjuks see variant ei kõlbaks eriti hästi, kuna need erinevad portsjonid kasutavad ikkagi samu materjale ja kui me peaks mingi süsteemiga näitama kui palju portsjoneid alles on. Sööklast näiteks pakuti et väike portsjon kasutab materjale kuskil 0.8 suure portsjoni ulatuses, ehk see suhtarv peaks olema kasutaja poolt (kohvikupidaja, restoraniomanik) ise sätitav. &lt;br /&gt;
&lt;br /&gt;
Tänu sellele sai meie süsteemi alustalaks siiski Toit, millel on oma Portsjonid siis erinevate hindade ja soodustustega. Moment pole meil ka Portsjoni XML osas toodud ära seost kogusega. (Kui palju ühe portsjoni lisamine/müümine peaks toidu üldkogust muutma).&lt;br /&gt;
&lt;br /&gt;
Kommenteerida saab meil moment toitu ennast, mitte eraldi portsjonit. Isegi kui kasutajad tahavad lisada kommentaare stiilis &amp;quot;See väike supp oli tõesti väga väike&amp;quot;, ei soovi nad seda ilmselt eraldi portsjoni alla panna. Tulevikus peaks kindlasti olema ka võimalus pigem kommenteerida üldisemalt (Kohvikut ennast, söögipaiku üldse), kui spetsiifilisemalt (Väikse prae kaste lisandi kohta).&lt;br /&gt;
&lt;br /&gt;
=== XML Schema ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Toidud&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Toit&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduNimetus&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;OlemasolevatYhikut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduKogus&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:choice maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;PortsjoniLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;Myygiaeg&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Aasta&amp;quot; type=&amp;quot;xs:unsignedShort&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Kuu&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Paev&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Tund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Minut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Sekund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;ToiduHind&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Eurohind&amp;quot; type=&amp;quot;xs:decimal&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Soodustus&amp;quot;&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseProtsent&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:choice&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Kommentaarid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Saatja&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaNimi&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaRoll&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Sisu&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
  &amp;lt;h2&amp;gt;Kohvikus müüdavad toidud&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr bgcolor=&amp;quot;#9acd32&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Veel alles&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Portsjon&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Müügiaeg&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustuse liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Kommentaar(id)&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;Toidud/Toit&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduNimetus&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduLiik&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;OlemasolevatYhikut&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;PortsjoniLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Paev&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Kuu&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Aasta&amp;quot; /&amp;gt; &amp;amp;nbsp;  &lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Tund&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Minut&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Sekund&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Eurohind&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseProtsent&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Kommentaarid/Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Sisu&amp;quot; /&amp;gt;&amp;amp;nbsp;(&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaRoll&amp;quot; /&amp;gt;&amp;amp;nbsp;&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaNimi&amp;quot; /&amp;gt;)&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XSLT poolt loodud tulemus on järgnev (lisasin veel kaks toitu XML faili, siin wiki lehel on ruumi kokkuhoiuks vaid 1 toit toitude listis):&lt;br /&gt;
[[File:Xslt.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arhitektuur ==&lt;br /&gt;
&lt;br /&gt;
Süsteem oli vahepeal plaanis ehitada kolmekihilise arhitektuuriga ([http://en.wikipedia.org/wiki/Multitier_architecture#Three-tier_architecture Three-tier architecture]). See peaks lihtsustama süsteemi haldamist ja laiendamist tulevikus. Aga kuna selle jaoks otsest vajadust polenud ja oleks vaid süsteemi keeruliseks ajanud, siis loobusime sellest.&lt;br /&gt;
&lt;br /&gt;
[[Image:three-tier.png|thumb|center|alt=Arhitektuuri skeem.|Arhitektuuri skeem.]]&lt;br /&gt;
&lt;br /&gt;
== Veebiteenus ==&lt;br /&gt;
===Andmemudel===&lt;br /&gt;
[[Image:KohvikuAndmemudel.jpg|thumb|right|alt=Kohviku projekti andmemudel|Andmemudel]]&lt;br /&gt;
Enne veebiteenuse meetodite kirjeldamist koostasime andmemudeli. Loodud andmemudeli põhjal lõime andmebaasi vajalike tabelite ja atribuutidega. Andmemudeli peal on rohelisega tähistatud tabelid, mis on oseselt seotud kohviku valdajaga ja mida WPF rakenduse jaoks kindlasti vaja on. Ülejäänud helesinised tabelid on vajalikud kasutajate võimaluste jaoks. Lisaks on andmemudelil kaks tabelit, mis pole teisega seotud, need on süsteemi administraatori jaoks, et oleks ülevaade, mis rakendused teenust enim kasutavad ning mis meetodeid kõige rohkem välja kutsutakse.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Teenuskihis olevad meetodid===&lt;br /&gt;
&lt;br /&gt;
====Kasutajatega seotud meetodid:====&lt;br /&gt;
*SaidiKasutajaLiik() - Tagastab antud kasutaja ID järgi kasutaja liigi nimetuse&lt;br /&gt;
*KustutaSaidiKasutaja() - Kustutab antud kasutaja ID järgi kasutaja tabelis Kasutaja&lt;br /&gt;
*AnnaKoikSaidiKasutajad() - Tagastab kõik kirjed tabelist Kasutaja&lt;br /&gt;
*AnnaKoikKohvikuKasutajad() - Tagastab antud kohviku ID järgi kõik kohviku kasutajad massiivina&lt;br /&gt;
*MuudaSaidiKasutajaLiik() - Muudab antud kasutaja ID järgi kasutaja liigi tabelis Kasutaja&lt;br /&gt;
*KoikLubatudSaidiKasutajaTyybid() - Tagastab andmebaasi kõik võimalikud kohviku kasutaja rollid (id-d ja nimed), muud andmed jäävad tühjaks&lt;br /&gt;
*KoikLubatudKohvikuRollid() - Tagastab andmebaasi kõik võimalikud site kasutaja rollid (id-d ja nimed), kohviku_id jääb tühjaks&lt;br /&gt;
*KasutajaKohvikuRollid() - Tagastab antud kasutaja ID järgi kõik kasutaja rollid kõikides kohvikutes&lt;br /&gt;
*MuudaKohvikuKasutajaRoll() - Muudab antud kasutaja ID ja kohviku ID järgi kasutaja rolli kohvikus, kui rolli pole, siis tekitatakse uus&lt;br /&gt;
*SaidiKasutajaLiikID() - Tagastab antud kasutaja ID järgi kasutaja liigi ID&lt;br /&gt;
*KohvikuKasutajaLiikID() - Tagastab antud kasutaja ID ja kohviku ID järgi kohviku kasutaja rolli ID&lt;br /&gt;
*AnnaKasutajaMeiliAadress() - Tagastab antud kasutaja nime alusel kasutaja meiliaadressi&lt;br /&gt;
*AnnaKasutajaIdJargi() - Tagastab kasutajanime kasutaja ID järgi&lt;br /&gt;
*AuthendiKasutaja() - Autendib kasutaja, õnnestumisel tagastab kasutaja ID, ebaõnnestumisel null &lt;br /&gt;
*RegistreeriKasutaja() - Registreerib kasutaja andmebaasi ja tagastab true kui kasutaja loomine õnnestus&lt;br /&gt;
&lt;br /&gt;
====Menüüga seotud meetodid====&lt;br /&gt;
*LisaArtikkelMenuuse() - Seob menüüartikli ja menüü&lt;br /&gt;
*LisaKohvikuleMenuu() - Seob menüü ja kohviku&lt;br /&gt;
*TagastabMenuuMuutujad() - Tagastab menüü järgi kas inimesel oleks õigust seda muuta&lt;br /&gt;
*KustutaMenuuJaKohvikuSeos() - Kustutab menüü ja kohviku seose&lt;br /&gt;
*LisaUusMenuu() - Teeb uue menüü, seob selle kohvikuga, kui kohviku ID on parameetrina kaasa antud&lt;br /&gt;
*MenuuKohvikuIdJargi() - Tagastab kohviku ID järgi kohviku tänaste või mitte tänaste menüüde ID-de massiivi&lt;br /&gt;
*LisaMenuuArtikkelMenuuse() - Sisestab antud müügiartikli menüüsse, mille ID on menyy_id&lt;br /&gt;
*KustutaMenuuArtikkel() - Kustutab müügiartikli ID ja menüü ID järgi müügiartikli menüüst&lt;br /&gt;
*TagastaMenuuArtiklid() - Tagastab menüü ID järgi menüüs olevad müügiartiklid&lt;br /&gt;
*VahetaMenuuArtiklit() - Muudab antud müügiartikli tabelis Myygiartikkel&lt;br /&gt;
*MenuuNimetus() - Tagastab menüü ID järgi menüü nimetuse&lt;br /&gt;
*AnnaMuugiartiklidMidaMenuusPole() - Tagastab müügiartiklid, mis pole veel menüüs, kus on juba müügiartiklid, mille IDd on antud massiivis&lt;br /&gt;
*AnnaMenuuNimed() - Tagastab kõigi menüüde nimetused tabelis Menyy&lt;br /&gt;
&lt;br /&gt;
====Kohvikutest üldiselt====&lt;br /&gt;
*KohvikuteNimed() - Tagastab kõigi kohvikute nimed massiivina&lt;br /&gt;
*KohvikuNimiIdJargi() - Tagastab antud kohviku ID järgi kohviku nime&lt;br /&gt;
*AnnaKoikOmanikuKohvikud() - Tagastab antud omaniku ID järgi kõik omaniku kohvikute ID-d massiivina&lt;br /&gt;
*Kohvikud() - Tagastab kõik kohvikute kirjed tabelist Kohvik&lt;br /&gt;
*KohvikuteArv() - Tagastab kõigi kohvikute arvu&lt;br /&gt;
*AnnaKaubad() - Tagastab kõik kaubad tabelist Kaup&lt;br /&gt;
*LisaKaup() - Lisab kauba kaupade nimekirja&lt;br /&gt;
*LisaKohvik() - Uue kohviku lisamine&lt;br /&gt;
&lt;br /&gt;
====Kommentaaridega seotud meetodid:====&lt;br /&gt;
*KohvikuKommentaarideArv() - Kohviku kommentaaride arv&lt;br /&gt;
*AnnaKohvikuKommentaarid() - Tagastab kommentaarid lehtede kaupa&lt;br /&gt;
*AnnaKohvikuKommentaar() - Tagastab üksiku kommentaari&lt;br /&gt;
*AnnaKohvikuKommentaarideHinded() - Tagastab kommentaaride jaoks võimalikud hinded koos kirjeldustega&lt;br /&gt;
*LisaKohvikuKommentaar() - Lisab kohviku kommentaari&lt;br /&gt;
*MuudaKohvikuKommentaar() - Muudab kohviku kommentaari&lt;br /&gt;
*MuudaKohvikuKommentaariOlek() - Muudab kohviku kommentaari oleku&lt;br /&gt;
*MuudaKohvikuKommentaariPeidetus() - Muudab kohviku kommentaari peidetust&lt;br /&gt;
&lt;br /&gt;
====Statistikaga seotud meetodid:====&lt;br /&gt;
*StatistikaRakendusteKohtaTana() - Tagastab rakenduse nimed ja nende vastu tehtud päringud tänasel päeval&lt;br /&gt;
*StatistikaRakendusteKohtaViimaneNadal() - Tagastab rakenduse nimed ja nende vastu tehtud päringud viimase nädala jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaSellelKuul() - Tagastab rakenduse nimed ja nende vastu tehtud päringud selle kuu jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaKokku() - Tagastab rakenduse nimed ja nende vastu tehtud päringud kogu aja vältel&lt;br /&gt;
*StatistikaMeetoditeKohtaTana() - Meetod leiab tänase päeva jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaViimaneNadal() - Meetod leiab viimase nädala jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaSellelKuul() - Meetod leiab kuu jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaKokku() - Meetod leiab kogu aja vältel kasutatud meetodid ja paringute arvu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebiteenuse projekti (WCF + andmebaas) saab siit: http://enos.itcollege.ee/~rruga/VRII/Teenusekiht.zip&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : CMS ==&lt;br /&gt;
&lt;br /&gt;
Meie loodud veebirakenduses on realiseeritud järgnevad CMS seotud funktsionaalsused :&lt;br /&gt;
*Kõikide kohvikute lehed on eraldi aadressiga, mis võimaldab eri kohvikud bookmarkida ja facebooki like anda. See on saavutatud tänu ?kohvik=1 aadressiribal, kus parameeteri kohvik number identifitseerib kohviku.&lt;br /&gt;
*Adminni õigustega kasutajal on võimalik lisada uus kohvikuid andembaasi&lt;br /&gt;
*Kohviku omanik saab lisada menüüd, muuta seda ja kustutada&lt;br /&gt;
*Adminnid saavad kasutajaid hallata, määrates nendele rolle, mis omakorda tagab teatud õigused&lt;br /&gt;
*Kohviku omanikud saavad  oma kohviku kasutajaid hallata, määrates neile näiteks müüja või kliendi rolli.&lt;br /&gt;
*Kogu menüü põhineb sitemapil, mille alus on kirjeldatud eraldi sitemap failis, lisaks sellel lisatakse sinna dünaamiselt kohvikud juurde ( mis andmebaasis olemas on )&lt;br /&gt;
*Kohviku omanik saab kohviku lehte isikupärastada tänu richteksti osale, näiteks lisada html osi.&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Veebirakendus ==&lt;br /&gt;
&lt;br /&gt;
Veebiteenust kasutavaks veebirakenduseks on ASP.NET rakendus. &lt;br /&gt;
&lt;br /&gt;
* Esilehel saab otsida kohvikuid või minna kohe huvipakkuva kohviku menüü lehele.&lt;br /&gt;
* Kohviku menüü lehel on näha tänased ja teised menüüd, kohviku lahtioleku aeg. Kui panna veebirakendus internetti, siis on võimalus Facebook-i kaudu kohviku fänniks hakata. Kommenteerimise ja soodustuste osa on veel pooleli.&lt;br /&gt;
* Sisse loginud kohviku omanik saab ka kohviku menüüsid muuta, lisada, kustutada. &lt;br /&gt;
* Kasutajate lehel saab sisse loginud kohviku omanik hallata kohviku kasutajaid.&lt;br /&gt;
* Statistika lehel saab vaadata statistikat teenust kasutanud rakenduste ja kasutatud meetodite kohta. Näeb nii tänase päeva, viimase nädala, selle kuu ja aasta statistikat&lt;br /&gt;
* Kohviku lisamise lehel saab aga admini õigustege kasutaja lisada uue kohviku.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:KohvikuMenuEdit.JPG|800px|Kohviku menüü muutmise leht. ITK kohviku menüüde muutmiseks tuleb logida sisse kasutajaga Ilmar parooliga &amp;quot;ilmar&amp;quot;.]]&lt;br /&gt;
&lt;br /&gt;
Kohviku menüü muutmise leht. ITK kohviku menüüde muutmiseks tuleb logida sisse kasutajaga Ilmar parooliga &amp;quot;ilmar&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Kohviku admin osa nägemiseks võib sisse logida kasutajaga rauno, parool on ka rauno. Sellega saab ligi statistikale ja uue kohviku loomisele.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebirakenduse koos uuendatud teenuskihiga saab siit: http://enos.itcollege.ee/~rruga/VRII/KohvikuProjekt.rar&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Kommentaaride komponent ==&lt;br /&gt;
&lt;br /&gt;
Kommentaaride sisestamiseks ja haldamiseks on loodud iseseisev ning enam jaolt taas kasutatav kommentaaride komponent. Komponent on hetkel realiseeritud ASP&#039;i User Control&#039;ina ja mitte Custom Control&#039;ina, mis vähendab veidi selle üleviidavust teistesse projektidesse. Siiski on selle muutmine ASP&#039;i Custom Control&#039;iks mõningate muudatustega võimalik.&lt;br /&gt;
&lt;br /&gt;
[[Image:comskeem.png|thumb|center|alt=Kommentaari komponendi skeem.|Kommentaari komponendi skeem.]]&lt;br /&gt;
&lt;br /&gt;
Kommentaaride komponent koosneb kahest osast, mis lisatakse lehele, millel vajatakse kommenteerimise funktsionaalsust:&lt;br /&gt;
sisendkontroll - see komponent on vajalik uute kommentaaride sisestamiseks;&lt;br /&gt;
väljundkontroll - antud komponent esitab olemasolevad kommentaarid hulga kaupa.&lt;br /&gt;
&lt;br /&gt;
Mõlemad kommentaari komponendi osad on kasutatavad ka iseseisvalt, kui see peaks vajalik olema. Kommentaari andmeid esitavad need komponendid läbi iseseisvate kommentaarikontrollide, mida võib ühel kontrollil olla ka mitu. Kommentaarikontrollid ei ole võimelised iseseisvalt kommentaaride andmeid hankima ning seepärast tuleb need täita väljapoolt, kas sisend- või väljundkontrollide poolt. Samuti tuleb uue kommentaari loomine läbi viia kommentaarikontrolli väliselt - seda teostabki sisendikontroll. Samas kogu ülejäänud kommentaari haldus, nagu olemasolevate kommentaaride muutmine ning uute olekute seadmine toimub üksnes läbi iseseisvate kommentaarikontrollide, mis sisaldavad täies mahus vastavat funktsionaalsust.&lt;br /&gt;
&lt;br /&gt;
Kommentaaride komponendi kõik kolm osa (sisendkontroll, väljundkontroll ja kommentaarikontroll) suhtlevad teenusekihiga läbi vastava ligipääsuobjekti. Ligipääsuobjekt tegeleb ühenduse ning sellega seonduvate võimalike vigade haldamisega. Kokkuvõtlikult loob see vajaduse korral uue ühenduse, sooritab päringud ning lõpuks sulgeb ühenduse, kui vastav korraldus antakse.&lt;br /&gt;
&lt;br /&gt;
Teenuses on vastavad protseduurid, mida teenusega suhtlemisel välja kutsutakse ning mis teostavad reaalseid muudatusi andmebaasis, seda muidugi vastavalt reeglitele.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus II : Mobiilirakendus ==&lt;br /&gt;
&lt;br /&gt;
Teine rakendus, mis veebiteenuse peale ehitatud sai, oli Windows Phone 7 rakendus. Lühidalt kirjeldades saab peale rakenduse käivitamist näha listi kõikidest olemasolevatest kohvikutest. Kui vajutad mingi kohviku nime peale, avaneb täpsem kirjeldus kohviku kohta, kust näeb lisaks kohviku nimele ka lühikest kirjeldust, tänast lahtiolekuaega ja kohviku aadressit. Samuti on kohviku kirjelduse lehel viide kohviku tänasele menüüle ja kommenteerimisele. Vajutades vaata menüüd nuppu avaneb vaade täna müügis olevatest müügiartiklitest ja nende hinnast, vajutades aga kommenteeri kohvikut nupule avaneb võimalus lisada kohviku kohta kommentaar.&lt;br /&gt;
&lt;br /&gt;
Kokkuvõttev pilt realiseeritud võimalustest:&lt;br /&gt;
&lt;br /&gt;
[[Image:WP7 rakendus.jpg|alt=WP7 rakendus.|WP7 rakenduse võimalused.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mobiilirakenduse saab alla tõmmata siit: http://enos.itcollege.ee/~rruga/VRII/Mobiilirakendus.rar&lt;br /&gt;
&lt;br /&gt;
NB! Et mobiilirakendust proovida ja mõistliku tulemust saada peab teil olema kõige uuem versioon meie projekti teenuskihist ning teenuskiht peab töötama.&lt;br /&gt;
&lt;br /&gt;
== Meeskonna punktide jaotus ==&lt;br /&gt;
Kõigi grupiliikmetega sai arutatud punktide jagamise üle ja ühine arvamus oli, et punktid jaotatakse järgnevalt:&lt;br /&gt;
*Rauno Rüga - 29 punkti&lt;br /&gt;
*Ilmar Telga - 20 punkti&lt;br /&gt;
*Kristjan Stolin - 17 punkti&lt;br /&gt;
*Lauri Kermas - 14 punkti&lt;br /&gt;
&lt;br /&gt;
== Meeskonna kokkuvõttev aruanne ==&lt;br /&gt;
&lt;br /&gt;
== Logi ==&lt;br /&gt;
&lt;br /&gt;
=== 8. Mai ===&lt;br /&gt;
Veebirakendus esitluseks valmis. Täiendatud vikilehte.&lt;br /&gt;
&lt;br /&gt;
=== 7. Mai ===&lt;br /&gt;
Mobiilirakendus sai valmis ja selle kohta uuendatud vikilehte.&lt;br /&gt;
&lt;br /&gt;
=== 17. aprill ===&lt;br /&gt;
Wikilehe täiendamine andmemudeli ja veebiteenuse meetodite kirjeldusega.&lt;br /&gt;
&lt;br /&gt;
=== 9. aprill ===&lt;br /&gt;
Tegime rollide halduse, münüüde muutmise vormi. Meili saatmine registreerimisel. Toimus andmebaasi andmemudeli väike muutus. &lt;br /&gt;
&lt;br /&gt;
=== 30. märts ===&lt;br /&gt;
Tehtud on kohviku menüü ja kohviku kommenteerimise leht.&lt;br /&gt;
&lt;br /&gt;
=== 26. märts ===&lt;br /&gt;
Tehtud on esimesed veebiteenuse meetodid ja veebirakendusele kasutajate registreerimine.&lt;br /&gt;
&lt;br /&gt;
=== 10. märts ===&lt;br /&gt;
Väikese häki abil õnnestus kohviku kassa arvutis saada tööle üks Forms-i proovirakendus.&lt;br /&gt;
&lt;br /&gt;
=== 8. märts ===&lt;br /&gt;
Kuna kassa-aparaadis on operatsioonisüsteemiks Windows XP ja raud on 1.99 GHz, 256 RAM siis peaks saama&lt;br /&gt;
prototüübiks teha sinna peale rakenduse, mille ülesandeks menüüga tegelemine. &lt;br /&gt;
&lt;br /&gt;
=== 7. märts ===&lt;br /&gt;
Linnar Viik andis meile järgmist nõu: tuleb eristada kahte asja - see, mis peab valmis saama (&#039;&#039;must&#039;&#039;) ja see, mis oleks tore (&#039;&#039;nice to have&#039;&#039;). Valmis peab saama menüüga ekraan seinal (esialgu kasutajale prototüübi näitamiseks kasvõi näiteks PowerPoint-i abil tehtud). Alles siis kui on kasutajalt positiivne tagasiside saadud, võib edasi minna reaalse tarkvaralahenduse loomisega. Kui ka see on valmis ja kasutaja sellega rahul võib juurde mõelda &#039;&#039;nice to have&#039;&#039; asju (näiteks eelinfo järgmise päeva menüü kohta, üliõpilasesinduse sõnumite riba ja muid asju).&lt;br /&gt;
&lt;br /&gt;
Saime teada, et kui tahame, et meie loodav süsteem suhtleks IT Kohviku kassasüsteemiga, siis tuleb selle süsteemi tootjatega ühendust võtta ja nendega konsulteerida.&lt;br /&gt;
&lt;br /&gt;
=== 19.Veebruar ===&lt;br /&gt;
*Valmis XSLT fail.&lt;br /&gt;
&lt;br /&gt;
=== 9.Veebruar ===&lt;br /&gt;
* Esmane versioon XML ja XML Schemast olemas&lt;br /&gt;
* Tekkis küsimus kas XSLT faili tuleb käsitsi tekitada või automaatselt.&lt;br /&gt;
* Küsimus oli ka kas lahendasime portsjoni asja mõistlikult või oleks mõni teine lähenemine parem olnud.&lt;br /&gt;
* Küsimus, kas XML fail on liiga üle pingutatud või sobiva keerukusega&lt;br /&gt;
&lt;br /&gt;
=== 7. Veebruar ===&lt;br /&gt;
* Võtsime õppejõu poolt pakutud ideest kohe kinni, sest me eelistame teha praktilist asja, mida saab kasutada ja mille kasutamist saame ka iga päev jälgida. &lt;br /&gt;
* Esimese asjana otsustasime välja uurida mida meie &amp;quot;kliendid&amp;quot; (süsteemi tellijad) meilt ootavad. (Soovid idee punkti all)&lt;br /&gt;
* Valminud on lihtne teenusest ja klientidest koosnev süsteemi testmudel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Kasulikud lingid ==&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCF_auto_client_proxies.aspx&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/ms178472.aspx&lt;br /&gt;
&lt;br /&gt;
http://support.microsoft.com/kb/305141&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/aa702565.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/scottgu/archive/2007/04/06/tip-trick-enabling-ssl-on-iis7-using-self-signed-certificates.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/scottgu/archive/2010/06/28/introducing-iis-express.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/scottgu/archive/2011/01/03/vs-2010-sp1-beta-and-iis-developer-express.aspx&lt;br /&gt;
&lt;br /&gt;
http://blogs.msdn.com/b/webdevtools/archive/2011/03/14/enabling-iis-express-support-in-vs-2010-sp1.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/gunnarpeipman/archive/2010/12/11/visual-studio-2010-sp1-beta-supports-iis-express.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.dotnetcurry.com/ShowArticle.aspx?ID=487&lt;br /&gt;
&lt;br /&gt;
http://davidkiff.co.uk/post/2009/09/22/Setting-up-SSL-for-WCF-in-Development.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.request-response.com/blog/CommentView,guid,e9bb929b-d0b4-4626-b302-1d2715fc344a.aspx&lt;br /&gt;
&lt;br /&gt;
=== Kokkuvõtvad lingid ===&lt;br /&gt;
&lt;br /&gt;
* WCF&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/library/ee958158.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCF_auto_client_proxies.aspx&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/aa702565.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCFInstance.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCFConcurrency.aspx&lt;br /&gt;
&lt;br /&gt;
http://codeidol.com/csharp/wcf/Concurrency-Management/Service-Concurrency-Mode/&lt;br /&gt;
&lt;br /&gt;
* ASP&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/ms178472.aspx&lt;br /&gt;
&lt;br /&gt;
http://support.microsoft.com/kb/305141&lt;br /&gt;
&lt;br /&gt;
http://www.west-wind.com/weblog/posts/2008/Aug/14/ASPNET-gets-no-Respect&lt;br /&gt;
&lt;br /&gt;
http://lostechies.com/jimmybogard/2008/05/19/asp-net-officially-unmaintainable/&lt;br /&gt;
&lt;br /&gt;
http://www.lullabot.com/blog/why-not-asp-net&lt;br /&gt;
&lt;br /&gt;
http://reverseblade.blogspot.com/2008/06/web-development-aspnet-webforms-versus.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Võrgurakendused II: hajussüsteemide ehitamine]]&lt;br /&gt;
[[Category: Veebirakenduste loomine ASP.NET abil]]&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=32295</id>
		<title>Meeskond &quot;FoodWars&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=32295"/>
		<updated>2011-05-18T18:28:00Z</updated>

		<summary type="html">&lt;p&gt;Rruga: /* Klientrakendus I : Veebirakendus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Idee ==&lt;br /&gt;
Meie tiimil on plaanis teha internetipõhine söökla menüü süsteem (aluseks IT Kolledži kohvik, aga suunitlus selline, et kõik kohvikud/sööklad saaksid teha endale kasutajakonto ja hakata rakendust kasutama), kust saaks jälgida menüüd, mis sööke saab süüa, mis veel järgi on, kasutajatel on ka võimalus sööke hinnata (stiilis &amp;quot;meeldib&amp;quot;, &amp;quot;ei meeldi&amp;quot; nagu Facebook-is).&lt;br /&gt;
&lt;br /&gt;
Kohvikupidaja Teele soovid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* elektroonilisest menüüst asju kustutada, isegi siis kui asja peaks olema teoreetiliselt alles, aga tegelikult on asi otsas.&lt;br /&gt;
* elektrikatkestuse korral jääb menüü püsima. Ta peab teadma hindu mistahes olukorras.&lt;br /&gt;
* menüül näidatakse automaatselt ka ISIC kaardi omanike soodushinnad&lt;br /&gt;
* süsteem toetab ka poole portsjoni müümist.&lt;br /&gt;
&lt;br /&gt;
Linnar Viigi soovid/visioonid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* kõik oleks ka internetist kättesaadav, peale LCD ekraani, mis kajastab menüüd sööklas.&lt;br /&gt;
* aluseks facebook, kus siis söögid oleks nagu facebook-i alateemad.&lt;br /&gt;
* saab sööke hinnata, kommenteerida (täna oli väga maitsev praad).&lt;br /&gt;
* kasutajad saaks vaadata, mis menüüs on (ka järgmisel nädalal) ja mitu portsu veel alles on.&lt;br /&gt;
* kasutajad saaksid välja pakkuda menüüsid.&lt;br /&gt;
* erinevate söögikohtade kasutajad saaksid omavahel muljeid jagada.&lt;br /&gt;
* kuu aja aktiivsemad saavad prii lõuna.&lt;br /&gt;
* mingil ajal võib olla &amp;quot;happy hour&amp;quot; (enne sulgemist saab odavamalt).&lt;br /&gt;
* piiranguks on see, et toitu broneerida ei saa &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vaba tarkvara kasutamise võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Antud projekti puhul oleks võimalik kasutada [http://www.postgresql.org/ PostgreSQL] andmebaasi (vt. lisaks http://en.wikipedia.org/wiki/PostgreSQL ) Microsoft SQL Server&#039;i asemel. See võiks anda kasutajale võimaluse valida .NET ning [http://www.mono-project.com/ Mono] (vt. lisaks http://en.wikipedia.org/wiki/Mono_(software) ) platvormide vahel. Sel viisil oleks kliendil võimalik Microsoft&#039;i platvormi kõrval valida tõenäoliselt soodsam vaba tarkvara platvorm. Andmebaasi lõplik valik pole hetkel veel otsustatud.&lt;br /&gt;
&lt;br /&gt;
== Meeskond ja tööjaotus==&lt;br /&gt;
* Kristjan Stolin - projektijuht, suhtlus kliendiga, XML, wiki, teenuskihtide progemine, rollide halduse lehe progemine&lt;br /&gt;
* Ilmar Telga - XML, kliendiga suhtlus, wiki, teenuskihtide progemine, lõpprakenduste menüüd, login&lt;br /&gt;
* Rauno Rüga - XML, XSLT, andmebaasi loomine, wiki, mobiilirakendus, statistika&lt;br /&gt;
* Lauri Kermas - teenuskihtide ehitamine, wiki, rakenduse rollid ja kasutajad, login, kommenteerimise võimaluste progemine&lt;br /&gt;
&lt;br /&gt;
== XML Fail ==&lt;br /&gt;
=== XML ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Toidud&amp;gt;&lt;br /&gt;
  &amp;lt;Toit&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduNimetus&amp;gt;Viineri kaste&amp;lt;/ToiduNimetus&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduLiik&amp;gt;Praad&amp;lt;/ToiduLiik&amp;gt;&lt;br /&gt;
    &amp;lt;OlemasolevatYhikut&amp;gt;5&amp;lt;/OlemasolevatYhikut&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduKogus&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Poolportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;2011&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;1&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;9&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;15&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;07&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;23&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;        &lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.15&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;0&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;0&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;0&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;00&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;00&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;00&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Täisportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.80&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
    &amp;lt;/ToiduKogus&amp;gt;&lt;br /&gt;
    &amp;lt;Kommentaarid&amp;gt;&lt;br /&gt;
      &amp;lt;Kommentaar&amp;gt;&lt;br /&gt;
        &amp;lt;Saatja&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaNimi&amp;gt;Kristjan&amp;lt;/SaatjaNimi&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaRoll&amp;gt;Tudeng&amp;lt;/SaatjaRoll&amp;gt;&lt;br /&gt;
        &amp;lt;/Saatja&amp;gt;&lt;br /&gt;
        &amp;lt;Sisu&amp;gt;Minu lemmik toit ! Kui algebra tund ei hakkaks, sööks veel 5 portsjonit.&amp;lt;/Sisu&amp;gt;&lt;br /&gt;
      &amp;lt;/Kommentaar&amp;gt;&lt;br /&gt;
    &amp;lt;/Kommentaarid&amp;gt;&lt;br /&gt;
  &amp;lt;/Toit&amp;gt;&lt;br /&gt;
&amp;lt;/Toidud&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kommentaariks siis niipalju, et meie näide on ilma kohviku osata, selleks et näidet mitte liiga suureks ajada.&lt;br /&gt;
&lt;br /&gt;
Ka on meil moment puudu ID väljad, mis on igasugu andmebaasiga suhtlemiseks hädavajalikud, samas siin näidises palju juurde ei anna.&lt;br /&gt;
&lt;br /&gt;
Asja tegemisel avastasime, et põhiliseks arusaamatuse kohaks on toitude erinevad kogused (ehk siis pool portsjonit, suur / väike ja muud võrdlevad ühikud). Esimese võimalusena kaalusime teha lihtsalt täiesti eraldi toidud kõige kohta, stiilis &amp;quot;väike viineripraad&amp;quot; ja &amp;quot;suur viineripraad&amp;quot;. Kahjuks see variant ei kõlbaks eriti hästi, kuna need erinevad portsjonid kasutavad ikkagi samu materjale ja kui me peaks mingi süsteemiga näitama kui palju portsjoneid alles on. Sööklast näiteks pakuti et väike portsjon kasutab materjale kuskil 0.8 suure portsjoni ulatuses, ehk see suhtarv peaks olema kasutaja poolt (kohvikupidaja, restoraniomanik) ise sätitav. &lt;br /&gt;
&lt;br /&gt;
Tänu sellele sai meie süsteemi alustalaks siiski Toit, millel on oma Portsjonid siis erinevate hindade ja soodustustega. Moment pole meil ka Portsjoni XML osas toodud ära seost kogusega. (Kui palju ühe portsjoni lisamine/müümine peaks toidu üldkogust muutma).&lt;br /&gt;
&lt;br /&gt;
Kommenteerida saab meil moment toitu ennast, mitte eraldi portsjonit. Isegi kui kasutajad tahavad lisada kommentaare stiilis &amp;quot;See väike supp oli tõesti väga väike&amp;quot;, ei soovi nad seda ilmselt eraldi portsjoni alla panna. Tulevikus peaks kindlasti olema ka võimalus pigem kommenteerida üldisemalt (Kohvikut ennast, söögipaiku üldse), kui spetsiifilisemalt (Väikse prae kaste lisandi kohta).&lt;br /&gt;
&lt;br /&gt;
=== XML Schema ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Toidud&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Toit&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduNimetus&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;OlemasolevatYhikut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduKogus&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:choice maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;PortsjoniLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;Myygiaeg&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Aasta&amp;quot; type=&amp;quot;xs:unsignedShort&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Kuu&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Paev&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Tund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Minut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Sekund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;ToiduHind&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Eurohind&amp;quot; type=&amp;quot;xs:decimal&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Soodustus&amp;quot;&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseProtsent&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:choice&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Kommentaarid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Saatja&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaNimi&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaRoll&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Sisu&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
  &amp;lt;h2&amp;gt;Kohvikus müüdavad toidud&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr bgcolor=&amp;quot;#9acd32&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Veel alles&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Portsjon&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Müügiaeg&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustuse liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Kommentaar(id)&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;Toidud/Toit&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduNimetus&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduLiik&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;OlemasolevatYhikut&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;PortsjoniLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Paev&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Kuu&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Aasta&amp;quot; /&amp;gt; &amp;amp;nbsp;  &lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Tund&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Minut&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Sekund&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Eurohind&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseProtsent&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Kommentaarid/Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Sisu&amp;quot; /&amp;gt;&amp;amp;nbsp;(&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaRoll&amp;quot; /&amp;gt;&amp;amp;nbsp;&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaNimi&amp;quot; /&amp;gt;)&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XSLT poolt loodud tulemus on järgnev (lisasin veel kaks toitu XML faili, siin wiki lehel on ruumi kokkuhoiuks vaid 1 toit toitude listis):&lt;br /&gt;
[[File:Xslt.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arhitektuur ==&lt;br /&gt;
&lt;br /&gt;
Süsteem oli vahepeal plaanis ehitada kolmekihilise arhitektuuriga ([http://en.wikipedia.org/wiki/Multitier_architecture#Three-tier_architecture Three-tier architecture]). See peaks lihtsustama süsteemi haldamist ja laiendamist tulevikus. Aga kuna selle jaoks otsest vajadust polenud ja oleks vaid süsteemi keeruliseks ajanud, siis loobusime sellest.&lt;br /&gt;
&lt;br /&gt;
[[Image:three-tier.png|thumb|center|alt=Arhitektuuri skeem.|Arhitektuuri skeem.]]&lt;br /&gt;
&lt;br /&gt;
== Veebiteenus ==&lt;br /&gt;
===Andmemudel===&lt;br /&gt;
[[Image:KohvikuAndmemudel.jpg|thumb|right|alt=Kohviku projekti andmemudel|Andmemudel]]&lt;br /&gt;
Enne veebiteenuse meetodite kirjeldamist koostasime andmemudeli. Loodud andmemudeli põhjal lõime andmebaasi vajalike tabelite ja atribuutidega. Andmemudeli peal on rohelisega tähistatud tabelid, mis on oseselt seotud kohviku valdajaga ja mida WPF rakenduse jaoks kindlasti vaja on. Ülejäänud helesinised tabelid on vajalikud kasutajate võimaluste jaoks. Lisaks on andmemudelil kaks tabelit, mis pole teisega seotud, need on süsteemi administraatori jaoks, et oleks ülevaade, mis rakendused teenust enim kasutavad ning mis meetodeid kõige rohkem välja kutsutakse.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Teenuskihis olevad meetodid===&lt;br /&gt;
&lt;br /&gt;
====Kasutajatega seotud meetodid:====&lt;br /&gt;
*SaidiKasutajaLiik() - Tagastab antud kasutaja ID järgi kasutaja liigi nimetuse&lt;br /&gt;
*KustutaSaidiKasutaja() - Kustutab antud kasutaja ID järgi kasutaja tabelis Kasutaja&lt;br /&gt;
*AnnaKoikSaidiKasutajad() - Tagastab kõik kirjed tabelist Kasutaja&lt;br /&gt;
*AnnaKoikKohvikuKasutajad() - Tagastab antud kohviku ID järgi kõik kohviku kasutajad massiivina&lt;br /&gt;
*MuudaSaidiKasutajaLiik() - Muudab antud kasutaja ID järgi kasutaja liigi tabelis Kasutaja&lt;br /&gt;
*KoikLubatudSaidiKasutajaTyybid() - Tagastab andmebaasi kõik võimalikud kohviku kasutaja rollid (id-d ja nimed), muud andmed jäävad tühjaks&lt;br /&gt;
*KoikLubatudKohvikuRollid() - Tagastab andmebaasi kõik võimalikud site kasutaja rollid (id-d ja nimed), kohviku_id jääb tühjaks&lt;br /&gt;
*KasutajaKohvikuRollid() - Tagastab antud kasutaja ID järgi kõik kasutaja rollid kõikides kohvikutes&lt;br /&gt;
*MuudaKohvikuKasutajaRoll() - Muudab antud kasutaja ID ja kohviku ID järgi kasutaja rolli kohvikus, kui rolli pole, siis tekitatakse uus&lt;br /&gt;
*SaidiKasutajaLiikID() - Tagastab antud kasutaja ID järgi kasutaja liigi ID&lt;br /&gt;
*KohvikuKasutajaLiikID() - Tagastab antud kasutaja ID ja kohviku ID järgi kohviku kasutaja rolli ID&lt;br /&gt;
*AnnaKasutajaMeiliAadress() - Tagastab antud kasutaja nime alusel kasutaja meiliaadressi&lt;br /&gt;
*AnnaKasutajaIdJargi() - Tagastab kasutajanime kasutaja ID järgi&lt;br /&gt;
*AuthendiKasutaja() - Autendib kasutaja, õnnestumisel tagastab kasutaja ID, ebaõnnestumisel null &lt;br /&gt;
*RegistreeriKasutaja() - Registreerib kasutaja andmebaasi ja tagastab true kui kasutaja loomine õnnestus&lt;br /&gt;
&lt;br /&gt;
====Menüüga seotud meetodid====&lt;br /&gt;
*LisaArtikkelMenuuse() - Seob menüüartikli ja menüü&lt;br /&gt;
*LisaKohvikuleMenuu() - Seob menüü ja kohviku&lt;br /&gt;
*TagastabMenuuMuutujad() - Tagastab menüü järgi kas inimesel oleks õigust seda muuta&lt;br /&gt;
*KustutaMenuuJaKohvikuSeos() - Kustutab menüü ja kohviku seose&lt;br /&gt;
*LisaUusMenuu() - Teeb uue menüü, seob selle kohvikuga, kui kohviku ID on parameetrina kaasa antud&lt;br /&gt;
*MenuuKohvikuIdJargi() - Tagastab kohviku ID järgi kohviku tänaste või mitte tänaste menüüde ID-de massiivi&lt;br /&gt;
*LisaMenuuArtikkelMenuuse() - Sisestab antud müügiartikli menüüsse, mille ID on menyy_id&lt;br /&gt;
*KustutaMenuuArtikkel() - Kustutab müügiartikli ID ja menüü ID järgi müügiartikli menüüst&lt;br /&gt;
*TagastaMenuuArtiklid() - Tagastab menüü ID järgi menüüs olevad müügiartiklid&lt;br /&gt;
*VahetaMenuuArtiklit() - Muudab antud müügiartikli tabelis Myygiartikkel&lt;br /&gt;
*MenuuNimetus() - Tagastab menüü ID järgi menüü nimetuse&lt;br /&gt;
*AnnaMuugiartiklidMidaMenuusPole() - Tagastab müügiartiklid, mis pole veel menüüs, kus on juba müügiartiklid, mille IDd on antud massiivis&lt;br /&gt;
*AnnaMenuuNimed() - Tagastab kõigi menüüde nimetused tabelis Menyy&lt;br /&gt;
&lt;br /&gt;
====Kohvikutest üldiselt====&lt;br /&gt;
*KohvikuteNimed() - Tagastab kõigi kohvikute nimed massiivina&lt;br /&gt;
*KohvikuNimiIdJargi() - Tagastab antud kohviku ID järgi kohviku nime&lt;br /&gt;
*AnnaKoikOmanikuKohvikud() - Tagastab antud omaniku ID järgi kõik omaniku kohvikute ID-d massiivina&lt;br /&gt;
*Kohvikud() - Tagastab kõik kohvikute kirjed tabelist Kohvik&lt;br /&gt;
*KohvikuteArv() - Tagastab kõigi kohvikute arvu&lt;br /&gt;
*AnnaKaubad() - Tagastab kõik kaubad tabelist Kaup&lt;br /&gt;
*LisaKaup() - Lisab kauba kaupade nimekirja&lt;br /&gt;
*LisaKohvik() - Uue kohviku lisamine&lt;br /&gt;
&lt;br /&gt;
====Kommentaaridega seotud meetodid:====&lt;br /&gt;
*KohvikuKommentaarideArv() - Kohviku kommentaaride arv&lt;br /&gt;
*AnnaKohvikuKommentaarid() - Tagastab kommentaarid lehtede kaupa&lt;br /&gt;
*AnnaKohvikuKommentaar() - Tagastab üksiku kommentaari&lt;br /&gt;
*AnnaKohvikuKommentaarideHinded() - Tagastab kommentaaride jaoks võimalikud hinded koos kirjeldustega&lt;br /&gt;
*LisaKohvikuKommentaar() - Lisab kohviku kommentaari&lt;br /&gt;
*MuudaKohvikuKommentaar() - Muudab kohviku kommentaari&lt;br /&gt;
*MuudaKohvikuKommentaariOlek() - Muudab kohviku kommentaari oleku&lt;br /&gt;
*MuudaKohvikuKommentaariPeidetus() - Muudab kohviku kommentaari peidetust&lt;br /&gt;
&lt;br /&gt;
====Statistikaga seotud meetodid:====&lt;br /&gt;
*StatistikaRakendusteKohtaTana() - Tagastab rakenduse nimed ja nende vastu tehtud päringud tänasel päeval&lt;br /&gt;
*StatistikaRakendusteKohtaViimaneNadal() - Tagastab rakenduse nimed ja nende vastu tehtud päringud viimase nädala jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaSellelKuul() - Tagastab rakenduse nimed ja nende vastu tehtud päringud selle kuu jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaKokku() - Tagastab rakenduse nimed ja nende vastu tehtud päringud kogu aja vältel&lt;br /&gt;
*StatistikaMeetoditeKohtaTana() - Meetod leiab tänase päeva jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaViimaneNadal() - Meetod leiab viimase nädala jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaSellelKuul() - Meetod leiab kuu jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaKokku() - Meetod leiab kogu aja vältel kasutatud meetodid ja paringute arvu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebiteenuse projekti (WCF + andmebaas) saab siit: http://enos.itcollege.ee/~rruga/VRII/Teenusekiht.zip&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : CMS ==&lt;br /&gt;
&lt;br /&gt;
Meie loodud veebirakenduses on realiseeritud järgnevad CMS seotud funktsionaalsused :&lt;br /&gt;
*Kõikide kohvikute lehed on eraldi aadressiga, mis võimaldab eri kohvikud bookmarkida ja facebooki like anda. See on saavutatud tänu ?kohvik=1 aadressiribal, kus parameeteri kohvik number identifitseerib kohviku.&lt;br /&gt;
*Adminni õigustega kasutajal on võimalik lisada uus kohvikuid andembaasi&lt;br /&gt;
*Kohviku omanik saab lisada menüüd, muuta seda ja kustutada&lt;br /&gt;
*Adminnid saavad kasutajaid hallata, määrates nendele rolle, mis omakorda tagab teatud õigused&lt;br /&gt;
*Kohviku omanikud saavad  oma kohviku kasutajaid hallata, määrates neile näiteks müüja või kliendi rolli.&lt;br /&gt;
*Kogu menüü põhineb sitemapil, mille alus on kirjeldatud eraldi sitemap failis, lisaks sellel lisatakse sinna dünaamiselt kohvikud juurde ( mis andmebaasis olemas on )&lt;br /&gt;
*Kohviku omanik saab kohviku lehte isikupärastada tänu richteksti osale, näiteks lisada html osi.&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Veebirakendus ==&lt;br /&gt;
&lt;br /&gt;
Veebiteenust kasutavaks veebirakenduseks on ASP.NET rakendus. &lt;br /&gt;
&lt;br /&gt;
* Esilehel saab otsida kohvikuid või minna kohe huvipakkuva kohviku menüü lehele.&lt;br /&gt;
* Kohviku menüü lehel on näha tänased ja teised menüüd, kohviku lahtioleku aeg. Kui panna veebirakendus internetti, siis on võimalus Facebook-i kaudu kohviku fänniks hakata. Kommenteerimise ja soodustuste osa on veel pooleli.&lt;br /&gt;
* Sisse loginud kohviku omanik saab ka kohviku menüüsid muuta, lisada, kustutada. &lt;br /&gt;
* Kasutajate lehel saab sisse loginud kohviku omanik hallata kohviku kasutajaid.&lt;br /&gt;
* Statistika lehel saab vaadata statistikat teenust kasutanud rakenduste ja kasutatud meetodite kohta. Näeb nii tänase päeva, viimase nädala, selle kuu ja aasta statistikat&lt;br /&gt;
* Kohviku lisamise lehel saab aga admini õigustege kasutaja lisada uue kohviku.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:KohvikuMenuEdit.JPG|800px|Kohviku menüü muutmise leht. ITK kohviku menüüde muutmiseks tuleb logida sisse kasutajaga Ilmar parooliga &amp;quot;ilmar&amp;quot;.]]&lt;br /&gt;
&lt;br /&gt;
Kohviku menüü muutmise leht. ITK kohviku menüüde muutmiseks tuleb logida sisse kasutajaga Ilmar parooliga &amp;quot;ilmar&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Kohviku admin osa nägemiseks võib sisse logida kasutajaga rauno, parool on ka rauno. Sellega saab ligi statistikale ja uue kohviku loomisele.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebirakenduse koos uuendatud teenuskihiga saab siit: http://enos.itcollege.ee/~rruga/VRII/KohvikuProjekt.rar&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Kommentaaride komponent ==&lt;br /&gt;
&lt;br /&gt;
Kommentaaride sisestamiseks ja haldamiseks on loodud iseseisev ning enam jaolt taas kasutatav kommentaaride komponent. Komponent on hetkel realiseeritud ASP&#039;i User Control&#039;ina ja mitte Custom Control&#039;ina, mis vähendab veidi selle üleviidavust teistesse projektidesse. Siiski on selle muutmine ASP&#039;i Custom Control&#039;iks mõningate muudatustega võimalik.&lt;br /&gt;
&lt;br /&gt;
[[Image:comskeem.png|thumb|center|alt=Kommentaari komponendi skeem.|Kommentaari komponendi skeem.]]&lt;br /&gt;
&lt;br /&gt;
Kommentaaride komponent koosneb kahest osast, mis lisatakse lehele, millel vajatakse kommenteerimise funktsionaalsust:&lt;br /&gt;
sisendkontroll - see komponent on vajalik uute kommentaaride sisestamiseks;&lt;br /&gt;
väljundkontroll - antud komponent esitab olemasolevad kommentaarid hulga kaupa.&lt;br /&gt;
&lt;br /&gt;
Mõlemad kommentaari komponendi osad on kasutatavad ka iseseisvalt, kui see peaks vajalik olema. Kommentaari andmeid esitavad need komponendid läbi iseseisvate kommentaarikontrollide, mida võib ühel kontrollil olla ka mitu. Kommentaarikontrollid ei ole võimelised iseseisvalt kommentaaride andmeid hankima ning seepärast tuleb need täita väljapoolt, kas sisend- või väljundkontrollide poolt. Samuti tuleb uue kommentaari loomine läbi viia kommentaarikontrolli väliselt - seda teostabki sisendikontroll. Samas kogu ülejäänud kommentaari haldus, nagu olemasolevate kommentaaride muutmine ning uute olekute seadmine toimub üksnes läbi iseseisvate kommentaarikontrollide, mis sisaldavad täies mahus vastavat funktsionaalsust.&lt;br /&gt;
&lt;br /&gt;
Kommentaaride komponendi kõik kolm osa (sisendkontroll, väljundkontroll ja kommentaarikontroll) suhtlevad teenusekihiga läbi vastava ligipääsuobjekti. Ligipääsuobjekt tegeleb ühenduse ning sellega seonduvate võimalike vigade haldamisega. Kokkuvõtlikult loob see vajaduse korral uue ühenduse, sooritab päringud ning lõpuks sulgeb ühenduse, kui vastav korraldus antakse.&lt;br /&gt;
&lt;br /&gt;
Teenuses on vastavad protseduurid, mida teenusega suhtlemisel välja kutsutakse ning mis teostavad reaalseid muudatusi andmebaasis, seda muidugi vastavalt reeglitele.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus II : Mobiilirakendus ==&lt;br /&gt;
&lt;br /&gt;
Teine rakendus, mis veebiteenuse peale ehitatud sai, oli Windows Phone 7 rakendus. Lühidalt kirjeldades saab peale rakenduse käivitamist näha listi kõikidest olemasolevatest kohvikutest. Kui vajutad mingi kohviku nime peale, avaneb täpsem kirjeldus kohviku kohta, kust näeb lisaks kohviku nimele ka lühikest kirjeldust, tänast lahtiolekuaega ja kohviku aadressit. Samuti on kohviku kirjelduse lehel viide kohviku tänasele menüüle ja kommenteerimisele. Vajutades vaata menüüd nuppu avaneb vaade täna müügis olevatest müügiartiklitest ja nende hinnast, vajutades aga kommenteeri kohvikut nupule avaneb võimalus lisada kohviku kohta kommentaar.&lt;br /&gt;
&lt;br /&gt;
Kokkuvõttev pilt realiseeritud võimalustest:&lt;br /&gt;
&lt;br /&gt;
[[Image:WP7 rakendus.jpg|alt=WP7 rakendus.|WP7 rakenduse võimalused.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mobiilirakenduse saab alla tõmmata siit: http://enos.itcollege.ee/~rruga/VRII/Mobiilirakendus.rar&lt;br /&gt;
&lt;br /&gt;
NB! Et mobiilirakendust proovida ja mõistliku tulemust saada peab teil olema kõige uuem versioon meie projekti teenuskihist ning teenuskiht peab töötama.&lt;br /&gt;
&lt;br /&gt;
== Meeskonna kokkuvõttev aruanne ==&lt;br /&gt;
&lt;br /&gt;
== Logi ==&lt;br /&gt;
&lt;br /&gt;
=== 8. Mai ===&lt;br /&gt;
Veebirakendus esitluseks valmis. Täiendatud vikilehte.&lt;br /&gt;
&lt;br /&gt;
=== 7. Mai ===&lt;br /&gt;
Mobiilirakendus sai valmis ja selle kohta uuendatud vikilehte.&lt;br /&gt;
&lt;br /&gt;
=== 17. aprill ===&lt;br /&gt;
Wikilehe täiendamine andmemudeli ja veebiteenuse meetodite kirjeldusega.&lt;br /&gt;
&lt;br /&gt;
=== 9. aprill ===&lt;br /&gt;
Tegime rollide halduse, münüüde muutmise vormi. Meili saatmine registreerimisel. Toimus andmebaasi andmemudeli väike muutus. &lt;br /&gt;
&lt;br /&gt;
=== 30. märts ===&lt;br /&gt;
Tehtud on kohviku menüü ja kohviku kommenteerimise leht.&lt;br /&gt;
&lt;br /&gt;
=== 26. märts ===&lt;br /&gt;
Tehtud on esimesed veebiteenuse meetodid ja veebirakendusele kasutajate registreerimine.&lt;br /&gt;
&lt;br /&gt;
=== 10. märts ===&lt;br /&gt;
Väikese häki abil õnnestus kohviku kassa arvutis saada tööle üks Forms-i proovirakendus.&lt;br /&gt;
&lt;br /&gt;
=== 8. märts ===&lt;br /&gt;
Kuna kassa-aparaadis on operatsioonisüsteemiks Windows XP ja raud on 1.99 GHz, 256 RAM siis peaks saama&lt;br /&gt;
prototüübiks teha sinna peale rakenduse, mille ülesandeks menüüga tegelemine. &lt;br /&gt;
&lt;br /&gt;
=== 7. märts ===&lt;br /&gt;
Linnar Viik andis meile järgmist nõu: tuleb eristada kahte asja - see, mis peab valmis saama (&#039;&#039;must&#039;&#039;) ja see, mis oleks tore (&#039;&#039;nice to have&#039;&#039;). Valmis peab saama menüüga ekraan seinal (esialgu kasutajale prototüübi näitamiseks kasvõi näiteks PowerPoint-i abil tehtud). Alles siis kui on kasutajalt positiivne tagasiside saadud, võib edasi minna reaalse tarkvaralahenduse loomisega. Kui ka see on valmis ja kasutaja sellega rahul võib juurde mõelda &#039;&#039;nice to have&#039;&#039; asju (näiteks eelinfo järgmise päeva menüü kohta, üliõpilasesinduse sõnumite riba ja muid asju).&lt;br /&gt;
&lt;br /&gt;
Saime teada, et kui tahame, et meie loodav süsteem suhtleks IT Kohviku kassasüsteemiga, siis tuleb selle süsteemi tootjatega ühendust võtta ja nendega konsulteerida.&lt;br /&gt;
&lt;br /&gt;
=== 19.Veebruar ===&lt;br /&gt;
*Valmis XSLT fail.&lt;br /&gt;
&lt;br /&gt;
=== 9.Veebruar ===&lt;br /&gt;
* Esmane versioon XML ja XML Schemast olemas&lt;br /&gt;
* Tekkis küsimus kas XSLT faili tuleb käsitsi tekitada või automaatselt.&lt;br /&gt;
* Küsimus oli ka kas lahendasime portsjoni asja mõistlikult või oleks mõni teine lähenemine parem olnud.&lt;br /&gt;
* Küsimus, kas XML fail on liiga üle pingutatud või sobiva keerukusega&lt;br /&gt;
&lt;br /&gt;
=== 7. Veebruar ===&lt;br /&gt;
* Võtsime õppejõu poolt pakutud ideest kohe kinni, sest me eelistame teha praktilist asja, mida saab kasutada ja mille kasutamist saame ka iga päev jälgida. &lt;br /&gt;
* Esimese asjana otsustasime välja uurida mida meie &amp;quot;kliendid&amp;quot; (süsteemi tellijad) meilt ootavad. (Soovid idee punkti all)&lt;br /&gt;
* Valminud on lihtne teenusest ja klientidest koosnev süsteemi testmudel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Kasulikud lingid ==&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCF_auto_client_proxies.aspx&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/ms178472.aspx&lt;br /&gt;
&lt;br /&gt;
http://support.microsoft.com/kb/305141&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/aa702565.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/scottgu/archive/2007/04/06/tip-trick-enabling-ssl-on-iis7-using-self-signed-certificates.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/scottgu/archive/2010/06/28/introducing-iis-express.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/scottgu/archive/2011/01/03/vs-2010-sp1-beta-and-iis-developer-express.aspx&lt;br /&gt;
&lt;br /&gt;
http://blogs.msdn.com/b/webdevtools/archive/2011/03/14/enabling-iis-express-support-in-vs-2010-sp1.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/gunnarpeipman/archive/2010/12/11/visual-studio-2010-sp1-beta-supports-iis-express.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.dotnetcurry.com/ShowArticle.aspx?ID=487&lt;br /&gt;
&lt;br /&gt;
http://davidkiff.co.uk/post/2009/09/22/Setting-up-SSL-for-WCF-in-Development.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.request-response.com/blog/CommentView,guid,e9bb929b-d0b4-4626-b302-1d2715fc344a.aspx&lt;br /&gt;
&lt;br /&gt;
=== Kokkuvõtvad lingid ===&lt;br /&gt;
&lt;br /&gt;
* WCF&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/library/ee958158.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCF_auto_client_proxies.aspx&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/aa702565.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCFInstance.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCFConcurrency.aspx&lt;br /&gt;
&lt;br /&gt;
http://codeidol.com/csharp/wcf/Concurrency-Management/Service-Concurrency-Mode/&lt;br /&gt;
&lt;br /&gt;
* ASP&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/ms178472.aspx&lt;br /&gt;
&lt;br /&gt;
http://support.microsoft.com/kb/305141&lt;br /&gt;
&lt;br /&gt;
http://www.west-wind.com/weblog/posts/2008/Aug/14/ASPNET-gets-no-Respect&lt;br /&gt;
&lt;br /&gt;
http://lostechies.com/jimmybogard/2008/05/19/asp-net-officially-unmaintainable/&lt;br /&gt;
&lt;br /&gt;
http://www.lullabot.com/blog/why-not-asp-net&lt;br /&gt;
&lt;br /&gt;
http://reverseblade.blogspot.com/2008/06/web-development-aspnet-webforms-versus.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Võrgurakendused II: hajussüsteemide ehitamine]]&lt;br /&gt;
[[Category: Veebirakenduste loomine ASP.NET abil]]&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=32294</id>
		<title>Meeskond &quot;FoodWars&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=32294"/>
		<updated>2011-05-18T18:22:04Z</updated>

		<summary type="html">&lt;p&gt;Rruga: /* Klientrakendus I : Veebirakendus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Idee ==&lt;br /&gt;
Meie tiimil on plaanis teha internetipõhine söökla menüü süsteem (aluseks IT Kolledži kohvik, aga suunitlus selline, et kõik kohvikud/sööklad saaksid teha endale kasutajakonto ja hakata rakendust kasutama), kust saaks jälgida menüüd, mis sööke saab süüa, mis veel järgi on, kasutajatel on ka võimalus sööke hinnata (stiilis &amp;quot;meeldib&amp;quot;, &amp;quot;ei meeldi&amp;quot; nagu Facebook-is).&lt;br /&gt;
&lt;br /&gt;
Kohvikupidaja Teele soovid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* elektroonilisest menüüst asju kustutada, isegi siis kui asja peaks olema teoreetiliselt alles, aga tegelikult on asi otsas.&lt;br /&gt;
* elektrikatkestuse korral jääb menüü püsima. Ta peab teadma hindu mistahes olukorras.&lt;br /&gt;
* menüül näidatakse automaatselt ka ISIC kaardi omanike soodushinnad&lt;br /&gt;
* süsteem toetab ka poole portsjoni müümist.&lt;br /&gt;
&lt;br /&gt;
Linnar Viigi soovid/visioonid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* kõik oleks ka internetist kättesaadav, peale LCD ekraani, mis kajastab menüüd sööklas.&lt;br /&gt;
* aluseks facebook, kus siis söögid oleks nagu facebook-i alateemad.&lt;br /&gt;
* saab sööke hinnata, kommenteerida (täna oli väga maitsev praad).&lt;br /&gt;
* kasutajad saaks vaadata, mis menüüs on (ka järgmisel nädalal) ja mitu portsu veel alles on.&lt;br /&gt;
* kasutajad saaksid välja pakkuda menüüsid.&lt;br /&gt;
* erinevate söögikohtade kasutajad saaksid omavahel muljeid jagada.&lt;br /&gt;
* kuu aja aktiivsemad saavad prii lõuna.&lt;br /&gt;
* mingil ajal võib olla &amp;quot;happy hour&amp;quot; (enne sulgemist saab odavamalt).&lt;br /&gt;
* piiranguks on see, et toitu broneerida ei saa &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vaba tarkvara kasutamise võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Antud projekti puhul oleks võimalik kasutada [http://www.postgresql.org/ PostgreSQL] andmebaasi (vt. lisaks http://en.wikipedia.org/wiki/PostgreSQL ) Microsoft SQL Server&#039;i asemel. See võiks anda kasutajale võimaluse valida .NET ning [http://www.mono-project.com/ Mono] (vt. lisaks http://en.wikipedia.org/wiki/Mono_(software) ) platvormide vahel. Sel viisil oleks kliendil võimalik Microsoft&#039;i platvormi kõrval valida tõenäoliselt soodsam vaba tarkvara platvorm. Andmebaasi lõplik valik pole hetkel veel otsustatud.&lt;br /&gt;
&lt;br /&gt;
== Meeskond ja tööjaotus==&lt;br /&gt;
* Kristjan Stolin - projektijuht, suhtlus kliendiga, XML, wiki, teenuskihtide progemine, rollide halduse lehe progemine&lt;br /&gt;
* Ilmar Telga - XML, kliendiga suhtlus, wiki, teenuskihtide progemine, lõpprakenduste menüüd, login&lt;br /&gt;
* Rauno Rüga - XML, XSLT, andmebaasi loomine, wiki, mobiilirakendus, statistika&lt;br /&gt;
* Lauri Kermas - teenuskihtide ehitamine, wiki, rakenduse rollid ja kasutajad, login, kommenteerimise võimaluste progemine&lt;br /&gt;
&lt;br /&gt;
== XML Fail ==&lt;br /&gt;
=== XML ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Toidud&amp;gt;&lt;br /&gt;
  &amp;lt;Toit&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduNimetus&amp;gt;Viineri kaste&amp;lt;/ToiduNimetus&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduLiik&amp;gt;Praad&amp;lt;/ToiduLiik&amp;gt;&lt;br /&gt;
    &amp;lt;OlemasolevatYhikut&amp;gt;5&amp;lt;/OlemasolevatYhikut&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduKogus&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Poolportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;2011&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;1&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;9&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;15&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;07&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;23&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;        &lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.15&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;0&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;0&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;0&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;00&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;00&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;00&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Täisportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.80&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
    &amp;lt;/ToiduKogus&amp;gt;&lt;br /&gt;
    &amp;lt;Kommentaarid&amp;gt;&lt;br /&gt;
      &amp;lt;Kommentaar&amp;gt;&lt;br /&gt;
        &amp;lt;Saatja&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaNimi&amp;gt;Kristjan&amp;lt;/SaatjaNimi&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaRoll&amp;gt;Tudeng&amp;lt;/SaatjaRoll&amp;gt;&lt;br /&gt;
        &amp;lt;/Saatja&amp;gt;&lt;br /&gt;
        &amp;lt;Sisu&amp;gt;Minu lemmik toit ! Kui algebra tund ei hakkaks, sööks veel 5 portsjonit.&amp;lt;/Sisu&amp;gt;&lt;br /&gt;
      &amp;lt;/Kommentaar&amp;gt;&lt;br /&gt;
    &amp;lt;/Kommentaarid&amp;gt;&lt;br /&gt;
  &amp;lt;/Toit&amp;gt;&lt;br /&gt;
&amp;lt;/Toidud&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kommentaariks siis niipalju, et meie näide on ilma kohviku osata, selleks et näidet mitte liiga suureks ajada.&lt;br /&gt;
&lt;br /&gt;
Ka on meil moment puudu ID väljad, mis on igasugu andmebaasiga suhtlemiseks hädavajalikud, samas siin näidises palju juurde ei anna.&lt;br /&gt;
&lt;br /&gt;
Asja tegemisel avastasime, et põhiliseks arusaamatuse kohaks on toitude erinevad kogused (ehk siis pool portsjonit, suur / väike ja muud võrdlevad ühikud). Esimese võimalusena kaalusime teha lihtsalt täiesti eraldi toidud kõige kohta, stiilis &amp;quot;väike viineripraad&amp;quot; ja &amp;quot;suur viineripraad&amp;quot;. Kahjuks see variant ei kõlbaks eriti hästi, kuna need erinevad portsjonid kasutavad ikkagi samu materjale ja kui me peaks mingi süsteemiga näitama kui palju portsjoneid alles on. Sööklast näiteks pakuti et väike portsjon kasutab materjale kuskil 0.8 suure portsjoni ulatuses, ehk see suhtarv peaks olema kasutaja poolt (kohvikupidaja, restoraniomanik) ise sätitav. &lt;br /&gt;
&lt;br /&gt;
Tänu sellele sai meie süsteemi alustalaks siiski Toit, millel on oma Portsjonid siis erinevate hindade ja soodustustega. Moment pole meil ka Portsjoni XML osas toodud ära seost kogusega. (Kui palju ühe portsjoni lisamine/müümine peaks toidu üldkogust muutma).&lt;br /&gt;
&lt;br /&gt;
Kommenteerida saab meil moment toitu ennast, mitte eraldi portsjonit. Isegi kui kasutajad tahavad lisada kommentaare stiilis &amp;quot;See väike supp oli tõesti väga väike&amp;quot;, ei soovi nad seda ilmselt eraldi portsjoni alla panna. Tulevikus peaks kindlasti olema ka võimalus pigem kommenteerida üldisemalt (Kohvikut ennast, söögipaiku üldse), kui spetsiifilisemalt (Väikse prae kaste lisandi kohta).&lt;br /&gt;
&lt;br /&gt;
=== XML Schema ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Toidud&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Toit&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduNimetus&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;OlemasolevatYhikut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduKogus&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:choice maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;PortsjoniLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;Myygiaeg&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Aasta&amp;quot; type=&amp;quot;xs:unsignedShort&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Kuu&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Paev&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Tund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Minut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Sekund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;ToiduHind&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Eurohind&amp;quot; type=&amp;quot;xs:decimal&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Soodustus&amp;quot;&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseProtsent&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:choice&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Kommentaarid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Saatja&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaNimi&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaRoll&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Sisu&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
  &amp;lt;h2&amp;gt;Kohvikus müüdavad toidud&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr bgcolor=&amp;quot;#9acd32&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Veel alles&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Portsjon&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Müügiaeg&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustuse liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Kommentaar(id)&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;Toidud/Toit&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduNimetus&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduLiik&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;OlemasolevatYhikut&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;PortsjoniLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Paev&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Kuu&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Aasta&amp;quot; /&amp;gt; &amp;amp;nbsp;  &lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Tund&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Minut&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Sekund&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Eurohind&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseProtsent&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Kommentaarid/Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Sisu&amp;quot; /&amp;gt;&amp;amp;nbsp;(&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaRoll&amp;quot; /&amp;gt;&amp;amp;nbsp;&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaNimi&amp;quot; /&amp;gt;)&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XSLT poolt loodud tulemus on järgnev (lisasin veel kaks toitu XML faili, siin wiki lehel on ruumi kokkuhoiuks vaid 1 toit toitude listis):&lt;br /&gt;
[[File:Xslt.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arhitektuur ==&lt;br /&gt;
&lt;br /&gt;
Süsteem oli vahepeal plaanis ehitada kolmekihilise arhitektuuriga ([http://en.wikipedia.org/wiki/Multitier_architecture#Three-tier_architecture Three-tier architecture]). See peaks lihtsustama süsteemi haldamist ja laiendamist tulevikus. Aga kuna selle jaoks otsest vajadust polenud ja oleks vaid süsteemi keeruliseks ajanud, siis loobusime sellest.&lt;br /&gt;
&lt;br /&gt;
[[Image:three-tier.png|thumb|center|alt=Arhitektuuri skeem.|Arhitektuuri skeem.]]&lt;br /&gt;
&lt;br /&gt;
== Veebiteenus ==&lt;br /&gt;
===Andmemudel===&lt;br /&gt;
[[Image:KohvikuAndmemudel.jpg|thumb|right|alt=Kohviku projekti andmemudel|Andmemudel]]&lt;br /&gt;
Enne veebiteenuse meetodite kirjeldamist koostasime andmemudeli. Loodud andmemudeli põhjal lõime andmebaasi vajalike tabelite ja atribuutidega. Andmemudeli peal on rohelisega tähistatud tabelid, mis on oseselt seotud kohviku valdajaga ja mida WPF rakenduse jaoks kindlasti vaja on. Ülejäänud helesinised tabelid on vajalikud kasutajate võimaluste jaoks. Lisaks on andmemudelil kaks tabelit, mis pole teisega seotud, need on süsteemi administraatori jaoks, et oleks ülevaade, mis rakendused teenust enim kasutavad ning mis meetodeid kõige rohkem välja kutsutakse.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Teenuskihis olevad meetodid===&lt;br /&gt;
&lt;br /&gt;
====Kasutajatega seotud meetodid:====&lt;br /&gt;
*SaidiKasutajaLiik() - Tagastab antud kasutaja ID järgi kasutaja liigi nimetuse&lt;br /&gt;
*KustutaSaidiKasutaja() - Kustutab antud kasutaja ID järgi kasutaja tabelis Kasutaja&lt;br /&gt;
*AnnaKoikSaidiKasutajad() - Tagastab kõik kirjed tabelist Kasutaja&lt;br /&gt;
*AnnaKoikKohvikuKasutajad() - Tagastab antud kohviku ID järgi kõik kohviku kasutajad massiivina&lt;br /&gt;
*MuudaSaidiKasutajaLiik() - Muudab antud kasutaja ID järgi kasutaja liigi tabelis Kasutaja&lt;br /&gt;
*KoikLubatudSaidiKasutajaTyybid() - Tagastab andmebaasi kõik võimalikud kohviku kasutaja rollid (id-d ja nimed), muud andmed jäävad tühjaks&lt;br /&gt;
*KoikLubatudKohvikuRollid() - Tagastab andmebaasi kõik võimalikud site kasutaja rollid (id-d ja nimed), kohviku_id jääb tühjaks&lt;br /&gt;
*KasutajaKohvikuRollid() - Tagastab antud kasutaja ID järgi kõik kasutaja rollid kõikides kohvikutes&lt;br /&gt;
*MuudaKohvikuKasutajaRoll() - Muudab antud kasutaja ID ja kohviku ID järgi kasutaja rolli kohvikus, kui rolli pole, siis tekitatakse uus&lt;br /&gt;
*SaidiKasutajaLiikID() - Tagastab antud kasutaja ID järgi kasutaja liigi ID&lt;br /&gt;
*KohvikuKasutajaLiikID() - Tagastab antud kasutaja ID ja kohviku ID järgi kohviku kasutaja rolli ID&lt;br /&gt;
*AnnaKasutajaMeiliAadress() - Tagastab antud kasutaja nime alusel kasutaja meiliaadressi&lt;br /&gt;
*AnnaKasutajaIdJargi() - Tagastab kasutajanime kasutaja ID järgi&lt;br /&gt;
*AuthendiKasutaja() - Autendib kasutaja, õnnestumisel tagastab kasutaja ID, ebaõnnestumisel null &lt;br /&gt;
*RegistreeriKasutaja() - Registreerib kasutaja andmebaasi ja tagastab true kui kasutaja loomine õnnestus&lt;br /&gt;
&lt;br /&gt;
====Menüüga seotud meetodid====&lt;br /&gt;
*LisaArtikkelMenuuse() - Seob menüüartikli ja menüü&lt;br /&gt;
*LisaKohvikuleMenuu() - Seob menüü ja kohviku&lt;br /&gt;
*TagastabMenuuMuutujad() - Tagastab menüü järgi kas inimesel oleks õigust seda muuta&lt;br /&gt;
*KustutaMenuuJaKohvikuSeos() - Kustutab menüü ja kohviku seose&lt;br /&gt;
*LisaUusMenuu() - Teeb uue menüü, seob selle kohvikuga, kui kohviku ID on parameetrina kaasa antud&lt;br /&gt;
*MenuuKohvikuIdJargi() - Tagastab kohviku ID järgi kohviku tänaste või mitte tänaste menüüde ID-de massiivi&lt;br /&gt;
*LisaMenuuArtikkelMenuuse() - Sisestab antud müügiartikli menüüsse, mille ID on menyy_id&lt;br /&gt;
*KustutaMenuuArtikkel() - Kustutab müügiartikli ID ja menüü ID järgi müügiartikli menüüst&lt;br /&gt;
*TagastaMenuuArtiklid() - Tagastab menüü ID järgi menüüs olevad müügiartiklid&lt;br /&gt;
*VahetaMenuuArtiklit() - Muudab antud müügiartikli tabelis Myygiartikkel&lt;br /&gt;
*MenuuNimetus() - Tagastab menüü ID järgi menüü nimetuse&lt;br /&gt;
*AnnaMuugiartiklidMidaMenuusPole() - Tagastab müügiartiklid, mis pole veel menüüs, kus on juba müügiartiklid, mille IDd on antud massiivis&lt;br /&gt;
*AnnaMenuuNimed() - Tagastab kõigi menüüde nimetused tabelis Menyy&lt;br /&gt;
&lt;br /&gt;
====Kohvikutest üldiselt====&lt;br /&gt;
*KohvikuteNimed() - Tagastab kõigi kohvikute nimed massiivina&lt;br /&gt;
*KohvikuNimiIdJargi() - Tagastab antud kohviku ID järgi kohviku nime&lt;br /&gt;
*AnnaKoikOmanikuKohvikud() - Tagastab antud omaniku ID järgi kõik omaniku kohvikute ID-d massiivina&lt;br /&gt;
*Kohvikud() - Tagastab kõik kohvikute kirjed tabelist Kohvik&lt;br /&gt;
*KohvikuteArv() - Tagastab kõigi kohvikute arvu&lt;br /&gt;
*AnnaKaubad() - Tagastab kõik kaubad tabelist Kaup&lt;br /&gt;
*LisaKaup() - Lisab kauba kaupade nimekirja&lt;br /&gt;
*LisaKohvik() - Uue kohviku lisamine&lt;br /&gt;
&lt;br /&gt;
====Kommentaaridega seotud meetodid:====&lt;br /&gt;
*KohvikuKommentaarideArv() - Kohviku kommentaaride arv&lt;br /&gt;
*AnnaKohvikuKommentaarid() - Tagastab kommentaarid lehtede kaupa&lt;br /&gt;
*AnnaKohvikuKommentaar() - Tagastab üksiku kommentaari&lt;br /&gt;
*AnnaKohvikuKommentaarideHinded() - Tagastab kommentaaride jaoks võimalikud hinded koos kirjeldustega&lt;br /&gt;
*LisaKohvikuKommentaar() - Lisab kohviku kommentaari&lt;br /&gt;
*MuudaKohvikuKommentaar() - Muudab kohviku kommentaari&lt;br /&gt;
*MuudaKohvikuKommentaariOlek() - Muudab kohviku kommentaari oleku&lt;br /&gt;
*MuudaKohvikuKommentaariPeidetus() - Muudab kohviku kommentaari peidetust&lt;br /&gt;
&lt;br /&gt;
====Statistikaga seotud meetodid:====&lt;br /&gt;
*StatistikaRakendusteKohtaTana() - Tagastab rakenduse nimed ja nende vastu tehtud päringud tänasel päeval&lt;br /&gt;
*StatistikaRakendusteKohtaViimaneNadal() - Tagastab rakenduse nimed ja nende vastu tehtud päringud viimase nädala jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaSellelKuul() - Tagastab rakenduse nimed ja nende vastu tehtud päringud selle kuu jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaKokku() - Tagastab rakenduse nimed ja nende vastu tehtud päringud kogu aja vältel&lt;br /&gt;
*StatistikaMeetoditeKohtaTana() - Meetod leiab tänase päeva jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaViimaneNadal() - Meetod leiab viimase nädala jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaSellelKuul() - Meetod leiab kuu jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaKokku() - Meetod leiab kogu aja vältel kasutatud meetodid ja paringute arvu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebiteenuse projekti (WCF + andmebaas) saab siit: http://enos.itcollege.ee/~rruga/VRII/Teenusekiht.zip&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : CMS ==&lt;br /&gt;
&lt;br /&gt;
Meie loodud veebirakenduses on realiseeritud järgnevad CMS seotud funktsionaalsused :&lt;br /&gt;
*Kõikide kohvikute lehed on eraldi aadressiga, mis võimaldab eri kohvikud bookmarkida ja facebooki like anda. See on saavutatud tänu ?kohvik=1 aadressiribal, kus parameeteri kohvik number identifitseerib kohviku.&lt;br /&gt;
*Adminni õigustega kasutajal on võimalik lisada uus kohvikuid andembaasi&lt;br /&gt;
*Kohviku omanik saab lisada menüüd, muuta seda ja kustutada&lt;br /&gt;
*Adminnid saavad kasutajaid hallata, määrates nendele rolle, mis omakorda tagab teatud õigused&lt;br /&gt;
*Kohviku omanikud saavad  oma kohviku kasutajaid hallata, määrates neile näiteks müüja või kliendi rolli.&lt;br /&gt;
*Kogu menüü põhineb sitemapil, mille alus on kirjeldatud eraldi sitemap failis, lisaks sellel lisatakse sinna dünaamiselt kohvikud juurde ( mis andmebaasis olemas on )&lt;br /&gt;
*Kohviku omanik saab kohviku lehte isikupärastada tänu richteksti osale, näiteks lisada html osi.&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Veebirakendus ==&lt;br /&gt;
&lt;br /&gt;
Veebiteenust kasutavaks veebirakenduseks on ASP.NET rakendus. &lt;br /&gt;
&lt;br /&gt;
* Esilehel saab otsida kohvikuid või minna kohe huvipakkuva kohviku menüü lehele.&lt;br /&gt;
* Kohviku menüü lehel on näha tänased ja teised menüüd, kohviku lahtioleku aeg. Kui panna veebirakendus internetti, siis on võimalus Facebook-i kaudu kohviku fänniks hakata. Kommenteerimise ja soodustuste osa on veel pooleli.&lt;br /&gt;
* Sisse loginud kohviku omanik saab ka kohviku menüüsid muuta, lisada, kustutada. &lt;br /&gt;
* Kasutajate lehel saab sisse loginud kohviku omanik hallata kohviku kasutajaid.&lt;br /&gt;
* Statistika lehel saab vaadata statistikat teenust kasutanud rakenduste ja kasutatud meetodite kohta. Näeb nii tänase päeva, viimase nädala, selle kuu ja aasta statistikat&lt;br /&gt;
* Kohviku lisamise lehel saab aga admini õigustege kasutaja lisada uue kohviku.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:KohvikuMenuEdit.JPG|800px|Kohviku menüü muutmise leht. ITK kohviku menüüde muutmiseks tuleb logida sisse kasutajaga Ilmar parooliga &amp;quot;ilmar&amp;quot;.]]&lt;br /&gt;
&lt;br /&gt;
Kohviku menüü muutmise leht. ITK kohviku menüüde muutmiseks tuleb logida sisse kasutajaga Ilmar parooliga &amp;quot;ilmar&amp;quot;.&lt;br /&gt;
KOhviku admin osa nägemiseks võib sisse logida kasutajaga rauno, parool on ka rauno.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebirakenduse koos uuendatud teenuskihiga saab siit: http://enos.itcollege.ee/~rruga/VRII/KohvikuProjekt.rar&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Kommentaaride komponent ==&lt;br /&gt;
&lt;br /&gt;
Kommentaaride sisestamiseks ja haldamiseks on loodud iseseisev ning enam jaolt taas kasutatav kommentaaride komponent. Komponent on hetkel realiseeritud ASP&#039;i User Control&#039;ina ja mitte Custom Control&#039;ina, mis vähendab veidi selle üleviidavust teistesse projektidesse. Siiski on selle muutmine ASP&#039;i Custom Control&#039;iks mõningate muudatustega võimalik.&lt;br /&gt;
&lt;br /&gt;
[[Image:comskeem.png|thumb|center|alt=Kommentaari komponendi skeem.|Kommentaari komponendi skeem.]]&lt;br /&gt;
&lt;br /&gt;
Kommentaaride komponent koosneb kahest osast, mis lisatakse lehele, millel vajatakse kommenteerimise funktsionaalsust:&lt;br /&gt;
sisendkontroll - see komponent on vajalik uute kommentaaride sisestamiseks;&lt;br /&gt;
väljundkontroll - antud komponent esitab olemasolevad kommentaarid hulga kaupa.&lt;br /&gt;
&lt;br /&gt;
Mõlemad kommentaari komponendi osad on kasutatavad ka iseseisvalt, kui see peaks vajalik olema. Kommentaari andmeid esitavad need komponendid läbi iseseisvate kommentaarikontrollide, mida võib ühel kontrollil olla ka mitu. Kommentaarikontrollid ei ole võimelised iseseisvalt kommentaaride andmeid hankima ning seepärast tuleb need täita väljapoolt, kas sisend- või väljundkontrollide poolt. Samuti tuleb uue kommentaari loomine läbi viia kommentaarikontrolli väliselt - seda teostabki sisendikontroll. Samas kogu ülejäänud kommentaari haldus, nagu olemasolevate kommentaaride muutmine ning uute olekute seadmine toimub üksnes läbi iseseisvate kommentaarikontrollide, mis sisaldavad täies mahus vastavat funktsionaalsust.&lt;br /&gt;
&lt;br /&gt;
Kommentaaride komponendi kõik kolm osa (sisendkontroll, väljundkontroll ja kommentaarikontroll) suhtlevad teenusekihiga läbi vastava ligipääsuobjekti. Ligipääsuobjekt tegeleb ühenduse ning sellega seonduvate võimalike vigade haldamisega. Kokkuvõtlikult loob see vajaduse korral uue ühenduse, sooritab päringud ning lõpuks sulgeb ühenduse, kui vastav korraldus antakse.&lt;br /&gt;
&lt;br /&gt;
Teenuses on vastavad protseduurid, mida teenusega suhtlemisel välja kutsutakse ning mis teostavad reaalseid muudatusi andmebaasis, seda muidugi vastavalt reeglitele.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus II : Mobiilirakendus ==&lt;br /&gt;
&lt;br /&gt;
Teine rakendus, mis veebiteenuse peale ehitatud sai, oli Windows Phone 7 rakendus. Lühidalt kirjeldades saab peale rakenduse käivitamist näha listi kõikidest olemasolevatest kohvikutest. Kui vajutad mingi kohviku nime peale, avaneb täpsem kirjeldus kohviku kohta, kust näeb lisaks kohviku nimele ka lühikest kirjeldust, tänast lahtiolekuaega ja kohviku aadressit. Samuti on kohviku kirjelduse lehel viide kohviku tänasele menüüle ja kommenteerimisele. Vajutades vaata menüüd nuppu avaneb vaade täna müügis olevatest müügiartiklitest ja nende hinnast, vajutades aga kommenteeri kohvikut nupule avaneb võimalus lisada kohviku kohta kommentaar.&lt;br /&gt;
&lt;br /&gt;
Kokkuvõttev pilt realiseeritud võimalustest:&lt;br /&gt;
&lt;br /&gt;
[[Image:WP7 rakendus.jpg|alt=WP7 rakendus.|WP7 rakenduse võimalused.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mobiilirakenduse saab alla tõmmata siit: http://enos.itcollege.ee/~rruga/VRII/Mobiilirakendus.rar&lt;br /&gt;
&lt;br /&gt;
NB! Et mobiilirakendust proovida ja mõistliku tulemust saada peab teil olema kõige uuem versioon meie projekti teenuskihist ning teenuskiht peab töötama.&lt;br /&gt;
&lt;br /&gt;
== Meeskonna kokkuvõttev aruanne ==&lt;br /&gt;
&lt;br /&gt;
== Logi ==&lt;br /&gt;
&lt;br /&gt;
=== 8. Mai ===&lt;br /&gt;
Veebirakendus esitluseks valmis. Täiendatud vikilehte.&lt;br /&gt;
&lt;br /&gt;
=== 7. Mai ===&lt;br /&gt;
Mobiilirakendus sai valmis ja selle kohta uuendatud vikilehte.&lt;br /&gt;
&lt;br /&gt;
=== 17. aprill ===&lt;br /&gt;
Wikilehe täiendamine andmemudeli ja veebiteenuse meetodite kirjeldusega.&lt;br /&gt;
&lt;br /&gt;
=== 9. aprill ===&lt;br /&gt;
Tegime rollide halduse, münüüde muutmise vormi. Meili saatmine registreerimisel. Toimus andmebaasi andmemudeli väike muutus. &lt;br /&gt;
&lt;br /&gt;
=== 30. märts ===&lt;br /&gt;
Tehtud on kohviku menüü ja kohviku kommenteerimise leht.&lt;br /&gt;
&lt;br /&gt;
=== 26. märts ===&lt;br /&gt;
Tehtud on esimesed veebiteenuse meetodid ja veebirakendusele kasutajate registreerimine.&lt;br /&gt;
&lt;br /&gt;
=== 10. märts ===&lt;br /&gt;
Väikese häki abil õnnestus kohviku kassa arvutis saada tööle üks Forms-i proovirakendus.&lt;br /&gt;
&lt;br /&gt;
=== 8. märts ===&lt;br /&gt;
Kuna kassa-aparaadis on operatsioonisüsteemiks Windows XP ja raud on 1.99 GHz, 256 RAM siis peaks saama&lt;br /&gt;
prototüübiks teha sinna peale rakenduse, mille ülesandeks menüüga tegelemine. &lt;br /&gt;
&lt;br /&gt;
=== 7. märts ===&lt;br /&gt;
Linnar Viik andis meile järgmist nõu: tuleb eristada kahte asja - see, mis peab valmis saama (&#039;&#039;must&#039;&#039;) ja see, mis oleks tore (&#039;&#039;nice to have&#039;&#039;). Valmis peab saama menüüga ekraan seinal (esialgu kasutajale prototüübi näitamiseks kasvõi näiteks PowerPoint-i abil tehtud). Alles siis kui on kasutajalt positiivne tagasiside saadud, võib edasi minna reaalse tarkvaralahenduse loomisega. Kui ka see on valmis ja kasutaja sellega rahul võib juurde mõelda &#039;&#039;nice to have&#039;&#039; asju (näiteks eelinfo järgmise päeva menüü kohta, üliõpilasesinduse sõnumite riba ja muid asju).&lt;br /&gt;
&lt;br /&gt;
Saime teada, et kui tahame, et meie loodav süsteem suhtleks IT Kohviku kassasüsteemiga, siis tuleb selle süsteemi tootjatega ühendust võtta ja nendega konsulteerida.&lt;br /&gt;
&lt;br /&gt;
=== 19.Veebruar ===&lt;br /&gt;
*Valmis XSLT fail.&lt;br /&gt;
&lt;br /&gt;
=== 9.Veebruar ===&lt;br /&gt;
* Esmane versioon XML ja XML Schemast olemas&lt;br /&gt;
* Tekkis küsimus kas XSLT faili tuleb käsitsi tekitada või automaatselt.&lt;br /&gt;
* Küsimus oli ka kas lahendasime portsjoni asja mõistlikult või oleks mõni teine lähenemine parem olnud.&lt;br /&gt;
* Küsimus, kas XML fail on liiga üle pingutatud või sobiva keerukusega&lt;br /&gt;
&lt;br /&gt;
=== 7. Veebruar ===&lt;br /&gt;
* Võtsime õppejõu poolt pakutud ideest kohe kinni, sest me eelistame teha praktilist asja, mida saab kasutada ja mille kasutamist saame ka iga päev jälgida. &lt;br /&gt;
* Esimese asjana otsustasime välja uurida mida meie &amp;quot;kliendid&amp;quot; (süsteemi tellijad) meilt ootavad. (Soovid idee punkti all)&lt;br /&gt;
* Valminud on lihtne teenusest ja klientidest koosnev süsteemi testmudel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Kasulikud lingid ==&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCF_auto_client_proxies.aspx&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/ms178472.aspx&lt;br /&gt;
&lt;br /&gt;
http://support.microsoft.com/kb/305141&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/aa702565.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/scottgu/archive/2007/04/06/tip-trick-enabling-ssl-on-iis7-using-self-signed-certificates.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/scottgu/archive/2010/06/28/introducing-iis-express.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/scottgu/archive/2011/01/03/vs-2010-sp1-beta-and-iis-developer-express.aspx&lt;br /&gt;
&lt;br /&gt;
http://blogs.msdn.com/b/webdevtools/archive/2011/03/14/enabling-iis-express-support-in-vs-2010-sp1.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/gunnarpeipman/archive/2010/12/11/visual-studio-2010-sp1-beta-supports-iis-express.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.dotnetcurry.com/ShowArticle.aspx?ID=487&lt;br /&gt;
&lt;br /&gt;
http://davidkiff.co.uk/post/2009/09/22/Setting-up-SSL-for-WCF-in-Development.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.request-response.com/blog/CommentView,guid,e9bb929b-d0b4-4626-b302-1d2715fc344a.aspx&lt;br /&gt;
&lt;br /&gt;
=== Kokkuvõtvad lingid ===&lt;br /&gt;
&lt;br /&gt;
* WCF&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/library/ee958158.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCF_auto_client_proxies.aspx&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/aa702565.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCFInstance.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCFConcurrency.aspx&lt;br /&gt;
&lt;br /&gt;
http://codeidol.com/csharp/wcf/Concurrency-Management/Service-Concurrency-Mode/&lt;br /&gt;
&lt;br /&gt;
* ASP&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/ms178472.aspx&lt;br /&gt;
&lt;br /&gt;
http://support.microsoft.com/kb/305141&lt;br /&gt;
&lt;br /&gt;
http://www.west-wind.com/weblog/posts/2008/Aug/14/ASPNET-gets-no-Respect&lt;br /&gt;
&lt;br /&gt;
http://lostechies.com/jimmybogard/2008/05/19/asp-net-officially-unmaintainable/&lt;br /&gt;
&lt;br /&gt;
http://www.lullabot.com/blog/why-not-asp-net&lt;br /&gt;
&lt;br /&gt;
http://reverseblade.blogspot.com/2008/06/web-development-aspnet-webforms-versus.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Võrgurakendused II: hajussüsteemide ehitamine]]&lt;br /&gt;
[[Category: Veebirakenduste loomine ASP.NET abil]]&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=V%C3%B5rgurakendused_II:_2011_kevadel_valminud_kodut%C3%B6%C3%B6d&amp;diff=31855</id>
		<title>Võrgurakendused II: 2011 kevadel valminud kodutööd</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=V%C3%B5rgurakendused_II:_2011_kevadel_valminud_kodut%C3%B6%C3%B6d&amp;diff=31855"/>
		<updated>2011-05-16T14:30:19Z</updated>

		<summary type="html">&lt;p&gt;Rruga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Jaan Igamees=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Kert Suvi=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Helen Muidik=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Mihkel Sokk=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Seda Sahradyan=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Priit Siimo=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Siim Sarv=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Reigo Männiste=&lt;br /&gt;
* Meeskond [[Meeskond Tool]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Karl Männil=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;H2&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Ilmar Telga=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Siim Aaver=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;H2&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Taavi Ilves=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Hungry_Student_Food_Board&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;ASP-tastic&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Jaan Kruusma=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Hungry_Student_Food_Board&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Andrus Reedla=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Jaak Lehtsalu=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Jana Mrots=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Heiki Tamm=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;H2&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Meeskond&amp;quot;]]&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond  &amp;quot;Hungry Student Food Board&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Toomas Soha=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Miina Sikk=&lt;br /&gt;
* Meeskond [[Meeskond Tool]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Rauno Rüga=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Tanel Liiv=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Hungry Student Food Board&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Gaspar Karm=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Joosep Ilves=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Taivo Türnpu=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;ASP-tastic&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Sander Baikov=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;ASP-tastic&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Allar Anijago=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tool&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Madis Sarv=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Kaspar Kallasmaa=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Jarko Kaskmaa=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;ASP-tastic&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Indrek Kõue=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;ASP-tastic&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Erik Kaju=&lt;br /&gt;
* Meeskond [[Meeskond Tool]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Mailis Toompuu=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;H2&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Madis Kõosaar=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Gert Glükmann=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;ASP-tastic&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:Meeskond_Tool&amp;diff=31854</id>
		<title>Talk:Meeskond Tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:Meeskond_Tool&amp;diff=31854"/>
		<updated>2011-05-16T14:29:07Z</updated>

		<summary type="html">&lt;p&gt;Rruga: /* Klientrakenduse arvustus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Väga hea on kohvikutele vahelduseks ka mingit muud xml-i lugeda. Selge ja arusaadav teenus, hea lühike ja ülevaatlik, treppida oleks saanud muidugi paremini. &lt;br /&gt;
&lt;br /&gt;
Täiesti mõtetu arvustus aga mis teha.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Priit Siimo D22&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===XML Arvustus===&lt;br /&gt;
Meeldib, et XML on väga lühike ja kompaktne. Võib-olla võiks lisada ka pildi lingi antud lumelaua juurde. XMLi treppimine on natuke paigast. Mõnes kohas on taane kaks tühikut ja mõnes kohas koguni terve tab.&lt;br /&gt;
&lt;br /&gt;
Oleks võinud XSLT-le ka veidi CSSi külge panna, et tabelile veidike silmailu anda.&lt;br /&gt;
&lt;br /&gt;
Meeskonna idee on väga hea ja wiki leht sisukas.&lt;br /&gt;
Ootan huviga projekti uuendusi.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Martin Lensment D21&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hea lühike xml, korralik wiki leht. Silma hakkasid xmli treppimisega tehtud vead.&lt;br /&gt;
Mis siin muud ikka kirjutada :P.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Allar Anijago D21&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Nagu ka eelnevalt kommenteeriti - tore et on valitud midagi peale kohviku. Kõik on ilus, tore, kena aga parameetrite osa oleks lahendanud teisiti. &lt;br /&gt;
&lt;br /&gt;
Näiteks:&lt;br /&gt;
&amp;lt;parameetrid&amp;gt;&lt;br /&gt;
  &amp;lt;parameeter&amp;gt;&lt;br /&gt;
     &amp;lt;tyyp&amp;gt;Pikkus&amp;lt;/tyyp&amp;gt;&lt;br /&gt;
     &amp;lt;v22rtus&amp;gt;2000cm&amp;lt;/tyyp&amp;gt;&lt;br /&gt;
  &amp;lt;/parameeter&amp;gt;&lt;br /&gt;
  &amp;lt;parameeter&amp;gt;&lt;br /&gt;
     &amp;lt;tyyp&amp;gt;Laius&amp;lt;/tyyp&amp;gt;&lt;br /&gt;
     &amp;lt;v22rtus&amp;gt;3000cm&amp;lt;/tyyp&amp;gt;&lt;br /&gt;
  &amp;lt;/parameeter&amp;gt;&lt;br /&gt;
&amp;lt;/parameetrid&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See võimaldaks kasutada pmts lõpmatuseni erinevaid parameetreid. Praegu tuleks uue parameetri käiku võtmisel XML ümber teha. Kui aga olete kindlad, et seda ei juhtu, siis pole vahet :)&lt;br /&gt;
&lt;br /&gt;
Kõik muu on hästi tehtud.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kert Suvi D22&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
XML fail on selge ja hästi loetav, piisavalt lihtne, samas katab funktsionaalsuse. Pildid võimalus võiks ka tegelikult olla küll. Treppimine on so-so, loetav siiski. Hästi tehtud, ei ole vaja asja mõttetult keerukaks ajada, tublid!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Taivo Türnpu D21&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Veebiteenuse arvustus ==&lt;br /&gt;
Üks vähestest projektidest, mis sai tähtajaks valmis ja on korraliku wiki lehega. &lt;br /&gt;
&lt;br /&gt;
Vaatasin muuhulgas Kasutaja klassi. Kasutaja paroolist krüptoräsi (&#039;&#039;hash&#039;&#039;) tegemine on turvalisuse huvides keerulisemalt teostatud (kasutatud on räsi soolamist ehk &#039;&#039;hash salting&#039;&#039;). Kuid registreeritud kasutajate hulgast juba olemasolevate kasutajanimede kontroll on liiga pikalt tehtud. Oleks võinud kasutada LINQ meetodit &#039;&#039;Any()&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
    if (! kont.Kasutajas.Any(user =&amp;gt; user.Nimi == userName)) // kui sellise nimega kasutajat pole&lt;br /&gt;
    {&lt;br /&gt;
        // siis sisesta kasutaja andmed baasi&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kood on jaotatud klassidesse ja klassid ilusti regioonidesse (&#039;&#039;#region ja #endregion&#039;&#039;). Kuid dokumentatsioon ei ole täielik. Enamus meetodeid on üldiselt kirjeldatud ja enamus meetodite parameetrid ja tagastused (ehk mida &#039;&#039;return&#039;&#039;-itakse) on lahti seletamata. &lt;br /&gt;
&lt;br /&gt;
Üldine mulje tööst on hea.&lt;br /&gt;
&lt;br /&gt;
[[User:Itelga|Ilmar Telga]] 21:25, 23 April 2011 (EEST)&lt;br /&gt;
&lt;br /&gt;
====Vastus Ilmarile====&lt;br /&gt;
&lt;br /&gt;
Aitäh kommentaari eest - võtame arvesse ja viime parandused sisse. Selline kasutajakontroll on kõvasti lihtsam tõepoolest ja dokumentatsioon saab ka parandatud.&lt;br /&gt;
&lt;br /&gt;
Miina Sikk&lt;br /&gt;
&lt;br /&gt;
== Veebiteenuse arvustus ==&lt;br /&gt;
&lt;br /&gt;
Veebiteenust on korralikult wiki lehel kirjeldatud, tegevuskava ka üsna täpselt paigas (kes millal ja mida tegi).&lt;br /&gt;
Kood on korralikult klassides ja arusaadav ning loetav. Tahaks juba lõpptulemust näha :D Tubli töö!&lt;br /&gt;
&lt;br /&gt;
Jaak Lehtsalu D22&lt;br /&gt;
&lt;br /&gt;
== Veebiteenuse arvustus ==&lt;br /&gt;
&lt;br /&gt;
Idee meeldib - alternatiivne ja praktiline.&lt;br /&gt;
Võiksite projektifaili koodi lisada, saaks kerge vaevaga projekti käima.&lt;br /&gt;
&lt;br /&gt;
Hetkel sai ainult uuritud koodi ja wiki poolt.&lt;br /&gt;
&lt;br /&gt;
Süsteem on hästi klassidesse jaotatud, kuid wikist on raske aru saada, mis meetodid on veebiteenuses kätte saadavad, näeb ainult klassikirjeldust.&lt;br /&gt;
&lt;br /&gt;
Muidu on wiki detailne ja logi on väga korralikult peetud.&lt;br /&gt;
&lt;br /&gt;
Koodi poolel on meetodite dokumenteerimine jäänud väheke poolikuks. Nagu Ilmar mainis, et return-id on enamjaolt puudu, mis vist on tingitud veatöötluse keerulisusest.&lt;br /&gt;
&lt;br /&gt;
Üldiselt on projekti kood loetav ning hallatav ja korralikult on kasutatud LINQ-t.&lt;br /&gt;
&lt;br /&gt;
Ootan huviga lõpptulemust.&lt;br /&gt;
&lt;br /&gt;
Mihkel Sokk D21&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Teenuse arvustus==&lt;br /&gt;
&lt;br /&gt;
Väga põhjalik wiki leht ja nagu näha osatakse oma aega ning meeskonnasisest tööd planeerida. Mõeldud on ka turvalisusele (salasõnade hashimine). Kasutatud erinevaid innovaatilisi lahendusi. Teenusel on ka täitsa praktiline vajadus olemas, kui inimene soovib endale lumelauda valida. Meetodid on asjalikud ja nende kaudu saab edukalt rakendust kasutada. Meeldis ka koodi käekiri/esteetilus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indrek Kõue D21&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Veebiteenuse arvustus ==&lt;br /&gt;
&lt;br /&gt;
Teenus on üsna põhjalikult ja korralikult tehtud. Kood on jaotatud ilusti klassidesse, klassid regioonidesse. &lt;br /&gt;
&lt;br /&gt;
Meetodite kirjeldamine on veidi puudulik, kuid koodi uurides saab kõigest aru.&lt;br /&gt;
&lt;br /&gt;
Meeldis, et silmas on peetud turvalisust ja kasutatud räsi soolamist.&lt;br /&gt;
&lt;br /&gt;
Wiki on sisukas ja korralikult kirjutatud.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Martin Lensment D21&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Klientrakenduse arvustus ==&lt;br /&gt;
&lt;br /&gt;
Esimese positiivse asjana võib kohe välja tuua selle, et wikis on olemas lahenduse source kood(enamus projektide puhul see puudub) ning selgitus, kuidas rakendus enda arvutis tööle läheb. Antud näpunäiteid järgides ei tekkinud mingeid probleeme ja sain rakenduse kiirelt tööle.&lt;br /&gt;
&lt;br /&gt;
Rakendus ise toimib korralikult, kõik kirjeldatud funktsioonid on olemas. Vaadates tagumisi otsingu tulemuste kommentaare ja siis vahetades otsingu parameetreid viskab küll mitte just kõige kasutajasõbralikuma veateate, kuid viga on vähemalt kinni püütud ja rakendus töötab edasi. Üks väike soovitus oleks seoses XAML-iga, Gridi sees võiks paigutada erinevad controlid (eelkõige textboxid) loogilisse järjekorda, et näiteks kui sisestan pikkuse ning siis tahan tabi vajutades järgmise textboxile minna, et siis läheks fookus kaalu textboxi peale, mitte kasutajanime peale, kuidas hetkel on.&lt;br /&gt;
&lt;br /&gt;
Administraatori poolel on kõik vajalik olemas: lumelaudade lisamine, kasutajate haldus ja statistika. Vaatamata lihtsalt välimusele on seal palju võimalusi realiseeritud. Nuriseda võiks antud rakenduse puhul välimuse kallal, oleks võinud natuke rohkem värve olla ja disaini, kuigi jah kena rakenduse disain polegi antud töö eesmärk, vaid funktsionaalselt toimiv rakendus. Oleks oodanud ka teist rakendust, kasvõi väiksema funktsionaalsusega, ainult lumelaudade vaatamine vms.&lt;br /&gt;
&lt;br /&gt;
Rääkides veel wikilehe kohta, siis meeldis lisaks üldisele ülesehitusele veel eriti logis välja toodud töö tegija, nii sai hea pildi, kuna keegi midagi projekti jaoks teinud või mida uut lisanud. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rauno Rüga, D21&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[User:Rruga|Rruga]] 17:28, 16 May 2011 (EEST)&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:Meeskond_Tool&amp;diff=31853</id>
		<title>Talk:Meeskond Tool</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:Meeskond_Tool&amp;diff=31853"/>
		<updated>2011-05-16T14:28:42Z</updated>

		<summary type="html">&lt;p&gt;Rruga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Väga hea on kohvikutele vahelduseks ka mingit muud xml-i lugeda. Selge ja arusaadav teenus, hea lühike ja ülevaatlik, treppida oleks saanud muidugi paremini. &lt;br /&gt;
&lt;br /&gt;
Täiesti mõtetu arvustus aga mis teha.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Priit Siimo D22&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===XML Arvustus===&lt;br /&gt;
Meeldib, et XML on väga lühike ja kompaktne. Võib-olla võiks lisada ka pildi lingi antud lumelaua juurde. XMLi treppimine on natuke paigast. Mõnes kohas on taane kaks tühikut ja mõnes kohas koguni terve tab.&lt;br /&gt;
&lt;br /&gt;
Oleks võinud XSLT-le ka veidi CSSi külge panna, et tabelile veidike silmailu anda.&lt;br /&gt;
&lt;br /&gt;
Meeskonna idee on väga hea ja wiki leht sisukas.&lt;br /&gt;
Ootan huviga projekti uuendusi.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Martin Lensment D21&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hea lühike xml, korralik wiki leht. Silma hakkasid xmli treppimisega tehtud vead.&lt;br /&gt;
Mis siin muud ikka kirjutada :P.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Allar Anijago D21&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Nagu ka eelnevalt kommenteeriti - tore et on valitud midagi peale kohviku. Kõik on ilus, tore, kena aga parameetrite osa oleks lahendanud teisiti. &lt;br /&gt;
&lt;br /&gt;
Näiteks:&lt;br /&gt;
&amp;lt;parameetrid&amp;gt;&lt;br /&gt;
  &amp;lt;parameeter&amp;gt;&lt;br /&gt;
     &amp;lt;tyyp&amp;gt;Pikkus&amp;lt;/tyyp&amp;gt;&lt;br /&gt;
     &amp;lt;v22rtus&amp;gt;2000cm&amp;lt;/tyyp&amp;gt;&lt;br /&gt;
  &amp;lt;/parameeter&amp;gt;&lt;br /&gt;
  &amp;lt;parameeter&amp;gt;&lt;br /&gt;
     &amp;lt;tyyp&amp;gt;Laius&amp;lt;/tyyp&amp;gt;&lt;br /&gt;
     &amp;lt;v22rtus&amp;gt;3000cm&amp;lt;/tyyp&amp;gt;&lt;br /&gt;
  &amp;lt;/parameeter&amp;gt;&lt;br /&gt;
&amp;lt;/parameetrid&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See võimaldaks kasutada pmts lõpmatuseni erinevaid parameetreid. Praegu tuleks uue parameetri käiku võtmisel XML ümber teha. Kui aga olete kindlad, et seda ei juhtu, siis pole vahet :)&lt;br /&gt;
&lt;br /&gt;
Kõik muu on hästi tehtud.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kert Suvi D22&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
XML fail on selge ja hästi loetav, piisavalt lihtne, samas katab funktsionaalsuse. Pildid võimalus võiks ka tegelikult olla küll. Treppimine on so-so, loetav siiski. Hästi tehtud, ei ole vaja asja mõttetult keerukaks ajada, tublid!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Taivo Türnpu D21&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Veebiteenuse arvustus ==&lt;br /&gt;
Üks vähestest projektidest, mis sai tähtajaks valmis ja on korraliku wiki lehega. &lt;br /&gt;
&lt;br /&gt;
Vaatasin muuhulgas Kasutaja klassi. Kasutaja paroolist krüptoräsi (&#039;&#039;hash&#039;&#039;) tegemine on turvalisuse huvides keerulisemalt teostatud (kasutatud on räsi soolamist ehk &#039;&#039;hash salting&#039;&#039;). Kuid registreeritud kasutajate hulgast juba olemasolevate kasutajanimede kontroll on liiga pikalt tehtud. Oleks võinud kasutada LINQ meetodit &#039;&#039;Any()&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
    if (! kont.Kasutajas.Any(user =&amp;gt; user.Nimi == userName)) // kui sellise nimega kasutajat pole&lt;br /&gt;
    {&lt;br /&gt;
        // siis sisesta kasutaja andmed baasi&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kood on jaotatud klassidesse ja klassid ilusti regioonidesse (&#039;&#039;#region ja #endregion&#039;&#039;). Kuid dokumentatsioon ei ole täielik. Enamus meetodeid on üldiselt kirjeldatud ja enamus meetodite parameetrid ja tagastused (ehk mida &#039;&#039;return&#039;&#039;-itakse) on lahti seletamata. &lt;br /&gt;
&lt;br /&gt;
Üldine mulje tööst on hea.&lt;br /&gt;
&lt;br /&gt;
[[User:Itelga|Ilmar Telga]] 21:25, 23 April 2011 (EEST)&lt;br /&gt;
&lt;br /&gt;
====Vastus Ilmarile====&lt;br /&gt;
&lt;br /&gt;
Aitäh kommentaari eest - võtame arvesse ja viime parandused sisse. Selline kasutajakontroll on kõvasti lihtsam tõepoolest ja dokumentatsioon saab ka parandatud.&lt;br /&gt;
&lt;br /&gt;
Miina Sikk&lt;br /&gt;
&lt;br /&gt;
== Veebiteenuse arvustus ==&lt;br /&gt;
&lt;br /&gt;
Veebiteenust on korralikult wiki lehel kirjeldatud, tegevuskava ka üsna täpselt paigas (kes millal ja mida tegi).&lt;br /&gt;
Kood on korralikult klassides ja arusaadav ning loetav. Tahaks juba lõpptulemust näha :D Tubli töö!&lt;br /&gt;
&lt;br /&gt;
Jaak Lehtsalu D22&lt;br /&gt;
&lt;br /&gt;
== Veebiteenuse arvustus ==&lt;br /&gt;
&lt;br /&gt;
Idee meeldib - alternatiivne ja praktiline.&lt;br /&gt;
Võiksite projektifaili koodi lisada, saaks kerge vaevaga projekti käima.&lt;br /&gt;
&lt;br /&gt;
Hetkel sai ainult uuritud koodi ja wiki poolt.&lt;br /&gt;
&lt;br /&gt;
Süsteem on hästi klassidesse jaotatud, kuid wikist on raske aru saada, mis meetodid on veebiteenuses kätte saadavad, näeb ainult klassikirjeldust.&lt;br /&gt;
&lt;br /&gt;
Muidu on wiki detailne ja logi on väga korralikult peetud.&lt;br /&gt;
&lt;br /&gt;
Koodi poolel on meetodite dokumenteerimine jäänud väheke poolikuks. Nagu Ilmar mainis, et return-id on enamjaolt puudu, mis vist on tingitud veatöötluse keerulisusest.&lt;br /&gt;
&lt;br /&gt;
Üldiselt on projekti kood loetav ning hallatav ja korralikult on kasutatud LINQ-t.&lt;br /&gt;
&lt;br /&gt;
Ootan huviga lõpptulemust.&lt;br /&gt;
&lt;br /&gt;
Mihkel Sokk D21&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Teenuse arvustus==&lt;br /&gt;
&lt;br /&gt;
Väga põhjalik wiki leht ja nagu näha osatakse oma aega ning meeskonnasisest tööd planeerida. Mõeldud on ka turvalisusele (salasõnade hashimine). Kasutatud erinevaid innovaatilisi lahendusi. Teenusel on ka täitsa praktiline vajadus olemas, kui inimene soovib endale lumelauda valida. Meetodid on asjalikud ja nende kaudu saab edukalt rakendust kasutada. Meeldis ka koodi käekiri/esteetilus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Indrek Kõue D21&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Veebiteenuse arvustus ==&lt;br /&gt;
&lt;br /&gt;
Teenus on üsna põhjalikult ja korralikult tehtud. Kood on jaotatud ilusti klassidesse, klassid regioonidesse. &lt;br /&gt;
&lt;br /&gt;
Meetodite kirjeldamine on veidi puudulik, kuid koodi uurides saab kõigest aru.&lt;br /&gt;
&lt;br /&gt;
Meeldis, et silmas on peetud turvalisust ja kasutatud räsi soolamist.&lt;br /&gt;
&lt;br /&gt;
Wiki on sisukas ja korralikult kirjutatud.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Martin Lensment D21&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Klientrakenduse arvustus ==&lt;br /&gt;
&lt;br /&gt;
Esimese positiivse asjana võib kohe välja tuua selle, et wikis on olemas lahenduse source kood(enamus projektide puhul see puudub) ning selgitus, kuidas rakendus enda arvutis tööle läheb. Antud näpunäiteid järgides ei tekkinud mingeid probleeme ja sain rakenduse kiirelt tööle.&lt;br /&gt;
&lt;br /&gt;
Rakendus ise toimib korralikult, kõik kirjeldatud funktsioonid on olemas. Vaadates tagumisi otsingu tulemuste kommentaare ja siis vahetades otsingu parameetreid viskab küll mitte just kõige kasutajasõbralikuma veateate, kuid viga on vähemalt kinni püütud ja rakendus töötab edasi. Üks väike soovitus oleks seoses XAML-iga, Gridi sees võiks paigutada erinevad controlid (eelkõige textboxid) loogilisse järjekorda, et näiteks kui sisestan pikkuse ning siis tahan tabi vajutades järgmise textboxile minna, et siis läheks fookus kaalu textboxi peale, mitte kasutajanime peale, kuidas hetkel on.&lt;br /&gt;
&lt;br /&gt;
Administraatori poolel on kõik vajalik olemas: lumelaudade lisamine, kasutajate haldus ja statistika. Vaatamata lihtsalt välimusele on seal palju võimalusi realiseeritud. Nuriseda võiks antud rakenduse puhul välimuse kallal, oleks võinud natuke rohkem värve olla ja disaini, kuigi jah kena rakenduse disain polegi antud töö eesmärk, vaid funktsionaalselt toimiv rakendus. Oleks oodanud ka teist rakendust, kasvõi väiksema funktsionaalsusega, ainult lumelaudade vaatamine vms.&lt;br /&gt;
&lt;br /&gt;
Rääkides veel wikilehe kohta, siis meeldis lisaks üldisele ülesehitusele veel eriti logis välja toodud töö tegija, nii sai hea pildi, kuna keegi midagi projekti jaoks teinud või mida uut lisanud. &lt;br /&gt;
&lt;br /&gt;
Rauno Rüga, D21&lt;br /&gt;
&lt;br /&gt;
[[User:Rruga|Rruga]] 17:28, 16 May 2011 (EEST)&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=31603</id>
		<title>Meeskond &quot;FoodWars&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=31603"/>
		<updated>2011-05-15T18:55:25Z</updated>

		<summary type="html">&lt;p&gt;Rruga: /* Klientrakendus I : CMS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Idee ==&lt;br /&gt;
Meie tiimil on plaanis teha internetipõhine söökla menüü süsteem (aluseks IT Kolledži kohvik, aga suunitlus selline, et kõik kohvikud/sööklad saaksid teha endale kasutajakonto ja hakata rakendust kasutama), kust saaks jälgida menüüd, mis sööke saab süüa, mis veel järgi on, kasutajatel on ka võimalus sööke hinnata (stiilis &amp;quot;meeldib&amp;quot;, &amp;quot;ei meeldi&amp;quot; nagu Facebook-is).&lt;br /&gt;
&lt;br /&gt;
Kohvikupidaja Teele soovid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* elektroonilisest menüüst asju kustutada, isegi siis kui asja peaks olema teoreetiliselt alles, aga tegelikult on asi otsas.&lt;br /&gt;
* elektrikatkestuse korral jääb menüü püsima. Ta peab teadma hindu mistahes olukorras.&lt;br /&gt;
* menüül näidatakse automaatselt ka ISIC kaardi omanike soodushinnad&lt;br /&gt;
* süsteem toetab ka poole portsjoni müümist.&lt;br /&gt;
&lt;br /&gt;
Linnar Viigi soovid/visioonid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* kõik oleks ka internetist kättesaadav, peale LCD ekraani, mis kajastab menüüd sööklas.&lt;br /&gt;
* aluseks facebook, kus siis söögid oleks nagu facebook-i alateemad.&lt;br /&gt;
* saab sööke hinnata, kommenteerida (täna oli väga maitsev praad).&lt;br /&gt;
* kasutajad saaks vaadata, mis menüüs on (ka järgmisel nädalal) ja mitu portsu veel alles on.&lt;br /&gt;
* kasutajad saaksid välja pakkuda menüüsid.&lt;br /&gt;
* erinevate söögikohtade kasutajad saaksid omavahel muljeid jagada.&lt;br /&gt;
* kuu aja aktiivsemad saavad prii lõuna.&lt;br /&gt;
* mingil ajal võib olla &amp;quot;happy hour&amp;quot; (enne sulgemist saab odavamalt).&lt;br /&gt;
* piiranguks on see, et toitu broneerida ei saa &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vaba tarkvara kasutamise võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Antud projekti puhul oleks võimalik kasutada [http://www.postgresql.org/ PostgreSQL] andmebaasi (vt. lisaks http://en.wikipedia.org/wiki/PostgreSQL ) Microsoft SQL Server&#039;i asemel. See võiks anda kasutajale võimaluse valida .NET ning [http://www.mono-project.com/ Mono] (vt. lisaks http://en.wikipedia.org/wiki/Mono_(software) ) platvormide vahel. Sel viisil oleks kliendil võimalik Microsoft&#039;i platvormi kõrval valida tõenäoliselt soodsam vaba tarkvara platvorm. Andmebaasi lõplik valik pole hetkel veel otsustatud.&lt;br /&gt;
&lt;br /&gt;
== Meeskond ja tööjaotus==&lt;br /&gt;
* Kristjan Stolin - projektijuht, suhtlus kliendiga, XML, wiki, teenuskihtide progemine, rollide halduse lehe progemine&lt;br /&gt;
* Ilmar Telga - XML, kliendiga suhtlus, wiki, teenuskihtide progemine, lõpprakenduste menüüd, login&lt;br /&gt;
* Rauno Rüga - XML, XSLT, andmebaasi loomine, wiki, mobiilirakendus, statistika&lt;br /&gt;
* Lauri Kermas - teenuskihtide ehitamine, wiki, rakenduse rollid ja kasutajad, login, kommenteerimise võimaluste progemine&lt;br /&gt;
&lt;br /&gt;
== XML Fail ==&lt;br /&gt;
=== XML ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Toidud&amp;gt;&lt;br /&gt;
  &amp;lt;Toit&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduNimetus&amp;gt;Viineri kaste&amp;lt;/ToiduNimetus&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduLiik&amp;gt;Praad&amp;lt;/ToiduLiik&amp;gt;&lt;br /&gt;
    &amp;lt;OlemasolevatYhikut&amp;gt;5&amp;lt;/OlemasolevatYhikut&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduKogus&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Poolportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;2011&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;1&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;9&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;15&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;07&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;23&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;        &lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.15&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;0&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;0&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;0&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;00&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;00&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;00&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Täisportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.80&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
    &amp;lt;/ToiduKogus&amp;gt;&lt;br /&gt;
    &amp;lt;Kommentaarid&amp;gt;&lt;br /&gt;
      &amp;lt;Kommentaar&amp;gt;&lt;br /&gt;
        &amp;lt;Saatja&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaNimi&amp;gt;Kristjan&amp;lt;/SaatjaNimi&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaRoll&amp;gt;Tudeng&amp;lt;/SaatjaRoll&amp;gt;&lt;br /&gt;
        &amp;lt;/Saatja&amp;gt;&lt;br /&gt;
        &amp;lt;Sisu&amp;gt;Minu lemmik toit ! Kui algebra tund ei hakkaks, sööks veel 5 portsjonit.&amp;lt;/Sisu&amp;gt;&lt;br /&gt;
      &amp;lt;/Kommentaar&amp;gt;&lt;br /&gt;
    &amp;lt;/Kommentaarid&amp;gt;&lt;br /&gt;
  &amp;lt;/Toit&amp;gt;&lt;br /&gt;
&amp;lt;/Toidud&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kommentaariks siis niipalju, et meie näide on ilma kohviku osata, selleks et näidet mitte liiga suureks ajada.&lt;br /&gt;
&lt;br /&gt;
Ka on meil moment puudu ID väljad, mis on igasugu andmebaasiga suhtlemiseks hädavajalikud, samas siin näidises palju juurde ei anna.&lt;br /&gt;
&lt;br /&gt;
Asja tegemisel avastasime, et põhiliseks arusaamatuse kohaks on toitude erinevad kogused (ehk siis pool portsjonit, suur / väike ja muud võrdlevad ühikud). Esimese võimalusena kaalusime teha lihtsalt täiesti eraldi toidud kõige kohta, stiilis &amp;quot;väike viineripraad&amp;quot; ja &amp;quot;suur viineripraad&amp;quot;. Kahjuks see variant ei kõlbaks eriti hästi, kuna need erinevad portsjonid kasutavad ikkagi samu materjale ja kui me peaks mingi süsteemiga näitama kui palju portsjoneid alles on. Sööklast näiteks pakuti et väike portsjon kasutab materjale kuskil 0.8 suure portsjoni ulatuses, ehk see suhtarv peaks olema kasutaja poolt (kohvikupidaja, restoraniomanik) ise sätitav. &lt;br /&gt;
&lt;br /&gt;
Tänu sellele sai meie süsteemi alustalaks siiski Toit, millel on oma Portsjonid siis erinevate hindade ja soodustustega. Moment pole meil ka Portsjoni XML osas toodud ära seost kogusega. (Kui palju ühe portsjoni lisamine/müümine peaks toidu üldkogust muutma).&lt;br /&gt;
&lt;br /&gt;
Kommenteerida saab meil moment toitu ennast, mitte eraldi portsjonit. Isegi kui kasutajad tahavad lisada kommentaare stiilis &amp;quot;See väike supp oli tõesti väga väike&amp;quot;, ei soovi nad seda ilmselt eraldi portsjoni alla panna. Tulevikus peaks kindlasti olema ka võimalus pigem kommenteerida üldisemalt (Kohvikut ennast, söögipaiku üldse), kui spetsiifilisemalt (Väikse prae kaste lisandi kohta).&lt;br /&gt;
&lt;br /&gt;
=== XML Schema ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Toidud&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Toit&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduNimetus&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;OlemasolevatYhikut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduKogus&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:choice maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;PortsjoniLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;Myygiaeg&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Aasta&amp;quot; type=&amp;quot;xs:unsignedShort&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Kuu&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Paev&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Tund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Minut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Sekund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;ToiduHind&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Eurohind&amp;quot; type=&amp;quot;xs:decimal&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Soodustus&amp;quot;&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseProtsent&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:choice&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Kommentaarid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Saatja&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaNimi&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaRoll&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Sisu&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
  &amp;lt;h2&amp;gt;Kohvikus müüdavad toidud&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr bgcolor=&amp;quot;#9acd32&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Veel alles&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Portsjon&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Müügiaeg&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustuse liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Kommentaar(id)&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;Toidud/Toit&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduNimetus&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduLiik&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;OlemasolevatYhikut&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;PortsjoniLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Paev&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Kuu&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Aasta&amp;quot; /&amp;gt; &amp;amp;nbsp;  &lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Tund&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Minut&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Sekund&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Eurohind&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseProtsent&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Kommentaarid/Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Sisu&amp;quot; /&amp;gt;&amp;amp;nbsp;(&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaRoll&amp;quot; /&amp;gt;&amp;amp;nbsp;&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaNimi&amp;quot; /&amp;gt;)&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XSLT poolt loodud tulemus on järgnev (lisasin veel kaks toitu XML faili, siin wiki lehel on ruumi kokkuhoiuks vaid 1 toit toitude listis):&lt;br /&gt;
[[File:Xslt.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arhitektuur ==&lt;br /&gt;
&lt;br /&gt;
Süsteem oli vahepeal plaanis ehitada kolmekihilise arhitektuuriga ([http://en.wikipedia.org/wiki/Multitier_architecture#Three-tier_architecture Three-tier architecture]). See peaks lihtsustama süsteemi haldamist ja laiendamist tulevikus. Aga kuna selle jaoks otsest vajadust polenud ja oleks vaid süsteemi keeruliseks ajanud, siis loobusime sellest.&lt;br /&gt;
&lt;br /&gt;
[[Image:three-tier.png|thumb|center|alt=Arhitektuuri skeem.|Arhitektuuri skeem.]]&lt;br /&gt;
&lt;br /&gt;
== Veebiteenus ==&lt;br /&gt;
===Andmemudel===&lt;br /&gt;
[[Image:KohvikuAndmemudel.jpg|thumb|right|alt=Kohviku projekti andmemudel|Andmemudel]]&lt;br /&gt;
Enne veebiteenuse meetodite kirjeldamist koostasime andmemudeli. Loodud andmemudeli põhjal lõime andmebaasi vajalike tabelite ja atribuutidega. Andmemudeli peal on rohelisega tähistatud tabelid, mis on oseselt seotud kohviku valdajaga ja mida WPF rakenduse jaoks kindlasti vaja on. Ülejäänud helesinised tabelid on vajalikud kasutajate võimaluste jaoks. Lisaks on andmemudelil kaks tabelit, mis pole teisega seotud, need on süsteemi administraatori jaoks, et oleks ülevaade, mis rakendused teenust enim kasutavad ning mis meetodeid kõige rohkem välja kutsutakse.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Teenuskihis olevad meetodid===&lt;br /&gt;
&lt;br /&gt;
====Kasutajatega seotud meetodid:====&lt;br /&gt;
*SaidiKasutajaLiik() - Tagastab antud kasutaja ID järgi kasutaja liigi nimetuse&lt;br /&gt;
*KustutaSaidiKasutaja() - Kustutab antud kasutaja ID järgi kasutaja tabelis Kasutaja&lt;br /&gt;
*AnnaKoikSaidiKasutajad() - Tagastab kõik kirjed tabelist Kasutaja&lt;br /&gt;
*AnnaKoikKohvikuKasutajad() - Tagastab antud kohviku ID järgi kõik kohviku kasutajad massiivina&lt;br /&gt;
*MuudaSaidiKasutajaLiik() - Muudab antud kasutaja ID järgi kasutaja liigi tabelis Kasutaja&lt;br /&gt;
*KoikLubatudSaidiKasutajaTyybid() - Tagastab andmebaasi kõik võimalikud kohviku kasutaja rollid (id-d ja nimed), muud andmed jäävad tühjaks&lt;br /&gt;
*KoikLubatudKohvikuRollid() - Tagastab andmebaasi kõik võimalikud site kasutaja rollid (id-d ja nimed), kohviku_id jääb tühjaks&lt;br /&gt;
*KasutajaKohvikuRollid() - Tagastab antud kasutaja ID järgi kõik kasutaja rollid kõikides kohvikutes&lt;br /&gt;
*MuudaKohvikuKasutajaRoll() - Muudab antud kasutaja ID ja kohviku ID järgi kasutaja rolli kohvikus, kui rolli pole, siis tekitatakse uus&lt;br /&gt;
*SaidiKasutajaLiikID() - Tagastab antud kasutaja ID järgi kasutaja liigi ID&lt;br /&gt;
*KohvikuKasutajaLiikID() - Tagastab antud kasutaja ID ja kohviku ID järgi kohviku kasutaja rolli ID&lt;br /&gt;
*AnnaKasutajaMeiliAadress() - Tagastab antud kasutaja nime alusel kasutaja meiliaadressi&lt;br /&gt;
*AnnaKasutajaIdJargi() - Tagastab kasutajanime kasutaja ID järgi&lt;br /&gt;
*AuthendiKasutaja() - Autendib kasutaja, õnnestumisel tagastab kasutaja ID, ebaõnnestumisel null &lt;br /&gt;
*RegistreeriKasutaja() - Registreerib kasutaja andmebaasi ja tagastab true kui kasutaja loomine õnnestus&lt;br /&gt;
&lt;br /&gt;
====Menüüga seotud meetodid====&lt;br /&gt;
*LisaArtikkelMenuuse() - Seob menüüartikli ja menüü&lt;br /&gt;
*LisaKohvikuleMenuu() - Seob menüü ja kohviku&lt;br /&gt;
*TagastabMenuuMuutujad() - Tagastab menüü järgi kas inimesel oleks õigust seda muuta&lt;br /&gt;
*KustutaMenuuJaKohvikuSeos() - Kustutab menüü ja kohviku seose&lt;br /&gt;
*LisaUusMenuu() - Teeb uue menüü, seob selle kohvikuga, kui kohviku ID on parameetrina kaasa antud&lt;br /&gt;
*MenuuKohvikuIdJargi() - Tagastab kohviku ID järgi kohviku tänaste või mitte tänaste menüüde ID-de massiivi&lt;br /&gt;
*LisaMenuuArtikkelMenuuse() - Sisestab antud müügiartikli menüüsse, mille ID on menyy_id&lt;br /&gt;
*KustutaMenuuArtikkel() - Kustutab müügiartikli ID ja menüü ID järgi müügiartikli menüüst&lt;br /&gt;
*TagastaMenuuArtiklid() - Tagastab menüü ID järgi menüüs olevad müügiartiklid&lt;br /&gt;
*VahetaMenuuArtiklit() - Muudab antud müügiartikli tabelis Myygiartikkel&lt;br /&gt;
*MenuuNimetus() - Tagastab menüü ID järgi menüü nimetuse&lt;br /&gt;
*AnnaMuugiartiklidMidaMenuusPole() - Tagastab müügiartiklid, mis pole veel menüüs, kus on juba müügiartiklid, mille IDd on antud massiivis&lt;br /&gt;
*AnnaMenuuNimed() - Tagastab kõigi menüüde nimetused tabelis Menyy&lt;br /&gt;
&lt;br /&gt;
====Kohvikutest üldiselt====&lt;br /&gt;
*KohvikuteNimed() - Tagastab kõigi kohvikute nimed massiivina&lt;br /&gt;
*KohvikuNimiIdJargi() - Tagastab antud kohviku ID järgi kohviku nime&lt;br /&gt;
*AnnaKoikOmanikuKohvikud() - Tagastab antud omaniku ID järgi kõik omaniku kohvikute ID-d massiivina&lt;br /&gt;
*Kohvikud() - Tagastab kõik kohvikute kirjed tabelist Kohvik&lt;br /&gt;
*KohvikuteArv() - Tagastab kõigi kohvikute arvu&lt;br /&gt;
*AnnaKaubad() - Tagastab kõik kaubad tabelist Kaup&lt;br /&gt;
*LisaKaup() - Lisab kauba kaupade nimekirja&lt;br /&gt;
*LisaKohvik() - Uue kohviku lisamine&lt;br /&gt;
&lt;br /&gt;
====Kommentaaridega seotud meetodid:====&lt;br /&gt;
*KohvikuKommentaarideArv() - Kohviku kommentaaride arv&lt;br /&gt;
*AnnaKohvikuKommentaarid() - Tagastab kommentaarid lehtede kaupa&lt;br /&gt;
*AnnaKohvikuKommentaar() - Tagastab üksiku kommentaari&lt;br /&gt;
*AnnaKohvikuKommentaarideHinded() - Tagastab kommentaaride jaoks võimalikud hinded koos kirjeldustega&lt;br /&gt;
*LisaKohvikuKommentaar() - Lisab kohviku kommentaari&lt;br /&gt;
*MuudaKohvikuKommentaar() - Muudab kohviku kommentaari&lt;br /&gt;
*MuudaKohvikuKommentaariOlek() - Muudab kohviku kommentaari oleku&lt;br /&gt;
*MuudaKohvikuKommentaariPeidetus() - Muudab kohviku kommentaari peidetust&lt;br /&gt;
&lt;br /&gt;
====Statistikaga seotud meetodid:====&lt;br /&gt;
*StatistikaRakendusteKohtaTana() - Tagastab rakenduse nimed ja nende vastu tehtud päringud tänasel päeval&lt;br /&gt;
*StatistikaRakendusteKohtaViimaneNadal() - Tagastab rakenduse nimed ja nende vastu tehtud päringud viimase nädala jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaSellelKuul() - Tagastab rakenduse nimed ja nende vastu tehtud päringud selle kuu jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaKokku() - Tagastab rakenduse nimed ja nende vastu tehtud päringud kogu aja vältel&lt;br /&gt;
*StatistikaMeetoditeKohtaTana() - Meetod leiab tänase päeva jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaViimaneNadal() - Meetod leiab viimase nädala jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaSellelKuul() - Meetod leiab kuu jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaKokku() - Meetod leiab kogu aja vältel kasutatud meetodid ja paringute arvu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebiteenuse projekti (WCF + andmebaas) saab siit: http://enos.itcollege.ee/~rruga/VRII/Teenusekiht.zip&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : CMS ==&lt;br /&gt;
&lt;br /&gt;
Meie loodud veebirakenduses on realiseeritud järgnevad CMS seotud funktsionaalsused :&lt;br /&gt;
*Kõikide kohvikute lehed on eraldi aadressiga, mis võimaldab eri kohvikud bookmarkida ja facebooki like anda. See on saavutatud tänu ?kohvik=1 aadressiribal, kus parameeteri kohvik number identifitseerib kohviku.&lt;br /&gt;
*Adminni õigustega kasutajal on võimalik lisada uus kohvikuid andembaasi&lt;br /&gt;
*Kohviku omanik saab lisada menüüd, muuta seda ja kustutada&lt;br /&gt;
*Adminnid saavad kasutajaid hallata, määrates nendele rolle, mis omakorda tagab teatud õigused&lt;br /&gt;
*Kohviku omanikud saavad  oma kohviku kasutajaid hallata, määrates neile näiteks müüja või kliendi rolli.&lt;br /&gt;
*Kogu menüü põhineb sitemapil, mille alus on kirjeldatud eraldi sitemap failis, lisaks sellel lisatakse sinna dünaamiselt kohvikud juurde ( mis andmebaasis olemas on )&lt;br /&gt;
*Kohviku omanik saab kohviku lehte isikupärastada tänu richteksti osale, näiteks lisada html osi.&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Veebirakendus ==&lt;br /&gt;
&lt;br /&gt;
Veebiteenust kasutavaks veebirakenduseks on ASP.NET rakendus. &lt;br /&gt;
&lt;br /&gt;
* Esilehel saab otsida kohvikuid või minna kohe huvipakkuva kohviku menüü lehele.&lt;br /&gt;
* Kohviku menüü lehel on näha tänased ja teised menüüd, kohviku lahtioleku aeg. Kui panna veebirakendus internetti, siis on võimalus Facebook-i kaudu kohviku fänniks hakata. Kommenteerimise ja soodustuste osa on veel pooleli.&lt;br /&gt;
* Sisse loginud kohviku omanik saab ka kohviku menüüsid muuta, lisada, kustutada. &lt;br /&gt;
* Kasutajate lehel saab sisse loginud kohviku omanik hallata kohviku kasutajaid.&lt;br /&gt;
* Statistika lehel saab vaadata statistikat teenust kasutanud rakenduste ja kasutatud meetodite kohta. Näeb nii tänase päeva, viimase nädala, selle kuu ja aasta statistikat&lt;br /&gt;
* Kohviku lisamise lehel saab aga admini õigustege kasutaja lisada uue kohviku.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:KohvikuMenuEdit.JPG|800px|Kohviku menüü muutmise leht. ITK kohviku menüüde muutmiseks tuleb logida sisse kasutajaga Ilmar parooliga &amp;quot;ilmar&amp;quot;.]]&lt;br /&gt;
&lt;br /&gt;
Kohviku menüü muutmise leht. ITK kohviku menüüde muutmiseks tuleb logida sisse kasutajaga Ilmar parooliga &amp;quot;ilmar&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebirakenduse koos uuendatud teenuskihiga saab siit: http://enos.itcollege.ee/~rruga/VRII/KohvikuProjekt.rar&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Kommentaaride komponent ==&lt;br /&gt;
&lt;br /&gt;
Kommentaaride sisestamiseks ja haldamiseks on loodud iseseisev ning enam jaolt taas kasutatav kommentaaride komponent. Komponent on hetkel realiseeritud ASP&#039;i User Control&#039;ina ja mitte Custom Control&#039;ina, mis vähendab veidi selle üleviidavust teistesse projektidesse. Siiski on selle muutmine ASP&#039;i Custom Control&#039;iks mõningate muudatustega võimalik.&lt;br /&gt;
&lt;br /&gt;
[[Image:comskeem.png|thumb|center|alt=Kommentaari komponendi skeem.|Kommentaari komponendi skeem.]]&lt;br /&gt;
&lt;br /&gt;
Kommentaaride komponent koosneb kahest osast, mis lisatakse lehele, millel vajatakse kommenteerimise funktsionaalsust:&lt;br /&gt;
sisendkontroll - see komponent on vajalik uute kommentaaride sisestamiseks;&lt;br /&gt;
väljundkontroll - antud komponent esitab olemasolevad kommentaarid hulga kaupa.&lt;br /&gt;
&lt;br /&gt;
Mõlemad kommentaari komponendi osad on kasutatavad ka iseseisvalt, kui see peaks vajalik olema. Kommentaari andmeid esitavad need komponendid läbi iseseisvate kommentaarikontrollide, mida võib ühel kontrollil olla ka mitu. Kommentaarikontrollid ei ole võimelised iseseisvalt kommentaaride andmeid hankima ning seepärast tuleb need täita väljapoolt, kas sisend- või väljundkontrollide poolt. Samuti tuleb uue kommentaari loomine läbi viia kommentaarikontrolli väliselt - seda teostabki sisendikontroll. Samas kogu ülejäänud kommentaari haldus, nagu olemasolevate kommentaaride muutmine ning uute olekute seadmine toimub üksnes läbi iseseisvate kommentaarikontrollide, mis sisaldavad täies mahus vastavat funktsionaalsust.&lt;br /&gt;
&lt;br /&gt;
Kommentaaride komponendi kõik kolm osa (sisendkontroll, väljundkontroll ja kommentaarikontroll) suhtlevad teenusekihiga läbi vastava ligipääsuobjekti. Ligipääsuobjekt tegeleb ühenduse ning sellega seonduvate võimalike vigade haldamisega. Kokkuvõtlikult loob see vajaduse korral uue ühenduse, sooritab päringud ning lõpuks sulgeb ühenduse, kui vastav korraldus antakse.&lt;br /&gt;
&lt;br /&gt;
Teenuses on vastavad protseduurid, mida teenusega suhtlemisel välja kutsutakse ning mis teostavad reaalseid muudatusi andmebaasis, seda muidugi vastavalt reeglitele.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus II : Mobiilirakendus ==&lt;br /&gt;
&lt;br /&gt;
Teine rakendus, mis veebiteenuse peale ehitatud sai, oli Windows Phone 7 rakendus. Lühidalt kirjeldades saab peale rakenduse käivitamist näha listi kõikidest olemasolevatest kohvikutest. Kui vajutad mingi kohviku nime peale, avaneb täpsem kirjeldus kohviku kohta, kust näeb lisaks kohviku nimele ka lühikest kirjeldust, tänast lahtiolekuaega ja kohviku aadressit. Samuti on kohviku kirjelduse lehel viide kohviku tänasele menüüle ja kommenteerimisele. Vajutades vaata menüüd nuppu avaneb vaade täna müügis olevatest müügiartiklitest ja nende hinnast, vajutades aga kommenteeri kohvikut nupule avaneb võimalus lisada kohviku kohta kommentaar.&lt;br /&gt;
&lt;br /&gt;
Kokkuvõttev pilt realiseeritud võimalustest:&lt;br /&gt;
&lt;br /&gt;
[[Image:WP7 rakendus.jpg|alt=WP7 rakendus.|WP7 rakenduse võimalused.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mobiilirakenduse saab alla tõmmata siit: http://enos.itcollege.ee/~rruga/VRII/Mobiilirakendus.rar&lt;br /&gt;
&lt;br /&gt;
NB! Et mobiilirakendust proovida ja mõistliku tulemust saada peab teil olema kõige uuem versioon meie projekti teenuskihist ning teenuskiht peab töötama.&lt;br /&gt;
&lt;br /&gt;
== Meeskonna kokkuvõttev aruanne ==&lt;br /&gt;
&lt;br /&gt;
== Logi ==&lt;br /&gt;
&lt;br /&gt;
=== 8. Mai ===&lt;br /&gt;
Veebirakendus esitluseks valmis. Täiendatud vikilehte.&lt;br /&gt;
&lt;br /&gt;
=== 7. Mai ===&lt;br /&gt;
Mobiilirakendus sai valmis ja selle kohta uuendatud vikilehte.&lt;br /&gt;
&lt;br /&gt;
=== 17. aprill ===&lt;br /&gt;
Wikilehe täiendamine andmemudeli ja veebiteenuse meetodite kirjeldusega.&lt;br /&gt;
&lt;br /&gt;
=== 9. aprill ===&lt;br /&gt;
Tegime rollide halduse, münüüde muutmise vormi. Meili saatmine registreerimisel. Toimus andmebaasi andmemudeli väike muutus. &lt;br /&gt;
&lt;br /&gt;
=== 30. märts ===&lt;br /&gt;
Tehtud on kohviku menüü ja kohviku kommenteerimise leht.&lt;br /&gt;
&lt;br /&gt;
=== 26. märts ===&lt;br /&gt;
Tehtud on esimesed veebiteenuse meetodid ja veebirakendusele kasutajate registreerimine.&lt;br /&gt;
&lt;br /&gt;
=== 10. märts ===&lt;br /&gt;
Väikese häki abil õnnestus kohviku kassa arvutis saada tööle üks Forms-i proovirakendus.&lt;br /&gt;
&lt;br /&gt;
=== 8. märts ===&lt;br /&gt;
Kuna kassa-aparaadis on operatsioonisüsteemiks Windows XP ja raud on 1.99 GHz, 256 RAM siis peaks saama&lt;br /&gt;
prototüübiks teha sinna peale rakenduse, mille ülesandeks menüüga tegelemine. &lt;br /&gt;
&lt;br /&gt;
=== 7. märts ===&lt;br /&gt;
Linnar Viik andis meile järgmist nõu: tuleb eristada kahte asja - see, mis peab valmis saama (&#039;&#039;must&#039;&#039;) ja see, mis oleks tore (&#039;&#039;nice to have&#039;&#039;). Valmis peab saama menüüga ekraan seinal (esialgu kasutajale prototüübi näitamiseks kasvõi näiteks PowerPoint-i abil tehtud). Alles siis kui on kasutajalt positiivne tagasiside saadud, võib edasi minna reaalse tarkvaralahenduse loomisega. Kui ka see on valmis ja kasutaja sellega rahul võib juurde mõelda &#039;&#039;nice to have&#039;&#039; asju (näiteks eelinfo järgmise päeva menüü kohta, üliõpilasesinduse sõnumite riba ja muid asju).&lt;br /&gt;
&lt;br /&gt;
Saime teada, et kui tahame, et meie loodav süsteem suhtleks IT Kohviku kassasüsteemiga, siis tuleb selle süsteemi tootjatega ühendust võtta ja nendega konsulteerida.&lt;br /&gt;
&lt;br /&gt;
=== 19.Veebruar ===&lt;br /&gt;
*Valmis XSLT fail.&lt;br /&gt;
&lt;br /&gt;
=== 9.Veebruar ===&lt;br /&gt;
* Esmane versioon XML ja XML Schemast olemas&lt;br /&gt;
* Tekkis küsimus kas XSLT faili tuleb käsitsi tekitada või automaatselt.&lt;br /&gt;
* Küsimus oli ka kas lahendasime portsjoni asja mõistlikult või oleks mõni teine lähenemine parem olnud.&lt;br /&gt;
* Küsimus, kas XML fail on liiga üle pingutatud või sobiva keerukusega&lt;br /&gt;
&lt;br /&gt;
=== 7. Veebruar ===&lt;br /&gt;
* Võtsime õppejõu poolt pakutud ideest kohe kinni, sest me eelistame teha praktilist asja, mida saab kasutada ja mille kasutamist saame ka iga päev jälgida. &lt;br /&gt;
* Esimese asjana otsustasime välja uurida mida meie &amp;quot;kliendid&amp;quot; (süsteemi tellijad) meilt ootavad. (Soovid idee punkti all)&lt;br /&gt;
* Valminud on lihtne teenusest ja klientidest koosnev süsteemi testmudel.&lt;br /&gt;
&lt;br /&gt;
== Kasulikud lingid ==&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCF_auto_client_proxies.aspx&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/ms178472.aspx&lt;br /&gt;
&lt;br /&gt;
http://support.microsoft.com/kb/305141&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/aa702565.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/scottgu/archive/2007/04/06/tip-trick-enabling-ssl-on-iis7-using-self-signed-certificates.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/scottgu/archive/2010/06/28/introducing-iis-express.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/scottgu/archive/2011/01/03/vs-2010-sp1-beta-and-iis-developer-express.aspx&lt;br /&gt;
&lt;br /&gt;
http://blogs.msdn.com/b/webdevtools/archive/2011/03/14/enabling-iis-express-support-in-vs-2010-sp1.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/gunnarpeipman/archive/2010/12/11/visual-studio-2010-sp1-beta-supports-iis-express.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.dotnetcurry.com/ShowArticle.aspx?ID=487&lt;br /&gt;
&lt;br /&gt;
http://davidkiff.co.uk/post/2009/09/22/Setting-up-SSL-for-WCF-in-Development.aspx&lt;br /&gt;
&lt;br /&gt;
http://www.request-response.com/blog/CommentView,guid,e9bb929b-d0b4-4626-b302-1d2715fc344a.aspx&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Võrgurakendused II: hajussüsteemide ehitamine]]&lt;br /&gt;
[[Category: Veebirakenduste loomine ASP.NET abil]]&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=30715</id>
		<title>Meeskond &quot;FoodWars&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=30715"/>
		<updated>2011-05-08T19:09:46Z</updated>

		<summary type="html">&lt;p&gt;Rruga: /* Logi */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Idee ==&lt;br /&gt;
Meie tiimil on plaanis teha internetipõhine söökla menüü süsteem (aluseks IT Kolledži kohvik, aga suunitlus selline, et kõik kohvikud/sööklad saaksid teha endale kasutajakonto ja hakata rakendust kasutama), kust saaks jälgida menüüd, mis sööke saab süüa, mis veel järgi on, kasutajatel on ka võimalus sööke hinnata (stiilis &amp;quot;meeldib&amp;quot;, &amp;quot;ei meeldi&amp;quot; nagu Facebook-is).&lt;br /&gt;
&lt;br /&gt;
Kohvikupidaja Teele soovid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* elektroonilisest menüüst asju kustutada, isegi siis kui asja peaks olema teoreetiliselt alles, aga tegelikult on asi otsas.&lt;br /&gt;
* elektrikatkestuse korral jääb menüü püsima. Ta peab teadma hindu mistahes olukorras.&lt;br /&gt;
* menüül näidatakse automaatselt ka ISIC kaardi omanike soodushinnad&lt;br /&gt;
* süsteem toetab ka poole portsjoni müümist.&lt;br /&gt;
&lt;br /&gt;
Linnar Viigi soovid/visioonid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* kõik oleks ka internetist kättesaadav, peale LCD ekraani, mis kajastab menüüd sööklas.&lt;br /&gt;
* aluseks facebook, kus siis söögid oleks nagu facebook-i alateemad.&lt;br /&gt;
* saab sööke hinnata, kommenteerida (täna oli väga maitsev praad).&lt;br /&gt;
* kasutajad saaks vaadata, mis menüüs on (ka järgmisel nädalal) ja mitu portsu veel alles on.&lt;br /&gt;
* kasutajad saaksid välja pakkuda menüüsid.&lt;br /&gt;
* erinevate söögikohtade kasutajad saaksid omavahel muljeid jagada.&lt;br /&gt;
* kuu aja aktiivsemad saavad prii lõuna.&lt;br /&gt;
* mingil ajal võib olla &amp;quot;happy hour&amp;quot; (enne sulgemist saab odavamalt).&lt;br /&gt;
* piiranguks on see, et toitu broneerida ei saa &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vaba tarkvara kasutamise võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Antud projekti puhul oleks võimalik kasutada [http://www.postgresql.org/ PostgreSQL] andmebaasi (vt. lisaks http://en.wikipedia.org/wiki/PostgreSQL ) Microsoft SQL Server&#039;i asemel. See võiks anda kasutajale võimaluse valida .NET ning [http://www.mono-project.com/ Mono] (vt. lisaks http://en.wikipedia.org/wiki/Mono_(software) ) platvormide vahel. Sel viisil oleks kliendil võimalik Microsoft&#039;i platvormi kõrval valida tõenäoliselt soodsam vaba tarkvara platvorm. Andmebaasi lõplik valik pole hetkel veel otsustatud.&lt;br /&gt;
&lt;br /&gt;
== Meeskond ja tööjaotus==&lt;br /&gt;
* Kristjan Stolin - projektijuht, suhtlus kliendiga, XML, wiki, teenuskihtide progemine, rollide halduse lehe progemine&lt;br /&gt;
* Ilmar Telga - XML, kliendiga suhtlus, wiki, teenuskihtide progemine, lõpprakenduste menüüd, login&lt;br /&gt;
* Rauno Rüga - XML, XSLT, andmebaasi loomine, wiki, mobiilirakendus, statistika&lt;br /&gt;
* Lauri Kermas - teenuskihtide ehitamine, wiki, login, kommenteerimise võimaluste progemine&lt;br /&gt;
&lt;br /&gt;
== XML Fail ==&lt;br /&gt;
=== XML ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Toidud&amp;gt;&lt;br /&gt;
  &amp;lt;Toit&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduNimetus&amp;gt;Viineri kaste&amp;lt;/ToiduNimetus&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduLiik&amp;gt;Praad&amp;lt;/ToiduLiik&amp;gt;&lt;br /&gt;
    &amp;lt;OlemasolevatYhikut&amp;gt;5&amp;lt;/OlemasolevatYhikut&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduKogus&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Poolportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;2011&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;1&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;9&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;15&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;07&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;23&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;        &lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.15&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;0&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;0&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;0&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;00&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;00&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;00&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Täisportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.80&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
    &amp;lt;/ToiduKogus&amp;gt;&lt;br /&gt;
    &amp;lt;Kommentaarid&amp;gt;&lt;br /&gt;
      &amp;lt;Kommentaar&amp;gt;&lt;br /&gt;
        &amp;lt;Saatja&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaNimi&amp;gt;Kristjan&amp;lt;/SaatjaNimi&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaRoll&amp;gt;Tudeng&amp;lt;/SaatjaRoll&amp;gt;&lt;br /&gt;
        &amp;lt;/Saatja&amp;gt;&lt;br /&gt;
        &amp;lt;Sisu&amp;gt;Minu lemmik toit ! Kui algebra tund ei hakkaks, sööks veel 5 portsjonit.&amp;lt;/Sisu&amp;gt;&lt;br /&gt;
      &amp;lt;/Kommentaar&amp;gt;&lt;br /&gt;
    &amp;lt;/Kommentaarid&amp;gt;&lt;br /&gt;
  &amp;lt;/Toit&amp;gt;&lt;br /&gt;
&amp;lt;/Toidud&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kommentaariks siis niipalju, et meie näide on ilma kohviku osata, selleks et näidet mitte liiga suureks ajada.&lt;br /&gt;
&lt;br /&gt;
Ka on meil moment puudu ID väljad, mis on igasugu andmebaasiga suhtlemiseks hädavajalikud, samas siin näidises palju juurde ei anna.&lt;br /&gt;
&lt;br /&gt;
Asja tegemisel avastasime, et põhiliseks arusaamatuse kohaks on toitude erinevad kogused (ehk siis pool portsjonit, suur / väike ja muud võrdlevad ühikud). Esimese võimalusena kaalusime teha lihtsalt täiesti eraldi toidud kõige kohta, stiilis &amp;quot;väike viineripraad&amp;quot; ja &amp;quot;suur viineripraad&amp;quot;. Kahjuks see variant ei kõlbaks eriti hästi, kuna need erinevad portsjonid kasutavad ikkagi samu materjale ja kui me peaks mingi süsteemiga näitama kui palju portsjoneid alles on. Sööklast näiteks pakuti et väike portsjon kasutab materjale kuskil 0.8 suure portsjoni ulatuses, ehk see suhtarv peaks olema kasutaja poolt (kohvikupidaja, restoraniomanik) ise sätitav. &lt;br /&gt;
&lt;br /&gt;
Tänu sellele sai meie süsteemi alustalaks siiski Toit, millel on oma Portsjonid siis erinevate hindade ja soodustustega. Moment pole meil ka Portsjoni XML osas toodud ära seost kogusega. (Kui palju ühe portsjoni lisamine/müümine peaks toidu üldkogust muutma).&lt;br /&gt;
&lt;br /&gt;
Kommenteerida saab meil moment toitu ennast, mitte eraldi portsjonit. Isegi kui kasutajad tahavad lisada kommentaare stiilis &amp;quot;See väike supp oli tõesti väga väike&amp;quot;, ei soovi nad seda ilmselt eraldi portsjoni alla panna. Tulevikus peaks kindlasti olema ka võimalus pigem kommenteerida üldisemalt (Kohvikut ennast, söögipaiku üldse), kui spetsiifilisemalt (Väikse prae kaste lisandi kohta).&lt;br /&gt;
&lt;br /&gt;
=== XML Schema ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Toidud&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Toit&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduNimetus&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;OlemasolevatYhikut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduKogus&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:choice maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;PortsjoniLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;Myygiaeg&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Aasta&amp;quot; type=&amp;quot;xs:unsignedShort&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Kuu&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Paev&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Tund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Minut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Sekund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;ToiduHind&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Eurohind&amp;quot; type=&amp;quot;xs:decimal&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Soodustus&amp;quot;&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseProtsent&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:choice&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Kommentaarid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Saatja&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaNimi&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaRoll&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Sisu&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
  &amp;lt;h2&amp;gt;Kohvikus müüdavad toidud&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr bgcolor=&amp;quot;#9acd32&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Veel alles&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Portsjon&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Müügiaeg&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustuse liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Kommentaar(id)&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;Toidud/Toit&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduNimetus&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduLiik&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;OlemasolevatYhikut&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;PortsjoniLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Paev&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Kuu&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Aasta&amp;quot; /&amp;gt; &amp;amp;nbsp;  &lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Tund&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Minut&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Sekund&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Eurohind&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseProtsent&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Kommentaarid/Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Sisu&amp;quot; /&amp;gt;&amp;amp;nbsp;(&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaRoll&amp;quot; /&amp;gt;&amp;amp;nbsp;&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaNimi&amp;quot; /&amp;gt;)&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XSLT poolt loodud tulemus on järgnev (lisasin veel kaks toitu XML faili, siin wiki lehel on ruumi kokkuhoiuks vaid 1 toit toitude listis):&lt;br /&gt;
[[File:Xslt.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arhitektuur ==&lt;br /&gt;
&lt;br /&gt;
Süsteem oli vahepeal plaanis ehitada kolmekihilise arhitektuuriga ([http://en.wikipedia.org/wiki/Multitier_architecture#Three-tier_architecture Three-tier architecture]). See peaks lihtsustama süsteemi haldamist ja laiendamist tulevikus. Aga kuna selle jaoks otsest vajadust polenud ja oleks vaid süsteemi keeruliseks ajanud, siis loobusime sellest.&lt;br /&gt;
&lt;br /&gt;
[[Image:three-tier.png|thumb|center|alt=Arhitektuuri skeem.|Arhitektuuri skeem.]]&lt;br /&gt;
&lt;br /&gt;
== Veebiteenus ==&lt;br /&gt;
===Andmemudel===&lt;br /&gt;
[[Image:KohvikuAndmemudel.jpg|thumb|right|alt=Kohviku projekti andmemudel|Andmemudel]]&lt;br /&gt;
Enne veebiteenuse meetodite kirjeldamist koostasime andmemudeli. Loodud andmemudeli põhjal lõime andmebaasi vajalike tabelite ja atribuutidega. Andmemudeli peal on rohelisega tähistatud tabelid, mis on oseselt seotud kohviku valdajaga ja mida WPF rakenduse jaoks kindlasti vaja on. Ülejäänud helesinised tabelid on vajalikud kasutajate võimaluste jaoks. Lisaks on andmemudelil kaks tabelit, mis pole teisega seotud, need on süsteemi administraatori jaoks, et oleks ülevaade, mis rakendused teenust enim kasutavad ning mis meetodeid kõige rohkem välja kutsutakse.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Teenuskihis olevad meetodid===&lt;br /&gt;
&lt;br /&gt;
====Kasutajatega seotud meetodid:====&lt;br /&gt;
*SaidiKasutajaLiik() - Tagastab antud kasutaja ID järgi kasutaja liigi nimetuse&lt;br /&gt;
*KustutaSaidiKasutaja() - Kustutab antud kasutaja ID järgi kasutaja tabelis Kasutaja&lt;br /&gt;
*AnnaKoikSaidiKasutajad() - Tagastab kõik kirjed tabelist Kasutaja&lt;br /&gt;
*AnnaKoikKohvikuKasutajad() - Tagastab antud kohviku ID järgi kõik kohviku kasutajad massiivina&lt;br /&gt;
*MuudaSaidiKasutajaLiik() - Muudab antud kasutaja ID järgi kasutaja liigi tabelis Kasutaja&lt;br /&gt;
*KoikLubatudSaidiKasutajaTyybid() - Tagastab andmebaasi kõik võimalikud kohviku kasutaja rollid (id-d ja nimed), muud andmed jäävad tühjaks&lt;br /&gt;
*KoikLubatudKohvikuRollid() - Tagastab andmebaasi kõik võimalikud site kasutaja rollid (id-d ja nimed), kohviku_id jääb tühjaks&lt;br /&gt;
*KasutajaKohvikuRollid() - Tagastab antud kasutaja ID järgi kõik kasutaja rollid kõikides kohvikutes&lt;br /&gt;
*MuudaKohvikuKasutajaRoll() - Muudab antud kasutaja ID ja kohviku ID järgi kasutaja rolli kohvikus, kui rolli pole, siis tekitatakse uus&lt;br /&gt;
*SaidiKasutajaLiikID() - Tagastab antud kasutaja ID järgi kasutaja liigi ID&lt;br /&gt;
*KohvikuKasutajaLiikID() - Tagastab antud kasutaja ID ja kohviku ID järgi kohviku kasutaja rolli ID&lt;br /&gt;
*AnnaKasutajaMeiliAadress() - Tagastab antud kasutaja nime alusel kasutaja meiliaadressi&lt;br /&gt;
*AnnaKasutajaIdJargi() - Tagastab kasutajanime kasutaja ID järgi&lt;br /&gt;
*AuthendiKasutaja() - Autendib kasutaja, õnnestumisel tagastab kasutaja ID, ebaõnnestumisel null &lt;br /&gt;
*RegistreeriKasutaja() - Registreerib kasutaja andmebaasi ja tagastab true kui kasutaja loomine õnnestus&lt;br /&gt;
&lt;br /&gt;
====Menüüga seotud meetodid====&lt;br /&gt;
*LisaArtikkelMenuuse() - Seob menüüartikli ja menüü&lt;br /&gt;
*LisaKohvikuleMenuu() - Seob menüü ja kohviku&lt;br /&gt;
*TagastabMenuuMuutujad() - Tagastab menüü järgi kas inimesel oleks õigust seda muuta&lt;br /&gt;
*KustutaMenuuJaKohvikuSeos() - Kustutab menüü ja kohviku seose&lt;br /&gt;
*LisaUusMenuu() - Teeb uue menüü, seob selle kohvikuga, kui kohviku ID on parameetrina kaasa antud&lt;br /&gt;
*MenuuKohvikuIdJargi() - Tagastab kohviku ID järgi kohviku tänaste või mitte tänaste menüüde ID-de massiivi&lt;br /&gt;
*LisaMenuuArtikkelMenuuse() - Sisestab antud müügiartikli menüüsse, mille ID on menyy_id&lt;br /&gt;
*KustutaMenuuArtikkel() - Kustutab müügiartikli ID ja menüü ID järgi müügiartikli menüüst&lt;br /&gt;
*TagastaMenuuArtiklid() - Tagastab menüü ID järgi menüüs olevad müügiartiklid&lt;br /&gt;
*VahetaMenuuArtiklit() - Muudab antud müügiartikli tabelis Myygiartikkel&lt;br /&gt;
*MenuuNimetus() - Tagastab menüü ID järgi menüü nimetuse&lt;br /&gt;
*AnnaMuugiartiklidMidaMenuusPole() - Tagastab müügiartiklid, mis pole veel menüüs, kus on juba müügiartiklid, mille IDd on antud massiivis&lt;br /&gt;
*AnnaMenuuNimed() - Tagastab kõigi menüüde nimetused tabelis Menyy&lt;br /&gt;
&lt;br /&gt;
====Kohvikutest üldiselt====&lt;br /&gt;
*KohvikuteNimed() - Tagastab kõigi kohvikute nimed massiivina&lt;br /&gt;
*KohvikuNimiIdJargi() - Tagastab antud kohviku ID järgi kohviku nime&lt;br /&gt;
*AnnaKoikOmanikuKohvikud() - Tagastab antud omaniku ID järgi kõik omaniku kohvikute ID-d massiivina&lt;br /&gt;
*Kohvikud() - Tagastab kõik kohvikute kirjed tabelist Kohvik&lt;br /&gt;
*KohvikuteArv() - Tagastab kõigi kohvikute arvu&lt;br /&gt;
*AnnaKaubad() - Tagastab kõik kaubad tabelist Kaup&lt;br /&gt;
*LisaKaup() - Lisab kauba kaupade nimekirja&lt;br /&gt;
*LisaKohvik() - Uue kohviku lisamine&lt;br /&gt;
&lt;br /&gt;
====Kommentaaridega seotud meetodid:====&lt;br /&gt;
*KohvikuKommentaarideArv() - Kohviku kommentaaride arv&lt;br /&gt;
*AnnaKohvikuKommentaarid() - Tagastab kommentaarid lehtede kaupa&lt;br /&gt;
*AnnaKohvikuKommentaarideHinded() - Tagastab kommentaaride jaoks võimalikud hinded koos kirjeldustega&lt;br /&gt;
*LisaKohvikuKommentaar() - Lisab kohviku kommentaari&lt;br /&gt;
&lt;br /&gt;
====Statistikaga seotud meetodid:====&lt;br /&gt;
*StatistikaRakendusteKohtaTana() - Tagastab rakenduse nimed ja nende vastu tehtud päringud tänasel päeval&lt;br /&gt;
*StatistikaRakendusteKohtaViimaneNadal() - Tagastab rakenduse nimed ja nende vastu tehtud päringud viimase nädala jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaSellelKuul() - Tagastab rakenduse nimed ja nende vastu tehtud päringud selle kuu jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaKokku() - Tagastab rakenduse nimed ja nende vastu tehtud päringud kogu aja vältel&lt;br /&gt;
*StatistikaMeetoditeKohtaTana() - Meetod leiab tänase päeva jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaViimaneNadal() - Meetod leiab viimase nädala jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaSellelKuul() - Meetod leiab kuu jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaKokku() - Meetod leiab kogu aja vältel kasutatud meetodid ja paringute arvu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebiteenuse projekti (WCF + andmebaas) saab siit: http://enos.itcollege.ee/~rruga/VRII/Teenusekiht.zip&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : CMS ==&lt;br /&gt;
&lt;br /&gt;
Meie loodud veebirakenduses on realiseeritud järgnevad CMS seotud funktsionaalsused :&lt;br /&gt;
*Kõikide kohvikute lehed on eraldi aadressiga, mis võimaldab eri kohvikud bookmarkida ja facebooki like anda. See on saavutatud tänu ?kohvik=1 aadressiribal, kus parameeteri kohvik number identifitseerib kohviku.&lt;br /&gt;
*Adminni õigustega kasutajal on võimalik lisada uus kohvikuid andembaasi&lt;br /&gt;
*Kohviku omanik saab lisada menüüd, muuta seda ja kustutada&lt;br /&gt;
*Adminnid saavad kasutajaid hallata, määrates nendele rolle, mis omakorda tagab teatud õigused&lt;br /&gt;
*Kohviku omanikud saavad  oma kohviku kasutajaid hallata, määrates neile näiteks müüja või kliendi rolli.&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Veebirakendus ==&lt;br /&gt;
&lt;br /&gt;
Veebiteenust kasutavaks veebirakenduseks on ASP.NET rakendus. &lt;br /&gt;
&lt;br /&gt;
* Esilehel saab otsida kohvikuid või minna kohe huvipakkuva kohviku menüü lehele.&lt;br /&gt;
* Kohviku menüü lehel on näha tänased ja teised menüüd, kohviku lahtioleku aeg. Kui panna veebirakendus internetti, siis on võimalus Facebook-i kaudu kohviku fänniks hakata. Kommenteerimise ja soodustuste osa on veel pooleli.&lt;br /&gt;
* Sisse loginud kohviku omanik saab ka kohviku menüüsid muuta, lisada, kustutada. &lt;br /&gt;
* Kasutajate lehel saab sisse loginud kohviku omanik hallata kohviku kasutajaid.&lt;br /&gt;
* Statistika lehel saab vaadata statistikat teenust kasutanud rakenduste ja kasutatud meetodite kohta. Näeb nii tänase päeva, viimase nädala, selle kuu ja aasta statistikat&lt;br /&gt;
* Kohviku lisamise lehel saab aga admini õigustege kasutaja lisada uue kohviku.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:KohvikuMenuEdit.JPG|800px|Kohviku menüü muutmise leht. ITK kohviku menüüde muutmiseks tuleb logida sisse kasutajaga Ilmar parooliga &amp;quot;ilmar&amp;quot;.]]&lt;br /&gt;
&lt;br /&gt;
Kohviku menüü muutmise leht. ITK kohviku menüüde muutmiseks tuleb logida sisse kasutajaga Ilmar parooliga &amp;quot;ilmar&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebirakenduse koos uuendatud teenuskihiga saab siit: http://enos.itcollege.ee/~rruga/VRII/KohvikuProjekt.rar&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus II : Mobiilirakendus ==&lt;br /&gt;
&lt;br /&gt;
Teine rakendus, mis veebiteenuse peale ehitatud sai, oli Windows Phone 7 rakendus. Lühidalt kirjeldades saab peale rakenduse käivitamist näha listi kõikidest olemasolevatest kohvikutest. Kui vajutad mingi kohviku nime peale, avaneb täpsem kirjeldus kohviku kohta, kust näeb lisaks kohviku nimele ka lühikest kirjeldust, tänast lahtiolekuaega ja kohviku aadressit. Samuti on kohviku kirjelduse lehel viide kohviku tänasele menüüle ja kommenteerimisele. Vajutades vaata menüüd nuppu avaneb vaade täna müügis olevatest müügiartiklitest ja nende hinnast, vajutades aga kommenteeri kohvikut nupule avaneb võimalus lisada kohviku kohta kommentaar.&lt;br /&gt;
&lt;br /&gt;
Kokkuvõttev pilt realiseeritud võimalustest:&lt;br /&gt;
&lt;br /&gt;
[[Image:WP7 rakendus.jpg|alt=WP7 rakendus.|WP7 rakenduse võimalused.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mobiilirakenduse saab alla tõmmata siit: http://enos.itcollege.ee/~rruga/VRII/Mobiilirakendus.rar&lt;br /&gt;
&lt;br /&gt;
NB! Et mobiilirakendust proovida ja mõistliku tulemust saada peab teil olema kõige uuem versioon meie projekti teenuskihist ning teenuskiht peab töötama.&lt;br /&gt;
&lt;br /&gt;
== Meeskonna kokkuvõttev aruanne ==&lt;br /&gt;
&lt;br /&gt;
== Logi ==&lt;br /&gt;
&lt;br /&gt;
=== 8. Mai ===&lt;br /&gt;
Veebirakendus esitluseks valmis. Täiendatud vikilehte.&lt;br /&gt;
&lt;br /&gt;
=== 7. Mai ===&lt;br /&gt;
Mobiilirakendus sai valmis ja selle kohta uuendatud vikilehte.&lt;br /&gt;
&lt;br /&gt;
=== 17. aprill ===&lt;br /&gt;
Wikilehe täiendamine andmemudeli ja veebiteenuse meetodite kirjeldusega.&lt;br /&gt;
&lt;br /&gt;
=== 9. aprill ===&lt;br /&gt;
Tegime rollide halduse, münüüde muutmise vormi. Meili saatmine registreerimisel. Toimus andmebaasi andmemudeli väike muutus. &lt;br /&gt;
&lt;br /&gt;
=== 30. märts ===&lt;br /&gt;
Tehtud on kohviku menüü ja kohviku kommenteerimise leht.&lt;br /&gt;
&lt;br /&gt;
=== 26. märts ===&lt;br /&gt;
Tehtud on esimesed veebiteenuse meetodid ja veebirakendusele kasutajate registreerimine.&lt;br /&gt;
&lt;br /&gt;
=== 10. märts ===&lt;br /&gt;
Väikese häki abil õnnestus kohviku kassa arvutis saada tööle üks Forms-i proovirakendus.&lt;br /&gt;
&lt;br /&gt;
=== 8. märts ===&lt;br /&gt;
Kuna kassa-aparaadis on operatsioonisüsteemiks Windows XP ja raud on 1.99 GHz, 256 RAM siis peaks saama&lt;br /&gt;
prototüübiks teha sinna peale rakenduse, mille ülesandeks menüüga tegelemine. &lt;br /&gt;
&lt;br /&gt;
=== 7. märts ===&lt;br /&gt;
Linnar Viik andis meile järgmist nõu: tuleb eristada kahte asja - see, mis peab valmis saama (&#039;&#039;must&#039;&#039;) ja see, mis oleks tore (&#039;&#039;nice to have&#039;&#039;). Valmis peab saama menüüga ekraan seinal (esialgu kasutajale prototüübi näitamiseks kasvõi näiteks PowerPoint-i abil tehtud). Alles siis kui on kasutajalt positiivne tagasiside saadud, võib edasi minna reaalse tarkvaralahenduse loomisega. Kui ka see on valmis ja kasutaja sellega rahul võib juurde mõelda &#039;&#039;nice to have&#039;&#039; asju (näiteks eelinfo järgmise päeva menüü kohta, üliõpilasesinduse sõnumite riba ja muid asju).&lt;br /&gt;
&lt;br /&gt;
Saime teada, et kui tahame, et meie loodav süsteem suhtleks IT Kohviku kassasüsteemiga, siis tuleb selle süsteemi tootjatega ühendust võtta ja nendega konsulteerida.&lt;br /&gt;
&lt;br /&gt;
=== 19.Veebruar ===&lt;br /&gt;
*Valmis XSLT fail.&lt;br /&gt;
&lt;br /&gt;
=== 9.Veebruar ===&lt;br /&gt;
* Esmane versioon XML ja XML Schemast olemas&lt;br /&gt;
* Tekkis küsimus kas XSLT faili tuleb käsitsi tekitada või automaatselt.&lt;br /&gt;
* Küsimus oli ka kas lahendasime portsjoni asja mõistlikult või oleks mõni teine lähenemine parem olnud.&lt;br /&gt;
* Küsimus, kas XML fail on liiga üle pingutatud või sobiva keerukusega&lt;br /&gt;
&lt;br /&gt;
=== 7. Veebruar ===&lt;br /&gt;
* Võtsime õppejõu poolt pakutud ideest kohe kinni, sest me eelistame teha praktilist asja, mida saab kasutada ja mille kasutamist saame ka iga päev jälgida. &lt;br /&gt;
* Esimese asjana otsustasime välja uurida mida meie &amp;quot;kliendid&amp;quot; (süsteemi tellijad) meilt ootavad. (Soovid idee punkti all)&lt;br /&gt;
* Valminud on lihtne teenusest ja klientidest koosnev süsteemi testmudel.&lt;br /&gt;
&lt;br /&gt;
== Kasulikud lingid ==&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCF_auto_client_proxies.aspx&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/ms178472.aspx&lt;br /&gt;
&lt;br /&gt;
http://support.microsoft.com/kb/305141&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/aa702565.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/scottgu/archive/2007/04/06/tip-trick-enabling-ssl-on-iis7-using-self-signed-certificates.aspx&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Võrgurakendused II: hajussüsteemide ehitamine]]&lt;br /&gt;
[[Category: Veebirakenduste loomine ASP.NET abil]]&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=30714</id>
		<title>Meeskond &quot;FoodWars&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=30714"/>
		<updated>2011-05-08T19:08:02Z</updated>

		<summary type="html">&lt;p&gt;Rruga: /* Klientrakendus I : Veebirakendus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Idee ==&lt;br /&gt;
Meie tiimil on plaanis teha internetipõhine söökla menüü süsteem (aluseks IT Kolledži kohvik, aga suunitlus selline, et kõik kohvikud/sööklad saaksid teha endale kasutajakonto ja hakata rakendust kasutama), kust saaks jälgida menüüd, mis sööke saab süüa, mis veel järgi on, kasutajatel on ka võimalus sööke hinnata (stiilis &amp;quot;meeldib&amp;quot;, &amp;quot;ei meeldi&amp;quot; nagu Facebook-is).&lt;br /&gt;
&lt;br /&gt;
Kohvikupidaja Teele soovid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* elektroonilisest menüüst asju kustutada, isegi siis kui asja peaks olema teoreetiliselt alles, aga tegelikult on asi otsas.&lt;br /&gt;
* elektrikatkestuse korral jääb menüü püsima. Ta peab teadma hindu mistahes olukorras.&lt;br /&gt;
* menüül näidatakse automaatselt ka ISIC kaardi omanike soodushinnad&lt;br /&gt;
* süsteem toetab ka poole portsjoni müümist.&lt;br /&gt;
&lt;br /&gt;
Linnar Viigi soovid/visioonid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* kõik oleks ka internetist kättesaadav, peale LCD ekraani, mis kajastab menüüd sööklas.&lt;br /&gt;
* aluseks facebook, kus siis söögid oleks nagu facebook-i alateemad.&lt;br /&gt;
* saab sööke hinnata, kommenteerida (täna oli väga maitsev praad).&lt;br /&gt;
* kasutajad saaks vaadata, mis menüüs on (ka järgmisel nädalal) ja mitu portsu veel alles on.&lt;br /&gt;
* kasutajad saaksid välja pakkuda menüüsid.&lt;br /&gt;
* erinevate söögikohtade kasutajad saaksid omavahel muljeid jagada.&lt;br /&gt;
* kuu aja aktiivsemad saavad prii lõuna.&lt;br /&gt;
* mingil ajal võib olla &amp;quot;happy hour&amp;quot; (enne sulgemist saab odavamalt).&lt;br /&gt;
* piiranguks on see, et toitu broneerida ei saa &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vaba tarkvara kasutamise võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Antud projekti puhul oleks võimalik kasutada [http://www.postgresql.org/ PostgreSQL] andmebaasi (vt. lisaks http://en.wikipedia.org/wiki/PostgreSQL ) Microsoft SQL Server&#039;i asemel. See võiks anda kasutajale võimaluse valida .NET ning [http://www.mono-project.com/ Mono] (vt. lisaks http://en.wikipedia.org/wiki/Mono_(software) ) platvormide vahel. Sel viisil oleks kliendil võimalik Microsoft&#039;i platvormi kõrval valida tõenäoliselt soodsam vaba tarkvara platvorm. Andmebaasi lõplik valik pole hetkel veel otsustatud.&lt;br /&gt;
&lt;br /&gt;
== Meeskond ja tööjaotus==&lt;br /&gt;
* Kristjan Stolin - projektijuht, suhtlus kliendiga, XML, wiki, teenuskihtide progemine, rollide halduse lehe progemine&lt;br /&gt;
* Ilmar Telga - XML, kliendiga suhtlus, wiki, teenuskihtide progemine, lõpprakenduste menüüd, login&lt;br /&gt;
* Rauno Rüga - XML, XSLT, andmebaasi loomine, wiki, mobiilirakendus, statistika&lt;br /&gt;
* Lauri Kermas - teenuskihtide ehitamine, wiki, login, kommenteerimise võimaluste progemine&lt;br /&gt;
&lt;br /&gt;
== XML Fail ==&lt;br /&gt;
=== XML ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Toidud&amp;gt;&lt;br /&gt;
  &amp;lt;Toit&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduNimetus&amp;gt;Viineri kaste&amp;lt;/ToiduNimetus&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduLiik&amp;gt;Praad&amp;lt;/ToiduLiik&amp;gt;&lt;br /&gt;
    &amp;lt;OlemasolevatYhikut&amp;gt;5&amp;lt;/OlemasolevatYhikut&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduKogus&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Poolportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;2011&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;1&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;9&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;15&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;07&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;23&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;        &lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.15&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;0&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;0&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;0&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;00&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;00&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;00&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Täisportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.80&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
    &amp;lt;/ToiduKogus&amp;gt;&lt;br /&gt;
    &amp;lt;Kommentaarid&amp;gt;&lt;br /&gt;
      &amp;lt;Kommentaar&amp;gt;&lt;br /&gt;
        &amp;lt;Saatja&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaNimi&amp;gt;Kristjan&amp;lt;/SaatjaNimi&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaRoll&amp;gt;Tudeng&amp;lt;/SaatjaRoll&amp;gt;&lt;br /&gt;
        &amp;lt;/Saatja&amp;gt;&lt;br /&gt;
        &amp;lt;Sisu&amp;gt;Minu lemmik toit ! Kui algebra tund ei hakkaks, sööks veel 5 portsjonit.&amp;lt;/Sisu&amp;gt;&lt;br /&gt;
      &amp;lt;/Kommentaar&amp;gt;&lt;br /&gt;
    &amp;lt;/Kommentaarid&amp;gt;&lt;br /&gt;
  &amp;lt;/Toit&amp;gt;&lt;br /&gt;
&amp;lt;/Toidud&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kommentaariks siis niipalju, et meie näide on ilma kohviku osata, selleks et näidet mitte liiga suureks ajada.&lt;br /&gt;
&lt;br /&gt;
Ka on meil moment puudu ID väljad, mis on igasugu andmebaasiga suhtlemiseks hädavajalikud, samas siin näidises palju juurde ei anna.&lt;br /&gt;
&lt;br /&gt;
Asja tegemisel avastasime, et põhiliseks arusaamatuse kohaks on toitude erinevad kogused (ehk siis pool portsjonit, suur / väike ja muud võrdlevad ühikud). Esimese võimalusena kaalusime teha lihtsalt täiesti eraldi toidud kõige kohta, stiilis &amp;quot;väike viineripraad&amp;quot; ja &amp;quot;suur viineripraad&amp;quot;. Kahjuks see variant ei kõlbaks eriti hästi, kuna need erinevad portsjonid kasutavad ikkagi samu materjale ja kui me peaks mingi süsteemiga näitama kui palju portsjoneid alles on. Sööklast näiteks pakuti et väike portsjon kasutab materjale kuskil 0.8 suure portsjoni ulatuses, ehk see suhtarv peaks olema kasutaja poolt (kohvikupidaja, restoraniomanik) ise sätitav. &lt;br /&gt;
&lt;br /&gt;
Tänu sellele sai meie süsteemi alustalaks siiski Toit, millel on oma Portsjonid siis erinevate hindade ja soodustustega. Moment pole meil ka Portsjoni XML osas toodud ära seost kogusega. (Kui palju ühe portsjoni lisamine/müümine peaks toidu üldkogust muutma).&lt;br /&gt;
&lt;br /&gt;
Kommenteerida saab meil moment toitu ennast, mitte eraldi portsjonit. Isegi kui kasutajad tahavad lisada kommentaare stiilis &amp;quot;See väike supp oli tõesti väga väike&amp;quot;, ei soovi nad seda ilmselt eraldi portsjoni alla panna. Tulevikus peaks kindlasti olema ka võimalus pigem kommenteerida üldisemalt (Kohvikut ennast, söögipaiku üldse), kui spetsiifilisemalt (Väikse prae kaste lisandi kohta).&lt;br /&gt;
&lt;br /&gt;
=== XML Schema ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Toidud&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Toit&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduNimetus&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;OlemasolevatYhikut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduKogus&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:choice maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;PortsjoniLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;Myygiaeg&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Aasta&amp;quot; type=&amp;quot;xs:unsignedShort&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Kuu&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Paev&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Tund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Minut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Sekund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;ToiduHind&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Eurohind&amp;quot; type=&amp;quot;xs:decimal&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Soodustus&amp;quot;&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseProtsent&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:choice&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Kommentaarid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Saatja&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaNimi&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaRoll&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Sisu&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
  &amp;lt;h2&amp;gt;Kohvikus müüdavad toidud&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr bgcolor=&amp;quot;#9acd32&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Veel alles&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Portsjon&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Müügiaeg&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustuse liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Kommentaar(id)&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;Toidud/Toit&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduNimetus&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduLiik&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;OlemasolevatYhikut&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;PortsjoniLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Paev&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Kuu&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Aasta&amp;quot; /&amp;gt; &amp;amp;nbsp;  &lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Tund&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Minut&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Sekund&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Eurohind&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseProtsent&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Kommentaarid/Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Sisu&amp;quot; /&amp;gt;&amp;amp;nbsp;(&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaRoll&amp;quot; /&amp;gt;&amp;amp;nbsp;&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaNimi&amp;quot; /&amp;gt;)&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XSLT poolt loodud tulemus on järgnev (lisasin veel kaks toitu XML faili, siin wiki lehel on ruumi kokkuhoiuks vaid 1 toit toitude listis):&lt;br /&gt;
[[File:Xslt.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arhitektuur ==&lt;br /&gt;
&lt;br /&gt;
Süsteem oli vahepeal plaanis ehitada kolmekihilise arhitektuuriga ([http://en.wikipedia.org/wiki/Multitier_architecture#Three-tier_architecture Three-tier architecture]). See peaks lihtsustama süsteemi haldamist ja laiendamist tulevikus. Aga kuna selle jaoks otsest vajadust polenud ja oleks vaid süsteemi keeruliseks ajanud, siis loobusime sellest.&lt;br /&gt;
&lt;br /&gt;
[[Image:three-tier.png|thumb|center|alt=Arhitektuuri skeem.|Arhitektuuri skeem.]]&lt;br /&gt;
&lt;br /&gt;
== Veebiteenus ==&lt;br /&gt;
===Andmemudel===&lt;br /&gt;
[[Image:KohvikuAndmemudel.jpg|thumb|right|alt=Kohviku projekti andmemudel|Andmemudel]]&lt;br /&gt;
Enne veebiteenuse meetodite kirjeldamist koostasime andmemudeli. Loodud andmemudeli põhjal lõime andmebaasi vajalike tabelite ja atribuutidega. Andmemudeli peal on rohelisega tähistatud tabelid, mis on oseselt seotud kohviku valdajaga ja mida WPF rakenduse jaoks kindlasti vaja on. Ülejäänud helesinised tabelid on vajalikud kasutajate võimaluste jaoks. Lisaks on andmemudelil kaks tabelit, mis pole teisega seotud, need on süsteemi administraatori jaoks, et oleks ülevaade, mis rakendused teenust enim kasutavad ning mis meetodeid kõige rohkem välja kutsutakse.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Teenuskihis olevad meetodid===&lt;br /&gt;
&lt;br /&gt;
====Kasutajatega seotud meetodid:====&lt;br /&gt;
*SaidiKasutajaLiik() - Tagastab antud kasutaja ID järgi kasutaja liigi nimetuse&lt;br /&gt;
*KustutaSaidiKasutaja() - Kustutab antud kasutaja ID järgi kasutaja tabelis Kasutaja&lt;br /&gt;
*AnnaKoikSaidiKasutajad() - Tagastab kõik kirjed tabelist Kasutaja&lt;br /&gt;
*AnnaKoikKohvikuKasutajad() - Tagastab antud kohviku ID järgi kõik kohviku kasutajad massiivina&lt;br /&gt;
*MuudaSaidiKasutajaLiik() - Muudab antud kasutaja ID järgi kasutaja liigi tabelis Kasutaja&lt;br /&gt;
*KoikLubatudSaidiKasutajaTyybid() - Tagastab andmebaasi kõik võimalikud kohviku kasutaja rollid (id-d ja nimed), muud andmed jäävad tühjaks&lt;br /&gt;
*KoikLubatudKohvikuRollid() - Tagastab andmebaasi kõik võimalikud site kasutaja rollid (id-d ja nimed), kohviku_id jääb tühjaks&lt;br /&gt;
*KasutajaKohvikuRollid() - Tagastab antud kasutaja ID järgi kõik kasutaja rollid kõikides kohvikutes&lt;br /&gt;
*MuudaKohvikuKasutajaRoll() - Muudab antud kasutaja ID ja kohviku ID järgi kasutaja rolli kohvikus, kui rolli pole, siis tekitatakse uus&lt;br /&gt;
*SaidiKasutajaLiikID() - Tagastab antud kasutaja ID järgi kasutaja liigi ID&lt;br /&gt;
*KohvikuKasutajaLiikID() - Tagastab antud kasutaja ID ja kohviku ID järgi kohviku kasutaja rolli ID&lt;br /&gt;
*AnnaKasutajaMeiliAadress() - Tagastab antud kasutaja nime alusel kasutaja meiliaadressi&lt;br /&gt;
*AnnaKasutajaIdJargi() - Tagastab kasutajanime kasutaja ID järgi&lt;br /&gt;
*AuthendiKasutaja() - Autendib kasutaja, õnnestumisel tagastab kasutaja ID, ebaõnnestumisel null &lt;br /&gt;
*RegistreeriKasutaja() - Registreerib kasutaja andmebaasi ja tagastab true kui kasutaja loomine õnnestus&lt;br /&gt;
&lt;br /&gt;
====Menüüga seotud meetodid====&lt;br /&gt;
*LisaArtikkelMenuuse() - Seob menüüartikli ja menüü&lt;br /&gt;
*LisaKohvikuleMenuu() - Seob menüü ja kohviku&lt;br /&gt;
*TagastabMenuuMuutujad() - Tagastab menüü järgi kas inimesel oleks õigust seda muuta&lt;br /&gt;
*KustutaMenuuJaKohvikuSeos() - Kustutab menüü ja kohviku seose&lt;br /&gt;
*LisaUusMenuu() - Teeb uue menüü, seob selle kohvikuga, kui kohviku ID on parameetrina kaasa antud&lt;br /&gt;
*MenuuKohvikuIdJargi() - Tagastab kohviku ID järgi kohviku tänaste või mitte tänaste menüüde ID-de massiivi&lt;br /&gt;
*LisaMenuuArtikkelMenuuse() - Sisestab antud müügiartikli menüüsse, mille ID on menyy_id&lt;br /&gt;
*KustutaMenuuArtikkel() - Kustutab müügiartikli ID ja menüü ID järgi müügiartikli menüüst&lt;br /&gt;
*TagastaMenuuArtiklid() - Tagastab menüü ID järgi menüüs olevad müügiartiklid&lt;br /&gt;
*VahetaMenuuArtiklit() - Muudab antud müügiartikli tabelis Myygiartikkel&lt;br /&gt;
*MenuuNimetus() - Tagastab menüü ID järgi menüü nimetuse&lt;br /&gt;
*AnnaMuugiartiklidMidaMenuusPole() - Tagastab müügiartiklid, mis pole veel menüüs, kus on juba müügiartiklid, mille IDd on antud massiivis&lt;br /&gt;
*AnnaMenuuNimed() - Tagastab kõigi menüüde nimetused tabelis Menyy&lt;br /&gt;
&lt;br /&gt;
====Kohvikutest üldiselt====&lt;br /&gt;
*KohvikuteNimed() - Tagastab kõigi kohvikute nimed massiivina&lt;br /&gt;
*KohvikuNimiIdJargi() - Tagastab antud kohviku ID järgi kohviku nime&lt;br /&gt;
*AnnaKoikOmanikuKohvikud() - Tagastab antud omaniku ID järgi kõik omaniku kohvikute ID-d massiivina&lt;br /&gt;
*Kohvikud() - Tagastab kõik kohvikute kirjed tabelist Kohvik&lt;br /&gt;
*KohvikuteArv() - Tagastab kõigi kohvikute arvu&lt;br /&gt;
*AnnaKaubad() - Tagastab kõik kaubad tabelist Kaup&lt;br /&gt;
*LisaKaup() - Lisab kauba kaupade nimekirja&lt;br /&gt;
*LisaKohvik() - Uue kohviku lisamine&lt;br /&gt;
&lt;br /&gt;
====Kommentaaridega seotud meetodid:====&lt;br /&gt;
*KohvikuKommentaarideArv() - Kohviku kommentaaride arv&lt;br /&gt;
*AnnaKohvikuKommentaarid() - Tagastab kommentaarid lehtede kaupa&lt;br /&gt;
*AnnaKohvikuKommentaarideHinded() - Tagastab kommentaaride jaoks võimalikud hinded koos kirjeldustega&lt;br /&gt;
*LisaKohvikuKommentaar() - Lisab kohviku kommentaari&lt;br /&gt;
&lt;br /&gt;
====Statistikaga seotud meetodid:====&lt;br /&gt;
*StatistikaRakendusteKohtaTana() - Tagastab rakenduse nimed ja nende vastu tehtud päringud tänasel päeval&lt;br /&gt;
*StatistikaRakendusteKohtaViimaneNadal() - Tagastab rakenduse nimed ja nende vastu tehtud päringud viimase nädala jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaSellelKuul() - Tagastab rakenduse nimed ja nende vastu tehtud päringud selle kuu jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaKokku() - Tagastab rakenduse nimed ja nende vastu tehtud päringud kogu aja vältel&lt;br /&gt;
*StatistikaMeetoditeKohtaTana() - Meetod leiab tänase päeva jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaViimaneNadal() - Meetod leiab viimase nädala jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaSellelKuul() - Meetod leiab kuu jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaKokku() - Meetod leiab kogu aja vältel kasutatud meetodid ja paringute arvu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebiteenuse projekti (WCF + andmebaas) saab siit: http://enos.itcollege.ee/~rruga/VRII/Teenusekiht.zip&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : CMS ==&lt;br /&gt;
&lt;br /&gt;
Meie loodud veebirakenduses on realiseeritud järgnevad CMS seotud funktsionaalsused :&lt;br /&gt;
*Kõikide kohvikute lehed on eraldi aadressiga, mis võimaldab eri kohvikud bookmarkida ja facebooki like anda. See on saavutatud tänu ?kohvik=1 aadressiribal, kus parameeteri kohvik number identifitseerib kohviku.&lt;br /&gt;
*Adminni õigustega kasutajal on võimalik lisada uus kohvikuid andembaasi&lt;br /&gt;
*Kohviku omanik saab lisada menüüd, muuta seda ja kustutada&lt;br /&gt;
*Adminnid saavad kasutajaid hallata, määrates nendele rolle, mis omakorda tagab teatud õigused&lt;br /&gt;
*Kohviku omanikud saavad  oma kohviku kasutajaid hallata, määrates neile näiteks müüja või kliendi rolli.&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Veebirakendus ==&lt;br /&gt;
&lt;br /&gt;
Veebiteenust kasutavaks veebirakenduseks on ASP.NET rakendus. &lt;br /&gt;
&lt;br /&gt;
* Esilehel saab otsida kohvikuid või minna kohe huvipakkuva kohviku menüü lehele.&lt;br /&gt;
* Kohviku menüü lehel on näha tänased ja teised menüüd, kohviku lahtioleku aeg. Kui panna veebirakendus internetti, siis on võimalus Facebook-i kaudu kohviku fänniks hakata. Kommenteerimise ja soodustuste osa on veel pooleli.&lt;br /&gt;
* Sisse loginud kohviku omanik saab ka kohviku menüüsid muuta, lisada, kustutada. &lt;br /&gt;
* Kasutajate lehel saab sisse loginud kohviku omanik hallata kohviku kasutajaid.&lt;br /&gt;
* Statistika lehel saab vaadata statistikat teenust kasutanud rakenduste ja kasutatud meetodite kohta. Näeb nii tänase päeva, viimase nädala, selle kuu ja aasta statistikat&lt;br /&gt;
* Kohviku lisamise lehel saab aga admini õigustege kasutaja lisada uue kohviku.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:KohvikuMenuEdit.JPG|800px|Kohviku menüü muutmise leht. ITK kohviku menüüde muutmiseks tuleb logida sisse kasutajaga Ilmar parooliga &amp;quot;ilmar&amp;quot;.]]&lt;br /&gt;
&lt;br /&gt;
Kohviku menüü muutmise leht. ITK kohviku menüüde muutmiseks tuleb logida sisse kasutajaga Ilmar parooliga &amp;quot;ilmar&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebirakenduse koos uuendatud teenuskihiga saab siit: http://enos.itcollege.ee/~rruga/VRII/KohvikuProjekt.rar&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus II : Mobiilirakendus ==&lt;br /&gt;
&lt;br /&gt;
Teine rakendus, mis veebiteenuse peale ehitatud sai, oli Windows Phone 7 rakendus. Lühidalt kirjeldades saab peale rakenduse käivitamist näha listi kõikidest olemasolevatest kohvikutest. Kui vajutad mingi kohviku nime peale, avaneb täpsem kirjeldus kohviku kohta, kust näeb lisaks kohviku nimele ka lühikest kirjeldust, tänast lahtiolekuaega ja kohviku aadressit. Samuti on kohviku kirjelduse lehel viide kohviku tänasele menüüle ja kommenteerimisele. Vajutades vaata menüüd nuppu avaneb vaade täna müügis olevatest müügiartiklitest ja nende hinnast, vajutades aga kommenteeri kohvikut nupule avaneb võimalus lisada kohviku kohta kommentaar.&lt;br /&gt;
&lt;br /&gt;
Kokkuvõttev pilt realiseeritud võimalustest:&lt;br /&gt;
&lt;br /&gt;
[[Image:WP7 rakendus.jpg|alt=WP7 rakendus.|WP7 rakenduse võimalused.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mobiilirakenduse saab alla tõmmata siit: http://enos.itcollege.ee/~rruga/VRII/Mobiilirakendus.rar&lt;br /&gt;
&lt;br /&gt;
NB! Et mobiilirakendust proovida ja mõistliku tulemust saada peab teil olema kõige uuem versioon meie projekti teenuskihist ning teenuskiht peab töötama.&lt;br /&gt;
&lt;br /&gt;
== Meeskonna kokkuvõttev aruanne ==&lt;br /&gt;
&lt;br /&gt;
== Logi ==&lt;br /&gt;
=== 7. Mai ===&lt;br /&gt;
Mobiilirakendus sai valmis ja selle kohta uuendatud vikilehte.&lt;br /&gt;
&lt;br /&gt;
=== 17. aprill ===&lt;br /&gt;
Wikilehe täiendamine andmemudeli ja veebiteenuse meetodite kirjeldusega.&lt;br /&gt;
&lt;br /&gt;
=== 9. aprill ===&lt;br /&gt;
Tegime rollide halduse, münüüde muutmise vormi. Meili saatmine registreerimisel. Toimus andmebaasi andmemudeli väike muutus. &lt;br /&gt;
&lt;br /&gt;
=== 30. märts ===&lt;br /&gt;
Tehtud on kohviku menüü ja kohviku kommenteerimise leht.&lt;br /&gt;
&lt;br /&gt;
=== 26. märts ===&lt;br /&gt;
Tehtud on esimesed veebiteenuse meetodid ja veebirakendusele kasutajate registreerimine.&lt;br /&gt;
&lt;br /&gt;
=== 10. märts ===&lt;br /&gt;
Väikese häki abil õnnestus kohviku kassa arvutis saada tööle üks Forms-i proovirakendus.&lt;br /&gt;
&lt;br /&gt;
=== 8. märts ===&lt;br /&gt;
Kuna kassa-aparaadis on operatsioonisüsteemiks Windows XP ja raud on 1.99 GHz, 256 RAM siis peaks saama&lt;br /&gt;
prototüübiks teha sinna peale rakenduse, mille ülesandeks menüüga tegelemine. &lt;br /&gt;
&lt;br /&gt;
=== 7. märts ===&lt;br /&gt;
Linnar Viik andis meile järgmist nõu: tuleb eristada kahte asja - see, mis peab valmis saama (&#039;&#039;must&#039;&#039;) ja see, mis oleks tore (&#039;&#039;nice to have&#039;&#039;). Valmis peab saama menüüga ekraan seinal (esialgu kasutajale prototüübi näitamiseks kasvõi näiteks PowerPoint-i abil tehtud). Alles siis kui on kasutajalt positiivne tagasiside saadud, võib edasi minna reaalse tarkvaralahenduse loomisega. Kui ka see on valmis ja kasutaja sellega rahul võib juurde mõelda &#039;&#039;nice to have&#039;&#039; asju (näiteks eelinfo järgmise päeva menüü kohta, üliõpilasesinduse sõnumite riba ja muid asju).&lt;br /&gt;
&lt;br /&gt;
Saime teada, et kui tahame, et meie loodav süsteem suhtleks IT Kohviku kassasüsteemiga, siis tuleb selle süsteemi tootjatega ühendust võtta ja nendega konsulteerida.&lt;br /&gt;
&lt;br /&gt;
=== 19.Veebruar ===&lt;br /&gt;
*Valmis XSLT fail.&lt;br /&gt;
&lt;br /&gt;
=== 9.Veebruar ===&lt;br /&gt;
* Esmane versioon XML ja XML Schemast olemas&lt;br /&gt;
* Tekkis küsimus kas XSLT faili tuleb käsitsi tekitada või automaatselt.&lt;br /&gt;
* Küsimus oli ka kas lahendasime portsjoni asja mõistlikult või oleks mõni teine lähenemine parem olnud.&lt;br /&gt;
* Küsimus, kas XML fail on liiga üle pingutatud või sobiva keerukusega&lt;br /&gt;
&lt;br /&gt;
=== 7. Veebruar ===&lt;br /&gt;
* Võtsime õppejõu poolt pakutud ideest kohe kinni, sest me eelistame teha praktilist asja, mida saab kasutada ja mille kasutamist saame ka iga päev jälgida. &lt;br /&gt;
* Esimese asjana otsustasime välja uurida mida meie &amp;quot;kliendid&amp;quot; (süsteemi tellijad) meilt ootavad. (Soovid idee punkti all)&lt;br /&gt;
* Valminud on lihtne teenusest ja klientidest koosnev süsteemi testmudel.&lt;br /&gt;
&lt;br /&gt;
== Kasulikud lingid ==&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCF_auto_client_proxies.aspx&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/ms178472.aspx&lt;br /&gt;
&lt;br /&gt;
http://support.microsoft.com/kb/305141&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/aa702565.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/scottgu/archive/2007/04/06/tip-trick-enabling-ssl-on-iis7-using-self-signed-certificates.aspx&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Võrgurakendused II: hajussüsteemide ehitamine]]&lt;br /&gt;
[[Category: Veebirakenduste loomine ASP.NET abil]]&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=30712</id>
		<title>Meeskond &quot;FoodWars&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=30712"/>
		<updated>2011-05-08T18:59:52Z</updated>

		<summary type="html">&lt;p&gt;Rruga: /* Klientrakendus I : Veebirakendus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Idee ==&lt;br /&gt;
Meie tiimil on plaanis teha internetipõhine söökla menüü süsteem (aluseks IT Kolledži kohvik, aga suunitlus selline, et kõik kohvikud/sööklad saaksid teha endale kasutajakonto ja hakata rakendust kasutama), kust saaks jälgida menüüd, mis sööke saab süüa, mis veel järgi on, kasutajatel on ka võimalus sööke hinnata (stiilis &amp;quot;meeldib&amp;quot;, &amp;quot;ei meeldi&amp;quot; nagu Facebook-is).&lt;br /&gt;
&lt;br /&gt;
Kohvikupidaja Teele soovid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* elektroonilisest menüüst asju kustutada, isegi siis kui asja peaks olema teoreetiliselt alles, aga tegelikult on asi otsas.&lt;br /&gt;
* elektrikatkestuse korral jääb menüü püsima. Ta peab teadma hindu mistahes olukorras.&lt;br /&gt;
* menüül näidatakse automaatselt ka ISIC kaardi omanike soodushinnad&lt;br /&gt;
* süsteem toetab ka poole portsjoni müümist.&lt;br /&gt;
&lt;br /&gt;
Linnar Viigi soovid/visioonid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* kõik oleks ka internetist kättesaadav, peale LCD ekraani, mis kajastab menüüd sööklas.&lt;br /&gt;
* aluseks facebook, kus siis söögid oleks nagu facebook-i alateemad.&lt;br /&gt;
* saab sööke hinnata, kommenteerida (täna oli väga maitsev praad).&lt;br /&gt;
* kasutajad saaks vaadata, mis menüüs on (ka järgmisel nädalal) ja mitu portsu veel alles on.&lt;br /&gt;
* kasutajad saaksid välja pakkuda menüüsid.&lt;br /&gt;
* erinevate söögikohtade kasutajad saaksid omavahel muljeid jagada.&lt;br /&gt;
* kuu aja aktiivsemad saavad prii lõuna.&lt;br /&gt;
* mingil ajal võib olla &amp;quot;happy hour&amp;quot; (enne sulgemist saab odavamalt).&lt;br /&gt;
* piiranguks on see, et toitu broneerida ei saa &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vaba tarkvara kasutamise võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Antud projekti puhul oleks võimalik kasutada [http://www.postgresql.org/ PostgreSQL] andmebaasi (vt. lisaks http://en.wikipedia.org/wiki/PostgreSQL ) Microsoft SQL Server&#039;i asemel. See võiks anda kasutajale võimaluse valida .NET ning [http://www.mono-project.com/ Mono] (vt. lisaks http://en.wikipedia.org/wiki/Mono_(software) ) platvormide vahel. Sel viisil oleks kliendil võimalik Microsoft&#039;i platvormi kõrval valida tõenäoliselt soodsam vaba tarkvara platvorm. Andmebaasi lõplik valik pole hetkel veel otsustatud.&lt;br /&gt;
&lt;br /&gt;
== Meeskond ja tööjaotus==&lt;br /&gt;
* Kristjan Stolin - projektijuht, suhtlus kliendiga, XML, wiki, teenuskihtide progemine, rollide halduse lehe progemine&lt;br /&gt;
* Ilmar Telga - XML, kliendiga suhtlus, wiki, teenuskihtide progemine, lõpprakenduste menüüd, login&lt;br /&gt;
* Rauno Rüga - XML, XSLT, andmebaasi loomine, wiki, mobiilirakendus, statistika&lt;br /&gt;
* Lauri Kermas - teenuskihtide ehitamine, wiki, login, kommenteerimise võimaluste progemine&lt;br /&gt;
&lt;br /&gt;
== XML Fail ==&lt;br /&gt;
=== XML ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Toidud&amp;gt;&lt;br /&gt;
  &amp;lt;Toit&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduNimetus&amp;gt;Viineri kaste&amp;lt;/ToiduNimetus&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduLiik&amp;gt;Praad&amp;lt;/ToiduLiik&amp;gt;&lt;br /&gt;
    &amp;lt;OlemasolevatYhikut&amp;gt;5&amp;lt;/OlemasolevatYhikut&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduKogus&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Poolportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;2011&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;1&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;9&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;15&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;07&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;23&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;        &lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.15&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;0&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;0&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;0&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;00&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;00&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;00&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Täisportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.80&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
    &amp;lt;/ToiduKogus&amp;gt;&lt;br /&gt;
    &amp;lt;Kommentaarid&amp;gt;&lt;br /&gt;
      &amp;lt;Kommentaar&amp;gt;&lt;br /&gt;
        &amp;lt;Saatja&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaNimi&amp;gt;Kristjan&amp;lt;/SaatjaNimi&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaRoll&amp;gt;Tudeng&amp;lt;/SaatjaRoll&amp;gt;&lt;br /&gt;
        &amp;lt;/Saatja&amp;gt;&lt;br /&gt;
        &amp;lt;Sisu&amp;gt;Minu lemmik toit ! Kui algebra tund ei hakkaks, sööks veel 5 portsjonit.&amp;lt;/Sisu&amp;gt;&lt;br /&gt;
      &amp;lt;/Kommentaar&amp;gt;&lt;br /&gt;
    &amp;lt;/Kommentaarid&amp;gt;&lt;br /&gt;
  &amp;lt;/Toit&amp;gt;&lt;br /&gt;
&amp;lt;/Toidud&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kommentaariks siis niipalju, et meie näide on ilma kohviku osata, selleks et näidet mitte liiga suureks ajada.&lt;br /&gt;
&lt;br /&gt;
Ka on meil moment puudu ID väljad, mis on igasugu andmebaasiga suhtlemiseks hädavajalikud, samas siin näidises palju juurde ei anna.&lt;br /&gt;
&lt;br /&gt;
Asja tegemisel avastasime, et põhiliseks arusaamatuse kohaks on toitude erinevad kogused (ehk siis pool portsjonit, suur / väike ja muud võrdlevad ühikud). Esimese võimalusena kaalusime teha lihtsalt täiesti eraldi toidud kõige kohta, stiilis &amp;quot;väike viineripraad&amp;quot; ja &amp;quot;suur viineripraad&amp;quot;. Kahjuks see variant ei kõlbaks eriti hästi, kuna need erinevad portsjonid kasutavad ikkagi samu materjale ja kui me peaks mingi süsteemiga näitama kui palju portsjoneid alles on. Sööklast näiteks pakuti et väike portsjon kasutab materjale kuskil 0.8 suure portsjoni ulatuses, ehk see suhtarv peaks olema kasutaja poolt (kohvikupidaja, restoraniomanik) ise sätitav. &lt;br /&gt;
&lt;br /&gt;
Tänu sellele sai meie süsteemi alustalaks siiski Toit, millel on oma Portsjonid siis erinevate hindade ja soodustustega. Moment pole meil ka Portsjoni XML osas toodud ära seost kogusega. (Kui palju ühe portsjoni lisamine/müümine peaks toidu üldkogust muutma).&lt;br /&gt;
&lt;br /&gt;
Kommenteerida saab meil moment toitu ennast, mitte eraldi portsjonit. Isegi kui kasutajad tahavad lisada kommentaare stiilis &amp;quot;See väike supp oli tõesti väga väike&amp;quot;, ei soovi nad seda ilmselt eraldi portsjoni alla panna. Tulevikus peaks kindlasti olema ka võimalus pigem kommenteerida üldisemalt (Kohvikut ennast, söögipaiku üldse), kui spetsiifilisemalt (Väikse prae kaste lisandi kohta).&lt;br /&gt;
&lt;br /&gt;
=== XML Schema ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Toidud&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Toit&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduNimetus&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;OlemasolevatYhikut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduKogus&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:choice maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;PortsjoniLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;Myygiaeg&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Aasta&amp;quot; type=&amp;quot;xs:unsignedShort&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Kuu&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Paev&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Tund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Minut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Sekund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;ToiduHind&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Eurohind&amp;quot; type=&amp;quot;xs:decimal&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Soodustus&amp;quot;&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseProtsent&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:choice&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Kommentaarid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Saatja&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaNimi&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaRoll&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Sisu&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
  &amp;lt;h2&amp;gt;Kohvikus müüdavad toidud&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr bgcolor=&amp;quot;#9acd32&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Veel alles&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Portsjon&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Müügiaeg&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustuse liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Kommentaar(id)&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;Toidud/Toit&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduNimetus&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduLiik&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;OlemasolevatYhikut&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;PortsjoniLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Paev&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Kuu&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Aasta&amp;quot; /&amp;gt; &amp;amp;nbsp;  &lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Tund&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Minut&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Sekund&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Eurohind&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseProtsent&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Kommentaarid/Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Sisu&amp;quot; /&amp;gt;&amp;amp;nbsp;(&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaRoll&amp;quot; /&amp;gt;&amp;amp;nbsp;&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaNimi&amp;quot; /&amp;gt;)&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XSLT poolt loodud tulemus on järgnev (lisasin veel kaks toitu XML faili, siin wiki lehel on ruumi kokkuhoiuks vaid 1 toit toitude listis):&lt;br /&gt;
[[File:Xslt.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arhitektuur ==&lt;br /&gt;
&lt;br /&gt;
Süsteem oli vahepeal plaanis ehitada kolmekihilise arhitektuuriga ([http://en.wikipedia.org/wiki/Multitier_architecture#Three-tier_architecture Three-tier architecture]). See peaks lihtsustama süsteemi haldamist ja laiendamist tulevikus. Aga kuna selle jaoks otsest vajadust polenud ja oleks vaid süsteemi keeruliseks ajanud, siis loobusime sellest.&lt;br /&gt;
&lt;br /&gt;
[[Image:three-tier.png|thumb|center|alt=Arhitektuuri skeem.|Arhitektuuri skeem.]]&lt;br /&gt;
&lt;br /&gt;
== Veebiteenus ==&lt;br /&gt;
===Andmemudel===&lt;br /&gt;
[[Image:KohvikuAndmemudel.jpg|thumb|right|alt=Kohviku projekti andmemudel|Andmemudel]]&lt;br /&gt;
Enne veebiteenuse meetodite kirjeldamist koostasime andmemudeli. Loodud andmemudeli põhjal lõime andmebaasi vajalike tabelite ja atribuutidega. Andmemudeli peal on rohelisega tähistatud tabelid, mis on oseselt seotud kohviku valdajaga ja mida WPF rakenduse jaoks kindlasti vaja on. Ülejäänud helesinised tabelid on vajalikud kasutajate võimaluste jaoks. Lisaks on andmemudelil kaks tabelit, mis pole teisega seotud, need on süsteemi administraatori jaoks, et oleks ülevaade, mis rakendused teenust enim kasutavad ning mis meetodeid kõige rohkem välja kutsutakse.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Teenuskihis olevad meetodid===&lt;br /&gt;
&lt;br /&gt;
====Kasutajatega seotud meetodid:====&lt;br /&gt;
*SaidiKasutajaLiik() - Tagastab antud kasutaja ID järgi kasutaja liigi nimetuse&lt;br /&gt;
*KustutaSaidiKasutaja() - Kustutab antud kasutaja ID järgi kasutaja tabelis Kasutaja&lt;br /&gt;
*AnnaKoikSaidiKasutajad() - Tagastab kõik kirjed tabelist Kasutaja&lt;br /&gt;
*AnnaKoikKohvikuKasutajad() - Tagastab antud kohviku ID järgi kõik kohviku kasutajad massiivina&lt;br /&gt;
*MuudaSaidiKasutajaLiik() - Muudab antud kasutaja ID järgi kasutaja liigi tabelis Kasutaja&lt;br /&gt;
*KoikLubatudSaidiKasutajaTyybid() - Tagastab andmebaasi kõik võimalikud kohviku kasutaja rollid (id-d ja nimed), muud andmed jäävad tühjaks&lt;br /&gt;
*KoikLubatudKohvikuRollid() - Tagastab andmebaasi kõik võimalikud site kasutaja rollid (id-d ja nimed), kohviku_id jääb tühjaks&lt;br /&gt;
*KasutajaKohvikuRollid() - Tagastab antud kasutaja ID järgi kõik kasutaja rollid kõikides kohvikutes&lt;br /&gt;
*MuudaKohvikuKasutajaRoll() - Muudab antud kasutaja ID ja kohviku ID järgi kasutaja rolli kohvikus, kui rolli pole, siis tekitatakse uus&lt;br /&gt;
*SaidiKasutajaLiikID() - Tagastab antud kasutaja ID järgi kasutaja liigi ID&lt;br /&gt;
*KohvikuKasutajaLiikID() - Tagastab antud kasutaja ID ja kohviku ID järgi kohviku kasutaja rolli ID&lt;br /&gt;
*AnnaKasutajaMeiliAadress() - Tagastab antud kasutaja nime alusel kasutaja meiliaadressi&lt;br /&gt;
*AnnaKasutajaIdJargi() - Tagastab kasutajanime kasutaja ID järgi&lt;br /&gt;
*AuthendiKasutaja() - Autendib kasutaja, õnnestumisel tagastab kasutaja ID, ebaõnnestumisel null &lt;br /&gt;
*RegistreeriKasutaja() - Registreerib kasutaja andmebaasi ja tagastab true kui kasutaja loomine õnnestus&lt;br /&gt;
&lt;br /&gt;
====Menüüga seotud meetodid====&lt;br /&gt;
*LisaArtikkelMenuuse() - Seob menüüartikli ja menüü&lt;br /&gt;
*LisaKohvikuleMenuu() - Seob menüü ja kohviku&lt;br /&gt;
*TagastabMenuuMuutujad() - Tagastab menüü järgi kas inimesel oleks õigust seda muuta&lt;br /&gt;
*KustutaMenuuJaKohvikuSeos() - Kustutab menüü ja kohviku seose&lt;br /&gt;
*LisaUusMenuu() - Teeb uue menüü, seob selle kohvikuga, kui kohviku ID on parameetrina kaasa antud&lt;br /&gt;
*MenuuKohvikuIdJargi() - Tagastab kohviku ID järgi kohviku tänaste või mitte tänaste menüüde ID-de massiivi&lt;br /&gt;
*LisaMenuuArtikkelMenuuse() - Sisestab antud müügiartikli menüüsse, mille ID on menyy_id&lt;br /&gt;
*KustutaMenuuArtikkel() - Kustutab müügiartikli ID ja menüü ID järgi müügiartikli menüüst&lt;br /&gt;
*TagastaMenuuArtiklid() - Tagastab menüü ID järgi menüüs olevad müügiartiklid&lt;br /&gt;
*VahetaMenuuArtiklit() - Muudab antud müügiartikli tabelis Myygiartikkel&lt;br /&gt;
*MenuuNimetus() - Tagastab menüü ID järgi menüü nimetuse&lt;br /&gt;
*AnnaMuugiartiklidMidaMenuusPole() - Tagastab müügiartiklid, mis pole veel menüüs, kus on juba müügiartiklid, mille IDd on antud massiivis&lt;br /&gt;
*AnnaMenuuNimed() - Tagastab kõigi menüüde nimetused tabelis Menyy&lt;br /&gt;
&lt;br /&gt;
====Kohvikutest üldiselt====&lt;br /&gt;
*KohvikuteNimed() - Tagastab kõigi kohvikute nimed massiivina&lt;br /&gt;
*KohvikuNimiIdJargi() - Tagastab antud kohviku ID järgi kohviku nime&lt;br /&gt;
*AnnaKoikOmanikuKohvikud() - Tagastab antud omaniku ID järgi kõik omaniku kohvikute ID-d massiivina&lt;br /&gt;
*Kohvikud() - Tagastab kõik kohvikute kirjed tabelist Kohvik&lt;br /&gt;
*KohvikuteArv() - Tagastab kõigi kohvikute arvu&lt;br /&gt;
*AnnaKaubad() - Tagastab kõik kaubad tabelist Kaup&lt;br /&gt;
*LisaKaup() - Lisab kauba kaupade nimekirja&lt;br /&gt;
*LisaKohvik() - Uue kohviku lisamine&lt;br /&gt;
&lt;br /&gt;
====Kommentaaridega seotud meetodid:====&lt;br /&gt;
*KohvikuKommentaarideArv() - Kohviku kommentaaride arv&lt;br /&gt;
*AnnaKohvikuKommentaarid() - Tagastab kommentaarid lehtede kaupa&lt;br /&gt;
*AnnaKohvikuKommentaarideHinded() - Tagastab kommentaaride jaoks võimalikud hinded koos kirjeldustega&lt;br /&gt;
*LisaKohvikuKommentaar() - Lisab kohviku kommentaari&lt;br /&gt;
&lt;br /&gt;
====Statistikaga seotud meetodid:====&lt;br /&gt;
*StatistikaRakendusteKohtaTana() - Tagastab rakenduse nimed ja nende vastu tehtud päringud tänasel päeval&lt;br /&gt;
*StatistikaRakendusteKohtaViimaneNadal() - Tagastab rakenduse nimed ja nende vastu tehtud päringud viimase nädala jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaSellelKuul() - Tagastab rakenduse nimed ja nende vastu tehtud päringud selle kuu jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaKokku() - Tagastab rakenduse nimed ja nende vastu tehtud päringud kogu aja vältel&lt;br /&gt;
*StatistikaMeetoditeKohtaTana() - Meetod leiab tänase päeva jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaViimaneNadal() - Meetod leiab viimase nädala jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaSellelKuul() - Meetod leiab kuu jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaKokku() - Meetod leiab kogu aja vältel kasutatud meetodid ja paringute arvu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebiteenuse projekti (WCF + andmebaas) saab siit: http://enos.itcollege.ee/~rruga/VRII/Teenusekiht.zip&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : CMS ==&lt;br /&gt;
&lt;br /&gt;
Meie loodud veebirakenduses on realiseeritud järgnevad CMS seotud funktsionaalsused :&lt;br /&gt;
*Kõikide kohvikute lehed on eraldi aadressiga, mis võimaldab eri kohvikud bookmarkida ja facebooki like anda. See on saavutatud tänu ?kohvik=1 aadressiribal, kus parameeteri kohvik number identifitseerib kohviku.&lt;br /&gt;
*Adminni õigustega kasutajal on võimalik lisada uus kohvikuid andembaasi&lt;br /&gt;
*Kohviku omanik saab lisada menüüd, muuta seda ja kustutada&lt;br /&gt;
*Adminnid saavad kasutajaid hallata, määrates nendele rolle, mis omakorda tagab teatud õigused&lt;br /&gt;
*Kohviku omanikud saavad  oma kohviku kasutajaid hallata, määrates neile näiteks müüja või kliendi rolli.&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Veebirakendus ==&lt;br /&gt;
&lt;br /&gt;
Veebiteenust kasutavaks veebirakenduseks on ASP.NET rakendus. &lt;br /&gt;
&lt;br /&gt;
* Esilehel saab otsida kohvikuid või minna kohe huvipakkuva kohviku menüü lehele.&lt;br /&gt;
* Kohviku menüü lehel on näha tänased ja teised menüüd, kohviku lahtioleku aeg. Kui panna veebirakendus internetti, siis on võimalus Facebook-i kaudu kohviku fänniks hakata. Kommenteerimise ja soodustuste osa on veel pooleli.&lt;br /&gt;
* Sisse loginud kohviku omanik saab ka kohviku menüüsid muuta, lisada, kustutada. &lt;br /&gt;
* Kasutajate lehel saab sisse loginud kohviku omanik hallata kohviku kasutajaid.&lt;br /&gt;
* Statistika lehel saab vaadata statistikat teenust kasutanud rakenduste ja kasutatud meetodite kohta. Näeb nii tänase päeva, viimase nädala, selle kuu ja aasta statistikat&lt;br /&gt;
* Kohviku lisamise lehel saab aga admini õigustege kasutaja lisada uue kohviku.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:KohvikuMenuEdit.JPG|800px|Kohviku menüü muutmise leht. ITK kohviku menüüde muutmiseks tuleb logida sisse kasutajaga Ilmar parooliga &amp;quot;ilmar&amp;quot;.]]&lt;br /&gt;
&lt;br /&gt;
Kohviku menüü muutmise leht. ITK kohviku menüüde muutmiseks tuleb logida sisse kasutajaga Ilmar parooliga &amp;quot;ilmar&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus II : Mobiilirakendus ==&lt;br /&gt;
&lt;br /&gt;
Teine rakendus, mis veebiteenuse peale ehitatud sai, oli Windows Phone 7 rakendus. Lühidalt kirjeldades saab peale rakenduse käivitamist näha listi kõikidest olemasolevatest kohvikutest. Kui vajutad mingi kohviku nime peale, avaneb täpsem kirjeldus kohviku kohta, kust näeb lisaks kohviku nimele ka lühikest kirjeldust, tänast lahtiolekuaega ja kohviku aadressit. Samuti on kohviku kirjelduse lehel viide kohviku tänasele menüüle ja kommenteerimisele. Vajutades vaata menüüd nuppu avaneb vaade täna müügis olevatest müügiartiklitest ja nende hinnast, vajutades aga kommenteeri kohvikut nupule avaneb võimalus lisada kohviku kohta kommentaar.&lt;br /&gt;
&lt;br /&gt;
Kokkuvõttev pilt realiseeritud võimalustest:&lt;br /&gt;
&lt;br /&gt;
[[Image:WP7 rakendus.jpg|alt=WP7 rakendus.|WP7 rakenduse võimalused.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mobiilirakenduse saab alla tõmmata siit: http://enos.itcollege.ee/~rruga/VRII/Mobiilirakendus.rar&lt;br /&gt;
&lt;br /&gt;
NB! Et mobiilirakendust proovida ja mõistliku tulemust saada peab teil olema kõige uuem versioon meie projekti teenuskihist ning teenuskiht peab töötama.&lt;br /&gt;
&lt;br /&gt;
== Meeskonna kokkuvõttev aruanne ==&lt;br /&gt;
&lt;br /&gt;
== Logi ==&lt;br /&gt;
=== 7. Mai ===&lt;br /&gt;
Mobiilirakendus sai valmis ja selle kohta uuendatud vikilehte.&lt;br /&gt;
&lt;br /&gt;
=== 17. aprill ===&lt;br /&gt;
Wikilehe täiendamine andmemudeli ja veebiteenuse meetodite kirjeldusega.&lt;br /&gt;
&lt;br /&gt;
=== 9. aprill ===&lt;br /&gt;
Tegime rollide halduse, münüüde muutmise vormi. Meili saatmine registreerimisel. Toimus andmebaasi andmemudeli väike muutus. &lt;br /&gt;
&lt;br /&gt;
=== 30. märts ===&lt;br /&gt;
Tehtud on kohviku menüü ja kohviku kommenteerimise leht.&lt;br /&gt;
&lt;br /&gt;
=== 26. märts ===&lt;br /&gt;
Tehtud on esimesed veebiteenuse meetodid ja veebirakendusele kasutajate registreerimine.&lt;br /&gt;
&lt;br /&gt;
=== 10. märts ===&lt;br /&gt;
Väikese häki abil õnnestus kohviku kassa arvutis saada tööle üks Forms-i proovirakendus.&lt;br /&gt;
&lt;br /&gt;
=== 8. märts ===&lt;br /&gt;
Kuna kassa-aparaadis on operatsioonisüsteemiks Windows XP ja raud on 1.99 GHz, 256 RAM siis peaks saama&lt;br /&gt;
prototüübiks teha sinna peale rakenduse, mille ülesandeks menüüga tegelemine. &lt;br /&gt;
&lt;br /&gt;
=== 7. märts ===&lt;br /&gt;
Linnar Viik andis meile järgmist nõu: tuleb eristada kahte asja - see, mis peab valmis saama (&#039;&#039;must&#039;&#039;) ja see, mis oleks tore (&#039;&#039;nice to have&#039;&#039;). Valmis peab saama menüüga ekraan seinal (esialgu kasutajale prototüübi näitamiseks kasvõi näiteks PowerPoint-i abil tehtud). Alles siis kui on kasutajalt positiivne tagasiside saadud, võib edasi minna reaalse tarkvaralahenduse loomisega. Kui ka see on valmis ja kasutaja sellega rahul võib juurde mõelda &#039;&#039;nice to have&#039;&#039; asju (näiteks eelinfo järgmise päeva menüü kohta, üliõpilasesinduse sõnumite riba ja muid asju).&lt;br /&gt;
&lt;br /&gt;
Saime teada, et kui tahame, et meie loodav süsteem suhtleks IT Kohviku kassasüsteemiga, siis tuleb selle süsteemi tootjatega ühendust võtta ja nendega konsulteerida.&lt;br /&gt;
&lt;br /&gt;
=== 19.Veebruar ===&lt;br /&gt;
*Valmis XSLT fail.&lt;br /&gt;
&lt;br /&gt;
=== 9.Veebruar ===&lt;br /&gt;
* Esmane versioon XML ja XML Schemast olemas&lt;br /&gt;
* Tekkis küsimus kas XSLT faili tuleb käsitsi tekitada või automaatselt.&lt;br /&gt;
* Küsimus oli ka kas lahendasime portsjoni asja mõistlikult või oleks mõni teine lähenemine parem olnud.&lt;br /&gt;
* Küsimus, kas XML fail on liiga üle pingutatud või sobiva keerukusega&lt;br /&gt;
&lt;br /&gt;
=== 7. Veebruar ===&lt;br /&gt;
* Võtsime õppejõu poolt pakutud ideest kohe kinni, sest me eelistame teha praktilist asja, mida saab kasutada ja mille kasutamist saame ka iga päev jälgida. &lt;br /&gt;
* Esimese asjana otsustasime välja uurida mida meie &amp;quot;kliendid&amp;quot; (süsteemi tellijad) meilt ootavad. (Soovid idee punkti all)&lt;br /&gt;
* Valminud on lihtne teenusest ja klientidest koosnev süsteemi testmudel.&lt;br /&gt;
&lt;br /&gt;
== Kasulikud lingid ==&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCF_auto_client_proxies.aspx&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/ms178472.aspx&lt;br /&gt;
&lt;br /&gt;
http://support.microsoft.com/kb/305141&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/aa702565.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/scottgu/archive/2007/04/06/tip-trick-enabling-ssl-on-iis7-using-self-signed-certificates.aspx&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Võrgurakendused II: hajussüsteemide ehitamine]]&lt;br /&gt;
[[Category: Veebirakenduste loomine ASP.NET abil]]&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=30709</id>
		<title>Meeskond &quot;FoodWars&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=30709"/>
		<updated>2011-05-08T18:54:01Z</updated>

		<summary type="html">&lt;p&gt;Rruga: /* Klientrakendus I : CMS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Idee ==&lt;br /&gt;
Meie tiimil on plaanis teha internetipõhine söökla menüü süsteem (aluseks IT Kolledži kohvik, aga suunitlus selline, et kõik kohvikud/sööklad saaksid teha endale kasutajakonto ja hakata rakendust kasutama), kust saaks jälgida menüüd, mis sööke saab süüa, mis veel järgi on, kasutajatel on ka võimalus sööke hinnata (stiilis &amp;quot;meeldib&amp;quot;, &amp;quot;ei meeldi&amp;quot; nagu Facebook-is).&lt;br /&gt;
&lt;br /&gt;
Kohvikupidaja Teele soovid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* elektroonilisest menüüst asju kustutada, isegi siis kui asja peaks olema teoreetiliselt alles, aga tegelikult on asi otsas.&lt;br /&gt;
* elektrikatkestuse korral jääb menüü püsima. Ta peab teadma hindu mistahes olukorras.&lt;br /&gt;
* menüül näidatakse automaatselt ka ISIC kaardi omanike soodushinnad&lt;br /&gt;
* süsteem toetab ka poole portsjoni müümist.&lt;br /&gt;
&lt;br /&gt;
Linnar Viigi soovid/visioonid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* kõik oleks ka internetist kättesaadav, peale LCD ekraani, mis kajastab menüüd sööklas.&lt;br /&gt;
* aluseks facebook, kus siis söögid oleks nagu facebook-i alateemad.&lt;br /&gt;
* saab sööke hinnata, kommenteerida (täna oli väga maitsev praad).&lt;br /&gt;
* kasutajad saaks vaadata, mis menüüs on (ka järgmisel nädalal) ja mitu portsu veel alles on.&lt;br /&gt;
* kasutajad saaksid välja pakkuda menüüsid.&lt;br /&gt;
* erinevate söögikohtade kasutajad saaksid omavahel muljeid jagada.&lt;br /&gt;
* kuu aja aktiivsemad saavad prii lõuna.&lt;br /&gt;
* mingil ajal võib olla &amp;quot;happy hour&amp;quot; (enne sulgemist saab odavamalt).&lt;br /&gt;
* piiranguks on see, et toitu broneerida ei saa &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vaba tarkvara kasutamise võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Antud projekti puhul oleks võimalik kasutada [http://www.postgresql.org/ PostgreSQL] andmebaasi (vt. lisaks http://en.wikipedia.org/wiki/PostgreSQL ) Microsoft SQL Server&#039;i asemel. See võiks anda kasutajale võimaluse valida .NET ning [http://www.mono-project.com/ Mono] (vt. lisaks http://en.wikipedia.org/wiki/Mono_(software) ) platvormide vahel. Sel viisil oleks kliendil võimalik Microsoft&#039;i platvormi kõrval valida tõenäoliselt soodsam vaba tarkvara platvorm. Andmebaasi lõplik valik pole hetkel veel otsustatud.&lt;br /&gt;
&lt;br /&gt;
== Meeskond ja tööjaotus==&lt;br /&gt;
* Kristjan Stolin - projektijuht, suhtlus kliendiga, XML, wiki, teenuskihtide progemine, rollide halduse lehe progemine&lt;br /&gt;
* Ilmar Telga - XML, kliendiga suhtlus, wiki, teenuskihtide progemine, lõpprakenduste menüüd, login&lt;br /&gt;
* Rauno Rüga - XML, XSLT, andmebaasi loomine, wiki, mobiilirakendus, statistika&lt;br /&gt;
* Lauri Kermas - teenuskihtide ehitamine, wiki, login, kommenteerimise võimaluste progemine&lt;br /&gt;
&lt;br /&gt;
== XML Fail ==&lt;br /&gt;
=== XML ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Toidud&amp;gt;&lt;br /&gt;
  &amp;lt;Toit&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduNimetus&amp;gt;Viineri kaste&amp;lt;/ToiduNimetus&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduLiik&amp;gt;Praad&amp;lt;/ToiduLiik&amp;gt;&lt;br /&gt;
    &amp;lt;OlemasolevatYhikut&amp;gt;5&amp;lt;/OlemasolevatYhikut&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduKogus&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Poolportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;2011&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;1&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;9&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;15&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;07&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;23&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;        &lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.15&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;0&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;0&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;0&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;00&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;00&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;00&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Täisportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.80&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
    &amp;lt;/ToiduKogus&amp;gt;&lt;br /&gt;
    &amp;lt;Kommentaarid&amp;gt;&lt;br /&gt;
      &amp;lt;Kommentaar&amp;gt;&lt;br /&gt;
        &amp;lt;Saatja&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaNimi&amp;gt;Kristjan&amp;lt;/SaatjaNimi&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaRoll&amp;gt;Tudeng&amp;lt;/SaatjaRoll&amp;gt;&lt;br /&gt;
        &amp;lt;/Saatja&amp;gt;&lt;br /&gt;
        &amp;lt;Sisu&amp;gt;Minu lemmik toit ! Kui algebra tund ei hakkaks, sööks veel 5 portsjonit.&amp;lt;/Sisu&amp;gt;&lt;br /&gt;
      &amp;lt;/Kommentaar&amp;gt;&lt;br /&gt;
    &amp;lt;/Kommentaarid&amp;gt;&lt;br /&gt;
  &amp;lt;/Toit&amp;gt;&lt;br /&gt;
&amp;lt;/Toidud&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kommentaariks siis niipalju, et meie näide on ilma kohviku osata, selleks et näidet mitte liiga suureks ajada.&lt;br /&gt;
&lt;br /&gt;
Ka on meil moment puudu ID väljad, mis on igasugu andmebaasiga suhtlemiseks hädavajalikud, samas siin näidises palju juurde ei anna.&lt;br /&gt;
&lt;br /&gt;
Asja tegemisel avastasime, et põhiliseks arusaamatuse kohaks on toitude erinevad kogused (ehk siis pool portsjonit, suur / väike ja muud võrdlevad ühikud). Esimese võimalusena kaalusime teha lihtsalt täiesti eraldi toidud kõige kohta, stiilis &amp;quot;väike viineripraad&amp;quot; ja &amp;quot;suur viineripraad&amp;quot;. Kahjuks see variant ei kõlbaks eriti hästi, kuna need erinevad portsjonid kasutavad ikkagi samu materjale ja kui me peaks mingi süsteemiga näitama kui palju portsjoneid alles on. Sööklast näiteks pakuti et väike portsjon kasutab materjale kuskil 0.8 suure portsjoni ulatuses, ehk see suhtarv peaks olema kasutaja poolt (kohvikupidaja, restoraniomanik) ise sätitav. &lt;br /&gt;
&lt;br /&gt;
Tänu sellele sai meie süsteemi alustalaks siiski Toit, millel on oma Portsjonid siis erinevate hindade ja soodustustega. Moment pole meil ka Portsjoni XML osas toodud ära seost kogusega. (Kui palju ühe portsjoni lisamine/müümine peaks toidu üldkogust muutma).&lt;br /&gt;
&lt;br /&gt;
Kommenteerida saab meil moment toitu ennast, mitte eraldi portsjonit. Isegi kui kasutajad tahavad lisada kommentaare stiilis &amp;quot;See väike supp oli tõesti väga väike&amp;quot;, ei soovi nad seda ilmselt eraldi portsjoni alla panna. Tulevikus peaks kindlasti olema ka võimalus pigem kommenteerida üldisemalt (Kohvikut ennast, söögipaiku üldse), kui spetsiifilisemalt (Väikse prae kaste lisandi kohta).&lt;br /&gt;
&lt;br /&gt;
=== XML Schema ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Toidud&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Toit&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduNimetus&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;OlemasolevatYhikut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduKogus&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:choice maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;PortsjoniLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;Myygiaeg&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Aasta&amp;quot; type=&amp;quot;xs:unsignedShort&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Kuu&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Paev&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Tund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Minut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Sekund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;ToiduHind&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Eurohind&amp;quot; type=&amp;quot;xs:decimal&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Soodustus&amp;quot;&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseProtsent&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:choice&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Kommentaarid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Saatja&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaNimi&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaRoll&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Sisu&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
  &amp;lt;h2&amp;gt;Kohvikus müüdavad toidud&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr bgcolor=&amp;quot;#9acd32&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Veel alles&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Portsjon&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Müügiaeg&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustuse liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Kommentaar(id)&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;Toidud/Toit&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduNimetus&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduLiik&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;OlemasolevatYhikut&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;PortsjoniLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Paev&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Kuu&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Aasta&amp;quot; /&amp;gt; &amp;amp;nbsp;  &lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Tund&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Minut&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Sekund&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Eurohind&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseProtsent&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Kommentaarid/Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Sisu&amp;quot; /&amp;gt;&amp;amp;nbsp;(&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaRoll&amp;quot; /&amp;gt;&amp;amp;nbsp;&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaNimi&amp;quot; /&amp;gt;)&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XSLT poolt loodud tulemus on järgnev (lisasin veel kaks toitu XML faili, siin wiki lehel on ruumi kokkuhoiuks vaid 1 toit toitude listis):&lt;br /&gt;
[[File:Xslt.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arhitektuur ==&lt;br /&gt;
&lt;br /&gt;
Süsteem oli vahepeal plaanis ehitada kolmekihilise arhitektuuriga ([http://en.wikipedia.org/wiki/Multitier_architecture#Three-tier_architecture Three-tier architecture]). See peaks lihtsustama süsteemi haldamist ja laiendamist tulevikus. Aga kuna selle jaoks otsest vajadust polenud ja oleks vaid süsteemi keeruliseks ajanud, siis loobusime sellest.&lt;br /&gt;
&lt;br /&gt;
[[Image:three-tier.png|thumb|center|alt=Arhitektuuri skeem.|Arhitektuuri skeem.]]&lt;br /&gt;
&lt;br /&gt;
== Veebiteenus ==&lt;br /&gt;
===Andmemudel===&lt;br /&gt;
[[Image:KohvikuAndmemudel.jpg|thumb|right|alt=Kohviku projekti andmemudel|Andmemudel]]&lt;br /&gt;
Enne veebiteenuse meetodite kirjeldamist koostasime andmemudeli. Loodud andmemudeli põhjal lõime andmebaasi vajalike tabelite ja atribuutidega. Andmemudeli peal on rohelisega tähistatud tabelid, mis on oseselt seotud kohviku valdajaga ja mida WPF rakenduse jaoks kindlasti vaja on. Ülejäänud helesinised tabelid on vajalikud kasutajate võimaluste jaoks. Lisaks on andmemudelil kaks tabelit, mis pole teisega seotud, need on süsteemi administraatori jaoks, et oleks ülevaade, mis rakendused teenust enim kasutavad ning mis meetodeid kõige rohkem välja kutsutakse.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Teenuskihis olevad meetodid===&lt;br /&gt;
&lt;br /&gt;
====Kasutajatega seotud meetodid:====&lt;br /&gt;
*SaidiKasutajaLiik() - Tagastab antud kasutaja ID järgi kasutaja liigi nimetuse&lt;br /&gt;
*KustutaSaidiKasutaja() - Kustutab antud kasutaja ID järgi kasutaja tabelis Kasutaja&lt;br /&gt;
*AnnaKoikSaidiKasutajad() - Tagastab kõik kirjed tabelist Kasutaja&lt;br /&gt;
*AnnaKoikKohvikuKasutajad() - Tagastab antud kohviku ID järgi kõik kohviku kasutajad massiivina&lt;br /&gt;
*MuudaSaidiKasutajaLiik() - Muudab antud kasutaja ID järgi kasutaja liigi tabelis Kasutaja&lt;br /&gt;
*KoikLubatudSaidiKasutajaTyybid() - Tagastab andmebaasi kõik võimalikud kohviku kasutaja rollid (id-d ja nimed), muud andmed jäävad tühjaks&lt;br /&gt;
*KoikLubatudKohvikuRollid() - Tagastab andmebaasi kõik võimalikud site kasutaja rollid (id-d ja nimed), kohviku_id jääb tühjaks&lt;br /&gt;
*KasutajaKohvikuRollid() - Tagastab antud kasutaja ID järgi kõik kasutaja rollid kõikides kohvikutes&lt;br /&gt;
*MuudaKohvikuKasutajaRoll() - Muudab antud kasutaja ID ja kohviku ID järgi kasutaja rolli kohvikus, kui rolli pole, siis tekitatakse uus&lt;br /&gt;
*SaidiKasutajaLiikID() - Tagastab antud kasutaja ID järgi kasutaja liigi ID&lt;br /&gt;
*KohvikuKasutajaLiikID() - Tagastab antud kasutaja ID ja kohviku ID järgi kohviku kasutaja rolli ID&lt;br /&gt;
*AnnaKasutajaMeiliAadress() - Tagastab antud kasutaja nime alusel kasutaja meiliaadressi&lt;br /&gt;
*AnnaKasutajaIdJargi() - Tagastab kasutajanime kasutaja ID järgi&lt;br /&gt;
*AuthendiKasutaja() - Autendib kasutaja, õnnestumisel tagastab kasutaja ID, ebaõnnestumisel null &lt;br /&gt;
*RegistreeriKasutaja() - Registreerib kasutaja andmebaasi ja tagastab true kui kasutaja loomine õnnestus&lt;br /&gt;
&lt;br /&gt;
====Menüüga seotud meetodid====&lt;br /&gt;
*LisaArtikkelMenuuse() - Seob menüüartikli ja menüü&lt;br /&gt;
*LisaKohvikuleMenuu() - Seob menüü ja kohviku&lt;br /&gt;
*TagastabMenuuMuutujad() - Tagastab menüü järgi kas inimesel oleks õigust seda muuta&lt;br /&gt;
*KustutaMenuuJaKohvikuSeos() - Kustutab menüü ja kohviku seose&lt;br /&gt;
*LisaUusMenuu() - Teeb uue menüü, seob selle kohvikuga, kui kohviku ID on parameetrina kaasa antud&lt;br /&gt;
*MenuuKohvikuIdJargi() - Tagastab kohviku ID järgi kohviku tänaste või mitte tänaste menüüde ID-de massiivi&lt;br /&gt;
*LisaMenuuArtikkelMenuuse() - Sisestab antud müügiartikli menüüsse, mille ID on menyy_id&lt;br /&gt;
*KustutaMenuuArtikkel() - Kustutab müügiartikli ID ja menüü ID järgi müügiartikli menüüst&lt;br /&gt;
*TagastaMenuuArtiklid() - Tagastab menüü ID järgi menüüs olevad müügiartiklid&lt;br /&gt;
*VahetaMenuuArtiklit() - Muudab antud müügiartikli tabelis Myygiartikkel&lt;br /&gt;
*MenuuNimetus() - Tagastab menüü ID järgi menüü nimetuse&lt;br /&gt;
*AnnaMuugiartiklidMidaMenuusPole() - Tagastab müügiartiklid, mis pole veel menüüs, kus on juba müügiartiklid, mille IDd on antud massiivis&lt;br /&gt;
*AnnaMenuuNimed() - Tagastab kõigi menüüde nimetused tabelis Menyy&lt;br /&gt;
&lt;br /&gt;
====Kohvikutest üldiselt====&lt;br /&gt;
*KohvikuteNimed() - Tagastab kõigi kohvikute nimed massiivina&lt;br /&gt;
*KohvikuNimiIdJargi() - Tagastab antud kohviku ID järgi kohviku nime&lt;br /&gt;
*AnnaKoikOmanikuKohvikud() - Tagastab antud omaniku ID järgi kõik omaniku kohvikute ID-d massiivina&lt;br /&gt;
*Kohvikud() - Tagastab kõik kohvikute kirjed tabelist Kohvik&lt;br /&gt;
*KohvikuteArv() - Tagastab kõigi kohvikute arvu&lt;br /&gt;
*AnnaKaubad() - Tagastab kõik kaubad tabelist Kaup&lt;br /&gt;
*LisaKaup() - Lisab kauba kaupade nimekirja&lt;br /&gt;
*LisaKohvik() - Uue kohviku lisamine&lt;br /&gt;
&lt;br /&gt;
====Kommentaaridega seotud meetodid:====&lt;br /&gt;
*KohvikuKommentaarideArv() - Kohviku kommentaaride arv&lt;br /&gt;
*AnnaKohvikuKommentaarid() - Tagastab kommentaarid lehtede kaupa&lt;br /&gt;
*AnnaKohvikuKommentaarideHinded() - Tagastab kommentaaride jaoks võimalikud hinded koos kirjeldustega&lt;br /&gt;
*LisaKohvikuKommentaar() - Lisab kohviku kommentaari&lt;br /&gt;
&lt;br /&gt;
====Statistikaga seotud meetodid:====&lt;br /&gt;
*StatistikaRakendusteKohtaTana() - Tagastab rakenduse nimed ja nende vastu tehtud päringud tänasel päeval&lt;br /&gt;
*StatistikaRakendusteKohtaViimaneNadal() - Tagastab rakenduse nimed ja nende vastu tehtud päringud viimase nädala jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaSellelKuul() - Tagastab rakenduse nimed ja nende vastu tehtud päringud selle kuu jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaKokku() - Tagastab rakenduse nimed ja nende vastu tehtud päringud kogu aja vältel&lt;br /&gt;
*StatistikaMeetoditeKohtaTana() - Meetod leiab tänase päeva jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaViimaneNadal() - Meetod leiab viimase nädala jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaSellelKuul() - Meetod leiab kuu jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaKokku() - Meetod leiab kogu aja vältel kasutatud meetodid ja paringute arvu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebiteenuse projekti (WCF + andmebaas) saab siit: http://enos.itcollege.ee/~rruga/VRII/Teenusekiht.zip&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : CMS ==&lt;br /&gt;
&lt;br /&gt;
Meie loodud veebirakenduses on realiseeritud järgnevad CMS seotud funktsionaalsused :&lt;br /&gt;
*Kõikide kohvikute lehed on eraldi aadressiga, mis võimaldab eri kohvikud bookmarkida ja facebooki like anda. See on saavutatud tänu ?kohvik=1 aadressiribal, kus parameeteri kohvik number identifitseerib kohviku.&lt;br /&gt;
*Adminni õigustega kasutajal on võimalik lisada uus kohvikuid andembaasi&lt;br /&gt;
*Kohviku omanik saab lisada menüüd, muuta seda ja kustutada&lt;br /&gt;
*Adminnid saavad kasutajaid hallata, määrates nendele rolle, mis omakorda tagab teatud õigused&lt;br /&gt;
*Kohviku omanikud saavad  oma kohviku kasutajaid hallata, määrates neile näiteks müüja või kliendi rolli.&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Veebirakendus ==&lt;br /&gt;
&lt;br /&gt;
Veebiteenust kasutavaks veebirakenduseks on ASP.NET rakendus. &lt;br /&gt;
&lt;br /&gt;
* Esilehel saab otsida kohvikuid või minna kohe huvipakkuva kohviku menüü lehele.&lt;br /&gt;
* Kohviku menüü lehel on näha tänased ja teised menüüd, kohviku lahtioleku aeg. Kui panna veebirakendus internetti, siis on võimalus Facebook-i kaudu kohviku fänniks hakata. Kommenteerimise ja soodustuste osa on veel pooleli.&lt;br /&gt;
* Sisse loginud kohviku omanik saab ka kohviku menüüsid muuta, lisada, kustutada. &lt;br /&gt;
* Kasutajate lehel saab sisse loginud kohviku omanik hallata kohviku kasutajaid.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:KohvikuMenuEdit.JPG|thumb|left|800px|Kohviku menüü muutmise leht. ITK kohviku menüüde muutmiseks tuleb logida sisse kasutajaga Ilmar parooliga &amp;quot;ilmar&amp;quot;.]]&lt;br /&gt;
&lt;br /&gt;
Kohviku menüü muutmise leht. ITK kohviku menüüde muutmiseks tuleb logida sisse kasutajaga Ilmar parooliga &amp;quot;ilmar&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus II : Mobiilirakendus ==&lt;br /&gt;
&lt;br /&gt;
Teine rakendus, mis veebiteenuse peale ehitatud sai, oli Windows Phone 7 rakendus. Lühidalt kirjeldades saab peale rakenduse käivitamist näha listi kõikidest olemasolevatest kohvikutest. Kui vajutad mingi kohviku nime peale, avaneb täpsem kirjeldus kohviku kohta, kust näeb lisaks kohviku nimele ka lühikest kirjeldust, tänast lahtiolekuaega ja kohviku aadressit. Samuti on kohviku kirjelduse lehel viide kohviku tänasele menüüle ja kommenteerimisele. Vajutades vaata menüüd nuppu avaneb vaade täna müügis olevatest müügiartiklitest ja nende hinnast, vajutades aga kommenteeri kohvikut nupule avaneb võimalus lisada kohviku kohta kommentaar.&lt;br /&gt;
&lt;br /&gt;
Kokkuvõttev pilt realiseeritud võimalustest:&lt;br /&gt;
&lt;br /&gt;
[[Image:WP7 rakendus.jpg|alt=WP7 rakendus.|WP7 rakenduse võimalused.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mobiilirakenduse saab alla tõmmata siit: http://enos.itcollege.ee/~rruga/VRII/Mobiilirakendus.rar&lt;br /&gt;
&lt;br /&gt;
NB! Et mobiilirakendust proovida ja mõistliku tulemust saada peab teil olema kõige uuem versioon meie projekti teenuskihist ning teenuskiht peab töötama.&lt;br /&gt;
&lt;br /&gt;
== Meeskonna kokkuvõttev aruanne ==&lt;br /&gt;
&lt;br /&gt;
== Logi ==&lt;br /&gt;
=== 7. Mai ===&lt;br /&gt;
Mobiilirakendus sai valmis ja selle kohta uuendatud vikilehte.&lt;br /&gt;
&lt;br /&gt;
=== 17. aprill ===&lt;br /&gt;
Wikilehe täiendamine andmemudeli ja veebiteenuse meetodite kirjeldusega.&lt;br /&gt;
&lt;br /&gt;
=== 9. aprill ===&lt;br /&gt;
Tegime rollide halduse, münüüde muutmise vormi. Meili saatmine registreerimisel. Toimus andmebaasi andmemudeli väike muutus. &lt;br /&gt;
&lt;br /&gt;
=== 30. märts ===&lt;br /&gt;
Tehtud on kohviku menüü ja kohviku kommenteerimise leht.&lt;br /&gt;
&lt;br /&gt;
=== 26. märts ===&lt;br /&gt;
Tehtud on esimesed veebiteenuse meetodid ja veebirakendusele kasutajate registreerimine.&lt;br /&gt;
&lt;br /&gt;
=== 10. märts ===&lt;br /&gt;
Väikese häki abil õnnestus kohviku kassa arvutis saada tööle üks Forms-i proovirakendus.&lt;br /&gt;
&lt;br /&gt;
=== 8. märts ===&lt;br /&gt;
Kuna kassa-aparaadis on operatsioonisüsteemiks Windows XP ja raud on 1.99 GHz, 256 RAM siis peaks saama&lt;br /&gt;
prototüübiks teha sinna peale rakenduse, mille ülesandeks menüüga tegelemine. &lt;br /&gt;
&lt;br /&gt;
=== 7. märts ===&lt;br /&gt;
Linnar Viik andis meile järgmist nõu: tuleb eristada kahte asja - see, mis peab valmis saama (&#039;&#039;must&#039;&#039;) ja see, mis oleks tore (&#039;&#039;nice to have&#039;&#039;). Valmis peab saama menüüga ekraan seinal (esialgu kasutajale prototüübi näitamiseks kasvõi näiteks PowerPoint-i abil tehtud). Alles siis kui on kasutajalt positiivne tagasiside saadud, võib edasi minna reaalse tarkvaralahenduse loomisega. Kui ka see on valmis ja kasutaja sellega rahul võib juurde mõelda &#039;&#039;nice to have&#039;&#039; asju (näiteks eelinfo järgmise päeva menüü kohta, üliõpilasesinduse sõnumite riba ja muid asju).&lt;br /&gt;
&lt;br /&gt;
Saime teada, et kui tahame, et meie loodav süsteem suhtleks IT Kohviku kassasüsteemiga, siis tuleb selle süsteemi tootjatega ühendust võtta ja nendega konsulteerida.&lt;br /&gt;
&lt;br /&gt;
=== 19.Veebruar ===&lt;br /&gt;
*Valmis XSLT fail.&lt;br /&gt;
&lt;br /&gt;
=== 9.Veebruar ===&lt;br /&gt;
* Esmane versioon XML ja XML Schemast olemas&lt;br /&gt;
* Tekkis küsimus kas XSLT faili tuleb käsitsi tekitada või automaatselt.&lt;br /&gt;
* Küsimus oli ka kas lahendasime portsjoni asja mõistlikult või oleks mõni teine lähenemine parem olnud.&lt;br /&gt;
* Küsimus, kas XML fail on liiga üle pingutatud või sobiva keerukusega&lt;br /&gt;
&lt;br /&gt;
=== 7. Veebruar ===&lt;br /&gt;
* Võtsime õppejõu poolt pakutud ideest kohe kinni, sest me eelistame teha praktilist asja, mida saab kasutada ja mille kasutamist saame ka iga päev jälgida. &lt;br /&gt;
* Esimese asjana otsustasime välja uurida mida meie &amp;quot;kliendid&amp;quot; (süsteemi tellijad) meilt ootavad. (Soovid idee punkti all)&lt;br /&gt;
* Valminud on lihtne teenusest ja klientidest koosnev süsteemi testmudel.&lt;br /&gt;
&lt;br /&gt;
== Kasulikud lingid ==&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCF_auto_client_proxies.aspx&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/ms178472.aspx&lt;br /&gt;
&lt;br /&gt;
http://support.microsoft.com/kb/305141&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/aa702565.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/scottgu/archive/2007/04/06/tip-trick-enabling-ssl-on-iis7-using-self-signed-certificates.aspx&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Võrgurakendused II: hajussüsteemide ehitamine]]&lt;br /&gt;
[[Category: Veebirakenduste loomine ASP.NET abil]]&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=30706</id>
		<title>Meeskond &quot;FoodWars&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=30706"/>
		<updated>2011-05-08T18:44:59Z</updated>

		<summary type="html">&lt;p&gt;Rruga: /* Klientrakendus I : Veebirakendus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Idee ==&lt;br /&gt;
Meie tiimil on plaanis teha internetipõhine söökla menüü süsteem (aluseks IT Kolledži kohvik, aga suunitlus selline, et kõik kohvikud/sööklad saaksid teha endale kasutajakonto ja hakata rakendust kasutama), kust saaks jälgida menüüd, mis sööke saab süüa, mis veel järgi on, kasutajatel on ka võimalus sööke hinnata (stiilis &amp;quot;meeldib&amp;quot;, &amp;quot;ei meeldi&amp;quot; nagu Facebook-is).&lt;br /&gt;
&lt;br /&gt;
Kohvikupidaja Teele soovid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* elektroonilisest menüüst asju kustutada, isegi siis kui asja peaks olema teoreetiliselt alles, aga tegelikult on asi otsas.&lt;br /&gt;
* elektrikatkestuse korral jääb menüü püsima. Ta peab teadma hindu mistahes olukorras.&lt;br /&gt;
* menüül näidatakse automaatselt ka ISIC kaardi omanike soodushinnad&lt;br /&gt;
* süsteem toetab ka poole portsjoni müümist.&lt;br /&gt;
&lt;br /&gt;
Linnar Viigi soovid/visioonid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* kõik oleks ka internetist kättesaadav, peale LCD ekraani, mis kajastab menüüd sööklas.&lt;br /&gt;
* aluseks facebook, kus siis söögid oleks nagu facebook-i alateemad.&lt;br /&gt;
* saab sööke hinnata, kommenteerida (täna oli väga maitsev praad).&lt;br /&gt;
* kasutajad saaks vaadata, mis menüüs on (ka järgmisel nädalal) ja mitu portsu veel alles on.&lt;br /&gt;
* kasutajad saaksid välja pakkuda menüüsid.&lt;br /&gt;
* erinevate söögikohtade kasutajad saaksid omavahel muljeid jagada.&lt;br /&gt;
* kuu aja aktiivsemad saavad prii lõuna.&lt;br /&gt;
* mingil ajal võib olla &amp;quot;happy hour&amp;quot; (enne sulgemist saab odavamalt).&lt;br /&gt;
* piiranguks on see, et toitu broneerida ei saa &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vaba tarkvara kasutamise võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Antud projekti puhul oleks võimalik kasutada [http://www.postgresql.org/ PostgreSQL] andmebaasi (vt. lisaks http://en.wikipedia.org/wiki/PostgreSQL ) Microsoft SQL Server&#039;i asemel. See võiks anda kasutajale võimaluse valida .NET ning [http://www.mono-project.com/ Mono] (vt. lisaks http://en.wikipedia.org/wiki/Mono_(software) ) platvormide vahel. Sel viisil oleks kliendil võimalik Microsoft&#039;i platvormi kõrval valida tõenäoliselt soodsam vaba tarkvara platvorm. Andmebaasi lõplik valik pole hetkel veel otsustatud.&lt;br /&gt;
&lt;br /&gt;
== Meeskond ja tööjaotus==&lt;br /&gt;
* Kristjan Stolin - projektijuht, suhtlus kliendiga, XML, wiki, teenuskihtide progemine, rollide halduse lehe progemine&lt;br /&gt;
* Ilmar Telga - XML, kliendiga suhtlus, wiki, teenuskihtide progemine, lõpprakenduste menüüd, login&lt;br /&gt;
* Rauno Rüga - XML, XSLT, andmebaasi loomine, wiki, mobiilirakendus, statistika&lt;br /&gt;
* Lauri Kermas - teenuskihtide ehitamine, wiki, login, kommenteerimise võimaluste progemine&lt;br /&gt;
&lt;br /&gt;
== XML Fail ==&lt;br /&gt;
=== XML ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Toidud&amp;gt;&lt;br /&gt;
  &amp;lt;Toit&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduNimetus&amp;gt;Viineri kaste&amp;lt;/ToiduNimetus&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduLiik&amp;gt;Praad&amp;lt;/ToiduLiik&amp;gt;&lt;br /&gt;
    &amp;lt;OlemasolevatYhikut&amp;gt;5&amp;lt;/OlemasolevatYhikut&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduKogus&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Poolportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;2011&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;1&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;9&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;15&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;07&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;23&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;        &lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.15&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;0&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;0&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;0&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;00&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;00&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;00&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Täisportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.80&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
    &amp;lt;/ToiduKogus&amp;gt;&lt;br /&gt;
    &amp;lt;Kommentaarid&amp;gt;&lt;br /&gt;
      &amp;lt;Kommentaar&amp;gt;&lt;br /&gt;
        &amp;lt;Saatja&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaNimi&amp;gt;Kristjan&amp;lt;/SaatjaNimi&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaRoll&amp;gt;Tudeng&amp;lt;/SaatjaRoll&amp;gt;&lt;br /&gt;
        &amp;lt;/Saatja&amp;gt;&lt;br /&gt;
        &amp;lt;Sisu&amp;gt;Minu lemmik toit ! Kui algebra tund ei hakkaks, sööks veel 5 portsjonit.&amp;lt;/Sisu&amp;gt;&lt;br /&gt;
      &amp;lt;/Kommentaar&amp;gt;&lt;br /&gt;
    &amp;lt;/Kommentaarid&amp;gt;&lt;br /&gt;
  &amp;lt;/Toit&amp;gt;&lt;br /&gt;
&amp;lt;/Toidud&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kommentaariks siis niipalju, et meie näide on ilma kohviku osata, selleks et näidet mitte liiga suureks ajada.&lt;br /&gt;
&lt;br /&gt;
Ka on meil moment puudu ID väljad, mis on igasugu andmebaasiga suhtlemiseks hädavajalikud, samas siin näidises palju juurde ei anna.&lt;br /&gt;
&lt;br /&gt;
Asja tegemisel avastasime, et põhiliseks arusaamatuse kohaks on toitude erinevad kogused (ehk siis pool portsjonit, suur / väike ja muud võrdlevad ühikud). Esimese võimalusena kaalusime teha lihtsalt täiesti eraldi toidud kõige kohta, stiilis &amp;quot;väike viineripraad&amp;quot; ja &amp;quot;suur viineripraad&amp;quot;. Kahjuks see variant ei kõlbaks eriti hästi, kuna need erinevad portsjonid kasutavad ikkagi samu materjale ja kui me peaks mingi süsteemiga näitama kui palju portsjoneid alles on. Sööklast näiteks pakuti et väike portsjon kasutab materjale kuskil 0.8 suure portsjoni ulatuses, ehk see suhtarv peaks olema kasutaja poolt (kohvikupidaja, restoraniomanik) ise sätitav. &lt;br /&gt;
&lt;br /&gt;
Tänu sellele sai meie süsteemi alustalaks siiski Toit, millel on oma Portsjonid siis erinevate hindade ja soodustustega. Moment pole meil ka Portsjoni XML osas toodud ära seost kogusega. (Kui palju ühe portsjoni lisamine/müümine peaks toidu üldkogust muutma).&lt;br /&gt;
&lt;br /&gt;
Kommenteerida saab meil moment toitu ennast, mitte eraldi portsjonit. Isegi kui kasutajad tahavad lisada kommentaare stiilis &amp;quot;See väike supp oli tõesti väga väike&amp;quot;, ei soovi nad seda ilmselt eraldi portsjoni alla panna. Tulevikus peaks kindlasti olema ka võimalus pigem kommenteerida üldisemalt (Kohvikut ennast, söögipaiku üldse), kui spetsiifilisemalt (Väikse prae kaste lisandi kohta).&lt;br /&gt;
&lt;br /&gt;
=== XML Schema ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Toidud&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Toit&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduNimetus&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;OlemasolevatYhikut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduKogus&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:choice maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;PortsjoniLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;Myygiaeg&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Aasta&amp;quot; type=&amp;quot;xs:unsignedShort&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Kuu&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Paev&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Tund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Minut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Sekund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;ToiduHind&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Eurohind&amp;quot; type=&amp;quot;xs:decimal&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Soodustus&amp;quot;&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseProtsent&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:choice&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Kommentaarid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Saatja&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaNimi&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaRoll&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Sisu&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
  &amp;lt;h2&amp;gt;Kohvikus müüdavad toidud&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr bgcolor=&amp;quot;#9acd32&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Veel alles&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Portsjon&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Müügiaeg&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustuse liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Kommentaar(id)&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;Toidud/Toit&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduNimetus&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduLiik&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;OlemasolevatYhikut&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;PortsjoniLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Paev&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Kuu&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Aasta&amp;quot; /&amp;gt; &amp;amp;nbsp;  &lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Tund&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Minut&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Sekund&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Eurohind&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseProtsent&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Kommentaarid/Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Sisu&amp;quot; /&amp;gt;&amp;amp;nbsp;(&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaRoll&amp;quot; /&amp;gt;&amp;amp;nbsp;&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaNimi&amp;quot; /&amp;gt;)&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XSLT poolt loodud tulemus on järgnev (lisasin veel kaks toitu XML faili, siin wiki lehel on ruumi kokkuhoiuks vaid 1 toit toitude listis):&lt;br /&gt;
[[File:Xslt.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arhitektuur ==&lt;br /&gt;
&lt;br /&gt;
Süsteem oli vahepeal plaanis ehitada kolmekihilise arhitektuuriga ([http://en.wikipedia.org/wiki/Multitier_architecture#Three-tier_architecture Three-tier architecture]). See peaks lihtsustama süsteemi haldamist ja laiendamist tulevikus. Aga kuna selle jaoks otsest vajadust polenud ja oleks vaid süsteemi keeruliseks ajanud, siis loobusime sellest.&lt;br /&gt;
&lt;br /&gt;
[[Image:three-tier.png|thumb|center|alt=Arhitektuuri skeem.|Arhitektuuri skeem.]]&lt;br /&gt;
&lt;br /&gt;
== Veebiteenus ==&lt;br /&gt;
===Andmemudel===&lt;br /&gt;
[[Image:KohvikuAndmemudel.jpg|thumb|right|alt=Kohviku projekti andmemudel|Andmemudel]]&lt;br /&gt;
Enne veebiteenuse meetodite kirjeldamist koostasime andmemudeli. Loodud andmemudeli põhjal lõime andmebaasi vajalike tabelite ja atribuutidega. Andmemudeli peal on rohelisega tähistatud tabelid, mis on oseselt seotud kohviku valdajaga ja mida WPF rakenduse jaoks kindlasti vaja on. Ülejäänud helesinised tabelid on vajalikud kasutajate võimaluste jaoks. Lisaks on andmemudelil kaks tabelit, mis pole teisega seotud, need on süsteemi administraatori jaoks, et oleks ülevaade, mis rakendused teenust enim kasutavad ning mis meetodeid kõige rohkem välja kutsutakse.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Teenuskihis olevad meetodid===&lt;br /&gt;
&lt;br /&gt;
====Kasutajatega seotud meetodid:====&lt;br /&gt;
*SaidiKasutajaLiik() - Tagastab antud kasutaja ID järgi kasutaja liigi nimetuse&lt;br /&gt;
*KustutaSaidiKasutaja() - Kustutab antud kasutaja ID järgi kasutaja tabelis Kasutaja&lt;br /&gt;
*AnnaKoikSaidiKasutajad() - Tagastab kõik kirjed tabelist Kasutaja&lt;br /&gt;
*AnnaKoikKohvikuKasutajad() - Tagastab antud kohviku ID järgi kõik kohviku kasutajad massiivina&lt;br /&gt;
*MuudaSaidiKasutajaLiik() - Muudab antud kasutaja ID järgi kasutaja liigi tabelis Kasutaja&lt;br /&gt;
*KoikLubatudSaidiKasutajaTyybid() - Tagastab andmebaasi kõik võimalikud kohviku kasutaja rollid (id-d ja nimed), muud andmed jäävad tühjaks&lt;br /&gt;
*KoikLubatudKohvikuRollid() - Tagastab andmebaasi kõik võimalikud site kasutaja rollid (id-d ja nimed), kohviku_id jääb tühjaks&lt;br /&gt;
*KasutajaKohvikuRollid() - Tagastab antud kasutaja ID järgi kõik kasutaja rollid kõikides kohvikutes&lt;br /&gt;
*MuudaKohvikuKasutajaRoll() - Muudab antud kasutaja ID ja kohviku ID järgi kasutaja rolli kohvikus, kui rolli pole, siis tekitatakse uus&lt;br /&gt;
*SaidiKasutajaLiikID() - Tagastab antud kasutaja ID järgi kasutaja liigi ID&lt;br /&gt;
*KohvikuKasutajaLiikID() - Tagastab antud kasutaja ID ja kohviku ID järgi kohviku kasutaja rolli ID&lt;br /&gt;
*AnnaKasutajaMeiliAadress() - Tagastab antud kasutaja nime alusel kasutaja meiliaadressi&lt;br /&gt;
*AnnaKasutajaIdJargi() - Tagastab kasutajanime kasutaja ID järgi&lt;br /&gt;
*AuthendiKasutaja() - Autendib kasutaja, õnnestumisel tagastab kasutaja ID, ebaõnnestumisel null &lt;br /&gt;
*RegistreeriKasutaja() - Registreerib kasutaja andmebaasi ja tagastab true kui kasutaja loomine õnnestus&lt;br /&gt;
&lt;br /&gt;
====Menüüga seotud meetodid====&lt;br /&gt;
*LisaArtikkelMenuuse() - Seob menüüartikli ja menüü&lt;br /&gt;
*LisaKohvikuleMenuu() - Seob menüü ja kohviku&lt;br /&gt;
*TagastabMenuuMuutujad() - Tagastab menüü järgi kas inimesel oleks õigust seda muuta&lt;br /&gt;
*KustutaMenuuJaKohvikuSeos() - Kustutab menüü ja kohviku seose&lt;br /&gt;
*LisaUusMenuu() - Teeb uue menüü, seob selle kohvikuga, kui kohviku ID on parameetrina kaasa antud&lt;br /&gt;
*MenuuKohvikuIdJargi() - Tagastab kohviku ID järgi kohviku tänaste või mitte tänaste menüüde ID-de massiivi&lt;br /&gt;
*LisaMenuuArtikkelMenuuse() - Sisestab antud müügiartikli menüüsse, mille ID on menyy_id&lt;br /&gt;
*KustutaMenuuArtikkel() - Kustutab müügiartikli ID ja menüü ID järgi müügiartikli menüüst&lt;br /&gt;
*TagastaMenuuArtiklid() - Tagastab menüü ID järgi menüüs olevad müügiartiklid&lt;br /&gt;
*VahetaMenuuArtiklit() - Muudab antud müügiartikli tabelis Myygiartikkel&lt;br /&gt;
*MenuuNimetus() - Tagastab menüü ID järgi menüü nimetuse&lt;br /&gt;
*AnnaMuugiartiklidMidaMenuusPole() - Tagastab müügiartiklid, mis pole veel menüüs, kus on juba müügiartiklid, mille IDd on antud massiivis&lt;br /&gt;
*AnnaMenuuNimed() - Tagastab kõigi menüüde nimetused tabelis Menyy&lt;br /&gt;
&lt;br /&gt;
====Kohvikutest üldiselt====&lt;br /&gt;
*KohvikuteNimed() - Tagastab kõigi kohvikute nimed massiivina&lt;br /&gt;
*KohvikuNimiIdJargi() - Tagastab antud kohviku ID järgi kohviku nime&lt;br /&gt;
*AnnaKoikOmanikuKohvikud() - Tagastab antud omaniku ID järgi kõik omaniku kohvikute ID-d massiivina&lt;br /&gt;
*Kohvikud() - Tagastab kõik kohvikute kirjed tabelist Kohvik&lt;br /&gt;
*KohvikuteArv() - Tagastab kõigi kohvikute arvu&lt;br /&gt;
*AnnaKaubad() - Tagastab kõik kaubad tabelist Kaup&lt;br /&gt;
*LisaKaup() - Lisab kauba kaupade nimekirja&lt;br /&gt;
*LisaKohvik() - Uue kohviku lisamine&lt;br /&gt;
&lt;br /&gt;
====Kommentaaridega seotud meetodid:====&lt;br /&gt;
*KohvikuKommentaarideArv() - Kohviku kommentaaride arv&lt;br /&gt;
*AnnaKohvikuKommentaarid() - Tagastab kommentaarid lehtede kaupa&lt;br /&gt;
*AnnaKohvikuKommentaarideHinded() - Tagastab kommentaaride jaoks võimalikud hinded koos kirjeldustega&lt;br /&gt;
*LisaKohvikuKommentaar() - Lisab kohviku kommentaari&lt;br /&gt;
&lt;br /&gt;
====Statistikaga seotud meetodid:====&lt;br /&gt;
*StatistikaRakendusteKohtaTana() - Tagastab rakenduse nimed ja nende vastu tehtud päringud tänasel päeval&lt;br /&gt;
*StatistikaRakendusteKohtaViimaneNadal() - Tagastab rakenduse nimed ja nende vastu tehtud päringud viimase nädala jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaSellelKuul() - Tagastab rakenduse nimed ja nende vastu tehtud päringud selle kuu jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaKokku() - Tagastab rakenduse nimed ja nende vastu tehtud päringud kogu aja vältel&lt;br /&gt;
*StatistikaMeetoditeKohtaTana() - Meetod leiab tänase päeva jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaViimaneNadal() - Meetod leiab viimase nädala jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaSellelKuul() - Meetod leiab kuu jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaKokku() - Meetod leiab kogu aja vältel kasutatud meetodid ja paringute arvu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebiteenuse projekti (WCF + andmebaas) saab siit: http://enos.itcollege.ee/~rruga/VRII/Teenusekiht.zip&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : CMS ==&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Veebirakendus ==&lt;br /&gt;
&lt;br /&gt;
Veebiteenust kasutavaks veebirakenduseks on ASP.NET rakendus. &lt;br /&gt;
&lt;br /&gt;
* Esilehel saab otsida kohvikuid või minna kohe huvipakkuva kohviku menüü lehele.&lt;br /&gt;
* Kohviku menüü lehel on näha tänased ja teised menüüd, kohviku lahtioleku aeg. Kui panna veebirakendus internetti, siis on võimalus Facebook-i kaudu kohviku fänniks hakata. Kommenteerimise ja soodustuste osa on veel pooleli.&lt;br /&gt;
* Sisse loginud kohviku omanik saab ka kohviku menüüsid muuta, lisada, kustutada. &lt;br /&gt;
* Kasutajate lehel saab sisse loginud kohviku omanik hallata kohviku kasutajaid.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:KohvikuMenuEdit.JPG|thumb|800px|Kohviku menüü muutmise leht. ITK kohviku menüüde muutmiseks tuleb logida sisse kasutajaga Ilmar parooliga &amp;quot;ilmar&amp;quot;.]]&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus II : Mobiilirakendus ==&lt;br /&gt;
&lt;br /&gt;
Teine rakendus, mis veebiteenuse peale ehitatud sai, oli Windows Phone 7 rakendus. Lühidalt kirjeldades saab peale rakenduse käivitamist näha listi kõikidest olemasolevatest kohvikutest. Kui vajutad mingi kohviku nime peale, avaneb täpsem kirjeldus kohviku kohta, kust näeb lisaks kohviku nimele ka lühikest kirjeldust, tänast lahtiolekuaega ja kohviku aadressit. Samuti on kohviku kirjelduse lehel viide kohviku tänasele menüüle ja kommenteerimisele. Vajutades vaata menüüd nuppu avaneb vaade täna müügis olevatest müügiartiklitest ja nende hinnast, vajutades aga kommenteeri kohvikut nupule avaneb võimalus lisada kohviku kohta kommentaar.&lt;br /&gt;
&lt;br /&gt;
Kokkuvõttev pilt realiseeritud võimalustest:&lt;br /&gt;
&lt;br /&gt;
[[Image:WP7 rakendus.jpg|alt=WP7 rakendus.|WP7 rakenduse võimalused.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mobiilirakenduse saab alla tõmmata siit: http://enos.itcollege.ee/~rruga/VRII/Mobiilirakendus.rar&lt;br /&gt;
&lt;br /&gt;
NB! Et mobiilirakendust proovida ja mõistliku tulemust saada peab teil olema kõige uuem versioon meie projekti teenuskihist ning teenuskiht peab töötama.&lt;br /&gt;
&lt;br /&gt;
== Meeskonna kokkuvõttev aruanne ==&lt;br /&gt;
&lt;br /&gt;
== Logi ==&lt;br /&gt;
=== 7. Mai ===&lt;br /&gt;
Mobiilirakendus sai valmis ja selle kohta uuendatud vikilehte.&lt;br /&gt;
&lt;br /&gt;
=== 17. aprill ===&lt;br /&gt;
Wikilehe täiendamine andmemudeli ja veebiteenuse meetodite kirjeldusega.&lt;br /&gt;
&lt;br /&gt;
=== 9. aprill ===&lt;br /&gt;
Tegime rollide halduse, münüüde muutmise vormi. Meili saatmine registreerimisel. Toimus andmebaasi andmemudeli väike muutus. &lt;br /&gt;
&lt;br /&gt;
=== 30. märts ===&lt;br /&gt;
Tehtud on kohviku menüü ja kohviku kommenteerimise leht.&lt;br /&gt;
&lt;br /&gt;
=== 26. märts ===&lt;br /&gt;
Tehtud on esimesed veebiteenuse meetodid ja veebirakendusele kasutajate registreerimine.&lt;br /&gt;
&lt;br /&gt;
=== 10. märts ===&lt;br /&gt;
Väikese häki abil õnnestus kohviku kassa arvutis saada tööle üks Forms-i proovirakendus.&lt;br /&gt;
&lt;br /&gt;
=== 8. märts ===&lt;br /&gt;
Kuna kassa-aparaadis on operatsioonisüsteemiks Windows XP ja raud on 1.99 GHz, 256 RAM siis peaks saama&lt;br /&gt;
prototüübiks teha sinna peale rakenduse, mille ülesandeks menüüga tegelemine. &lt;br /&gt;
&lt;br /&gt;
=== 7. märts ===&lt;br /&gt;
Linnar Viik andis meile järgmist nõu: tuleb eristada kahte asja - see, mis peab valmis saama (&#039;&#039;must&#039;&#039;) ja see, mis oleks tore (&#039;&#039;nice to have&#039;&#039;). Valmis peab saama menüüga ekraan seinal (esialgu kasutajale prototüübi näitamiseks kasvõi näiteks PowerPoint-i abil tehtud). Alles siis kui on kasutajalt positiivne tagasiside saadud, võib edasi minna reaalse tarkvaralahenduse loomisega. Kui ka see on valmis ja kasutaja sellega rahul võib juurde mõelda &#039;&#039;nice to have&#039;&#039; asju (näiteks eelinfo järgmise päeva menüü kohta, üliõpilasesinduse sõnumite riba ja muid asju).&lt;br /&gt;
&lt;br /&gt;
Saime teada, et kui tahame, et meie loodav süsteem suhtleks IT Kohviku kassasüsteemiga, siis tuleb selle süsteemi tootjatega ühendust võtta ja nendega konsulteerida.&lt;br /&gt;
&lt;br /&gt;
=== 19.Veebruar ===&lt;br /&gt;
*Valmis XSLT fail.&lt;br /&gt;
&lt;br /&gt;
=== 9.Veebruar ===&lt;br /&gt;
* Esmane versioon XML ja XML Schemast olemas&lt;br /&gt;
* Tekkis küsimus kas XSLT faili tuleb käsitsi tekitada või automaatselt.&lt;br /&gt;
* Küsimus oli ka kas lahendasime portsjoni asja mõistlikult või oleks mõni teine lähenemine parem olnud.&lt;br /&gt;
* Küsimus, kas XML fail on liiga üle pingutatud või sobiva keerukusega&lt;br /&gt;
&lt;br /&gt;
=== 7. Veebruar ===&lt;br /&gt;
* Võtsime õppejõu poolt pakutud ideest kohe kinni, sest me eelistame teha praktilist asja, mida saab kasutada ja mille kasutamist saame ka iga päev jälgida. &lt;br /&gt;
* Esimese asjana otsustasime välja uurida mida meie &amp;quot;kliendid&amp;quot; (süsteemi tellijad) meilt ootavad. (Soovid idee punkti all)&lt;br /&gt;
* Valminud on lihtne teenusest ja klientidest koosnev süsteemi testmudel.&lt;br /&gt;
&lt;br /&gt;
== Kasulikud lingid ==&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCF_auto_client_proxies.aspx&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/ms178472.aspx&lt;br /&gt;
&lt;br /&gt;
http://support.microsoft.com/kb/305141&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/aa702565.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/scottgu/archive/2007/04/06/tip-trick-enabling-ssl-on-iis7-using-self-signed-certificates.aspx&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Võrgurakendused II: hajussüsteemide ehitamine]]&lt;br /&gt;
[[Category: Veebirakenduste loomine ASP.NET abil]]&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=30573</id>
		<title>Meeskond &quot;FoodWars&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=30573"/>
		<updated>2011-05-07T20:34:49Z</updated>

		<summary type="html">&lt;p&gt;Rruga: /* Logi */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Idee ==&lt;br /&gt;
Meie tiimil on plaanis teha internetipõhine söökla menüü süsteem (aluseks IT Kolledži kohvik, aga suunitlus selline, et kõik kohvikud/sööklad saaksid teha endale kasutajakonto ja hakata rakendust kasutama), kust saaks jälgida menüüd, mis sööke saab süüa, mis veel järgi on, kasutajatel on ka võimalus sööke hinnata (stiilis &amp;quot;meeldib&amp;quot;, &amp;quot;ei meeldi&amp;quot; nagu Facebook-is).&lt;br /&gt;
&lt;br /&gt;
Kohvikupidaja Teele soovid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* elektroonilisest menüüst asju kustutada, isegi siis kui asja peaks olema teoreetiliselt alles, aga tegelikult on asi otsas.&lt;br /&gt;
* elektrikatkestuse korral jääb menüü püsima. Ta peab teadma hindu mistahes olukorras.&lt;br /&gt;
* menüül näidatakse automaatselt ka ISIC kaardi omanike soodushinnad&lt;br /&gt;
* süsteem toetab ka poole portsjoni müümist.&lt;br /&gt;
&lt;br /&gt;
Linnar Viigi soovid/visioonid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* kõik oleks ka internetist kättesaadav, peale LCD ekraani, mis kajastab menüüd sööklas.&lt;br /&gt;
* aluseks facebook, kus siis söögid oleks nagu facebook-i alateemad.&lt;br /&gt;
* saab sööke hinnata, kommenteerida (täna oli väga maitsev praad).&lt;br /&gt;
* kasutajad saaks vaadata, mis menüüs on (ka järgmisel nädalal) ja mitu portsu veel alles on.&lt;br /&gt;
* kasutajad saaksid välja pakkuda menüüsid.&lt;br /&gt;
* erinevate söögikohtade kasutajad saaksid omavahel muljeid jagada.&lt;br /&gt;
* kuu aja aktiivsemad saavad prii lõuna.&lt;br /&gt;
* mingil ajal võib olla &amp;quot;happy hour&amp;quot; (enne sulgemist saab odavamalt).&lt;br /&gt;
* piiranguks on see, et toitu broneerida ei saa &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vaba tarkvara kasutamise võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Antud projekti puhul oleks võimalik kasutada [http://www.postgresql.org/ PostgreSQL] andmebaasi (vt. lisaks http://en.wikipedia.org/wiki/PostgreSQL ) Microsoft SQL Server&#039;i asemel. See võiks anda kasutajale võimaluse valida .NET ning [http://www.mono-project.com/ Mono] (vt. lisaks http://en.wikipedia.org/wiki/Mono_(software) ) platvormide vahel. Sel viisil oleks kliendil võimalik Microsoft&#039;i platvormi kõrval valida tõenäoliselt soodsam vaba tarkvara platvorm. Andmebaasi lõplik valik pole hetkel veel otsustatud.&lt;br /&gt;
&lt;br /&gt;
== Meeskond ja tööjaotus==&lt;br /&gt;
* Kristjan Stolin - projektijuht, suhtlus kliendiga, XML, wiki, teenuskihtide progemine, rollide halduse lehe progemine&lt;br /&gt;
* Ilmar Telga - XML, kliendiga suhtlus, wiki, teenuskihtide progemine, lõpprakenduste menüüd, login&lt;br /&gt;
* Rauno Rüga - XML, XSLT, andmebaasi loomine, wiki, mobiilirakendus, statistika&lt;br /&gt;
* Lauri Kermas - teenuskihtide ehitamine, wiki, login, kommenteerimise võimaluste progemine&lt;br /&gt;
&lt;br /&gt;
== XML Fail ==&lt;br /&gt;
=== XML ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Toidud&amp;gt;&lt;br /&gt;
  &amp;lt;Toit&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduNimetus&amp;gt;Viineri kaste&amp;lt;/ToiduNimetus&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduLiik&amp;gt;Praad&amp;lt;/ToiduLiik&amp;gt;&lt;br /&gt;
    &amp;lt;OlemasolevatYhikut&amp;gt;5&amp;lt;/OlemasolevatYhikut&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduKogus&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Poolportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;2011&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;1&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;9&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;15&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;07&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;23&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;        &lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.15&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;0&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;0&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;0&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;00&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;00&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;00&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Täisportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.80&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
    &amp;lt;/ToiduKogus&amp;gt;&lt;br /&gt;
    &amp;lt;Kommentaarid&amp;gt;&lt;br /&gt;
      &amp;lt;Kommentaar&amp;gt;&lt;br /&gt;
        &amp;lt;Saatja&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaNimi&amp;gt;Kristjan&amp;lt;/SaatjaNimi&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaRoll&amp;gt;Tudeng&amp;lt;/SaatjaRoll&amp;gt;&lt;br /&gt;
        &amp;lt;/Saatja&amp;gt;&lt;br /&gt;
        &amp;lt;Sisu&amp;gt;Minu lemmik toit ! Kui algebra tund ei hakkaks, sööks veel 5 portsjonit.&amp;lt;/Sisu&amp;gt;&lt;br /&gt;
      &amp;lt;/Kommentaar&amp;gt;&lt;br /&gt;
    &amp;lt;/Kommentaarid&amp;gt;&lt;br /&gt;
  &amp;lt;/Toit&amp;gt;&lt;br /&gt;
&amp;lt;/Toidud&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kommentaariks siis niipalju, et meie näide on ilma kohviku osata, selleks et näidet mitte liiga suureks ajada.&lt;br /&gt;
&lt;br /&gt;
Ka on meil moment puudu ID väljad, mis on igasugu andmebaasiga suhtlemiseks hädavajalikud, samas siin näidises palju juurde ei anna.&lt;br /&gt;
&lt;br /&gt;
Asja tegemisel avastasime, et põhiliseks arusaamatuse kohaks on toitude erinevad kogused (ehk siis pool portsjonit, suur / väike ja muud võrdlevad ühikud). Esimese võimalusena kaalusime teha lihtsalt täiesti eraldi toidud kõige kohta, stiilis &amp;quot;väike viineripraad&amp;quot; ja &amp;quot;suur viineripraad&amp;quot;. Kahjuks see variant ei kõlbaks eriti hästi, kuna need erinevad portsjonid kasutavad ikkagi samu materjale ja kui me peaks mingi süsteemiga näitama kui palju portsjoneid alles on. Sööklast näiteks pakuti et väike portsjon kasutab materjale kuskil 0.8 suure portsjoni ulatuses, ehk see suhtarv peaks olema kasutaja poolt (kohvikupidaja, restoraniomanik) ise sätitav. &lt;br /&gt;
&lt;br /&gt;
Tänu sellele sai meie süsteemi alustalaks siiski Toit, millel on oma Portsjonid siis erinevate hindade ja soodustustega. Moment pole meil ka Portsjoni XML osas toodud ära seost kogusega. (Kui palju ühe portsjoni lisamine/müümine peaks toidu üldkogust muutma).&lt;br /&gt;
&lt;br /&gt;
Kommenteerida saab meil moment toitu ennast, mitte eraldi portsjonit. Isegi kui kasutajad tahavad lisada kommentaare stiilis &amp;quot;See väike supp oli tõesti väga väike&amp;quot;, ei soovi nad seda ilmselt eraldi portsjoni alla panna. Tulevikus peaks kindlasti olema ka võimalus pigem kommenteerida üldisemalt (Kohvikut ennast, söögipaiku üldse), kui spetsiifilisemalt (Väikse prae kaste lisandi kohta).&lt;br /&gt;
&lt;br /&gt;
=== XML Schema ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Toidud&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Toit&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduNimetus&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;OlemasolevatYhikut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduKogus&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:choice maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;PortsjoniLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;Myygiaeg&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Aasta&amp;quot; type=&amp;quot;xs:unsignedShort&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Kuu&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Paev&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Tund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Minut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Sekund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;ToiduHind&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Eurohind&amp;quot; type=&amp;quot;xs:decimal&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Soodustus&amp;quot;&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseProtsent&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:choice&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Kommentaarid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Saatja&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaNimi&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaRoll&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Sisu&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
  &amp;lt;h2&amp;gt;Kohvikus müüdavad toidud&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr bgcolor=&amp;quot;#9acd32&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Veel alles&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Portsjon&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Müügiaeg&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustuse liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Kommentaar(id)&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;Toidud/Toit&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduNimetus&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduLiik&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;OlemasolevatYhikut&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;PortsjoniLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Paev&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Kuu&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Aasta&amp;quot; /&amp;gt; &amp;amp;nbsp;  &lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Tund&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Minut&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Sekund&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Eurohind&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseProtsent&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Kommentaarid/Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Sisu&amp;quot; /&amp;gt;&amp;amp;nbsp;(&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaRoll&amp;quot; /&amp;gt;&amp;amp;nbsp;&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaNimi&amp;quot; /&amp;gt;)&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XSLT poolt loodud tulemus on järgnev (lisasin veel kaks toitu XML faili, siin wiki lehel on ruumi kokkuhoiuks vaid 1 toit toitude listis):&lt;br /&gt;
[[File:Xslt.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arhitektuur ==&lt;br /&gt;
&lt;br /&gt;
Süsteem oli vahepeal plaanis ehitada kolmekihilise arhitektuuriga ([http://en.wikipedia.org/wiki/Multitier_architecture#Three-tier_architecture Three-tier architecture]). See peaks lihtsustama süsteemi haldamist ja laiendamist tulevikus. Aga kuna selle jaoks otsest vajadust polenud ja oleks vaid süsteemi keeruliseks ajanud, siis loobusime sellest.&lt;br /&gt;
&lt;br /&gt;
[[Image:three-tier.png|thumb|center|alt=Arhitektuuri skeem.|Arhitektuuri skeem.]]&lt;br /&gt;
&lt;br /&gt;
== Veebiteenus ==&lt;br /&gt;
===Andmemudel===&lt;br /&gt;
[[Image:KohvikuAndmemudel.jpg|thumb|right|alt=Kohviku projekti andmemudel|Andmemudel]]&lt;br /&gt;
Enne veebiteenuse meetodite kirjeldamist koostasime andmemudeli. Loodud andmemudeli põhjal lõime andmebaasi vajalike tabelite ja atribuutidega. Andmemudeli peal on rohelisega tähistatud tabelid, mis on oseselt seotud kohviku valdajaga ja mida WPF rakenduse jaoks kindlasti vaja on. Ülejäänud helesinised tabelid on vajalikud kasutajate võimaluste jaoks. Lisaks on andmemudelil kaks tabelit, mis pole teisega seotud, need on süsteemi administraatori jaoks, et oleks ülevaade, mis rakendused teenust enim kasutavad ning mis meetodeid kõige rohkem välja kutsutakse.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Teenuskihis olevad meetodid===&lt;br /&gt;
&lt;br /&gt;
====Kasutajatega seotud meetodid:====&lt;br /&gt;
*SaidiKasutajaLiik() - Tagastab antud kasutaja ID järgi kasutaja liigi nimetuse&lt;br /&gt;
*KustutaSaidiKasutaja() - Kustutab antud kasutaja ID järgi kasutaja tabelis Kasutaja&lt;br /&gt;
*AnnaKoikSaidiKasutajad() - Tagastab kõik kirjed tabelist Kasutaja&lt;br /&gt;
*AnnaKoikKohvikuKasutajad() - Tagastab antud kohviku ID järgi kõik kohviku kasutajad massiivina&lt;br /&gt;
*MuudaSaidiKasutajaLiik() - Muudab antud kasutaja ID järgi kasutaja liigi tabelis Kasutaja&lt;br /&gt;
*KoikLubatudSaidiKasutajaTyybid() - Tagastab andmebaasi kõik võimalikud kohviku kasutaja rollid (id-d ja nimed), muud andmed jäävad tühjaks&lt;br /&gt;
*KoikLubatudKohvikuRollid() - Tagastab andmebaasi kõik võimalikud site kasutaja rollid (id-d ja nimed), kohviku_id jääb tühjaks&lt;br /&gt;
*KasutajaKohvikuRollid() - Tagastab antud kasutaja ID järgi kõik kasutaja rollid kõikides kohvikutes&lt;br /&gt;
*MuudaKohvikuKasutajaRoll() - Muudab antud kasutaja ID ja kohviku ID järgi kasutaja rolli kohvikus, kui rolli pole, siis tekitatakse uus&lt;br /&gt;
*SaidiKasutajaLiikID() - Tagastab antud kasutaja ID järgi kasutaja liigi ID&lt;br /&gt;
*KohvikuKasutajaLiikID() - Tagastab antud kasutaja ID ja kohviku ID järgi kohviku kasutaja rolli ID&lt;br /&gt;
*AnnaKasutajaMeiliAadress() - Tagastab antud kasutaja nime alusel kasutaja meiliaadressi&lt;br /&gt;
*AnnaKasutajaIdJargi() - Tagastab kasutajanime kasutaja ID järgi&lt;br /&gt;
*AuthendiKasutaja() - Autendib kasutaja, õnnestumisel tagastab kasutaja ID, ebaõnnestumisel null &lt;br /&gt;
*RegistreeriKasutaja() - Registreerib kasutaja andmebaasi ja tagastab true kui kasutaja loomine õnnestus&lt;br /&gt;
&lt;br /&gt;
====Menüüga seotud meetodid====&lt;br /&gt;
*LisaArtikkelMenuuse() - Seob menüüartikli ja menüü&lt;br /&gt;
*LisaKohvikuleMenuu() - Seob menüü ja kohviku&lt;br /&gt;
*TagastabMenuuMuutujad() - Tagastab menüü järgi kas inimesel oleks õigust seda muuta&lt;br /&gt;
*KustutaMenuuJaKohvikuSeos() - Kustutab menüü ja kohviku seose&lt;br /&gt;
*LisaUusMenuu() - Teeb uue menüü, seob selle kohvikuga, kui kohviku ID on parameetrina kaasa antud&lt;br /&gt;
*MenuuKohvikuIdJargi() - Tagastab kohviku ID järgi kohviku tänaste või mitte tänaste menüüde ID-de massiivi&lt;br /&gt;
*LisaMenuuArtikkelMenuuse() - Sisestab antud müügiartikli menüüsse, mille ID on menyy_id&lt;br /&gt;
*KustutaMenuuArtikkel() - Kustutab müügiartikli ID ja menüü ID järgi müügiartikli menüüst&lt;br /&gt;
*TagastaMenuuArtiklid() - Tagastab menüü ID järgi menüüs olevad müügiartiklid&lt;br /&gt;
*VahetaMenuuArtiklit() - Muudab antud müügiartikli tabelis Myygiartikkel&lt;br /&gt;
*MenuuNimetus() - Tagastab menüü ID järgi menüü nimetuse&lt;br /&gt;
*AnnaMuugiartiklidMidaMenuusPole() - Tagastab müügiartiklid, mis pole veel menüüs, kus on juba müügiartiklid, mille IDd on antud massiivis&lt;br /&gt;
*AnnaMenuuNimed() - Tagastab kõigi menüüde nimetused tabelis Menyy&lt;br /&gt;
&lt;br /&gt;
====Kohvikutest üldiselt====&lt;br /&gt;
*KohvikuteNimed() - Tagastab kõigi kohvikute nimed massiivina&lt;br /&gt;
*KohvikuNimiIdJargi() - Tagastab antud kohviku ID järgi kohviku nime&lt;br /&gt;
*AnnaKoikOmanikuKohvikud() - Tagastab antud omaniku ID järgi kõik omaniku kohvikute ID-d massiivina&lt;br /&gt;
*Kohvikud() - Tagastab kõik kohvikute kirjed tabelist Kohvik&lt;br /&gt;
*KohvikuteArv() - Tagastab kõigi kohvikute arvu&lt;br /&gt;
*AnnaKaubad() - Tagastab kõik kaubad tabelist Kaup&lt;br /&gt;
*LisaKaup() - Lisab kauba kaupade nimekirja&lt;br /&gt;
*LisaKohvik() - Uue kohviku lisamine&lt;br /&gt;
&lt;br /&gt;
====Kommentaaridega seotud meetodid:====&lt;br /&gt;
*KohvikuKommentaarideArv() - Kohviku kommentaaride arv&lt;br /&gt;
*AnnaKohvikuKommentaarid() - Tagastab kommentaarid lehtede kaupa&lt;br /&gt;
*AnnaKohvikuKommentaarideHinded() - Tagastab kommentaaride jaoks võimalikud hinded koos kirjeldustega&lt;br /&gt;
*LisaKohvikuKommentaar() - Lisab kohviku kommentaari&lt;br /&gt;
&lt;br /&gt;
====Statistikaga seotud meetodid:====&lt;br /&gt;
*StatistikaRakendusteKohtaTana() - Tagastab rakenduse nimed ja nende vastu tehtud päringud tänasel päeval&lt;br /&gt;
*StatistikaRakendusteKohtaViimaneNadal() - Tagastab rakenduse nimed ja nende vastu tehtud päringud viimase nädala jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaSellelKuul() - Tagastab rakenduse nimed ja nende vastu tehtud päringud selle kuu jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaKokku() - Tagastab rakenduse nimed ja nende vastu tehtud päringud kogu aja vältel&lt;br /&gt;
*StatistikaMeetoditeKohtaTana() - Meetod leiab tänase päeva jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaViimaneNadal() - Meetod leiab viimase nädala jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaSellelKuul() - Meetod leiab kuu jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaKokku() - Meetod leiab kogu aja vältel kasutatud meetodid ja paringute arvu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebiteenuse projekti (WCF + andmebaas) saab siit: http://enos.itcollege.ee/~rruga/VRII/Teenusekiht.zip&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : CMS ==&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Veebirakendus ==&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus II : Mobiilirakendus ==&lt;br /&gt;
&lt;br /&gt;
Teine rakendus, mis veebiteenuse peale ehitatud sai, oli Windows Phone 7 rakendus. Lühidalt kirjeldades saab peale rakenduse käivitamist näha listi kõikidest olemasolevatest kohvikutest. Kui vajutad mingi kohviku nime peale, avaneb täpsem kirjeldus kohviku kohta, kust näeb lisaks kohviku nimele ka lühikest kirjeldust, tänast lahtiolekuaega ja kohviku aadressit. Samuti on kohviku kirjelduse lehel viide kohviku tänasele menüüle ja kommenteerimisele. Vajutades vaata menüüd nuppu avaneb vaade täna müügis olevatest müügiartiklitest ja nende hinnast, vajutades aga kommenteeri kohvikut nupule avaneb võimalus lisada kohviku kohta kommentaar.&lt;br /&gt;
&lt;br /&gt;
Kokkuvõttev pilt realiseeritud võimalustest:&lt;br /&gt;
&lt;br /&gt;
[[Image:WP7 rakendus.jpg|alt=WP7 rakendus.|WP7 rakenduse võimalused.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mobiilirakenduse saab alla tõmmata siit: http://enos.itcollege.ee/~rruga/VRII/Mobiilirakendus.rar&lt;br /&gt;
&lt;br /&gt;
NB! Et mobiilirakendust proovida ja mõistliku tulemust saada peab teil olema kõige uuem versioon meie projekti teenuskihist ning teenuskiht peab töötama.&lt;br /&gt;
&lt;br /&gt;
== Meeskonna kokkuvõttev aruanne ==&lt;br /&gt;
&lt;br /&gt;
== Logi ==&lt;br /&gt;
=== 7. Mai ===&lt;br /&gt;
Mobiilirakendus sai valmis ja selle kohta uuendatud vikilehte.&lt;br /&gt;
&lt;br /&gt;
=== 17. aprill ===&lt;br /&gt;
Wikilehe täiendamine andmemudeli ja veebiteenuse meetodite kirjeldusega.&lt;br /&gt;
&lt;br /&gt;
=== 9. aprill ===&lt;br /&gt;
Tegime rollide halduse, münüüde muutmise vormi. Meili saatmine registreerimisel. Toimus andmebaasi andmemudeli väike muutus. &lt;br /&gt;
&lt;br /&gt;
=== 30. märts ===&lt;br /&gt;
Tehtud on kohviku menüü ja kohviku kommenteerimise leht.&lt;br /&gt;
&lt;br /&gt;
=== 26. märts ===&lt;br /&gt;
Tehtud on esimesed veebiteenuse meetodid ja veebirakendusele kasutajate registreerimine.&lt;br /&gt;
&lt;br /&gt;
=== 10. märts ===&lt;br /&gt;
Väikese häki abil õnnestus kohviku kassa arvutis saada tööle üks Forms-i proovirakendus.&lt;br /&gt;
&lt;br /&gt;
=== 8. märts ===&lt;br /&gt;
Kuna kassa-aparaadis on operatsioonisüsteemiks Windows XP ja raud on 1.99 GHz, 256 RAM siis peaks saama&lt;br /&gt;
prototüübiks teha sinna peale rakenduse, mille ülesandeks menüüga tegelemine. &lt;br /&gt;
&lt;br /&gt;
=== 7. märts ===&lt;br /&gt;
Linnar Viik andis meile järgmist nõu: tuleb eristada kahte asja - see, mis peab valmis saama (&#039;&#039;must&#039;&#039;) ja see, mis oleks tore (&#039;&#039;nice to have&#039;&#039;). Valmis peab saama menüüga ekraan seinal (esialgu kasutajale prototüübi näitamiseks kasvõi näiteks PowerPoint-i abil tehtud). Alles siis kui on kasutajalt positiivne tagasiside saadud, võib edasi minna reaalse tarkvaralahenduse loomisega. Kui ka see on valmis ja kasutaja sellega rahul võib juurde mõelda &#039;&#039;nice to have&#039;&#039; asju (näiteks eelinfo järgmise päeva menüü kohta, üliõpilasesinduse sõnumite riba ja muid asju).&lt;br /&gt;
&lt;br /&gt;
Saime teada, et kui tahame, et meie loodav süsteem suhtleks IT Kohviku kassasüsteemiga, siis tuleb selle süsteemi tootjatega ühendust võtta ja nendega konsulteerida.&lt;br /&gt;
&lt;br /&gt;
=== 19.Veebruar ===&lt;br /&gt;
*Valmis XSLT fail.&lt;br /&gt;
&lt;br /&gt;
=== 9.Veebruar ===&lt;br /&gt;
* Esmane versioon XML ja XML Schemast olemas&lt;br /&gt;
* Tekkis küsimus kas XSLT faili tuleb käsitsi tekitada või automaatselt.&lt;br /&gt;
* Küsimus oli ka kas lahendasime portsjoni asja mõistlikult või oleks mõni teine lähenemine parem olnud.&lt;br /&gt;
* Küsimus, kas XML fail on liiga üle pingutatud või sobiva keerukusega&lt;br /&gt;
&lt;br /&gt;
=== 7. Veebruar ===&lt;br /&gt;
* Võtsime õppejõu poolt pakutud ideest kohe kinni, sest me eelistame teha praktilist asja, mida saab kasutada ja mille kasutamist saame ka iga päev jälgida. &lt;br /&gt;
* Esimese asjana otsustasime välja uurida mida meie &amp;quot;kliendid&amp;quot; (süsteemi tellijad) meilt ootavad. (Soovid idee punkti all)&lt;br /&gt;
* Valminud on lihtne teenusest ja klientidest koosnev süsteemi testmudel.&lt;br /&gt;
&lt;br /&gt;
== Kasulikud lingid ==&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCF_auto_client_proxies.aspx&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/ms178472.aspx&lt;br /&gt;
&lt;br /&gt;
http://support.microsoft.com/kb/305141&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/aa702565.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/scottgu/archive/2007/04/06/tip-trick-enabling-ssl-on-iis7-using-self-signed-certificates.aspx&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Võrgurakendused II: hajussüsteemide ehitamine]]&lt;br /&gt;
[[Category: Veebirakenduste loomine ASP.NET abil]]&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=30572</id>
		<title>Meeskond &quot;FoodWars&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=30572"/>
		<updated>2011-05-07T20:33:47Z</updated>

		<summary type="html">&lt;p&gt;Rruga: /* Klientrakendus II : Mobiilirakendus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Idee ==&lt;br /&gt;
Meie tiimil on plaanis teha internetipõhine söökla menüü süsteem (aluseks IT Kolledži kohvik, aga suunitlus selline, et kõik kohvikud/sööklad saaksid teha endale kasutajakonto ja hakata rakendust kasutama), kust saaks jälgida menüüd, mis sööke saab süüa, mis veel järgi on, kasutajatel on ka võimalus sööke hinnata (stiilis &amp;quot;meeldib&amp;quot;, &amp;quot;ei meeldi&amp;quot; nagu Facebook-is).&lt;br /&gt;
&lt;br /&gt;
Kohvikupidaja Teele soovid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* elektroonilisest menüüst asju kustutada, isegi siis kui asja peaks olema teoreetiliselt alles, aga tegelikult on asi otsas.&lt;br /&gt;
* elektrikatkestuse korral jääb menüü püsima. Ta peab teadma hindu mistahes olukorras.&lt;br /&gt;
* menüül näidatakse automaatselt ka ISIC kaardi omanike soodushinnad&lt;br /&gt;
* süsteem toetab ka poole portsjoni müümist.&lt;br /&gt;
&lt;br /&gt;
Linnar Viigi soovid/visioonid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* kõik oleks ka internetist kättesaadav, peale LCD ekraani, mis kajastab menüüd sööklas.&lt;br /&gt;
* aluseks facebook, kus siis söögid oleks nagu facebook-i alateemad.&lt;br /&gt;
* saab sööke hinnata, kommenteerida (täna oli väga maitsev praad).&lt;br /&gt;
* kasutajad saaks vaadata, mis menüüs on (ka järgmisel nädalal) ja mitu portsu veel alles on.&lt;br /&gt;
* kasutajad saaksid välja pakkuda menüüsid.&lt;br /&gt;
* erinevate söögikohtade kasutajad saaksid omavahel muljeid jagada.&lt;br /&gt;
* kuu aja aktiivsemad saavad prii lõuna.&lt;br /&gt;
* mingil ajal võib olla &amp;quot;happy hour&amp;quot; (enne sulgemist saab odavamalt).&lt;br /&gt;
* piiranguks on see, et toitu broneerida ei saa &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vaba tarkvara kasutamise võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Antud projekti puhul oleks võimalik kasutada [http://www.postgresql.org/ PostgreSQL] andmebaasi (vt. lisaks http://en.wikipedia.org/wiki/PostgreSQL ) Microsoft SQL Server&#039;i asemel. See võiks anda kasutajale võimaluse valida .NET ning [http://www.mono-project.com/ Mono] (vt. lisaks http://en.wikipedia.org/wiki/Mono_(software) ) platvormide vahel. Sel viisil oleks kliendil võimalik Microsoft&#039;i platvormi kõrval valida tõenäoliselt soodsam vaba tarkvara platvorm. Andmebaasi lõplik valik pole hetkel veel otsustatud.&lt;br /&gt;
&lt;br /&gt;
== Meeskond ja tööjaotus==&lt;br /&gt;
* Kristjan Stolin - projektijuht, suhtlus kliendiga, XML, wiki, teenuskihtide progemine, rollide halduse lehe progemine&lt;br /&gt;
* Ilmar Telga - XML, kliendiga suhtlus, wiki, teenuskihtide progemine, lõpprakenduste menüüd, login&lt;br /&gt;
* Rauno Rüga - XML, XSLT, andmebaasi loomine, wiki, mobiilirakendus, statistika&lt;br /&gt;
* Lauri Kermas - teenuskihtide ehitamine, wiki, login, kommenteerimise võimaluste progemine&lt;br /&gt;
&lt;br /&gt;
== XML Fail ==&lt;br /&gt;
=== XML ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Toidud&amp;gt;&lt;br /&gt;
  &amp;lt;Toit&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduNimetus&amp;gt;Viineri kaste&amp;lt;/ToiduNimetus&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduLiik&amp;gt;Praad&amp;lt;/ToiduLiik&amp;gt;&lt;br /&gt;
    &amp;lt;OlemasolevatYhikut&amp;gt;5&amp;lt;/OlemasolevatYhikut&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduKogus&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Poolportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;2011&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;1&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;9&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;15&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;07&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;23&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;        &lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.15&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;0&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;0&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;0&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;00&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;00&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;00&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Täisportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.80&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
    &amp;lt;/ToiduKogus&amp;gt;&lt;br /&gt;
    &amp;lt;Kommentaarid&amp;gt;&lt;br /&gt;
      &amp;lt;Kommentaar&amp;gt;&lt;br /&gt;
        &amp;lt;Saatja&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaNimi&amp;gt;Kristjan&amp;lt;/SaatjaNimi&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaRoll&amp;gt;Tudeng&amp;lt;/SaatjaRoll&amp;gt;&lt;br /&gt;
        &amp;lt;/Saatja&amp;gt;&lt;br /&gt;
        &amp;lt;Sisu&amp;gt;Minu lemmik toit ! Kui algebra tund ei hakkaks, sööks veel 5 portsjonit.&amp;lt;/Sisu&amp;gt;&lt;br /&gt;
      &amp;lt;/Kommentaar&amp;gt;&lt;br /&gt;
    &amp;lt;/Kommentaarid&amp;gt;&lt;br /&gt;
  &amp;lt;/Toit&amp;gt;&lt;br /&gt;
&amp;lt;/Toidud&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kommentaariks siis niipalju, et meie näide on ilma kohviku osata, selleks et näidet mitte liiga suureks ajada.&lt;br /&gt;
&lt;br /&gt;
Ka on meil moment puudu ID väljad, mis on igasugu andmebaasiga suhtlemiseks hädavajalikud, samas siin näidises palju juurde ei anna.&lt;br /&gt;
&lt;br /&gt;
Asja tegemisel avastasime, et põhiliseks arusaamatuse kohaks on toitude erinevad kogused (ehk siis pool portsjonit, suur / väike ja muud võrdlevad ühikud). Esimese võimalusena kaalusime teha lihtsalt täiesti eraldi toidud kõige kohta, stiilis &amp;quot;väike viineripraad&amp;quot; ja &amp;quot;suur viineripraad&amp;quot;. Kahjuks see variant ei kõlbaks eriti hästi, kuna need erinevad portsjonid kasutavad ikkagi samu materjale ja kui me peaks mingi süsteemiga näitama kui palju portsjoneid alles on. Sööklast näiteks pakuti et väike portsjon kasutab materjale kuskil 0.8 suure portsjoni ulatuses, ehk see suhtarv peaks olema kasutaja poolt (kohvikupidaja, restoraniomanik) ise sätitav. &lt;br /&gt;
&lt;br /&gt;
Tänu sellele sai meie süsteemi alustalaks siiski Toit, millel on oma Portsjonid siis erinevate hindade ja soodustustega. Moment pole meil ka Portsjoni XML osas toodud ära seost kogusega. (Kui palju ühe portsjoni lisamine/müümine peaks toidu üldkogust muutma).&lt;br /&gt;
&lt;br /&gt;
Kommenteerida saab meil moment toitu ennast, mitte eraldi portsjonit. Isegi kui kasutajad tahavad lisada kommentaare stiilis &amp;quot;See väike supp oli tõesti väga väike&amp;quot;, ei soovi nad seda ilmselt eraldi portsjoni alla panna. Tulevikus peaks kindlasti olema ka võimalus pigem kommenteerida üldisemalt (Kohvikut ennast, söögipaiku üldse), kui spetsiifilisemalt (Väikse prae kaste lisandi kohta).&lt;br /&gt;
&lt;br /&gt;
=== XML Schema ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Toidud&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Toit&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduNimetus&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;OlemasolevatYhikut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduKogus&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:choice maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;PortsjoniLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;Myygiaeg&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Aasta&amp;quot; type=&amp;quot;xs:unsignedShort&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Kuu&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Paev&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Tund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Minut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Sekund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;ToiduHind&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Eurohind&amp;quot; type=&amp;quot;xs:decimal&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Soodustus&amp;quot;&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseProtsent&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:choice&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Kommentaarid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Saatja&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaNimi&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaRoll&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Sisu&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
  &amp;lt;h2&amp;gt;Kohvikus müüdavad toidud&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr bgcolor=&amp;quot;#9acd32&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Veel alles&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Portsjon&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Müügiaeg&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustuse liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Kommentaar(id)&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;Toidud/Toit&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduNimetus&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduLiik&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;OlemasolevatYhikut&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;PortsjoniLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Paev&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Kuu&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Aasta&amp;quot; /&amp;gt; &amp;amp;nbsp;  &lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Tund&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Minut&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Sekund&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Eurohind&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseProtsent&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Kommentaarid/Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Sisu&amp;quot; /&amp;gt;&amp;amp;nbsp;(&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaRoll&amp;quot; /&amp;gt;&amp;amp;nbsp;&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaNimi&amp;quot; /&amp;gt;)&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XSLT poolt loodud tulemus on järgnev (lisasin veel kaks toitu XML faili, siin wiki lehel on ruumi kokkuhoiuks vaid 1 toit toitude listis):&lt;br /&gt;
[[File:Xslt.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arhitektuur ==&lt;br /&gt;
&lt;br /&gt;
Süsteem oli vahepeal plaanis ehitada kolmekihilise arhitektuuriga ([http://en.wikipedia.org/wiki/Multitier_architecture#Three-tier_architecture Three-tier architecture]). See peaks lihtsustama süsteemi haldamist ja laiendamist tulevikus. Aga kuna selle jaoks otsest vajadust polenud ja oleks vaid süsteemi keeruliseks ajanud, siis loobusime sellest.&lt;br /&gt;
&lt;br /&gt;
[[Image:three-tier.png|thumb|center|alt=Arhitektuuri skeem.|Arhitektuuri skeem.]]&lt;br /&gt;
&lt;br /&gt;
== Veebiteenus ==&lt;br /&gt;
===Andmemudel===&lt;br /&gt;
[[Image:KohvikuAndmemudel.jpg|thumb|right|alt=Kohviku projekti andmemudel|Andmemudel]]&lt;br /&gt;
Enne veebiteenuse meetodite kirjeldamist koostasime andmemudeli. Loodud andmemudeli põhjal lõime andmebaasi vajalike tabelite ja atribuutidega. Andmemudeli peal on rohelisega tähistatud tabelid, mis on oseselt seotud kohviku valdajaga ja mida WPF rakenduse jaoks kindlasti vaja on. Ülejäänud helesinised tabelid on vajalikud kasutajate võimaluste jaoks. Lisaks on andmemudelil kaks tabelit, mis pole teisega seotud, need on süsteemi administraatori jaoks, et oleks ülevaade, mis rakendused teenust enim kasutavad ning mis meetodeid kõige rohkem välja kutsutakse.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Teenuskihis olevad meetodid===&lt;br /&gt;
&lt;br /&gt;
====Kasutajatega seotud meetodid:====&lt;br /&gt;
*SaidiKasutajaLiik() - Tagastab antud kasutaja ID järgi kasutaja liigi nimetuse&lt;br /&gt;
*KustutaSaidiKasutaja() - Kustutab antud kasutaja ID järgi kasutaja tabelis Kasutaja&lt;br /&gt;
*AnnaKoikSaidiKasutajad() - Tagastab kõik kirjed tabelist Kasutaja&lt;br /&gt;
*AnnaKoikKohvikuKasutajad() - Tagastab antud kohviku ID järgi kõik kohviku kasutajad massiivina&lt;br /&gt;
*MuudaSaidiKasutajaLiik() - Muudab antud kasutaja ID järgi kasutaja liigi tabelis Kasutaja&lt;br /&gt;
*KoikLubatudSaidiKasutajaTyybid() - Tagastab andmebaasi kõik võimalikud kohviku kasutaja rollid (id-d ja nimed), muud andmed jäävad tühjaks&lt;br /&gt;
*KoikLubatudKohvikuRollid() - Tagastab andmebaasi kõik võimalikud site kasutaja rollid (id-d ja nimed), kohviku_id jääb tühjaks&lt;br /&gt;
*KasutajaKohvikuRollid() - Tagastab antud kasutaja ID järgi kõik kasutaja rollid kõikides kohvikutes&lt;br /&gt;
*MuudaKohvikuKasutajaRoll() - Muudab antud kasutaja ID ja kohviku ID järgi kasutaja rolli kohvikus, kui rolli pole, siis tekitatakse uus&lt;br /&gt;
*SaidiKasutajaLiikID() - Tagastab antud kasutaja ID järgi kasutaja liigi ID&lt;br /&gt;
*KohvikuKasutajaLiikID() - Tagastab antud kasutaja ID ja kohviku ID järgi kohviku kasutaja rolli ID&lt;br /&gt;
*AnnaKasutajaMeiliAadress() - Tagastab antud kasutaja nime alusel kasutaja meiliaadressi&lt;br /&gt;
*AnnaKasutajaIdJargi() - Tagastab kasutajanime kasutaja ID järgi&lt;br /&gt;
*AuthendiKasutaja() - Autendib kasutaja, õnnestumisel tagastab kasutaja ID, ebaõnnestumisel null &lt;br /&gt;
*RegistreeriKasutaja() - Registreerib kasutaja andmebaasi ja tagastab true kui kasutaja loomine õnnestus&lt;br /&gt;
&lt;br /&gt;
====Menüüga seotud meetodid====&lt;br /&gt;
*LisaArtikkelMenuuse() - Seob menüüartikli ja menüü&lt;br /&gt;
*LisaKohvikuleMenuu() - Seob menüü ja kohviku&lt;br /&gt;
*TagastabMenuuMuutujad() - Tagastab menüü järgi kas inimesel oleks õigust seda muuta&lt;br /&gt;
*KustutaMenuuJaKohvikuSeos() - Kustutab menüü ja kohviku seose&lt;br /&gt;
*LisaUusMenuu() - Teeb uue menüü, seob selle kohvikuga, kui kohviku ID on parameetrina kaasa antud&lt;br /&gt;
*MenuuKohvikuIdJargi() - Tagastab kohviku ID järgi kohviku tänaste või mitte tänaste menüüde ID-de massiivi&lt;br /&gt;
*LisaMenuuArtikkelMenuuse() - Sisestab antud müügiartikli menüüsse, mille ID on menyy_id&lt;br /&gt;
*KustutaMenuuArtikkel() - Kustutab müügiartikli ID ja menüü ID järgi müügiartikli menüüst&lt;br /&gt;
*TagastaMenuuArtiklid() - Tagastab menüü ID järgi menüüs olevad müügiartiklid&lt;br /&gt;
*VahetaMenuuArtiklit() - Muudab antud müügiartikli tabelis Myygiartikkel&lt;br /&gt;
*MenuuNimetus() - Tagastab menüü ID järgi menüü nimetuse&lt;br /&gt;
*AnnaMuugiartiklidMidaMenuusPole() - Tagastab müügiartiklid, mis pole veel menüüs, kus on juba müügiartiklid, mille IDd on antud massiivis&lt;br /&gt;
*AnnaMenuuNimed() - Tagastab kõigi menüüde nimetused tabelis Menyy&lt;br /&gt;
&lt;br /&gt;
====Kohvikutest üldiselt====&lt;br /&gt;
*KohvikuteNimed() - Tagastab kõigi kohvikute nimed massiivina&lt;br /&gt;
*KohvikuNimiIdJargi() - Tagastab antud kohviku ID järgi kohviku nime&lt;br /&gt;
*AnnaKoikOmanikuKohvikud() - Tagastab antud omaniku ID järgi kõik omaniku kohvikute ID-d massiivina&lt;br /&gt;
*Kohvikud() - Tagastab kõik kohvikute kirjed tabelist Kohvik&lt;br /&gt;
*KohvikuteArv() - Tagastab kõigi kohvikute arvu&lt;br /&gt;
*AnnaKaubad() - Tagastab kõik kaubad tabelist Kaup&lt;br /&gt;
*LisaKaup() - Lisab kauba kaupade nimekirja&lt;br /&gt;
*LisaKohvik() - Uue kohviku lisamine&lt;br /&gt;
&lt;br /&gt;
====Kommentaaridega seotud meetodid:====&lt;br /&gt;
*KohvikuKommentaarideArv() - Kohviku kommentaaride arv&lt;br /&gt;
*AnnaKohvikuKommentaarid() - Tagastab kommentaarid lehtede kaupa&lt;br /&gt;
*AnnaKohvikuKommentaarideHinded() - Tagastab kommentaaride jaoks võimalikud hinded koos kirjeldustega&lt;br /&gt;
*LisaKohvikuKommentaar() - Lisab kohviku kommentaari&lt;br /&gt;
&lt;br /&gt;
====Statistikaga seotud meetodid:====&lt;br /&gt;
*StatistikaRakendusteKohtaTana() - Tagastab rakenduse nimed ja nende vastu tehtud päringud tänasel päeval&lt;br /&gt;
*StatistikaRakendusteKohtaViimaneNadal() - Tagastab rakenduse nimed ja nende vastu tehtud päringud viimase nädala jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaSellelKuul() - Tagastab rakenduse nimed ja nende vastu tehtud päringud selle kuu jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaKokku() - Tagastab rakenduse nimed ja nende vastu tehtud päringud kogu aja vältel&lt;br /&gt;
*StatistikaMeetoditeKohtaTana() - Meetod leiab tänase päeva jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaViimaneNadal() - Meetod leiab viimase nädala jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaSellelKuul() - Meetod leiab kuu jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaKokku() - Meetod leiab kogu aja vältel kasutatud meetodid ja paringute arvu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebiteenuse projekti (WCF + andmebaas) saab siit: http://enos.itcollege.ee/~rruga/VRII/Teenusekiht.zip&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : CMS ==&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Veebirakendus ==&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus II : Mobiilirakendus ==&lt;br /&gt;
&lt;br /&gt;
Teine rakendus, mis veebiteenuse peale ehitatud sai, oli Windows Phone 7 rakendus. Lühidalt kirjeldades saab peale rakenduse käivitamist näha listi kõikidest olemasolevatest kohvikutest. Kui vajutad mingi kohviku nime peale, avaneb täpsem kirjeldus kohviku kohta, kust näeb lisaks kohviku nimele ka lühikest kirjeldust, tänast lahtiolekuaega ja kohviku aadressit. Samuti on kohviku kirjelduse lehel viide kohviku tänasele menüüle ja kommenteerimisele. Vajutades vaata menüüd nuppu avaneb vaade täna müügis olevatest müügiartiklitest ja nende hinnast, vajutades aga kommenteeri kohvikut nupule avaneb võimalus lisada kohviku kohta kommentaar.&lt;br /&gt;
&lt;br /&gt;
Kokkuvõttev pilt realiseeritud võimalustest:&lt;br /&gt;
&lt;br /&gt;
[[Image:WP7 rakendus.jpg|alt=WP7 rakendus.|WP7 rakenduse võimalused.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mobiilirakenduse saab alla tõmmata siit: http://enos.itcollege.ee/~rruga/VRII/Mobiilirakendus.rar&lt;br /&gt;
&lt;br /&gt;
NB! Et mobiilirakendust proovida ja mõistliku tulemust saada peab teil olema kõige uuem versioon meie projekti teenuskihist ning teenuskiht peab töötama.&lt;br /&gt;
&lt;br /&gt;
== Meeskonna kokkuvõttev aruanne ==&lt;br /&gt;
&lt;br /&gt;
== Logi ==&lt;br /&gt;
=== 17. aprill ===&lt;br /&gt;
Wikilehe täiendamine andmemudeli ja veebiteenuse meetodite kirjeldusega.&lt;br /&gt;
&lt;br /&gt;
=== 9. aprill ===&lt;br /&gt;
Tegime rollide halduse, münüüde muutmise vormi. Meili saatmine registreerimisel. Toimus andmebaasi andmemudeli väike muutus. &lt;br /&gt;
&lt;br /&gt;
=== 30. märts ===&lt;br /&gt;
Tehtud on kohviku menüü ja kohviku kommenteerimise leht.&lt;br /&gt;
&lt;br /&gt;
=== 26. märts ===&lt;br /&gt;
Tehtud on esimesed veebiteenuse meetodid ja veebirakendusele kasutajate registreerimine.&lt;br /&gt;
&lt;br /&gt;
=== 10. märts ===&lt;br /&gt;
Väikese häki abil õnnestus kohviku kassa arvutis saada tööle üks Forms-i proovirakendus.&lt;br /&gt;
&lt;br /&gt;
=== 8. märts ===&lt;br /&gt;
Kuna kassa-aparaadis on operatsioonisüsteemiks Windows XP ja raud on 1.99 GHz, 256 RAM siis peaks saama&lt;br /&gt;
prototüübiks teha sinna peale rakenduse, mille ülesandeks menüüga tegelemine. &lt;br /&gt;
&lt;br /&gt;
=== 7. märts ===&lt;br /&gt;
Linnar Viik andis meile järgmist nõu: tuleb eristada kahte asja - see, mis peab valmis saama (&#039;&#039;must&#039;&#039;) ja see, mis oleks tore (&#039;&#039;nice to have&#039;&#039;). Valmis peab saama menüüga ekraan seinal (esialgu kasutajale prototüübi näitamiseks kasvõi näiteks PowerPoint-i abil tehtud). Alles siis kui on kasutajalt positiivne tagasiside saadud, võib edasi minna reaalse tarkvaralahenduse loomisega. Kui ka see on valmis ja kasutaja sellega rahul võib juurde mõelda &#039;&#039;nice to have&#039;&#039; asju (näiteks eelinfo järgmise päeva menüü kohta, üliõpilasesinduse sõnumite riba ja muid asju).&lt;br /&gt;
&lt;br /&gt;
Saime teada, et kui tahame, et meie loodav süsteem suhtleks IT Kohviku kassasüsteemiga, siis tuleb selle süsteemi tootjatega ühendust võtta ja nendega konsulteerida.&lt;br /&gt;
&lt;br /&gt;
=== 19.Veebruar ===&lt;br /&gt;
*Valmis XSLT fail.&lt;br /&gt;
&lt;br /&gt;
=== 9.Veebruar ===&lt;br /&gt;
* Esmane versioon XML ja XML Schemast olemas&lt;br /&gt;
* Tekkis küsimus kas XSLT faili tuleb käsitsi tekitada või automaatselt.&lt;br /&gt;
* Küsimus oli ka kas lahendasime portsjoni asja mõistlikult või oleks mõni teine lähenemine parem olnud.&lt;br /&gt;
* Küsimus, kas XML fail on liiga üle pingutatud või sobiva keerukusega&lt;br /&gt;
&lt;br /&gt;
=== 7. Veebruar ===&lt;br /&gt;
* Võtsime õppejõu poolt pakutud ideest kohe kinni, sest me eelistame teha praktilist asja, mida saab kasutada ja mille kasutamist saame ka iga päev jälgida. &lt;br /&gt;
* Esimese asjana otsustasime välja uurida mida meie &amp;quot;kliendid&amp;quot; (süsteemi tellijad) meilt ootavad. (Soovid idee punkti all)&lt;br /&gt;
* Valminud on lihtne teenusest ja klientidest koosnev süsteemi testmudel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Kasulikud lingid ==&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCF_auto_client_proxies.aspx&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/ms178472.aspx&lt;br /&gt;
&lt;br /&gt;
http://support.microsoft.com/kb/305141&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/aa702565.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/scottgu/archive/2007/04/06/tip-trick-enabling-ssl-on-iis7-using-self-signed-certificates.aspx&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Võrgurakendused II: hajussüsteemide ehitamine]]&lt;br /&gt;
[[Category: Veebirakenduste loomine ASP.NET abil]]&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=30571</id>
		<title>Meeskond &quot;FoodWars&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=30571"/>
		<updated>2011-05-07T20:33:17Z</updated>

		<summary type="html">&lt;p&gt;Rruga: /* Klientrakendus II : Mobiilirakendus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Idee ==&lt;br /&gt;
Meie tiimil on plaanis teha internetipõhine söökla menüü süsteem (aluseks IT Kolledži kohvik, aga suunitlus selline, et kõik kohvikud/sööklad saaksid teha endale kasutajakonto ja hakata rakendust kasutama), kust saaks jälgida menüüd, mis sööke saab süüa, mis veel järgi on, kasutajatel on ka võimalus sööke hinnata (stiilis &amp;quot;meeldib&amp;quot;, &amp;quot;ei meeldi&amp;quot; nagu Facebook-is).&lt;br /&gt;
&lt;br /&gt;
Kohvikupidaja Teele soovid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* elektroonilisest menüüst asju kustutada, isegi siis kui asja peaks olema teoreetiliselt alles, aga tegelikult on asi otsas.&lt;br /&gt;
* elektrikatkestuse korral jääb menüü püsima. Ta peab teadma hindu mistahes olukorras.&lt;br /&gt;
* menüül näidatakse automaatselt ka ISIC kaardi omanike soodushinnad&lt;br /&gt;
* süsteem toetab ka poole portsjoni müümist.&lt;br /&gt;
&lt;br /&gt;
Linnar Viigi soovid/visioonid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* kõik oleks ka internetist kättesaadav, peale LCD ekraani, mis kajastab menüüd sööklas.&lt;br /&gt;
* aluseks facebook, kus siis söögid oleks nagu facebook-i alateemad.&lt;br /&gt;
* saab sööke hinnata, kommenteerida (täna oli väga maitsev praad).&lt;br /&gt;
* kasutajad saaks vaadata, mis menüüs on (ka järgmisel nädalal) ja mitu portsu veel alles on.&lt;br /&gt;
* kasutajad saaksid välja pakkuda menüüsid.&lt;br /&gt;
* erinevate söögikohtade kasutajad saaksid omavahel muljeid jagada.&lt;br /&gt;
* kuu aja aktiivsemad saavad prii lõuna.&lt;br /&gt;
* mingil ajal võib olla &amp;quot;happy hour&amp;quot; (enne sulgemist saab odavamalt).&lt;br /&gt;
* piiranguks on see, et toitu broneerida ei saa &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vaba tarkvara kasutamise võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Antud projekti puhul oleks võimalik kasutada [http://www.postgresql.org/ PostgreSQL] andmebaasi (vt. lisaks http://en.wikipedia.org/wiki/PostgreSQL ) Microsoft SQL Server&#039;i asemel. See võiks anda kasutajale võimaluse valida .NET ning [http://www.mono-project.com/ Mono] (vt. lisaks http://en.wikipedia.org/wiki/Mono_(software) ) platvormide vahel. Sel viisil oleks kliendil võimalik Microsoft&#039;i platvormi kõrval valida tõenäoliselt soodsam vaba tarkvara platvorm. Andmebaasi lõplik valik pole hetkel veel otsustatud.&lt;br /&gt;
&lt;br /&gt;
== Meeskond ja tööjaotus==&lt;br /&gt;
* Kristjan Stolin - projektijuht, suhtlus kliendiga, XML, wiki, teenuskihtide progemine, rollide halduse lehe progemine&lt;br /&gt;
* Ilmar Telga - XML, kliendiga suhtlus, wiki, teenuskihtide progemine, lõpprakenduste menüüd, login&lt;br /&gt;
* Rauno Rüga - XML, XSLT, andmebaasi loomine, wiki, mobiilirakendus, statistika&lt;br /&gt;
* Lauri Kermas - teenuskihtide ehitamine, wiki, login, kommenteerimise võimaluste progemine&lt;br /&gt;
&lt;br /&gt;
== XML Fail ==&lt;br /&gt;
=== XML ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Toidud&amp;gt;&lt;br /&gt;
  &amp;lt;Toit&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduNimetus&amp;gt;Viineri kaste&amp;lt;/ToiduNimetus&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduLiik&amp;gt;Praad&amp;lt;/ToiduLiik&amp;gt;&lt;br /&gt;
    &amp;lt;OlemasolevatYhikut&amp;gt;5&amp;lt;/OlemasolevatYhikut&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduKogus&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Poolportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;2011&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;1&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;9&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;15&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;07&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;23&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;        &lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.15&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;0&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;0&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;0&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;00&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;00&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;00&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Täisportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.80&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
    &amp;lt;/ToiduKogus&amp;gt;&lt;br /&gt;
    &amp;lt;Kommentaarid&amp;gt;&lt;br /&gt;
      &amp;lt;Kommentaar&amp;gt;&lt;br /&gt;
        &amp;lt;Saatja&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaNimi&amp;gt;Kristjan&amp;lt;/SaatjaNimi&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaRoll&amp;gt;Tudeng&amp;lt;/SaatjaRoll&amp;gt;&lt;br /&gt;
        &amp;lt;/Saatja&amp;gt;&lt;br /&gt;
        &amp;lt;Sisu&amp;gt;Minu lemmik toit ! Kui algebra tund ei hakkaks, sööks veel 5 portsjonit.&amp;lt;/Sisu&amp;gt;&lt;br /&gt;
      &amp;lt;/Kommentaar&amp;gt;&lt;br /&gt;
    &amp;lt;/Kommentaarid&amp;gt;&lt;br /&gt;
  &amp;lt;/Toit&amp;gt;&lt;br /&gt;
&amp;lt;/Toidud&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kommentaariks siis niipalju, et meie näide on ilma kohviku osata, selleks et näidet mitte liiga suureks ajada.&lt;br /&gt;
&lt;br /&gt;
Ka on meil moment puudu ID väljad, mis on igasugu andmebaasiga suhtlemiseks hädavajalikud, samas siin näidises palju juurde ei anna.&lt;br /&gt;
&lt;br /&gt;
Asja tegemisel avastasime, et põhiliseks arusaamatuse kohaks on toitude erinevad kogused (ehk siis pool portsjonit, suur / väike ja muud võrdlevad ühikud). Esimese võimalusena kaalusime teha lihtsalt täiesti eraldi toidud kõige kohta, stiilis &amp;quot;väike viineripraad&amp;quot; ja &amp;quot;suur viineripraad&amp;quot;. Kahjuks see variant ei kõlbaks eriti hästi, kuna need erinevad portsjonid kasutavad ikkagi samu materjale ja kui me peaks mingi süsteemiga näitama kui palju portsjoneid alles on. Sööklast näiteks pakuti et väike portsjon kasutab materjale kuskil 0.8 suure portsjoni ulatuses, ehk see suhtarv peaks olema kasutaja poolt (kohvikupidaja, restoraniomanik) ise sätitav. &lt;br /&gt;
&lt;br /&gt;
Tänu sellele sai meie süsteemi alustalaks siiski Toit, millel on oma Portsjonid siis erinevate hindade ja soodustustega. Moment pole meil ka Portsjoni XML osas toodud ära seost kogusega. (Kui palju ühe portsjoni lisamine/müümine peaks toidu üldkogust muutma).&lt;br /&gt;
&lt;br /&gt;
Kommenteerida saab meil moment toitu ennast, mitte eraldi portsjonit. Isegi kui kasutajad tahavad lisada kommentaare stiilis &amp;quot;See väike supp oli tõesti väga väike&amp;quot;, ei soovi nad seda ilmselt eraldi portsjoni alla panna. Tulevikus peaks kindlasti olema ka võimalus pigem kommenteerida üldisemalt (Kohvikut ennast, söögipaiku üldse), kui spetsiifilisemalt (Väikse prae kaste lisandi kohta).&lt;br /&gt;
&lt;br /&gt;
=== XML Schema ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Toidud&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Toit&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduNimetus&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;OlemasolevatYhikut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduKogus&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:choice maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;PortsjoniLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;Myygiaeg&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Aasta&amp;quot; type=&amp;quot;xs:unsignedShort&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Kuu&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Paev&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Tund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Minut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Sekund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;ToiduHind&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Eurohind&amp;quot; type=&amp;quot;xs:decimal&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Soodustus&amp;quot;&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseProtsent&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:choice&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Kommentaarid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Saatja&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaNimi&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaRoll&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Sisu&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
  &amp;lt;h2&amp;gt;Kohvikus müüdavad toidud&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr bgcolor=&amp;quot;#9acd32&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Veel alles&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Portsjon&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Müügiaeg&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustuse liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Kommentaar(id)&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;Toidud/Toit&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduNimetus&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduLiik&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;OlemasolevatYhikut&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;PortsjoniLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Paev&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Kuu&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Aasta&amp;quot; /&amp;gt; &amp;amp;nbsp;  &lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Tund&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Minut&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Sekund&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Eurohind&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseProtsent&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Kommentaarid/Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Sisu&amp;quot; /&amp;gt;&amp;amp;nbsp;(&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaRoll&amp;quot; /&amp;gt;&amp;amp;nbsp;&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaNimi&amp;quot; /&amp;gt;)&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XSLT poolt loodud tulemus on järgnev (lisasin veel kaks toitu XML faili, siin wiki lehel on ruumi kokkuhoiuks vaid 1 toit toitude listis):&lt;br /&gt;
[[File:Xslt.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arhitektuur ==&lt;br /&gt;
&lt;br /&gt;
Süsteem oli vahepeal plaanis ehitada kolmekihilise arhitektuuriga ([http://en.wikipedia.org/wiki/Multitier_architecture#Three-tier_architecture Three-tier architecture]). See peaks lihtsustama süsteemi haldamist ja laiendamist tulevikus. Aga kuna selle jaoks otsest vajadust polenud ja oleks vaid süsteemi keeruliseks ajanud, siis loobusime sellest.&lt;br /&gt;
&lt;br /&gt;
[[Image:three-tier.png|thumb|center|alt=Arhitektuuri skeem.|Arhitektuuri skeem.]]&lt;br /&gt;
&lt;br /&gt;
== Veebiteenus ==&lt;br /&gt;
===Andmemudel===&lt;br /&gt;
[[Image:KohvikuAndmemudel.jpg|thumb|right|alt=Kohviku projekti andmemudel|Andmemudel]]&lt;br /&gt;
Enne veebiteenuse meetodite kirjeldamist koostasime andmemudeli. Loodud andmemudeli põhjal lõime andmebaasi vajalike tabelite ja atribuutidega. Andmemudeli peal on rohelisega tähistatud tabelid, mis on oseselt seotud kohviku valdajaga ja mida WPF rakenduse jaoks kindlasti vaja on. Ülejäänud helesinised tabelid on vajalikud kasutajate võimaluste jaoks. Lisaks on andmemudelil kaks tabelit, mis pole teisega seotud, need on süsteemi administraatori jaoks, et oleks ülevaade, mis rakendused teenust enim kasutavad ning mis meetodeid kõige rohkem välja kutsutakse.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Teenuskihis olevad meetodid===&lt;br /&gt;
&lt;br /&gt;
====Kasutajatega seotud meetodid:====&lt;br /&gt;
*SaidiKasutajaLiik() - Tagastab antud kasutaja ID järgi kasutaja liigi nimetuse&lt;br /&gt;
*KustutaSaidiKasutaja() - Kustutab antud kasutaja ID järgi kasutaja tabelis Kasutaja&lt;br /&gt;
*AnnaKoikSaidiKasutajad() - Tagastab kõik kirjed tabelist Kasutaja&lt;br /&gt;
*AnnaKoikKohvikuKasutajad() - Tagastab antud kohviku ID järgi kõik kohviku kasutajad massiivina&lt;br /&gt;
*MuudaSaidiKasutajaLiik() - Muudab antud kasutaja ID järgi kasutaja liigi tabelis Kasutaja&lt;br /&gt;
*KoikLubatudSaidiKasutajaTyybid() - Tagastab andmebaasi kõik võimalikud kohviku kasutaja rollid (id-d ja nimed), muud andmed jäävad tühjaks&lt;br /&gt;
*KoikLubatudKohvikuRollid() - Tagastab andmebaasi kõik võimalikud site kasutaja rollid (id-d ja nimed), kohviku_id jääb tühjaks&lt;br /&gt;
*KasutajaKohvikuRollid() - Tagastab antud kasutaja ID järgi kõik kasutaja rollid kõikides kohvikutes&lt;br /&gt;
*MuudaKohvikuKasutajaRoll() - Muudab antud kasutaja ID ja kohviku ID järgi kasutaja rolli kohvikus, kui rolli pole, siis tekitatakse uus&lt;br /&gt;
*SaidiKasutajaLiikID() - Tagastab antud kasutaja ID järgi kasutaja liigi ID&lt;br /&gt;
*KohvikuKasutajaLiikID() - Tagastab antud kasutaja ID ja kohviku ID järgi kohviku kasutaja rolli ID&lt;br /&gt;
*AnnaKasutajaMeiliAadress() - Tagastab antud kasutaja nime alusel kasutaja meiliaadressi&lt;br /&gt;
*AnnaKasutajaIdJargi() - Tagastab kasutajanime kasutaja ID järgi&lt;br /&gt;
*AuthendiKasutaja() - Autendib kasutaja, õnnestumisel tagastab kasutaja ID, ebaõnnestumisel null &lt;br /&gt;
*RegistreeriKasutaja() - Registreerib kasutaja andmebaasi ja tagastab true kui kasutaja loomine õnnestus&lt;br /&gt;
&lt;br /&gt;
====Menüüga seotud meetodid====&lt;br /&gt;
*LisaArtikkelMenuuse() - Seob menüüartikli ja menüü&lt;br /&gt;
*LisaKohvikuleMenuu() - Seob menüü ja kohviku&lt;br /&gt;
*TagastabMenuuMuutujad() - Tagastab menüü järgi kas inimesel oleks õigust seda muuta&lt;br /&gt;
*KustutaMenuuJaKohvikuSeos() - Kustutab menüü ja kohviku seose&lt;br /&gt;
*LisaUusMenuu() - Teeb uue menüü, seob selle kohvikuga, kui kohviku ID on parameetrina kaasa antud&lt;br /&gt;
*MenuuKohvikuIdJargi() - Tagastab kohviku ID järgi kohviku tänaste või mitte tänaste menüüde ID-de massiivi&lt;br /&gt;
*LisaMenuuArtikkelMenuuse() - Sisestab antud müügiartikli menüüsse, mille ID on menyy_id&lt;br /&gt;
*KustutaMenuuArtikkel() - Kustutab müügiartikli ID ja menüü ID järgi müügiartikli menüüst&lt;br /&gt;
*TagastaMenuuArtiklid() - Tagastab menüü ID järgi menüüs olevad müügiartiklid&lt;br /&gt;
*VahetaMenuuArtiklit() - Muudab antud müügiartikli tabelis Myygiartikkel&lt;br /&gt;
*MenuuNimetus() - Tagastab menüü ID järgi menüü nimetuse&lt;br /&gt;
*AnnaMuugiartiklidMidaMenuusPole() - Tagastab müügiartiklid, mis pole veel menüüs, kus on juba müügiartiklid, mille IDd on antud massiivis&lt;br /&gt;
*AnnaMenuuNimed() - Tagastab kõigi menüüde nimetused tabelis Menyy&lt;br /&gt;
&lt;br /&gt;
====Kohvikutest üldiselt====&lt;br /&gt;
*KohvikuteNimed() - Tagastab kõigi kohvikute nimed massiivina&lt;br /&gt;
*KohvikuNimiIdJargi() - Tagastab antud kohviku ID järgi kohviku nime&lt;br /&gt;
*AnnaKoikOmanikuKohvikud() - Tagastab antud omaniku ID järgi kõik omaniku kohvikute ID-d massiivina&lt;br /&gt;
*Kohvikud() - Tagastab kõik kohvikute kirjed tabelist Kohvik&lt;br /&gt;
*KohvikuteArv() - Tagastab kõigi kohvikute arvu&lt;br /&gt;
*AnnaKaubad() - Tagastab kõik kaubad tabelist Kaup&lt;br /&gt;
*LisaKaup() - Lisab kauba kaupade nimekirja&lt;br /&gt;
*LisaKohvik() - Uue kohviku lisamine&lt;br /&gt;
&lt;br /&gt;
====Kommentaaridega seotud meetodid:====&lt;br /&gt;
*KohvikuKommentaarideArv() - Kohviku kommentaaride arv&lt;br /&gt;
*AnnaKohvikuKommentaarid() - Tagastab kommentaarid lehtede kaupa&lt;br /&gt;
*AnnaKohvikuKommentaarideHinded() - Tagastab kommentaaride jaoks võimalikud hinded koos kirjeldustega&lt;br /&gt;
*LisaKohvikuKommentaar() - Lisab kohviku kommentaari&lt;br /&gt;
&lt;br /&gt;
====Statistikaga seotud meetodid:====&lt;br /&gt;
*StatistikaRakendusteKohtaTana() - Tagastab rakenduse nimed ja nende vastu tehtud päringud tänasel päeval&lt;br /&gt;
*StatistikaRakendusteKohtaViimaneNadal() - Tagastab rakenduse nimed ja nende vastu tehtud päringud viimase nädala jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaSellelKuul() - Tagastab rakenduse nimed ja nende vastu tehtud päringud selle kuu jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaKokku() - Tagastab rakenduse nimed ja nende vastu tehtud päringud kogu aja vältel&lt;br /&gt;
*StatistikaMeetoditeKohtaTana() - Meetod leiab tänase päeva jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaViimaneNadal() - Meetod leiab viimase nädala jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaSellelKuul() - Meetod leiab kuu jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaKokku() - Meetod leiab kogu aja vältel kasutatud meetodid ja paringute arvu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebiteenuse projekti (WCF + andmebaas) saab siit: http://enos.itcollege.ee/~rruga/VRII/Teenusekiht.zip&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : CMS ==&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Veebirakendus ==&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus II : Mobiilirakendus ==&lt;br /&gt;
&lt;br /&gt;
Teine rakendus, mis veebiteenuse peale ehitatud sai, oli Windows Phone 7 rakendus. Lühidalt kirjeldades saab peale rakenduse käivitamist näha listi kõikidest olemasolevatest kohvikutest. Kui vajutad mingi kohviku nime peale, avaneb täpsem kirjeldus kohviku kohta, kust näeb lisaks kohviku nimele ka lühikest kirjeldust, tänast lahtiolekuaega ja kohviku aadressit. Samuti on kohviku kirjelduse lehel viide kohviku tänasele menüüle ja kommenteerimisele. Vajutades vaata menüüd nuppu avaneb vaade täna müügis olevatest müügiartiklitest ja nende hinnast, vajutades aga kommenteeri kohvikut nupule avaneb võimalus lisada kohviku kohta kommentaar.&lt;br /&gt;
&lt;br /&gt;
Kokkuvõttev pilt realiseeritud võimalustest:&lt;br /&gt;
&lt;br /&gt;
[[Image:WP7 rakendus.jpg|alt=WP7 rakendus.|WP7 rakenduse võimalused.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mobiilirakenduse saab alla tõmmata siit: http://enos.itcollege.ee/~rruga/VRII/Mobiilirakendus.rar&lt;br /&gt;
&lt;br /&gt;
NB! Et mobiilirakendust proovida ja mõistliku tulemust saada peab teil olema uuesi versioon meie projekti teenuskihist ning teenuskiht peab töötama.&lt;br /&gt;
&lt;br /&gt;
== Meeskonna kokkuvõttev aruanne ==&lt;br /&gt;
&lt;br /&gt;
== Logi ==&lt;br /&gt;
=== 17. aprill ===&lt;br /&gt;
Wikilehe täiendamine andmemudeli ja veebiteenuse meetodite kirjeldusega.&lt;br /&gt;
&lt;br /&gt;
=== 9. aprill ===&lt;br /&gt;
Tegime rollide halduse, münüüde muutmise vormi. Meili saatmine registreerimisel. Toimus andmebaasi andmemudeli väike muutus. &lt;br /&gt;
&lt;br /&gt;
=== 30. märts ===&lt;br /&gt;
Tehtud on kohviku menüü ja kohviku kommenteerimise leht.&lt;br /&gt;
&lt;br /&gt;
=== 26. märts ===&lt;br /&gt;
Tehtud on esimesed veebiteenuse meetodid ja veebirakendusele kasutajate registreerimine.&lt;br /&gt;
&lt;br /&gt;
=== 10. märts ===&lt;br /&gt;
Väikese häki abil õnnestus kohviku kassa arvutis saada tööle üks Forms-i proovirakendus.&lt;br /&gt;
&lt;br /&gt;
=== 8. märts ===&lt;br /&gt;
Kuna kassa-aparaadis on operatsioonisüsteemiks Windows XP ja raud on 1.99 GHz, 256 RAM siis peaks saama&lt;br /&gt;
prototüübiks teha sinna peale rakenduse, mille ülesandeks menüüga tegelemine. &lt;br /&gt;
&lt;br /&gt;
=== 7. märts ===&lt;br /&gt;
Linnar Viik andis meile järgmist nõu: tuleb eristada kahte asja - see, mis peab valmis saama (&#039;&#039;must&#039;&#039;) ja see, mis oleks tore (&#039;&#039;nice to have&#039;&#039;). Valmis peab saama menüüga ekraan seinal (esialgu kasutajale prototüübi näitamiseks kasvõi näiteks PowerPoint-i abil tehtud). Alles siis kui on kasutajalt positiivne tagasiside saadud, võib edasi minna reaalse tarkvaralahenduse loomisega. Kui ka see on valmis ja kasutaja sellega rahul võib juurde mõelda &#039;&#039;nice to have&#039;&#039; asju (näiteks eelinfo järgmise päeva menüü kohta, üliõpilasesinduse sõnumite riba ja muid asju).&lt;br /&gt;
&lt;br /&gt;
Saime teada, et kui tahame, et meie loodav süsteem suhtleks IT Kohviku kassasüsteemiga, siis tuleb selle süsteemi tootjatega ühendust võtta ja nendega konsulteerida.&lt;br /&gt;
&lt;br /&gt;
=== 19.Veebruar ===&lt;br /&gt;
*Valmis XSLT fail.&lt;br /&gt;
&lt;br /&gt;
=== 9.Veebruar ===&lt;br /&gt;
* Esmane versioon XML ja XML Schemast olemas&lt;br /&gt;
* Tekkis küsimus kas XSLT faili tuleb käsitsi tekitada või automaatselt.&lt;br /&gt;
* Küsimus oli ka kas lahendasime portsjoni asja mõistlikult või oleks mõni teine lähenemine parem olnud.&lt;br /&gt;
* Küsimus, kas XML fail on liiga üle pingutatud või sobiva keerukusega&lt;br /&gt;
&lt;br /&gt;
=== 7. Veebruar ===&lt;br /&gt;
* Võtsime õppejõu poolt pakutud ideest kohe kinni, sest me eelistame teha praktilist asja, mida saab kasutada ja mille kasutamist saame ka iga päev jälgida. &lt;br /&gt;
* Esimese asjana otsustasime välja uurida mida meie &amp;quot;kliendid&amp;quot; (süsteemi tellijad) meilt ootavad. (Soovid idee punkti all)&lt;br /&gt;
* Valminud on lihtne teenusest ja klientidest koosnev süsteemi testmudel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Kasulikud lingid ==&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCF_auto_client_proxies.aspx&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/ms178472.aspx&lt;br /&gt;
&lt;br /&gt;
http://support.microsoft.com/kb/305141&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/aa702565.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/scottgu/archive/2007/04/06/tip-trick-enabling-ssl-on-iis7-using-self-signed-certificates.aspx&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Võrgurakendused II: hajussüsteemide ehitamine]]&lt;br /&gt;
[[Category: Veebirakenduste loomine ASP.NET abil]]&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=30570</id>
		<title>Meeskond &quot;FoodWars&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=30570"/>
		<updated>2011-05-07T20:28:57Z</updated>

		<summary type="html">&lt;p&gt;Rruga: /* Klientrakendus II : Mobiilirakendus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Idee ==&lt;br /&gt;
Meie tiimil on plaanis teha internetipõhine söökla menüü süsteem (aluseks IT Kolledži kohvik, aga suunitlus selline, et kõik kohvikud/sööklad saaksid teha endale kasutajakonto ja hakata rakendust kasutama), kust saaks jälgida menüüd, mis sööke saab süüa, mis veel järgi on, kasutajatel on ka võimalus sööke hinnata (stiilis &amp;quot;meeldib&amp;quot;, &amp;quot;ei meeldi&amp;quot; nagu Facebook-is).&lt;br /&gt;
&lt;br /&gt;
Kohvikupidaja Teele soovid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* elektroonilisest menüüst asju kustutada, isegi siis kui asja peaks olema teoreetiliselt alles, aga tegelikult on asi otsas.&lt;br /&gt;
* elektrikatkestuse korral jääb menüü püsima. Ta peab teadma hindu mistahes olukorras.&lt;br /&gt;
* menüül näidatakse automaatselt ka ISIC kaardi omanike soodushinnad&lt;br /&gt;
* süsteem toetab ka poole portsjoni müümist.&lt;br /&gt;
&lt;br /&gt;
Linnar Viigi soovid/visioonid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* kõik oleks ka internetist kättesaadav, peale LCD ekraani, mis kajastab menüüd sööklas.&lt;br /&gt;
* aluseks facebook, kus siis söögid oleks nagu facebook-i alateemad.&lt;br /&gt;
* saab sööke hinnata, kommenteerida (täna oli väga maitsev praad).&lt;br /&gt;
* kasutajad saaks vaadata, mis menüüs on (ka järgmisel nädalal) ja mitu portsu veel alles on.&lt;br /&gt;
* kasutajad saaksid välja pakkuda menüüsid.&lt;br /&gt;
* erinevate söögikohtade kasutajad saaksid omavahel muljeid jagada.&lt;br /&gt;
* kuu aja aktiivsemad saavad prii lõuna.&lt;br /&gt;
* mingil ajal võib olla &amp;quot;happy hour&amp;quot; (enne sulgemist saab odavamalt).&lt;br /&gt;
* piiranguks on see, et toitu broneerida ei saa &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vaba tarkvara kasutamise võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Antud projekti puhul oleks võimalik kasutada [http://www.postgresql.org/ PostgreSQL] andmebaasi (vt. lisaks http://en.wikipedia.org/wiki/PostgreSQL ) Microsoft SQL Server&#039;i asemel. See võiks anda kasutajale võimaluse valida .NET ning [http://www.mono-project.com/ Mono] (vt. lisaks http://en.wikipedia.org/wiki/Mono_(software) ) platvormide vahel. Sel viisil oleks kliendil võimalik Microsoft&#039;i platvormi kõrval valida tõenäoliselt soodsam vaba tarkvara platvorm. Andmebaasi lõplik valik pole hetkel veel otsustatud.&lt;br /&gt;
&lt;br /&gt;
== Meeskond ja tööjaotus==&lt;br /&gt;
* Kristjan Stolin - projektijuht, suhtlus kliendiga, XML, wiki, teenuskihtide progemine, rollide halduse lehe progemine&lt;br /&gt;
* Ilmar Telga - XML, kliendiga suhtlus, wiki, teenuskihtide progemine, lõpprakenduste menüüd, login&lt;br /&gt;
* Rauno Rüga - XML, XSLT, andmebaasi loomine, wiki, mobiilirakendus, statistika&lt;br /&gt;
* Lauri Kermas - teenuskihtide ehitamine, wiki, login, kommenteerimise võimaluste progemine&lt;br /&gt;
&lt;br /&gt;
== XML Fail ==&lt;br /&gt;
=== XML ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Toidud&amp;gt;&lt;br /&gt;
  &amp;lt;Toit&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduNimetus&amp;gt;Viineri kaste&amp;lt;/ToiduNimetus&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduLiik&amp;gt;Praad&amp;lt;/ToiduLiik&amp;gt;&lt;br /&gt;
    &amp;lt;OlemasolevatYhikut&amp;gt;5&amp;lt;/OlemasolevatYhikut&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduKogus&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Poolportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;2011&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;1&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;9&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;15&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;07&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;23&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;        &lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.15&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;0&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;0&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;0&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;00&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;00&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;00&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Täisportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.80&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
    &amp;lt;/ToiduKogus&amp;gt;&lt;br /&gt;
    &amp;lt;Kommentaarid&amp;gt;&lt;br /&gt;
      &amp;lt;Kommentaar&amp;gt;&lt;br /&gt;
        &amp;lt;Saatja&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaNimi&amp;gt;Kristjan&amp;lt;/SaatjaNimi&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaRoll&amp;gt;Tudeng&amp;lt;/SaatjaRoll&amp;gt;&lt;br /&gt;
        &amp;lt;/Saatja&amp;gt;&lt;br /&gt;
        &amp;lt;Sisu&amp;gt;Minu lemmik toit ! Kui algebra tund ei hakkaks, sööks veel 5 portsjonit.&amp;lt;/Sisu&amp;gt;&lt;br /&gt;
      &amp;lt;/Kommentaar&amp;gt;&lt;br /&gt;
    &amp;lt;/Kommentaarid&amp;gt;&lt;br /&gt;
  &amp;lt;/Toit&amp;gt;&lt;br /&gt;
&amp;lt;/Toidud&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kommentaariks siis niipalju, et meie näide on ilma kohviku osata, selleks et näidet mitte liiga suureks ajada.&lt;br /&gt;
&lt;br /&gt;
Ka on meil moment puudu ID väljad, mis on igasugu andmebaasiga suhtlemiseks hädavajalikud, samas siin näidises palju juurde ei anna.&lt;br /&gt;
&lt;br /&gt;
Asja tegemisel avastasime, et põhiliseks arusaamatuse kohaks on toitude erinevad kogused (ehk siis pool portsjonit, suur / väike ja muud võrdlevad ühikud). Esimese võimalusena kaalusime teha lihtsalt täiesti eraldi toidud kõige kohta, stiilis &amp;quot;väike viineripraad&amp;quot; ja &amp;quot;suur viineripraad&amp;quot;. Kahjuks see variant ei kõlbaks eriti hästi, kuna need erinevad portsjonid kasutavad ikkagi samu materjale ja kui me peaks mingi süsteemiga näitama kui palju portsjoneid alles on. Sööklast näiteks pakuti et väike portsjon kasutab materjale kuskil 0.8 suure portsjoni ulatuses, ehk see suhtarv peaks olema kasutaja poolt (kohvikupidaja, restoraniomanik) ise sätitav. &lt;br /&gt;
&lt;br /&gt;
Tänu sellele sai meie süsteemi alustalaks siiski Toit, millel on oma Portsjonid siis erinevate hindade ja soodustustega. Moment pole meil ka Portsjoni XML osas toodud ära seost kogusega. (Kui palju ühe portsjoni lisamine/müümine peaks toidu üldkogust muutma).&lt;br /&gt;
&lt;br /&gt;
Kommenteerida saab meil moment toitu ennast, mitte eraldi portsjonit. Isegi kui kasutajad tahavad lisada kommentaare stiilis &amp;quot;See väike supp oli tõesti väga väike&amp;quot;, ei soovi nad seda ilmselt eraldi portsjoni alla panna. Tulevikus peaks kindlasti olema ka võimalus pigem kommenteerida üldisemalt (Kohvikut ennast, söögipaiku üldse), kui spetsiifilisemalt (Väikse prae kaste lisandi kohta).&lt;br /&gt;
&lt;br /&gt;
=== XML Schema ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Toidud&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Toit&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduNimetus&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;OlemasolevatYhikut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduKogus&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:choice maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;PortsjoniLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;Myygiaeg&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Aasta&amp;quot; type=&amp;quot;xs:unsignedShort&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Kuu&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Paev&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Tund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Minut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Sekund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;ToiduHind&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Eurohind&amp;quot; type=&amp;quot;xs:decimal&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Soodustus&amp;quot;&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseProtsent&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:choice&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Kommentaarid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Saatja&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaNimi&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaRoll&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Sisu&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
  &amp;lt;h2&amp;gt;Kohvikus müüdavad toidud&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr bgcolor=&amp;quot;#9acd32&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Veel alles&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Portsjon&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Müügiaeg&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustuse liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Kommentaar(id)&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;Toidud/Toit&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduNimetus&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduLiik&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;OlemasolevatYhikut&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;PortsjoniLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Paev&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Kuu&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Aasta&amp;quot; /&amp;gt; &amp;amp;nbsp;  &lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Tund&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Minut&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Sekund&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Eurohind&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseProtsent&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Kommentaarid/Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Sisu&amp;quot; /&amp;gt;&amp;amp;nbsp;(&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaRoll&amp;quot; /&amp;gt;&amp;amp;nbsp;&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaNimi&amp;quot; /&amp;gt;)&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XSLT poolt loodud tulemus on järgnev (lisasin veel kaks toitu XML faili, siin wiki lehel on ruumi kokkuhoiuks vaid 1 toit toitude listis):&lt;br /&gt;
[[File:Xslt.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arhitektuur ==&lt;br /&gt;
&lt;br /&gt;
Süsteem oli vahepeal plaanis ehitada kolmekihilise arhitektuuriga ([http://en.wikipedia.org/wiki/Multitier_architecture#Three-tier_architecture Three-tier architecture]). See peaks lihtsustama süsteemi haldamist ja laiendamist tulevikus. Aga kuna selle jaoks otsest vajadust polenud ja oleks vaid süsteemi keeruliseks ajanud, siis loobusime sellest.&lt;br /&gt;
&lt;br /&gt;
[[Image:three-tier.png|thumb|center|alt=Arhitektuuri skeem.|Arhitektuuri skeem.]]&lt;br /&gt;
&lt;br /&gt;
== Veebiteenus ==&lt;br /&gt;
===Andmemudel===&lt;br /&gt;
[[Image:KohvikuAndmemudel.jpg|thumb|right|alt=Kohviku projekti andmemudel|Andmemudel]]&lt;br /&gt;
Enne veebiteenuse meetodite kirjeldamist koostasime andmemudeli. Loodud andmemudeli põhjal lõime andmebaasi vajalike tabelite ja atribuutidega. Andmemudeli peal on rohelisega tähistatud tabelid, mis on oseselt seotud kohviku valdajaga ja mida WPF rakenduse jaoks kindlasti vaja on. Ülejäänud helesinised tabelid on vajalikud kasutajate võimaluste jaoks. Lisaks on andmemudelil kaks tabelit, mis pole teisega seotud, need on süsteemi administraatori jaoks, et oleks ülevaade, mis rakendused teenust enim kasutavad ning mis meetodeid kõige rohkem välja kutsutakse.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Teenuskihis olevad meetodid===&lt;br /&gt;
&lt;br /&gt;
====Kasutajatega seotud meetodid:====&lt;br /&gt;
*SaidiKasutajaLiik() - Tagastab antud kasutaja ID järgi kasutaja liigi nimetuse&lt;br /&gt;
*KustutaSaidiKasutaja() - Kustutab antud kasutaja ID järgi kasutaja tabelis Kasutaja&lt;br /&gt;
*AnnaKoikSaidiKasutajad() - Tagastab kõik kirjed tabelist Kasutaja&lt;br /&gt;
*AnnaKoikKohvikuKasutajad() - Tagastab antud kohviku ID järgi kõik kohviku kasutajad massiivina&lt;br /&gt;
*MuudaSaidiKasutajaLiik() - Muudab antud kasutaja ID järgi kasutaja liigi tabelis Kasutaja&lt;br /&gt;
*KoikLubatudSaidiKasutajaTyybid() - Tagastab andmebaasi kõik võimalikud kohviku kasutaja rollid (id-d ja nimed), muud andmed jäävad tühjaks&lt;br /&gt;
*KoikLubatudKohvikuRollid() - Tagastab andmebaasi kõik võimalikud site kasutaja rollid (id-d ja nimed), kohviku_id jääb tühjaks&lt;br /&gt;
*KasutajaKohvikuRollid() - Tagastab antud kasutaja ID järgi kõik kasutaja rollid kõikides kohvikutes&lt;br /&gt;
*MuudaKohvikuKasutajaRoll() - Muudab antud kasutaja ID ja kohviku ID järgi kasutaja rolli kohvikus, kui rolli pole, siis tekitatakse uus&lt;br /&gt;
*SaidiKasutajaLiikID() - Tagastab antud kasutaja ID järgi kasutaja liigi ID&lt;br /&gt;
*KohvikuKasutajaLiikID() - Tagastab antud kasutaja ID ja kohviku ID järgi kohviku kasutaja rolli ID&lt;br /&gt;
*AnnaKasutajaMeiliAadress() - Tagastab antud kasutaja nime alusel kasutaja meiliaadressi&lt;br /&gt;
*AnnaKasutajaIdJargi() - Tagastab kasutajanime kasutaja ID järgi&lt;br /&gt;
*AuthendiKasutaja() - Autendib kasutaja, õnnestumisel tagastab kasutaja ID, ebaõnnestumisel null &lt;br /&gt;
*RegistreeriKasutaja() - Registreerib kasutaja andmebaasi ja tagastab true kui kasutaja loomine õnnestus&lt;br /&gt;
&lt;br /&gt;
====Menüüga seotud meetodid====&lt;br /&gt;
*LisaArtikkelMenuuse() - Seob menüüartikli ja menüü&lt;br /&gt;
*LisaKohvikuleMenuu() - Seob menüü ja kohviku&lt;br /&gt;
*TagastabMenuuMuutujad() - Tagastab menüü järgi kas inimesel oleks õigust seda muuta&lt;br /&gt;
*KustutaMenuuJaKohvikuSeos() - Kustutab menüü ja kohviku seose&lt;br /&gt;
*LisaUusMenuu() - Teeb uue menüü, seob selle kohvikuga, kui kohviku ID on parameetrina kaasa antud&lt;br /&gt;
*MenuuKohvikuIdJargi() - Tagastab kohviku ID järgi kohviku tänaste või mitte tänaste menüüde ID-de massiivi&lt;br /&gt;
*LisaMenuuArtikkelMenuuse() - Sisestab antud müügiartikli menüüsse, mille ID on menyy_id&lt;br /&gt;
*KustutaMenuuArtikkel() - Kustutab müügiartikli ID ja menüü ID järgi müügiartikli menüüst&lt;br /&gt;
*TagastaMenuuArtiklid() - Tagastab menüü ID järgi menüüs olevad müügiartiklid&lt;br /&gt;
*VahetaMenuuArtiklit() - Muudab antud müügiartikli tabelis Myygiartikkel&lt;br /&gt;
*MenuuNimetus() - Tagastab menüü ID järgi menüü nimetuse&lt;br /&gt;
*AnnaMuugiartiklidMidaMenuusPole() - Tagastab müügiartiklid, mis pole veel menüüs, kus on juba müügiartiklid, mille IDd on antud massiivis&lt;br /&gt;
*AnnaMenuuNimed() - Tagastab kõigi menüüde nimetused tabelis Menyy&lt;br /&gt;
&lt;br /&gt;
====Kohvikutest üldiselt====&lt;br /&gt;
*KohvikuteNimed() - Tagastab kõigi kohvikute nimed massiivina&lt;br /&gt;
*KohvikuNimiIdJargi() - Tagastab antud kohviku ID järgi kohviku nime&lt;br /&gt;
*AnnaKoikOmanikuKohvikud() - Tagastab antud omaniku ID järgi kõik omaniku kohvikute ID-d massiivina&lt;br /&gt;
*Kohvikud() - Tagastab kõik kohvikute kirjed tabelist Kohvik&lt;br /&gt;
*KohvikuteArv() - Tagastab kõigi kohvikute arvu&lt;br /&gt;
*AnnaKaubad() - Tagastab kõik kaubad tabelist Kaup&lt;br /&gt;
*LisaKaup() - Lisab kauba kaupade nimekirja&lt;br /&gt;
*LisaKohvik() - Uue kohviku lisamine&lt;br /&gt;
&lt;br /&gt;
====Kommentaaridega seotud meetodid:====&lt;br /&gt;
*KohvikuKommentaarideArv() - Kohviku kommentaaride arv&lt;br /&gt;
*AnnaKohvikuKommentaarid() - Tagastab kommentaarid lehtede kaupa&lt;br /&gt;
*AnnaKohvikuKommentaarideHinded() - Tagastab kommentaaride jaoks võimalikud hinded koos kirjeldustega&lt;br /&gt;
*LisaKohvikuKommentaar() - Lisab kohviku kommentaari&lt;br /&gt;
&lt;br /&gt;
====Statistikaga seotud meetodid:====&lt;br /&gt;
*StatistikaRakendusteKohtaTana() - Tagastab rakenduse nimed ja nende vastu tehtud päringud tänasel päeval&lt;br /&gt;
*StatistikaRakendusteKohtaViimaneNadal() - Tagastab rakenduse nimed ja nende vastu tehtud päringud viimase nädala jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaSellelKuul() - Tagastab rakenduse nimed ja nende vastu tehtud päringud selle kuu jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaKokku() - Tagastab rakenduse nimed ja nende vastu tehtud päringud kogu aja vältel&lt;br /&gt;
*StatistikaMeetoditeKohtaTana() - Meetod leiab tänase päeva jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaViimaneNadal() - Meetod leiab viimase nädala jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaSellelKuul() - Meetod leiab kuu jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaKokku() - Meetod leiab kogu aja vältel kasutatud meetodid ja paringute arvu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebiteenuse projekti (WCF + andmebaas) saab siit: http://enos.itcollege.ee/~rruga/VRII/Teenusekiht.zip&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : CMS ==&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Veebirakendus ==&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus II : Mobiilirakendus ==&lt;br /&gt;
&lt;br /&gt;
Teine rakendus, mis veebiteenuse peale ehitatud sai, oli Windows Phone 7 rakendus. Lühidalt kirjeldades saab peale rakenduse käivitamist näha listi kõikidest olemasolevatest kohvikutest. Kui vajutad mingi kohviku nime peale, avaneb täpsem kirjeldus kohviku kohta, kust näeb lisaks kohviku nimele ka lühikest kirjeldust, tänast lahtiolekuaega ja kohviku aadressit. Samuti on kohviku kirjelduse lehel viide kohviku tänasele menüüle ja kommenteerimisele. Vajutades vaata menüüd nuppu avaneb vaade täna müügis olevatest müügiartiklitest ja nende hinnast, vajutades aga kommenteeri kohvikut nupule avaneb võimalus lisada kohviku kohta kommentaar.&lt;br /&gt;
&lt;br /&gt;
Kokkuvõttev pilt realiseeritud võimalustest:&lt;br /&gt;
&lt;br /&gt;
[[Image:WP7 rakendus.jpg|alt=WP7 rakendus.|WP7 rakenduse võimalused.]]&lt;br /&gt;
&lt;br /&gt;
== Meeskonna kokkuvõttev aruanne ==&lt;br /&gt;
&lt;br /&gt;
== Logi ==&lt;br /&gt;
=== 17. aprill ===&lt;br /&gt;
Wikilehe täiendamine andmemudeli ja veebiteenuse meetodite kirjeldusega.&lt;br /&gt;
&lt;br /&gt;
=== 9. aprill ===&lt;br /&gt;
Tegime rollide halduse, münüüde muutmise vormi. Meili saatmine registreerimisel. Toimus andmebaasi andmemudeli väike muutus. &lt;br /&gt;
&lt;br /&gt;
=== 30. märts ===&lt;br /&gt;
Tehtud on kohviku menüü ja kohviku kommenteerimise leht.&lt;br /&gt;
&lt;br /&gt;
=== 26. märts ===&lt;br /&gt;
Tehtud on esimesed veebiteenuse meetodid ja veebirakendusele kasutajate registreerimine.&lt;br /&gt;
&lt;br /&gt;
=== 10. märts ===&lt;br /&gt;
Väikese häki abil õnnestus kohviku kassa arvutis saada tööle üks Forms-i proovirakendus.&lt;br /&gt;
&lt;br /&gt;
=== 8. märts ===&lt;br /&gt;
Kuna kassa-aparaadis on operatsioonisüsteemiks Windows XP ja raud on 1.99 GHz, 256 RAM siis peaks saama&lt;br /&gt;
prototüübiks teha sinna peale rakenduse, mille ülesandeks menüüga tegelemine. &lt;br /&gt;
&lt;br /&gt;
=== 7. märts ===&lt;br /&gt;
Linnar Viik andis meile järgmist nõu: tuleb eristada kahte asja - see, mis peab valmis saama (&#039;&#039;must&#039;&#039;) ja see, mis oleks tore (&#039;&#039;nice to have&#039;&#039;). Valmis peab saama menüüga ekraan seinal (esialgu kasutajale prototüübi näitamiseks kasvõi näiteks PowerPoint-i abil tehtud). Alles siis kui on kasutajalt positiivne tagasiside saadud, võib edasi minna reaalse tarkvaralahenduse loomisega. Kui ka see on valmis ja kasutaja sellega rahul võib juurde mõelda &#039;&#039;nice to have&#039;&#039; asju (näiteks eelinfo järgmise päeva menüü kohta, üliõpilasesinduse sõnumite riba ja muid asju).&lt;br /&gt;
&lt;br /&gt;
Saime teada, et kui tahame, et meie loodav süsteem suhtleks IT Kohviku kassasüsteemiga, siis tuleb selle süsteemi tootjatega ühendust võtta ja nendega konsulteerida.&lt;br /&gt;
&lt;br /&gt;
=== 19.Veebruar ===&lt;br /&gt;
*Valmis XSLT fail.&lt;br /&gt;
&lt;br /&gt;
=== 9.Veebruar ===&lt;br /&gt;
* Esmane versioon XML ja XML Schemast olemas&lt;br /&gt;
* Tekkis küsimus kas XSLT faili tuleb käsitsi tekitada või automaatselt.&lt;br /&gt;
* Küsimus oli ka kas lahendasime portsjoni asja mõistlikult või oleks mõni teine lähenemine parem olnud.&lt;br /&gt;
* Küsimus, kas XML fail on liiga üle pingutatud või sobiva keerukusega&lt;br /&gt;
&lt;br /&gt;
=== 7. Veebruar ===&lt;br /&gt;
* Võtsime õppejõu poolt pakutud ideest kohe kinni, sest me eelistame teha praktilist asja, mida saab kasutada ja mille kasutamist saame ka iga päev jälgida. &lt;br /&gt;
* Esimese asjana otsustasime välja uurida mida meie &amp;quot;kliendid&amp;quot; (süsteemi tellijad) meilt ootavad. (Soovid idee punkti all)&lt;br /&gt;
* Valminud on lihtne teenusest ja klientidest koosnev süsteemi testmudel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Kasulikud lingid ==&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCF_auto_client_proxies.aspx&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/ms178472.aspx&lt;br /&gt;
&lt;br /&gt;
http://support.microsoft.com/kb/305141&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/aa702565.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/scottgu/archive/2007/04/06/tip-trick-enabling-ssl-on-iis7-using-self-signed-certificates.aspx&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Võrgurakendused II: hajussüsteemide ehitamine]]&lt;br /&gt;
[[Category: Veebirakenduste loomine ASP.NET abil]]&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=30569</id>
		<title>Meeskond &quot;FoodWars&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=30569"/>
		<updated>2011-05-07T20:27:04Z</updated>

		<summary type="html">&lt;p&gt;Rruga: /* Klientrakendus II : Mobiilirakendus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Idee ==&lt;br /&gt;
Meie tiimil on plaanis teha internetipõhine söökla menüü süsteem (aluseks IT Kolledži kohvik, aga suunitlus selline, et kõik kohvikud/sööklad saaksid teha endale kasutajakonto ja hakata rakendust kasutama), kust saaks jälgida menüüd, mis sööke saab süüa, mis veel järgi on, kasutajatel on ka võimalus sööke hinnata (stiilis &amp;quot;meeldib&amp;quot;, &amp;quot;ei meeldi&amp;quot; nagu Facebook-is).&lt;br /&gt;
&lt;br /&gt;
Kohvikupidaja Teele soovid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* elektroonilisest menüüst asju kustutada, isegi siis kui asja peaks olema teoreetiliselt alles, aga tegelikult on asi otsas.&lt;br /&gt;
* elektrikatkestuse korral jääb menüü püsima. Ta peab teadma hindu mistahes olukorras.&lt;br /&gt;
* menüül näidatakse automaatselt ka ISIC kaardi omanike soodushinnad&lt;br /&gt;
* süsteem toetab ka poole portsjoni müümist.&lt;br /&gt;
&lt;br /&gt;
Linnar Viigi soovid/visioonid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* kõik oleks ka internetist kättesaadav, peale LCD ekraani, mis kajastab menüüd sööklas.&lt;br /&gt;
* aluseks facebook, kus siis söögid oleks nagu facebook-i alateemad.&lt;br /&gt;
* saab sööke hinnata, kommenteerida (täna oli väga maitsev praad).&lt;br /&gt;
* kasutajad saaks vaadata, mis menüüs on (ka järgmisel nädalal) ja mitu portsu veel alles on.&lt;br /&gt;
* kasutajad saaksid välja pakkuda menüüsid.&lt;br /&gt;
* erinevate söögikohtade kasutajad saaksid omavahel muljeid jagada.&lt;br /&gt;
* kuu aja aktiivsemad saavad prii lõuna.&lt;br /&gt;
* mingil ajal võib olla &amp;quot;happy hour&amp;quot; (enne sulgemist saab odavamalt).&lt;br /&gt;
* piiranguks on see, et toitu broneerida ei saa &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vaba tarkvara kasutamise võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Antud projekti puhul oleks võimalik kasutada [http://www.postgresql.org/ PostgreSQL] andmebaasi (vt. lisaks http://en.wikipedia.org/wiki/PostgreSQL ) Microsoft SQL Server&#039;i asemel. See võiks anda kasutajale võimaluse valida .NET ning [http://www.mono-project.com/ Mono] (vt. lisaks http://en.wikipedia.org/wiki/Mono_(software) ) platvormide vahel. Sel viisil oleks kliendil võimalik Microsoft&#039;i platvormi kõrval valida tõenäoliselt soodsam vaba tarkvara platvorm. Andmebaasi lõplik valik pole hetkel veel otsustatud.&lt;br /&gt;
&lt;br /&gt;
== Meeskond ja tööjaotus==&lt;br /&gt;
* Kristjan Stolin - projektijuht, suhtlus kliendiga, XML, wiki, teenuskihtide progemine, rollide halduse lehe progemine&lt;br /&gt;
* Ilmar Telga - XML, kliendiga suhtlus, wiki, teenuskihtide progemine, lõpprakenduste menüüd, login&lt;br /&gt;
* Rauno Rüga - XML, XSLT, andmebaasi loomine, wiki, mobiilirakendus, statistika&lt;br /&gt;
* Lauri Kermas - teenuskihtide ehitamine, wiki, login, kommenteerimise võimaluste progemine&lt;br /&gt;
&lt;br /&gt;
== XML Fail ==&lt;br /&gt;
=== XML ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Toidud&amp;gt;&lt;br /&gt;
  &amp;lt;Toit&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduNimetus&amp;gt;Viineri kaste&amp;lt;/ToiduNimetus&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduLiik&amp;gt;Praad&amp;lt;/ToiduLiik&amp;gt;&lt;br /&gt;
    &amp;lt;OlemasolevatYhikut&amp;gt;5&amp;lt;/OlemasolevatYhikut&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduKogus&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Poolportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;2011&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;1&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;9&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;15&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;07&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;23&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;        &lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.15&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;0&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;0&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;0&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;00&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;00&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;00&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Täisportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.80&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
    &amp;lt;/ToiduKogus&amp;gt;&lt;br /&gt;
    &amp;lt;Kommentaarid&amp;gt;&lt;br /&gt;
      &amp;lt;Kommentaar&amp;gt;&lt;br /&gt;
        &amp;lt;Saatja&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaNimi&amp;gt;Kristjan&amp;lt;/SaatjaNimi&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaRoll&amp;gt;Tudeng&amp;lt;/SaatjaRoll&amp;gt;&lt;br /&gt;
        &amp;lt;/Saatja&amp;gt;&lt;br /&gt;
        &amp;lt;Sisu&amp;gt;Minu lemmik toit ! Kui algebra tund ei hakkaks, sööks veel 5 portsjonit.&amp;lt;/Sisu&amp;gt;&lt;br /&gt;
      &amp;lt;/Kommentaar&amp;gt;&lt;br /&gt;
    &amp;lt;/Kommentaarid&amp;gt;&lt;br /&gt;
  &amp;lt;/Toit&amp;gt;&lt;br /&gt;
&amp;lt;/Toidud&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kommentaariks siis niipalju, et meie näide on ilma kohviku osata, selleks et näidet mitte liiga suureks ajada.&lt;br /&gt;
&lt;br /&gt;
Ka on meil moment puudu ID väljad, mis on igasugu andmebaasiga suhtlemiseks hädavajalikud, samas siin näidises palju juurde ei anna.&lt;br /&gt;
&lt;br /&gt;
Asja tegemisel avastasime, et põhiliseks arusaamatuse kohaks on toitude erinevad kogused (ehk siis pool portsjonit, suur / väike ja muud võrdlevad ühikud). Esimese võimalusena kaalusime teha lihtsalt täiesti eraldi toidud kõige kohta, stiilis &amp;quot;väike viineripraad&amp;quot; ja &amp;quot;suur viineripraad&amp;quot;. Kahjuks see variant ei kõlbaks eriti hästi, kuna need erinevad portsjonid kasutavad ikkagi samu materjale ja kui me peaks mingi süsteemiga näitama kui palju portsjoneid alles on. Sööklast näiteks pakuti et väike portsjon kasutab materjale kuskil 0.8 suure portsjoni ulatuses, ehk see suhtarv peaks olema kasutaja poolt (kohvikupidaja, restoraniomanik) ise sätitav. &lt;br /&gt;
&lt;br /&gt;
Tänu sellele sai meie süsteemi alustalaks siiski Toit, millel on oma Portsjonid siis erinevate hindade ja soodustustega. Moment pole meil ka Portsjoni XML osas toodud ära seost kogusega. (Kui palju ühe portsjoni lisamine/müümine peaks toidu üldkogust muutma).&lt;br /&gt;
&lt;br /&gt;
Kommenteerida saab meil moment toitu ennast, mitte eraldi portsjonit. Isegi kui kasutajad tahavad lisada kommentaare stiilis &amp;quot;See väike supp oli tõesti väga väike&amp;quot;, ei soovi nad seda ilmselt eraldi portsjoni alla panna. Tulevikus peaks kindlasti olema ka võimalus pigem kommenteerida üldisemalt (Kohvikut ennast, söögipaiku üldse), kui spetsiifilisemalt (Väikse prae kaste lisandi kohta).&lt;br /&gt;
&lt;br /&gt;
=== XML Schema ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Toidud&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Toit&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduNimetus&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;OlemasolevatYhikut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduKogus&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:choice maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;PortsjoniLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;Myygiaeg&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Aasta&amp;quot; type=&amp;quot;xs:unsignedShort&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Kuu&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Paev&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Tund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Minut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Sekund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;ToiduHind&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Eurohind&amp;quot; type=&amp;quot;xs:decimal&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Soodustus&amp;quot;&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseProtsent&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:choice&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Kommentaarid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Saatja&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaNimi&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaRoll&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Sisu&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
  &amp;lt;h2&amp;gt;Kohvikus müüdavad toidud&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr bgcolor=&amp;quot;#9acd32&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Veel alles&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Portsjon&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Müügiaeg&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustuse liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Kommentaar(id)&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;Toidud/Toit&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduNimetus&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduLiik&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;OlemasolevatYhikut&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;PortsjoniLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Paev&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Kuu&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Aasta&amp;quot; /&amp;gt; &amp;amp;nbsp;  &lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Tund&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Minut&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Sekund&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Eurohind&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseProtsent&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Kommentaarid/Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Sisu&amp;quot; /&amp;gt;&amp;amp;nbsp;(&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaRoll&amp;quot; /&amp;gt;&amp;amp;nbsp;&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaNimi&amp;quot; /&amp;gt;)&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XSLT poolt loodud tulemus on järgnev (lisasin veel kaks toitu XML faili, siin wiki lehel on ruumi kokkuhoiuks vaid 1 toit toitude listis):&lt;br /&gt;
[[File:Xslt.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arhitektuur ==&lt;br /&gt;
&lt;br /&gt;
Süsteem oli vahepeal plaanis ehitada kolmekihilise arhitektuuriga ([http://en.wikipedia.org/wiki/Multitier_architecture#Three-tier_architecture Three-tier architecture]). See peaks lihtsustama süsteemi haldamist ja laiendamist tulevikus. Aga kuna selle jaoks otsest vajadust polenud ja oleks vaid süsteemi keeruliseks ajanud, siis loobusime sellest.&lt;br /&gt;
&lt;br /&gt;
[[Image:three-tier.png|thumb|center|alt=Arhitektuuri skeem.|Arhitektuuri skeem.]]&lt;br /&gt;
&lt;br /&gt;
== Veebiteenus ==&lt;br /&gt;
===Andmemudel===&lt;br /&gt;
[[Image:KohvikuAndmemudel.jpg|thumb|right|alt=Kohviku projekti andmemudel|Andmemudel]]&lt;br /&gt;
Enne veebiteenuse meetodite kirjeldamist koostasime andmemudeli. Loodud andmemudeli põhjal lõime andmebaasi vajalike tabelite ja atribuutidega. Andmemudeli peal on rohelisega tähistatud tabelid, mis on oseselt seotud kohviku valdajaga ja mida WPF rakenduse jaoks kindlasti vaja on. Ülejäänud helesinised tabelid on vajalikud kasutajate võimaluste jaoks. Lisaks on andmemudelil kaks tabelit, mis pole teisega seotud, need on süsteemi administraatori jaoks, et oleks ülevaade, mis rakendused teenust enim kasutavad ning mis meetodeid kõige rohkem välja kutsutakse.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Teenuskihis olevad meetodid===&lt;br /&gt;
&lt;br /&gt;
====Kasutajatega seotud meetodid:====&lt;br /&gt;
*SaidiKasutajaLiik() - Tagastab antud kasutaja ID järgi kasutaja liigi nimetuse&lt;br /&gt;
*KustutaSaidiKasutaja() - Kustutab antud kasutaja ID järgi kasutaja tabelis Kasutaja&lt;br /&gt;
*AnnaKoikSaidiKasutajad() - Tagastab kõik kirjed tabelist Kasutaja&lt;br /&gt;
*AnnaKoikKohvikuKasutajad() - Tagastab antud kohviku ID järgi kõik kohviku kasutajad massiivina&lt;br /&gt;
*MuudaSaidiKasutajaLiik() - Muudab antud kasutaja ID järgi kasutaja liigi tabelis Kasutaja&lt;br /&gt;
*KoikLubatudSaidiKasutajaTyybid() - Tagastab andmebaasi kõik võimalikud kohviku kasutaja rollid (id-d ja nimed), muud andmed jäävad tühjaks&lt;br /&gt;
*KoikLubatudKohvikuRollid() - Tagastab andmebaasi kõik võimalikud site kasutaja rollid (id-d ja nimed), kohviku_id jääb tühjaks&lt;br /&gt;
*KasutajaKohvikuRollid() - Tagastab antud kasutaja ID järgi kõik kasutaja rollid kõikides kohvikutes&lt;br /&gt;
*MuudaKohvikuKasutajaRoll() - Muudab antud kasutaja ID ja kohviku ID järgi kasutaja rolli kohvikus, kui rolli pole, siis tekitatakse uus&lt;br /&gt;
*SaidiKasutajaLiikID() - Tagastab antud kasutaja ID järgi kasutaja liigi ID&lt;br /&gt;
*KohvikuKasutajaLiikID() - Tagastab antud kasutaja ID ja kohviku ID järgi kohviku kasutaja rolli ID&lt;br /&gt;
*AnnaKasutajaMeiliAadress() - Tagastab antud kasutaja nime alusel kasutaja meiliaadressi&lt;br /&gt;
*AnnaKasutajaIdJargi() - Tagastab kasutajanime kasutaja ID järgi&lt;br /&gt;
*AuthendiKasutaja() - Autendib kasutaja, õnnestumisel tagastab kasutaja ID, ebaõnnestumisel null &lt;br /&gt;
*RegistreeriKasutaja() - Registreerib kasutaja andmebaasi ja tagastab true kui kasutaja loomine õnnestus&lt;br /&gt;
&lt;br /&gt;
====Menüüga seotud meetodid====&lt;br /&gt;
*LisaArtikkelMenuuse() - Seob menüüartikli ja menüü&lt;br /&gt;
*LisaKohvikuleMenuu() - Seob menüü ja kohviku&lt;br /&gt;
*TagastabMenuuMuutujad() - Tagastab menüü järgi kas inimesel oleks õigust seda muuta&lt;br /&gt;
*KustutaMenuuJaKohvikuSeos() - Kustutab menüü ja kohviku seose&lt;br /&gt;
*LisaUusMenuu() - Teeb uue menüü, seob selle kohvikuga, kui kohviku ID on parameetrina kaasa antud&lt;br /&gt;
*MenuuKohvikuIdJargi() - Tagastab kohviku ID järgi kohviku tänaste või mitte tänaste menüüde ID-de massiivi&lt;br /&gt;
*LisaMenuuArtikkelMenuuse() - Sisestab antud müügiartikli menüüsse, mille ID on menyy_id&lt;br /&gt;
*KustutaMenuuArtikkel() - Kustutab müügiartikli ID ja menüü ID järgi müügiartikli menüüst&lt;br /&gt;
*TagastaMenuuArtiklid() - Tagastab menüü ID järgi menüüs olevad müügiartiklid&lt;br /&gt;
*VahetaMenuuArtiklit() - Muudab antud müügiartikli tabelis Myygiartikkel&lt;br /&gt;
*MenuuNimetus() - Tagastab menüü ID järgi menüü nimetuse&lt;br /&gt;
*AnnaMuugiartiklidMidaMenuusPole() - Tagastab müügiartiklid, mis pole veel menüüs, kus on juba müügiartiklid, mille IDd on antud massiivis&lt;br /&gt;
*AnnaMenuuNimed() - Tagastab kõigi menüüde nimetused tabelis Menyy&lt;br /&gt;
&lt;br /&gt;
====Kohvikutest üldiselt====&lt;br /&gt;
*KohvikuteNimed() - Tagastab kõigi kohvikute nimed massiivina&lt;br /&gt;
*KohvikuNimiIdJargi() - Tagastab antud kohviku ID järgi kohviku nime&lt;br /&gt;
*AnnaKoikOmanikuKohvikud() - Tagastab antud omaniku ID järgi kõik omaniku kohvikute ID-d massiivina&lt;br /&gt;
*Kohvikud() - Tagastab kõik kohvikute kirjed tabelist Kohvik&lt;br /&gt;
*KohvikuteArv() - Tagastab kõigi kohvikute arvu&lt;br /&gt;
*AnnaKaubad() - Tagastab kõik kaubad tabelist Kaup&lt;br /&gt;
*LisaKaup() - Lisab kauba kaupade nimekirja&lt;br /&gt;
*LisaKohvik() - Uue kohviku lisamine&lt;br /&gt;
&lt;br /&gt;
====Kommentaaridega seotud meetodid:====&lt;br /&gt;
*KohvikuKommentaarideArv() - Kohviku kommentaaride arv&lt;br /&gt;
*AnnaKohvikuKommentaarid() - Tagastab kommentaarid lehtede kaupa&lt;br /&gt;
*AnnaKohvikuKommentaarideHinded() - Tagastab kommentaaride jaoks võimalikud hinded koos kirjeldustega&lt;br /&gt;
*LisaKohvikuKommentaar() - Lisab kohviku kommentaari&lt;br /&gt;
&lt;br /&gt;
====Statistikaga seotud meetodid:====&lt;br /&gt;
*StatistikaRakendusteKohtaTana() - Tagastab rakenduse nimed ja nende vastu tehtud päringud tänasel päeval&lt;br /&gt;
*StatistikaRakendusteKohtaViimaneNadal() - Tagastab rakenduse nimed ja nende vastu tehtud päringud viimase nädala jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaSellelKuul() - Tagastab rakenduse nimed ja nende vastu tehtud päringud selle kuu jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaKokku() - Tagastab rakenduse nimed ja nende vastu tehtud päringud kogu aja vältel&lt;br /&gt;
*StatistikaMeetoditeKohtaTana() - Meetod leiab tänase päeva jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaViimaneNadal() - Meetod leiab viimase nädala jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaSellelKuul() - Meetod leiab kuu jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaKokku() - Meetod leiab kogu aja vältel kasutatud meetodid ja paringute arvu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebiteenuse projekti (WCF + andmebaas) saab siit: http://enos.itcollege.ee/~rruga/VRII/Teenusekiht.zip&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : CMS ==&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Veebirakendus ==&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus II : Mobiilirakendus ==&lt;br /&gt;
&lt;br /&gt;
Teine rakendus, mis veebiteenuse peale ehitatud sai, oli Windows Phone 7 rakendus. Lühidalt kirjeldades saab peale rakenduse käivitamist näha listi kõikidest olemasolevatest kohvikutest. Kui vajutad mingi kohviku nime peale, avaneb täpsem kirjeldus kohviku kohta, kust näeb lisaks kohviku nimele ka lühikest kirjeldust, tänast lahtiolekuaega ja kohviku aadressit. Samuti on kohviku kirjelduse lehel viide kohviku tänasele menüüle ja kommenteerimisele. Vajutades vaata menüüd nuppu avaneb vaade täna müügis olevatest müügiartiklitest ja nende hinnast, vajutades aga kommenteeri kohvikut nupule avaneb võimalus lisada kohviku kohta kommentaar.&lt;br /&gt;
&lt;br /&gt;
Kokkuvõttev pilt realiseeritud võimalustest:&lt;br /&gt;
&lt;br /&gt;
== Meeskonna kokkuvõttev aruanne ==&lt;br /&gt;
&lt;br /&gt;
== Logi ==&lt;br /&gt;
=== 17. aprill ===&lt;br /&gt;
Wikilehe täiendamine andmemudeli ja veebiteenuse meetodite kirjeldusega.&lt;br /&gt;
&lt;br /&gt;
=== 9. aprill ===&lt;br /&gt;
Tegime rollide halduse, münüüde muutmise vormi. Meili saatmine registreerimisel. Toimus andmebaasi andmemudeli väike muutus. &lt;br /&gt;
&lt;br /&gt;
=== 30. märts ===&lt;br /&gt;
Tehtud on kohviku menüü ja kohviku kommenteerimise leht.&lt;br /&gt;
&lt;br /&gt;
=== 26. märts ===&lt;br /&gt;
Tehtud on esimesed veebiteenuse meetodid ja veebirakendusele kasutajate registreerimine.&lt;br /&gt;
&lt;br /&gt;
=== 10. märts ===&lt;br /&gt;
Väikese häki abil õnnestus kohviku kassa arvutis saada tööle üks Forms-i proovirakendus.&lt;br /&gt;
&lt;br /&gt;
=== 8. märts ===&lt;br /&gt;
Kuna kassa-aparaadis on operatsioonisüsteemiks Windows XP ja raud on 1.99 GHz, 256 RAM siis peaks saama&lt;br /&gt;
prototüübiks teha sinna peale rakenduse, mille ülesandeks menüüga tegelemine. &lt;br /&gt;
&lt;br /&gt;
=== 7. märts ===&lt;br /&gt;
Linnar Viik andis meile järgmist nõu: tuleb eristada kahte asja - see, mis peab valmis saama (&#039;&#039;must&#039;&#039;) ja see, mis oleks tore (&#039;&#039;nice to have&#039;&#039;). Valmis peab saama menüüga ekraan seinal (esialgu kasutajale prototüübi näitamiseks kasvõi näiteks PowerPoint-i abil tehtud). Alles siis kui on kasutajalt positiivne tagasiside saadud, võib edasi minna reaalse tarkvaralahenduse loomisega. Kui ka see on valmis ja kasutaja sellega rahul võib juurde mõelda &#039;&#039;nice to have&#039;&#039; asju (näiteks eelinfo järgmise päeva menüü kohta, üliõpilasesinduse sõnumite riba ja muid asju).&lt;br /&gt;
&lt;br /&gt;
Saime teada, et kui tahame, et meie loodav süsteem suhtleks IT Kohviku kassasüsteemiga, siis tuleb selle süsteemi tootjatega ühendust võtta ja nendega konsulteerida.&lt;br /&gt;
&lt;br /&gt;
=== 19.Veebruar ===&lt;br /&gt;
*Valmis XSLT fail.&lt;br /&gt;
&lt;br /&gt;
=== 9.Veebruar ===&lt;br /&gt;
* Esmane versioon XML ja XML Schemast olemas&lt;br /&gt;
* Tekkis küsimus kas XSLT faili tuleb käsitsi tekitada või automaatselt.&lt;br /&gt;
* Küsimus oli ka kas lahendasime portsjoni asja mõistlikult või oleks mõni teine lähenemine parem olnud.&lt;br /&gt;
* Küsimus, kas XML fail on liiga üle pingutatud või sobiva keerukusega&lt;br /&gt;
&lt;br /&gt;
=== 7. Veebruar ===&lt;br /&gt;
* Võtsime õppejõu poolt pakutud ideest kohe kinni, sest me eelistame teha praktilist asja, mida saab kasutada ja mille kasutamist saame ka iga päev jälgida. &lt;br /&gt;
* Esimese asjana otsustasime välja uurida mida meie &amp;quot;kliendid&amp;quot; (süsteemi tellijad) meilt ootavad. (Soovid idee punkti all)&lt;br /&gt;
* Valminud on lihtne teenusest ja klientidest koosnev süsteemi testmudel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Kasulikud lingid ==&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCF_auto_client_proxies.aspx&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/ms178472.aspx&lt;br /&gt;
&lt;br /&gt;
http://support.microsoft.com/kb/305141&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/aa702565.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/scottgu/archive/2007/04/06/tip-trick-enabling-ssl-on-iis7-using-self-signed-certificates.aspx&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Võrgurakendused II: hajussüsteemide ehitamine]]&lt;br /&gt;
[[Category: Veebirakenduste loomine ASP.NET abil]]&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=30567</id>
		<title>Meeskond &quot;FoodWars&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=30567"/>
		<updated>2011-05-07T20:21:59Z</updated>

		<summary type="html">&lt;p&gt;Rruga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Idee ==&lt;br /&gt;
Meie tiimil on plaanis teha internetipõhine söökla menüü süsteem (aluseks IT Kolledži kohvik, aga suunitlus selline, et kõik kohvikud/sööklad saaksid teha endale kasutajakonto ja hakata rakendust kasutama), kust saaks jälgida menüüd, mis sööke saab süüa, mis veel järgi on, kasutajatel on ka võimalus sööke hinnata (stiilis &amp;quot;meeldib&amp;quot;, &amp;quot;ei meeldi&amp;quot; nagu Facebook-is).&lt;br /&gt;
&lt;br /&gt;
Kohvikupidaja Teele soovid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* elektroonilisest menüüst asju kustutada, isegi siis kui asja peaks olema teoreetiliselt alles, aga tegelikult on asi otsas.&lt;br /&gt;
* elektrikatkestuse korral jääb menüü püsima. Ta peab teadma hindu mistahes olukorras.&lt;br /&gt;
* menüül näidatakse automaatselt ka ISIC kaardi omanike soodushinnad&lt;br /&gt;
* süsteem toetab ka poole portsjoni müümist.&lt;br /&gt;
&lt;br /&gt;
Linnar Viigi soovid/visioonid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* kõik oleks ka internetist kättesaadav, peale LCD ekraani, mis kajastab menüüd sööklas.&lt;br /&gt;
* aluseks facebook, kus siis söögid oleks nagu facebook-i alateemad.&lt;br /&gt;
* saab sööke hinnata, kommenteerida (täna oli väga maitsev praad).&lt;br /&gt;
* kasutajad saaks vaadata, mis menüüs on (ka järgmisel nädalal) ja mitu portsu veel alles on.&lt;br /&gt;
* kasutajad saaksid välja pakkuda menüüsid.&lt;br /&gt;
* erinevate söögikohtade kasutajad saaksid omavahel muljeid jagada.&lt;br /&gt;
* kuu aja aktiivsemad saavad prii lõuna.&lt;br /&gt;
* mingil ajal võib olla &amp;quot;happy hour&amp;quot; (enne sulgemist saab odavamalt).&lt;br /&gt;
* piiranguks on see, et toitu broneerida ei saa &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vaba tarkvara kasutamise võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Antud projekti puhul oleks võimalik kasutada [http://www.postgresql.org/ PostgreSQL] andmebaasi (vt. lisaks http://en.wikipedia.org/wiki/PostgreSQL ) Microsoft SQL Server&#039;i asemel. See võiks anda kasutajale võimaluse valida .NET ning [http://www.mono-project.com/ Mono] (vt. lisaks http://en.wikipedia.org/wiki/Mono_(software) ) platvormide vahel. Sel viisil oleks kliendil võimalik Microsoft&#039;i platvormi kõrval valida tõenäoliselt soodsam vaba tarkvara platvorm. Andmebaasi lõplik valik pole hetkel veel otsustatud.&lt;br /&gt;
&lt;br /&gt;
== Meeskond ja tööjaotus==&lt;br /&gt;
* Kristjan Stolin - projektijuht, suhtlus kliendiga, XML, wiki, teenuskihtide progemine, rollide halduse lehe progemine&lt;br /&gt;
* Ilmar Telga - XML, kliendiga suhtlus, wiki, teenuskihtide progemine, lõpprakenduste menüüd, login&lt;br /&gt;
* Rauno Rüga - XML, XSLT, andmebaasi loomine, wiki, mobiilirakendus, statistika&lt;br /&gt;
* Lauri Kermas - teenuskihtide ehitamine, wiki, login, kommenteerimise võimaluste progemine&lt;br /&gt;
&lt;br /&gt;
== XML Fail ==&lt;br /&gt;
=== XML ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Toidud&amp;gt;&lt;br /&gt;
  &amp;lt;Toit&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduNimetus&amp;gt;Viineri kaste&amp;lt;/ToiduNimetus&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduLiik&amp;gt;Praad&amp;lt;/ToiduLiik&amp;gt;&lt;br /&gt;
    &amp;lt;OlemasolevatYhikut&amp;gt;5&amp;lt;/OlemasolevatYhikut&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduKogus&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Poolportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;2011&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;1&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;9&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;15&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;07&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;23&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;        &lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.15&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;0&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;0&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;0&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;00&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;00&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;00&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Täisportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.80&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
    &amp;lt;/ToiduKogus&amp;gt;&lt;br /&gt;
    &amp;lt;Kommentaarid&amp;gt;&lt;br /&gt;
      &amp;lt;Kommentaar&amp;gt;&lt;br /&gt;
        &amp;lt;Saatja&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaNimi&amp;gt;Kristjan&amp;lt;/SaatjaNimi&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaRoll&amp;gt;Tudeng&amp;lt;/SaatjaRoll&amp;gt;&lt;br /&gt;
        &amp;lt;/Saatja&amp;gt;&lt;br /&gt;
        &amp;lt;Sisu&amp;gt;Minu lemmik toit ! Kui algebra tund ei hakkaks, sööks veel 5 portsjonit.&amp;lt;/Sisu&amp;gt;&lt;br /&gt;
      &amp;lt;/Kommentaar&amp;gt;&lt;br /&gt;
    &amp;lt;/Kommentaarid&amp;gt;&lt;br /&gt;
  &amp;lt;/Toit&amp;gt;&lt;br /&gt;
&amp;lt;/Toidud&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kommentaariks siis niipalju, et meie näide on ilma kohviku osata, selleks et näidet mitte liiga suureks ajada.&lt;br /&gt;
&lt;br /&gt;
Ka on meil moment puudu ID väljad, mis on igasugu andmebaasiga suhtlemiseks hädavajalikud, samas siin näidises palju juurde ei anna.&lt;br /&gt;
&lt;br /&gt;
Asja tegemisel avastasime, et põhiliseks arusaamatuse kohaks on toitude erinevad kogused (ehk siis pool portsjonit, suur / väike ja muud võrdlevad ühikud). Esimese võimalusena kaalusime teha lihtsalt täiesti eraldi toidud kõige kohta, stiilis &amp;quot;väike viineripraad&amp;quot; ja &amp;quot;suur viineripraad&amp;quot;. Kahjuks see variant ei kõlbaks eriti hästi, kuna need erinevad portsjonid kasutavad ikkagi samu materjale ja kui me peaks mingi süsteemiga näitama kui palju portsjoneid alles on. Sööklast näiteks pakuti et väike portsjon kasutab materjale kuskil 0.8 suure portsjoni ulatuses, ehk see suhtarv peaks olema kasutaja poolt (kohvikupidaja, restoraniomanik) ise sätitav. &lt;br /&gt;
&lt;br /&gt;
Tänu sellele sai meie süsteemi alustalaks siiski Toit, millel on oma Portsjonid siis erinevate hindade ja soodustustega. Moment pole meil ka Portsjoni XML osas toodud ära seost kogusega. (Kui palju ühe portsjoni lisamine/müümine peaks toidu üldkogust muutma).&lt;br /&gt;
&lt;br /&gt;
Kommenteerida saab meil moment toitu ennast, mitte eraldi portsjonit. Isegi kui kasutajad tahavad lisada kommentaare stiilis &amp;quot;See väike supp oli tõesti väga väike&amp;quot;, ei soovi nad seda ilmselt eraldi portsjoni alla panna. Tulevikus peaks kindlasti olema ka võimalus pigem kommenteerida üldisemalt (Kohvikut ennast, söögipaiku üldse), kui spetsiifilisemalt (Väikse prae kaste lisandi kohta).&lt;br /&gt;
&lt;br /&gt;
=== XML Schema ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Toidud&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Toit&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduNimetus&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;OlemasolevatYhikut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduKogus&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:choice maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;PortsjoniLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;Myygiaeg&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Aasta&amp;quot; type=&amp;quot;xs:unsignedShort&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Kuu&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Paev&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Tund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Minut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Sekund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;ToiduHind&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Eurohind&amp;quot; type=&amp;quot;xs:decimal&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Soodustus&amp;quot;&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseProtsent&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:choice&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Kommentaarid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Saatja&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaNimi&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaRoll&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Sisu&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
  &amp;lt;h2&amp;gt;Kohvikus müüdavad toidud&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr bgcolor=&amp;quot;#9acd32&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Veel alles&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Portsjon&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Müügiaeg&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustuse liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Kommentaar(id)&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;Toidud/Toit&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduNimetus&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduLiik&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;OlemasolevatYhikut&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;PortsjoniLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Paev&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Kuu&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Aasta&amp;quot; /&amp;gt; &amp;amp;nbsp;  &lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Tund&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Minut&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Sekund&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Eurohind&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseProtsent&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Kommentaarid/Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Sisu&amp;quot; /&amp;gt;&amp;amp;nbsp;(&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaRoll&amp;quot; /&amp;gt;&amp;amp;nbsp;&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaNimi&amp;quot; /&amp;gt;)&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XSLT poolt loodud tulemus on järgnev (lisasin veel kaks toitu XML faili, siin wiki lehel on ruumi kokkuhoiuks vaid 1 toit toitude listis):&lt;br /&gt;
[[File:Xslt.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arhitektuur ==&lt;br /&gt;
&lt;br /&gt;
Süsteem oli vahepeal plaanis ehitada kolmekihilise arhitektuuriga ([http://en.wikipedia.org/wiki/Multitier_architecture#Three-tier_architecture Three-tier architecture]). See peaks lihtsustama süsteemi haldamist ja laiendamist tulevikus. Aga kuna selle jaoks otsest vajadust polenud ja oleks vaid süsteemi keeruliseks ajanud, siis loobusime sellest.&lt;br /&gt;
&lt;br /&gt;
[[Image:three-tier.png|thumb|center|alt=Arhitektuuri skeem.|Arhitektuuri skeem.]]&lt;br /&gt;
&lt;br /&gt;
== Veebiteenus ==&lt;br /&gt;
===Andmemudel===&lt;br /&gt;
[[Image:KohvikuAndmemudel.jpg|thumb|right|alt=Kohviku projekti andmemudel|Andmemudel]]&lt;br /&gt;
Enne veebiteenuse meetodite kirjeldamist koostasime andmemudeli. Loodud andmemudeli põhjal lõime andmebaasi vajalike tabelite ja atribuutidega. Andmemudeli peal on rohelisega tähistatud tabelid, mis on oseselt seotud kohviku valdajaga ja mida WPF rakenduse jaoks kindlasti vaja on. Ülejäänud helesinised tabelid on vajalikud kasutajate võimaluste jaoks. Lisaks on andmemudelil kaks tabelit, mis pole teisega seotud, need on süsteemi administraatori jaoks, et oleks ülevaade, mis rakendused teenust enim kasutavad ning mis meetodeid kõige rohkem välja kutsutakse.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Teenuskihis olevad meetodid===&lt;br /&gt;
&lt;br /&gt;
====Kasutajatega seotud meetodid:====&lt;br /&gt;
*SaidiKasutajaLiik() - Tagastab antud kasutaja ID järgi kasutaja liigi nimetuse&lt;br /&gt;
*KustutaSaidiKasutaja() - Kustutab antud kasutaja ID järgi kasutaja tabelis Kasutaja&lt;br /&gt;
*AnnaKoikSaidiKasutajad() - Tagastab kõik kirjed tabelist Kasutaja&lt;br /&gt;
*AnnaKoikKohvikuKasutajad() - Tagastab antud kohviku ID järgi kõik kohviku kasutajad massiivina&lt;br /&gt;
*MuudaSaidiKasutajaLiik() - Muudab antud kasutaja ID järgi kasutaja liigi tabelis Kasutaja&lt;br /&gt;
*KoikLubatudSaidiKasutajaTyybid() - Tagastab andmebaasi kõik võimalikud kohviku kasutaja rollid (id-d ja nimed), muud andmed jäävad tühjaks&lt;br /&gt;
*KoikLubatudKohvikuRollid() - Tagastab andmebaasi kõik võimalikud site kasutaja rollid (id-d ja nimed), kohviku_id jääb tühjaks&lt;br /&gt;
*KasutajaKohvikuRollid() - Tagastab antud kasutaja ID järgi kõik kasutaja rollid kõikides kohvikutes&lt;br /&gt;
*MuudaKohvikuKasutajaRoll() - Muudab antud kasutaja ID ja kohviku ID järgi kasutaja rolli kohvikus, kui rolli pole, siis tekitatakse uus&lt;br /&gt;
*SaidiKasutajaLiikID() - Tagastab antud kasutaja ID järgi kasutaja liigi ID&lt;br /&gt;
*KohvikuKasutajaLiikID() - Tagastab antud kasutaja ID ja kohviku ID järgi kohviku kasutaja rolli ID&lt;br /&gt;
*AnnaKasutajaMeiliAadress() - Tagastab antud kasutaja nime alusel kasutaja meiliaadressi&lt;br /&gt;
*AnnaKasutajaIdJargi() - Tagastab kasutajanime kasutaja ID järgi&lt;br /&gt;
*AuthendiKasutaja() - Autendib kasutaja, õnnestumisel tagastab kasutaja ID, ebaõnnestumisel null &lt;br /&gt;
*RegistreeriKasutaja() - Registreerib kasutaja andmebaasi ja tagastab true kui kasutaja loomine õnnestus&lt;br /&gt;
&lt;br /&gt;
====Menüüga seotud meetodid====&lt;br /&gt;
*LisaArtikkelMenuuse() - Seob menüüartikli ja menüü&lt;br /&gt;
*LisaKohvikuleMenuu() - Seob menüü ja kohviku&lt;br /&gt;
*TagastabMenuuMuutujad() - Tagastab menüü järgi kas inimesel oleks õigust seda muuta&lt;br /&gt;
*KustutaMenuuJaKohvikuSeos() - Kustutab menüü ja kohviku seose&lt;br /&gt;
*LisaUusMenuu() - Teeb uue menüü, seob selle kohvikuga, kui kohviku ID on parameetrina kaasa antud&lt;br /&gt;
*MenuuKohvikuIdJargi() - Tagastab kohviku ID järgi kohviku tänaste või mitte tänaste menüüde ID-de massiivi&lt;br /&gt;
*LisaMenuuArtikkelMenuuse() - Sisestab antud müügiartikli menüüsse, mille ID on menyy_id&lt;br /&gt;
*KustutaMenuuArtikkel() - Kustutab müügiartikli ID ja menüü ID järgi müügiartikli menüüst&lt;br /&gt;
*TagastaMenuuArtiklid() - Tagastab menüü ID järgi menüüs olevad müügiartiklid&lt;br /&gt;
*VahetaMenuuArtiklit() - Muudab antud müügiartikli tabelis Myygiartikkel&lt;br /&gt;
*MenuuNimetus() - Tagastab menüü ID järgi menüü nimetuse&lt;br /&gt;
*AnnaMuugiartiklidMidaMenuusPole() - Tagastab müügiartiklid, mis pole veel menüüs, kus on juba müügiartiklid, mille IDd on antud massiivis&lt;br /&gt;
*AnnaMenuuNimed() - Tagastab kõigi menüüde nimetused tabelis Menyy&lt;br /&gt;
&lt;br /&gt;
====Kohvikutest üldiselt====&lt;br /&gt;
*KohvikuteNimed() - Tagastab kõigi kohvikute nimed massiivina&lt;br /&gt;
*KohvikuNimiIdJargi() - Tagastab antud kohviku ID järgi kohviku nime&lt;br /&gt;
*AnnaKoikOmanikuKohvikud() - Tagastab antud omaniku ID järgi kõik omaniku kohvikute ID-d massiivina&lt;br /&gt;
*Kohvikud() - Tagastab kõik kohvikute kirjed tabelist Kohvik&lt;br /&gt;
*KohvikuteArv() - Tagastab kõigi kohvikute arvu&lt;br /&gt;
*AnnaKaubad() - Tagastab kõik kaubad tabelist Kaup&lt;br /&gt;
*LisaKaup() - Lisab kauba kaupade nimekirja&lt;br /&gt;
*LisaKohvik() - Uue kohviku lisamine&lt;br /&gt;
&lt;br /&gt;
====Kommentaaridega seotud meetodid:====&lt;br /&gt;
*KohvikuKommentaarideArv() - Kohviku kommentaaride arv&lt;br /&gt;
*AnnaKohvikuKommentaarid() - Tagastab kommentaarid lehtede kaupa&lt;br /&gt;
*AnnaKohvikuKommentaarideHinded() - Tagastab kommentaaride jaoks võimalikud hinded koos kirjeldustega&lt;br /&gt;
*LisaKohvikuKommentaar() - Lisab kohviku kommentaari&lt;br /&gt;
&lt;br /&gt;
====Statistikaga seotud meetodid:====&lt;br /&gt;
*StatistikaRakendusteKohtaTana() - Tagastab rakenduse nimed ja nende vastu tehtud päringud tänasel päeval&lt;br /&gt;
*StatistikaRakendusteKohtaViimaneNadal() - Tagastab rakenduse nimed ja nende vastu tehtud päringud viimase nädala jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaSellelKuul() - Tagastab rakenduse nimed ja nende vastu tehtud päringud selle kuu jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaKokku() - Tagastab rakenduse nimed ja nende vastu tehtud päringud kogu aja vältel&lt;br /&gt;
*StatistikaMeetoditeKohtaTana() - Meetod leiab tänase päeva jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaViimaneNadal() - Meetod leiab viimase nädala jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaSellelKuul() - Meetod leiab kuu jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaKokku() - Meetod leiab kogu aja vältel kasutatud meetodid ja paringute arvu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebiteenuse projekti (WCF + andmebaas) saab siit: http://enos.itcollege.ee/~rruga/VRII/Teenusekiht.zip&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : CMS ==&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Veebirakendus ==&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus II : Mobiilirakendus ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Meeskonna kokkuvõttev aruanne ==&lt;br /&gt;
&lt;br /&gt;
== Logi ==&lt;br /&gt;
=== 17. aprill ===&lt;br /&gt;
Wikilehe täiendamine andmemudeli ja veebiteenuse meetodite kirjeldusega.&lt;br /&gt;
&lt;br /&gt;
=== 9. aprill ===&lt;br /&gt;
Tegime rollide halduse, münüüde muutmise vormi. Meili saatmine registreerimisel. Toimus andmebaasi andmemudeli väike muutus. &lt;br /&gt;
&lt;br /&gt;
=== 30. märts ===&lt;br /&gt;
Tehtud on kohviku menüü ja kohviku kommenteerimise leht.&lt;br /&gt;
&lt;br /&gt;
=== 26. märts ===&lt;br /&gt;
Tehtud on esimesed veebiteenuse meetodid ja veebirakendusele kasutajate registreerimine.&lt;br /&gt;
&lt;br /&gt;
=== 10. märts ===&lt;br /&gt;
Väikese häki abil õnnestus kohviku kassa arvutis saada tööle üks Forms-i proovirakendus.&lt;br /&gt;
&lt;br /&gt;
=== 8. märts ===&lt;br /&gt;
Kuna kassa-aparaadis on operatsioonisüsteemiks Windows XP ja raud on 1.99 GHz, 256 RAM siis peaks saama&lt;br /&gt;
prototüübiks teha sinna peale rakenduse, mille ülesandeks menüüga tegelemine. &lt;br /&gt;
&lt;br /&gt;
=== 7. märts ===&lt;br /&gt;
Linnar Viik andis meile järgmist nõu: tuleb eristada kahte asja - see, mis peab valmis saama (&#039;&#039;must&#039;&#039;) ja see, mis oleks tore (&#039;&#039;nice to have&#039;&#039;). Valmis peab saama menüüga ekraan seinal (esialgu kasutajale prototüübi näitamiseks kasvõi näiteks PowerPoint-i abil tehtud). Alles siis kui on kasutajalt positiivne tagasiside saadud, võib edasi minna reaalse tarkvaralahenduse loomisega. Kui ka see on valmis ja kasutaja sellega rahul võib juurde mõelda &#039;&#039;nice to have&#039;&#039; asju (näiteks eelinfo järgmise päeva menüü kohta, üliõpilasesinduse sõnumite riba ja muid asju).&lt;br /&gt;
&lt;br /&gt;
Saime teada, et kui tahame, et meie loodav süsteem suhtleks IT Kohviku kassasüsteemiga, siis tuleb selle süsteemi tootjatega ühendust võtta ja nendega konsulteerida.&lt;br /&gt;
&lt;br /&gt;
=== 19.Veebruar ===&lt;br /&gt;
*Valmis XSLT fail.&lt;br /&gt;
&lt;br /&gt;
=== 9.Veebruar ===&lt;br /&gt;
* Esmane versioon XML ja XML Schemast olemas&lt;br /&gt;
* Tekkis küsimus kas XSLT faili tuleb käsitsi tekitada või automaatselt.&lt;br /&gt;
* Küsimus oli ka kas lahendasime portsjoni asja mõistlikult või oleks mõni teine lähenemine parem olnud.&lt;br /&gt;
* Küsimus, kas XML fail on liiga üle pingutatud või sobiva keerukusega&lt;br /&gt;
&lt;br /&gt;
=== 7. Veebruar ===&lt;br /&gt;
* Võtsime õppejõu poolt pakutud ideest kohe kinni, sest me eelistame teha praktilist asja, mida saab kasutada ja mille kasutamist saame ka iga päev jälgida. &lt;br /&gt;
* Esimese asjana otsustasime välja uurida mida meie &amp;quot;kliendid&amp;quot; (süsteemi tellijad) meilt ootavad. (Soovid idee punkti all)&lt;br /&gt;
* Valminud on lihtne teenusest ja klientidest koosnev süsteemi testmudel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Kasulikud lingid ==&lt;br /&gt;
&lt;br /&gt;
http://www.codeproject.com/KB/WCF/WCF_auto_client_proxies.aspx&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/ms178472.aspx&lt;br /&gt;
&lt;br /&gt;
http://support.microsoft.com/kb/305141&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/aa702565.aspx&lt;br /&gt;
&lt;br /&gt;
http://weblogs.asp.net/scottgu/archive/2007/04/06/tip-trick-enabling-ssl-on-iis7-using-self-signed-certificates.aspx&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Võrgurakendused II: hajussüsteemide ehitamine]]&lt;br /&gt;
[[Category: Veebirakenduste loomine ASP.NET abil]]&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=File:WP7_rakendus.jpg&amp;diff=30566</id>
		<title>File:WP7 rakendus.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=File:WP7_rakendus.jpg&amp;diff=30566"/>
		<updated>2011-05-07T20:20:21Z</updated>

		<summary type="html">&lt;p&gt;Rruga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=V%C3%B5rgurakendused_II:_2011_kevadel_valminud_kodut%C3%B6%C3%B6d&amp;diff=27968</id>
		<title>Võrgurakendused II: 2011 kevadel valminud kodutööd</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=V%C3%B5rgurakendused_II:_2011_kevadel_valminud_kodut%C3%B6%C3%B6d&amp;diff=27968"/>
		<updated>2011-04-23T16:09:57Z</updated>

		<summary type="html">&lt;p&gt;Rruga: /* Rauno Rüga */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Jaan Igamees=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Kert Suvi=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Helen Muidik=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Mihkel Sokk=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Seda Sahradyan=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Priit Siimo=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Siim Sarv=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Reigo Männiste=&lt;br /&gt;
* Meeskond [[Meeskond Tool]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Karl Männil=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;H2&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Ilmar Telga=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Siim Aaver=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;H2&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Taavi Ilves=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Hungry_Student_Food_Board&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;ASP-tastic&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Jaan Kruusma=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Hungry_Student_Food_Board&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Andrus Reedla=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Jaak Lehtsalu=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Jana Mrots=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Heiki Tamm=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;H2&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Meeskond&amp;quot;]]&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond  &amp;quot;Hungry Student Food Board&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Toomas Soha=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Miina Sikk=&lt;br /&gt;
* Meeskond [[Meeskond Tool]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Rauno Rüga=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Tanel Liiv=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Hungry Student Food Board&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Gaspar Karm=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Joosep Ilves=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Taivo Türnpu=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;ASP-tastic&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond Tool]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Sander Baikov=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;ASP-tastic&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Allar Anijago=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tool&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Madis Sarv=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Kaspar Kallasmaa=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Jarko Kaskmaa=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;ASP-tastic&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Indrek Kõue=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;ASP-tastic&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Erik Kaju=&lt;br /&gt;
* Meeskond [[Meeskond Tool]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Mailis Toompuu=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;H2&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:Meeskond_%22C_terav%22&amp;diff=27967</id>
		<title>Talk:Meeskond &quot;C terav&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:Meeskond_%22C_terav%22&amp;diff=27967"/>
		<updated>2011-04-23T16:07:54Z</updated>

		<summary type="html">&lt;p&gt;Rruga: /* Teenuskihi Arvustus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;XML osa arvustus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
XML struktuur on korralikult tehtud, süntaksi vigu pole näha. Kuupäevad ja ajad on piisavalt täpselt ära kirjeldatud, et neid hiljem oleks kerge välja lugeda. Mis aga mina oleks natuke teistmoodi teinud, on näiteks aadresi väli, kus hetkel on väli nimega &amp;quot;linnVald&amp;quot; ja peale mida tuleb kohe &amp;quot;tanav&amp;quot;, kui aga näiteks ma tahaks kirjeldada kohvikut, mis asub mingis maakohas x vallas, siis poleks enam kohta, kuhu kirjutada asula nime. Teine asi, mis natuke liiga jäik on, on lahtioleku ajad, näiteks kui tahaks märkida kohvikut, mis töötab iga päev esmaspäevast kuni pühapäevani, siis alati peaks panema nädalavahetuse päevad erandpäevade alla, vaatamata, et selle kohviku puhul võib näiteks laupäeval lahtiolemine täiesti tavaline olla.&lt;br /&gt;
&lt;br /&gt;
Skeemifail on olemas, samuti ka XSLT. Kõik piisavalt hästi tehtud, XSLT tulemuses oleks võinud ainult kuupäev ja kellajad korralikumalt punktide või kooloniga eraldatud olla, et loetavus parem oleks.&lt;br /&gt;
&lt;br /&gt;
Rauno Rüga&lt;br /&gt;
&lt;br /&gt;
[[User:Rruga|Rruga]] 20:55, 4 March 2011 (EET)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;XML-i arvestus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
XML on üpriski korralikult disainitud. Lahtiolekuaegade jaotus ei piina silmi. On võimalik  puhtalt kirja panna lahtiolekuajad kohviku kohta, mille ajad mitme päeva puhul kattuvad, või siis läbi &amp;quot;aeg&amp;quot; elemendi kirjeldada erinevaid aegu erinevatel päevadel. &lt;br /&gt;
Toitude jaotus menüüs on ka väga hästi tehtud, küll aga oleks ehk ise teinud toitudele ülemelemendid nagu &amp;quot;liik&amp;quot; või &amp;quot;kategooria&amp;quot; kuhu alla oleks võimalik toite lisada.&lt;br /&gt;
Mis natuke kahtlust tekitas, oli toitude jaotamine koguse järgi ja seda hindade all. Koguse kirjeldus võiks ehk olla ise mingi elemendi sees (mitte elemendina). Praegu on vist eeldatud, et kõikidel toitudel/kaupadel on &amp;quot;tais&amp;quot;, &amp;quot;poolik&amp;quot; jm ühised portsjonid.&lt;br /&gt;
&lt;br /&gt;
Joosep Ilves&lt;br /&gt;
&lt;br /&gt;
==XML Arvustus==&lt;br /&gt;
&lt;br /&gt;
*Kuna ise teeme ka sarnast projekti võrdlen seda palju meie omaga. Teil on kohvikute kohta info väga hästi ja täpselt välja toodud. Võibolla isegi liiga täpselt kuna te ei või kunagi teada kes teil kliendiks registreerib, et kas ta üldse oskab enda koordinaate leida, see tähendaks teile rohkem tööd ja võib põhjustada kliendi frustratsiooni kui ka teile. Isiklikult mulle koordinaatide süsteem meeldib, saate nii teha ühe suure kaardi kuhu kõik kohvikud peale märkida.&lt;br /&gt;
*Toidud on toodud välja väga lihtsalt, aga samas tundub see lisade süsteem pisut mõttetu, restoranides on tavaliselt lisad veel eraldi ostetavad aga kohvikus tavaliselt ei osta kotletti ja kartulit eraldi. Kommentaarid on teil ka kohe xmliga ära kaetud, kuid me näiteks edastame vaid laikijad, üldjuhul kommenteeritakse siis kui toit oli halb mis võib rohkem halba teha kohvikule kui head, aga jah, maitse asi. Portsude osa lahendasime sama moodi ja see meeldib.&lt;br /&gt;
*Üldiselt on XMLil korralik laotus, aga liigne keskendumine kohvikule endale kui menüüle, mis minu arvates on peamine.&lt;br /&gt;
&lt;br /&gt;
*Jaan Kruusma D22&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==XML Arvustus==&lt;br /&gt;
&lt;br /&gt;
Kohe hakkab silma fakt et teie süsteem ei toeta mitut kohvikut, tunnen et see on suur miinus kuna süsteemi praktiline väärtus on seetõttu väga madal - ma saan aru, et te teete seda ühele kliendile, aga mis siis kui see üks klient tahab teie süsteemi mitmes kohvikus hakata kasutama tulevikus? Teiseks tundub väga overkill see ajatempli lahtikiskumine juppideks, lihtsam oleks kasutada mingit UNIX timestampi moodi asja ja siis kasutajaliideses see loetavaks ajaks koverteerida. Samuti on ülisuur miinus ajatsooni puudumine - sisuliselt ei saa teie programmi kasutada korraga ühe kliendi poolt mitmes riigis. Kolmandaks kriibib silma see &amp;quot;Eurohind&amp;quot;, kas te mõtete teha nii et iga klient peab kasutajaliidesse kirjutama oma rahaühiku ja siis konverteeritakse on-the-fly eurodest või peab hakkama XMLi iga välisriigi jaoks eraldi täiustama?&lt;br /&gt;
&lt;br /&gt;
Muu on normaalne ja eriti meeldib teie kolmekihiline süsteem. &lt;br /&gt;
&lt;br /&gt;
Tanel Liiv D22&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==XML Arvustus==&lt;br /&gt;
&lt;br /&gt;
Mis meeldis ning mis ei karjunud oli lahtioleku aegade jaotus - oli lihtsalt ja arusaadavalt tehtud. Mis silma hakkas oli see, et seal on välja toodud küll väikesed ja suured portsud, kuid see kas ports saadaval on, käib siinkohal toidu kohta, see tähendab seda, et kui näiteks suur ports otsas on, siis ei tähenda see automaatselt seda, et poolikut portsu pole ka võimalik saada. Kui näitena võetud meie ITK kohvik, siis seal ennegi olnud näiteks ainult pool portsu alles. Samas oleks võinud kommentaaride alla lisada ka kuupäeva, millal seda antud toitu kommenteeritud on, et oleks võimalik näiteks viis kõige uuemat kommentaari kuvada.  &lt;br /&gt;
Üldjuhul võib rahule jääda, kõik tähtis oli ära kirjeldatud, vigu ei leidnud ka skeemifailist ega XSLT&#039;st. &lt;br /&gt;
&lt;br /&gt;
Kaspar Kallasmaa D21&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Teenuskihi Arvustus==&lt;br /&gt;
&lt;br /&gt;
Antud projekti teenuskihi juures jääb kohe silma, et andmemudel oleks justkui andmebaas ( wiki veebiteenuse alampunkti põhjal tekib selline mulje ). Lisaks pole pakutavas zip failis andmebaasi, mis toetab mainitud väidet. See aga on minuarust küll väga vale lähenemine, kuna teil on tehtud dbml andmemudeli fail, mis aga pole mõeldud üldsegi selleks, et selle põhjal andmebaasi genereerida. Võibolla kuidagi see õnnestuks, aga sellist funktsionaalsust .net ametlikult küll ei toeta.&lt;br /&gt;
&lt;br /&gt;
Teine asi, mis oleks võinud teistmoodi olla, on valitud projekti tüüp. Kui juba WCF valisite teenuskihi jaoks, oleks võinud selle jaoks eraldi WCF projekti teha, hetkel on seal palju üleliigset asp.net träni kaasas, mis ei puutu üldse teenuskihti.&lt;br /&gt;
&lt;br /&gt;
Liigudes edasi koodini ja meetoditeni, märkasin et tagastate teenuskihis alati klasse, isegi siis kui toimub millegi sisestus &amp;quot;teie andmebaasi&amp;quot; ja tagasi oleks vaja saada vaid booleani, et kas asi õnnestus või mitte. Suure teenuskihi kasutusel lisaks see kindlasti suurt koormust, kui lihtsa booli tagastamise asemel on vastuseks mingi suuremat sorti klass. Silma jäi ka järgnev koht koodis:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
KasutajaKirjeClass KKC = new KasutajaKirjeClass();&lt;br /&gt;
        if ( KKC.kontrolliKohvikuKasutaja(kohvikID, kasutajaID) == true)&lt;br /&gt;
        {&lt;br /&gt;
            try&lt;br /&gt;
            {&lt;br /&gt;
                kont.ExecuteCommand(&amp;quot;insert into Menyy(fkKohvik_id,alates,kuni) values(&#039;&amp;quot; + kohvikID + &amp;quot;&#039;,&#039;&amp;quot; + alates.ToString(&amp;quot;MM.dd.yyyy&amp;quot;) + &amp;quot;&#039;,&#039;&amp;quot; + kuni.ToString(&amp;quot;MM.dd.yyyy&amp;quot;) + &amp;quot;&#039;);&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
                return true;&lt;br /&gt;
            }&lt;br /&gt;
            catch&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        else {&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
Kontrolli sisu on siin:&lt;br /&gt;
&lt;br /&gt;
 public bool kontrolliKohvikuKasutaja(int kohvikID, int kasutajaID)&lt;br /&gt;
    {&lt;br /&gt;
        var kasutajaOlemas = kont.KohvikuKasutajas.Where(x=&amp;gt;x.fkKohvik_ID==kohvikID &amp;amp;&amp;amp; x.fkKasutaja_ID == kasutajaID).SingleOrDefault();&lt;br /&gt;
&lt;br /&gt;
        if (kasutajaOlemas == null)&lt;br /&gt;
        {&lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hetkel toimib süsteem nii, et kui antud kohviku id ja kasutaja id-ga kasutaja on andmebaasis, siis kasutajaOlemas muutuja saab selle objekti endale (mis pole kaugeltki turvaline autentimine) ja järgneva tingimuse põhjal tagastatakse false, seega väljakutsuvas meetodis ei täideta sql käsku. Käsk aga täidetakse sellisel juhul, kui andmebaasist ei leitud sellist kasutajat, kas mitte see süsteem vastupidi ei peaks töötama !? Sama asi oli veel mitmes kohas. Oleksite võinud ka valida ühe stiili, kas linq kasutamise või siis ainult sql käsud, hetkel läbisegi nii ühte kui teist kasutatud.&lt;br /&gt;
&lt;br /&gt;
Head oli ka, see asi mis teil tehtud, oli tähtajaks valmis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Rauno Rüga&lt;br /&gt;
&lt;br /&gt;
[[User:Rruga|Rruga]] 19:07, 23 April 2011 (EEST)&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:Meeskond_%22C_terav%22&amp;diff=27966</id>
		<title>Talk:Meeskond &quot;C terav&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:Meeskond_%22C_terav%22&amp;diff=27966"/>
		<updated>2011-04-23T16:07:26Z</updated>

		<summary type="html">&lt;p&gt;Rruga: /* Teenuskihi Arvustus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;XML osa arvustus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
XML struktuur on korralikult tehtud, süntaksi vigu pole näha. Kuupäevad ja ajad on piisavalt täpselt ära kirjeldatud, et neid hiljem oleks kerge välja lugeda. Mis aga mina oleks natuke teistmoodi teinud, on näiteks aadresi väli, kus hetkel on väli nimega &amp;quot;linnVald&amp;quot; ja peale mida tuleb kohe &amp;quot;tanav&amp;quot;, kui aga näiteks ma tahaks kirjeldada kohvikut, mis asub mingis maakohas x vallas, siis poleks enam kohta, kuhu kirjutada asula nime. Teine asi, mis natuke liiga jäik on, on lahtioleku ajad, näiteks kui tahaks märkida kohvikut, mis töötab iga päev esmaspäevast kuni pühapäevani, siis alati peaks panema nädalavahetuse päevad erandpäevade alla, vaatamata, et selle kohviku puhul võib näiteks laupäeval lahtiolemine täiesti tavaline olla.&lt;br /&gt;
&lt;br /&gt;
Skeemifail on olemas, samuti ka XSLT. Kõik piisavalt hästi tehtud, XSLT tulemuses oleks võinud ainult kuupäev ja kellajad korralikumalt punktide või kooloniga eraldatud olla, et loetavus parem oleks.&lt;br /&gt;
&lt;br /&gt;
Rauno Rüga&lt;br /&gt;
&lt;br /&gt;
[[User:Rruga|Rruga]] 20:55, 4 March 2011 (EET)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;XML-i arvestus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
XML on üpriski korralikult disainitud. Lahtiolekuaegade jaotus ei piina silmi. On võimalik  puhtalt kirja panna lahtiolekuajad kohviku kohta, mille ajad mitme päeva puhul kattuvad, või siis läbi &amp;quot;aeg&amp;quot; elemendi kirjeldada erinevaid aegu erinevatel päevadel. &lt;br /&gt;
Toitude jaotus menüüs on ka väga hästi tehtud, küll aga oleks ehk ise teinud toitudele ülemelemendid nagu &amp;quot;liik&amp;quot; või &amp;quot;kategooria&amp;quot; kuhu alla oleks võimalik toite lisada.&lt;br /&gt;
Mis natuke kahtlust tekitas, oli toitude jaotamine koguse järgi ja seda hindade all. Koguse kirjeldus võiks ehk olla ise mingi elemendi sees (mitte elemendina). Praegu on vist eeldatud, et kõikidel toitudel/kaupadel on &amp;quot;tais&amp;quot;, &amp;quot;poolik&amp;quot; jm ühised portsjonid.&lt;br /&gt;
&lt;br /&gt;
Joosep Ilves&lt;br /&gt;
&lt;br /&gt;
==XML Arvustus==&lt;br /&gt;
&lt;br /&gt;
*Kuna ise teeme ka sarnast projekti võrdlen seda palju meie omaga. Teil on kohvikute kohta info väga hästi ja täpselt välja toodud. Võibolla isegi liiga täpselt kuna te ei või kunagi teada kes teil kliendiks registreerib, et kas ta üldse oskab enda koordinaate leida, see tähendaks teile rohkem tööd ja võib põhjustada kliendi frustratsiooni kui ka teile. Isiklikult mulle koordinaatide süsteem meeldib, saate nii teha ühe suure kaardi kuhu kõik kohvikud peale märkida.&lt;br /&gt;
*Toidud on toodud välja väga lihtsalt, aga samas tundub see lisade süsteem pisut mõttetu, restoranides on tavaliselt lisad veel eraldi ostetavad aga kohvikus tavaliselt ei osta kotletti ja kartulit eraldi. Kommentaarid on teil ka kohe xmliga ära kaetud, kuid me näiteks edastame vaid laikijad, üldjuhul kommenteeritakse siis kui toit oli halb mis võib rohkem halba teha kohvikule kui head, aga jah, maitse asi. Portsude osa lahendasime sama moodi ja see meeldib.&lt;br /&gt;
*Üldiselt on XMLil korralik laotus, aga liigne keskendumine kohvikule endale kui menüüle, mis minu arvates on peamine.&lt;br /&gt;
&lt;br /&gt;
*Jaan Kruusma D22&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==XML Arvustus==&lt;br /&gt;
&lt;br /&gt;
Kohe hakkab silma fakt et teie süsteem ei toeta mitut kohvikut, tunnen et see on suur miinus kuna süsteemi praktiline väärtus on seetõttu väga madal - ma saan aru, et te teete seda ühele kliendile, aga mis siis kui see üks klient tahab teie süsteemi mitmes kohvikus hakata kasutama tulevikus? Teiseks tundub väga overkill see ajatempli lahtikiskumine juppideks, lihtsam oleks kasutada mingit UNIX timestampi moodi asja ja siis kasutajaliideses see loetavaks ajaks koverteerida. Samuti on ülisuur miinus ajatsooni puudumine - sisuliselt ei saa teie programmi kasutada korraga ühe kliendi poolt mitmes riigis. Kolmandaks kriibib silma see &amp;quot;Eurohind&amp;quot;, kas te mõtete teha nii et iga klient peab kasutajaliidesse kirjutama oma rahaühiku ja siis konverteeritakse on-the-fly eurodest või peab hakkama XMLi iga välisriigi jaoks eraldi täiustama?&lt;br /&gt;
&lt;br /&gt;
Muu on normaalne ja eriti meeldib teie kolmekihiline süsteem. &lt;br /&gt;
&lt;br /&gt;
Tanel Liiv D22&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==XML Arvustus==&lt;br /&gt;
&lt;br /&gt;
Mis meeldis ning mis ei karjunud oli lahtioleku aegade jaotus - oli lihtsalt ja arusaadavalt tehtud. Mis silma hakkas oli see, et seal on välja toodud küll väikesed ja suured portsud, kuid see kas ports saadaval on, käib siinkohal toidu kohta, see tähendab seda, et kui näiteks suur ports otsas on, siis ei tähenda see automaatselt seda, et poolikut portsu pole ka võimalik saada. Kui näitena võetud meie ITK kohvik, siis seal ennegi olnud näiteks ainult pool portsu alles. Samas oleks võinud kommentaaride alla lisada ka kuupäeva, millal seda antud toitu kommenteeritud on, et oleks võimalik näiteks viis kõige uuemat kommentaari kuvada.  &lt;br /&gt;
Üldjuhul võib rahule jääda, kõik tähtis oli ära kirjeldatud, vigu ei leidnud ka skeemifailist ega XSLT&#039;st. &lt;br /&gt;
&lt;br /&gt;
Kaspar Kallasmaa D21&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Teenuskihi Arvustus==&lt;br /&gt;
&lt;br /&gt;
Antud projekti teenuskihi juures jääb kohe silma, et andmemudel oleks justkui andmebaas ( wiki veebiteenuse alampunkti põhjal tekib selline mulje ). Lisaks pole pakutavas zip failis andmebaasi, mis toetab mainitud väidet. See aga on minuarust küll väga vale lähenemine, kuna teil on tehtud dbml andmemudeli fail, mis aga pole mõeldud üldsegi selleks, et selle põhjal andmebaasi genereerida. Võibolla kuidagi see õnnestuks, aga sellist funktsionaalsust .net ametlikult küll ei toeta.&lt;br /&gt;
&lt;br /&gt;
Teine asi, mis oleks võinud teistmoodi olla, on valitud projekti tüüp. Kui juba WCF valisite teenuskihi jaoks, oleks võinud selle jaoks eraldi WCF projekti teha, hetkel on seal palju üleliigset asp.net träni kaasas, mis ei puutu üldse teenuskihti.&lt;br /&gt;
&lt;br /&gt;
Liigudes edasi koodini ja meetoditeni, märkasin et tagastate teenuskihis alati klasse, isegi siis kui toimub millegi sisestus &amp;quot;teie andmebaasi&amp;quot; ja tagasi oleks vaja saada vaid booleani, et kas asi õnnestus või mitte. Suure teenuskihi kasutusel lisaks see kindlasti suurt koormust, kui lihtsa booli tagastamise asemel on vastuseks mingi suuremat sorti klass. Silma jäi ka järgnev koht koodis:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
KasutajaKirjeClass KKC = new KasutajaKirjeClass();&lt;br /&gt;
        if ( KKC.kontrolliKohvikuKasutaja(kohvikID, kasutajaID) == true)&lt;br /&gt;
        {&lt;br /&gt;
            try&lt;br /&gt;
            {&lt;br /&gt;
                kont.ExecuteCommand(&amp;quot;insert into Menyy(fkKohvik_id,alates,kuni) values(&#039;&amp;quot; + kohvikID + &amp;quot;&#039;,&#039;&amp;quot; + alates.ToString(&amp;quot;MM.dd.yyyy&amp;quot;) + &amp;quot;&#039;,&#039;&amp;quot; + kuni.ToString(&amp;quot;MM.dd.yyyy&amp;quot;) + &amp;quot;&#039;);&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
                return true;&lt;br /&gt;
            }&lt;br /&gt;
            catch&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        else {&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
Kontrolli sisu on siin:&lt;br /&gt;
&lt;br /&gt;
 public bool kontrolliKohvikuKasutaja(int kohvikID, int kasutajaID)&lt;br /&gt;
    {&lt;br /&gt;
        var kasutajaOlemas = kont.KohvikuKasutajas.Where(x=&amp;gt;x.fkKohvik_ID==kohvikID &amp;amp;&amp;amp; x.fkKasutaja_ID == kasutajaID).SingleOrDefault();&lt;br /&gt;
&lt;br /&gt;
        if (kasutajaOlemas == null)&lt;br /&gt;
        {&lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hetkel toimib süsteem nii, et kui antud kohviku id ja kasutaja id-ga kasutaja on andmebaasis, siis kasutajaOlemas muutuja saab selle objekti endale (mis pole kaugeltki turvaline autentimine) ja järgneva tingimuse põhjal tagastatakse false, seega väljakutsuvas meetodis ei täideta sql käsku. Käsk aga täidetakse sellisel juhul, kui andmebaasist ei leitud sellist kasutajat, kas mitte see süsteem vastupidi ei peaks töötama !? Sama asi oli veel mitmes kohas. Oleksite võinud ka valida ühe stiili, kas linq kasutamise või siis ainult sql käsud, hetkel läbisegi nii ühte kui teist kasutatud.&lt;br /&gt;
&lt;br /&gt;
Head oli ka, see asi mis teil tehtud, oli tähtajaks valmis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Rauno Rüga&lt;br /&gt;
[[User:Rruga|Rruga]]&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:Meeskond_%22C_terav%22&amp;diff=27964</id>
		<title>Talk:Meeskond &quot;C terav&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:Meeskond_%22C_terav%22&amp;diff=27964"/>
		<updated>2011-04-23T16:02:17Z</updated>

		<summary type="html">&lt;p&gt;Rruga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;XML osa arvustus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
XML struktuur on korralikult tehtud, süntaksi vigu pole näha. Kuupäevad ja ajad on piisavalt täpselt ära kirjeldatud, et neid hiljem oleks kerge välja lugeda. Mis aga mina oleks natuke teistmoodi teinud, on näiteks aadresi väli, kus hetkel on väli nimega &amp;quot;linnVald&amp;quot; ja peale mida tuleb kohe &amp;quot;tanav&amp;quot;, kui aga näiteks ma tahaks kirjeldada kohvikut, mis asub mingis maakohas x vallas, siis poleks enam kohta, kuhu kirjutada asula nime. Teine asi, mis natuke liiga jäik on, on lahtioleku ajad, näiteks kui tahaks märkida kohvikut, mis töötab iga päev esmaspäevast kuni pühapäevani, siis alati peaks panema nädalavahetuse päevad erandpäevade alla, vaatamata, et selle kohviku puhul võib näiteks laupäeval lahtiolemine täiesti tavaline olla.&lt;br /&gt;
&lt;br /&gt;
Skeemifail on olemas, samuti ka XSLT. Kõik piisavalt hästi tehtud, XSLT tulemuses oleks võinud ainult kuupäev ja kellajad korralikumalt punktide või kooloniga eraldatud olla, et loetavus parem oleks.&lt;br /&gt;
&lt;br /&gt;
Rauno Rüga&lt;br /&gt;
&lt;br /&gt;
[[User:Rruga|Rruga]] 20:55, 4 March 2011 (EET)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;XML-i arvestus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
XML on üpriski korralikult disainitud. Lahtiolekuaegade jaotus ei piina silmi. On võimalik  puhtalt kirja panna lahtiolekuajad kohviku kohta, mille ajad mitme päeva puhul kattuvad, või siis läbi &amp;quot;aeg&amp;quot; elemendi kirjeldada erinevaid aegu erinevatel päevadel. &lt;br /&gt;
Toitude jaotus menüüs on ka väga hästi tehtud, küll aga oleks ehk ise teinud toitudele ülemelemendid nagu &amp;quot;liik&amp;quot; või &amp;quot;kategooria&amp;quot; kuhu alla oleks võimalik toite lisada.&lt;br /&gt;
Mis natuke kahtlust tekitas, oli toitude jaotamine koguse järgi ja seda hindade all. Koguse kirjeldus võiks ehk olla ise mingi elemendi sees (mitte elemendina). Praegu on vist eeldatud, et kõikidel toitudel/kaupadel on &amp;quot;tais&amp;quot;, &amp;quot;poolik&amp;quot; jm ühised portsjonid.&lt;br /&gt;
&lt;br /&gt;
Joosep Ilves&lt;br /&gt;
&lt;br /&gt;
==XML Arvustus==&lt;br /&gt;
&lt;br /&gt;
*Kuna ise teeme ka sarnast projekti võrdlen seda palju meie omaga. Teil on kohvikute kohta info väga hästi ja täpselt välja toodud. Võibolla isegi liiga täpselt kuna te ei või kunagi teada kes teil kliendiks registreerib, et kas ta üldse oskab enda koordinaate leida, see tähendaks teile rohkem tööd ja võib põhjustada kliendi frustratsiooni kui ka teile. Isiklikult mulle koordinaatide süsteem meeldib, saate nii teha ühe suure kaardi kuhu kõik kohvikud peale märkida.&lt;br /&gt;
*Toidud on toodud välja väga lihtsalt, aga samas tundub see lisade süsteem pisut mõttetu, restoranides on tavaliselt lisad veel eraldi ostetavad aga kohvikus tavaliselt ei osta kotletti ja kartulit eraldi. Kommentaarid on teil ka kohe xmliga ära kaetud, kuid me näiteks edastame vaid laikijad, üldjuhul kommenteeritakse siis kui toit oli halb mis võib rohkem halba teha kohvikule kui head, aga jah, maitse asi. Portsude osa lahendasime sama moodi ja see meeldib.&lt;br /&gt;
*Üldiselt on XMLil korralik laotus, aga liigne keskendumine kohvikule endale kui menüüle, mis minu arvates on peamine.&lt;br /&gt;
&lt;br /&gt;
*Jaan Kruusma D22&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==XML Arvustus==&lt;br /&gt;
&lt;br /&gt;
Kohe hakkab silma fakt et teie süsteem ei toeta mitut kohvikut, tunnen et see on suur miinus kuna süsteemi praktiline väärtus on seetõttu väga madal - ma saan aru, et te teete seda ühele kliendile, aga mis siis kui see üks klient tahab teie süsteemi mitmes kohvikus hakata kasutama tulevikus? Teiseks tundub väga overkill see ajatempli lahtikiskumine juppideks, lihtsam oleks kasutada mingit UNIX timestampi moodi asja ja siis kasutajaliideses see loetavaks ajaks koverteerida. Samuti on ülisuur miinus ajatsooni puudumine - sisuliselt ei saa teie programmi kasutada korraga ühe kliendi poolt mitmes riigis. Kolmandaks kriibib silma see &amp;quot;Eurohind&amp;quot;, kas te mõtete teha nii et iga klient peab kasutajaliidesse kirjutama oma rahaühiku ja siis konverteeritakse on-the-fly eurodest või peab hakkama XMLi iga välisriigi jaoks eraldi täiustama?&lt;br /&gt;
&lt;br /&gt;
Muu on normaalne ja eriti meeldib teie kolmekihiline süsteem. &lt;br /&gt;
&lt;br /&gt;
Tanel Liiv D22&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==XML Arvustus==&lt;br /&gt;
&lt;br /&gt;
Mis meeldis ning mis ei karjunud oli lahtioleku aegade jaotus - oli lihtsalt ja arusaadavalt tehtud. Mis silma hakkas oli see, et seal on välja toodud küll väikesed ja suured portsud, kuid see kas ports saadaval on, käib siinkohal toidu kohta, see tähendab seda, et kui näiteks suur ports otsas on, siis ei tähenda see automaatselt seda, et poolikut portsu pole ka võimalik saada. Kui näitena võetud meie ITK kohvik, siis seal ennegi olnud näiteks ainult pool portsu alles. Samas oleks võinud kommentaaride alla lisada ka kuupäeva, millal seda antud toitu kommenteeritud on, et oleks võimalik näiteks viis kõige uuemat kommentaari kuvada.  &lt;br /&gt;
Üldjuhul võib rahule jääda, kõik tähtis oli ära kirjeldatud, vigu ei leidnud ka skeemifailist ega XSLT&#039;st. &lt;br /&gt;
&lt;br /&gt;
Kaspar Kallasmaa D21&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Teenuskihi Arvustus==&lt;br /&gt;
&lt;br /&gt;
Antud projekti teenuskihi juures jääb kohe silma, et andmemudel oleks justkui andmebaas ( wiki veebiteenuse alampunkti põhjal tekib selline mulje ). Lisaks pole pakutavas zip failis andmebaasi, mis toetab mainitud väidet. See aga on minuarust küll väga vale lähenemine, kuna teil on tehtud dbml andmemudeli fail, mis aga pole mõeldud üldsegi selleks, et selle põhjal andmebaasi genereerida. Võibolla kuidagi see õnnestuks, aga sellist funktsionaalsust .net ametlikult küll ei toeta.&lt;br /&gt;
&lt;br /&gt;
Teine asi, mis oleks võinud teistmoodi olla, on valitud projekti tüüp. Kui juba WCF valisite teenuskihi jaoks, oleks võinud selle jaoks eraldi WCF projekti teha, hetkel on seal palju üleliigset asp.net träni kaasas, mis ei puutu üldse teenuskihti.&lt;br /&gt;
&lt;br /&gt;
Liigudes edasi koodini ja meetoditeni, märkasin et tagastate teenuskihis alati klasse, isegi siis kui toimub millegi sisestus &amp;quot;teie andmebaasi&amp;quot; ja tagasi oleks vaja saada vaid booleani, et kas asi õnnestus või mitte. Suure teenuskihi kasutusel lisaks see kindlasti suurt koormust, kui lihtsa booli tagastamise asemel on vastuseks mingi suuremat sorti klass. Silma jäi ka järgnev koht koodis:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
KasutajaKirjeClass KKC = new KasutajaKirjeClass();&lt;br /&gt;
        if ( KKC.kontrolliKohvikuKasutaja(kohvikID, kasutajaID) == true)&lt;br /&gt;
        {&lt;br /&gt;
            try&lt;br /&gt;
            {&lt;br /&gt;
                kont.ExecuteCommand(&amp;quot;insert into Menyy(fkKohvik_id,alates,kuni) values(&#039;&amp;quot; + kohvikID + &amp;quot;&#039;,&#039;&amp;quot; + alates.ToString(&amp;quot;MM.dd.yyyy&amp;quot;) + &amp;quot;&#039;,&#039;&amp;quot; + kuni.ToString(&amp;quot;MM.dd.yyyy&amp;quot;) + &amp;quot;&#039;);&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
                return true;&lt;br /&gt;
            }&lt;br /&gt;
            catch&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        else {&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
Kontrolli sisu on siin:&lt;br /&gt;
&lt;br /&gt;
 public bool kontrolliKohvikuKasutaja(int kohvikID, int kasutajaID)&lt;br /&gt;
    {&lt;br /&gt;
        var kasutajaOlemas = kont.KohvikuKasutajas.Where(x=&amp;gt;x.fkKohvik_ID==kohvikID &amp;amp;&amp;amp; x.fkKasutaja_ID == kasutajaID).SingleOrDefault();&lt;br /&gt;
&lt;br /&gt;
        if (kasutajaOlemas == null)&lt;br /&gt;
        {&lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hetkel toimib süsteem nii, et kui antud kohviku id ja kasutaja id-ga kasutaja on andmebaasis, siis kasutajaOlemas muutuja saab selle objekti endale (mis pole kaugeltki turvaline autentimine) ja järgneva tingimuse põhjal tagastatakse false, seega väljakutsuvas meetodis ei täideta sql käsku. Käsk aga täidetakse sellisel juhul, kui andmebaasist ei leitud sellist kasutajat, kas mitte see süsteem vastupidi ei peaks töötama !? Sama asi oli veel mitmes kohas. Oleksite võinud ka valida ühe stiili, kas linq kasutamise või siis ainult sql käsud, hetkel läbisegi nii ühte kui teist kasutatud.&lt;br /&gt;
&lt;br /&gt;
Head oli ka, see asi mis teil tehtud, oli tähtajaks valmis.&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=27184</id>
		<title>Meeskond &quot;FoodWars&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=27184"/>
		<updated>2011-04-17T19:13:07Z</updated>

		<summary type="html">&lt;p&gt;Rruga: /* Logi */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Idee ==&lt;br /&gt;
Meie tiimil on plaanis teha internetipõhine söökla menüü süsteem (aluseks IT Kolledži kohvik, aga suunitlus selline, et kõik kohvikud/sööklad saaksid teha endale kasutajakonto ja hakata rakendust kasutama), kust saaks jälgida menüüd, mis sööke saab süüa, mis veel järgi on, kasutajatel on ka võimalus sööke hinnata (stiilis &amp;quot;meeldib&amp;quot;, &amp;quot;ei meeldi&amp;quot; nagu Facebook-is).&lt;br /&gt;
&lt;br /&gt;
Kohvikupidaja Teele soovid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* elektroonilisest menüüst asju kustutada, isegi siis kui asja peaks olema teoreetiliselt alles, aga tegelikult on asi otsas.&lt;br /&gt;
* elektrikatkestuse korral jääb menüü püsima. Ta peab teadma hindu mistahes olukorras.&lt;br /&gt;
* menüül näidatakse automaatselt ka ISIC kaardi omanike soodushinnad&lt;br /&gt;
* süsteem toetab ka poole portsjoni müümist.&lt;br /&gt;
&lt;br /&gt;
Linnar Viigi soovid/visioonid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* kõik oleks ka internetist kättesaadav, peale LCD ekraani, mis kajastab menüüd sööklas.&lt;br /&gt;
* aluseks facebook, kus siis söögid oleks nagu facebook-i alateemad.&lt;br /&gt;
* saab sööke hinnata, kommenteerida (täna oli väga maitsev praad).&lt;br /&gt;
* kasutajad saaks vaadata, mis menüüs on (ka järgmisel nädalal) ja mitu portsu veel alles on.&lt;br /&gt;
* kasutajad saaksid välja pakkuda menüüsid.&lt;br /&gt;
* erinevate söögikohtade kasutajad saaksid omavahel muljeid jagada.&lt;br /&gt;
* kuu aja aktiivsemad saavad prii lõuna.&lt;br /&gt;
* mingil ajal võib olla &amp;quot;happy hour&amp;quot; (enne sulgemist saab odavamalt).&lt;br /&gt;
* piiranguks on see, et toitu broneerida ei saa &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vaba tarkvara kasutamise võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Antud projekti puhul oleks võimalik kasutada [http://www.postgresql.org/ PostgreSQL] andmebaasi (vt. lisaks http://en.wikipedia.org/wiki/PostgreSQL ) Microsoft SQL Server&#039;i asemel. See võiks anda kasutajale võimaluse valida .NET ning [http://www.mono-project.com/ Mono] (vt. lisaks http://en.wikipedia.org/wiki/Mono_(software) ) platvormide vahel. Sel viisil oleks kliendil võimalik Microsoft&#039;i platvormi kõrval valida tõenäoliselt soodsam vaba tarkvara platvorm. Andmebaasi lõplik valik pole hetkel veel otsustatud.&lt;br /&gt;
&lt;br /&gt;
== Meeskond ja tööjaotus==&lt;br /&gt;
* Kristjan Stolin - projektijuht, suhtlus kliendiga, XML, wiki, teenuskihtide progemine, rollide halduse lehe progemine&lt;br /&gt;
* Ilmar Telga - XML, kliendiga suhtlus, wiki, teenuskihtide progemine, lõpprakenduste menüüd, login&lt;br /&gt;
* Rauno Rüga - XML, XSLT, andmebaasi loomine, wiki, mobiilirakendus, statistika&lt;br /&gt;
* Lauri Kermas - teenuskihtide ehitamine, wiki, login, kommenteerimise võimaluste progemine&lt;br /&gt;
&lt;br /&gt;
== XML Fail ==&lt;br /&gt;
=== XML ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Toidud&amp;gt;&lt;br /&gt;
  &amp;lt;Toit&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduNimetus&amp;gt;Viineri kaste&amp;lt;/ToiduNimetus&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduLiik&amp;gt;Praad&amp;lt;/ToiduLiik&amp;gt;&lt;br /&gt;
    &amp;lt;OlemasolevatYhikut&amp;gt;5&amp;lt;/OlemasolevatYhikut&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduKogus&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Poolportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;2011&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;1&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;9&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;15&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;07&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;23&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;        &lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.15&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;0&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;0&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;0&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;00&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;00&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;00&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Täisportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.80&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
    &amp;lt;/ToiduKogus&amp;gt;&lt;br /&gt;
    &amp;lt;Kommentaarid&amp;gt;&lt;br /&gt;
      &amp;lt;Kommentaar&amp;gt;&lt;br /&gt;
        &amp;lt;Saatja&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaNimi&amp;gt;Kristjan&amp;lt;/SaatjaNimi&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaRoll&amp;gt;Tudeng&amp;lt;/SaatjaRoll&amp;gt;&lt;br /&gt;
        &amp;lt;/Saatja&amp;gt;&lt;br /&gt;
        &amp;lt;Sisu&amp;gt;Minu lemmik toit ! Kui algebra tund ei hakkaks, sööks veel 5 portsjonit.&amp;lt;/Sisu&amp;gt;&lt;br /&gt;
      &amp;lt;/Kommentaar&amp;gt;&lt;br /&gt;
    &amp;lt;/Kommentaarid&amp;gt;&lt;br /&gt;
  &amp;lt;/Toit&amp;gt;&lt;br /&gt;
&amp;lt;/Toidud&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kommentaariks siis niipalju, et meie näide on ilma kohviku osata, selleks et näidet mitte liiga suureks ajada.&lt;br /&gt;
&lt;br /&gt;
Ka on meil moment puudu ID väljad, mis on igasugu andmebaasiga suhtlemiseks hädavajalikud, samas siin näidises palju juurde ei anna.&lt;br /&gt;
&lt;br /&gt;
Asja tegemisel avastasime, et põhiliseks arusaamatuse kohaks on toitude erinevad kogused (ehk siis pool portsjonit, suur / väike ja muud võrdlevad ühikud). Esimese võimalusena kaalusime teha lihtsalt täiesti eraldi toidud kõige kohta, stiilis &amp;quot;väike viineripraad&amp;quot; ja &amp;quot;suur viineripraad&amp;quot;. Kahjuks see variant ei kõlbaks eriti hästi, kuna need erinevad portsjonid kasutavad ikkagi samu materjale ja kui me peaks mingi süsteemiga näitama kui palju portsjoneid alles on. Sööklast näiteks pakuti et väike portsjon kasutab materjale kuskil 0.8 suure portsjoni ulatuses, ehk see suhtarv peaks olema kasutaja poolt (kohvikupidaja, restoraniomanik) ise sätitav. &lt;br /&gt;
&lt;br /&gt;
Tänu sellele sai meie süsteemi alustalaks siiski Toit, millel on oma Portsjonid siis erinevate hindade ja soodustustega. Moment pole meil ka Portsjoni XML osas toodud ära seost kogusega. (Kui palju ühe portsjoni lisamine/müümine peaks toidu üldkogust muutma).&lt;br /&gt;
&lt;br /&gt;
Kommenteerida saab meil moment toitu ennast, mitte eraldi portsjonit. Isegi kui kasutajad tahavad lisada kommentaare stiilis &amp;quot;See väike supp oli tõesti väga väike&amp;quot;, ei soovi nad seda ilmselt eraldi portsjoni alla panna. Tulevikus peaks kindlasti olema ka võimalus pigem kommenteerida üldisemalt (Kohvikut ennast, söögipaiku üldse), kui spetsiifilisemalt (Väikse prae kaste lisandi kohta).&lt;br /&gt;
&lt;br /&gt;
=== XML Schema ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Toidud&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Toit&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduNimetus&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;OlemasolevatYhikut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduKogus&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:choice maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;PortsjoniLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;Myygiaeg&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Aasta&amp;quot; type=&amp;quot;xs:unsignedShort&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Kuu&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Paev&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Tund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Minut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Sekund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;ToiduHind&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Eurohind&amp;quot; type=&amp;quot;xs:decimal&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Soodustus&amp;quot;&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseProtsent&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:choice&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Kommentaarid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Saatja&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaNimi&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaRoll&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Sisu&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
  &amp;lt;h2&amp;gt;Kohvikus müüdavad toidud&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr bgcolor=&amp;quot;#9acd32&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Veel alles&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Portsjon&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Müügiaeg&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustuse liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Kommentaar(id)&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;Toidud/Toit&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduNimetus&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduLiik&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;OlemasolevatYhikut&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;PortsjoniLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Paev&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Kuu&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Aasta&amp;quot; /&amp;gt; &amp;amp;nbsp;  &lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Tund&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Minut&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Sekund&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Eurohind&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseProtsent&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Kommentaarid/Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Sisu&amp;quot; /&amp;gt;&amp;amp;nbsp;(&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaRoll&amp;quot; /&amp;gt;&amp;amp;nbsp;&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaNimi&amp;quot; /&amp;gt;)&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XSLT poolt loodud tulemus on järgnev (lisasin veel kaks toitu XML faili, siin wiki lehel on ruumi kokkuhoiuks vaid 1 toit toitude listis):&lt;br /&gt;
[[File:Xslt.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arhitektuur ==&lt;br /&gt;
&lt;br /&gt;
Süsteem oli vahepeal plaanis ehitada kolmekihilise arhitektuuriga ([http://en.wikipedia.org/wiki/Multitier_architecture#Three-tier_architecture Three-tier architecture]). See peaks lihtsustama süsteemi haldamist ja laiendamist tulevikus. Aga kuna selle jaoks otsest vajadust polenud ja oleks vaid süsteemi keeruliseks ajanud, siis loobusime sellest.&lt;br /&gt;
&lt;br /&gt;
[[Image:three-tier.png|thumb|center|alt=Arhitektuuri skeem.|Arhitektuuri skeem.]]&lt;br /&gt;
&lt;br /&gt;
== Veebiteenus ==&lt;br /&gt;
===Andmemudel===&lt;br /&gt;
[[Image:KohvikuAndmemudel.jpg|thumb|right|alt=Kohviku projekti andmemudel|Andmemudel]]&lt;br /&gt;
Enne veebiteenuse meetodite kirjeldamist koostasime andmemudeli. Loodud andmemudeli põhjal lõime andmebaasi vajalike tabelite ja atribuutidega. Andmemudeli peal on rohelisega tähistatud tabelid, mis on oseselt seotud kohviku valdajaga ja mida WPF rakenduse jaoks kindlasti vaja on. Ülejäänud helesinised tabelid on vajalikud kasutajate võimaluste jaoks. Lisaks on andmemudelil kaks tabelit, mis pole teisega seotud, need on süsteemi administraatori jaoks, et oleks ülevaade, mis rakendused teenust enim kasutavad ning mis meetodeid kõige rohkem välja kutsutakse.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Teenuskihis olevad meetodid===&lt;br /&gt;
&lt;br /&gt;
====Kasutajatega seotud meetodid:====&lt;br /&gt;
*SaidiKasutajaLiik() - Tagastab antud kasutaja ID järgi kasutaja liigi nimetuse&lt;br /&gt;
*KustutaSaidiKasutaja() - Kustutab antud kasutaja ID järgi kasutaja tabelis Kasutaja&lt;br /&gt;
*AnnaKoikSaidiKasutajad() - Tagastab kõik kirjed tabelist Kasutaja&lt;br /&gt;
*AnnaKoikKohvikuKasutajad() - Tagastab antud kohviku ID järgi kõik kohviku kasutajad massiivina&lt;br /&gt;
*MuudaSaidiKasutajaLiik() - Muudab antud kasutaja ID järgi kasutaja liigi tabelis Kasutaja&lt;br /&gt;
*KoikLubatudSaidiKasutajaTyybid() - Tagastab andmebaasi kõik võimalikud kohviku kasutaja rollid (id-d ja nimed), muud andmed jäävad tühjaks&lt;br /&gt;
*KoikLubatudKohvikuRollid() - Tagastab andmebaasi kõik võimalikud site kasutaja rollid (id-d ja nimed), kohviku_id jääb tühjaks&lt;br /&gt;
*KasutajaKohvikuRollid() - Tagastab antud kasutaja ID järgi kõik kasutaja rollid kõikides kohvikutes&lt;br /&gt;
*MuudaKohvikuKasutajaRoll() - Muudab antud kasutaja ID ja kohviku ID järgi kasutaja rolli kohvikus, kui rolli pole, siis tekitatakse uus&lt;br /&gt;
*SaidiKasutajaLiikID() - Tagastab antud kasutaja ID järgi kasutaja liigi ID&lt;br /&gt;
*KohvikuKasutajaLiikID() - Tagastab antud kasutaja ID ja kohviku ID järgi kohviku kasutaja rolli ID&lt;br /&gt;
*AnnaKasutajaMeiliAadress() - Tagastab antud kasutaja nime alusel kasutaja meiliaadressi&lt;br /&gt;
*AnnaKasutajaIdJargi() - Tagastab kasutajanime kasutaja ID järgi&lt;br /&gt;
*AuthendiKasutaja() - Autendib kasutaja, õnnestumisel tagastab kasutaja ID, ebaõnnestumisel null &lt;br /&gt;
*RegistreeriKasutaja() - Registreerib kasutaja andmebaasi ja tagastab true kui kasutaja loomine õnnestus&lt;br /&gt;
&lt;br /&gt;
====Menüüga seotud meetodid====&lt;br /&gt;
*LisaArtikkelMenuuse() - Seob menüüartikli ja menüü&lt;br /&gt;
*LisaKohvikuleMenuu() - Seob menüü ja kohviku&lt;br /&gt;
*TagastabMenuuMuutujad() - Tagastab menüü järgi kas inimesel oleks õigust seda muuta&lt;br /&gt;
*KustutaMenuuJaKohvikuSeos() - Kustutab menüü ja kohviku seose&lt;br /&gt;
*LisaUusMenuu() - Teeb uue menüü, seob selle kohvikuga, kui kohviku ID on parameetrina kaasa antud&lt;br /&gt;
*MenuuKohvikuIdJargi() - Tagastab kohviku ID järgi kohviku tänaste või mitte tänaste menüüde ID-de massiivi&lt;br /&gt;
*LisaMenuuArtikkelMenuuse() - Sisestab antud müügiartikli menüüsse, mille ID on menyy_id&lt;br /&gt;
*KustutaMenuuArtikkel() - Kustutab müügiartikli ID ja menüü ID järgi müügiartikli menüüst&lt;br /&gt;
*TagastaMenuuArtiklid() - Tagastab menüü ID järgi menüüs olevad müügiartiklid&lt;br /&gt;
*VahetaMenuuArtiklit() - Muudab antud müügiartikli tabelis Myygiartikkel&lt;br /&gt;
*MenuuNimetus() - Tagastab menüü ID järgi menüü nimetuse&lt;br /&gt;
*AnnaMuugiartiklidMidaMenuusPole() - Tagastab müügiartiklid, mis pole veel menüüs, kus on juba müügiartiklid, mille IDd on antud massiivis&lt;br /&gt;
*AnnaMenuuNimed() - Tagastab kõigi menüüde nimetused tabelis Menyy&lt;br /&gt;
&lt;br /&gt;
====Kohvikutest üldiselt====&lt;br /&gt;
*KohvikuteNimed() - Tagastab kõigi kohvikute nimed massiivina&lt;br /&gt;
*KohvikuNimiIdJargi() - Tagastab antud kohviku ID järgi kohviku nime&lt;br /&gt;
*AnnaKoikOmanikuKohvikud() - Tagastab antud omaniku ID järgi kõik omaniku kohvikute ID-d massiivina&lt;br /&gt;
*Kohvikud() - Tagastab kõik kohvikute kirjed tabelist Kohvik&lt;br /&gt;
*KohvikuteArv() - Tagastab kõigi kohvikute arvu&lt;br /&gt;
*AnnaKaubad() - Tagastab kõik kaubad tabelist Kaup&lt;br /&gt;
*LisaKaup() - Lisab kauba kaupade nimekirja&lt;br /&gt;
*LisaKohvik() - Uue kohviku lisamine&lt;br /&gt;
&lt;br /&gt;
====Kommentaaridega seotud meetodid:====&lt;br /&gt;
*KohvikuKommentaarideArv() - Kohviku kommentaaride arv&lt;br /&gt;
*AnnaKohvikuKommentaarid() - Tagastab kommentaarid lehtede kaupa&lt;br /&gt;
*AnnaKohvikuKommentaarideHinded() - Tagastab kommentaaride jaoks võimalikud hinded koos kirjeldustega&lt;br /&gt;
*LisaKohvikuKommentaar() - Lisab kohviku kommentaari&lt;br /&gt;
&lt;br /&gt;
====Statistikaga seotud meetodid:====&lt;br /&gt;
*StatistikaRakendusteKohtaTana() - Tagastab rakenduse nimed ja nende vastu tehtud päringud tänasel päeval&lt;br /&gt;
*StatistikaRakendusteKohtaViimaneNadal() - Tagastab rakenduse nimed ja nende vastu tehtud päringud viimase nädala jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaSellelKuul() - Tagastab rakenduse nimed ja nende vastu tehtud päringud selle kuu jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaKokku() - Tagastab rakenduse nimed ja nende vastu tehtud päringud kogu aja vältel&lt;br /&gt;
*StatistikaMeetoditeKohtaTana() - Meetod leiab tänase päeva jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaViimaneNadal() - Meetod leiab viimase nädala jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaSellelKuul() - Meetod leiab kuu jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaKokku() - Meetod leiab kogu aja vältel kasutatud meetodid ja paringute arvu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebiteenuse projekti (WCF + andmebaas) saab siit: http://enos.itcollege.ee/~rruga/VRII/Teenusekiht.zip&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : CMS ==&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Veebirakendus ==&lt;br /&gt;
&lt;br /&gt;
== Meeskonna kokkuvõttev aruanne ==&lt;br /&gt;
&lt;br /&gt;
== Logi ==&lt;br /&gt;
=== 17. aprill ===&lt;br /&gt;
Wikilehe täiendamine andmemudeli ja veebiteenuse meetodite kirjeldusega.&lt;br /&gt;
&lt;br /&gt;
=== 9. aprill ===&lt;br /&gt;
Tegime rollide halduse, münüüde muutmise vormi. Meili saatmine registreerimisel. Toimus andmebaasi andmemudeli väike muutus. &lt;br /&gt;
&lt;br /&gt;
=== 30. märts ===&lt;br /&gt;
Tehtud on kohviku menüü ja kohviku kommenteerimise leht.&lt;br /&gt;
&lt;br /&gt;
=== 26. märts ===&lt;br /&gt;
Tehtud on esimesed veebiteenuse meetodid ja veebirakendusele kasutajate registreerimine.&lt;br /&gt;
&lt;br /&gt;
=== 10. märts ===&lt;br /&gt;
Väikese häki abil õnnestus kohviku kassa arvutis saada tööle üks Forms-i proovirakendus.&lt;br /&gt;
&lt;br /&gt;
=== 8. märts ===&lt;br /&gt;
Kuna kassa-aparaadis on operatsioonisüsteemiks Windows XP ja raud on 1.99 GHz, 256 RAM siis peaks saama&lt;br /&gt;
prototüübiks teha sinna peale rakenduse, mille ülesandeks menüüga tegelemine. &lt;br /&gt;
&lt;br /&gt;
=== 7. märts ===&lt;br /&gt;
Linnar Viik andis meile järgmist nõu: tuleb eristada kahte asja - see, mis peab valmis saama (&#039;&#039;must&#039;&#039;) ja see, mis oleks tore (&#039;&#039;nice to have&#039;&#039;). Valmis peab saama menüüga ekraan seinal (esialgu kasutajale prototüübi näitamiseks kasvõi näiteks PowerPoint-i abil tehtud). Alles siis kui on kasutajalt positiivne tagasiside saadud, võib edasi minna reaalse tarkvaralahenduse loomisega. Kui ka see on valmis ja kasutaja sellega rahul võib juurde mõelda &#039;&#039;nice to have&#039;&#039; asju (näiteks eelinfo järgmise päeva menüü kohta, üliõpilasesinduse sõnumite riba ja muid asju).&lt;br /&gt;
&lt;br /&gt;
Saime teada, et kui tahame, et meie loodav süsteem suhtleks IT Kohviku kassasüsteemiga, siis tuleb selle süsteemi tootjatega ühendust võtta ja nendega konsulteerida.&lt;br /&gt;
&lt;br /&gt;
=== 19.Veebruar ===&lt;br /&gt;
*Valmis XSLT fail.&lt;br /&gt;
&lt;br /&gt;
=== 9.Veebruar ===&lt;br /&gt;
* Esmane versioon XML ja XML Schemast olemas&lt;br /&gt;
* Tekkis küsimus kas XSLT faili tuleb käsitsi tekitada või automaatselt.&lt;br /&gt;
* Küsimus oli ka kas lahendasime portsjoni asja mõistlikult või oleks mõni teine lähenemine parem olnud.&lt;br /&gt;
* Küsimus, kas XML fail on liiga üle pingutatud või sobiva keerukusega&lt;br /&gt;
&lt;br /&gt;
=== 7. Veebruar ===&lt;br /&gt;
* Võtsime õppejõu poolt pakutud ideest kohe kinni, sest me eelistame teha praktilist asja, mida saab kasutada ja mille kasutamist saame ka iga päev jälgida. &lt;br /&gt;
* Esimese asjana otsustasime välja uurida mida meie &amp;quot;kliendid&amp;quot; (süsteemi tellijad) meilt ootavad. (Soovid idee punkti all)&lt;br /&gt;
* Valminud on lihtne teenusest ja klientidest koosnev süsteemi testmudel.&lt;br /&gt;
&lt;br /&gt;
[[Category: Võrgurakendused II: hajussüsteemide ehitamine]]&lt;br /&gt;
[[Category: Veebirakenduste loomine ASP.NET abil]]&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=27183</id>
		<title>Meeskond &quot;FoodWars&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=27183"/>
		<updated>2011-04-17T19:12:06Z</updated>

		<summary type="html">&lt;p&gt;Rruga: /* Veebiteenus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Idee ==&lt;br /&gt;
Meie tiimil on plaanis teha internetipõhine söökla menüü süsteem (aluseks IT Kolledži kohvik, aga suunitlus selline, et kõik kohvikud/sööklad saaksid teha endale kasutajakonto ja hakata rakendust kasutama), kust saaks jälgida menüüd, mis sööke saab süüa, mis veel järgi on, kasutajatel on ka võimalus sööke hinnata (stiilis &amp;quot;meeldib&amp;quot;, &amp;quot;ei meeldi&amp;quot; nagu Facebook-is).&lt;br /&gt;
&lt;br /&gt;
Kohvikupidaja Teele soovid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* elektroonilisest menüüst asju kustutada, isegi siis kui asja peaks olema teoreetiliselt alles, aga tegelikult on asi otsas.&lt;br /&gt;
* elektrikatkestuse korral jääb menüü püsima. Ta peab teadma hindu mistahes olukorras.&lt;br /&gt;
* menüül näidatakse automaatselt ka ISIC kaardi omanike soodushinnad&lt;br /&gt;
* süsteem toetab ka poole portsjoni müümist.&lt;br /&gt;
&lt;br /&gt;
Linnar Viigi soovid/visioonid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* kõik oleks ka internetist kättesaadav, peale LCD ekraani, mis kajastab menüüd sööklas.&lt;br /&gt;
* aluseks facebook, kus siis söögid oleks nagu facebook-i alateemad.&lt;br /&gt;
* saab sööke hinnata, kommenteerida (täna oli väga maitsev praad).&lt;br /&gt;
* kasutajad saaks vaadata, mis menüüs on (ka järgmisel nädalal) ja mitu portsu veel alles on.&lt;br /&gt;
* kasutajad saaksid välja pakkuda menüüsid.&lt;br /&gt;
* erinevate söögikohtade kasutajad saaksid omavahel muljeid jagada.&lt;br /&gt;
* kuu aja aktiivsemad saavad prii lõuna.&lt;br /&gt;
* mingil ajal võib olla &amp;quot;happy hour&amp;quot; (enne sulgemist saab odavamalt).&lt;br /&gt;
* piiranguks on see, et toitu broneerida ei saa &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vaba tarkvara kasutamise võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Antud projekti puhul oleks võimalik kasutada [http://www.postgresql.org/ PostgreSQL] andmebaasi (vt. lisaks http://en.wikipedia.org/wiki/PostgreSQL ) Microsoft SQL Server&#039;i asemel. See võiks anda kasutajale võimaluse valida .NET ning [http://www.mono-project.com/ Mono] (vt. lisaks http://en.wikipedia.org/wiki/Mono_(software) ) platvormide vahel. Sel viisil oleks kliendil võimalik Microsoft&#039;i platvormi kõrval valida tõenäoliselt soodsam vaba tarkvara platvorm. Andmebaasi lõplik valik pole hetkel veel otsustatud.&lt;br /&gt;
&lt;br /&gt;
== Meeskond ja tööjaotus==&lt;br /&gt;
* Kristjan Stolin - projektijuht, suhtlus kliendiga, XML, wiki, teenuskihtide progemine, rollide halduse lehe progemine&lt;br /&gt;
* Ilmar Telga - XML, kliendiga suhtlus, wiki, teenuskihtide progemine, lõpprakenduste menüüd, login&lt;br /&gt;
* Rauno Rüga - XML, XSLT, andmebaasi loomine, wiki, mobiilirakendus, statistika&lt;br /&gt;
* Lauri Kermas - teenuskihtide ehitamine, wiki, login, kommenteerimise võimaluste progemine&lt;br /&gt;
&lt;br /&gt;
== XML Fail ==&lt;br /&gt;
=== XML ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Toidud&amp;gt;&lt;br /&gt;
  &amp;lt;Toit&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduNimetus&amp;gt;Viineri kaste&amp;lt;/ToiduNimetus&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduLiik&amp;gt;Praad&amp;lt;/ToiduLiik&amp;gt;&lt;br /&gt;
    &amp;lt;OlemasolevatYhikut&amp;gt;5&amp;lt;/OlemasolevatYhikut&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduKogus&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Poolportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;2011&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;1&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;9&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;15&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;07&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;23&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;        &lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.15&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;0&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;0&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;0&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;00&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;00&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;00&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Täisportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.80&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
    &amp;lt;/ToiduKogus&amp;gt;&lt;br /&gt;
    &amp;lt;Kommentaarid&amp;gt;&lt;br /&gt;
      &amp;lt;Kommentaar&amp;gt;&lt;br /&gt;
        &amp;lt;Saatja&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaNimi&amp;gt;Kristjan&amp;lt;/SaatjaNimi&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaRoll&amp;gt;Tudeng&amp;lt;/SaatjaRoll&amp;gt;&lt;br /&gt;
        &amp;lt;/Saatja&amp;gt;&lt;br /&gt;
        &amp;lt;Sisu&amp;gt;Minu lemmik toit ! Kui algebra tund ei hakkaks, sööks veel 5 portsjonit.&amp;lt;/Sisu&amp;gt;&lt;br /&gt;
      &amp;lt;/Kommentaar&amp;gt;&lt;br /&gt;
    &amp;lt;/Kommentaarid&amp;gt;&lt;br /&gt;
  &amp;lt;/Toit&amp;gt;&lt;br /&gt;
&amp;lt;/Toidud&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kommentaariks siis niipalju, et meie näide on ilma kohviku osata, selleks et näidet mitte liiga suureks ajada.&lt;br /&gt;
&lt;br /&gt;
Ka on meil moment puudu ID väljad, mis on igasugu andmebaasiga suhtlemiseks hädavajalikud, samas siin näidises palju juurde ei anna.&lt;br /&gt;
&lt;br /&gt;
Asja tegemisel avastasime, et põhiliseks arusaamatuse kohaks on toitude erinevad kogused (ehk siis pool portsjonit, suur / väike ja muud võrdlevad ühikud). Esimese võimalusena kaalusime teha lihtsalt täiesti eraldi toidud kõige kohta, stiilis &amp;quot;väike viineripraad&amp;quot; ja &amp;quot;suur viineripraad&amp;quot;. Kahjuks see variant ei kõlbaks eriti hästi, kuna need erinevad portsjonid kasutavad ikkagi samu materjale ja kui me peaks mingi süsteemiga näitama kui palju portsjoneid alles on. Sööklast näiteks pakuti et väike portsjon kasutab materjale kuskil 0.8 suure portsjoni ulatuses, ehk see suhtarv peaks olema kasutaja poolt (kohvikupidaja, restoraniomanik) ise sätitav. &lt;br /&gt;
&lt;br /&gt;
Tänu sellele sai meie süsteemi alustalaks siiski Toit, millel on oma Portsjonid siis erinevate hindade ja soodustustega. Moment pole meil ka Portsjoni XML osas toodud ära seost kogusega. (Kui palju ühe portsjoni lisamine/müümine peaks toidu üldkogust muutma).&lt;br /&gt;
&lt;br /&gt;
Kommenteerida saab meil moment toitu ennast, mitte eraldi portsjonit. Isegi kui kasutajad tahavad lisada kommentaare stiilis &amp;quot;See väike supp oli tõesti väga väike&amp;quot;, ei soovi nad seda ilmselt eraldi portsjoni alla panna. Tulevikus peaks kindlasti olema ka võimalus pigem kommenteerida üldisemalt (Kohvikut ennast, söögipaiku üldse), kui spetsiifilisemalt (Väikse prae kaste lisandi kohta).&lt;br /&gt;
&lt;br /&gt;
=== XML Schema ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Toidud&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Toit&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduNimetus&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;OlemasolevatYhikut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduKogus&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:choice maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;PortsjoniLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;Myygiaeg&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Aasta&amp;quot; type=&amp;quot;xs:unsignedShort&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Kuu&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Paev&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Tund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Minut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Sekund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;ToiduHind&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Eurohind&amp;quot; type=&amp;quot;xs:decimal&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Soodustus&amp;quot;&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseProtsent&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:choice&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Kommentaarid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Saatja&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaNimi&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaRoll&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Sisu&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
  &amp;lt;h2&amp;gt;Kohvikus müüdavad toidud&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr bgcolor=&amp;quot;#9acd32&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Veel alles&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Portsjon&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Müügiaeg&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustuse liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Kommentaar(id)&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;Toidud/Toit&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduNimetus&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduLiik&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;OlemasolevatYhikut&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;PortsjoniLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Paev&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Kuu&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Aasta&amp;quot; /&amp;gt; &amp;amp;nbsp;  &lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Tund&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Minut&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Sekund&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Eurohind&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseProtsent&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Kommentaarid/Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Sisu&amp;quot; /&amp;gt;&amp;amp;nbsp;(&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaRoll&amp;quot; /&amp;gt;&amp;amp;nbsp;&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaNimi&amp;quot; /&amp;gt;)&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XSLT poolt loodud tulemus on järgnev (lisasin veel kaks toitu XML faili, siin wiki lehel on ruumi kokkuhoiuks vaid 1 toit toitude listis):&lt;br /&gt;
[[File:Xslt.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arhitektuur ==&lt;br /&gt;
&lt;br /&gt;
Süsteem oli vahepeal plaanis ehitada kolmekihilise arhitektuuriga ([http://en.wikipedia.org/wiki/Multitier_architecture#Three-tier_architecture Three-tier architecture]). See peaks lihtsustama süsteemi haldamist ja laiendamist tulevikus. Aga kuna selle jaoks otsest vajadust polenud ja oleks vaid süsteemi keeruliseks ajanud, siis loobusime sellest.&lt;br /&gt;
&lt;br /&gt;
[[Image:three-tier.png|thumb|center|alt=Arhitektuuri skeem.|Arhitektuuri skeem.]]&lt;br /&gt;
&lt;br /&gt;
== Veebiteenus ==&lt;br /&gt;
===Andmemudel===&lt;br /&gt;
[[Image:KohvikuAndmemudel.jpg|thumb|right|alt=Kohviku projekti andmemudel|Andmemudel]]&lt;br /&gt;
Enne veebiteenuse meetodite kirjeldamist koostasime andmemudeli. Loodud andmemudeli põhjal lõime andmebaasi vajalike tabelite ja atribuutidega. Andmemudeli peal on rohelisega tähistatud tabelid, mis on oseselt seotud kohviku valdajaga ja mida WPF rakenduse jaoks kindlasti vaja on. Ülejäänud helesinised tabelid on vajalikud kasutajate võimaluste jaoks. Lisaks on andmemudelil kaks tabelit, mis pole teisega seotud, need on süsteemi administraatori jaoks, et oleks ülevaade, mis rakendused teenust enim kasutavad ning mis meetodeid kõige rohkem välja kutsutakse.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Teenuskihis olevad meetodid===&lt;br /&gt;
&lt;br /&gt;
====Kasutajatega seotud meetodid:====&lt;br /&gt;
*SaidiKasutajaLiik() - Tagastab antud kasutaja ID järgi kasutaja liigi nimetuse&lt;br /&gt;
*KustutaSaidiKasutaja() - Kustutab antud kasutaja ID järgi kasutaja tabelis Kasutaja&lt;br /&gt;
*AnnaKoikSaidiKasutajad() - Tagastab kõik kirjed tabelist Kasutaja&lt;br /&gt;
*AnnaKoikKohvikuKasutajad() - Tagastab antud kohviku ID järgi kõik kohviku kasutajad massiivina&lt;br /&gt;
*MuudaSaidiKasutajaLiik() - Muudab antud kasutaja ID järgi kasutaja liigi tabelis Kasutaja&lt;br /&gt;
*KoikLubatudSaidiKasutajaTyybid() - Tagastab andmebaasi kõik võimalikud kohviku kasutaja rollid (id-d ja nimed), muud andmed jäävad tühjaks&lt;br /&gt;
*KoikLubatudKohvikuRollid() - Tagastab andmebaasi kõik võimalikud site kasutaja rollid (id-d ja nimed), kohviku_id jääb tühjaks&lt;br /&gt;
*KasutajaKohvikuRollid() - Tagastab antud kasutaja ID järgi kõik kasutaja rollid kõikides kohvikutes&lt;br /&gt;
*MuudaKohvikuKasutajaRoll() - Muudab antud kasutaja ID ja kohviku ID järgi kasutaja rolli kohvikus, kui rolli pole, siis tekitatakse uus&lt;br /&gt;
*SaidiKasutajaLiikID() - Tagastab antud kasutaja ID järgi kasutaja liigi ID&lt;br /&gt;
*KohvikuKasutajaLiikID() - Tagastab antud kasutaja ID ja kohviku ID järgi kohviku kasutaja rolli ID&lt;br /&gt;
*AnnaKasutajaMeiliAadress() - Tagastab antud kasutaja nime alusel kasutaja meiliaadressi&lt;br /&gt;
*AnnaKasutajaIdJargi() - Tagastab kasutajanime kasutaja ID järgi&lt;br /&gt;
*AuthendiKasutaja() - Autendib kasutaja, õnnestumisel tagastab kasutaja ID, ebaõnnestumisel null &lt;br /&gt;
*RegistreeriKasutaja() - Registreerib kasutaja andmebaasi ja tagastab true kui kasutaja loomine õnnestus&lt;br /&gt;
&lt;br /&gt;
====Menüüga seotud meetodid====&lt;br /&gt;
*LisaArtikkelMenuuse() - Seob menüüartikli ja menüü&lt;br /&gt;
*LisaKohvikuleMenuu() - Seob menüü ja kohviku&lt;br /&gt;
*TagastabMenuuMuutujad() - Tagastab menüü järgi kas inimesel oleks õigust seda muuta&lt;br /&gt;
*KustutaMenuuJaKohvikuSeos() - Kustutab menüü ja kohviku seose&lt;br /&gt;
*LisaUusMenuu() - Teeb uue menüü, seob selle kohvikuga, kui kohviku ID on parameetrina kaasa antud&lt;br /&gt;
*MenuuKohvikuIdJargi() - Tagastab kohviku ID järgi kohviku tänaste või mitte tänaste menüüde ID-de massiivi&lt;br /&gt;
*LisaMenuuArtikkelMenuuse() - Sisestab antud müügiartikli menüüsse, mille ID on menyy_id&lt;br /&gt;
*KustutaMenuuArtikkel() - Kustutab müügiartikli ID ja menüü ID järgi müügiartikli menüüst&lt;br /&gt;
*TagastaMenuuArtiklid() - Tagastab menüü ID järgi menüüs olevad müügiartiklid&lt;br /&gt;
*VahetaMenuuArtiklit() - Muudab antud müügiartikli tabelis Myygiartikkel&lt;br /&gt;
*MenuuNimetus() - Tagastab menüü ID järgi menüü nimetuse&lt;br /&gt;
*AnnaMuugiartiklidMidaMenuusPole() - Tagastab müügiartiklid, mis pole veel menüüs, kus on juba müügiartiklid, mille IDd on antud massiivis&lt;br /&gt;
*AnnaMenuuNimed() - Tagastab kõigi menüüde nimetused tabelis Menyy&lt;br /&gt;
&lt;br /&gt;
====Kohvikutest üldiselt====&lt;br /&gt;
*KohvikuteNimed() - Tagastab kõigi kohvikute nimed massiivina&lt;br /&gt;
*KohvikuNimiIdJargi() - Tagastab antud kohviku ID järgi kohviku nime&lt;br /&gt;
*AnnaKoikOmanikuKohvikud() - Tagastab antud omaniku ID järgi kõik omaniku kohvikute ID-d massiivina&lt;br /&gt;
*Kohvikud() - Tagastab kõik kohvikute kirjed tabelist Kohvik&lt;br /&gt;
*KohvikuteArv() - Tagastab kõigi kohvikute arvu&lt;br /&gt;
*AnnaKaubad() - Tagastab kõik kaubad tabelist Kaup&lt;br /&gt;
*LisaKaup() - Lisab kauba kaupade nimekirja&lt;br /&gt;
*LisaKohvik() - Uue kohviku lisamine&lt;br /&gt;
&lt;br /&gt;
====Kommentaaridega seotud meetodid:====&lt;br /&gt;
*KohvikuKommentaarideArv() - Kohviku kommentaaride arv&lt;br /&gt;
*AnnaKohvikuKommentaarid() - Tagastab kommentaarid lehtede kaupa&lt;br /&gt;
*AnnaKohvikuKommentaarideHinded() - Tagastab kommentaaride jaoks võimalikud hinded koos kirjeldustega&lt;br /&gt;
*LisaKohvikuKommentaar() - Lisab kohviku kommentaari&lt;br /&gt;
&lt;br /&gt;
====Statistikaga seotud meetodid:====&lt;br /&gt;
*StatistikaRakendusteKohtaTana() - Tagastab rakenduse nimed ja nende vastu tehtud päringud tänasel päeval&lt;br /&gt;
*StatistikaRakendusteKohtaViimaneNadal() - Tagastab rakenduse nimed ja nende vastu tehtud päringud viimase nädala jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaSellelKuul() - Tagastab rakenduse nimed ja nende vastu tehtud päringud selle kuu jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaKokku() - Tagastab rakenduse nimed ja nende vastu tehtud päringud kogu aja vältel&lt;br /&gt;
*StatistikaMeetoditeKohtaTana() - Meetod leiab tänase päeva jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaViimaneNadal() - Meetod leiab viimase nädala jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaSellelKuul() - Meetod leiab kuu jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaKokku() - Meetod leiab kogu aja vältel kasutatud meetodid ja paringute arvu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Veebiteenuse projekti (WCF + andmebaas) saab siit: http://enos.itcollege.ee/~rruga/VRII/Teenusekiht.zip&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : CMS ==&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Veebirakendus ==&lt;br /&gt;
&lt;br /&gt;
== Meeskonna kokkuvõttev aruanne ==&lt;br /&gt;
&lt;br /&gt;
== Logi ==&lt;br /&gt;
=== 9. aprill ===&lt;br /&gt;
Tegime rollide halduse, münüüde muutmise vormi. Meili saatmine registreerimisel. Toimus andmebaasi andmemudeli väike muutus. &lt;br /&gt;
&lt;br /&gt;
=== 30. märts ===&lt;br /&gt;
Tehtud on kohviku menüü ja kohviku kommenteerimise leht.&lt;br /&gt;
&lt;br /&gt;
=== 26. märts ===&lt;br /&gt;
Tehtud on esimesed veebiteenuse meetodid ja veebirakendusele kasutajate registreerimine.&lt;br /&gt;
&lt;br /&gt;
=== 10. märts ===&lt;br /&gt;
Väikese häki abil õnnestus kohviku kassa arvutis saada tööle üks Forms-i proovirakendus.&lt;br /&gt;
&lt;br /&gt;
=== 8. märts ===&lt;br /&gt;
Kuna kassa-aparaadis on operatsioonisüsteemiks Windows XP ja raud on 1.99 GHz, 256 RAM siis peaks saama&lt;br /&gt;
prototüübiks teha sinna peale rakenduse, mille ülesandeks menüüga tegelemine. &lt;br /&gt;
&lt;br /&gt;
=== 7. märts ===&lt;br /&gt;
Linnar Viik andis meile järgmist nõu: tuleb eristada kahte asja - see, mis peab valmis saama (&#039;&#039;must&#039;&#039;) ja see, mis oleks tore (&#039;&#039;nice to have&#039;&#039;). Valmis peab saama menüüga ekraan seinal (esialgu kasutajale prototüübi näitamiseks kasvõi näiteks PowerPoint-i abil tehtud). Alles siis kui on kasutajalt positiivne tagasiside saadud, võib edasi minna reaalse tarkvaralahenduse loomisega. Kui ka see on valmis ja kasutaja sellega rahul võib juurde mõelda &#039;&#039;nice to have&#039;&#039; asju (näiteks eelinfo järgmise päeva menüü kohta, üliõpilasesinduse sõnumite riba ja muid asju).&lt;br /&gt;
&lt;br /&gt;
Saime teada, et kui tahame, et meie loodav süsteem suhtleks IT Kohviku kassasüsteemiga, siis tuleb selle süsteemi tootjatega ühendust võtta ja nendega konsulteerida.&lt;br /&gt;
&lt;br /&gt;
=== 19.Veebruar ===&lt;br /&gt;
*Valmis XSLT fail.&lt;br /&gt;
&lt;br /&gt;
=== 9.Veebruar ===&lt;br /&gt;
* Esmane versioon XML ja XML Schemast olemas&lt;br /&gt;
* Tekkis küsimus kas XSLT faili tuleb käsitsi tekitada või automaatselt.&lt;br /&gt;
* Küsimus oli ka kas lahendasime portsjoni asja mõistlikult või oleks mõni teine lähenemine parem olnud.&lt;br /&gt;
* Küsimus, kas XML fail on liiga üle pingutatud või sobiva keerukusega&lt;br /&gt;
&lt;br /&gt;
=== 7. Veebruar ===&lt;br /&gt;
* Võtsime õppejõu poolt pakutud ideest kohe kinni, sest me eelistame teha praktilist asja, mida saab kasutada ja mille kasutamist saame ka iga päev jälgida. &lt;br /&gt;
* Esimese asjana otsustasime välja uurida mida meie &amp;quot;kliendid&amp;quot; (süsteemi tellijad) meilt ootavad. (Soovid idee punkti all)&lt;br /&gt;
* Valminud on lihtne teenusest ja klientidest koosnev süsteemi testmudel.&lt;br /&gt;
&lt;br /&gt;
[[Category: Võrgurakendused II: hajussüsteemide ehitamine]]&lt;br /&gt;
[[Category: Veebirakenduste loomine ASP.NET abil]]&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=27167</id>
		<title>Meeskond &quot;FoodWars&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=27167"/>
		<updated>2011-04-17T18:16:49Z</updated>

		<summary type="html">&lt;p&gt;Rruga: /* Veebiteenus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Idee ==&lt;br /&gt;
Meie tiimil on plaanis teha internetipõhine söökla menüü süsteem (aluseks IT Kolledži kohvik, aga suunitlus selline, et kõik kohvikud/sööklad saaksid teha endale kasutajakonto ja hakata rakendust kasutama), kust saaks jälgida menüüd, mis sööke saab süüa, mis veel järgi on, kasutajatel on ka võimalus sööke hinnata (stiilis &amp;quot;meeldib&amp;quot;, &amp;quot;ei meeldi&amp;quot; nagu Facebook-is).&lt;br /&gt;
&lt;br /&gt;
Kohvikupidaja Teele soovid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* elektroonilisest menüüst asju kustutada, isegi siis kui asja peaks olema teoreetiliselt alles, aga tegelikult on asi otsas.&lt;br /&gt;
* elektrikatkestuse korral jääb menüü püsima. Ta peab teadma hindu mistahes olukorras.&lt;br /&gt;
* menüül näidatakse automaatselt ka ISIC kaardi omanike soodushinnad&lt;br /&gt;
* süsteem toetab ka poole portsjoni müümist.&lt;br /&gt;
&lt;br /&gt;
Linnar Viigi soovid/visioonid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* kõik oleks ka internetist kättesaadav, peale LCD ekraani, mis kajastab menüüd sööklas.&lt;br /&gt;
* aluseks facebook, kus siis söögid oleks nagu facebook-i alateemad.&lt;br /&gt;
* saab sööke hinnata, kommenteerida (täna oli väga maitsev praad).&lt;br /&gt;
* kasutajad saaks vaadata, mis menüüs on (ka järgmisel nädalal) ja mitu portsu veel alles on.&lt;br /&gt;
* kasutajad saaksid välja pakkuda menüüsid.&lt;br /&gt;
* erinevate söögikohtade kasutajad saaksid omavahel muljeid jagada.&lt;br /&gt;
* kuu aja aktiivsemad saavad prii lõuna.&lt;br /&gt;
* mingil ajal võib olla &amp;quot;happy hour&amp;quot; (enne sulgemist saab odavamalt).&lt;br /&gt;
* piiranguks on see, et toitu broneerida ei saa &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vaba tarkvara kasutamise võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Antud projekti puhul oleks võimalik kasutada [http://www.postgresql.org/ PostgreSQL] andmebaasi (vt. lisaks http://en.wikipedia.org/wiki/PostgreSQL ) Microsoft SQL Server&#039;i asemel. See võiks anda kasutajale võimaluse valida .NET ning [http://www.mono-project.com/ Mono] (vt. lisaks http://en.wikipedia.org/wiki/Mono_(software) ) platvormide vahel. Sel viisil oleks kliendil võimalik Microsoft&#039;i platvormi kõrval valida tõenäoliselt soodsam vaba tarkvara platvorm. Andmebaasi lõplik valik pole hetkel veel otsustatud.&lt;br /&gt;
&lt;br /&gt;
== Meeskond ja tööjaotus==&lt;br /&gt;
* Kristjan Stolin - projektijuht, suhtlus kliendiga, XML, wiki, teenuskihtide progemine, rollide halduse lehe progemine&lt;br /&gt;
* Ilmar Telga - XML, kliendiga suhtlus, wiki, teenuskihtide progemine, lõpprakenduste menüüd, login&lt;br /&gt;
* Rauno Rüga - XML, XSLT, andmebaasi loomine, wiki, mobiilirakendus, statistika&lt;br /&gt;
* Lauri Kermas - teenuskihtide ehitamine, wiki, login, kommenteerimise võimaluste progemine&lt;br /&gt;
&lt;br /&gt;
== XML Fail ==&lt;br /&gt;
=== XML ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Toidud&amp;gt;&lt;br /&gt;
  &amp;lt;Toit&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduNimetus&amp;gt;Viineri kaste&amp;lt;/ToiduNimetus&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduLiik&amp;gt;Praad&amp;lt;/ToiduLiik&amp;gt;&lt;br /&gt;
    &amp;lt;OlemasolevatYhikut&amp;gt;5&amp;lt;/OlemasolevatYhikut&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduKogus&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Poolportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;2011&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;1&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;9&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;15&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;07&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;23&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;        &lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.15&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;0&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;0&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;0&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;00&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;00&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;00&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Täisportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.80&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
    &amp;lt;/ToiduKogus&amp;gt;&lt;br /&gt;
    &amp;lt;Kommentaarid&amp;gt;&lt;br /&gt;
      &amp;lt;Kommentaar&amp;gt;&lt;br /&gt;
        &amp;lt;Saatja&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaNimi&amp;gt;Kristjan&amp;lt;/SaatjaNimi&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaRoll&amp;gt;Tudeng&amp;lt;/SaatjaRoll&amp;gt;&lt;br /&gt;
        &amp;lt;/Saatja&amp;gt;&lt;br /&gt;
        &amp;lt;Sisu&amp;gt;Minu lemmik toit ! Kui algebra tund ei hakkaks, sööks veel 5 portsjonit.&amp;lt;/Sisu&amp;gt;&lt;br /&gt;
      &amp;lt;/Kommentaar&amp;gt;&lt;br /&gt;
    &amp;lt;/Kommentaarid&amp;gt;&lt;br /&gt;
  &amp;lt;/Toit&amp;gt;&lt;br /&gt;
&amp;lt;/Toidud&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kommentaariks siis niipalju, et meie näide on ilma kohviku osata, selleks et näidet mitte liiga suureks ajada.&lt;br /&gt;
&lt;br /&gt;
Ka on meil moment puudu ID väljad, mis on igasugu andmebaasiga suhtlemiseks hädavajalikud, samas siin näidises palju juurde ei anna.&lt;br /&gt;
&lt;br /&gt;
Asja tegemisel avastasime, et põhiliseks arusaamatuse kohaks on toitude erinevad kogused (ehk siis pool portsjonit, suur / väike ja muud võrdlevad ühikud). Esimese võimalusena kaalusime teha lihtsalt täiesti eraldi toidud kõige kohta, stiilis &amp;quot;väike viineripraad&amp;quot; ja &amp;quot;suur viineripraad&amp;quot;. Kahjuks see variant ei kõlbaks eriti hästi, kuna need erinevad portsjonid kasutavad ikkagi samu materjale ja kui me peaks mingi süsteemiga näitama kui palju portsjoneid alles on. Sööklast näiteks pakuti et väike portsjon kasutab materjale kuskil 0.8 suure portsjoni ulatuses, ehk see suhtarv peaks olema kasutaja poolt (kohvikupidaja, restoraniomanik) ise sätitav. &lt;br /&gt;
&lt;br /&gt;
Tänu sellele sai meie süsteemi alustalaks siiski Toit, millel on oma Portsjonid siis erinevate hindade ja soodustustega. Moment pole meil ka Portsjoni XML osas toodud ära seost kogusega. (Kui palju ühe portsjoni lisamine/müümine peaks toidu üldkogust muutma).&lt;br /&gt;
&lt;br /&gt;
Kommenteerida saab meil moment toitu ennast, mitte eraldi portsjonit. Isegi kui kasutajad tahavad lisada kommentaare stiilis &amp;quot;See väike supp oli tõesti väga väike&amp;quot;, ei soovi nad seda ilmselt eraldi portsjoni alla panna. Tulevikus peaks kindlasti olema ka võimalus pigem kommenteerida üldisemalt (Kohvikut ennast, söögipaiku üldse), kui spetsiifilisemalt (Väikse prae kaste lisandi kohta).&lt;br /&gt;
&lt;br /&gt;
=== XML Schema ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Toidud&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Toit&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduNimetus&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;OlemasolevatYhikut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduKogus&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:choice maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;PortsjoniLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;Myygiaeg&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Aasta&amp;quot; type=&amp;quot;xs:unsignedShort&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Kuu&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Paev&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Tund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Minut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Sekund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;ToiduHind&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Eurohind&amp;quot; type=&amp;quot;xs:decimal&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Soodustus&amp;quot;&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseProtsent&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:choice&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Kommentaarid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Saatja&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaNimi&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaRoll&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Sisu&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
  &amp;lt;h2&amp;gt;Kohvikus müüdavad toidud&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr bgcolor=&amp;quot;#9acd32&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Veel alles&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Portsjon&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Müügiaeg&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustuse liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Kommentaar(id)&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;Toidud/Toit&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduNimetus&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduLiik&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;OlemasolevatYhikut&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;PortsjoniLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Paev&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Kuu&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Aasta&amp;quot; /&amp;gt; &amp;amp;nbsp;  &lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Tund&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Minut&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Sekund&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Eurohind&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseProtsent&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Kommentaarid/Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Sisu&amp;quot; /&amp;gt;&amp;amp;nbsp;(&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaRoll&amp;quot; /&amp;gt;&amp;amp;nbsp;&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaNimi&amp;quot; /&amp;gt;)&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XSLT poolt loodud tulemus on järgnev (lisasin veel kaks toitu XML faili, siin wiki lehel on ruumi kokkuhoiuks vaid 1 toit toitude listis):&lt;br /&gt;
[[File:Xslt.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arhitektuur ==&lt;br /&gt;
&lt;br /&gt;
Süsteem oli vahepeal plaanis ehitada kolmekihilise arhitektuuriga ([http://en.wikipedia.org/wiki/Multitier_architecture#Three-tier_architecture Three-tier architecture]). See peaks lihtsustama süsteemi haldamist ja laiendamist tulevikus. Aga kuna selle jaoks otsest vajadust polenud ja oleks vaid süsteemi keeruliseks ajanud, siis loobusime sellest.&lt;br /&gt;
&lt;br /&gt;
[[Image:three-tier.png|thumb|center|alt=Arhitektuuri skeem.|Arhitektuuri skeem.]]&lt;br /&gt;
&lt;br /&gt;
== Veebiteenus ==&lt;br /&gt;
===Andmemudel===&lt;br /&gt;
[[Image:KohvikuAndmemudel.jpg|thumb|right|alt=Kohviku projekti andmemudel|Andmemudel]]&lt;br /&gt;
Enne veebiteenuse meetodite kirjeldamist koostasime andmemudeli. Loodud andmemudeli põhjal lõime andmebaasi vajalike tabelite ja atribuutidega. Andmemudeli peal on rohelisega tähistatud tabelid, mis on oseselt seotud kohviku valdajaga ja mida WPF rakenduse jaoks kindlasti vaja on. Ülejäänud helesinised tabelid on vajalikud kasutajate võimaluste jaoks. Lisaks on andmemudelil kaks tabelit, mis pole teisega seotud, need on süsteemi administraatori jaoks, et oleks ülevaade, mis rakendused teenust enim kasutavad ning mis meetodeid kõige rohkem välja kutsutakse.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Teenuskihis olevad meetodid===&lt;br /&gt;
&lt;br /&gt;
====Kasutajatega seotud meetodid:====&lt;br /&gt;
*SaidiKasutajaLiik() - Tagastab antud kasutaja ID järgi kasutaja liigi nimetuse&lt;br /&gt;
*KustutaSaidiKasutaja() - Kustutab antud kasutaja ID järgi kasutaja tabelis Kasutaja&lt;br /&gt;
*AnnaKoikSaidiKasutajad() - Tagastab kõik kirjed tabelist Kasutaja&lt;br /&gt;
*AnnaKoikKohvikuKasutajad() - Tagastab antud kohviku ID järgi kõik kohviku kasutajad massiivina&lt;br /&gt;
*MuudaSaidiKasutajaLiik() - Muudab antud kasutaja ID järgi kasutaja liigi tabelis Kasutaja&lt;br /&gt;
*KoikLubatudSaidiKasutajaTyybid() - Tagastab andmebaasi kõik võimalikud kohviku kasutaja rollid (id-d ja nimed), muud andmed jäävad tühjaks&lt;br /&gt;
*KoikLubatudKohvikuRollid() - Tagastab andmebaasi kõik võimalikud site kasutaja rollid (id-d ja nimed), kohviku_id jääb tühjaks&lt;br /&gt;
*KasutajaKohvikuRollid() - Tagastab antud kasutaja ID järgi kõik kasutaja rollid kõikides kohvikutes&lt;br /&gt;
*MuudaKohvikuKasutajaRoll() - Muudab antud kasutaja ID ja kohviku ID järgi kasutaja rolli kohvikus, kui rolli pole, siis tekitatakse uus&lt;br /&gt;
*SaidiKasutajaLiikID() - Tagastab antud kasutaja ID järgi kasutaja liigi ID&lt;br /&gt;
*KohvikuKasutajaLiikID() - Tagastab antud kasutaja ID ja kohviku ID järgi kohviku kasutaja rolli ID&lt;br /&gt;
*AnnaKasutajaMeiliAadress() - Tagastab antud kasutaja nime alusel kasutaja meiliaadressi&lt;br /&gt;
*AnnaKasutajaIdJargi() - Tagastab kasutajanime kasutaja ID järgi&lt;br /&gt;
*AuthendiKasutaja() - Autendib kasutaja, õnnestumisel tagastab kasutaja ID, ebaõnnestumisel null &lt;br /&gt;
*RegistreeriKasutaja() - Registreerib kasutaja andmebaasi ja tagastab true kui kasutaja loomine õnnestus&lt;br /&gt;
&lt;br /&gt;
====Menüüga seotud meetodid====&lt;br /&gt;
*LisaArtikkelMenuuse() - Seob menüüartikli ja menüü&lt;br /&gt;
*LisaKohvikuleMenuu() - Seob menüü ja kohviku&lt;br /&gt;
*TagastabMenuuMuutujad() - Tagastab menüü järgi kas inimesel oleks õigust seda muuta&lt;br /&gt;
*KustutaMenuuJaKohvikuSeos() - Kustutab menüü ja kohviku seose&lt;br /&gt;
*LisaUusMenuu() - Teeb uue menüü, seob selle kohvikuga, kui kohviku ID on parameetrina kaasa antud&lt;br /&gt;
*MenuuKohvikuIdJargi() - Tagastab kohviku ID järgi kohviku tänaste või mitte tänaste menüüde ID-de massiivi&lt;br /&gt;
*LisaMenuuArtikkelMenuuse() - Sisestab antud müügiartikli menüüsse, mille ID on menyy_id&lt;br /&gt;
*KustutaMenuuArtikkel() - Kustutab müügiartikli ID ja menüü ID järgi müügiartikli menüüst&lt;br /&gt;
*TagastaMenuuArtiklid() - Tagastab menüü ID järgi menüüs olevad müügiartiklid&lt;br /&gt;
*VahetaMenuuArtiklit() - Muudab antud müügiartikli tabelis Myygiartikkel&lt;br /&gt;
*MenuuNimetus() - Tagastab menüü ID järgi menüü nimetuse&lt;br /&gt;
*AnnaMuugiartiklidMidaMenuusPole() - Tagastab müügiartiklid, mis pole veel menüüs, kus on juba müügiartiklid, mille IDd on antud massiivis&lt;br /&gt;
*AnnaMenuuNimed() - Tagastab kõigi menüüde nimetused tabelis Menyy&lt;br /&gt;
&lt;br /&gt;
====Kohvikutest üldiselt====&lt;br /&gt;
*KohvikuteNimed() - Tagastab kõigi kohvikute nimed massiivina&lt;br /&gt;
*KohvikuNimiIdJargi() - Tagastab antud kohviku ID järgi kohviku nime&lt;br /&gt;
*AnnaKoikOmanikuKohvikud() - Tagastab antud omaniku ID järgi kõik omaniku kohvikute ID-d massiivina&lt;br /&gt;
*Kohvikud() - Tagastab kõik kohvikute kirjed tabelist Kohvik&lt;br /&gt;
*KohvikuteArv() - Tagastab kõigi kohvikute arvu&lt;br /&gt;
*AnnaKaubad() - Tagastab kõik kaubad tabelist Kaup&lt;br /&gt;
*LisaKaup() - Lisab kauba kaupade nimekirja&lt;br /&gt;
*LisaKohvik() - Uue kohviku lisamine&lt;br /&gt;
&lt;br /&gt;
====Kommentaaridega seotud meetodid:====&lt;br /&gt;
*KohvikuKommentaarideArv() - Kohviku kommentaaride arv&lt;br /&gt;
*AnnaKohvikuKommentaarid() - Tagastab kommentaarid lehtede kaupa&lt;br /&gt;
*AnnaKohvikuKommentaarideHinded() - Tagastab kommentaaride jaoks võimalikud hinded koos kirjeldustega&lt;br /&gt;
*LisaKohvikuKommentaar() - Lisab kohviku kommentaari&lt;br /&gt;
&lt;br /&gt;
====Statistikaga seotud meetodid:====&lt;br /&gt;
*StatistikaRakendusteKohtaTana() - Tagastab rakenduse nimed ja nende vastu tehtud päringud tänasel päeval&lt;br /&gt;
*StatistikaRakendusteKohtaViimaneNadal() - Tagastab rakenduse nimed ja nende vastu tehtud päringud viimase nädala jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaSellelKuul() - Tagastab rakenduse nimed ja nende vastu tehtud päringud selle kuu jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaKokku() - Tagastab rakenduse nimed ja nende vastu tehtud päringud kogu aja vältel&lt;br /&gt;
*StatistikaMeetoditeKohtaTana() - Meetod leiab tänase päeva jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaViimaneNadal() - Meetod leiab viimase nädala jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaSellelKuul() - Meetod leiab kuu jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaKokku() - Meetod leiab kogu aja vältel kasutatud meetodid ja paringute arvu&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : CMS ==&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Veebirakendus ==&lt;br /&gt;
&lt;br /&gt;
== Meeskonna kokkuvõttev aruanne ==&lt;br /&gt;
&lt;br /&gt;
== Logi ==&lt;br /&gt;
=== 9. aprill ===&lt;br /&gt;
Tegime rollide halduse, münüüde muutmise vormi. Meili saatmine registreerimisel. Toimus andmebaasi andmemudeli väike muutus. &lt;br /&gt;
&lt;br /&gt;
=== 30. märts ===&lt;br /&gt;
Tehtud on kohviku menüü ja kohviku kommenteerimise leht.&lt;br /&gt;
&lt;br /&gt;
=== 26. märts ===&lt;br /&gt;
Tehtud on esimesed veebiteenuse meetodid ja veebirakendusele kasutajate registreerimine.&lt;br /&gt;
&lt;br /&gt;
=== 10. märts ===&lt;br /&gt;
Väikese häki abil õnnestus kohviku kassa arvutis saada tööle üks Forms-i proovirakendus.&lt;br /&gt;
&lt;br /&gt;
=== 8. märts ===&lt;br /&gt;
Kuna kassa-aparaadis on operatsioonisüsteemiks Windows XP ja raud on 1.99 GHz, 256 RAM siis peaks saama&lt;br /&gt;
prototüübiks teha sinna peale rakenduse, mille ülesandeks menüüga tegelemine. &lt;br /&gt;
&lt;br /&gt;
=== 7. märts ===&lt;br /&gt;
Linnar Viik andis meile järgmist nõu: tuleb eristada kahte asja - see, mis peab valmis saama (&#039;&#039;must&#039;&#039;) ja see, mis oleks tore (&#039;&#039;nice to have&#039;&#039;). Valmis peab saama menüüga ekraan seinal (esialgu kasutajale prototüübi näitamiseks kasvõi näiteks PowerPoint-i abil tehtud). Alles siis kui on kasutajalt positiivne tagasiside saadud, võib edasi minna reaalse tarkvaralahenduse loomisega. Kui ka see on valmis ja kasutaja sellega rahul võib juurde mõelda &#039;&#039;nice to have&#039;&#039; asju (näiteks eelinfo järgmise päeva menüü kohta, üliõpilasesinduse sõnumite riba ja muid asju).&lt;br /&gt;
&lt;br /&gt;
Saime teada, et kui tahame, et meie loodav süsteem suhtleks IT Kohviku kassasüsteemiga, siis tuleb selle süsteemi tootjatega ühendust võtta ja nendega konsulteerida.&lt;br /&gt;
&lt;br /&gt;
=== 19.Veebruar ===&lt;br /&gt;
*Valmis XSLT fail.&lt;br /&gt;
&lt;br /&gt;
=== 9.Veebruar ===&lt;br /&gt;
* Esmane versioon XML ja XML Schemast olemas&lt;br /&gt;
* Tekkis küsimus kas XSLT faili tuleb käsitsi tekitada või automaatselt.&lt;br /&gt;
* Küsimus oli ka kas lahendasime portsjoni asja mõistlikult või oleks mõni teine lähenemine parem olnud.&lt;br /&gt;
* Küsimus, kas XML fail on liiga üle pingutatud või sobiva keerukusega&lt;br /&gt;
&lt;br /&gt;
=== 7. Veebruar ===&lt;br /&gt;
* Võtsime õppejõu poolt pakutud ideest kohe kinni, sest me eelistame teha praktilist asja, mida saab kasutada ja mille kasutamist saame ka iga päev jälgida. &lt;br /&gt;
* Esimese asjana otsustasime välja uurida mida meie &amp;quot;kliendid&amp;quot; (süsteemi tellijad) meilt ootavad. (Soovid idee punkti all)&lt;br /&gt;
* Valminud on lihtne teenusest ja klientidest koosnev süsteemi testmudel.&lt;br /&gt;
&lt;br /&gt;
[[Category: Võrgurakendused II: hajussüsteemide ehitamine]]&lt;br /&gt;
[[Category: Veebirakenduste loomine ASP.NET abil]]&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=27162</id>
		<title>Meeskond &quot;FoodWars&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=27162"/>
		<updated>2011-04-17T18:02:20Z</updated>

		<summary type="html">&lt;p&gt;Rruga: /* Veebiteenus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Idee ==&lt;br /&gt;
Meie tiimil on plaanis teha internetipõhine söökla menüü süsteem (aluseks IT Kolledži kohvik, aga suunitlus selline, et kõik kohvikud/sööklad saaksid teha endale kasutajakonto ja hakata rakendust kasutama), kust saaks jälgida menüüd, mis sööke saab süüa, mis veel järgi on, kasutajatel on ka võimalus sööke hinnata (stiilis &amp;quot;meeldib&amp;quot;, &amp;quot;ei meeldi&amp;quot; nagu Facebook-is).&lt;br /&gt;
&lt;br /&gt;
Kohvikupidaja Teele soovid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* elektroonilisest menüüst asju kustutada, isegi siis kui asja peaks olema teoreetiliselt alles, aga tegelikult on asi otsas.&lt;br /&gt;
* elektrikatkestuse korral jääb menüü püsima. Ta peab teadma hindu mistahes olukorras.&lt;br /&gt;
* menüül näidatakse automaatselt ka ISIC kaardi omanike soodushinnad&lt;br /&gt;
* süsteem toetab ka poole portsjoni müümist.&lt;br /&gt;
&lt;br /&gt;
Linnar Viigi soovid/visioonid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* kõik oleks ka internetist kättesaadav, peale LCD ekraani, mis kajastab menüüd sööklas.&lt;br /&gt;
* aluseks facebook, kus siis söögid oleks nagu facebook-i alateemad.&lt;br /&gt;
* saab sööke hinnata, kommenteerida (täna oli väga maitsev praad).&lt;br /&gt;
* kasutajad saaks vaadata, mis menüüs on (ka järgmisel nädalal) ja mitu portsu veel alles on.&lt;br /&gt;
* kasutajad saaksid välja pakkuda menüüsid.&lt;br /&gt;
* erinevate söögikohtade kasutajad saaksid omavahel muljeid jagada.&lt;br /&gt;
* kuu aja aktiivsemad saavad prii lõuna.&lt;br /&gt;
* mingil ajal võib olla &amp;quot;happy hour&amp;quot; (enne sulgemist saab odavamalt).&lt;br /&gt;
* piiranguks on see, et toitu broneerida ei saa &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vaba tarkvara kasutamise võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Antud projekti puhul oleks võimalik kasutada [http://www.postgresql.org/ PostgreSQL] andmebaasi (vt. lisaks http://en.wikipedia.org/wiki/PostgreSQL ) Microsoft SQL Server&#039;i asemel. See võiks anda kasutajale võimaluse valida .NET ning [http://www.mono-project.com/ Mono] (vt. lisaks http://en.wikipedia.org/wiki/Mono_(software) ) platvormide vahel. Sel viisil oleks kliendil võimalik Microsoft&#039;i platvormi kõrval valida tõenäoliselt soodsam vaba tarkvara platvorm. Andmebaasi lõplik valik pole hetkel veel otsustatud.&lt;br /&gt;
&lt;br /&gt;
== Meeskond ja tööjaotus==&lt;br /&gt;
* Kristjan Stolin - projektijuht, suhtlus kliendiga, XML, wiki, teenuskihtide progemine, rollide halduse lehe progemine&lt;br /&gt;
* Ilmar Telga - XML, kliendiga suhtlus, wiki, teenuskihtide progemine, lõpprakenduste menüüd, login&lt;br /&gt;
* Rauno Rüga - XML, XSLT, andmebaasi loomine, wiki, mobiilirakendus, statistika&lt;br /&gt;
* Lauri Kermas - teenuskihtide ehitamine, wiki, login, kommenteerimise võimaluste progemine&lt;br /&gt;
&lt;br /&gt;
== XML Fail ==&lt;br /&gt;
=== XML ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Toidud&amp;gt;&lt;br /&gt;
  &amp;lt;Toit&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduNimetus&amp;gt;Viineri kaste&amp;lt;/ToiduNimetus&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduLiik&amp;gt;Praad&amp;lt;/ToiduLiik&amp;gt;&lt;br /&gt;
    &amp;lt;OlemasolevatYhikut&amp;gt;5&amp;lt;/OlemasolevatYhikut&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduKogus&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Poolportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;2011&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;1&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;9&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;15&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;07&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;23&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;        &lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.15&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;0&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;0&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;0&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;00&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;00&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;00&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Täisportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.80&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
    &amp;lt;/ToiduKogus&amp;gt;&lt;br /&gt;
    &amp;lt;Kommentaarid&amp;gt;&lt;br /&gt;
      &amp;lt;Kommentaar&amp;gt;&lt;br /&gt;
        &amp;lt;Saatja&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaNimi&amp;gt;Kristjan&amp;lt;/SaatjaNimi&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaRoll&amp;gt;Tudeng&amp;lt;/SaatjaRoll&amp;gt;&lt;br /&gt;
        &amp;lt;/Saatja&amp;gt;&lt;br /&gt;
        &amp;lt;Sisu&amp;gt;Minu lemmik toit ! Kui algebra tund ei hakkaks, sööks veel 5 portsjonit.&amp;lt;/Sisu&amp;gt;&lt;br /&gt;
      &amp;lt;/Kommentaar&amp;gt;&lt;br /&gt;
    &amp;lt;/Kommentaarid&amp;gt;&lt;br /&gt;
  &amp;lt;/Toit&amp;gt;&lt;br /&gt;
&amp;lt;/Toidud&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kommentaariks siis niipalju, et meie näide on ilma kohviku osata, selleks et näidet mitte liiga suureks ajada.&lt;br /&gt;
&lt;br /&gt;
Ka on meil moment puudu ID väljad, mis on igasugu andmebaasiga suhtlemiseks hädavajalikud, samas siin näidises palju juurde ei anna.&lt;br /&gt;
&lt;br /&gt;
Asja tegemisel avastasime, et põhiliseks arusaamatuse kohaks on toitude erinevad kogused (ehk siis pool portsjonit, suur / väike ja muud võrdlevad ühikud). Esimese võimalusena kaalusime teha lihtsalt täiesti eraldi toidud kõige kohta, stiilis &amp;quot;väike viineripraad&amp;quot; ja &amp;quot;suur viineripraad&amp;quot;. Kahjuks see variant ei kõlbaks eriti hästi, kuna need erinevad portsjonid kasutavad ikkagi samu materjale ja kui me peaks mingi süsteemiga näitama kui palju portsjoneid alles on. Sööklast näiteks pakuti et väike portsjon kasutab materjale kuskil 0.8 suure portsjoni ulatuses, ehk see suhtarv peaks olema kasutaja poolt (kohvikupidaja, restoraniomanik) ise sätitav. &lt;br /&gt;
&lt;br /&gt;
Tänu sellele sai meie süsteemi alustalaks siiski Toit, millel on oma Portsjonid siis erinevate hindade ja soodustustega. Moment pole meil ka Portsjoni XML osas toodud ära seost kogusega. (Kui palju ühe portsjoni lisamine/müümine peaks toidu üldkogust muutma).&lt;br /&gt;
&lt;br /&gt;
Kommenteerida saab meil moment toitu ennast, mitte eraldi portsjonit. Isegi kui kasutajad tahavad lisada kommentaare stiilis &amp;quot;See väike supp oli tõesti väga väike&amp;quot;, ei soovi nad seda ilmselt eraldi portsjoni alla panna. Tulevikus peaks kindlasti olema ka võimalus pigem kommenteerida üldisemalt (Kohvikut ennast, söögipaiku üldse), kui spetsiifilisemalt (Väikse prae kaste lisandi kohta).&lt;br /&gt;
&lt;br /&gt;
=== XML Schema ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Toidud&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Toit&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduNimetus&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;OlemasolevatYhikut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduKogus&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:choice maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;PortsjoniLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;Myygiaeg&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Aasta&amp;quot; type=&amp;quot;xs:unsignedShort&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Kuu&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Paev&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Tund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Minut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Sekund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;ToiduHind&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Eurohind&amp;quot; type=&amp;quot;xs:decimal&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Soodustus&amp;quot;&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseProtsent&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:choice&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Kommentaarid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Saatja&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaNimi&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaRoll&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Sisu&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
  &amp;lt;h2&amp;gt;Kohvikus müüdavad toidud&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr bgcolor=&amp;quot;#9acd32&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Veel alles&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Portsjon&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Müügiaeg&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustuse liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Kommentaar(id)&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;Toidud/Toit&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduNimetus&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduLiik&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;OlemasolevatYhikut&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;PortsjoniLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Paev&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Kuu&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Aasta&amp;quot; /&amp;gt; &amp;amp;nbsp;  &lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Tund&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Minut&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Sekund&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Eurohind&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseProtsent&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Kommentaarid/Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Sisu&amp;quot; /&amp;gt;&amp;amp;nbsp;(&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaRoll&amp;quot; /&amp;gt;&amp;amp;nbsp;&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaNimi&amp;quot; /&amp;gt;)&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XSLT poolt loodud tulemus on järgnev (lisasin veel kaks toitu XML faili, siin wiki lehel on ruumi kokkuhoiuks vaid 1 toit toitude listis):&lt;br /&gt;
[[File:Xslt.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arhitektuur ==&lt;br /&gt;
&lt;br /&gt;
Süsteem oli vahepeal plaanis ehitada kolmekihilise arhitektuuriga ([http://en.wikipedia.org/wiki/Multitier_architecture#Three-tier_architecture Three-tier architecture]). See peaks lihtsustama süsteemi haldamist ja laiendamist tulevikus. Aga kuna selle jaoks otsest vajadust polenud ja oleks vaid süsteemi keeruliseks ajanud, siis loobusime sellest.&lt;br /&gt;
&lt;br /&gt;
[[Image:three-tier.png|thumb|center|alt=Arhitektuuri skeem.|Arhitektuuri skeem.]]&lt;br /&gt;
&lt;br /&gt;
== Veebiteenus ==&lt;br /&gt;
===Andmemudel===&lt;br /&gt;
[[Image:KohvikuAndmemudel.jpg|thumb|right|alt=Kohviku projekti andmemudel|Andmemudel]]&lt;br /&gt;
Enne veebiteenuse meetodite kirjeldamist koostasime andmemudeli. Loodud andmemudeli põhjal lõime andmebaasi vajalike tabelite ja atribuutidega. Andmemudeli peal on rohelisega tähistatud tabelid, mis on oseselt seotud kohviku valdajaga ja mida WPF rakenduse jaoks kindlasti vaja on. Ülejäänud helesinised tabelid on vajalikud kasutajate võimaluste jaoks. Lisaks on andmemudelil kaks tabelit, mis pole teisega seotud, need on süsteemi administraatori jaoks, et oleks ülevaade, mis rakendused teenust enim kasutavad ning mis meetodeid kõige rohkem välja kutsutakse.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Teenuskihis olevad meetodid===&lt;br /&gt;
&lt;br /&gt;
====Kasutajatega seotud meetodid:====&lt;br /&gt;
*SaidiKasutajaLiik() - Tagastab antud kasutaja ID järgi kasutaja liigi nimetuse&lt;br /&gt;
*KustutaSaidiKasutaja() - Kustutab antud kasutaja ID järgi kasutaja tabelis Kasutaja&lt;br /&gt;
*AnnaKoikSaidiKasutajad() - Tagastab kõik kirjed tabelist Kasutaja&lt;br /&gt;
*AnnaKoikKohvikuKasutajad() - Tagastab antud kohviku ID järgi kõik kohviku kasutajad massiivina&lt;br /&gt;
*MuudaSaidiKasutajaLiik() - Muudab antud kasutaja ID järgi kasutaja liigi tabelis Kasutaja&lt;br /&gt;
*KoikLubatudSaidiKasutajaTyybid() - Tagastab andmebaasi kõik võimalikud kohviku kasutaja rollid (id-d ja nimed), muud andmed jäävad tühjaks&lt;br /&gt;
*KoikLubatudKohvikuRollid() - Tagastab andmebaasi kõik võimalikud site kasutaja rollid (id-d ja nimed), kohviku_id jääb tühjaks&lt;br /&gt;
*KasutajaKohvikuRollid() - Tagastab antud kasutaja ID järgi kõik kasutaja rollid kõikides kohvikutes&lt;br /&gt;
*MuudaKohvikuKasutajaRoll() - Muudab antud kasutaja ID ja kohviku ID järgi kasutaja rolli kohvikus, kui rolli pole, siis tekitatakse uus&lt;br /&gt;
*SaidiKasutajaLiikID() - Tagastab antud kasutaja ID järgi kasutaja liigi ID&lt;br /&gt;
*KohvikuKasutajaLiikID() - Tagastab antud kasutaja ID ja kohviku ID järgi kohviku kasutaja rolli ID&lt;br /&gt;
*AnnaKasutajaMeiliAadress() - Tagastab antud kasutaja nime alusel kasutaja meiliaadressi&lt;br /&gt;
*AnnaKasutajaIdJargi() - Tagastab kasutajanime kasutaja ID järgi&lt;br /&gt;
*AuthendiKasutaja() - Autendib kasutaja, õnnestumisel tagastab kasutaja ID, ebaõnnestumisel null &lt;br /&gt;
*RegistreeriKasutaja() - Registreerib kasutaja andmebaasi ja tagastab true kui kasutaja loomine õnnestus&lt;br /&gt;
&lt;br /&gt;
====Menüüga seotud meetodid====&lt;br /&gt;
*LisaArtikkelMenuuse() - Seob menüüartikli ja menüü&lt;br /&gt;
*LisaKohvikuleMenuu() - Seob menüü ja kohviku&lt;br /&gt;
*TagastabMenuuMuutujad() - Tagastab menüü järgi kas inimesel oleks õigust seda muuta&lt;br /&gt;
*KustutaMenuuJaKohvikuSeos() - Kustutab menüü ja kohviku seose&lt;br /&gt;
*LisaUusMenuu() - Teeb uue menüü, seob selle kohvikuga, kui kohviku ID on parameetrina kaasa antud&lt;br /&gt;
*MenuuKohvikuIdJargi() - Tagastab kohviku ID järgi kohviku tänaste või mitte tänaste menüüde ID-de massiivi&lt;br /&gt;
*LisaMenuuArtikkelMenuuse() - Sisestab antud müügiartikli menüüsse, mille ID on menyy_id&lt;br /&gt;
*KustutaMenuuArtikkel() - Kustutab müügiartikli ID ja menüü ID järgi müügiartikli menüüst&lt;br /&gt;
*TagastaMenuuArtiklid() - Tagastab menüü ID järgi menüüs olevad müügiartiklid&lt;br /&gt;
*VahetaMenuuArtiklit() - Muudab antud müügiartikli tabelis Myygiartikkel&lt;br /&gt;
*MenuuNimetus() - Tagastab menüü ID järgi menüü nimetuse&lt;br /&gt;
*AnnaMuugiartiklidMidaMenuusPole() - Tagastab müügiartiklid, mis pole veel menüüs, kus on juba müügiartiklid, mille IDd on antud massiivis&lt;br /&gt;
*AnnaMenuuNimed() - Tagastab kõigi menüüde nimetused tabelis Menyy&lt;br /&gt;
&lt;br /&gt;
====Kohvikutest üldiselt====&lt;br /&gt;
*KohvikuteNimed() - Tagastab kõigi kohvikute nimed massiivina&lt;br /&gt;
*KohvikuNimiIdJargi() - Tagastab antud kohviku ID järgi kohviku nime&lt;br /&gt;
*AnnaKoikOmanikuKohvikud() - Tagastab antud omaniku ID järgi kõik omaniku kohvikute ID-d massiivina&lt;br /&gt;
*Kohvikud() - Tagastab kõik kohvikute kirjed tabelist Kohvik&lt;br /&gt;
*KohvikuteArv() - Tagastab kõigi kohvikute arvu&lt;br /&gt;
*AnnaKaubad() - Tagastab kõik kaubad tabelist Kaup&lt;br /&gt;
*LisaKaup() - Lisab kauba kaupade nimekirja&lt;br /&gt;
&lt;br /&gt;
====Kommentaaridega seotud meetodid:====&lt;br /&gt;
*KohvikuKommentaarideArv() - Kohviku kommentaaride arv&lt;br /&gt;
*AnnaKohvikuKommentaarid() - Tagastab kommentaarid lehtede kaupa&lt;br /&gt;
*AnnaKohvikuKommentaarideHinded() - Tagastab kommentaaride jaoks võimalikud hinded koos kirjeldustega&lt;br /&gt;
*LisaKohvikuKommentaar() - Lisab kohviku kommentaari&lt;br /&gt;
&lt;br /&gt;
====Statistikaga seotud meetodid:====&lt;br /&gt;
*StatistikaRakendusteKohtaTana() - Tagastab rakenduse nimed ja nende vastu tehtud päringud tänasel päeval&lt;br /&gt;
*StatistikaRakendusteKohtaViimaneNadal() - Tagastab rakenduse nimed ja nende vastu tehtud päringud viimase nädala jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaSellelKuul() - Tagastab rakenduse nimed ja nende vastu tehtud päringud selle kuu jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaKokku() - Tagastab rakenduse nimed ja nende vastu tehtud päringud kogu aja vältel&lt;br /&gt;
*StatistikaMeetoditeKohtaTana() - Meetod leiab tänase päeva jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaViimaneNadal() - Meetod leiab viimase nädala jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaSellelKuul() - Meetod leiab kuu jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaKokku() - Meetod leiab kogu aja vältel kasutatud meetodid ja paringute arvu&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : CMS ==&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Veebirakendus ==&lt;br /&gt;
&lt;br /&gt;
== Meeskonna kokkuvõttev aruanne ==&lt;br /&gt;
&lt;br /&gt;
== Logi ==&lt;br /&gt;
=== 9. aprill ===&lt;br /&gt;
Tegime rollide halduse, münüüde muutmise vormi. Meili saatmine registreerimisel. Toimus andmebaasi andmemudeli väike muutus. &lt;br /&gt;
&lt;br /&gt;
=== 30. märts ===&lt;br /&gt;
Tehtud on kohviku menüü ja kohviku kommenteerimise leht.&lt;br /&gt;
&lt;br /&gt;
=== 26. märts ===&lt;br /&gt;
Tehtud on esimesed veebiteenuse meetodid ja veebirakendusele kasutajate registreerimine.&lt;br /&gt;
&lt;br /&gt;
=== 10. märts ===&lt;br /&gt;
Väikese häki abil õnnestus kohviku kassa arvutis saada tööle üks Forms-i proovirakendus.&lt;br /&gt;
&lt;br /&gt;
=== 8. märts ===&lt;br /&gt;
Kuna kassa-aparaadis on operatsioonisüsteemiks Windows XP ja raud on 1.99 GHz, 256 RAM siis peaks saama&lt;br /&gt;
prototüübiks teha sinna peale rakenduse, mille ülesandeks menüüga tegelemine. &lt;br /&gt;
&lt;br /&gt;
=== 7. märts ===&lt;br /&gt;
Linnar Viik andis meile järgmist nõu: tuleb eristada kahte asja - see, mis peab valmis saama (&#039;&#039;must&#039;&#039;) ja see, mis oleks tore (&#039;&#039;nice to have&#039;&#039;). Valmis peab saama menüüga ekraan seinal (esialgu kasutajale prototüübi näitamiseks kasvõi näiteks PowerPoint-i abil tehtud). Alles siis kui on kasutajalt positiivne tagasiside saadud, võib edasi minna reaalse tarkvaralahenduse loomisega. Kui ka see on valmis ja kasutaja sellega rahul võib juurde mõelda &#039;&#039;nice to have&#039;&#039; asju (näiteks eelinfo järgmise päeva menüü kohta, üliõpilasesinduse sõnumite riba ja muid asju).&lt;br /&gt;
&lt;br /&gt;
Saime teada, et kui tahame, et meie loodav süsteem suhtleks IT Kohviku kassasüsteemiga, siis tuleb selle süsteemi tootjatega ühendust võtta ja nendega konsulteerida.&lt;br /&gt;
&lt;br /&gt;
=== 19.Veebruar ===&lt;br /&gt;
*Valmis XSLT fail.&lt;br /&gt;
&lt;br /&gt;
=== 9.Veebruar ===&lt;br /&gt;
* Esmane versioon XML ja XML Schemast olemas&lt;br /&gt;
* Tekkis küsimus kas XSLT faili tuleb käsitsi tekitada või automaatselt.&lt;br /&gt;
* Küsimus oli ka kas lahendasime portsjoni asja mõistlikult või oleks mõni teine lähenemine parem olnud.&lt;br /&gt;
* Küsimus, kas XML fail on liiga üle pingutatud või sobiva keerukusega&lt;br /&gt;
&lt;br /&gt;
=== 7. Veebruar ===&lt;br /&gt;
* Võtsime õppejõu poolt pakutud ideest kohe kinni, sest me eelistame teha praktilist asja, mida saab kasutada ja mille kasutamist saame ka iga päev jälgida. &lt;br /&gt;
* Esimese asjana otsustasime välja uurida mida meie &amp;quot;kliendid&amp;quot; (süsteemi tellijad) meilt ootavad. (Soovid idee punkti all)&lt;br /&gt;
* Valminud on lihtne teenusest ja klientidest koosnev süsteemi testmudel.&lt;br /&gt;
&lt;br /&gt;
[[Category: Võrgurakendused II: hajussüsteemide ehitamine]]&lt;br /&gt;
[[Category: Veebirakenduste loomine ASP.NET abil]]&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=27160</id>
		<title>Meeskond &quot;FoodWars&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=27160"/>
		<updated>2011-04-17T17:55:36Z</updated>

		<summary type="html">&lt;p&gt;Rruga: /* xxx */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Idee ==&lt;br /&gt;
Meie tiimil on plaanis teha internetipõhine söökla menüü süsteem (aluseks IT Kolledži kohvik, aga suunitlus selline, et kõik kohvikud/sööklad saaksid teha endale kasutajakonto ja hakata rakendust kasutama), kust saaks jälgida menüüd, mis sööke saab süüa, mis veel järgi on, kasutajatel on ka võimalus sööke hinnata (stiilis &amp;quot;meeldib&amp;quot;, &amp;quot;ei meeldi&amp;quot; nagu Facebook-is).&lt;br /&gt;
&lt;br /&gt;
Kohvikupidaja Teele soovid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* elektroonilisest menüüst asju kustutada, isegi siis kui asja peaks olema teoreetiliselt alles, aga tegelikult on asi otsas.&lt;br /&gt;
* elektrikatkestuse korral jääb menüü püsima. Ta peab teadma hindu mistahes olukorras.&lt;br /&gt;
* menüül näidatakse automaatselt ka ISIC kaardi omanike soodushinnad&lt;br /&gt;
* süsteem toetab ka poole portsjoni müümist.&lt;br /&gt;
&lt;br /&gt;
Linnar Viigi soovid/visioonid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* kõik oleks ka internetist kättesaadav, peale LCD ekraani, mis kajastab menüüd sööklas.&lt;br /&gt;
* aluseks facebook, kus siis söögid oleks nagu facebook-i alateemad.&lt;br /&gt;
* saab sööke hinnata, kommenteerida (täna oli väga maitsev praad).&lt;br /&gt;
* kasutajad saaks vaadata, mis menüüs on (ka järgmisel nädalal) ja mitu portsu veel alles on.&lt;br /&gt;
* kasutajad saaksid välja pakkuda menüüsid.&lt;br /&gt;
* erinevate söögikohtade kasutajad saaksid omavahel muljeid jagada.&lt;br /&gt;
* kuu aja aktiivsemad saavad prii lõuna.&lt;br /&gt;
* mingil ajal võib olla &amp;quot;happy hour&amp;quot; (enne sulgemist saab odavamalt).&lt;br /&gt;
* piiranguks on see, et toitu broneerida ei saa &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vaba tarkvara kasutamise võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Antud projekti puhul oleks võimalik kasutada [http://www.postgresql.org/ PostgreSQL] andmebaasi (vt. lisaks http://en.wikipedia.org/wiki/PostgreSQL ) Microsoft SQL Server&#039;i asemel. See võiks anda kasutajale võimaluse valida .NET ning [http://www.mono-project.com/ Mono] (vt. lisaks http://en.wikipedia.org/wiki/Mono_(software) ) platvormide vahel. Sel viisil oleks kliendil võimalik Microsoft&#039;i platvormi kõrval valida tõenäoliselt soodsam vaba tarkvara platvorm. Andmebaasi lõplik valik pole hetkel veel otsustatud.&lt;br /&gt;
&lt;br /&gt;
== Meeskond ja tööjaotus==&lt;br /&gt;
* Kristjan Stolin - projektijuht, suhtlus kliendiga, XML, wiki, teenuskihtide progemine, rollide halduse lehe progemine&lt;br /&gt;
* Ilmar Telga - XML, kliendiga suhtlus, wiki, teenuskihtide progemine, lõpprakenduste menüüd, login&lt;br /&gt;
* Rauno Rüga - XML, XSLT, andmebaasi loomine, wiki, mobiilirakendus, statistika&lt;br /&gt;
* Lauri Kermas - teenuskihtide ehitamine, wiki, login, kommenteerimise võimaluste progemine&lt;br /&gt;
&lt;br /&gt;
== XML Fail ==&lt;br /&gt;
=== XML ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Toidud&amp;gt;&lt;br /&gt;
  &amp;lt;Toit&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduNimetus&amp;gt;Viineri kaste&amp;lt;/ToiduNimetus&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduLiik&amp;gt;Praad&amp;lt;/ToiduLiik&amp;gt;&lt;br /&gt;
    &amp;lt;OlemasolevatYhikut&amp;gt;5&amp;lt;/OlemasolevatYhikut&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduKogus&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Poolportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;2011&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;1&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;9&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;15&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;07&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;23&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;        &lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.15&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;0&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;0&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;0&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;00&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;00&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;00&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Täisportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.80&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
    &amp;lt;/ToiduKogus&amp;gt;&lt;br /&gt;
    &amp;lt;Kommentaarid&amp;gt;&lt;br /&gt;
      &amp;lt;Kommentaar&amp;gt;&lt;br /&gt;
        &amp;lt;Saatja&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaNimi&amp;gt;Kristjan&amp;lt;/SaatjaNimi&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaRoll&amp;gt;Tudeng&amp;lt;/SaatjaRoll&amp;gt;&lt;br /&gt;
        &amp;lt;/Saatja&amp;gt;&lt;br /&gt;
        &amp;lt;Sisu&amp;gt;Minu lemmik toit ! Kui algebra tund ei hakkaks, sööks veel 5 portsjonit.&amp;lt;/Sisu&amp;gt;&lt;br /&gt;
      &amp;lt;/Kommentaar&amp;gt;&lt;br /&gt;
    &amp;lt;/Kommentaarid&amp;gt;&lt;br /&gt;
  &amp;lt;/Toit&amp;gt;&lt;br /&gt;
&amp;lt;/Toidud&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kommentaariks siis niipalju, et meie näide on ilma kohviku osata, selleks et näidet mitte liiga suureks ajada.&lt;br /&gt;
&lt;br /&gt;
Ka on meil moment puudu ID väljad, mis on igasugu andmebaasiga suhtlemiseks hädavajalikud, samas siin näidises palju juurde ei anna.&lt;br /&gt;
&lt;br /&gt;
Asja tegemisel avastasime, et põhiliseks arusaamatuse kohaks on toitude erinevad kogused (ehk siis pool portsjonit, suur / väike ja muud võrdlevad ühikud). Esimese võimalusena kaalusime teha lihtsalt täiesti eraldi toidud kõige kohta, stiilis &amp;quot;väike viineripraad&amp;quot; ja &amp;quot;suur viineripraad&amp;quot;. Kahjuks see variant ei kõlbaks eriti hästi, kuna need erinevad portsjonid kasutavad ikkagi samu materjale ja kui me peaks mingi süsteemiga näitama kui palju portsjoneid alles on. Sööklast näiteks pakuti et väike portsjon kasutab materjale kuskil 0.8 suure portsjoni ulatuses, ehk see suhtarv peaks olema kasutaja poolt (kohvikupidaja, restoraniomanik) ise sätitav. &lt;br /&gt;
&lt;br /&gt;
Tänu sellele sai meie süsteemi alustalaks siiski Toit, millel on oma Portsjonid siis erinevate hindade ja soodustustega. Moment pole meil ka Portsjoni XML osas toodud ära seost kogusega. (Kui palju ühe portsjoni lisamine/müümine peaks toidu üldkogust muutma).&lt;br /&gt;
&lt;br /&gt;
Kommenteerida saab meil moment toitu ennast, mitte eraldi portsjonit. Isegi kui kasutajad tahavad lisada kommentaare stiilis &amp;quot;See väike supp oli tõesti väga väike&amp;quot;, ei soovi nad seda ilmselt eraldi portsjoni alla panna. Tulevikus peaks kindlasti olema ka võimalus pigem kommenteerida üldisemalt (Kohvikut ennast, söögipaiku üldse), kui spetsiifilisemalt (Väikse prae kaste lisandi kohta).&lt;br /&gt;
&lt;br /&gt;
=== XML Schema ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Toidud&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Toit&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduNimetus&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;OlemasolevatYhikut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduKogus&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:choice maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;PortsjoniLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;Myygiaeg&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Aasta&amp;quot; type=&amp;quot;xs:unsignedShort&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Kuu&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Paev&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Tund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Minut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Sekund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;ToiduHind&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Eurohind&amp;quot; type=&amp;quot;xs:decimal&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Soodustus&amp;quot;&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseProtsent&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:choice&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Kommentaarid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Saatja&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaNimi&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaRoll&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Sisu&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
  &amp;lt;h2&amp;gt;Kohvikus müüdavad toidud&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr bgcolor=&amp;quot;#9acd32&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Veel alles&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Portsjon&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Müügiaeg&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustuse liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Kommentaar(id)&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;Toidud/Toit&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduNimetus&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduLiik&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;OlemasolevatYhikut&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;PortsjoniLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Paev&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Kuu&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Aasta&amp;quot; /&amp;gt; &amp;amp;nbsp;  &lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Tund&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Minut&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Sekund&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Eurohind&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseProtsent&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Kommentaarid/Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Sisu&amp;quot; /&amp;gt;&amp;amp;nbsp;(&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaRoll&amp;quot; /&amp;gt;&amp;amp;nbsp;&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaNimi&amp;quot; /&amp;gt;)&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XSLT poolt loodud tulemus on järgnev (lisasin veel kaks toitu XML faili, siin wiki lehel on ruumi kokkuhoiuks vaid 1 toit toitude listis):&lt;br /&gt;
[[File:Xslt.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arhitektuur ==&lt;br /&gt;
&lt;br /&gt;
Süsteem oli vahepeal plaanis ehitada kolmekihilise arhitektuuriga ([http://en.wikipedia.org/wiki/Multitier_architecture#Three-tier_architecture Three-tier architecture]). See peaks lihtsustama süsteemi haldamist ja laiendamist tulevikus. Aga kuna selle jaoks otsest vajadust polenud ja oleks vaid süsteemi keeruliseks ajanud, siis loobusime sellest.&lt;br /&gt;
&lt;br /&gt;
[[Image:three-tier.png|thumb|center|alt=Arhitektuuri skeem.|Arhitektuuri skeem.]]&lt;br /&gt;
&lt;br /&gt;
== Veebiteenus ==&lt;br /&gt;
===Andmemudel===&lt;br /&gt;
[[Image:KohvikuAndmemudel.jpg|thumb|right|alt=Kohviku projekti andmemudel|Andmemudel]]&lt;br /&gt;
Enne veebiteenuse meetodite kirjeldamist koostasime andmemudeli. Loodud andmemudeli põhjal lõime andmebaasi vajalike tabelite ja atribuutidega. Andmemudeli peal on rohelisega tähistatud tabelid, mis on oseselt seotud kohviku valdajaga ja mida WPF rakenduse jaoks kindlasti vaja on. Ülejäänud helesinised tabelid on vajalikud kasutajate võimaluste jaoks. Lisaks on andmemudelil kaks tabelit, mis pole teisega seotud, need on süsteemi administraatori jaoks, et oleks ülevaade, mis rakendused teenust enim kasutavad ning mis meetodeid kõige rohkem välja kutsutakse.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Teenuskihis olevad meetodid===&lt;br /&gt;
&lt;br /&gt;
*KohvikuteArv() - Tagastab kõigi kohvikute arvu&lt;br /&gt;
*SaidiKasutajaLiik() - Tagastab antud kasutaja ID järgi kasutaja liigi nimetuse&lt;br /&gt;
*KustutaSaidiKasutaja() - Kustutab antud kasutaja ID järgi kasutaja tabelis Kasutaja&lt;br /&gt;
*AnnaKoikSaidiKasutajad() - Tagastab kõik kirjed tabelist Kasutaja&lt;br /&gt;
*LisaArtikkelMenuuse() - Seob menüüartikli ja menüü&lt;br /&gt;
*LisaKohvikuleMenuu() - Seob menüü ja kohviku&lt;br /&gt;
*TagastabMenuuMuutujad() - Tagastab menüü järgi kas inimesel oleks õigust seda muuta&lt;br /&gt;
*KustutaMenuuJaKohvikuSeos() - Kustutab menüü ja kohviku seose&lt;br /&gt;
*LisaUusMenuu() - Teeb uue menüü, seob selle kohvikuga, kui kohviku ID on parameetrina kaasa antud&lt;br /&gt;
*KohvikuteNimed() - Tagastab kõigi kohvikute nimed massiivina&lt;br /&gt;
*KohvikuNimiIdJargi() - Tagastab antud kohviku ID järgi kohviku nime&lt;br /&gt;
*AnnaKoikOmanikuKohvikud() - Tagastab antud omaniku ID järgi kõik omaniku kohvikute ID-d massiivina&lt;br /&gt;
*AnnaKoikKohvikuKasutajad() - Tagastab antud kohviku ID järgi kõik kohviku kasutajad massiivina&lt;br /&gt;
*MuudaSaidiKasutajaLiik() - Muudab antud kasutaja ID järgi kasutaja liigi tabelis Kasutaja&lt;br /&gt;
*KoikLubatudSaidiKasutajaTyybid() - Tagastab andmebaasi kõik võimalikud kohviku kasutaja rollid (id-d ja nimed), muud andmed jäävad tühjaks&lt;br /&gt;
*KoikLubatudKohvikuRollid() - Tagastab andmebaasi kõik võimalikud site kasutaja rollid (id-d ja nimed), kohviku_id jääb tühjaks&lt;br /&gt;
*KasutajaKohvikuRollid() - Tagastab antud kasutaja ID järgi kõik kasutaja rollid kõikides kohvikutes&lt;br /&gt;
*MuudaKohvikuKasutajaRoll() - Muudab antud kasutaja ID ja kohviku ID järgi kasutaja rolli kohvikus, kui rolli pole, siis tekitatakse uus&lt;br /&gt;
*SaidiKasutajaLiikID() - Tagastab antud kasutaja ID järgi kasutaja liigi ID&lt;br /&gt;
*Kohvikud() - Tagastab kõik kohvikute kirjed tabelist Kohvik&lt;br /&gt;
*KohvikuKasutajaLiikID() - Tagastab antud kasutaja ID ja kohviku ID järgi kohviku kasutaja rolli ID&lt;br /&gt;
*MenuuKohvikuIdJargi() - Tagastab kohviku ID järgi kohviku tänaste või mitte tänaste menüüde ID-de massiivi&lt;br /&gt;
*LisaMenuuArtikkelMenuuse() - Sisestab antud müügiartikli menüüsse, mille ID on menyy_id&lt;br /&gt;
*KustutaMenuuArtikkel() - Kustutab müügiartikli ID ja menüü ID järgi müügiartikli menüüst&lt;br /&gt;
*TagastaMenuuArtiklid() - Tagastab menüü ID järgi menüüs olevad müügiartiklid&lt;br /&gt;
*VahetaMenuuArtiklit() - Muudab antud müügiartikli tabelis Myygiartikkel&lt;br /&gt;
*MenuuNimetus() - Tagastab menüü ID järgi menüü nimetuse&lt;br /&gt;
*AnnaMuugiartiklidMidaMenuusPole() - Tagastab müügiartiklid, mis pole veel menüüs, kus on juba müügiartiklid, mille IDd on antud massiivis&lt;br /&gt;
*AnnaMenuuNimed() - Tagastab kõigi menüüde nimetused tabelis Menyy&lt;br /&gt;
*AnnaKaubad() - Tagastab kõik kaubad tabelist Kaup&lt;br /&gt;
*LisaKaup() - Lisab kauba kaupade nimekirja&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====xxx====&lt;br /&gt;
*AnnaKasutajaMeiliAadress() - Tagastab antud kasutaja nime alusel kasutaja meiliaadressi&lt;br /&gt;
*AnnaKasutajaIdJargi() - Tagastab kasutajanime kasutaja ID järgi&lt;br /&gt;
*AuthendiKasutaja() - Autendib kasutaja, õnnestumisel tagastab kasutaja ID, ebaõnnestumisel null &lt;br /&gt;
*RegistreeriKasutaja() - Registreerib kasutaja andmebaasi ja tagastab true kui kasutaja loomine õnnestus&lt;br /&gt;
&lt;br /&gt;
====Kommentaaridega seotud meetodid:====&lt;br /&gt;
*KohvikuKommentaarideArv() - Kohviku kommentaaride arv&lt;br /&gt;
*AnnaKohvikuKommentaarid() - Tagastab kommentaarid lehtede kaupa&lt;br /&gt;
*AnnaKohvikuKommentaarideHinded() - Tagastab kommentaaride jaoks võimalikud hinded koos kirjeldustega&lt;br /&gt;
*LisaKohvikuKommentaar() - Lisab kohviku kommentaari&lt;br /&gt;
&lt;br /&gt;
====Statistikaga seotud meetodid:====&lt;br /&gt;
*StatistikaRakendusteKohtaTana() - Tagastab rakenduse nimed ja nende vastu tehtud päringud tänasel päeval&lt;br /&gt;
*StatistikaRakendusteKohtaViimaneNadal() - Tagastab rakenduse nimed ja nende vastu tehtud päringud viimase nädala jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaSellelKuul() - Tagastab rakenduse nimed ja nende vastu tehtud päringud selle kuu jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaKokku() - Tagastab rakenduse nimed ja nende vastu tehtud päringud kogu aja vältel&lt;br /&gt;
&lt;br /&gt;
*StatistikaMeetoditeKohtaTana() - Meetod leiab tänase päeva jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaViimaneNadal() - Meetod leiab viimase nädala jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaSellelKuul() - Meetod leiab kuu jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaKokku() - Meetod leiab kogu aja vältel kasutatud meetodid ja paringute arvu&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : CMS ==&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Veebirakendus ==&lt;br /&gt;
&lt;br /&gt;
== Meeskonna kokkuvõttev aruanne ==&lt;br /&gt;
&lt;br /&gt;
== Logi ==&lt;br /&gt;
=== 9. aprill ===&lt;br /&gt;
Tegime rollide halduse, münüüde muutmise vormi. Meili saatmine registreerimisel. Toimus andmebaasi andmemudeli väike muutus. &lt;br /&gt;
&lt;br /&gt;
=== 30. märts ===&lt;br /&gt;
Tehtud on kohviku menüü ja kohviku kommenteerimise leht.&lt;br /&gt;
&lt;br /&gt;
=== 26. märts ===&lt;br /&gt;
Tehtud on esimesed veebiteenuse meetodid ja veebirakendusele kasutajate registreerimine.&lt;br /&gt;
&lt;br /&gt;
=== 10. märts ===&lt;br /&gt;
Väikese häki abil õnnestus kohviku kassa arvutis saada tööle üks Forms-i proovirakendus.&lt;br /&gt;
&lt;br /&gt;
=== 8. märts ===&lt;br /&gt;
Kuna kassa-aparaadis on operatsioonisüsteemiks Windows XP ja raud on 1.99 GHz, 256 RAM siis peaks saama&lt;br /&gt;
prototüübiks teha sinna peale rakenduse, mille ülesandeks menüüga tegelemine. &lt;br /&gt;
&lt;br /&gt;
=== 7. märts ===&lt;br /&gt;
Linnar Viik andis meile järgmist nõu: tuleb eristada kahte asja - see, mis peab valmis saama (&#039;&#039;must&#039;&#039;) ja see, mis oleks tore (&#039;&#039;nice to have&#039;&#039;). Valmis peab saama menüüga ekraan seinal (esialgu kasutajale prototüübi näitamiseks kasvõi näiteks PowerPoint-i abil tehtud). Alles siis kui on kasutajalt positiivne tagasiside saadud, võib edasi minna reaalse tarkvaralahenduse loomisega. Kui ka see on valmis ja kasutaja sellega rahul võib juurde mõelda &#039;&#039;nice to have&#039;&#039; asju (näiteks eelinfo järgmise päeva menüü kohta, üliõpilasesinduse sõnumite riba ja muid asju).&lt;br /&gt;
&lt;br /&gt;
Saime teada, et kui tahame, et meie loodav süsteem suhtleks IT Kohviku kassasüsteemiga, siis tuleb selle süsteemi tootjatega ühendust võtta ja nendega konsulteerida.&lt;br /&gt;
&lt;br /&gt;
=== 19.Veebruar ===&lt;br /&gt;
*Valmis XSLT fail.&lt;br /&gt;
&lt;br /&gt;
=== 9.Veebruar ===&lt;br /&gt;
* Esmane versioon XML ja XML Schemast olemas&lt;br /&gt;
* Tekkis küsimus kas XSLT faili tuleb käsitsi tekitada või automaatselt.&lt;br /&gt;
* Küsimus oli ka kas lahendasime portsjoni asja mõistlikult või oleks mõni teine lähenemine parem olnud.&lt;br /&gt;
* Küsimus, kas XML fail on liiga üle pingutatud või sobiva keerukusega&lt;br /&gt;
&lt;br /&gt;
=== 7. Veebruar ===&lt;br /&gt;
* Võtsime õppejõu poolt pakutud ideest kohe kinni, sest me eelistame teha praktilist asja, mida saab kasutada ja mille kasutamist saame ka iga päev jälgida. &lt;br /&gt;
* Esimese asjana otsustasime välja uurida mida meie &amp;quot;kliendid&amp;quot; (süsteemi tellijad) meilt ootavad. (Soovid idee punkti all)&lt;br /&gt;
* Valminud on lihtne teenusest ja klientidest koosnev süsteemi testmudel.&lt;br /&gt;
&lt;br /&gt;
[[Category: Võrgurakendused II: hajussüsteemide ehitamine]]&lt;br /&gt;
[[Category: Veebirakenduste loomine ASP.NET abil]]&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=27157</id>
		<title>Meeskond &quot;FoodWars&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=27157"/>
		<updated>2011-04-17T17:43:57Z</updated>

		<summary type="html">&lt;p&gt;Rruga: /* Teenuskihis olevad meetodid */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Idee ==&lt;br /&gt;
Meie tiimil on plaanis teha internetipõhine söökla menüü süsteem (aluseks IT Kolledži kohvik, aga suunitlus selline, et kõik kohvikud/sööklad saaksid teha endale kasutajakonto ja hakata rakendust kasutama), kust saaks jälgida menüüd, mis sööke saab süüa, mis veel järgi on, kasutajatel on ka võimalus sööke hinnata (stiilis &amp;quot;meeldib&amp;quot;, &amp;quot;ei meeldi&amp;quot; nagu Facebook-is).&lt;br /&gt;
&lt;br /&gt;
Kohvikupidaja Teele soovid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* elektroonilisest menüüst asju kustutada, isegi siis kui asja peaks olema teoreetiliselt alles, aga tegelikult on asi otsas.&lt;br /&gt;
* elektrikatkestuse korral jääb menüü püsima. Ta peab teadma hindu mistahes olukorras.&lt;br /&gt;
* menüül näidatakse automaatselt ka ISIC kaardi omanike soodushinnad&lt;br /&gt;
* süsteem toetab ka poole portsjoni müümist.&lt;br /&gt;
&lt;br /&gt;
Linnar Viigi soovid/visioonid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* kõik oleks ka internetist kättesaadav, peale LCD ekraani, mis kajastab menüüd sööklas.&lt;br /&gt;
* aluseks facebook, kus siis söögid oleks nagu facebook-i alateemad.&lt;br /&gt;
* saab sööke hinnata, kommenteerida (täna oli väga maitsev praad).&lt;br /&gt;
* kasutajad saaks vaadata, mis menüüs on (ka järgmisel nädalal) ja mitu portsu veel alles on.&lt;br /&gt;
* kasutajad saaksid välja pakkuda menüüsid.&lt;br /&gt;
* erinevate söögikohtade kasutajad saaksid omavahel muljeid jagada.&lt;br /&gt;
* kuu aja aktiivsemad saavad prii lõuna.&lt;br /&gt;
* mingil ajal võib olla &amp;quot;happy hour&amp;quot; (enne sulgemist saab odavamalt).&lt;br /&gt;
* piiranguks on see, et toitu broneerida ei saa &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vaba tarkvara kasutamise võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Antud projekti puhul oleks võimalik kasutada [http://www.postgresql.org/ PostgreSQL] andmebaasi (vt. lisaks http://en.wikipedia.org/wiki/PostgreSQL ) Microsoft SQL Server&#039;i asemel. See võiks anda kasutajale võimaluse valida .NET ning [http://www.mono-project.com/ Mono] (vt. lisaks http://en.wikipedia.org/wiki/Mono_(software) ) platvormide vahel. Sel viisil oleks kliendil võimalik Microsoft&#039;i platvormi kõrval valida tõenäoliselt soodsam vaba tarkvara platvorm. Andmebaasi lõplik valik pole hetkel veel otsustatud.&lt;br /&gt;
&lt;br /&gt;
== Meeskond ja tööjaotus==&lt;br /&gt;
* Kristjan Stolin - projektijuht, suhtlus kliendiga, XML, wiki, teenuskihtide progemine, rollide halduse lehe progemine&lt;br /&gt;
* Ilmar Telga - XML, kliendiga suhtlus, wiki, teenuskihtide progemine, lõpprakenduste menüüd, login&lt;br /&gt;
* Rauno Rüga - XML, XSLT, andmebaasi loomine, wiki, mobiilirakendus, statistika&lt;br /&gt;
* Lauri Kermas - teenuskihtide ehitamine, wiki, login, kommenteerimise võimaluste progemine&lt;br /&gt;
&lt;br /&gt;
== XML Fail ==&lt;br /&gt;
=== XML ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Toidud&amp;gt;&lt;br /&gt;
  &amp;lt;Toit&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduNimetus&amp;gt;Viineri kaste&amp;lt;/ToiduNimetus&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduLiik&amp;gt;Praad&amp;lt;/ToiduLiik&amp;gt;&lt;br /&gt;
    &amp;lt;OlemasolevatYhikut&amp;gt;5&amp;lt;/OlemasolevatYhikut&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduKogus&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Poolportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;2011&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;1&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;9&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;15&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;07&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;23&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;        &lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.15&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;0&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;0&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;0&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;00&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;00&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;00&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Täisportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.80&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
    &amp;lt;/ToiduKogus&amp;gt;&lt;br /&gt;
    &amp;lt;Kommentaarid&amp;gt;&lt;br /&gt;
      &amp;lt;Kommentaar&amp;gt;&lt;br /&gt;
        &amp;lt;Saatja&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaNimi&amp;gt;Kristjan&amp;lt;/SaatjaNimi&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaRoll&amp;gt;Tudeng&amp;lt;/SaatjaRoll&amp;gt;&lt;br /&gt;
        &amp;lt;/Saatja&amp;gt;&lt;br /&gt;
        &amp;lt;Sisu&amp;gt;Minu lemmik toit ! Kui algebra tund ei hakkaks, sööks veel 5 portsjonit.&amp;lt;/Sisu&amp;gt;&lt;br /&gt;
      &amp;lt;/Kommentaar&amp;gt;&lt;br /&gt;
    &amp;lt;/Kommentaarid&amp;gt;&lt;br /&gt;
  &amp;lt;/Toit&amp;gt;&lt;br /&gt;
&amp;lt;/Toidud&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kommentaariks siis niipalju, et meie näide on ilma kohviku osata, selleks et näidet mitte liiga suureks ajada.&lt;br /&gt;
&lt;br /&gt;
Ka on meil moment puudu ID väljad, mis on igasugu andmebaasiga suhtlemiseks hädavajalikud, samas siin näidises palju juurde ei anna.&lt;br /&gt;
&lt;br /&gt;
Asja tegemisel avastasime, et põhiliseks arusaamatuse kohaks on toitude erinevad kogused (ehk siis pool portsjonit, suur / väike ja muud võrdlevad ühikud). Esimese võimalusena kaalusime teha lihtsalt täiesti eraldi toidud kõige kohta, stiilis &amp;quot;väike viineripraad&amp;quot; ja &amp;quot;suur viineripraad&amp;quot;. Kahjuks see variant ei kõlbaks eriti hästi, kuna need erinevad portsjonid kasutavad ikkagi samu materjale ja kui me peaks mingi süsteemiga näitama kui palju portsjoneid alles on. Sööklast näiteks pakuti et väike portsjon kasutab materjale kuskil 0.8 suure portsjoni ulatuses, ehk see suhtarv peaks olema kasutaja poolt (kohvikupidaja, restoraniomanik) ise sätitav. &lt;br /&gt;
&lt;br /&gt;
Tänu sellele sai meie süsteemi alustalaks siiski Toit, millel on oma Portsjonid siis erinevate hindade ja soodustustega. Moment pole meil ka Portsjoni XML osas toodud ära seost kogusega. (Kui palju ühe portsjoni lisamine/müümine peaks toidu üldkogust muutma).&lt;br /&gt;
&lt;br /&gt;
Kommenteerida saab meil moment toitu ennast, mitte eraldi portsjonit. Isegi kui kasutajad tahavad lisada kommentaare stiilis &amp;quot;See väike supp oli tõesti väga väike&amp;quot;, ei soovi nad seda ilmselt eraldi portsjoni alla panna. Tulevikus peaks kindlasti olema ka võimalus pigem kommenteerida üldisemalt (Kohvikut ennast, söögipaiku üldse), kui spetsiifilisemalt (Väikse prae kaste lisandi kohta).&lt;br /&gt;
&lt;br /&gt;
=== XML Schema ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Toidud&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Toit&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduNimetus&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;OlemasolevatYhikut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduKogus&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:choice maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;PortsjoniLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;Myygiaeg&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Aasta&amp;quot; type=&amp;quot;xs:unsignedShort&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Kuu&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Paev&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Tund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Minut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Sekund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;ToiduHind&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Eurohind&amp;quot; type=&amp;quot;xs:decimal&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Soodustus&amp;quot;&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseProtsent&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:choice&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Kommentaarid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Saatja&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaNimi&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaRoll&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Sisu&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
  &amp;lt;h2&amp;gt;Kohvikus müüdavad toidud&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr bgcolor=&amp;quot;#9acd32&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Veel alles&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Portsjon&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Müügiaeg&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustuse liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Kommentaar(id)&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;Toidud/Toit&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduNimetus&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduLiik&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;OlemasolevatYhikut&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;PortsjoniLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Paev&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Kuu&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Aasta&amp;quot; /&amp;gt; &amp;amp;nbsp;  &lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Tund&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Minut&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Sekund&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Eurohind&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseProtsent&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Kommentaarid/Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Sisu&amp;quot; /&amp;gt;&amp;amp;nbsp;(&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaRoll&amp;quot; /&amp;gt;&amp;amp;nbsp;&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaNimi&amp;quot; /&amp;gt;)&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XSLT poolt loodud tulemus on järgnev (lisasin veel kaks toitu XML faili, siin wiki lehel on ruumi kokkuhoiuks vaid 1 toit toitude listis):&lt;br /&gt;
[[File:Xslt.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arhitektuur ==&lt;br /&gt;
&lt;br /&gt;
Süsteem oli vahepeal plaanis ehitada kolmekihilise arhitektuuriga ([http://en.wikipedia.org/wiki/Multitier_architecture#Three-tier_architecture Three-tier architecture]). See peaks lihtsustama süsteemi haldamist ja laiendamist tulevikus. Aga kuna selle jaoks otsest vajadust polenud ja oleks vaid süsteemi keeruliseks ajanud, siis loobusime sellest.&lt;br /&gt;
&lt;br /&gt;
[[Image:three-tier.png|thumb|center|alt=Arhitektuuri skeem.|Arhitektuuri skeem.]]&lt;br /&gt;
&lt;br /&gt;
== Veebiteenus ==&lt;br /&gt;
===Andmemudel===&lt;br /&gt;
[[Image:KohvikuAndmemudel.jpg|thumb|right|alt=Kohviku projekti andmemudel|Andmemudel]]&lt;br /&gt;
Enne veebiteenuse meetodite kirjeldamist koostasime andmemudeli. Loodud andmemudeli põhjal lõime andmebaasi vajalike tabelite ja atribuutidega. Andmemudeli peal on rohelisega tähistatud tabelid, mis on oseselt seotud kohviku valdajaga ja mida WPF rakenduse jaoks kindlasti vaja on. Ülejäänud helesinised tabelid on vajalikud kasutajate võimaluste jaoks. Lisaks on andmemudelil kaks tabelit, mis pole teisega seotud, need on süsteemi administraatori jaoks, et oleks ülevaade, mis rakendused teenust enim kasutavad ning mis meetodeid kõige rohkem välja kutsutakse.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Teenuskihis olevad meetodid===&lt;br /&gt;
&lt;br /&gt;
*KohvikuteArv() - Tagastab kõigi kohvikute arvu&lt;br /&gt;
*SaidiKasutajaLiik() - Tagastab antud kasutaja ID järgi kasutaja liigi nimetuse&lt;br /&gt;
*KustutaSaidiKasutaja() - Kustutab antud kasutaja ID järgi kasutaja tabelis Kasutaja&lt;br /&gt;
*AnnaKoikSaidiKasutajad() - Tagastab kõik kirjed tabelist Kasutaja&lt;br /&gt;
*LisaArtikkelMenuuse() - Seob menüüartikli ja menüü&lt;br /&gt;
*LisaKohvikuleMenuu() - Seob menüü ja kohviku&lt;br /&gt;
*TagastabMenuuMuutujad() - Tagastab menüü järgi kas inimesel oleks õigust seda muuta&lt;br /&gt;
*KustutaMenuuJaKohvikuSeos() - Kustutab menüü ja kohviku seose&lt;br /&gt;
*LisaUusMenuu() - Teeb uue menüü, seob selle kohvikuga, kui kohviku ID on parameetrina kaasa antud&lt;br /&gt;
*KohvikuteNimed() - Tagastab kõigi kohvikute nimed massiivina&lt;br /&gt;
*KohvikuNimiIdJargi() - Tagastab antud kohviku ID järgi kohviku nime&lt;br /&gt;
*AnnaKoikOmanikuKohvikud() - Tagastab antud omaniku ID järgi kõik omaniku kohvikute ID-d massiivina&lt;br /&gt;
*AnnaKoikKohvikuKasutajad() - Tagastab antud kohviku ID järgi kõik kohviku kasutajad massiivina&lt;br /&gt;
*MuudaSaidiKasutajaLiik() - Muudab antud kasutaja ID järgi kasutaja liigi tabelis Kasutaja&lt;br /&gt;
*KoikLubatudSaidiKasutajaTyybid() - Tagastab andmebaasi kõik võimalikud kohviku kasutaja rollid (id-d ja nimed), muud andmed jäävad tühjaks&lt;br /&gt;
*KoikLubatudKohvikuRollid() - Tagastab andmebaasi kõik võimalikud site kasutaja rollid (id-d ja nimed), kohviku_id jääb tühjaks&lt;br /&gt;
*KasutajaKohvikuRollid() - Tagastab antud kasutaja ID järgi kõik kasutaja rollid kõikides kohvikutes&lt;br /&gt;
*MuudaKohvikuKasutajaRoll() - Muudab antud kasutaja ID ja kohviku ID järgi kasutaja rolli kohvikus, kui rolli pole, siis tekitatakse uus&lt;br /&gt;
*SaidiKasutajaLiikID() - Tagastab antud kasutaja ID järgi kasutaja liigi ID&lt;br /&gt;
*Kohvikud() - Tagastab kõik kohvikute kirjed tabelist Kohvik&lt;br /&gt;
*KohvikuKasutajaLiikID() - Tagastab antud kasutaja ID ja kohviku ID järgi kohviku kasutaja rolli ID&lt;br /&gt;
*MenuuKohvikuIdJargi() - Tagastab kohviku ID järgi kohviku tänaste või mitte tänaste menüüde ID-de massiivi&lt;br /&gt;
*LisaMenuuArtikkelMenuuse() - Sisestab antud müügiartikli menüüsse, mille ID on menyy_id&lt;br /&gt;
*KustutaMenuuArtikkel() - Kustutab müügiartikli ID ja menüü ID järgi müügiartikli menüüst&lt;br /&gt;
*TagastaMenuuArtiklid() - Tagastab menüü ID järgi menüüs olevad müügiartiklid&lt;br /&gt;
*VahetaMenuuArtiklit() - Muudab antud müügiartikli tabelis Myygiartikkel&lt;br /&gt;
*MenuuNimetus() - Tagastab menüü ID järgi menüü nimetuse&lt;br /&gt;
*AnnaMuugiartiklidMidaMenuusPole() - Tagastab müügiartiklid, mis pole veel menüüs, kus on juba müügiartiklid, mille IDd on antud massiivis&lt;br /&gt;
*AnnaMenuuNimed() - Tagastab kõigi menüüde nimetused tabelis Menyy&lt;br /&gt;
*AnnaKaubad() - Tagastab kõik kaubad tabelist Kaup&lt;br /&gt;
*LisaKaup() - Lisab kauba kaupade nimekirja&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====xxx====&lt;br /&gt;
AnnaKasutajaMeiliAadress() - Tagastab antud kasutaja nime alusel kasutaja meiliaadressi&lt;br /&gt;
AnnaKasutajaIdJargi() - Tagastab kasutajanime kasutaja ID järgi&lt;br /&gt;
AuthendiKasutaja() - Autendib kasutaja, õnnestumisel tagastab kasutaja ID, ebaõnnestumisel null &lt;br /&gt;
RegistreeriKasutaja() - Registreerib kasutaja andmebaasi ja tagastab true kui kasutaja loomine õnnestus&lt;br /&gt;
&lt;br /&gt;
====Kommentaaridega seotud meetodid:====&lt;br /&gt;
*KohvikuKommentaarideArv() - Kohviku kommentaaride arv&lt;br /&gt;
*AnnaKohvikuKommentaarid() - Tagastab kommentaarid lehtede kaupa&lt;br /&gt;
*AnnaKohvikuKommentaarideHinded() - Tagastab kommentaaride jaoks võimalikud hinded koos kirjeldustega&lt;br /&gt;
*LisaKohvikuKommentaar() - Lisab kohviku kommentaari&lt;br /&gt;
&lt;br /&gt;
====Statistikaga seotud meetodid:====&lt;br /&gt;
*StatistikaRakendusteKohtaTana() - Tagastab rakenduse nimed ja nende vastu tehtud päringud tänasel päeval&lt;br /&gt;
*StatistikaRakendusteKohtaViimaneNadal() - Tagastab rakenduse nimed ja nende vastu tehtud päringud viimase nädala jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaSellelKuul() - Tagastab rakenduse nimed ja nende vastu tehtud päringud selle kuu jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaKokku() - Tagastab rakenduse nimed ja nende vastu tehtud päringud kogu aja vältel&lt;br /&gt;
&lt;br /&gt;
*StatistikaMeetoditeKohtaTana() - Meetod leiab tänase päeva jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaViimaneNadal() - Meetod leiab viimase nädala jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaSellelKuul() - Meetod leiab kuu jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaKokku() - Meetod leiab kogu aja vältel kasutatud meetodid ja paringute arvu&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : CMS ==&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Veebirakendus ==&lt;br /&gt;
&lt;br /&gt;
== Meeskonna kokkuvõttev aruanne ==&lt;br /&gt;
&lt;br /&gt;
== Logi ==&lt;br /&gt;
=== 9. aprill ===&lt;br /&gt;
Tegime rollide halduse, münüüde muutmise vormi. Meili saatmine registreerimisel. Toimus andmebaasi andmemudeli väike muutus. &lt;br /&gt;
&lt;br /&gt;
=== 30. märts ===&lt;br /&gt;
Tehtud on kohviku menüü ja kohviku kommenteerimise leht.&lt;br /&gt;
&lt;br /&gt;
=== 26. märts ===&lt;br /&gt;
Tehtud on esimesed veebiteenuse meetodid ja veebirakendusele kasutajate registreerimine.&lt;br /&gt;
&lt;br /&gt;
=== 10. märts ===&lt;br /&gt;
Väikese häki abil õnnestus kohviku kassa arvutis saada tööle üks Forms-i proovirakendus.&lt;br /&gt;
&lt;br /&gt;
=== 8. märts ===&lt;br /&gt;
Kuna kassa-aparaadis on operatsioonisüsteemiks Windows XP ja raud on 1.99 GHz, 256 RAM siis peaks saama&lt;br /&gt;
prototüübiks teha sinna peale rakenduse, mille ülesandeks menüüga tegelemine. &lt;br /&gt;
&lt;br /&gt;
=== 7. märts ===&lt;br /&gt;
Linnar Viik andis meile järgmist nõu: tuleb eristada kahte asja - see, mis peab valmis saama (&#039;&#039;must&#039;&#039;) ja see, mis oleks tore (&#039;&#039;nice to have&#039;&#039;). Valmis peab saama menüüga ekraan seinal (esialgu kasutajale prototüübi näitamiseks kasvõi näiteks PowerPoint-i abil tehtud). Alles siis kui on kasutajalt positiivne tagasiside saadud, võib edasi minna reaalse tarkvaralahenduse loomisega. Kui ka see on valmis ja kasutaja sellega rahul võib juurde mõelda &#039;&#039;nice to have&#039;&#039; asju (näiteks eelinfo järgmise päeva menüü kohta, üliõpilasesinduse sõnumite riba ja muid asju).&lt;br /&gt;
&lt;br /&gt;
Saime teada, et kui tahame, et meie loodav süsteem suhtleks IT Kohviku kassasüsteemiga, siis tuleb selle süsteemi tootjatega ühendust võtta ja nendega konsulteerida.&lt;br /&gt;
&lt;br /&gt;
=== 19.Veebruar ===&lt;br /&gt;
*Valmis XSLT fail.&lt;br /&gt;
&lt;br /&gt;
=== 9.Veebruar ===&lt;br /&gt;
* Esmane versioon XML ja XML Schemast olemas&lt;br /&gt;
* Tekkis küsimus kas XSLT faili tuleb käsitsi tekitada või automaatselt.&lt;br /&gt;
* Küsimus oli ka kas lahendasime portsjoni asja mõistlikult või oleks mõni teine lähenemine parem olnud.&lt;br /&gt;
* Küsimus, kas XML fail on liiga üle pingutatud või sobiva keerukusega&lt;br /&gt;
&lt;br /&gt;
=== 7. Veebruar ===&lt;br /&gt;
* Võtsime õppejõu poolt pakutud ideest kohe kinni, sest me eelistame teha praktilist asja, mida saab kasutada ja mille kasutamist saame ka iga päev jälgida. &lt;br /&gt;
* Esimese asjana otsustasime välja uurida mida meie &amp;quot;kliendid&amp;quot; (süsteemi tellijad) meilt ootavad. (Soovid idee punkti all)&lt;br /&gt;
* Valminud on lihtne teenusest ja klientidest koosnev süsteemi testmudel.&lt;br /&gt;
&lt;br /&gt;
[[Category: Võrgurakendused II: hajussüsteemide ehitamine]]&lt;br /&gt;
[[Category: Veebirakenduste loomine ASP.NET abil]]&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=27154</id>
		<title>Meeskond &quot;FoodWars&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=27154"/>
		<updated>2011-04-17T17:35:05Z</updated>

		<summary type="html">&lt;p&gt;Rruga: /* Teenuskihis olevad meetodid */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Idee ==&lt;br /&gt;
Meie tiimil on plaanis teha internetipõhine söökla menüü süsteem (aluseks IT Kolledži kohvik, aga suunitlus selline, et kõik kohvikud/sööklad saaksid teha endale kasutajakonto ja hakata rakendust kasutama), kust saaks jälgida menüüd, mis sööke saab süüa, mis veel järgi on, kasutajatel on ka võimalus sööke hinnata (stiilis &amp;quot;meeldib&amp;quot;, &amp;quot;ei meeldi&amp;quot; nagu Facebook-is).&lt;br /&gt;
&lt;br /&gt;
Kohvikupidaja Teele soovid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* elektroonilisest menüüst asju kustutada, isegi siis kui asja peaks olema teoreetiliselt alles, aga tegelikult on asi otsas.&lt;br /&gt;
* elektrikatkestuse korral jääb menüü püsima. Ta peab teadma hindu mistahes olukorras.&lt;br /&gt;
* menüül näidatakse automaatselt ka ISIC kaardi omanike soodushinnad&lt;br /&gt;
* süsteem toetab ka poole portsjoni müümist.&lt;br /&gt;
&lt;br /&gt;
Linnar Viigi soovid/visioonid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* kõik oleks ka internetist kättesaadav, peale LCD ekraani, mis kajastab menüüd sööklas.&lt;br /&gt;
* aluseks facebook, kus siis söögid oleks nagu facebook-i alateemad.&lt;br /&gt;
* saab sööke hinnata, kommenteerida (täna oli väga maitsev praad).&lt;br /&gt;
* kasutajad saaks vaadata, mis menüüs on (ka järgmisel nädalal) ja mitu portsu veel alles on.&lt;br /&gt;
* kasutajad saaksid välja pakkuda menüüsid.&lt;br /&gt;
* erinevate söögikohtade kasutajad saaksid omavahel muljeid jagada.&lt;br /&gt;
* kuu aja aktiivsemad saavad prii lõuna.&lt;br /&gt;
* mingil ajal võib olla &amp;quot;happy hour&amp;quot; (enne sulgemist saab odavamalt).&lt;br /&gt;
* piiranguks on see, et toitu broneerida ei saa &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vaba tarkvara kasutamise võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Antud projekti puhul oleks võimalik kasutada [http://www.postgresql.org/ PostgreSQL] andmebaasi (vt. lisaks http://en.wikipedia.org/wiki/PostgreSQL ) Microsoft SQL Server&#039;i asemel. See võiks anda kasutajale võimaluse valida .NET ning [http://www.mono-project.com/ Mono] (vt. lisaks http://en.wikipedia.org/wiki/Mono_(software) ) platvormide vahel. Sel viisil oleks kliendil võimalik Microsoft&#039;i platvormi kõrval valida tõenäoliselt soodsam vaba tarkvara platvorm. Andmebaasi lõplik valik pole hetkel veel otsustatud.&lt;br /&gt;
&lt;br /&gt;
== Meeskond ja tööjaotus==&lt;br /&gt;
* Kristjan Stolin - projektijuht, suhtlus kliendiga, XML, wiki, teenuskihtide progemine, rollide halduse lehe progemine&lt;br /&gt;
* Ilmar Telga - XML, kliendiga suhtlus, wiki, teenuskihtide progemine, lõpprakenduste menüüd, login&lt;br /&gt;
* Rauno Rüga - XML, XSLT, andmebaasi loomine, wiki, mobiilirakendus, statistika&lt;br /&gt;
* Lauri Kermas - teenuskihtide ehitamine, wiki, login, kommenteerimise võimaluste progemine&lt;br /&gt;
&lt;br /&gt;
== XML Fail ==&lt;br /&gt;
=== XML ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Toidud&amp;gt;&lt;br /&gt;
  &amp;lt;Toit&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduNimetus&amp;gt;Viineri kaste&amp;lt;/ToiduNimetus&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduLiik&amp;gt;Praad&amp;lt;/ToiduLiik&amp;gt;&lt;br /&gt;
    &amp;lt;OlemasolevatYhikut&amp;gt;5&amp;lt;/OlemasolevatYhikut&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduKogus&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Poolportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;2011&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;1&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;9&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;15&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;07&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;23&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;        &lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.15&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;0&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;0&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;0&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;00&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;00&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;00&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Täisportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.80&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
    &amp;lt;/ToiduKogus&amp;gt;&lt;br /&gt;
    &amp;lt;Kommentaarid&amp;gt;&lt;br /&gt;
      &amp;lt;Kommentaar&amp;gt;&lt;br /&gt;
        &amp;lt;Saatja&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaNimi&amp;gt;Kristjan&amp;lt;/SaatjaNimi&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaRoll&amp;gt;Tudeng&amp;lt;/SaatjaRoll&amp;gt;&lt;br /&gt;
        &amp;lt;/Saatja&amp;gt;&lt;br /&gt;
        &amp;lt;Sisu&amp;gt;Minu lemmik toit ! Kui algebra tund ei hakkaks, sööks veel 5 portsjonit.&amp;lt;/Sisu&amp;gt;&lt;br /&gt;
      &amp;lt;/Kommentaar&amp;gt;&lt;br /&gt;
    &amp;lt;/Kommentaarid&amp;gt;&lt;br /&gt;
  &amp;lt;/Toit&amp;gt;&lt;br /&gt;
&amp;lt;/Toidud&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kommentaariks siis niipalju, et meie näide on ilma kohviku osata, selleks et näidet mitte liiga suureks ajada.&lt;br /&gt;
&lt;br /&gt;
Ka on meil moment puudu ID väljad, mis on igasugu andmebaasiga suhtlemiseks hädavajalikud, samas siin näidises palju juurde ei anna.&lt;br /&gt;
&lt;br /&gt;
Asja tegemisel avastasime, et põhiliseks arusaamatuse kohaks on toitude erinevad kogused (ehk siis pool portsjonit, suur / väike ja muud võrdlevad ühikud). Esimese võimalusena kaalusime teha lihtsalt täiesti eraldi toidud kõige kohta, stiilis &amp;quot;väike viineripraad&amp;quot; ja &amp;quot;suur viineripraad&amp;quot;. Kahjuks see variant ei kõlbaks eriti hästi, kuna need erinevad portsjonid kasutavad ikkagi samu materjale ja kui me peaks mingi süsteemiga näitama kui palju portsjoneid alles on. Sööklast näiteks pakuti et väike portsjon kasutab materjale kuskil 0.8 suure portsjoni ulatuses, ehk see suhtarv peaks olema kasutaja poolt (kohvikupidaja, restoraniomanik) ise sätitav. &lt;br /&gt;
&lt;br /&gt;
Tänu sellele sai meie süsteemi alustalaks siiski Toit, millel on oma Portsjonid siis erinevate hindade ja soodustustega. Moment pole meil ka Portsjoni XML osas toodud ära seost kogusega. (Kui palju ühe portsjoni lisamine/müümine peaks toidu üldkogust muutma).&lt;br /&gt;
&lt;br /&gt;
Kommenteerida saab meil moment toitu ennast, mitte eraldi portsjonit. Isegi kui kasutajad tahavad lisada kommentaare stiilis &amp;quot;See väike supp oli tõesti väga väike&amp;quot;, ei soovi nad seda ilmselt eraldi portsjoni alla panna. Tulevikus peaks kindlasti olema ka võimalus pigem kommenteerida üldisemalt (Kohvikut ennast, söögipaiku üldse), kui spetsiifilisemalt (Väikse prae kaste lisandi kohta).&lt;br /&gt;
&lt;br /&gt;
=== XML Schema ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Toidud&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Toit&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduNimetus&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;OlemasolevatYhikut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduKogus&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:choice maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;PortsjoniLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;Myygiaeg&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Aasta&amp;quot; type=&amp;quot;xs:unsignedShort&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Kuu&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Paev&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Tund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Minut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Sekund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;ToiduHind&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Eurohind&amp;quot; type=&amp;quot;xs:decimal&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Soodustus&amp;quot;&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseProtsent&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:choice&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Kommentaarid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Saatja&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaNimi&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaRoll&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Sisu&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
  &amp;lt;h2&amp;gt;Kohvikus müüdavad toidud&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr bgcolor=&amp;quot;#9acd32&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Veel alles&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Portsjon&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Müügiaeg&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustuse liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Kommentaar(id)&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;Toidud/Toit&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduNimetus&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduLiik&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;OlemasolevatYhikut&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;PortsjoniLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Paev&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Kuu&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Aasta&amp;quot; /&amp;gt; &amp;amp;nbsp;  &lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Tund&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Minut&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Sekund&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Eurohind&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseProtsent&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Kommentaarid/Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Sisu&amp;quot; /&amp;gt;&amp;amp;nbsp;(&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaRoll&amp;quot; /&amp;gt;&amp;amp;nbsp;&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaNimi&amp;quot; /&amp;gt;)&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XSLT poolt loodud tulemus on järgnev (lisasin veel kaks toitu XML faili, siin wiki lehel on ruumi kokkuhoiuks vaid 1 toit toitude listis):&lt;br /&gt;
[[File:Xslt.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arhitektuur ==&lt;br /&gt;
&lt;br /&gt;
Süsteem oli vahepeal plaanis ehitada kolmekihilise arhitektuuriga ([http://en.wikipedia.org/wiki/Multitier_architecture#Three-tier_architecture Three-tier architecture]). See peaks lihtsustama süsteemi haldamist ja laiendamist tulevikus. Aga kuna selle jaoks otsest vajadust polenud ja oleks vaid süsteemi keeruliseks ajanud, siis loobusime sellest.&lt;br /&gt;
&lt;br /&gt;
[[Image:three-tier.png|thumb|center|alt=Arhitektuuri skeem.|Arhitektuuri skeem.]]&lt;br /&gt;
&lt;br /&gt;
== Veebiteenus ==&lt;br /&gt;
===Andmemudel===&lt;br /&gt;
[[Image:KohvikuAndmemudel.jpg|thumb|right|alt=Kohviku projekti andmemudel|Andmemudel]]&lt;br /&gt;
Enne veebiteenuse meetodite kirjeldamist koostasime andmemudeli. Loodud andmemudeli põhjal lõime andmebaasi vajalike tabelite ja atribuutidega. Andmemudeli peal on rohelisega tähistatud tabelid, mis on oseselt seotud kohviku valdajaga ja mida WPF rakenduse jaoks kindlasti vaja on. Ülejäänud helesinised tabelid on vajalikud kasutajate võimaluste jaoks. Lisaks on andmemudelil kaks tabelit, mis pole teisega seotud, need on süsteemi administraatori jaoks, et oleks ülevaade, mis rakendused teenust enim kasutavad ning mis meetodeid kõige rohkem välja kutsutakse.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Teenuskihis olevad meetodid===&lt;br /&gt;
&lt;br /&gt;
*KohvikuteArv() - Tagastab kõigi kohvikute arvu&lt;br /&gt;
*SaidiKasutajaLiik() - Tagastab antud kasutaja ID järgi kasutaja liigi nimetuse&lt;br /&gt;
*KustutaSaidiKasutaja() - Kustutab antud kasutaja ID järgi kasutaja tabelis Kasutaja&lt;br /&gt;
*AnnaKoikSaidiKasutajad() - Tagastab kõik kirjed tabelist Kasutaja&lt;br /&gt;
*LisaArtikkelMenuuse() - Seob menüüartikli ja menüü&lt;br /&gt;
*LisaKohvikuleMenuu() - Seob menüü ja kohviku&lt;br /&gt;
*KustutaMenuuJaKohvikuSeos() - Kustutab menüü ja kohviku seose&lt;br /&gt;
*LisaUusMenuu() - Teeb uue menüü, seob selle kohvikuga, kui kohviku ID on parameetrina kaasa antud&lt;br /&gt;
*KohvikuteNimed() - Tagastab kõigi kohvikute nimed massiivina&lt;br /&gt;
*KohvikuNimiIdJargi() - Tagastab antud kohviku ID järgi kohviku nime&lt;br /&gt;
*AnnaKoikOmanikuKohvikud() - Tagastab antud omaniku ID järgi kõik omaniku kohvikute ID-d massiivina&lt;br /&gt;
*AnnaKoikKohvikuKasutajad() - Tagastab antud kohviku ID järgi kõik kohviku kasutajad massiivina&lt;br /&gt;
*MuudaSaidiKasutajaLiik() - Muudab antud kasutaja ID järgi kasutaja liigi tabelis Kasutaja&lt;br /&gt;
*KoikLubatudSaidiKasutajaTyybid() - Tagastab andmebaasi kõik võimalikud kohviku kasutaja rollid (id-d ja nimed), muud andmed jäävad tühjaks&lt;br /&gt;
*KoikLubatudKohvikuRollid() - Tagastab andmebaasi kõik võimalikud site kasutaja rollid (id-d ja nimed), kohviku_id jääb tühjaks&lt;br /&gt;
*KasutajaKohvikuRollid() - Tagastab antud kasutaja ID järgi kõik kasutaja rollid kõikides kohvikutes&lt;br /&gt;
*MuudaKohvikuKasutajaRoll() - Muudab antud kasutaja ID ja kohviku ID järgi kasutaja rolli kohvikus, kui rolli pole, siis tekitatakse uus&lt;br /&gt;
*SaidiKasutajaLiikID() - Tagastab antud kasutaja ID järgi kasutaja liigi ID&lt;br /&gt;
*Kohvikud() - Tagastab kõik kohvikute kirjed tabelist Kohvik&lt;br /&gt;
*KohvikuKasutajaLiikID() - Tagastab antud kasutaja ID ja kohviku ID järgi kohviku kasutaja rolli ID&lt;br /&gt;
*MenuuKohvikuIdJargi() - Tagastab kohviku ID järgi kohviku tänaste või mitte tänaste menüüde ID-de massiivi&lt;br /&gt;
*LisaMenuuArtikkelMenuuse() - Sisestab antud müügiartikli menüüsse, mille ID on menyy_id&lt;br /&gt;
*KustutaMenuuArtikkel() - Kustutab müügiartikli ID ja menüü ID järgi müügiartikli menüüst&lt;br /&gt;
*TagastaMenuuArtiklid() - Tagastab menüü ID järgi menüüs olevad müügiartiklid&lt;br /&gt;
*VahetaMenuuArtiklit() - Muudab antud müügiartikli tabelis Myygiartikkel&lt;br /&gt;
*MenuuNimetus() - Tagastab menüü ID järgi menüü nimetuse&lt;br /&gt;
*AnnaMuugiartiklidMidaMenuusPole() - Tagastab müügiartiklid, mis pole veel menüüs, kus on juba müügiartiklid, mille IDd on antud massiivis&lt;br /&gt;
*AnnaMenuuNimed() - Tagastab kõigi menüüde nimetused tabelis Menyy&lt;br /&gt;
*AnnaKaubad() - Tagastab kõik kaubad tabelist Kaup&lt;br /&gt;
*LisaKaup() - Lisab kauba kaupade nimekirja&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====xxx====&lt;br /&gt;
AnnaKasutajaMeiliAadress() - Tagastab antud kasutaja nime alusel kasutaja meiliaadressi&lt;br /&gt;
AnnaKasutajaIdJargi() - Tagastab kasutajanime kasutaja ID järgi&lt;br /&gt;
AuthendiKasutaja() - Autendib kasutaja, õnnestumisel tagastab kasutaja ID, ebaõnnestumisel null &lt;br /&gt;
RegistreeriKasutaja() - Registreerib kasutaja andmebaasi ja tagastab true kui kasutaja loomine õnnestus&lt;br /&gt;
&lt;br /&gt;
====Kommentaaridega seotud meetodid:====&lt;br /&gt;
*KohvikuKommentaarideArv() - Kohviku kommentaaride arv&lt;br /&gt;
*AnnaKohvikuKommentaarid() - Tagastab kommentaarid lehtede kaupa&lt;br /&gt;
*AnnaKohvikuKommentaarideHinded() - Tagastab kommentaaride jaoks võimalikud hinded koos kirjeldustega&lt;br /&gt;
*LisaKohvikuKommentaar() - Lisab kohviku kommentaari&lt;br /&gt;
&lt;br /&gt;
====Statistikaga seotud meetodid:====&lt;br /&gt;
*StatistikaRakendusteKohtaTana() - Tagastab rakenduse nimed ja nende vastu tehtud päringud tänasel päeval&lt;br /&gt;
*StatistikaRakendusteKohtaViimaneNadal() - Tagastab rakenduse nimed ja nende vastu tehtud päringud viimase nädala jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaSellelKuul() - Tagastab rakenduse nimed ja nende vastu tehtud päringud selle kuu jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaKokku() - Tagastab rakenduse nimed ja nende vastu tehtud päringud kogu aja vältel&lt;br /&gt;
&lt;br /&gt;
*StatistikaMeetoditeKohtaTana() - Meetod leiab tänase päeva jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaViimaneNadal() - Meetod leiab viimase nädala jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaSellelKuul() - Meetod leiab kuu jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaKokku() - Meetod leiab kogu aja vältel kasutatud meetodid ja paringute arvu&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : CMS ==&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Veebirakendus ==&lt;br /&gt;
&lt;br /&gt;
== Meeskonna kokkuvõttev aruanne ==&lt;br /&gt;
&lt;br /&gt;
== Logi ==&lt;br /&gt;
=== 9. aprill ===&lt;br /&gt;
Tegime rollide halduse, münüüde muutmise vormi. Meili saatmine registreerimisel. Toimus andmebaasi andmemudeli väike muutus. &lt;br /&gt;
&lt;br /&gt;
=== 30. märts ===&lt;br /&gt;
Tehtud on kohviku menüü ja kohviku kommenteerimise leht.&lt;br /&gt;
&lt;br /&gt;
=== 26. märts ===&lt;br /&gt;
Tehtud on esimesed veebiteenuse meetodid ja veebirakendusele kasutajate registreerimine.&lt;br /&gt;
&lt;br /&gt;
=== 10. märts ===&lt;br /&gt;
Väikese häki abil õnnestus kohviku kassa arvutis saada tööle üks Forms-i proovirakendus.&lt;br /&gt;
&lt;br /&gt;
=== 8. märts ===&lt;br /&gt;
Kuna kassa-aparaadis on operatsioonisüsteemiks Windows XP ja raud on 1.99 GHz, 256 RAM siis peaks saama&lt;br /&gt;
prototüübiks teha sinna peale rakenduse, mille ülesandeks menüüga tegelemine. &lt;br /&gt;
&lt;br /&gt;
=== 7. märts ===&lt;br /&gt;
Linnar Viik andis meile järgmist nõu: tuleb eristada kahte asja - see, mis peab valmis saama (&#039;&#039;must&#039;&#039;) ja see, mis oleks tore (&#039;&#039;nice to have&#039;&#039;). Valmis peab saama menüüga ekraan seinal (esialgu kasutajale prototüübi näitamiseks kasvõi näiteks PowerPoint-i abil tehtud). Alles siis kui on kasutajalt positiivne tagasiside saadud, võib edasi minna reaalse tarkvaralahenduse loomisega. Kui ka see on valmis ja kasutaja sellega rahul võib juurde mõelda &#039;&#039;nice to have&#039;&#039; asju (näiteks eelinfo järgmise päeva menüü kohta, üliõpilasesinduse sõnumite riba ja muid asju).&lt;br /&gt;
&lt;br /&gt;
Saime teada, et kui tahame, et meie loodav süsteem suhtleks IT Kohviku kassasüsteemiga, siis tuleb selle süsteemi tootjatega ühendust võtta ja nendega konsulteerida.&lt;br /&gt;
&lt;br /&gt;
=== 19.Veebruar ===&lt;br /&gt;
*Valmis XSLT fail.&lt;br /&gt;
&lt;br /&gt;
=== 9.Veebruar ===&lt;br /&gt;
* Esmane versioon XML ja XML Schemast olemas&lt;br /&gt;
* Tekkis küsimus kas XSLT faili tuleb käsitsi tekitada või automaatselt.&lt;br /&gt;
* Küsimus oli ka kas lahendasime portsjoni asja mõistlikult või oleks mõni teine lähenemine parem olnud.&lt;br /&gt;
* Küsimus, kas XML fail on liiga üle pingutatud või sobiva keerukusega&lt;br /&gt;
&lt;br /&gt;
=== 7. Veebruar ===&lt;br /&gt;
* Võtsime õppejõu poolt pakutud ideest kohe kinni, sest me eelistame teha praktilist asja, mida saab kasutada ja mille kasutamist saame ka iga päev jälgida. &lt;br /&gt;
* Esimese asjana otsustasime välja uurida mida meie &amp;quot;kliendid&amp;quot; (süsteemi tellijad) meilt ootavad. (Soovid idee punkti all)&lt;br /&gt;
* Valminud on lihtne teenusest ja klientidest koosnev süsteemi testmudel.&lt;br /&gt;
&lt;br /&gt;
[[Category: Võrgurakendused II: hajussüsteemide ehitamine]]&lt;br /&gt;
[[Category: Veebirakenduste loomine ASP.NET abil]]&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=27152</id>
		<title>Meeskond &quot;FoodWars&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=27152"/>
		<updated>2011-04-17T17:12:34Z</updated>

		<summary type="html">&lt;p&gt;Rruga: /* Veebiteenus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Idee ==&lt;br /&gt;
Meie tiimil on plaanis teha internetipõhine söökla menüü süsteem (aluseks IT Kolledži kohvik, aga suunitlus selline, et kõik kohvikud/sööklad saaksid teha endale kasutajakonto ja hakata rakendust kasutama), kust saaks jälgida menüüd, mis sööke saab süüa, mis veel järgi on, kasutajatel on ka võimalus sööke hinnata (stiilis &amp;quot;meeldib&amp;quot;, &amp;quot;ei meeldi&amp;quot; nagu Facebook-is).&lt;br /&gt;
&lt;br /&gt;
Kohvikupidaja Teele soovid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* elektroonilisest menüüst asju kustutada, isegi siis kui asja peaks olema teoreetiliselt alles, aga tegelikult on asi otsas.&lt;br /&gt;
* elektrikatkestuse korral jääb menüü püsima. Ta peab teadma hindu mistahes olukorras.&lt;br /&gt;
* menüül näidatakse automaatselt ka ISIC kaardi omanike soodushinnad&lt;br /&gt;
* süsteem toetab ka poole portsjoni müümist.&lt;br /&gt;
&lt;br /&gt;
Linnar Viigi soovid/visioonid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* kõik oleks ka internetist kättesaadav, peale LCD ekraani, mis kajastab menüüd sööklas.&lt;br /&gt;
* aluseks facebook, kus siis söögid oleks nagu facebook-i alateemad.&lt;br /&gt;
* saab sööke hinnata, kommenteerida (täna oli väga maitsev praad).&lt;br /&gt;
* kasutajad saaks vaadata, mis menüüs on (ka järgmisel nädalal) ja mitu portsu veel alles on.&lt;br /&gt;
* kasutajad saaksid välja pakkuda menüüsid.&lt;br /&gt;
* erinevate söögikohtade kasutajad saaksid omavahel muljeid jagada.&lt;br /&gt;
* kuu aja aktiivsemad saavad prii lõuna.&lt;br /&gt;
* mingil ajal võib olla &amp;quot;happy hour&amp;quot; (enne sulgemist saab odavamalt).&lt;br /&gt;
* piiranguks on see, et toitu broneerida ei saa &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vaba tarkvara kasutamise võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Antud projekti puhul oleks võimalik kasutada [http://www.postgresql.org/ PostgreSQL] andmebaasi (vt. lisaks http://en.wikipedia.org/wiki/PostgreSQL ) Microsoft SQL Server&#039;i asemel. See võiks anda kasutajale võimaluse valida .NET ning [http://www.mono-project.com/ Mono] (vt. lisaks http://en.wikipedia.org/wiki/Mono_(software) ) platvormide vahel. Sel viisil oleks kliendil võimalik Microsoft&#039;i platvormi kõrval valida tõenäoliselt soodsam vaba tarkvara platvorm. Andmebaasi lõplik valik pole hetkel veel otsustatud.&lt;br /&gt;
&lt;br /&gt;
== Meeskond ja tööjaotus==&lt;br /&gt;
* Kristjan Stolin - projektijuht, suhtlus kliendiga, XML, wiki, teenuskihtide progemine, rollide halduse lehe progemine&lt;br /&gt;
* Ilmar Telga - XML, kliendiga suhtlus, wiki, teenuskihtide progemine, lõpprakenduste menüüd, login&lt;br /&gt;
* Rauno Rüga - XML, XSLT, andmebaasi loomine, wiki, mobiilirakendus, statistika&lt;br /&gt;
* Lauri Kermas - teenuskihtide ehitamine, wiki, login, kommenteerimise võimaluste progemine&lt;br /&gt;
&lt;br /&gt;
== XML Fail ==&lt;br /&gt;
=== XML ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Toidud&amp;gt;&lt;br /&gt;
  &amp;lt;Toit&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduNimetus&amp;gt;Viineri kaste&amp;lt;/ToiduNimetus&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduLiik&amp;gt;Praad&amp;lt;/ToiduLiik&amp;gt;&lt;br /&gt;
    &amp;lt;OlemasolevatYhikut&amp;gt;5&amp;lt;/OlemasolevatYhikut&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduKogus&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Poolportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;2011&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;1&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;9&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;15&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;07&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;23&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;        &lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.15&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;0&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;0&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;0&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;00&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;00&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;00&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Täisportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.80&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
    &amp;lt;/ToiduKogus&amp;gt;&lt;br /&gt;
    &amp;lt;Kommentaarid&amp;gt;&lt;br /&gt;
      &amp;lt;Kommentaar&amp;gt;&lt;br /&gt;
        &amp;lt;Saatja&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaNimi&amp;gt;Kristjan&amp;lt;/SaatjaNimi&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaRoll&amp;gt;Tudeng&amp;lt;/SaatjaRoll&amp;gt;&lt;br /&gt;
        &amp;lt;/Saatja&amp;gt;&lt;br /&gt;
        &amp;lt;Sisu&amp;gt;Minu lemmik toit ! Kui algebra tund ei hakkaks, sööks veel 5 portsjonit.&amp;lt;/Sisu&amp;gt;&lt;br /&gt;
      &amp;lt;/Kommentaar&amp;gt;&lt;br /&gt;
    &amp;lt;/Kommentaarid&amp;gt;&lt;br /&gt;
  &amp;lt;/Toit&amp;gt;&lt;br /&gt;
&amp;lt;/Toidud&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kommentaariks siis niipalju, et meie näide on ilma kohviku osata, selleks et näidet mitte liiga suureks ajada.&lt;br /&gt;
&lt;br /&gt;
Ka on meil moment puudu ID väljad, mis on igasugu andmebaasiga suhtlemiseks hädavajalikud, samas siin näidises palju juurde ei anna.&lt;br /&gt;
&lt;br /&gt;
Asja tegemisel avastasime, et põhiliseks arusaamatuse kohaks on toitude erinevad kogused (ehk siis pool portsjonit, suur / väike ja muud võrdlevad ühikud). Esimese võimalusena kaalusime teha lihtsalt täiesti eraldi toidud kõige kohta, stiilis &amp;quot;väike viineripraad&amp;quot; ja &amp;quot;suur viineripraad&amp;quot;. Kahjuks see variant ei kõlbaks eriti hästi, kuna need erinevad portsjonid kasutavad ikkagi samu materjale ja kui me peaks mingi süsteemiga näitama kui palju portsjoneid alles on. Sööklast näiteks pakuti et väike portsjon kasutab materjale kuskil 0.8 suure portsjoni ulatuses, ehk see suhtarv peaks olema kasutaja poolt (kohvikupidaja, restoraniomanik) ise sätitav. &lt;br /&gt;
&lt;br /&gt;
Tänu sellele sai meie süsteemi alustalaks siiski Toit, millel on oma Portsjonid siis erinevate hindade ja soodustustega. Moment pole meil ka Portsjoni XML osas toodud ära seost kogusega. (Kui palju ühe portsjoni lisamine/müümine peaks toidu üldkogust muutma).&lt;br /&gt;
&lt;br /&gt;
Kommenteerida saab meil moment toitu ennast, mitte eraldi portsjonit. Isegi kui kasutajad tahavad lisada kommentaare stiilis &amp;quot;See väike supp oli tõesti väga väike&amp;quot;, ei soovi nad seda ilmselt eraldi portsjoni alla panna. Tulevikus peaks kindlasti olema ka võimalus pigem kommenteerida üldisemalt (Kohvikut ennast, söögipaiku üldse), kui spetsiifilisemalt (Väikse prae kaste lisandi kohta).&lt;br /&gt;
&lt;br /&gt;
=== XML Schema ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Toidud&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Toit&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduNimetus&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;OlemasolevatYhikut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduKogus&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:choice maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;PortsjoniLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;Myygiaeg&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Aasta&amp;quot; type=&amp;quot;xs:unsignedShort&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Kuu&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Paev&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Tund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Minut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Sekund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;ToiduHind&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Eurohind&amp;quot; type=&amp;quot;xs:decimal&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Soodustus&amp;quot;&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseProtsent&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:choice&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Kommentaarid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Saatja&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaNimi&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaRoll&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Sisu&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
  &amp;lt;h2&amp;gt;Kohvikus müüdavad toidud&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr bgcolor=&amp;quot;#9acd32&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Veel alles&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Portsjon&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Müügiaeg&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustuse liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Kommentaar(id)&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;Toidud/Toit&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduNimetus&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduLiik&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;OlemasolevatYhikut&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;PortsjoniLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Paev&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Kuu&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Aasta&amp;quot; /&amp;gt; &amp;amp;nbsp;  &lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Tund&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Minut&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Sekund&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Eurohind&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseProtsent&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Kommentaarid/Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Sisu&amp;quot; /&amp;gt;&amp;amp;nbsp;(&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaRoll&amp;quot; /&amp;gt;&amp;amp;nbsp;&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaNimi&amp;quot; /&amp;gt;)&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XSLT poolt loodud tulemus on järgnev (lisasin veel kaks toitu XML faili, siin wiki lehel on ruumi kokkuhoiuks vaid 1 toit toitude listis):&lt;br /&gt;
[[File:Xslt.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arhitektuur ==&lt;br /&gt;
&lt;br /&gt;
Süsteem oli vahepeal plaanis ehitada kolmekihilise arhitektuuriga ([http://en.wikipedia.org/wiki/Multitier_architecture#Three-tier_architecture Three-tier architecture]). See peaks lihtsustama süsteemi haldamist ja laiendamist tulevikus. Aga kuna selle jaoks otsest vajadust polenud ja oleks vaid süsteemi keeruliseks ajanud, siis loobusime sellest.&lt;br /&gt;
&lt;br /&gt;
[[Image:three-tier.png|thumb|center|alt=Arhitektuuri skeem.|Arhitektuuri skeem.]]&lt;br /&gt;
&lt;br /&gt;
== Veebiteenus ==&lt;br /&gt;
===Andmemudel===&lt;br /&gt;
[[Image:KohvikuAndmemudel.jpg|thumb|right|alt=Kohviku projekti andmemudel|Andmemudel]]&lt;br /&gt;
Enne veebiteenuse meetodite kirjeldamist koostasime andmemudeli. Loodud andmemudeli põhjal lõime andmebaasi vajalike tabelite ja atribuutidega. Andmemudeli peal on rohelisega tähistatud tabelid, mis on oseselt seotud kohviku valdajaga ja mida WPF rakenduse jaoks kindlasti vaja on. Ülejäänud helesinised tabelid on vajalikud kasutajate võimaluste jaoks. Lisaks on andmemudelil kaks tabelit, mis pole teisega seotud, need on süsteemi administraatori jaoks, et oleks ülevaade, mis rakendused teenust enim kasutavad ning mis meetodeid kõige rohkem välja kutsutakse.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Teenuskihis olevad meetodid===&lt;br /&gt;
&lt;br /&gt;
KohvikuteArv() -&lt;br /&gt;
SaidiKasutajaLiik() -&lt;br /&gt;
KustutaSaidiKasutaja() -&lt;br /&gt;
AnnaKoikSaidiKasutajad() -&lt;br /&gt;
LisaArtikkelMenuuse() -&lt;br /&gt;
LisaKohvikuleMenuu() -&lt;br /&gt;
KustutaMenuuJaKohvikuSeos() -&lt;br /&gt;
LisaUusMenuu() -&lt;br /&gt;
KohvikuteNimed() -&lt;br /&gt;
KohvikuNimiIdJargi() -&lt;br /&gt;
AnnaKoikOmanikuKohvikud() -&lt;br /&gt;
AnnaKoikKohvikuKasutajad() -&lt;br /&gt;
MuudaSaidiKasutajaLiik() -&lt;br /&gt;
KoikLubatudSaidiKasutajaTyybid() -&lt;br /&gt;
KoikLubatudKohvikuRollid() -&lt;br /&gt;
KasutajaKohvikuRollid() -&lt;br /&gt;
MuudaKohvikuKasutajaRoll() -&lt;br /&gt;
SaidiKasutajaLiikID() -&lt;br /&gt;
Kohvikud() -&lt;br /&gt;
KohvikuKasutajaLiikID() -&lt;br /&gt;
MenuuKohvikuIdJargi() -&lt;br /&gt;
LisaMenuuArtikkelMenuuse() -&lt;br /&gt;
KustutaMenuuArtikkel() -&lt;br /&gt;
AnnaTagastaMenuuArtiklid() -&lt;br /&gt;
VahetaMenuuArtiklit() -&lt;br /&gt;
MenuuNimetus() -&lt;br /&gt;
AnnaMuugiartiklidMidaMenuusPole() -&lt;br /&gt;
AnnaMenuuNimed() -&lt;br /&gt;
AnnaKaubad() -&lt;br /&gt;
LisaKaup() -&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====xxx====&lt;br /&gt;
AnnaKasutajaMeiliAadress() - Tagastab antud kasutaja nime alusel kasutaja meiliaadressi&lt;br /&gt;
AnnaKasutajaIdJargi() - Tagastab kasutajanime kasutaja ID järgi&lt;br /&gt;
AuthendiKasutaja() - Autendib kasutaja, õnnestumisel tagastab kasutaja ID, ebaõnnestumisel null &lt;br /&gt;
RegistreeriKasutaja() - Registreerib kasutaja andmebaasi ja tagastab true kui kasutaja loomine õnnestus&lt;br /&gt;
&lt;br /&gt;
====Kommentaaridega seotud meetodid:====&lt;br /&gt;
*KohvikuKommentaarideArv() - Kohviku kommentaaride arv&lt;br /&gt;
*AnnaKohvikuKommentaarid() - Tagastab kommentaarid lehtede kaupa&lt;br /&gt;
*AnnaKohvikuKommentaarideHinded() - Tagastab kommentaaride jaoks võimalikud hinded koos kirjeldustega&lt;br /&gt;
*LisaKohvikuKommentaar() - Lisab kohviku kommentaari&lt;br /&gt;
&lt;br /&gt;
====Statistikaga seotud meetodid:====&lt;br /&gt;
*StatistikaRakendusteKohtaTana() - Tagastab rakenduse nimed ja nende vastu tehtud päringud tänasel päeval&lt;br /&gt;
*StatistikaRakendusteKohtaViimaneNadal() - Tagastab rakenduse nimed ja nende vastu tehtud päringud viimase nädala jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaSellelKuul() - Tagastab rakenduse nimed ja nende vastu tehtud päringud selle kuu jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaKokku() - Tagastab rakenduse nimed ja nende vastu tehtud päringud kogu aja vältel&lt;br /&gt;
&lt;br /&gt;
*StatistikaMeetoditeKohtaTana() - Meetod leiab tänase päeva jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaViimaneNadal() - Meetod leiab viimase nädala jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaSellelKuul() - Meetod leiab kuu jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaKokku() - Meetod leiab kogu aja vältel kasutatud meetodid ja paringute arvu&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : CMS ==&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Veebirakendus ==&lt;br /&gt;
&lt;br /&gt;
== Meeskonna kokkuvõttev aruanne ==&lt;br /&gt;
&lt;br /&gt;
== Logi ==&lt;br /&gt;
=== 9. aprill ===&lt;br /&gt;
Tegime rollide halduse, münüüde muutmise vormi. Meili saatmine registreerimisel. Toimus andmebaasi andmemudeli väike muutus. &lt;br /&gt;
&lt;br /&gt;
=== 30. märts ===&lt;br /&gt;
Tehtud on kohviku menüü ja kohviku kommenteerimise leht.&lt;br /&gt;
&lt;br /&gt;
=== 26. märts ===&lt;br /&gt;
Tehtud on esimesed veebiteenuse meetodid ja veebirakendusele kasutajate registreerimine.&lt;br /&gt;
&lt;br /&gt;
=== 10. märts ===&lt;br /&gt;
Väikese häki abil õnnestus kohviku kassa arvutis saada tööle üks Forms-i proovirakendus.&lt;br /&gt;
&lt;br /&gt;
=== 8. märts ===&lt;br /&gt;
Kuna kassa-aparaadis on operatsioonisüsteemiks Windows XP ja raud on 1.99 GHz, 256 RAM siis peaks saama&lt;br /&gt;
prototüübiks teha sinna peale rakenduse, mille ülesandeks menüüga tegelemine. &lt;br /&gt;
&lt;br /&gt;
=== 7. märts ===&lt;br /&gt;
Linnar Viik andis meile järgmist nõu: tuleb eristada kahte asja - see, mis peab valmis saama (&#039;&#039;must&#039;&#039;) ja see, mis oleks tore (&#039;&#039;nice to have&#039;&#039;). Valmis peab saama menüüga ekraan seinal (esialgu kasutajale prototüübi näitamiseks kasvõi näiteks PowerPoint-i abil tehtud). Alles siis kui on kasutajalt positiivne tagasiside saadud, võib edasi minna reaalse tarkvaralahenduse loomisega. Kui ka see on valmis ja kasutaja sellega rahul võib juurde mõelda &#039;&#039;nice to have&#039;&#039; asju (näiteks eelinfo järgmise päeva menüü kohta, üliõpilasesinduse sõnumite riba ja muid asju).&lt;br /&gt;
&lt;br /&gt;
Saime teada, et kui tahame, et meie loodav süsteem suhtleks IT Kohviku kassasüsteemiga, siis tuleb selle süsteemi tootjatega ühendust võtta ja nendega konsulteerida.&lt;br /&gt;
&lt;br /&gt;
=== 19.Veebruar ===&lt;br /&gt;
*Valmis XSLT fail.&lt;br /&gt;
&lt;br /&gt;
=== 9.Veebruar ===&lt;br /&gt;
* Esmane versioon XML ja XML Schemast olemas&lt;br /&gt;
* Tekkis küsimus kas XSLT faili tuleb käsitsi tekitada või automaatselt.&lt;br /&gt;
* Küsimus oli ka kas lahendasime portsjoni asja mõistlikult või oleks mõni teine lähenemine parem olnud.&lt;br /&gt;
* Küsimus, kas XML fail on liiga üle pingutatud või sobiva keerukusega&lt;br /&gt;
&lt;br /&gt;
=== 7. Veebruar ===&lt;br /&gt;
* Võtsime õppejõu poolt pakutud ideest kohe kinni, sest me eelistame teha praktilist asja, mida saab kasutada ja mille kasutamist saame ka iga päev jälgida. &lt;br /&gt;
* Esimese asjana otsustasime välja uurida mida meie &amp;quot;kliendid&amp;quot; (süsteemi tellijad) meilt ootavad. (Soovid idee punkti all)&lt;br /&gt;
* Valminud on lihtne teenusest ja klientidest koosnev süsteemi testmudel.&lt;br /&gt;
&lt;br /&gt;
[[Category: Võrgurakendused II: hajussüsteemide ehitamine]]&lt;br /&gt;
[[Category: Veebirakenduste loomine ASP.NET abil]]&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=27121</id>
		<title>Meeskond &quot;FoodWars&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=27121"/>
		<updated>2011-04-17T14:26:43Z</updated>

		<summary type="html">&lt;p&gt;Rruga: /* Arhitektuur */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Idee ==&lt;br /&gt;
Meie tiimil on plaanis teha internetipõhine söökla menüü süsteem (aluseks IT Kolledži kohvik, aga suunitlus selline, et kõik kohvikud/sööklad saaksid teha endale kasutajakonto ja hakata rakendust kasutama), kust saaks jälgida menüüd, mis sööke saab süüa, mis veel järgi on, kasutajatel on ka võimalus sööke hinnata (stiilis &amp;quot;meeldib&amp;quot;, &amp;quot;ei meeldi&amp;quot; nagu Facebook-is).&lt;br /&gt;
&lt;br /&gt;
Kohvikupidaja Teele soovid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* elektroonilisest menüüst asju kustutada, isegi siis kui asja peaks olema teoreetiliselt alles, aga tegelikult on asi otsas.&lt;br /&gt;
* elektrikatkestuse korral jääb menüü püsima. Ta peab teadma hindu mistahes olukorras.&lt;br /&gt;
* menüül näidatakse automaatselt ka ISIC kaardi omanike soodushinnad&lt;br /&gt;
* süsteem toetab ka poole portsjoni müümist.&lt;br /&gt;
&lt;br /&gt;
Linnar Viigi soovid/visioonid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* kõik oleks ka internetist kättesaadav, peale LCD ekraani, mis kajastab menüüd sööklas.&lt;br /&gt;
* aluseks facebook, kus siis söögid oleks nagu facebook-i alateemad.&lt;br /&gt;
* saab sööke hinnata, kommenteerida (täna oli väga maitsev praad).&lt;br /&gt;
* kasutajad saaks vaadata, mis menüüs on (ka järgmisel nädalal) ja mitu portsu veel alles on.&lt;br /&gt;
* kasutajad saaksid välja pakkuda menüüsid.&lt;br /&gt;
* erinevate söögikohtade kasutajad saaksid omavahel muljeid jagada.&lt;br /&gt;
* kuu aja aktiivsemad saavad prii lõuna.&lt;br /&gt;
* mingil ajal võib olla &amp;quot;happy hour&amp;quot; (enne sulgemist saab odavamalt).&lt;br /&gt;
* piiranguks on see, et toitu broneerida ei saa &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vaba tarkvara kasutamise võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Antud projekti puhul oleks võimalik kasutada [http://www.postgresql.org/ PostgreSQL] andmebaasi (vt. lisaks http://en.wikipedia.org/wiki/PostgreSQL ) Microsoft SQL Server&#039;i asemel. See võiks anda kasutajale võimaluse valida .NET ning [http://www.mono-project.com/ Mono] (vt. lisaks http://en.wikipedia.org/wiki/Mono_(software) ) platvormide vahel. Sel viisil oleks kliendil võimalik Microsoft&#039;i platvormi kõrval valida tõenäoliselt soodsam vaba tarkvara platvorm. Andmebaasi lõplik valik pole hetkel veel otsustatud.&lt;br /&gt;
&lt;br /&gt;
== Meeskond ja tööjaotus==&lt;br /&gt;
* Kristjan Stolin - projektijuht, suhtlus kliendiga, XML, wiki, teenuskihtide progemine, rollide halduse lehe progemine&lt;br /&gt;
* Ilmar Telga - XML, kliendiga suhtlus, wiki, teenuskihtide progemine, lõpprakenduste menüüd, login&lt;br /&gt;
* Rauno Rüga - XML, XSLT, andmebaasi loomine, wiki, mobiilirakendus, statistika&lt;br /&gt;
* Lauri Kermas - teenuskihtide ehitamine, wiki, login, kommenteerimise võimaluste progemine&lt;br /&gt;
&lt;br /&gt;
== XML Fail ==&lt;br /&gt;
=== XML ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Toidud&amp;gt;&lt;br /&gt;
  &amp;lt;Toit&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduNimetus&amp;gt;Viineri kaste&amp;lt;/ToiduNimetus&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduLiik&amp;gt;Praad&amp;lt;/ToiduLiik&amp;gt;&lt;br /&gt;
    &amp;lt;OlemasolevatYhikut&amp;gt;5&amp;lt;/OlemasolevatYhikut&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduKogus&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Poolportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;2011&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;1&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;9&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;15&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;07&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;23&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;        &lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.15&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;0&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;0&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;0&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;00&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;00&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;00&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Täisportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.80&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
    &amp;lt;/ToiduKogus&amp;gt;&lt;br /&gt;
    &amp;lt;Kommentaarid&amp;gt;&lt;br /&gt;
      &amp;lt;Kommentaar&amp;gt;&lt;br /&gt;
        &amp;lt;Saatja&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaNimi&amp;gt;Kristjan&amp;lt;/SaatjaNimi&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaRoll&amp;gt;Tudeng&amp;lt;/SaatjaRoll&amp;gt;&lt;br /&gt;
        &amp;lt;/Saatja&amp;gt;&lt;br /&gt;
        &amp;lt;Sisu&amp;gt;Minu lemmik toit ! Kui algebra tund ei hakkaks, sööks veel 5 portsjonit.&amp;lt;/Sisu&amp;gt;&lt;br /&gt;
      &amp;lt;/Kommentaar&amp;gt;&lt;br /&gt;
    &amp;lt;/Kommentaarid&amp;gt;&lt;br /&gt;
  &amp;lt;/Toit&amp;gt;&lt;br /&gt;
&amp;lt;/Toidud&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kommentaariks siis niipalju, et meie näide on ilma kohviku osata, selleks et näidet mitte liiga suureks ajada.&lt;br /&gt;
&lt;br /&gt;
Ka on meil moment puudu ID väljad, mis on igasugu andmebaasiga suhtlemiseks hädavajalikud, samas siin näidises palju juurde ei anna.&lt;br /&gt;
&lt;br /&gt;
Asja tegemisel avastasime, et põhiliseks arusaamatuse kohaks on toitude erinevad kogused (ehk siis pool portsjonit, suur / väike ja muud võrdlevad ühikud). Esimese võimalusena kaalusime teha lihtsalt täiesti eraldi toidud kõige kohta, stiilis &amp;quot;väike viineripraad&amp;quot; ja &amp;quot;suur viineripraad&amp;quot;. Kahjuks see variant ei kõlbaks eriti hästi, kuna need erinevad portsjonid kasutavad ikkagi samu materjale ja kui me peaks mingi süsteemiga näitama kui palju portsjoneid alles on. Sööklast näiteks pakuti et väike portsjon kasutab materjale kuskil 0.8 suure portsjoni ulatuses, ehk see suhtarv peaks olema kasutaja poolt (kohvikupidaja, restoraniomanik) ise sätitav. &lt;br /&gt;
&lt;br /&gt;
Tänu sellele sai meie süsteemi alustalaks siiski Toit, millel on oma Portsjonid siis erinevate hindade ja soodustustega. Moment pole meil ka Portsjoni XML osas toodud ära seost kogusega. (Kui palju ühe portsjoni lisamine/müümine peaks toidu üldkogust muutma).&lt;br /&gt;
&lt;br /&gt;
Kommenteerida saab meil moment toitu ennast, mitte eraldi portsjonit. Isegi kui kasutajad tahavad lisada kommentaare stiilis &amp;quot;See väike supp oli tõesti väga väike&amp;quot;, ei soovi nad seda ilmselt eraldi portsjoni alla panna. Tulevikus peaks kindlasti olema ka võimalus pigem kommenteerida üldisemalt (Kohvikut ennast, söögipaiku üldse), kui spetsiifilisemalt (Väikse prae kaste lisandi kohta).&lt;br /&gt;
&lt;br /&gt;
=== XML Schema ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Toidud&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Toit&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduNimetus&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;OlemasolevatYhikut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduKogus&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:choice maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;PortsjoniLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;Myygiaeg&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Aasta&amp;quot; type=&amp;quot;xs:unsignedShort&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Kuu&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Paev&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Tund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Minut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Sekund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;ToiduHind&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Eurohind&amp;quot; type=&amp;quot;xs:decimal&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Soodustus&amp;quot;&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseProtsent&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:choice&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Kommentaarid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Saatja&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaNimi&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaRoll&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Sisu&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
  &amp;lt;h2&amp;gt;Kohvikus müüdavad toidud&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr bgcolor=&amp;quot;#9acd32&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Veel alles&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Portsjon&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Müügiaeg&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustuse liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Kommentaar(id)&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;Toidud/Toit&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduNimetus&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduLiik&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;OlemasolevatYhikut&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;PortsjoniLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Paev&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Kuu&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Aasta&amp;quot; /&amp;gt; &amp;amp;nbsp;  &lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Tund&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Minut&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Sekund&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Eurohind&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseProtsent&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Kommentaarid/Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Sisu&amp;quot; /&amp;gt;&amp;amp;nbsp;(&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaRoll&amp;quot; /&amp;gt;&amp;amp;nbsp;&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaNimi&amp;quot; /&amp;gt;)&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XSLT poolt loodud tulemus on järgnev (lisasin veel kaks toitu XML faili, siin wiki lehel on ruumi kokkuhoiuks vaid 1 toit toitude listis):&lt;br /&gt;
[[File:Xslt.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arhitektuur ==&lt;br /&gt;
&lt;br /&gt;
Süsteem oli vahepeal plaanis ehitada kolmekihilise arhitektuuriga ([http://en.wikipedia.org/wiki/Multitier_architecture#Three-tier_architecture Three-tier architecture]). See peaks lihtsustama süsteemi haldamist ja laiendamist tulevikus. Aga kuna selle jaoks otsest vajadust polenud ja oleks vaid süsteemi keeruliseks ajanud, siis loobusime sellest.&lt;br /&gt;
&lt;br /&gt;
[[Image:three-tier.png|thumb|center|alt=Arhitektuuri skeem.|Arhitektuuri skeem.]]&lt;br /&gt;
&lt;br /&gt;
== Veebiteenus ==&lt;br /&gt;
===Andmemudel===&lt;br /&gt;
[[Image:KohvikuAndmemudel.jpg|thumb|right|alt=Kohviku projekti andmemudel|Andmemudel]]&lt;br /&gt;
Enne veebiteenuse meetodite kirjeldamist koostasime andmemudeli. Loodud andmemudeli põhjal lõime andmebaasi vajalike tabelite ja atribuutidega. Andmemudeli peal on rohelisega tähistatud tabelid, mis on oseselt seotud kohviku valdajaga ja mida WPF rakenduse jaoks kindlasti vaja on. Ülejäänud helesinised tabelid on vajalikud kasutajate võimaluste jaoks. Lisaks on andmemudelil kaks tabelit, mis pole teisega seotud, need on süsteemi administraatori jaoks, et oleks ülevaade, mis rakendused teenust enim kasutavad ning mis meetodeid kõige rohkem välja kutsutakse.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Teenuskihis olevad meetodid===&lt;br /&gt;
&lt;br /&gt;
====Statistikaga seotud meetodid:====&lt;br /&gt;
*StatistikaRakendusteKohtaTana() - Tagastab rakenduse nimed ja nende vastu tehtud päringud tänasel päeval&lt;br /&gt;
*StatistikaRakendusteKohtaViimaneNadal() - Tagastab rakenduse nimed ja nende vastu tehtud päringud viimase nädala jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaSellelKuul() - Tagastab rakenduse nimed ja nende vastu tehtud päringud selle kuu jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaKokku() - Tagastab rakenduse nimed ja nende vastu tehtud päringud kogu aja vältel&lt;br /&gt;
&lt;br /&gt;
*StatistikaMeetoditeKohtaTana() - Meetod leiab tänase päeva jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaViimaneNadal() - Meetod leiab viimase nädala jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaSellelKuul() - Meetod leiab kuu jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaKokku() - Meetod leiab kogu aja vältel kasutatud meetodid ja paringute arvu&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : CMS ==&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Veebirakendus ==&lt;br /&gt;
&lt;br /&gt;
== Meeskonna kokkuvõttev aruanne ==&lt;br /&gt;
&lt;br /&gt;
== Logi ==&lt;br /&gt;
=== 9. aprill ===&lt;br /&gt;
Tegime rollide halduse, münüüde muutmise vormi. Meili saatmine registreerimisel. Toimus andmebaasi andmemudeli väike muutus. &lt;br /&gt;
&lt;br /&gt;
=== 30. märts ===&lt;br /&gt;
Tehtud on kohviku menüü ja kohviku kommenteerimise leht.&lt;br /&gt;
&lt;br /&gt;
=== 26. märts ===&lt;br /&gt;
Tehtud on esimesed veebiteenuse meetodid ja veebirakendusele kasutajate registreerimine.&lt;br /&gt;
&lt;br /&gt;
=== 10. märts ===&lt;br /&gt;
Väikese häki abil õnnestus kohviku kassa arvutis saada tööle üks Forms-i proovirakendus.&lt;br /&gt;
&lt;br /&gt;
=== 8. märts ===&lt;br /&gt;
Kuna kassa-aparaadis on operatsioonisüsteemiks Windows XP ja raud on 1.99 GHz, 256 RAM siis peaks saama&lt;br /&gt;
prototüübiks teha sinna peale rakenduse, mille ülesandeks menüüga tegelemine. &lt;br /&gt;
&lt;br /&gt;
=== 7. märts ===&lt;br /&gt;
Linnar Viik andis meile järgmist nõu: tuleb eristada kahte asja - see, mis peab valmis saama (&#039;&#039;must&#039;&#039;) ja see, mis oleks tore (&#039;&#039;nice to have&#039;&#039;). Valmis peab saama menüüga ekraan seinal (esialgu kasutajale prototüübi näitamiseks kasvõi näiteks PowerPoint-i abil tehtud). Alles siis kui on kasutajalt positiivne tagasiside saadud, võib edasi minna reaalse tarkvaralahenduse loomisega. Kui ka see on valmis ja kasutaja sellega rahul võib juurde mõelda &#039;&#039;nice to have&#039;&#039; asju (näiteks eelinfo järgmise päeva menüü kohta, üliõpilasesinduse sõnumite riba ja muid asju).&lt;br /&gt;
&lt;br /&gt;
Saime teada, et kui tahame, et meie loodav süsteem suhtleks IT Kohviku kassasüsteemiga, siis tuleb selle süsteemi tootjatega ühendust võtta ja nendega konsulteerida.&lt;br /&gt;
&lt;br /&gt;
=== 19.Veebruar ===&lt;br /&gt;
*Valmis XSLT fail.&lt;br /&gt;
&lt;br /&gt;
=== 9.Veebruar ===&lt;br /&gt;
* Esmane versioon XML ja XML Schemast olemas&lt;br /&gt;
* Tekkis küsimus kas XSLT faili tuleb käsitsi tekitada või automaatselt.&lt;br /&gt;
* Küsimus oli ka kas lahendasime portsjoni asja mõistlikult või oleks mõni teine lähenemine parem olnud.&lt;br /&gt;
* Küsimus, kas XML fail on liiga üle pingutatud või sobiva keerukusega&lt;br /&gt;
&lt;br /&gt;
=== 7. Veebruar ===&lt;br /&gt;
* Võtsime õppejõu poolt pakutud ideest kohe kinni, sest me eelistame teha praktilist asja, mida saab kasutada ja mille kasutamist saame ka iga päev jälgida. &lt;br /&gt;
* Esimese asjana otsustasime välja uurida mida meie &amp;quot;kliendid&amp;quot; (süsteemi tellijad) meilt ootavad. (Soovid idee punkti all)&lt;br /&gt;
* Valminud on lihtne teenusest ja klientidest koosnev süsteemi testmudel.&lt;br /&gt;
&lt;br /&gt;
[[Category: Võrgurakendused II: hajussüsteemide ehitamine]]&lt;br /&gt;
[[Category: Veebirakenduste loomine ASP.NET abil]]&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=27113</id>
		<title>Meeskond &quot;FoodWars&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=27113"/>
		<updated>2011-04-17T14:22:00Z</updated>

		<summary type="html">&lt;p&gt;Rruga: /* Veebiteenus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Idee ==&lt;br /&gt;
Meie tiimil on plaanis teha internetipõhine söökla menüü süsteem (aluseks IT Kolledži kohvik, aga suunitlus selline, et kõik kohvikud/sööklad saaksid teha endale kasutajakonto ja hakata rakendust kasutama), kust saaks jälgida menüüd, mis sööke saab süüa, mis veel järgi on, kasutajatel on ka võimalus sööke hinnata (stiilis &amp;quot;meeldib&amp;quot;, &amp;quot;ei meeldi&amp;quot; nagu Facebook-is).&lt;br /&gt;
&lt;br /&gt;
Kohvikupidaja Teele soovid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* elektroonilisest menüüst asju kustutada, isegi siis kui asja peaks olema teoreetiliselt alles, aga tegelikult on asi otsas.&lt;br /&gt;
* elektrikatkestuse korral jääb menüü püsima. Ta peab teadma hindu mistahes olukorras.&lt;br /&gt;
* menüül näidatakse automaatselt ka ISIC kaardi omanike soodushinnad&lt;br /&gt;
* süsteem toetab ka poole portsjoni müümist.&lt;br /&gt;
&lt;br /&gt;
Linnar Viigi soovid/visioonid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* kõik oleks ka internetist kättesaadav, peale LCD ekraani, mis kajastab menüüd sööklas.&lt;br /&gt;
* aluseks facebook, kus siis söögid oleks nagu facebook-i alateemad.&lt;br /&gt;
* saab sööke hinnata, kommenteerida (täna oli väga maitsev praad).&lt;br /&gt;
* kasutajad saaks vaadata, mis menüüs on (ka järgmisel nädalal) ja mitu portsu veel alles on.&lt;br /&gt;
* kasutajad saaksid välja pakkuda menüüsid.&lt;br /&gt;
* erinevate söögikohtade kasutajad saaksid omavahel muljeid jagada.&lt;br /&gt;
* kuu aja aktiivsemad saavad prii lõuna.&lt;br /&gt;
* mingil ajal võib olla &amp;quot;happy hour&amp;quot; (enne sulgemist saab odavamalt).&lt;br /&gt;
* piiranguks on see, et toitu broneerida ei saa &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vaba tarkvara kasutamise võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Antud projekti puhul oleks võimalik kasutada [http://www.postgresql.org/ PostgreSQL] andmebaasi (vt. lisaks http://en.wikipedia.org/wiki/PostgreSQL ) Microsoft SQL Server&#039;i asemel. See võiks anda kasutajale võimaluse valida .NET ning [http://www.mono-project.com/ Mono] (vt. lisaks http://en.wikipedia.org/wiki/Mono_(software) ) platvormide vahel. Sel viisil oleks kliendil võimalik Microsoft&#039;i platvormi kõrval valida tõenäoliselt soodsam vaba tarkvara platvorm. Andmebaasi lõplik valik pole hetkel veel otsustatud.&lt;br /&gt;
&lt;br /&gt;
== Meeskond ja tööjaotus==&lt;br /&gt;
* Kristjan Stolin - projektijuht, suhtlus kliendiga, XML, wiki, teenuskihtide progemine, rollide halduse lehe progemine&lt;br /&gt;
* Ilmar Telga - XML, kliendiga suhtlus, wiki, teenuskihtide progemine, lõpprakenduste menüüd, login&lt;br /&gt;
* Rauno Rüga - XML, XSLT, andmebaasi loomine, wiki, mobiilirakendus, statistika&lt;br /&gt;
* Lauri Kermas - teenuskihtide ehitamine, wiki, login, kommenteerimise võimaluste progemine&lt;br /&gt;
&lt;br /&gt;
== XML Fail ==&lt;br /&gt;
=== XML ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Toidud&amp;gt;&lt;br /&gt;
  &amp;lt;Toit&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduNimetus&amp;gt;Viineri kaste&amp;lt;/ToiduNimetus&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduLiik&amp;gt;Praad&amp;lt;/ToiduLiik&amp;gt;&lt;br /&gt;
    &amp;lt;OlemasolevatYhikut&amp;gt;5&amp;lt;/OlemasolevatYhikut&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduKogus&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Poolportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;2011&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;1&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;9&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;15&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;07&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;23&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;        &lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.15&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;0&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;0&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;0&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;00&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;00&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;00&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Täisportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.80&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
    &amp;lt;/ToiduKogus&amp;gt;&lt;br /&gt;
    &amp;lt;Kommentaarid&amp;gt;&lt;br /&gt;
      &amp;lt;Kommentaar&amp;gt;&lt;br /&gt;
        &amp;lt;Saatja&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaNimi&amp;gt;Kristjan&amp;lt;/SaatjaNimi&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaRoll&amp;gt;Tudeng&amp;lt;/SaatjaRoll&amp;gt;&lt;br /&gt;
        &amp;lt;/Saatja&amp;gt;&lt;br /&gt;
        &amp;lt;Sisu&amp;gt;Minu lemmik toit ! Kui algebra tund ei hakkaks, sööks veel 5 portsjonit.&amp;lt;/Sisu&amp;gt;&lt;br /&gt;
      &amp;lt;/Kommentaar&amp;gt;&lt;br /&gt;
    &amp;lt;/Kommentaarid&amp;gt;&lt;br /&gt;
  &amp;lt;/Toit&amp;gt;&lt;br /&gt;
&amp;lt;/Toidud&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kommentaariks siis niipalju, et meie näide on ilma kohviku osata, selleks et näidet mitte liiga suureks ajada.&lt;br /&gt;
&lt;br /&gt;
Ka on meil moment puudu ID väljad, mis on igasugu andmebaasiga suhtlemiseks hädavajalikud, samas siin näidises palju juurde ei anna.&lt;br /&gt;
&lt;br /&gt;
Asja tegemisel avastasime, et põhiliseks arusaamatuse kohaks on toitude erinevad kogused (ehk siis pool portsjonit, suur / väike ja muud võrdlevad ühikud). Esimese võimalusena kaalusime teha lihtsalt täiesti eraldi toidud kõige kohta, stiilis &amp;quot;väike viineripraad&amp;quot; ja &amp;quot;suur viineripraad&amp;quot;. Kahjuks see variant ei kõlbaks eriti hästi, kuna need erinevad portsjonid kasutavad ikkagi samu materjale ja kui me peaks mingi süsteemiga näitama kui palju portsjoneid alles on. Sööklast näiteks pakuti et väike portsjon kasutab materjale kuskil 0.8 suure portsjoni ulatuses, ehk see suhtarv peaks olema kasutaja poolt (kohvikupidaja, restoraniomanik) ise sätitav. &lt;br /&gt;
&lt;br /&gt;
Tänu sellele sai meie süsteemi alustalaks siiski Toit, millel on oma Portsjonid siis erinevate hindade ja soodustustega. Moment pole meil ka Portsjoni XML osas toodud ära seost kogusega. (Kui palju ühe portsjoni lisamine/müümine peaks toidu üldkogust muutma).&lt;br /&gt;
&lt;br /&gt;
Kommenteerida saab meil moment toitu ennast, mitte eraldi portsjonit. Isegi kui kasutajad tahavad lisada kommentaare stiilis &amp;quot;See väike supp oli tõesti väga väike&amp;quot;, ei soovi nad seda ilmselt eraldi portsjoni alla panna. Tulevikus peaks kindlasti olema ka võimalus pigem kommenteerida üldisemalt (Kohvikut ennast, söögipaiku üldse), kui spetsiifilisemalt (Väikse prae kaste lisandi kohta).&lt;br /&gt;
&lt;br /&gt;
=== XML Schema ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Toidud&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Toit&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduNimetus&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;OlemasolevatYhikut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduKogus&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:choice maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;PortsjoniLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;Myygiaeg&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Aasta&amp;quot; type=&amp;quot;xs:unsignedShort&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Kuu&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Paev&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Tund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Minut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Sekund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;ToiduHind&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Eurohind&amp;quot; type=&amp;quot;xs:decimal&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Soodustus&amp;quot;&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseProtsent&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:choice&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Kommentaarid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Saatja&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaNimi&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaRoll&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Sisu&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
  &amp;lt;h2&amp;gt;Kohvikus müüdavad toidud&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr bgcolor=&amp;quot;#9acd32&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Veel alles&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Portsjon&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Müügiaeg&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustuse liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Kommentaar(id)&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;Toidud/Toit&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduNimetus&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduLiik&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;OlemasolevatYhikut&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;PortsjoniLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Paev&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Kuu&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Aasta&amp;quot; /&amp;gt; &amp;amp;nbsp;  &lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Tund&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Minut&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Sekund&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Eurohind&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseProtsent&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Kommentaarid/Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Sisu&amp;quot; /&amp;gt;&amp;amp;nbsp;(&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaRoll&amp;quot; /&amp;gt;&amp;amp;nbsp;&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaNimi&amp;quot; /&amp;gt;)&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XSLT poolt loodud tulemus on järgnev (lisasin veel kaks toitu XML faili, siin wiki lehel on ruumi kokkuhoiuks vaid 1 toit toitude listis):&lt;br /&gt;
[[File:Xslt.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arhitektuur ==&lt;br /&gt;
&lt;br /&gt;
Süsteem on plaanis ehitada kolmekihilise arhitektuuriga ([http://en.wikipedia.org/wiki/Multitier_architecture#Three-tier_architecture Three-tier architecture]). See peaks lihtsustama süsteemi haldamist ja laiendamist tulevikus.&lt;br /&gt;
&lt;br /&gt;
[[Image:three-tier.png|thumb|center|alt=Arhitektuuri skeem.|Arhitektuuri skeem.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Veebiteenus ==&lt;br /&gt;
===Andmemudel===&lt;br /&gt;
[[Image:KohvikuAndmemudel.jpg|thumb|right|alt=Kohviku projekti andmemudel|Andmemudel]]&lt;br /&gt;
Enne veebiteenuse meetodite kirjeldamist koostasime andmemudeli. Loodud andmemudeli põhjal lõime andmebaasi vajalike tabelite ja atribuutidega. Andmemudeli peal on rohelisega tähistatud tabelid, mis on oseselt seotud kohviku valdajaga ja mida WPF rakenduse jaoks kindlasti vaja on. Ülejäänud helesinised tabelid on vajalikud kasutajate võimaluste jaoks. Lisaks on andmemudelil kaks tabelit, mis pole teisega seotud, need on süsteemi administraatori jaoks, et oleks ülevaade, mis rakendused teenust enim kasutavad ning mis meetodeid kõige rohkem välja kutsutakse.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Teenuskihis olevad meetodid===&lt;br /&gt;
&lt;br /&gt;
====Statistikaga seotud meetodid:====&lt;br /&gt;
*StatistikaRakendusteKohtaTana() - Tagastab rakenduse nimed ja nende vastu tehtud päringud tänasel päeval&lt;br /&gt;
*StatistikaRakendusteKohtaViimaneNadal() - Tagastab rakenduse nimed ja nende vastu tehtud päringud viimase nädala jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaSellelKuul() - Tagastab rakenduse nimed ja nende vastu tehtud päringud selle kuu jooksul&lt;br /&gt;
*StatistikaRakendusteKohtaKokku() - Tagastab rakenduse nimed ja nende vastu tehtud päringud kogu aja vältel&lt;br /&gt;
&lt;br /&gt;
*StatistikaMeetoditeKohtaTana() - Meetod leiab tänase päeva jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaViimaneNadal() - Meetod leiab viimase nädala jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaSellelKuul() - Meetod leiab kuu jooksul kasutatud meetodid ja paringute arvu&lt;br /&gt;
*StatistikaMeetoditeKohtaKokku() - Meetod leiab kogu aja vältel kasutatud meetodid ja paringute arvu&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : CMS ==&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Veebirakendus ==&lt;br /&gt;
&lt;br /&gt;
== Meeskonna kokkuvõttev aruanne ==&lt;br /&gt;
&lt;br /&gt;
== Logi ==&lt;br /&gt;
=== 9. aprill ===&lt;br /&gt;
Tegime rollide halduse, münüüde muutmise vormi. Meili saatmine registreerimisel. Toimus andmebaasi andmemudeli väike muutus. &lt;br /&gt;
&lt;br /&gt;
=== 30. märts ===&lt;br /&gt;
Tehtud on kohviku menüü ja kohviku kommenteerimise leht.&lt;br /&gt;
&lt;br /&gt;
=== 26. märts ===&lt;br /&gt;
Tehtud on esimesed veebiteenuse meetodid ja veebirakendusele kasutajate registreerimine.&lt;br /&gt;
&lt;br /&gt;
=== 10. märts ===&lt;br /&gt;
Väikese häki abil õnnestus kohviku kassa arvutis saada tööle üks Forms-i proovirakendus.&lt;br /&gt;
&lt;br /&gt;
=== 8. märts ===&lt;br /&gt;
Kuna kassa-aparaadis on operatsioonisüsteemiks Windows XP ja raud on 1.99 GHz, 256 RAM siis peaks saama&lt;br /&gt;
prototüübiks teha sinna peale rakenduse, mille ülesandeks menüüga tegelemine. &lt;br /&gt;
&lt;br /&gt;
=== 7. märts ===&lt;br /&gt;
Linnar Viik andis meile järgmist nõu: tuleb eristada kahte asja - see, mis peab valmis saama (&#039;&#039;must&#039;&#039;) ja see, mis oleks tore (&#039;&#039;nice to have&#039;&#039;). Valmis peab saama menüüga ekraan seinal (esialgu kasutajale prototüübi näitamiseks kasvõi näiteks PowerPoint-i abil tehtud). Alles siis kui on kasutajalt positiivne tagasiside saadud, võib edasi minna reaalse tarkvaralahenduse loomisega. Kui ka see on valmis ja kasutaja sellega rahul võib juurde mõelda &#039;&#039;nice to have&#039;&#039; asju (näiteks eelinfo järgmise päeva menüü kohta, üliõpilasesinduse sõnumite riba ja muid asju).&lt;br /&gt;
&lt;br /&gt;
Saime teada, et kui tahame, et meie loodav süsteem suhtleks IT Kohviku kassasüsteemiga, siis tuleb selle süsteemi tootjatega ühendust võtta ja nendega konsulteerida.&lt;br /&gt;
&lt;br /&gt;
=== 19.Veebruar ===&lt;br /&gt;
*Valmis XSLT fail.&lt;br /&gt;
&lt;br /&gt;
=== 9.Veebruar ===&lt;br /&gt;
* Esmane versioon XML ja XML Schemast olemas&lt;br /&gt;
* Tekkis küsimus kas XSLT faili tuleb käsitsi tekitada või automaatselt.&lt;br /&gt;
* Küsimus oli ka kas lahendasime portsjoni asja mõistlikult või oleks mõni teine lähenemine parem olnud.&lt;br /&gt;
* Küsimus, kas XML fail on liiga üle pingutatud või sobiva keerukusega&lt;br /&gt;
&lt;br /&gt;
=== 7. Veebruar ===&lt;br /&gt;
* Võtsime õppejõu poolt pakutud ideest kohe kinni, sest me eelistame teha praktilist asja, mida saab kasutada ja mille kasutamist saame ka iga päev jälgida. &lt;br /&gt;
* Esimese asjana otsustasime välja uurida mida meie &amp;quot;kliendid&amp;quot; (süsteemi tellijad) meilt ootavad. (Soovid idee punkti all)&lt;br /&gt;
* Valminud on lihtne teenusest ja klientidest koosnev süsteemi testmudel.&lt;br /&gt;
&lt;br /&gt;
[[Category: Võrgurakendused II: hajussüsteemide ehitamine]]&lt;br /&gt;
[[Category: Veebirakenduste loomine ASP.NET abil]]&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=27109</id>
		<title>Meeskond &quot;FoodWars&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=27109"/>
		<updated>2011-04-17T14:14:08Z</updated>

		<summary type="html">&lt;p&gt;Rruga: /* Veebiteenus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Idee ==&lt;br /&gt;
Meie tiimil on plaanis teha internetipõhine söökla menüü süsteem (aluseks IT Kolledži kohvik, aga suunitlus selline, et kõik kohvikud/sööklad saaksid teha endale kasutajakonto ja hakata rakendust kasutama), kust saaks jälgida menüüd, mis sööke saab süüa, mis veel järgi on, kasutajatel on ka võimalus sööke hinnata (stiilis &amp;quot;meeldib&amp;quot;, &amp;quot;ei meeldi&amp;quot; nagu Facebook-is).&lt;br /&gt;
&lt;br /&gt;
Kohvikupidaja Teele soovid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* elektroonilisest menüüst asju kustutada, isegi siis kui asja peaks olema teoreetiliselt alles, aga tegelikult on asi otsas.&lt;br /&gt;
* elektrikatkestuse korral jääb menüü püsima. Ta peab teadma hindu mistahes olukorras.&lt;br /&gt;
* menüül näidatakse automaatselt ka ISIC kaardi omanike soodushinnad&lt;br /&gt;
* süsteem toetab ka poole portsjoni müümist.&lt;br /&gt;
&lt;br /&gt;
Linnar Viigi soovid/visioonid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* kõik oleks ka internetist kättesaadav, peale LCD ekraani, mis kajastab menüüd sööklas.&lt;br /&gt;
* aluseks facebook, kus siis söögid oleks nagu facebook-i alateemad.&lt;br /&gt;
* saab sööke hinnata, kommenteerida (täna oli väga maitsev praad).&lt;br /&gt;
* kasutajad saaks vaadata, mis menüüs on (ka järgmisel nädalal) ja mitu portsu veel alles on.&lt;br /&gt;
* kasutajad saaksid välja pakkuda menüüsid.&lt;br /&gt;
* erinevate söögikohtade kasutajad saaksid omavahel muljeid jagada.&lt;br /&gt;
* kuu aja aktiivsemad saavad prii lõuna.&lt;br /&gt;
* mingil ajal võib olla &amp;quot;happy hour&amp;quot; (enne sulgemist saab odavamalt).&lt;br /&gt;
* piiranguks on see, et toitu broneerida ei saa &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vaba tarkvara kasutamise võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Antud projekti puhul oleks võimalik kasutada [http://www.postgresql.org/ PostgreSQL] andmebaasi (vt. lisaks http://en.wikipedia.org/wiki/PostgreSQL ) Microsoft SQL Server&#039;i asemel. See võiks anda kasutajale võimaluse valida .NET ning [http://www.mono-project.com/ Mono] (vt. lisaks http://en.wikipedia.org/wiki/Mono_(software) ) platvormide vahel. Sel viisil oleks kliendil võimalik Microsoft&#039;i platvormi kõrval valida tõenäoliselt soodsam vaba tarkvara platvorm. Andmebaasi lõplik valik pole hetkel veel otsustatud.&lt;br /&gt;
&lt;br /&gt;
== Meeskond ja tööjaotus==&lt;br /&gt;
* Kristjan Stolin - projektijuht, suhtlus kliendiga, XML, wiki, teenuskihtide progemine, rollide halduse lehe progemine&lt;br /&gt;
* Ilmar Telga - XML, kliendiga suhtlus, wiki, teenuskihtide progemine, lõpprakenduste menüüd, login&lt;br /&gt;
* Rauno Rüga - XML, XSLT, andmebaasi loomine, wiki, mobiilirakendus, statistika&lt;br /&gt;
* Lauri Kermas - teenuskihtide ehitamine, wiki, login, kommenteerimise võimaluste progemine&lt;br /&gt;
&lt;br /&gt;
== XML Fail ==&lt;br /&gt;
=== XML ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Toidud&amp;gt;&lt;br /&gt;
  &amp;lt;Toit&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduNimetus&amp;gt;Viineri kaste&amp;lt;/ToiduNimetus&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduLiik&amp;gt;Praad&amp;lt;/ToiduLiik&amp;gt;&lt;br /&gt;
    &amp;lt;OlemasolevatYhikut&amp;gt;5&amp;lt;/OlemasolevatYhikut&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduKogus&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Poolportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;2011&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;1&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;9&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;15&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;07&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;23&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;        &lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.15&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;0&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;0&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;0&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;00&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;00&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;00&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Täisportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.80&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
    &amp;lt;/ToiduKogus&amp;gt;&lt;br /&gt;
    &amp;lt;Kommentaarid&amp;gt;&lt;br /&gt;
      &amp;lt;Kommentaar&amp;gt;&lt;br /&gt;
        &amp;lt;Saatja&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaNimi&amp;gt;Kristjan&amp;lt;/SaatjaNimi&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaRoll&amp;gt;Tudeng&amp;lt;/SaatjaRoll&amp;gt;&lt;br /&gt;
        &amp;lt;/Saatja&amp;gt;&lt;br /&gt;
        &amp;lt;Sisu&amp;gt;Minu lemmik toit ! Kui algebra tund ei hakkaks, sööks veel 5 portsjonit.&amp;lt;/Sisu&amp;gt;&lt;br /&gt;
      &amp;lt;/Kommentaar&amp;gt;&lt;br /&gt;
    &amp;lt;/Kommentaarid&amp;gt;&lt;br /&gt;
  &amp;lt;/Toit&amp;gt;&lt;br /&gt;
&amp;lt;/Toidud&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kommentaariks siis niipalju, et meie näide on ilma kohviku osata, selleks et näidet mitte liiga suureks ajada.&lt;br /&gt;
&lt;br /&gt;
Ka on meil moment puudu ID väljad, mis on igasugu andmebaasiga suhtlemiseks hädavajalikud, samas siin näidises palju juurde ei anna.&lt;br /&gt;
&lt;br /&gt;
Asja tegemisel avastasime, et põhiliseks arusaamatuse kohaks on toitude erinevad kogused (ehk siis pool portsjonit, suur / väike ja muud võrdlevad ühikud). Esimese võimalusena kaalusime teha lihtsalt täiesti eraldi toidud kõige kohta, stiilis &amp;quot;väike viineripraad&amp;quot; ja &amp;quot;suur viineripraad&amp;quot;. Kahjuks see variant ei kõlbaks eriti hästi, kuna need erinevad portsjonid kasutavad ikkagi samu materjale ja kui me peaks mingi süsteemiga näitama kui palju portsjoneid alles on. Sööklast näiteks pakuti et väike portsjon kasutab materjale kuskil 0.8 suure portsjoni ulatuses, ehk see suhtarv peaks olema kasutaja poolt (kohvikupidaja, restoraniomanik) ise sätitav. &lt;br /&gt;
&lt;br /&gt;
Tänu sellele sai meie süsteemi alustalaks siiski Toit, millel on oma Portsjonid siis erinevate hindade ja soodustustega. Moment pole meil ka Portsjoni XML osas toodud ära seost kogusega. (Kui palju ühe portsjoni lisamine/müümine peaks toidu üldkogust muutma).&lt;br /&gt;
&lt;br /&gt;
Kommenteerida saab meil moment toitu ennast, mitte eraldi portsjonit. Isegi kui kasutajad tahavad lisada kommentaare stiilis &amp;quot;See väike supp oli tõesti väga väike&amp;quot;, ei soovi nad seda ilmselt eraldi portsjoni alla panna. Tulevikus peaks kindlasti olema ka võimalus pigem kommenteerida üldisemalt (Kohvikut ennast, söögipaiku üldse), kui spetsiifilisemalt (Väikse prae kaste lisandi kohta).&lt;br /&gt;
&lt;br /&gt;
=== XML Schema ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Toidud&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Toit&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduNimetus&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;OlemasolevatYhikut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduKogus&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:choice maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;PortsjoniLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;Myygiaeg&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Aasta&amp;quot; type=&amp;quot;xs:unsignedShort&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Kuu&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Paev&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Tund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Minut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Sekund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;ToiduHind&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Eurohind&amp;quot; type=&amp;quot;xs:decimal&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Soodustus&amp;quot;&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseProtsent&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:choice&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Kommentaarid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Saatja&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaNimi&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaRoll&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Sisu&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
  &amp;lt;h2&amp;gt;Kohvikus müüdavad toidud&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr bgcolor=&amp;quot;#9acd32&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Veel alles&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Portsjon&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Müügiaeg&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustuse liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Kommentaar(id)&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;Toidud/Toit&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduNimetus&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduLiik&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;OlemasolevatYhikut&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;PortsjoniLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Paev&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Kuu&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Aasta&amp;quot; /&amp;gt; &amp;amp;nbsp;  &lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Tund&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Minut&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Sekund&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Eurohind&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseProtsent&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Kommentaarid/Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Sisu&amp;quot; /&amp;gt;&amp;amp;nbsp;(&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaRoll&amp;quot; /&amp;gt;&amp;amp;nbsp;&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaNimi&amp;quot; /&amp;gt;)&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XSLT poolt loodud tulemus on järgnev (lisasin veel kaks toitu XML faili, siin wiki lehel on ruumi kokkuhoiuks vaid 1 toit toitude listis):&lt;br /&gt;
[[File:Xslt.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arhitektuur ==&lt;br /&gt;
&lt;br /&gt;
Süsteem on plaanis ehitada kolmekihilise arhitektuuriga ([http://en.wikipedia.org/wiki/Multitier_architecture#Three-tier_architecture Three-tier architecture]). See peaks lihtsustama süsteemi haldamist ja laiendamist tulevikus.&lt;br /&gt;
&lt;br /&gt;
[[Image:three-tier.png|thumb|center|alt=Arhitektuuri skeem.|Arhitektuuri skeem.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Veebiteenus ==&lt;br /&gt;
&lt;br /&gt;
[[Image:KohvikuAndmemudel.jpg|thumb|right|alt=Kohviku projekti andmemudel|Andmemudel]]&lt;br /&gt;
Enne veebiteenuse meetodite kirjeldamist koostasime andmemudeli. Loodud andmemudeli põhjal lõime andmebaasi vajalike tabelite ja atribuutidega. Andmemudeli peal on rohelisega tähistatud tabelid, mis on oseselt seotud kohviku valdajaga ja mida WPF rakenduse jaoks kindlasti vaja on. Ülejäänud helesinised tabelid on vajalikud kasutajate võimaluste jaoks. Lisaks on andmemudelil kaks tabelit, mis pole teisega seotud, need on süsteemi administraatori jaoks, et oleks ülevaade, mis rakendused teenust enim kasutavad ning mis meetodeid kõige rohkem välja kutsutakse.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Teenuskihis olevad meetodid:&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : CMS ==&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Veebirakendus ==&lt;br /&gt;
&lt;br /&gt;
== Meeskonna kokkuvõttev aruanne ==&lt;br /&gt;
&lt;br /&gt;
== Logi ==&lt;br /&gt;
=== 9. aprill ===&lt;br /&gt;
Tegime rollide halduse, münüüde muutmise vormi. Meili saatmine registreerimisel. Toimus andmebaasi andmemudeli väike muutus. &lt;br /&gt;
&lt;br /&gt;
=== 30. märts ===&lt;br /&gt;
Tehtud on kohviku menüü ja kohviku kommenteerimise leht.&lt;br /&gt;
&lt;br /&gt;
=== 26. märts ===&lt;br /&gt;
Tehtud on esimesed veebiteenuse meetodid ja veebirakendusele kasutajate registreerimine.&lt;br /&gt;
&lt;br /&gt;
=== 10. märts ===&lt;br /&gt;
Väikese häki abil õnnestus kohviku kassa arvutis saada tööle üks Forms-i proovirakendus.&lt;br /&gt;
&lt;br /&gt;
=== 8. märts ===&lt;br /&gt;
Kuna kassa-aparaadis on operatsioonisüsteemiks Windows XP ja raud on 1.99 GHz, 256 RAM siis peaks saama&lt;br /&gt;
prototüübiks teha sinna peale rakenduse, mille ülesandeks menüüga tegelemine. &lt;br /&gt;
&lt;br /&gt;
=== 7. märts ===&lt;br /&gt;
Linnar Viik andis meile järgmist nõu: tuleb eristada kahte asja - see, mis peab valmis saama (&#039;&#039;must&#039;&#039;) ja see, mis oleks tore (&#039;&#039;nice to have&#039;&#039;). Valmis peab saama menüüga ekraan seinal (esialgu kasutajale prototüübi näitamiseks kasvõi näiteks PowerPoint-i abil tehtud). Alles siis kui on kasutajalt positiivne tagasiside saadud, võib edasi minna reaalse tarkvaralahenduse loomisega. Kui ka see on valmis ja kasutaja sellega rahul võib juurde mõelda &#039;&#039;nice to have&#039;&#039; asju (näiteks eelinfo järgmise päeva menüü kohta, üliõpilasesinduse sõnumite riba ja muid asju).&lt;br /&gt;
&lt;br /&gt;
Saime teada, et kui tahame, et meie loodav süsteem suhtleks IT Kohviku kassasüsteemiga, siis tuleb selle süsteemi tootjatega ühendust võtta ja nendega konsulteerida.&lt;br /&gt;
&lt;br /&gt;
=== 19.Veebruar ===&lt;br /&gt;
*Valmis XSLT fail.&lt;br /&gt;
&lt;br /&gt;
=== 9.Veebruar ===&lt;br /&gt;
* Esmane versioon XML ja XML Schemast olemas&lt;br /&gt;
* Tekkis küsimus kas XSLT faili tuleb käsitsi tekitada või automaatselt.&lt;br /&gt;
* Küsimus oli ka kas lahendasime portsjoni asja mõistlikult või oleks mõni teine lähenemine parem olnud.&lt;br /&gt;
* Küsimus, kas XML fail on liiga üle pingutatud või sobiva keerukusega&lt;br /&gt;
&lt;br /&gt;
=== 7. Veebruar ===&lt;br /&gt;
* Võtsime õppejõu poolt pakutud ideest kohe kinni, sest me eelistame teha praktilist asja, mida saab kasutada ja mille kasutamist saame ka iga päev jälgida. &lt;br /&gt;
* Esimese asjana otsustasime välja uurida mida meie &amp;quot;kliendid&amp;quot; (süsteemi tellijad) meilt ootavad. (Soovid idee punkti all)&lt;br /&gt;
* Valminud on lihtne teenusest ja klientidest koosnev süsteemi testmudel.&lt;br /&gt;
&lt;br /&gt;
[[Category: Võrgurakendused II: hajussüsteemide ehitamine]]&lt;br /&gt;
[[Category: Veebirakenduste loomine ASP.NET abil]]&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=27108</id>
		<title>Meeskond &quot;FoodWars&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=27108"/>
		<updated>2011-04-17T14:13:24Z</updated>

		<summary type="html">&lt;p&gt;Rruga: /* Veebiteenus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Idee ==&lt;br /&gt;
Meie tiimil on plaanis teha internetipõhine söökla menüü süsteem (aluseks IT Kolledži kohvik, aga suunitlus selline, et kõik kohvikud/sööklad saaksid teha endale kasutajakonto ja hakata rakendust kasutama), kust saaks jälgida menüüd, mis sööke saab süüa, mis veel järgi on, kasutajatel on ka võimalus sööke hinnata (stiilis &amp;quot;meeldib&amp;quot;, &amp;quot;ei meeldi&amp;quot; nagu Facebook-is).&lt;br /&gt;
&lt;br /&gt;
Kohvikupidaja Teele soovid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* elektroonilisest menüüst asju kustutada, isegi siis kui asja peaks olema teoreetiliselt alles, aga tegelikult on asi otsas.&lt;br /&gt;
* elektrikatkestuse korral jääb menüü püsima. Ta peab teadma hindu mistahes olukorras.&lt;br /&gt;
* menüül näidatakse automaatselt ka ISIC kaardi omanike soodushinnad&lt;br /&gt;
* süsteem toetab ka poole portsjoni müümist.&lt;br /&gt;
&lt;br /&gt;
Linnar Viigi soovid/visioonid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* kõik oleks ka internetist kättesaadav, peale LCD ekraani, mis kajastab menüüd sööklas.&lt;br /&gt;
* aluseks facebook, kus siis söögid oleks nagu facebook-i alateemad.&lt;br /&gt;
* saab sööke hinnata, kommenteerida (täna oli väga maitsev praad).&lt;br /&gt;
* kasutajad saaks vaadata, mis menüüs on (ka järgmisel nädalal) ja mitu portsu veel alles on.&lt;br /&gt;
* kasutajad saaksid välja pakkuda menüüsid.&lt;br /&gt;
* erinevate söögikohtade kasutajad saaksid omavahel muljeid jagada.&lt;br /&gt;
* kuu aja aktiivsemad saavad prii lõuna.&lt;br /&gt;
* mingil ajal võib olla &amp;quot;happy hour&amp;quot; (enne sulgemist saab odavamalt).&lt;br /&gt;
* piiranguks on see, et toitu broneerida ei saa &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vaba tarkvara kasutamise võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Antud projekti puhul oleks võimalik kasutada [http://www.postgresql.org/ PostgreSQL] andmebaasi (vt. lisaks http://en.wikipedia.org/wiki/PostgreSQL ) Microsoft SQL Server&#039;i asemel. See võiks anda kasutajale võimaluse valida .NET ning [http://www.mono-project.com/ Mono] (vt. lisaks http://en.wikipedia.org/wiki/Mono_(software) ) platvormide vahel. Sel viisil oleks kliendil võimalik Microsoft&#039;i platvormi kõrval valida tõenäoliselt soodsam vaba tarkvara platvorm. Andmebaasi lõplik valik pole hetkel veel otsustatud.&lt;br /&gt;
&lt;br /&gt;
== Meeskond ja tööjaotus==&lt;br /&gt;
* Kristjan Stolin - projektijuht, suhtlus kliendiga, XML, wiki, teenuskihtide progemine, rollide halduse lehe progemine&lt;br /&gt;
* Ilmar Telga - XML, kliendiga suhtlus, wiki, teenuskihtide progemine, lõpprakenduste menüüd, login&lt;br /&gt;
* Rauno Rüga - XML, XSLT, andmebaasi loomine, wiki, mobiilirakendus, statistika&lt;br /&gt;
* Lauri Kermas - teenuskihtide ehitamine, wiki, login, kommenteerimise võimaluste progemine&lt;br /&gt;
&lt;br /&gt;
== XML Fail ==&lt;br /&gt;
=== XML ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Toidud&amp;gt;&lt;br /&gt;
  &amp;lt;Toit&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduNimetus&amp;gt;Viineri kaste&amp;lt;/ToiduNimetus&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduLiik&amp;gt;Praad&amp;lt;/ToiduLiik&amp;gt;&lt;br /&gt;
    &amp;lt;OlemasolevatYhikut&amp;gt;5&amp;lt;/OlemasolevatYhikut&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduKogus&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Poolportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;2011&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;1&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;9&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;15&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;07&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;23&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;        &lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.15&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;0&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;0&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;0&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;00&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;00&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;00&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Täisportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.80&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
    &amp;lt;/ToiduKogus&amp;gt;&lt;br /&gt;
    &amp;lt;Kommentaarid&amp;gt;&lt;br /&gt;
      &amp;lt;Kommentaar&amp;gt;&lt;br /&gt;
        &amp;lt;Saatja&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaNimi&amp;gt;Kristjan&amp;lt;/SaatjaNimi&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaRoll&amp;gt;Tudeng&amp;lt;/SaatjaRoll&amp;gt;&lt;br /&gt;
        &amp;lt;/Saatja&amp;gt;&lt;br /&gt;
        &amp;lt;Sisu&amp;gt;Minu lemmik toit ! Kui algebra tund ei hakkaks, sööks veel 5 portsjonit.&amp;lt;/Sisu&amp;gt;&lt;br /&gt;
      &amp;lt;/Kommentaar&amp;gt;&lt;br /&gt;
    &amp;lt;/Kommentaarid&amp;gt;&lt;br /&gt;
  &amp;lt;/Toit&amp;gt;&lt;br /&gt;
&amp;lt;/Toidud&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kommentaariks siis niipalju, et meie näide on ilma kohviku osata, selleks et näidet mitte liiga suureks ajada.&lt;br /&gt;
&lt;br /&gt;
Ka on meil moment puudu ID väljad, mis on igasugu andmebaasiga suhtlemiseks hädavajalikud, samas siin näidises palju juurde ei anna.&lt;br /&gt;
&lt;br /&gt;
Asja tegemisel avastasime, et põhiliseks arusaamatuse kohaks on toitude erinevad kogused (ehk siis pool portsjonit, suur / väike ja muud võrdlevad ühikud). Esimese võimalusena kaalusime teha lihtsalt täiesti eraldi toidud kõige kohta, stiilis &amp;quot;väike viineripraad&amp;quot; ja &amp;quot;suur viineripraad&amp;quot;. Kahjuks see variant ei kõlbaks eriti hästi, kuna need erinevad portsjonid kasutavad ikkagi samu materjale ja kui me peaks mingi süsteemiga näitama kui palju portsjoneid alles on. Sööklast näiteks pakuti et väike portsjon kasutab materjale kuskil 0.8 suure portsjoni ulatuses, ehk see suhtarv peaks olema kasutaja poolt (kohvikupidaja, restoraniomanik) ise sätitav. &lt;br /&gt;
&lt;br /&gt;
Tänu sellele sai meie süsteemi alustalaks siiski Toit, millel on oma Portsjonid siis erinevate hindade ja soodustustega. Moment pole meil ka Portsjoni XML osas toodud ära seost kogusega. (Kui palju ühe portsjoni lisamine/müümine peaks toidu üldkogust muutma).&lt;br /&gt;
&lt;br /&gt;
Kommenteerida saab meil moment toitu ennast, mitte eraldi portsjonit. Isegi kui kasutajad tahavad lisada kommentaare stiilis &amp;quot;See väike supp oli tõesti väga väike&amp;quot;, ei soovi nad seda ilmselt eraldi portsjoni alla panna. Tulevikus peaks kindlasti olema ka võimalus pigem kommenteerida üldisemalt (Kohvikut ennast, söögipaiku üldse), kui spetsiifilisemalt (Väikse prae kaste lisandi kohta).&lt;br /&gt;
&lt;br /&gt;
=== XML Schema ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Toidud&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Toit&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduNimetus&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;OlemasolevatYhikut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduKogus&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:choice maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;PortsjoniLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;Myygiaeg&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Aasta&amp;quot; type=&amp;quot;xs:unsignedShort&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Kuu&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Paev&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Tund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Minut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Sekund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;ToiduHind&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Eurohind&amp;quot; type=&amp;quot;xs:decimal&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Soodustus&amp;quot;&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseProtsent&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:choice&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Kommentaarid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Saatja&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaNimi&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaRoll&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Sisu&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
  &amp;lt;h2&amp;gt;Kohvikus müüdavad toidud&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr bgcolor=&amp;quot;#9acd32&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Veel alles&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Portsjon&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Müügiaeg&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustuse liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Kommentaar(id)&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;Toidud/Toit&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduNimetus&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduLiik&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;OlemasolevatYhikut&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;PortsjoniLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Paev&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Kuu&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Aasta&amp;quot; /&amp;gt; &amp;amp;nbsp;  &lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Tund&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Minut&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Sekund&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Eurohind&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseProtsent&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Kommentaarid/Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Sisu&amp;quot; /&amp;gt;&amp;amp;nbsp;(&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaRoll&amp;quot; /&amp;gt;&amp;amp;nbsp;&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaNimi&amp;quot; /&amp;gt;)&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XSLT poolt loodud tulemus on järgnev (lisasin veel kaks toitu XML faili, siin wiki lehel on ruumi kokkuhoiuks vaid 1 toit toitude listis):&lt;br /&gt;
[[File:Xslt.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arhitektuur ==&lt;br /&gt;
&lt;br /&gt;
Süsteem on plaanis ehitada kolmekihilise arhitektuuriga ([http://en.wikipedia.org/wiki/Multitier_architecture#Three-tier_architecture Three-tier architecture]). See peaks lihtsustama süsteemi haldamist ja laiendamist tulevikus.&lt;br /&gt;
&lt;br /&gt;
[[Image:three-tier.png|thumb|center|alt=Arhitektuuri skeem.|Arhitektuuri skeem.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Veebiteenus ==&lt;br /&gt;
&lt;br /&gt;
[[Image:KohvikuAndmemudel.jpg|thumb|right|alt=Kohviku projekti andmemudel|Andmemudel]]&lt;br /&gt;
Enne veebiteenuse meetodite kirjeldamist koostasime andmemudeli. Loodud andmemudeli põhjal lõime andmebaasi vajalike tabelite ja atribuutidega. Andmemudeli peal on rohelisega tähistatud tabelid, mis on oseselt seotud kohviku valdajaga ja mida WPF rakenduse jaoks kindlasti vaja on. Ülejäänud helesinised tabelid on vajalikud kasutajate võimaluste jaoks. Lisaks on andmemudelil kaks tabelit, mis pole teisega seotud, need on süsteemi administraatori jaoks, et oleks ülevaade, mis rakendused teenust enim kasutavad ning mis meetodeid kõige rohkem välja kutsutakse.&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : CMS ==&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Veebirakendus ==&lt;br /&gt;
&lt;br /&gt;
== Meeskonna kokkuvõttev aruanne ==&lt;br /&gt;
&lt;br /&gt;
== Logi ==&lt;br /&gt;
=== 9. aprill ===&lt;br /&gt;
Tegime rollide halduse, münüüde muutmise vormi. Meili saatmine registreerimisel. Toimus andmebaasi andmemudeli väike muutus. &lt;br /&gt;
&lt;br /&gt;
=== 30. märts ===&lt;br /&gt;
Tehtud on kohviku menüü ja kohviku kommenteerimise leht.&lt;br /&gt;
&lt;br /&gt;
=== 26. märts ===&lt;br /&gt;
Tehtud on esimesed veebiteenuse meetodid ja veebirakendusele kasutajate registreerimine.&lt;br /&gt;
&lt;br /&gt;
=== 10. märts ===&lt;br /&gt;
Väikese häki abil õnnestus kohviku kassa arvutis saada tööle üks Forms-i proovirakendus.&lt;br /&gt;
&lt;br /&gt;
=== 8. märts ===&lt;br /&gt;
Kuna kassa-aparaadis on operatsioonisüsteemiks Windows XP ja raud on 1.99 GHz, 256 RAM siis peaks saama&lt;br /&gt;
prototüübiks teha sinna peale rakenduse, mille ülesandeks menüüga tegelemine. &lt;br /&gt;
&lt;br /&gt;
=== 7. märts ===&lt;br /&gt;
Linnar Viik andis meile järgmist nõu: tuleb eristada kahte asja - see, mis peab valmis saama (&#039;&#039;must&#039;&#039;) ja see, mis oleks tore (&#039;&#039;nice to have&#039;&#039;). Valmis peab saama menüüga ekraan seinal (esialgu kasutajale prototüübi näitamiseks kasvõi näiteks PowerPoint-i abil tehtud). Alles siis kui on kasutajalt positiivne tagasiside saadud, võib edasi minna reaalse tarkvaralahenduse loomisega. Kui ka see on valmis ja kasutaja sellega rahul võib juurde mõelda &#039;&#039;nice to have&#039;&#039; asju (näiteks eelinfo järgmise päeva menüü kohta, üliõpilasesinduse sõnumite riba ja muid asju).&lt;br /&gt;
&lt;br /&gt;
Saime teada, et kui tahame, et meie loodav süsteem suhtleks IT Kohviku kassasüsteemiga, siis tuleb selle süsteemi tootjatega ühendust võtta ja nendega konsulteerida.&lt;br /&gt;
&lt;br /&gt;
=== 19.Veebruar ===&lt;br /&gt;
*Valmis XSLT fail.&lt;br /&gt;
&lt;br /&gt;
=== 9.Veebruar ===&lt;br /&gt;
* Esmane versioon XML ja XML Schemast olemas&lt;br /&gt;
* Tekkis küsimus kas XSLT faili tuleb käsitsi tekitada või automaatselt.&lt;br /&gt;
* Küsimus oli ka kas lahendasime portsjoni asja mõistlikult või oleks mõni teine lähenemine parem olnud.&lt;br /&gt;
* Küsimus, kas XML fail on liiga üle pingutatud või sobiva keerukusega&lt;br /&gt;
&lt;br /&gt;
=== 7. Veebruar ===&lt;br /&gt;
* Võtsime õppejõu poolt pakutud ideest kohe kinni, sest me eelistame teha praktilist asja, mida saab kasutada ja mille kasutamist saame ka iga päev jälgida. &lt;br /&gt;
* Esimese asjana otsustasime välja uurida mida meie &amp;quot;kliendid&amp;quot; (süsteemi tellijad) meilt ootavad. (Soovid idee punkti all)&lt;br /&gt;
* Valminud on lihtne teenusest ja klientidest koosnev süsteemi testmudel.&lt;br /&gt;
&lt;br /&gt;
[[Category: Võrgurakendused II: hajussüsteemide ehitamine]]&lt;br /&gt;
[[Category: Veebirakenduste loomine ASP.NET abil]]&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=File:KohvikuAndmemudel.jpg&amp;diff=27107</id>
		<title>File:KohvikuAndmemudel.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=File:KohvikuAndmemudel.jpg&amp;diff=27107"/>
		<updated>2011-04-17T14:11:52Z</updated>

		<summary type="html">&lt;p&gt;Rruga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=23757</id>
		<title>Meeskond &quot;FoodWars&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=23757"/>
		<updated>2011-03-18T15:20:55Z</updated>

		<summary type="html">&lt;p&gt;Rruga: /* Meeskond */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Idee ==&lt;br /&gt;
Meie tiimil on plaanis teha internetipõhine söökla menüü süsteem (aluseks IT Kolledži kohvik, aga suunitlus selline, et kõik kohvikud/sööklad saaksid teha endale kasutajakonto ja hakata rakendust kasutama), kust saaks jälgida menüüd, mis sööke saab süüa, mis veel järgi on, kasutajatel on ka võimalus sööke hinnata (stiilis &amp;quot;meeldib&amp;quot;, &amp;quot;ei meeldi&amp;quot; nagu Facebook-is).&lt;br /&gt;
&lt;br /&gt;
Kohvikupidaja Teele soovid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* elektroonilisest menüüst asju kustutada, isegi siis kui asja peaks olema teoreetiliselt alles, aga tegelikult on asi otsas.&lt;br /&gt;
* elektrikatkestuse korral jääb menüü püsima. Ta peab teadma hindu mistahes olukorras.&lt;br /&gt;
* menüül näidatakse automaatselt ka ISIC kaardi omanike soodushinnad&lt;br /&gt;
* süsteem toetab ka poole portsjoni müümist.&lt;br /&gt;
&lt;br /&gt;
Linnar Viigi soovid/visioonid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* kõik oleks ka internetist kättesaadav, peale LCD ekraani, mis kajastab menüüd sööklas.&lt;br /&gt;
* aluseks facebook, kus siis söögid oleks nagu facebook-i alateemad.&lt;br /&gt;
* saab sööke hinnata, kommenteerida (täna oli väga maitsev praad).&lt;br /&gt;
* kasutajad saaks vaadata, mis menüüs on (ka järgmisel nädalal) ja mitu portsu veel alles on.&lt;br /&gt;
* kasutajad saaksid välja pakkuda menüüsid.&lt;br /&gt;
* erinevate söögikohtade kasutajad saaksid omavahel muljeid jagada.&lt;br /&gt;
* kuu aja aktiivsemad saavad prii lõuna.&lt;br /&gt;
* mingil ajal võib olla &amp;quot;happy hour&amp;quot; (enne sulgemist saab odavamalt).&lt;br /&gt;
* piiranguks on see, et toitu broneerida ei saa &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vaba tarkvara kasutamise võimalus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Antud projekti puhul oleks võimalik kasutada [http://www.postgresql.org/ PostgreSQL] andmebaasi (vt. lisaks http://en.wikipedia.org/wiki/PostgreSQL ) Microsoft SQL Server&#039;i asemel. See võiks anda kasutajale võimaluse valida .NET ning [http://www.mono-project.com/ Mono] (vt. lisaks http://en.wikipedia.org/wiki/Mono_(software) ) platvormide vahel. Sel viisil oleks kliendil võimalik Microsoft&#039;i platvormi kõrval valida tõenäoliselt soodsam vaba tarkvara platvorm. Andmebaasi lõplik valik pole hetkel veel otsustatud.&lt;br /&gt;
&lt;br /&gt;
== Meeskond ja tööjaotus==&lt;br /&gt;
* Kristjan Stolin - projektijuht, suhtlus kliendiga, XML, wiki&lt;br /&gt;
* Ilmar Telga - XML, kliendiga suhtlus, wiki&lt;br /&gt;
* Rauno Rüga - XML, XSLT, andmebaasi loomine, wiki&lt;br /&gt;
* Lauri Kermas - teenuskihtide ehitamine, wiki&lt;br /&gt;
&lt;br /&gt;
== XML Fail ==&lt;br /&gt;
=== XML ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Toidud&amp;gt;&lt;br /&gt;
  &amp;lt;Toit&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduNimetus&amp;gt;Viineri kaste&amp;lt;/ToiduNimetus&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduLiik&amp;gt;Praad&amp;lt;/ToiduLiik&amp;gt;&lt;br /&gt;
    &amp;lt;OlemasolevatYhikut&amp;gt;5&amp;lt;/OlemasolevatYhikut&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduKogus&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Poolportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;2011&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;1&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;9&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;15&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;07&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;23&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;        &lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.15&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;0&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;0&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;0&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;00&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;00&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;00&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Täisportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.80&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
    &amp;lt;/ToiduKogus&amp;gt;&lt;br /&gt;
    &amp;lt;Kommentaarid&amp;gt;&lt;br /&gt;
      &amp;lt;Kommentaar&amp;gt;&lt;br /&gt;
        &amp;lt;Saatja&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaNimi&amp;gt;Kristjan&amp;lt;/SaatjaNimi&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaRoll&amp;gt;Tudeng&amp;lt;/SaatjaRoll&amp;gt;&lt;br /&gt;
        &amp;lt;/Saatja&amp;gt;&lt;br /&gt;
        &amp;lt;Sisu&amp;gt;Minu lemmik toit ! Kui algebra tund ei hakkaks, sööks veel 5 portsjonit.&amp;lt;/Sisu&amp;gt;&lt;br /&gt;
      &amp;lt;/Kommentaar&amp;gt;&lt;br /&gt;
    &amp;lt;/Kommentaarid&amp;gt;&lt;br /&gt;
  &amp;lt;/Toit&amp;gt;&lt;br /&gt;
&amp;lt;/Toidud&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kommentaariks siis niipalju, et meie näide on ilma kohviku osata, selleks et näidet mitte liiga suureks ajada.&lt;br /&gt;
&lt;br /&gt;
Ka on meil moment puudu ID väljad, mis on igasugu andmebaasiga suhtlemiseks hädavajalikud, samas siin näidises palju juurde ei anna.&lt;br /&gt;
&lt;br /&gt;
Asja tegemisel avastasime, et põhiliseks arusaamatuse kohaks on toitude erinevad kogused (ehk siis pool portsjonit, suur / väike ja muud võrdlevad ühikud). Esimese võimalusena kaalusime teha lihtsalt täiesti eraldi toidud kõige kohta, stiilis &amp;quot;väike viineripraad&amp;quot; ja &amp;quot;suur viineripraad&amp;quot;. Kahjuks see variant ei kõlbaks eriti hästi, kuna need erinevad portsjonid kasutavad ikkagi samu materjale ja kui me peaks mingi süsteemiga näitama kui palju portsjoneid alles on. Sööklast näiteks pakuti et väike portsjon kasutab materjale kuskil 0.8 suure portsjoni ulatuses, ehk see suhtarv peaks olema kasutaja poolt (kohvikupidaja, restoraniomanik) ise sätitav. &lt;br /&gt;
&lt;br /&gt;
Tänu sellele sai meie süsteemi alustalaks siiski Toit, millel on oma Portsjonid siis erinevate hindade ja soodustustega. Moment pole meil ka Portsjoni XML osas toodud ära seost kogusega. (Kui palju ühe portsjoni lisamine/müümine peaks toidu üldkogust muutma).&lt;br /&gt;
&lt;br /&gt;
Kommenteerida saab meil moment toitu ennast, mitte eraldi portsjonit. Isegi kui kasutajad tahavad lisada kommentaare stiilis &amp;quot;See väike supp oli tõesti väga väike&amp;quot;, ei soovi nad seda ilmselt eraldi portsjoni alla panna. Tulevikus peaks kindlasti olema ka võimalus pigem kommenteerida üldisemalt (Kohvikut ennast, söögipaiku üldse), kui spetsiifilisemalt (Väikse prae kaste lisandi kohta).&lt;br /&gt;
&lt;br /&gt;
=== XML Schema ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Toidud&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Toit&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduNimetus&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;OlemasolevatYhikut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduKogus&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:choice maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;PortsjoniLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;Myygiaeg&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Aasta&amp;quot; type=&amp;quot;xs:unsignedShort&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Kuu&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Paev&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Tund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Minut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Sekund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;ToiduHind&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Eurohind&amp;quot; type=&amp;quot;xs:decimal&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Soodustus&amp;quot;&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseProtsent&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:choice&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Kommentaarid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Saatja&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaNimi&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaRoll&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Sisu&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== XSLT ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
  &amp;lt;h2&amp;gt;Kohvikus müüdavad toidud&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr bgcolor=&amp;quot;#9acd32&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Veel alles&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Portsjon&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Müügiaeg&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustuse liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Kommentaar(id)&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;Toidud/Toit&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduNimetus&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduLiik&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;OlemasolevatYhikut&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;PortsjoniLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Paev&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Kuu&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Aasta&amp;quot; /&amp;gt; &amp;amp;nbsp;  &lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Tund&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Minut&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Sekund&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Eurohind&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseProtsent&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Kommentaarid/Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Sisu&amp;quot; /&amp;gt;&amp;amp;nbsp;(&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaRoll&amp;quot; /&amp;gt;&amp;amp;nbsp;&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaNimi&amp;quot; /&amp;gt;)&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XSLT poolt loodud tulemus on järgnev (lisasin veel kaks toitu XML faili, siin wiki lehel on ruumi kokkuhoiuks vaid 1 toit toitude listis):&lt;br /&gt;
[[File:Xslt.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arhitektuur ==&lt;br /&gt;
&lt;br /&gt;
Süsteem on plaanis ehitada kolmekihilise arhitektuuriga ([http://en.wikipedia.org/wiki/Multitier_architecture#Three-tier_architecture Three-tier architecture]). See peaks lihtsustama süsteemi haldamist ja laiendamist tulevikus.&lt;br /&gt;
&lt;br /&gt;
[[Image:three-tier.png|thumb|center|alt=Arhitektuuri skeem.|Arhitektuuri skeem.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Veebiteenus ==&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : CMS ==&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Veebirakendus ==&lt;br /&gt;
&lt;br /&gt;
== Meeskonna kokkuvõttev aruanne ==&lt;br /&gt;
&lt;br /&gt;
== Logi ==&lt;br /&gt;
=== 10. märts ===&lt;br /&gt;
Väikese häki abil õnnestus kohviku kassa arvutis saada tööle üks Forms-i proovirakendus.&lt;br /&gt;
&lt;br /&gt;
=== 8. märts ===&lt;br /&gt;
Kuna kassa-aparaadis on operatsioonisüsteemiks Windows XP ja raud on 1.99 GHz, 256 RAM siis peaks saama&lt;br /&gt;
prototüübiks teha sinna peale rakenduse, mille ülesandeks menüüga tegelemine. &lt;br /&gt;
&lt;br /&gt;
=== 7. märts ===&lt;br /&gt;
Linnar Viik andis meile järgmist nõu: tuleb eristada kahte asja - see, mis peab valmis saama (&#039;&#039;must&#039;&#039;) ja see, mis oleks tore (&#039;&#039;nice to have&#039;&#039;). Valmis peab saama menüüga ekraan seinal (esialgu kasutajale prototüübi näitamiseks kasvõi näiteks PowerPoint-i abil tehtud). Alles siis kui on kasutajalt positiivne tagasiside saadud, võib edasi minna reaalse tarkvaralahenduse loomisega. Kui ka see on valmis ja kasutaja sellega rahul võib juurde mõelda &#039;&#039;nice to have&#039;&#039; asju (näiteks eelinfo järgmise päeva menüü kohta, üliõpilasesinduse sõnumite riba ja muid asju).&lt;br /&gt;
&lt;br /&gt;
Saime teada, et kui tahame, et meie loodav süsteem suhtleks IT Kohviku kassasüsteemiga, siis tuleb selle süsteemi tootjatega ühendust võtta ja nendega konsulteerida.&lt;br /&gt;
&lt;br /&gt;
=== 19.Veebruar ===&lt;br /&gt;
*Valmis XSLT fail.&lt;br /&gt;
&lt;br /&gt;
=== 9.Veebruar ===&lt;br /&gt;
* Esmane versioon XML ja XML Schemast olemas&lt;br /&gt;
* Tekkis küsimus kas XSLT faili tuleb käsitsi tekitada või automaatselt.&lt;br /&gt;
* Küsimus oli ka kas lahendasime portsjoni asja mõistlikult või oleks mõni teine lähenemine parem olnud.&lt;br /&gt;
* Küsimus, kas XML fail on liiga üle pingutatud või sobiva keerukusega&lt;br /&gt;
&lt;br /&gt;
=== 7. Veebruar ===&lt;br /&gt;
* Võtsime õppejõu poolt pakutud ideest kohe kinni, sest me eelistame teha praktilist asja, mida saab kasutada ja mille kasutamist saame ka iga päev jälgida. &lt;br /&gt;
* Esimese asjana otsustasime välja uurida mida meie &amp;quot;kliendid&amp;quot; (süsteemi tellijad) meilt ootavad. (Soovid idee punkti all)&lt;br /&gt;
* Valminud on lihtne teenusest ja klientidest koosnev süsteemi testmudel.&lt;br /&gt;
&lt;br /&gt;
[[Category: Võrgurakendused II: hajussüsteemide ehitamine]]&lt;br /&gt;
[[Category: Veebirakenduste loomine ASP.NET abil]]&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=V%C3%B5rgurakendused_II:_2011_kevadel_valminud_kodut%C3%B6%C3%B6d&amp;diff=23756</id>
		<title>Võrgurakendused II: 2011 kevadel valminud kodutööd</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=V%C3%B5rgurakendused_II:_2011_kevadel_valminud_kodut%C3%B6%C3%B6d&amp;diff=23756"/>
		<updated>2011-03-18T13:58:06Z</updated>

		<summary type="html">&lt;p&gt;Rruga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Jaan Igamees=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Helen Muidik=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Mihkel Sokk=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Seda Sahradyan=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Priit Siimo=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tool&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Siim Sarv=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Reigo Männiste=&lt;br /&gt;
* Meeskond [[Meeskond Tool]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Karl Männil=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;H2&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Ilmar Telga=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Siim Aaver=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;H2&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Taavi Ilves=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Hungry_Student_Food_Board&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;ASP-tastic&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Andrus Reedla=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;GAP&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Jaak Lehtsalu=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Jana Mrots=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Tyhik&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Heiki Tamm=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;H2&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Meeskond&amp;quot;]]&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond  &amp;quot;Hungry Student Food Board&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Toomas Soha=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;Sepad&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Nämm-nämm&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Miina Sikk=&lt;br /&gt;
* Meeskond [[Meeskond Tool]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;Tact&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;br /&gt;
&lt;br /&gt;
=Rauno Rüga=&lt;br /&gt;
* Meeskond [[Meeskond &amp;quot;FoodWars&amp;quot;]]&lt;br /&gt;
* Arvustused&lt;br /&gt;
** Arvustus XML failile [[Talk:Meeskond &amp;quot;C terav&amp;quot;]]&lt;br /&gt;
** Arvustus veebiteenusele&lt;br /&gt;
** Arvustus veebiteenuse klientidele&lt;br /&gt;
** Arvustus projektile kokkuvõtvalt&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Talk:Meeskond_%22C_terav%22&amp;diff=23496</id>
		<title>Talk:Meeskond &quot;C terav&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Talk:Meeskond_%22C_terav%22&amp;diff=23496"/>
		<updated>2011-03-04T18:55:08Z</updated>

		<summary type="html">&lt;p&gt;Rruga: Created page with &amp;#039;&amp;#039;&amp;#039;&amp;#039;XML osa arvustus&amp;#039;&amp;#039;&amp;#039;  XML struktuur on korralikult tehtud, süntaksi vigu pole näha. Kuupäevad ja ajad on piisavalt täpselt ära kirjeldatud, et neid hiljem oleks kerge väl…&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;XML osa arvustus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
XML struktuur on korralikult tehtud, süntaksi vigu pole näha. Kuupäevad ja ajad on piisavalt täpselt ära kirjeldatud, et neid hiljem oleks kerge välja lugeda. Mis aga mina oleks natuke teistmoodi teinud, on näiteks aadresi väli, kus hetkel on väli nimega &amp;quot;linnVald&amp;quot; ja peale mida tuleb kohe &amp;quot;tanav&amp;quot;, kui aga näiteks ma tahaks kirjeldada kohvikut, mis asub mingis maakohas x vallas, siis poleks enam kohta, kuhu kirjutada asula nime. Teine asi, mis natuke liiga jäik on, on lahtioleku ajad, näiteks kui tahaks märkida kohvikut, mis töötab iga päev esmaspäevast kuni pühapäevani, siis alati peaks panema nädalavahetuse päevad erandpäevade alla, vaatamata, et selle kohviku puhul võib näiteks laupäeval lahtiolemine täiesti tavaline olla.&lt;br /&gt;
&lt;br /&gt;
Skeemifail on olemas, samuti ka XSLT. Kõik piisavalt hästi tehtud, XSLT tulemuses oleks võinud ainult kuupäev ja kellajad korralikumalt punktide või kooloniga eraldatud olla, et loetavus parem oleks.&lt;br /&gt;
&lt;br /&gt;
Rauno Rüga&lt;br /&gt;
&lt;br /&gt;
[[User:Rruga|Rruga]] 20:55, 4 March 2011 (EET)&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=23265</id>
		<title>Meeskond &quot;FoodWars&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Meeskond_%22FoodWars%22&amp;diff=23265"/>
		<updated>2011-02-19T15:36:43Z</updated>

		<summary type="html">&lt;p&gt;Rruga: /* 9.Veebruar */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Idee==&lt;br /&gt;
Meie tiimil on plaanis teha internetipõhine söökla menüü süsteem (aluseks IT Kolledži kohvik, aga suunitlus selline, et kõik kohvikud/sööklad saaksid teha endale kasutajakonto ja hakata rakendust kasutama), kust saaks jälgida menüüd, mis sööke saab süüa, mis veel järgi on, kasutajatel on ka võimalus sööke hinnata (stiilis &amp;quot;meeldib&amp;quot;, &amp;quot;ei meeldi&amp;quot; nagu Facebook-is).&lt;br /&gt;
&lt;br /&gt;
Kohvikupidaja Teele soovid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* elektroonilisest menüüst asju kustutada, isegi siis kui asja peaks olema teoreetiliselt alles, aga tegelikult on asi otsas.&lt;br /&gt;
* elektrikatkestuse korral jääb menüü püsima. Ta peab teadma hindu mistahes olukorras.&lt;br /&gt;
* menüül näidatakse automaatselt ka ISIC kaardi omanike soodushinnad&lt;br /&gt;
* süsteem toetab ka poole portsjoni müümist.&lt;br /&gt;
&lt;br /&gt;
Linnar Viigi soovid/visioonid uue elektroonse süsteemi kohta:&lt;br /&gt;
&lt;br /&gt;
* kõik oleks ka internetist kättesaadav, peale LCD ekraani, mis kajastab menüüd sööklas.&lt;br /&gt;
* aluseks facebook, kus siis söögid oleks nagu facebook-i alateemad.&lt;br /&gt;
* saab sööke hinnata, kommenteerida (täna oli väga maitsev praad).&lt;br /&gt;
* kasutajad saaks vaadata, mis menüüs on (ka järgmisel nädalal) ja mitu portsu veel alles on.&lt;br /&gt;
* kasutajad saaksid välja pakkuda menüüsid.&lt;br /&gt;
* erinevate söögikohtade kasutajad saaksid omavahel muljeid jagada.&lt;br /&gt;
* kuu aja aktiivsemad saavad prii lõuna.&lt;br /&gt;
* mingil ajal võib olla &amp;quot;happy hour&amp;quot; (enne sulgemist saab odavamalt).&lt;br /&gt;
* piiranguks on see, et toitu broneerida ei saa &lt;br /&gt;
&lt;br /&gt;
=== Vaba tarkvara kasutamise võimalus ===&lt;br /&gt;
&lt;br /&gt;
Antud projekti puhul oleks võimalik kasutada [http://www.postgresql.org/ PostgreSQL] andmebaasi (vt. lisaks http://en.wikipedia.org/wiki/PostgreSQL ) Microsoft SQL Server&#039;i asemel. See võiks anda kasutajale võimaluse valida .NET ning [http://www.mono-project.com/ Mono] (vt. lisaks http://en.wikipedia.org/wiki/Mono_(software) ) platvormide vahel. Sel viisil oleks kliendil võimalik Microsoft&#039;i platvormi kõrval valida tõenäoliselt soodsam vaba tarkvara platvorm. Andmebaasi lõplik valik pole hetkel veel otsustatud.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Meeskond==&lt;br /&gt;
* Kristjan Stolin&lt;br /&gt;
* Ilmar Telga&lt;br /&gt;
* Rauno Rüga&lt;br /&gt;
* Lauri Kermas&lt;br /&gt;
&lt;br /&gt;
== XML Fail ==&lt;br /&gt;
===XML===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Toidud&amp;gt;&lt;br /&gt;
  &amp;lt;Toit&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduNimetus&amp;gt;Viineri kaste&amp;lt;/ToiduNimetus&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduLiik&amp;gt;Praad&amp;lt;/ToiduLiik&amp;gt;&lt;br /&gt;
    &amp;lt;OlemasolevatYhikut&amp;gt;5&amp;lt;/OlemasolevatYhikut&amp;gt;&lt;br /&gt;
    &amp;lt;ToiduKogus&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Poolportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;2011&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;1&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;9&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;15&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;07&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;23&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;        &lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.15&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
      &amp;lt;Portsjon&amp;gt;&lt;br /&gt;
        &amp;lt;Myygiaeg&amp;gt;&lt;br /&gt;
          &amp;lt;Aasta&amp;gt;0&amp;lt;/Aasta&amp;gt;&lt;br /&gt;
          &amp;lt;Kuu&amp;gt;0&amp;lt;/Kuu&amp;gt;&lt;br /&gt;
          &amp;lt;Paev&amp;gt;0&amp;lt;/Paev&amp;gt;&lt;br /&gt;
          &amp;lt;Tund&amp;gt;00&amp;lt;/Tund&amp;gt;&lt;br /&gt;
          &amp;lt;Minut&amp;gt;00&amp;lt;/Minut&amp;gt;&lt;br /&gt;
          &amp;lt;Sekund&amp;gt;00&amp;lt;/Sekund&amp;gt;&lt;br /&gt;
        &amp;lt;/Myygiaeg&amp;gt;&lt;br /&gt;
        &amp;lt;PortsjoniLiik&amp;gt;Täisportsjon&amp;lt;/PortsjoniLiik&amp;gt;&lt;br /&gt;
        &amp;lt;ToiduHind&amp;gt;&lt;br /&gt;
          &amp;lt;Eurohind&amp;gt;2.80&amp;lt;/Eurohind&amp;gt;&lt;br /&gt;
          &amp;lt;Soodustus&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseProtsent&amp;gt;5%&amp;lt;/SoodustuseProtsent&amp;gt;&lt;br /&gt;
            &amp;lt;SoodustuseLiik&amp;gt;ISIC kaart&amp;lt;/SoodustuseLiik&amp;gt;&lt;br /&gt;
          &amp;lt;/Soodustus&amp;gt;&lt;br /&gt;
        &amp;lt;/ToiduHind&amp;gt;&lt;br /&gt;
      &amp;lt;/Portsjon&amp;gt;&lt;br /&gt;
    &amp;lt;/ToiduKogus&amp;gt;&lt;br /&gt;
    &amp;lt;Kommentaarid&amp;gt;&lt;br /&gt;
      &amp;lt;Kommentaar&amp;gt;&lt;br /&gt;
        &amp;lt;Saatja&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaNimi&amp;gt;Kristjan&amp;lt;/SaatjaNimi&amp;gt;&lt;br /&gt;
          &amp;lt;SaatjaRoll&amp;gt;Tudeng&amp;lt;/SaatjaRoll&amp;gt;&lt;br /&gt;
        &amp;lt;/Saatja&amp;gt;&lt;br /&gt;
        &amp;lt;Sisu&amp;gt;Minu lemmik toit ! Kui algebra tund ei hakkaks, sööks veel 5 portsjonit.&amp;lt;/Sisu&amp;gt;&lt;br /&gt;
      &amp;lt;/Kommentaar&amp;gt;&lt;br /&gt;
    &amp;lt;/Kommentaarid&amp;gt;&lt;br /&gt;
  &amp;lt;/Toit&amp;gt;&lt;br /&gt;
&amp;lt;/Toidud&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
===XML Schema===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xs:schema attributeFormDefault=&amp;quot;unqualified&amp;quot; elementFormDefault=&amp;quot;qualified&amp;quot; xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;xs:element name=&amp;quot;Toidud&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
        &amp;lt;xs:element name=&amp;quot;Toit&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
            &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduNimetus&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;OlemasolevatYhikut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;ToiduKogus&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element maxOccurs=&amp;quot;unbounded&amp;quot; name=&amp;quot;Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:choice maxOccurs=&amp;quot;unbounded&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;PortsjoniLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;Myygiaeg&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Aasta&amp;quot; type=&amp;quot;xs:unsignedShort&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Kuu&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Paev&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Tund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Minut&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Sekund&amp;quot; type=&amp;quot;xs:unsignedByte&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:element name=&amp;quot;ToiduHind&amp;quot;&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Eurohind&amp;quot; type=&amp;quot;xs:decimal&amp;quot; /&amp;gt;&lt;br /&gt;
                                  &amp;lt;xs:element name=&amp;quot;Soodustus&amp;quot;&amp;gt;&lt;br /&gt;
                                    &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                                      &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseProtsent&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                        &amp;lt;xs:element name=&amp;quot;SoodustuseLiik&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                                    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                                  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                                &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:choice&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
              &amp;lt;xs:element name=&amp;quot;Kommentaarid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                  &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                    &amp;lt;xs:element name=&amp;quot;Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
                      &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                        &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Saatja&amp;quot;&amp;gt;&lt;br /&gt;
                            &amp;lt;xs:complexType&amp;gt;&lt;br /&gt;
                              &amp;lt;xs:sequence&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaNimi&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                                &amp;lt;xs:element name=&amp;quot;SaatjaRoll&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                              &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                            &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                          &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                          &amp;lt;xs:element name=&amp;quot;Sisu&amp;quot; type=&amp;quot;xs:string&amp;quot; /&amp;gt;&lt;br /&gt;
                        &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                      &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
                    &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
                  &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
                &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
              &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
            &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
          &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
        &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
      &amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;
    &amp;lt;/xs:complexType&amp;gt;&lt;br /&gt;
  &amp;lt;/xs:element&amp;gt;&lt;br /&gt;
&amp;lt;/xs:schema&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===XSLT===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
  &amp;lt;h2&amp;gt;Kohvikus müüdavad toidud&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr bgcolor=&amp;quot;#9acd32&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu Nimetus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Toidu liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Veel alles&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Portsjon&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Müügiaeg&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Hind&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustus&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Soodustuse liik&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;th&amp;gt;Kommentaar(id)&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;xsl:for-each select=&amp;quot;Toidud/Toit&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduNimetus&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ToiduLiik&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;OlemasolevatYhikut&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;PortsjoniLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Paev&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Kuu&amp;quot; /&amp;gt;/&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Aasta&amp;quot; /&amp;gt; &amp;amp;nbsp;  &lt;br /&gt;
        &amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Tund&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Minut&amp;quot; /&amp;gt;:&amp;lt;xsl:value-of select=&amp;quot;Myygiaeg/Sekund&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Eurohind&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseProtsent&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;ToiduKogus/Portsjon&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;ToiduHind/Soodustus/SoodustuseLiik&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;xsl:for-each select=&amp;quot;Kommentaarid/Kommentaar&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
        &amp;lt;td&amp;gt;&lt;br /&gt;
            &amp;lt;xsl:value-of select=&amp;quot;Sisu&amp;quot; /&amp;gt;&amp;amp;nbsp;(&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaRoll&amp;quot; /&amp;gt;&amp;amp;nbsp;&amp;lt;xsl:value-of select=&amp;quot;Saatja/SaatjaNimi&amp;quot; /&amp;gt;)&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
        &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XSLT poolt loodud tulemus on järgnev (lisasin veel kaks toitu XML faili, siin wiki lehel on ruumi kokkuhoiuks vaid 1 toit toitude listis):&lt;br /&gt;
[[File:Xslt.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
== Veebiteenus ==&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : CMS ==&lt;br /&gt;
&lt;br /&gt;
== Klientrakendus I : Veebirakendus ==&lt;br /&gt;
&lt;br /&gt;
== Meeskonna kokkuvõttev aruanne ==&lt;br /&gt;
&lt;br /&gt;
== Logi ==&lt;br /&gt;
=== 7. Veebruar ===&lt;br /&gt;
* Võtsime õppejõu poolt pakutud ideest kohe kinni, sest me eelistame teha praktilist asja, mida saab kasutada ja mille kasutamist saame ka iga päev jälgida. &lt;br /&gt;
* Esimese asjana otsustasime välja uurida mida meie &amp;quot;kliendid&amp;quot; (süsteemi tellijad) meilt ootavad. (Soovid idee punkti all)&lt;br /&gt;
* Valminud on lihtne teenusest ja klientidest koosnev süsteemi testmudel.&lt;br /&gt;
&lt;br /&gt;
=== 9.Veebruar ===&lt;br /&gt;
* Esmane versioon XML ja XML Schemast olemas&lt;br /&gt;
* Tekkis küsimus kas XSLT faili tuleb käsitsi tekitada või automaatselt.&lt;br /&gt;
* Küsimus oli ka kas lahendasime portsjoni asja mõistlikult või oleks mõni teine lähenemine parem olnud.&lt;br /&gt;
* Küsimus, kas XML fail on liiga üle pingutatud või sobiva keerukusega&lt;br /&gt;
&lt;br /&gt;
=== 19.Veebruar ===&lt;br /&gt;
*Valmis XSLT fail.&lt;br /&gt;
&lt;br /&gt;
[[Category: Võrgurakendused II: hajussüsteemide ehitamine]]&lt;br /&gt;
[[Category: Veebirakenduste loomine ASP.NET abil]]&lt;/div&gt;</summary>
		<author><name>Rruga</name></author>
	</entry>
</feed>