Loading

From EIK wiki

Meeskond

  • Laura Teder
  • Martin Saar
  • Roomet Saadi
  • Indrek Tamm

XML Fail

<?xml version="1.0" encoding="utf-8" ?>
<JalgpalliLiit>
  <Klubid>
   
    <Klubi tegev="true" id="1">
      <Nimi><![CDATA[FcFlora]]></Nimi>
      <asutamine><![CDATA[1990]]></asutamine>
      <Voistkonnad>
        <Voistkond vorm="roheline">
          <Klass><![CDATA[Noored]]></Klass>
         <Mangijad>
          <Mangija  nr="1">
            <eesnimi><![CDATA[Tiit]]></eesnimi>
            <hyydnimi><![CDATA[hunt]]></hyydnimi>
            <perekonnanimi><![CDATA[Teet]]></perekonnanimi>
          </Mangija>
          <Mangija  nr="2">
            <eesnimi><![CDATA[Paul]]></eesnimi>         
            <perekonnanimi><![CDATA[Kaur]]></perekonnanimi>
          </Mangija>
          <Mangija   nr="3">
            <eesnimi><![CDATA[Roomet]]></eesnimi>
            <hyydnimi><![CDATA[Nani]]></hyydnimi>
            <perekonnanimi><![CDATA[Saadi]]></perekonnanimi>
          </Mangija>
          </Mangijad>
        </Voistkond>
        <Voistkond vorm="roheline" >
          <Klass><![CDATA[Vanad]]></Klass>
         <Mangijad>
          <Mangija  nr="1">
            <eesnimi><![CDATA[Ants]]></eesnimi>          
            <perekonnanimi><![CDATA[Aim]]></perekonnanimi>
          </Mangija>
         </Mangijad>
        </Voistkond>
      </Voistkonnad>  
    </Klubi>
    <Klubi tegev="true" id="2">
      <Nimi><![CDATA[FcLevadia]]></Nimi>
      <asutamine><![CDATA[1999]]></asutamine>
      <Voistkonnad>
        <Voistkond vorm="must">
          <Klass><![CDATA[Mehed]]></Klass>
        <Mangijad>
          <Mangija   nr="99">
            <eesnimi><![CDATA[Tarmo]]></eesnimi>
            <hyydnimi><![CDATA[Karu]]></hyydnimi>
            <perekonnanimi><![CDATA[Neemelo]]></perekonnanimi>
          </Mangija>
          <Mangija   nr="7">
            <eesnimi><![CDATA[Siim]]></eesnimi>
            <perekonnanimi><![CDATA[Luts]]></perekonnanimi>
          </Mangija>
        </Mangijad>
        </Voistkond>
        <Voistkond vorm="roosa">
          <Klass><![CDATA[Naised]]></Klass>
        <Mangijad>
          
          <Mangija   nr="77">
            <eesnimi><![CDATA[Karmen]]></eesnimi>
            <hyydnimi><![CDATA[Vesipea]]></hyydnimi>
            <perekonnanimi><![CDATA[Saag]]></perekonnanimi>
          </Mangija>
          <Mangija   nr="3">
            <eesnimi><![CDATA[Rauno]]></eesnimi>
            <hyydnimi><![CDATA[Mees]]></hyydnimi>
            <perekonnanimi><![CDATA[Uss]]></perekonnanimi>
          </Mangija>
        </Mangijad>
        </Voistkond>
      </Voistkonnad>
    </Klubi>
    <Klubi tegev="false" id="3">
      <Nimi><![CDATA[FC TVMK]]></Nimi>
      <asutamine><![CDATA[1922]]></asutamine>
      <Voistkonnad>
        
        <Voistkond vorm="valge">
          <Klass><![CDATA[Mehed]]></Klass>
        <Mangijad>
          <Mangija   nr="9">
            <eesnimi><![CDATA[Tauri]]></eesnimi>
            <hyydnimi><![CDATA[Välk]]></hyydnimi>
            <perekonnanimi><![CDATA[Neem]]></perekonnanimi>
          </Mangija>
          <Mangija   nr="7">
            <eesnimi><![CDATA[Reio]]></eesnimi>
            <perekonnanimi><![CDATA[Kuusk]]></perekonnanimi>
          </Mangija>
        </Mangijad>
        </Voistkond>
        
        <Voistkond vorm="roosa">
          <Klass><![CDATA[Noored]]></Klass>
        <Mangijad>
          <Mangija   nr="87">
            <eesnimi><![CDATA[Karmo]]></eesnimi>
            <perekonnanimi><![CDATA[Tarmo]]></perekonnanimi>
          </Mangija>
          <Mangija   nr="8">
            <eesnimi><![CDATA[Rauno]]></eesnimi>
            <hyydnimi><![CDATA[Üksjalg]]></hyydnimi>
            <perekonnanimi><![CDATA[Saabas]]></perekonnanimi>
          </Mangija>
        </Mangijad>
        </Voistkond>
        
      </Voistkonnad>
    </Klubi>
  </Klubid>
</JalgpalliLiit>

Skeemifail

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="JalgpalliLiit">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Klubid">
          <xs:complexType>
            <xs:sequence>
              <xs:element maxOccurs="unbounded" name="Klubi">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="Nimi" type="xs:string" />
                    <xs:element name="asutamine" type="xs:string" />
                    <xs:element name="Voistkonnad">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element maxOccurs="unbounded" name="Voistkond">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element name="Klass" type="xs:string" />
                                <xs:element name="Mangijad">
                                  <xs:complexType>
                                    <xs:sequence>
                                      <xs:element maxOccurs="unbounded" name="Mangija">
                                        <xs:complexType>
                                          <xs:sequence>
                                            <xs:element name="eesnimi" type="xs:string" />
                                            <xs:element minOccurs="0" name="hyydnimi" type="xs:string" />
                                            <xs:element name="perekonnanimi" type="xs:string" />
                                          </xs:sequence>
                                          <xs:attribute name="nr" type="xs:unsignedByte" use="required" />
                                        </xs:complexType>
                                      </xs:element>
                                    </xs:sequence>
                                  </xs:complexType>
                                </xs:element>
                              </xs:sequence>
                              <xs:attribute name="vorm" type="xs:string" use="required" />
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                  <xs:attribute name="tegev" type="xs:boolean" use="required" />
                  <xs:attribute name="id" type="xs:unsignedByte" use="required" />
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

XSLT annab välja listidena kõik klubid, kõik võistkonna klassid ja mängijad.

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
    <xsl:output method="html" indent="yes"/>

    <xsl:template match="/">
      <html>
        <head>
          <title> Klubid</title>
        </head>
        <body>
          <ul>
            <xsl:for-each select="/JalgpalliLiit/Klubid/Klubi">
              <li>
               
                
                <xsl:value-of select="Nimi"/>
                
               </li>
              <ul>
                
                  <xsl:for-each select="Voistkonnad/Voistkond">
                    <li>
                      <xsl:value-of select="Klass"/>
                      
                    </li>

                    <ul>
                    <xsl:for-each select="Mangijad/Mangija">
                      <li>
                      
                        Nimi : <xsl:value-of select="concat(eesnimi, ' ', perekonnanimi)" />;
                       
                      </li>

                    </xsl:for-each>
                      </ul>
                    </xsl:for-each>
              </ul>
            </xsl:for-each>
            
          </ul>
        </body>
      </html>
    </xsl:template>
</xsl:stylesheet>

XSLT 2

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
  <xsl:output method="html" indent="yes"/>

  <xsl:template match="/">
    <html>
      <head>
        <title> Klubid</title>
      </head>
      <body>
        <ul>
          <xsl:for-each select="/JalgpalliLiit/Klubid/Klubi">
            <li>
              <xsl:value-of select="Nimi"/>
            </li>
            
            <ul>
              <xsl:for-each select="Voistkonnad/Voistkond">
                <li>
                  <xsl:value-of select="Klass"/>
                </li>
                
                <ul>
                  <xsl:for-each select="Mangijad/Mangija">
                    <li>
                      Nimi : <xsl:value-of select="concat(eesnimi,' ')" />
                      <xsl:if test="hyydnimi != ''">
                        "
                        <em>
                        <xsl:value-of select="hyydnimi"/>
                        </em>
                        "
                      </xsl:if>
                      <xsl:value-of select="perekonnanimi"/>
                    </li>
                  </xsl:for-each>
                </ul>
                
              </xsl:for-each>
            </ul>
            
          </xsl:for-each>
        </ul>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

XSLT 3

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
  <xsl:output method="html" indent="yes"/>

  <xsl:template match="/">
    <html>
      <head>
        <title> Klubid</title>
      </head>
      <body>
        <ul>
          <h2>Info klubide kohta</h2>

          <table border="1" cellpadding ="5">
            <tr>
              <td>
                <b>Klubi nimi</b>
              </td>
              <td>
                <b>Kodustaadion</b>
              </td>
              <td>
                <b>Vorm</b>
              </td>
              <td>
                <b>Rekord</b><small>(Võidud-kaotused)</small>
              </td>
              <td>
                <b>Asustamis aasta</b>
              </td>
              <td>
                <b>Aktiivne</b>
              </td>
            </tr>
            <xsl:for-each select="/JalgpalliLiit/Klubid/Klubi">
              <tr align="center">
                <td>
                  <xsl:value-of select="Nimi"/>
                </td>
                <td>
                  <xsl:value-of select="kodustaadion"/>
                </td>
                <td>
                  <xsl:value-of select="./Voistkonnad/Voistkond/@vorm"/>
                </td>
                <td>
                  <xsl:value-of select="rekord"/>
                </td>
                <td>
                  <xsl:value-of select="asutamine"/>
                </td>
                <td>
                  <xsl:if test="@tegev = 'true'">
                    Jah
                  </xsl:if>
                  <xsl:if test="@tegev = 'false'">
                    Ei
                  </xsl:if>
                </td>
              </tr>
            </xsl:for-each>
          </table>
        </ul>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

Retsensioonid

1) Meeskond Undress Gaver[1]

Meeskond Undress Gaver on väga hästi saanud hakkama XML ülesandega. Algselt on välja toodud lühike ülevaade mida peaks nende XML fail sisaldama. Tänu sellele läks XML faili lugemine ja sellest arusaamine palju kiiremini ja lihtsamalt. Samuti elemendinimed on valitud kergesti arusaadavad ja loogilised. Nende kiituseks peab veel mainima, et on jälgitud ka korrektset ja ühtlast kirjutamisstiilis. XML – fail läbis ka W3C XML validaatori vigadeta. Ülesande nõutele vastavalt on tehtud ka rohkem kui 4 loogilist dimensiooni ja kasutatud erinevaid attribuute.

Samuti on tehtud vigadeta XML faili skeemifail.

On tehtud ka üks korrektne XSLT transformatsiooni fail, mis transformeerib HTML formaati. On kasutatud mitud erinevat for-each klauslit. XSLT fail on ülesehitatud loogiliselt ja vastab korrektselt ka eespool olevale XML failile.

Kokkuvõtteks võib öelda, et ülesanne oli hästi tehtud. Kõikide failide tegemisel oli kasutatud ühtlast kirjutamisstiili ja olid ka täidetud vastavad ülesande nõuded. Ainukesed puuduseks oli ühe XSLT faili puudumine.


2) Meeskond BurgerAce[2]

XML fail on tehtud korrektselt ja vigadeta. Väga kerge on koodi lugeda, kuna on kasutatud ühtlast kirjutamisviisi. Elemendi nimed on valitud ühtlaselt kõik inglis keeles kuigi on mainitud, et tegemist on Eesti teenusega. Samuti on ka väärtused kõik ühtlaselt inglis keeles. XML fail läbis ka W3C validaatori vigadeta. Ülesande nõutele vastavalt on tehtud ka rohkem kui 4 loogilist dimensiooni ja kasutatud erinevaid attribuute. Attribuudid on valitud korrektsed ja vastavad ülesande eesmärgile.

XML faili skeemifail on samuti tehtud piisavalt pikk ja korrektne.

Meeskond on teinud ka ühe korrektse XSLT transformatsiooni faili. XSLT failis on kasutatud nii erinevaid for-each klauslit kui ka if tingimus kontrolle. Samuti läbis XSLT fail ka validaatori vigadeta.

Kokkuvõtteks võib öelda, et ülesandega oli hästi hakkama saadud. Kõik tehtud failid olid korrektselt töötavad ja oli täidetud ka vastavad ülesande nõuded. Ainuke miinuseks oli see, et tehtud oli ainult üks XSLT fail.


3) Meeskond SHOP[3]

Meeskond SHOP on loonud veebiteenuse, mille eesmärk on olla töötav veebipood. Meeskonna Wiki’s on olemas ka täiesti arusaadav kasutusjuhend ja analüüs. Analüüsis on välja toodud erinevate kasutajagruppide lühikirjeldused. Analüüsis on täpselt kirja pandud MUST-HAVE funktsioonid, millest peaaegu kõik on maha kriipsutatud ehk tehtud. Võttes arvesse, kui palju on MUST-HAVE funktsioone, siis on arusaadav, et NICE-TO-HAVE funktsioonidest ei ole just väga palju jõutud teha. Meeskond on laadinud veebi ülesse ka näite veebilehe, mis oli väga meeldiv, kuna selle abil sai kohe teha väikse ülevaate, mida nende tehtud töö sisaldab.

Veebilehele minnes peab mainima, et esimesena jäi silma disaini lihtsus, mis ei ole antud ülesande puhul üldse halb asi, sest tänu sellele oli funktsionaalsuste osa palju kergem katsedada. Kuna tegemist on veebipoega, siis kõige tähtsam funktsionaalsus ongi asjade tellimine. Ostmine on tehtud kasutajatele väga lihtne ja arusaadav. Kaupu saab lisada ostukorvi, kus on võimalik kõiki kauba andmeid näha ja kauba kogust muuta. Tellimuse käigus tehakse kliendile arve. Arve tegemisel oli võimalus valida kolme erineva arve tüübi vahel. Enne arve kinnitamist on olemas ka arve ülevaade. Võib öelda, et kauba ostmise pool on hästi üles ehitatud ja jättis täitsa reaalse veebipoe mulje.

Teine pool millele on antud ülesandes rõhku pandud on veebipoe haldamine. Haldamiseks on tehtud spetsiaalne kasutajagrupp, kellel on ainukesena õigused vastavatele funktsioonidele. Veebipoe administraatoril on võimalus lisada uusi ettevõtteid. Peale lisamist on võimalus ka teha sisse muutusi ettevõtte andmetes. Samuti saab administraator lisada kaupu ja kaupade erinevaid andmeid. Administraatoril on võimalus alati näha ülevaadet tema ettevõttetele tehtud ostudest, kus on näha tellituid tooteid ja kas nende eest on makstud.

On antud võimalus ennast ka registeerida. Registeeritud kasutajale on tehtud väga palju lisa võimalusi, näiteks saab registeeritud kasutaja salvestad oma pangaandmed kontole, millest tulenevalt on ostude tegemine kiirem ja mugavam. Samuti saab registeeritud kasutaja oma andmeid redigeerida koguaeg.

Võttes lahti koodi osa, on näha, et on kood on jaotatud korrektselt BLL, DAL, Doman, Identity, Modul, Resource ja WebApp’i vahel. BLL’s asuvad DTO’d, Factorie’d ja Service’d. Kood ei ole kirjutatud ühte patta kõik, vaid on jaotatud korrektselt klasside vahel. Klassid on nimetatud kõik ühtse kirjutamisstiili järgi. Raskemate koodijuppide juures on lisatud väike selgitav kommentaar. WebApp’i all on näha, et on kasutatud ka Model-View-Controller arhitektuuri mustrit. On kasutatud ka valmis olevaid javascripte nagu näiteks Bootstrap ja AngularJS, sellest tulenevalt on veebileht ka veel nn. responsive.

Andmebaasi mudelit vaadates on näha, et andmebaas on korralikult suur umbes 50 olemit. Andmete pärimise hõlbustamiseks oli tehtud ka korrektne UOW.

Kokkuvõtteks võime öelda, et töö oli tehtud väga korralikult. Veebiteenus oli täiesti töötav ja kasutatav. Oli olemas palju erinevaid funktsioone, kood oli kirjutatud korrektselt ja jälgitud oli ühtlast kirjutamisstiili.

4)VVA klientrakenduse

VVA klientrakendus

VVA klientrakendus kuvab Youtubist viimased 50 populaarset videot ning infot nende kohta. Loomulikult on ka võimalus neid vaadata. Selleks on ära kasutatud Youtub APIt. Klientrakenduses on ära toodud info videote kohta, näiteks, vaatajate arv, ajalised daatumid ning meeldimised.

Väga positiivne oli see, et kood oli kommenteeritud. Koodis olid eraldatud mudleid ja serviced. Funktsionaalsuse poolega saab alati norida, ära oli tehtud basic. Näha oli, et mõtteid ja ideid oli rohkem, aga kõik ei olnud teostuseni jõudnud. Vaadates rakendust, jäi mulje, et palju funktsionaalsust jäi pigem tegemise, kui oskuste taha. Näiteks kasvõi funktsionaalsused, mis oli plaanis teha: kommentaaride kuvamine või videote hiljem vaatamine.

Kokkuvõttes siiski võib öelda, et meeskond sai ülesandega hästi hakkama ja näidati, et teemat vallatakse. Alati võiks rohkem ja premini, aga eesmärk oli siiski näidata, et osatakse klientrakendust teha, mitte teha lõppkasutajale valmis olev rakendus.

Veebiteenus

Veebiteenuses on olemas kõikide olemite GetALL. ning post ja delete.


Kaitsmise versioon

Kulla kallis Mait Poska, siin on meie hetkel valmis olev projekt. Natuke täpsustuseks, et täiesti ära ei eksiks - BLL, DAL DOMAIN WebAPIKasutajatega on hetkel WebAPI-ga seotud projektid. Klientrakenduse osa on wpfTel. Ülejäänud osad on erinevad katsetused jne.

https://www.dropbox.com/s/rd8npaq9kjxcrg0/Proov.rar?dl=0

02.06 versioon

Täiendasime natuke Api-d ning tegime klientrakendusele funktsioone juurde ning lisasime loogikat. Hetkel olemas :

1)Kontaktide lisamine.

2)Kasutajate lisamine.

3)Otsimine nime järgi.

4)Kontaktidele erinevate väärtuste lisamine.

5)Kasutajagruppide vaatamine.

6)Kasutajagruppidesse lisamine.

7)Kontakti liikide lisamine.

Plaanis: Kontaktide jagamine kasutajate vahel. Kustutamised ja sellega kaasnev loogika. Kaugem plaan: Kontakti väärtuste lisamine paremaks teha Logimine korda teha.

09.06 update

Tegime loogikat juurde ja lisasime kontaktide jagamise. Klientrakendus jäi ilmselt ainult meile arusaadava kujundusega kahjuks, kuid funktsionaalsused töötavad. Kulutasime palju aega tokeni ja autoriseerimise peale. Saime Veebiteenuses selle tööle aga kliendis mitte. Kaitsmisel räägitud punktidest usun et klientrakenduse väärtus on meil tõusnud vähemalt 78 peale, sest välimus ei olnudki eesmärk.

Roometi panus tõusis 100 % peale


Projekt : https://www.dropbox.com/s/rd8npaq9kjxcrg0/Proov.rar?dl=0