Meeskond ".NOT"

From EIK wiki

LIIKMED

  • Martin Kosk
  • Martin Aarne
  • Gert Glükmann
  • Kalmer Tart

Kodutöö XML osa

Teemaks oleme valinud autode müügiplatsi, kus talletatakse autode kohta informatsiooni.

XML Fail

Juurelemendiks on <soidukid>, mille sees asuvad sõidukid elemendinimega <soiduk>, kus hoitakse iga sõiduki individuaalseid tehniliseid andmeid, nagu näiteks mark, mudel jne. Peale tehniliste andmete on hoiustatud ka sõidukite lisavarustus. Iga lisavarustuse element on nimega <varustuselement>, kus sees hoitakse selle lisavarustuse osa nimetust.

<?xml version="1.0" encoding="utf-8" ?>

<soidukid>
  <soiduk id="1" tyyp="Soiduauto">
    <tehnilisedandmed>
      <mark>BMW</mark>
      <mudel>318</mudel>
      <keretyyp>Sedaan</keretyyp>
      <varv>must</varv>
      <tootmisaasta>2000</tootmisaasta>
      <hind valuuta="EUR">5500</hind>
      <kaigukast>manuaal</kaigukast>
      <labisoit yhik="km">200000</labisoit>
      <mootor maht="1.8">
        <kytus>bensiin</kytus>
        <voimsus yhik="kW">85</voimsus>
      </mootor>
    </tehnilisedandmed>
    <varustus>
      <varustuselement>kesklukustus</varustuselement>
      <varustuselement>ABS pidurid</varustuselement>
      <varustuselement>stabiilsuskontroll</varustuselement>
      <varustuselement>poolnahkpolster</varustuselement>
      <varustuselement>reguleeritav roolisammas</varustuselement>
      <varustuselement>kliimaseade</varustuselement>
      <varustuselement>elektrilised välispeeglid</varustuselement>
    </varustus>
  </soiduk>

  <soiduk id="2" tyyp="Soiduauto">
    <tehnilisedandmed>
      <mark>Honda</mark>
      <mudel>Jazz</mudel>
      <keretyyp>Luukpära</keretyyp>
      <varv>Helesinine</varv>
      <tootmisaasta>2005</tootmisaasta>
      <hind valuuta="EUR">4999</hind>
      <kaigukast>manuaal</kaigukast>
      <labisoit yhik="km">140000</labisoit>
      <mootor maht="1.2">
        <kytus>bensiin</kytus>
        <voimsus yhik="kW">57</voimsus>
      </mootor>
    </tehnilisedandmed>
    <varustus>
      <varustuselement>kesklukustus</varustuselement>
      <varustuselement>turvapadi</varustuselement>
      <varustuselement>konditsioneer</varustuselement>
      <varustuselement>tekstiilpolster</varustuselement>
    </varustus>
  </soiduk>

  <soiduk id="3" tyyp="Kaubik">
    <tehnilisedandmed>
      <mark>Citroen</mark>
      <mudel>Berlingo</mudel>
      <keretyyp>Väikekaubik</keretyyp>
      <varv>valge</varv>
      <tootmisaasta>2006</tootmisaasta>
      <hind valuuta="EUR">3700</hind>
      <kaigukast>manuaal</kaigukast>
      <labisoit yhik="km">50000</labisoit>
      <mootor maht="1.4">
        <kytus>bensiin</kytus>
        <voimsus yhik="kW">55</voimsus>
      </mootor>
    </tehnilisedandmed>
    <varustus>
      <varustuselement>kesklukustus</varustuselement>
      <varustuselement>roolivõimendi</varustuselement>
      <varustuselement>istmesoojendus</varustuselement>
      <varustuselement>jalamatid</varustuselement>
    </varustus>
  </soiduk>

  <soiduk id="4" tyyp="Maastur">
    <tehnilisedandmed>
      <mark>Audi</mark>
      <mudel>Q7</mudel>
      <keretyyp>Maastur</keretyyp>
      <varv>hõbedane</varv>
      <tootmisaasta>2007</tootmisaasta>
      <hind valuuta="EUR">24000</hind>
      <kaigukast>automaat</kaigukast>
      <labisoit yhik="km">98000</labisoit>
      <mootor maht="3.0">
        <kytus>diisel</kytus>
        <voimsus yhik="kW">171</voimsus>
      </mootor>
    </tehnilisedandmed>
    <varustus>
      <varustuselement>kesklukustus</varustuselement>
      <varustuselement>roolivõimendi</varustuselement>
      <varustuselement>vihmasensor</varustuselement>
      <varustuselement>istmesoojendus</varustuselement>
      <varustuselement>toonitud klaasid</varustuselement>
      <varustuselement>nahkkattega rool</varustuselement>
    </varustus>
  </soiduk>
</soidukid>

XML 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="soidukid">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" name="soiduk">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="tehnilisedandmed">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="mark" type="xs:string" />
                    <xs:element name="mudel" type="xs:string" />
                    <xs:element name="keretyyp" type="xs:string" />
                    <xs:element name="varv" type="xs:string" />
                    <xs:element name="tootmisaasta" type="xs:unsignedShort" />
                    <xs:element name="hind">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:extension base="xs:decimal">
                            <xs:attribute name="valuuta" type="xs:string" use="required" />
                          </xs:extension>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="kaigukast" type="xs:string" />
                    <xs:element name="labisoit">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:extension base="xs:unsignedInt">
                            <xs:attribute name="yhik" type="xs:string" use="required" />
                          </xs:extension>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="mootor">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="kytus" type="xs:string" />
                          <xs:element name="voimsus">
                            <xs:complexType>
                              <xs:simpleContent>
                                <xs:extension base="xs:unsignedShort">
                                  <xs:attribute name="yhik" type="xs:string" use="required" />
                                </xs:extension>
                              </xs:simpleContent>
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                        <xs:attribute name="maht" type="xs:double" use="required" />
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="varustus">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element maxOccurs="unbounded" name="varustuselement" type="xs:string" />
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
            <xs:attribute name="id" type="xs:int" use="required" />
            <xs:attribute name="tyyp" type="xs:string" use="required" />
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

XML Transformatsiooni failid

Esimene

Selle transformatsioonifailiga kuvatakse kõiki sõidukeid.

<?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>Soidukite myygiplats</title>
        </head>
        <body>
          <ul>
            <xsl:for-each select="soidukid/soiduk">
              <li>
                <xsl:value-of select="tehnilisedandmed/mark"/>
                <xsl:text> </xsl:text>
                <xsl:value-of select="tehnilisedandmed/mudel"/>
              </li>
              <ul>
                <li>
                  <xsl:text>Keretüüp: </xsl:text>
                  <xsl:value-of select="tehnilisedandmed/keretyyp"/>
                </li>
                <li>
                  <xsl:text>Värv: </xsl:text>
                  <xsl:value-of select="tehnilisedandmed/varv"/>
                </li>
                <li>
                  <xsl:text>Tootmisaasta: </xsl:text>
                  <xsl:value-of select="tehnilisedandmed/tootmisaasta"/>                
                </li>
                <li>
                  <xsl:text>Hind: </xsl:text>
                  <xsl:value-of select="tehnilisedandmed/hind"/>
                  <xsl:text> </xsl:text>
                  <xsl:value-of select="tehnilisedandmed/hind/@valuuta"/>
                </li>
                <li>
                  <xsl:text>Käigukast: </xsl:text>
                  <xsl:value-of select="tehnilisedandmed/kaigukast"/>
                </li>
                <li>
                  <xsl:text>Läbisõit: </xsl:text>
                  <xsl:value-of select="tehnilisedandmed/labisoit"/>
                  <xsl:text> </xsl:text>
                  <xsl:value-of select="tehnilisedandmed/labisoit/@yhik"/>
                </li>
                <li>
                  <xsl:text>Mootori andmed</xsl:text>
                  <ul>
                    <li>
                      <xsl:text>Maht: </xsl:text>
                      <xsl:value-of select="tehnilisedandmed/mootor/@maht"/>         
                    </li>
                    <li>
                      <xsl:text>Kütus: </xsl:text>
                      <xsl:value-of select="tehnilisedandmed/mootor/kytus"/>
                    </li>
                    <li>
                      <xsl:text>Võimsus: </xsl:text>
                      <xsl:value-of select="tehnilisedandmed/mootor/voimsus"/>
                      <xsl:text> </xsl:text>
                      <xsl:value-of select="tehnilisedandmed/mootor/voimsus/@yhik"/>
                    </li>
                  </ul>
                </li>
                <li>
                  <xsl:text>Varustus</xsl:text>
                  <ul>
                    <xsl:for-each select="varustus/varustuselement">
                      <li>
                        <xsl:value-of select="."></xsl:value-of>
                      </li>
                    </xsl:for-each>
                  </ul>
                </li>
              </ul>
              <br/>
            </xsl:for-each>
          </ul>
        </body>
      </html>
    </xsl:template>
</xsl:stylesheet>

Teine

Selle transformatsioonifailiga kuvatakse sõidukid, mis on sõiduautod ning mille hind on alla 5000. Fail on Enosesse üles laetud, kuna tekkis < sümboliga probleeme.

Kolmas

Selle transformatsioonifailiga kuvatakse kõik sõidukid, mis on BMW margiga.

<?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>Soidukite myygiplats</title>
      </head>
      <body>
        <ul>
          <xsl:for-each select="soidukid/soiduk">
            <xsl:if test="tehnilisedandmed/mark = 'BMW'">
            <li>
              <xsl:value-of select="tehnilisedandmed/mark"/>
              <xsl:text> </xsl:text>
              <xsl:value-of select="tehnilisedandmed/mudel"/>
            </li>
            <ul>
              <li>
                <xsl:text>Keretüüp: </xsl:text>
                <xsl:value-of select="tehnilisedandmed/keretyyp"/>
              </li>
              <li>
                <xsl:text>Värv: </xsl:text>
                <xsl:value-of select="tehnilisedandmed/varv"/>
              </li>
              <li>
                <xsl:text>Tootmisaasta: </xsl:text>
                <xsl:value-of select="tehnilisedandmed/tootmisaasta"/>
              </li>
              <li>
                <xsl:text>Hind: </xsl:text>
                <xsl:value-of select="tehnilisedandmed/hind"/>
                <xsl:text> </xsl:text>
                <xsl:value-of select="tehnilisedandmed/hind/@valuuta"/>
              </li>
              <li>
                <xsl:text>Käigukast: </xsl:text>
                <xsl:value-of select="tehnilisedandmed/kaigukast"/>
              </li>
              <li>
                <xsl:text>Läbisõit: </xsl:text>
                <xsl:value-of select="tehnilisedandmed/labisoit"/>
                <xsl:text> </xsl:text>
                <xsl:value-of select="tehnilisedandmed/labisoit/@yhik"/>
              </li>
              <li>
                <xsl:text>Mootori andmed</xsl:text>
                <ul>
                  <li>
                    <xsl:text>Maht: </xsl:text>
                    <xsl:value-of select="tehnilisedandmed/mootor/@maht"/>
                  </li>
                  <li>
                    <xsl:text>Kütus: </xsl:text>
                    <xsl:value-of select="tehnilisedandmed/mootor/kytus"/>
                  </li>
                  <li>
                    <xsl:text>Võimsus: </xsl:text>
                    <xsl:value-of select="tehnilisedandmed/mootor/voimsus"/>
                    <xsl:text> </xsl:text>
                    <xsl:value-of select="tehnilisedandmed/mootor/voimsus/@yhik"/>
                  </li>
                </ul>
              </li>
              <li>
                <xsl:text>Varustus</xsl:text>
                <ul>
                  <xsl:for-each select="varustus/varustuselement">
                    <li>
                      <xsl:value-of select="."></xsl:value-of>
                    </li>
                  </xsl:for-each>
                </ul>
              </li>
            </ul>
            <br/>
            </xsl:if>
          </xsl:for-each>
        </ul>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

Teenus

Valminud veebiteenuse eesmärgiks on pakkuda võimalust lisada auto müügikuulutsi erinevate kasutajate poolt ning antud kuulutusi hiljem hallata.

Valminud teenuse meetodid:

  • GetAllCars - tagastab kõik aktiivsed autod
  • AddCar - Uue auto lisamine, lisamiseks peab kasutaja olema sisselogitud
  • UpdateCar - Auto andmete uuendamine, uuendamine on lubatud ainult kasutajale, kes on märgitud baasis oleva auto omanikuks
  • DeleteCar - Auto kustutamine baasist, kustutamine on lubatud kasutajale, kes on märgitud baasis oleva auto omanikuks. Juhul, kui auto on hetkel müügis, siis kustutatakse ka müügikuulutus
  • GetAllEquipments - Tagastab kõik varustuse elemendid, mis on baasi kantud
  • AddEquipment - Võimaldab lisada uue varustuse elemendi baasi
  • GetCarsOnSale - Tagastab kõik aktiivsed auto müügi kuulutused
  • AddCarOnSale - Võimaldab kasutajal luua uue kuulutuse, kui ta on auto omanik ja kui auto ei ole aktiivselt juba müügis
  • UpdateCarOnSale - Võimaldab auto müügikuulutuse omanikul uuendada aktiivse kuulutuse andmeid
  • SellCarOnSale - Võimaldab auto müügikuulutuse omanikul märkida auto müüduks
  • DeleteCarOnSale - Võimaldab auto müügikuulutuse omanikul kuuluts tühistada (kustutada)
  • GetUserCars - Võimaldab kuvada kasutaja poolt omatud autosid, mis on aktiivsed
  • GetStatistics - Tagastab Inetrface-st implementeeritud meetodite kasutamise statistika. Lubatud ainult kasutajale, kes on administraatori rollis
  • FindCarById - Võimaldab otsida autot vastavalt ID väärtusele
  • FindCarByYearRange - Võimaldab kasutajal otsida autosid, mis on aastate vahemikus. Kui algus või lõpp on määramata, siis otsitakse autosid, mis on konkreetse väljalaskeaastaga (vastavalt selle, mille väärtus pole 0)
  • FindCarByPrice - Võimaldab kasutajal otsida autosid hinna vahemikus
  • AddEquipmentForCar - Võimaldab auto omanikul lisada varustust aktiivsele autole
  • DeleteEquipmentFromCar - Võimaldab auto omanikul kustutada aktiivselt autolt varustuse element

Valminud töö saab kätte lingilt: http://enos.itcollege.ee/~ktart/WcfCarService.zip (Lisatud on sertifikaadid, andmebaasi skriptid ja valminud kood)


Klientrakendus

Valminud klientrakenduse saab allalaadida lingilt: http://enos.itcollege.ee/~ktart/Projekt_Klientrakendus_Teenus.zip

Klientrakendus on mõeldud kasutajale, kes soovib näha automüügi kuulutusi ja ise lisada kuulutusi. Klientrakenduse valmimise käigus muutsime ka varasemalt valminud teenust, lisades sinna juurde vajalikke meetodeid (Login, registreerimine).

Logi

20.05.2012

  • Valmis sai klientrakendus.

30.04.2012

  • Lõppes n.ö. "Räige WCF-i lakserdamine".

28.04.2012

  • N.ö. "Räige WCF-i lakserdamise" raames algas n.ö. "Ilge testimine"

15.04.2012

  • Algas n.ö. "Räige WCF-i lakserdamine".

03.03.2012

  • Wikisse üleslaadimine ning redigeerimine.

02.03.2012

  • Valmis said XSLT failid.

29.02.2012

  • Valmis sai XML fail.