Meeskond Tool

From ICO wiki
Jump to navigationJump to search

Idee

Luuakse süsteem lumelaudadega. Lumelauad erinevate parameetritega on XML failis. Ühelt poolt on võimalus neid veebirakendusega XML faili lisada ning teiselt poolt on klientidel võimalus otsida endale kaalu ja pikkuse jms järgi uus lumelaud.

Antud rakendus lihtsustab inimestel endale lumalaua valimist ning säästab hulga aega - ühekaupa kõiki andmebaasis olevaid lumelaudu läbi vaadata oleks väga ajakulukas ning tüütu, arvestades seda, et niikuinii sobivad sõitmiseks vaid lumelauad, mis on vastavad sõitja pikkusele, kaalule, sõidustiilile, jalanumbrile.

Esialgne plaan on XML faili lumelaudu lisada järgmiste omaduste järgi: pikkus, keskkoha laius, paine, soovitatav sõidustiil, soovitatav kaal. Esialgse plaani järgi peab klient sisestama enda pikkuse, kaalu, jalanumbri ja sõidustiili, pärast mida kuvatakse talle sobivad lumelauad.

Meeskond

  • Erik Kaju - programm
  • Reigo Männiste - programm
  • Miina Sikk - Wikileht, programm, projekti koordinaator
  • Indrek Tamm - Idee, programm

Miina - Wikileht, XML, Veebirakenduse kasutajate pool(statistika, haldamine, sessioonid) + esialgne struktuur

Indrek - XML, Veebirakenduse lumelaua päringud, debugimine, andmebaas

Reigo - esialgne andmebaas + kommentaaride lisamine


XML

XML fail

 <?xml version="1.0" encoding="utf-8"?>
 <Lumelauad>
  <Lumelaud>
       <Tootja>Forum</Tootja>
       <Nimetus>Destroyer</Nimetus>
       <Edasimyyjad>
                  <Edasimyyja>
                          <Nimi>SurfHouse</Nimi>
                          <Aadress>Pronksi 7/9</Aadress>
                          <HindEUR>200</HindEUR>
                  </Edasimyyja>
          </Edasimyyjad>
       <Pikkused>
         <PikkusCM>158</PikkusCM>
         <PikkusCM>153</PikkusCM>
       </Pikkused>
       <Laiused>
         <LaiusCM>25</LaiusCM>
       </Laiused>
  <PainduvusTase>6</PainduvusTase>
       <Kommentaarid>
                <Kommentaar>
                          <Saatja>
                                    <Eesnimi>Mati</Eesnimi>
                                    <Perekonnanimi>Tati</Perekonnanimi>
                          </Saatja>
                          <Tekst>Hehe, kukkusin sellega hamba suust.</Tekst>
                </Kommentaar>
       </Kommentaarid>
 </Lumelaud>
</Lumelauad>

XML Schema

<?xml version="1.0" encoding="utf-8"?>
 <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
 <xs:element name="Lumelauad">
   <xs:complexType>
     <xs:sequence>
       <xs:element name="Lumelaud">
         <xs:complexType>
           <xs:sequence>
             <xs:element name="Tootja" type="xs:string"/>
             <xs:element name="Nimetus" type="xs:string"/>
             <xs:element name="Edasimyyjad">
               <xs:complexType>
                 <xs:sequence>
                   <xs:element name="Edasimyyja">
                     <xs:complexType>
                       <xs:sequence>
                         <xs:element name="Nimi" type="xs:string" />
                         <xs:element name="Aadress" type="xs:string"/>
                         <xs:element name="HindEUR" type="xs:decimal"/>
                       </xs:sequence>
                     </xs:complexType>
                   </xs:element>
                 </xs:sequence>
               </xs:complexType>
             </xs:element>
             <xs:element name="Pikkused">
               <xs:complexType>
                 <xs:sequence>
                   <xs:element name="PikkusCM" type="xs:int"/>
                 </xs:sequence>
               </xs:complexType>
             </xs:element>
             <xs:element name="Laiused">
               <xs:complexType>
                 <xs:sequence>
                   <xs:element name="LaiusCM" type="xs:int" />
                 </xs:sequence>
               </xs:complexType>
             </xs:element>
             <xs:element name="PainduvusTase" type="xs:int"/>
             <xs:element name="Kommentaarid">
               <xs:complexType>
                 <xs:sequence>
                   <xs:element name="Kommentaar">
                     <xs:complexType>
                       <xs:sequence>
                         <xs:element name="Saatja">
                           <xs:complexType>
                             <xs:sequence>
                               <xs:element name="Eesnimi" type="xs:string"/>
                               <xs:element name="Perekonnanimi" type="xs:string" />
                             </xs:sequence>
                           </xs:complexType>
                         </xs:element>
                         <xs:element name="Tekst" type="xs:string" />
                       </xs:sequence>
                     </xs:complexType>
                   </xs:element>
                 </xs:sequence>
               </xs:complexType>
             </xs:element>
           </xs:sequence>
         </xs:complexType>
       </xs:element>
     </xs:sequence>
   </xs:complexType>
 </xs:element>
</xs:schema>

XSLT

 <?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
  <html>
  <body>
  <h2>Pakkumisel lumelauad</h2>
    <table border="1">
      <tr>
        <th>Nimi</th>
        <th>Edasimüüjad</th>
        <th>Pikkused</th>
        <th>Laiused</th>
        <th>Painduvus</th>
        <th>Kommentaar(id)</th>
      </tr>
      <xsl:for-each select="Lumelauad/Lumelaud">
      <tr>
        <td><xsl:value-of select="Tootja"/><br/><xsl:value-of select="Nimetus"/></td>
        <td>
        	<xsl:for-each select="Edasimyyjad/Edasimyyja">
        	<table>
        		<tr>
        			<td>
            	<xsl:value-of select="Nimi"/><br/><xsl:value-of select="Aadress"/><br/><xsl:value-of select="HindEUR"/>EUR<br/>
        			</td>
        		</tr>
        		</table>
       	 </xsl:for-each>
        </td>
 
        <td>
          <xsl:for-each select="Pikkused">            
                  <xsl:value-of select="PikkusCM"/>
            <br/>
          </xsl:for-each>
        </td>

        <td>
          <xsl:for-each select="Laiused">
            <table>
              <tr>
                <td>
                  <xsl:value-of select="LaiusCM"/>
                </td>
              </tr>
            </table>
          </xsl:for-each>
        </td>

        <td>
          <xsl:value-of select="PainduvusTase"/>
        </td>
 
        <td>
        <xsl:for-each select="Kommentaarid/Kommentaar">
        <table>
        <tr>
        <td>
            <xsl:value-of select="Tekst" /><br/><xsl:value-of select="Saatja/Eesnimi" /> <xsl:value-of select="Saatja/Perekonnanimi" />
        </td>
        </tr>
        </table>
        </xsl:for-each>
        </td>
 
      </tr>
      </xsl:for-each>
    </table>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>
 


Veebiteenus

Töödeldavad andmed:

  • Sisse võetakse: Inimese pikkus, kaal, sõidustiil.
  • Mille alusel valitakse: Laua pikkus, laua painduvus, laua laius, twin tip/mitte
  • Tagastatakse: Nimi, Edasimüüjad, Pikkused, Laiused, Painduvus, Kommentaarid

Inimese kõrgusele vastab teatud lauapikkuste vahemik, mis sõiduks sobivad. Samuti mõjutavad sõidustiil ja kaal laua pikkust.

Klassijaotus

  • Kasutaja.cs - kirjeldab kasutajat ja tema parameetreid. Sisaldab järgmiseid kasutajaga seotud meetodeid:
    • lisaKasutaja(string kasutajanimi, string eesnimi, string perenimi, string parool) - lisab kasutaja andmebaasi, kontrollides enne kasutajanime kordumist
    • validKasutajanimi(string kasutajanimi) - kontrollib kasutajanime kordumist
    • rollKasutajale(string kasutajanimi, Roll roll) - annab kasutajale rolli
    • validKasutaja(int kasutajaID) - kontrollib, kas kasutaja on aktiivne
    • kntrlParool(string kasutajanimi, string parool) - kontrollib, kas parool läheb kokku andmebaasis olevaga.
    • kontrolliParool(string parool, string salt, string hash) - kontrollib parooli koos eelmise meetodiga
    • IDkasutajanimest(string kasutajanimi) - returnib kasutaja ID kasutajanime järgi
    • kasutajaSessist(string ID, string path) - returnib kasutajanime sessiooni ID järgi
    • teeGuid(string kasutajanimi, string path) - genereerib kasutajale sisselogimisel unikaalse sessiooni ID
    • salvestaSess(string kasutajanimi, Guid ID, string path) - salvestab sessiooni XML faili sess.xml
    • muudaSessiooni(string ID, DateTime aeg, string path) - muudab sessiooni aegumisaega
    • sessKestab(string ID, string path) - tagastab true, kui kasutaja sessioon ei ole läbi


  • Kommentaar.cs - kirjeldab kommentaari ja tema parameetreid. Sisaldab meetodit:
    • lisaKommentaar(string kommentaar, string sessiID,string kasutajanimi,int lumelauaID) - lisab kommentaari vastava kasutaja poolt vastava lumelaua kohta AB-sse


  • Lumelaud.cs - kirjeldab lumelauda ja tema parameetreid. Sisaldab meetodeid:
    • annaKeskminePikkus(int kaal, int pikkus, Lumelaud.s6iduStiilid s6iduStiil) - tagastab lumelaua pikkuse vastavalt kaalule ja pikkusele ja sõidustiilile
    • kehamassiindeks(int kaal, int pikkus) - arvutab kehamassiindeksi, arvutamaks pikkuse nihet
    • kesknihe(double avg, double i) - arvutab nihke lumelaua pikkusele, vastavalt kehamassiindeksile
    • pikkusekontroll(int keskminePikkus, int isikuPikkus) - kui inimese pikkus on nii suur, et arvutuste järgi sobivat lumelauda ei ole, annab kõige pikemad lauad. Sama väga lühikestega - annab lühimad lauad.
    • CheckBoardParams(string painduvus, string nimi, string tootja, string isTwin, string isMens)- andmete valideerimine enne uue lumelaua AB-sse sisestamist


*Passwd.cs - siin hashitakse ja soolatakse parool ning tehakse ka vastupidine protsess. Sisaldab meetodeid:

    • GenerateSalt() - genereerib salt'i
    • HashString(string tekst) - hashib parooli
    • HashPassword(string password, string salt) - salted hashib parooli


  • Statistika.cs - statistika klass ja parameetrid, meetodid logimiseks. Sisaldab meetodeid:
    • logiStatistika(string kasutaja, string toimingu_tyyp) - logib kasutaja toimingu xml faili (logi.xml)
    • kysiStatistika(string toimingu_tyyp) - tagastab statistika tegevuse kohta


  • StatistikaK.cs - statistika küsimine kasutaja järgi. Sisaldab meetodit:
    • kysiKasutajaStatistika(string kasutajanimi) - küsib statistika kasutaja kohta kasutajanime järgi


  • WebService.cs - meetod, kus kutsutakse välja teistes klassides olevad meetodid. Siin on veebimeetodid.

Kood

Teenuse source [1]

Klientrakendus

Meeskonna aruanne

Erik - lumelaua lisamine

Captain's Log

18.04.2011

  • lumelaua lisamise debugimine - OK (Indrek)
  • statistika küsimine kasutajanime ja toimingu järgi (Miina)
  • kasutajate sessioonid (Miina)

17.04.2011

  • Kommentaaride lisamine (Reigo)
  • Statistika (Miina)

16.04.2011

  • Lumelaua lisamine - OK(Erik)

15.04.2011

  • kasutajad - autentimine, regamine, deaktiveerimine, rollid - OK!(Miina)

14.04.2011

  • lumelaua lisamine (Erik)
  • lumelaua päringud AB-st: OK! (Indrek)
  • debugimine (Reigo)

13.04.2011

  • lumelaua lisamine - valideerimine (Erik)
  • lumelaua päringud andmebaasist (Indrek)

12.04.2011

  • lumelaudade päringud (Miina)
  • kasutaja lisamine andmebaasi (Indrek)
  • kasutajate pool veebiteenuses (Miina)

11.04.2011

  • päringud (Indrek)

10.04.2011

  • Web Service'i sidumine AB-ga + klassid (Miina)
  • rollidejaotus:
    • Veebiteenuse kasutaja pool: Miina
    • Veebiteenuse toote pool: Indrek
    • Toodete sisestamine AB-sse: Erik

06.04.2011

  • Andmebaasi ümbermuutmine ja kirjed (Indrek, Reigo)


28.03.2011

  • Reigo ja Erik tutvusid iseseisvalt web service loomisega selle kasutamisega, said kokku ja tegid miitingu. Toimus ülesannete konkreetsem jaotus.

28.02.2011

  • XSLT ja XML ühildamine + täiendus(Reigo)
  • Wiki, XML täiendus (Miina)
  • XSLT (Indrek)

27.02.2011

  • XML Schema (Reigo)
  • XSLT (Miina)
  • XML täiendus

21.02.2011

  • Sündis Wikileht koos meeskonnanimega
  • Esialgne XML kondikava (Miina)

18.02.2011

  • Idee kooskõlastamine õppejõuga

14.02.2011

  • Indrek pakkus, et võiks teha midagi lumelaudadest
  • Indrek-Miina-Reigo arutasid idee täpsemaks