Poial: Difference between revisions
(9 intermediate revisions by 2 users not shown) | |||
Line 6: | Line 6: | ||
*Priit Aarma | *Priit Aarma | ||
===XML=== | |||
<pre> | |||
<?xml version="1.0" encoding="utf-8" ?> | |||
<Veebipood> | |||
<Info> | |||
<Nimi>E-Riietepood</Nimi> | |||
<Kirjeldus> | |||
Soodsad ja kvaliteetsed riided meestele ja naistele. | |||
</Kirjeldus> | |||
<Kontaktid> | |||
<Kontakt Tüüp="Aadress">Paekaare 52, Tallinn</Kontakt> | |||
<Kontakt Tüüp="Telefon">riided@mail.ee</Kontakt> | |||
<Kontakt Tüüp="Email">55544422</Kontakt> | |||
</Kontaktid> | |||
</Info> | |||
=== | <Kategooriad> | ||
<Kategooria>Mehed</Kategooria> | |||
<Kategooria>Naised</Kategooria> | |||
</Kategooriad> | |||
<Liigid> | |||
<Liik>Särgid</Liik> | |||
<Liik>Püksid</Liik> | |||
<Liik>Kleidid</Liik> | |||
<Liik>Jalanõud</Liik> | |||
<Liik>Joped</Liik> | |||
</Liigid> | |||
<Tooted> | |||
<Toode ID="1" Kogus="11" Kategooria="Mehed" Liik="Püksid"> | |||
<Nimi>Batmani püksid</Nimi> | |||
<Bränd>Batman</Bränd> | |||
<Pilt>http://enos.itcollege.ee/~smaeots/Vorgu2/Pildid/batmani_pyksid.jpg</Pilt> | |||
<Suurus>M</Suurus> | |||
<Hind Ühik=" EUR">55</Hind> | |||
<Kirjeldus>Mugavad ja vastupidavad!</Kirjeldus> | |||
</Toode> | |||
<Toode ID="2" Kogus="9" Kategooria="Naised" Liik="Jalanõud"> | |||
<Nimi>Klassikaline pruun naiste saabas</Nimi> | |||
<Bränd>Dolcis</Bränd> | |||
<Pilt>http://enos.itcollege.ee/~smaeots/Vorgu2/Pildid/Naiste_saapad.jpg</Pilt> | |||
<Suurus>36</Suurus> | |||
<Hind Ühik=" EUR">49</Hind> | |||
<Kirjeldus>Kaunistustega klassikaline pruun naiste saabas. Sobib kandmiseks ka pidulikel juhtudel.</Kirjeldus> | |||
</Toode> | |||
<Toode ID="3" Kogus="6" Kategooria="Mehed" Liik="Jope"> | |||
<Nimi>PADDED JACKET SOLID jope</Nimi> | |||
<Bränd>Alpinecrown</Bränd> | |||
<Pilt>http://enos.itcollege.ee/~smaeots/Vorgu2/Pildid/Meeste_jope.png</Pilt> | |||
<Suurus>L</Suurus> | |||
<Hind Ühik=" EUR">79</Hind> | |||
<Kirjeldus>Sobib sportimiseks kui ka vabal ajal kandmiseks.</Kirjeldus> | |||
</Toode> | |||
</Tooted> | |||
</Veebipood> | |||
</pre> | |||
===XML skeemifail=== | |||
<pre> | |||
<?xml version="1.0" encoding="utf-8"?> | |||
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> | |||
<xs:element name="Veebipood"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="Info"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="Nimi" type="xs:string" /> | |||
<xs:element name="Kirjeldus" type="xs:string" /> | |||
<xs:element name="Kontaktid"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element maxOccurs="unbounded" name="Kontakt"> | |||
<xs:complexType> | |||
<xs:simpleContent> | |||
<xs:extension base="xs:string"> | |||
<xs:attribute name="Tüüp" type="xs:string" use="required" /> | |||
</xs:extension> | |||
</xs:simpleContent> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="Kategooriad"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element maxOccurs="unbounded" name="Kategooria" type="xs:string" /> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="Liigid"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element maxOccurs="unbounded" name="Liik" type="xs:string" /> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="Tooted"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element maxOccurs="unbounded" name="Toode"> | |||
<xs:complexType> | |||
<xs:sequence> | |||
<xs:element name="Nimi" type="xs:string" /> | |||
<xs:element name="Bränd" type="xs:string" /> | |||
<xs:element name="Pilt" type="xs:string" /> | |||
<xs:element name="Suurus" type="xs:string" /> | |||
<xs:element name="Hind"> | |||
<xs:complexType> | |||
<xs:simpleContent> | |||
<xs:extension base="xs:unsignedByte"> | |||
<xs:attribute name="Ühik" type="xs:string" use="required" /> | |||
</xs:extension> | |||
</xs:simpleContent> | |||
</xs:complexType> | |||
</xs:element> | |||
<xs:element name="Kirjeldus" type="xs:string" /> | |||
</xs:sequence> | |||
<xs:attribute name="ID" type="xs:unsignedByte" use="required" /> | |||
<xs:attribute name="Kogus" type="xs:unsignedByte" use="required" /> | |||
<xs:attribute name="Kategooria" type="xs:string" use="required" /> | |||
<xs:attribute name="Liik" type="xs:string" use="required" /> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:sequence> | |||
</xs:complexType> | |||
</xs:element> | |||
</xs:schema> | |||
</pre> | |||
===XSLT=== | |||
<pre> | |||
<?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> | |||
<xsl:value-of select="Veebipood/Info/Nimi"/> | |||
</title> | |||
</head> | |||
<body> | |||
<xsl:for-each select="Veebipood/Tooted/Toode"> | |||
<xsl:sort select="@ID"/> | |||
<div id="toode"> | |||
<div style="border:2px solid green"> | |||
<div style="float: left; width:250px"> | |||
<h1 style=" color:#00994C"> | |||
<xsl:value-of select="Nimi"/> | |||
</h1> | |||
<em style="color: #808080"> | |||
ID: <xsl:value-of select="@ID"/> | |||
</em> | |||
<br> | |||
<em style="color: #808080"> | |||
Kategooria: <xsl:value-of select="@Kategooria"/> | |||
</em> | |||
</br> | |||
<br> | |||
<em style="color: #808080"> | |||
Liik: <xsl:value-of select="@Liik"/> | |||
</em> | |||
</br> | |||
<br> | |||
<em style="color: #808080"> | |||
Kogus: <xsl:value-of select="@Kogus"/> | |||
</em> | |||
</br> | |||
</div> | |||
<xsl:variable name="link" select="Pilt" /> | |||
<div style="padding:100px 0px 0px 0px"> | |||
<img height ="250px" src="{$link}"></img> | |||
</div> | |||
<h3 style="color: #00CC66; padding:0px 0px 0px 200px" > | |||
<xsl:value-of select="Kirjeldus"/> | |||
</h3> | |||
<table> | |||
<tr> | |||
<td> | |||
<b style ="color: black; padding:0px 0px 0px 200px"> | |||
Bränd: <xsl:value-of select="Bränd"/> | |||
</b> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<b style ="color: green; padding:0px 0px 0px 200px"> | |||
Hind: <xsl:value-of select="Hind"/> | |||
<xsl:value-of select="Hind/@Ühik"/> | |||
</b> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td> | |||
<b style="padding:0px 0px 0px 200px"> | |||
Suurus: <xsl:value-of select="Suurus"/> | |||
</b> | |||
</td> | |||
</tr> | |||
</table> | |||
<button type="button">Osta</button> | |||
</div> | |||
<div style="margin-bottom: 5.0em;"></div> | |||
</div> | |||
</xsl:for-each> | |||
</body> | |||
</html> | |||
</xsl:template> | |||
</xsl:stylesheet> | |||
</pre> | |||
==Veebiteenuse analüüs== | |||
Meie veebiteenuseks on plaadipood. Domeenimudeliks on "Album", mille ümber põhiline tegevus toimub. Mudeleid on meil kokku 6. Nendeks on Album, Artist, Cart, User, Genre, Order. Igal mudelil on ka eraldi DTO(Data transfer object) mudelid, et andmebaasist ei tagastata liiga palju seoseid ega ebavajalikku infot. Esitades konkreetseid päringuid API veebiteenusele saab tagasi vastavad albumid, žanride ja artistidega. Kasutame Basic Authentication-it, mille filter atribuudi "[AdminAttribute]" lisame vastavale controllerile, millele soovime ligipääsu vaid adminile ning "[AuthAttribute]", kui ligipääs vaid konkreetsele userile, kes sisse logitud. API poole peal vastavale aadressile minna, ei ava ta enne andmeid, kui oled vastava (admin, user) resource omanikuna loginud. Mustreid kasutasime sarnaselt praktikumides läbi võetud teemadele. Addingdata klassiga saab lisada andmebaasi andmed (valides selle start-up projektiks). | |||
==Klientrakendus analüüs== | |||
Klientrakendusena ehitasime WPF-il üles plaadipood applicationi. Avades rakenduse, peab ennast enne kasutaja olemasolul sisse logima, kui ei oma kasutajat saab kohe selle seal registreerida. Rakendusel on olemas pärast andmete lisamisel admin - AdminPlaadiPood, parooliks - saavalmis. Kelle tuvastamisel, viskab rakendus admini vaate, kus saab siis albumeid, artiste, žanre ja kasutajaid muuta, kustutada, lisada. | |||
Tavakasutaja sisselogimisel avaneb poevaade, kus saab valida žanri, mille järel tulevad albumi nimed ja selekteerides albumi nime, avaneb vastav info albumi kohta. Seejärel saab albumeid lisada ostukorvi ning ostukorvist kustutada,osta toode/tooted. Peale ostmist salvestatakse tellimused orderhistorysse. | |||
=Veebiteenus ja klientrakendus= | |||
Allalaadimine: http://enos.itcollege.ee/~smaeots/V%f5rgurakendused%202/VeebiteenusJaRakendus | |||
Zipis on olemas API ning WPF klient, eraldi solutionites. | |||
Et saaks klienti testida, peab API eelnevalt töötama. |
Latest revision as of 18:55, 16 June 2014
Meeskond pöial
Meeskonna liikmed:
- Kert Treikelder
- Stenn Mäeots
- Jevgenia Motorenko
- Priit Aarma
XML
<?xml version="1.0" encoding="utf-8" ?> <Veebipood> <Info> <Nimi>E-Riietepood</Nimi> <Kirjeldus> Soodsad ja kvaliteetsed riided meestele ja naistele. </Kirjeldus> <Kontaktid> <Kontakt Tüüp="Aadress">Paekaare 52, Tallinn</Kontakt> <Kontakt Tüüp="Telefon">riided@mail.ee</Kontakt> <Kontakt Tüüp="Email">55544422</Kontakt> </Kontaktid> </Info> <Kategooriad> <Kategooria>Mehed</Kategooria> <Kategooria>Naised</Kategooria> </Kategooriad> <Liigid> <Liik>Särgid</Liik> <Liik>Püksid</Liik> <Liik>Kleidid</Liik> <Liik>Jalanõud</Liik> <Liik>Joped</Liik> </Liigid> <Tooted> <Toode ID="1" Kogus="11" Kategooria="Mehed" Liik="Püksid"> <Nimi>Batmani püksid</Nimi> <Bränd>Batman</Bränd> <Pilt>http://enos.itcollege.ee/~smaeots/Vorgu2/Pildid/batmani_pyksid.jpg</Pilt> <Suurus>M</Suurus> <Hind Ühik=" EUR">55</Hind> <Kirjeldus>Mugavad ja vastupidavad!</Kirjeldus> </Toode> <Toode ID="2" Kogus="9" Kategooria="Naised" Liik="Jalanõud"> <Nimi>Klassikaline pruun naiste saabas</Nimi> <Bränd>Dolcis</Bränd> <Pilt>http://enos.itcollege.ee/~smaeots/Vorgu2/Pildid/Naiste_saapad.jpg</Pilt> <Suurus>36</Suurus> <Hind Ühik=" EUR">49</Hind> <Kirjeldus>Kaunistustega klassikaline pruun naiste saabas. Sobib kandmiseks ka pidulikel juhtudel.</Kirjeldus> </Toode> <Toode ID="3" Kogus="6" Kategooria="Mehed" Liik="Jope"> <Nimi>PADDED JACKET SOLID jope</Nimi> <Bränd>Alpinecrown</Bränd> <Pilt>http://enos.itcollege.ee/~smaeots/Vorgu2/Pildid/Meeste_jope.png</Pilt> <Suurus>L</Suurus> <Hind Ühik=" EUR">79</Hind> <Kirjeldus>Sobib sportimiseks kui ka vabal ajal kandmiseks.</Kirjeldus> </Toode> </Tooted> </Veebipood>
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="Veebipood"> <xs:complexType> <xs:sequence> <xs:element name="Info"> <xs:complexType> <xs:sequence> <xs:element name="Nimi" type="xs:string" /> <xs:element name="Kirjeldus" type="xs:string" /> <xs:element name="Kontaktid"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="Kontakt"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="Tüüp" type="xs:string" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Kategooriad"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="Kategooria" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Liigid"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="Liik" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Tooted"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="Toode"> <xs:complexType> <xs:sequence> <xs:element name="Nimi" type="xs:string" /> <xs:element name="Bränd" type="xs:string" /> <xs:element name="Pilt" type="xs:string" /> <xs:element name="Suurus" type="xs:string" /> <xs:element name="Hind"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:unsignedByte"> <xs:attribute name="Ühik" type="xs:string" use="required" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="Kirjeldus" type="xs:string" /> </xs:sequence> <xs:attribute name="ID" type="xs:unsignedByte" use="required" /> <xs:attribute name="Kogus" type="xs:unsignedByte" use="required" /> <xs:attribute name="Kategooria" type="xs:string" use="required" /> <xs:attribute name="Liik" type="xs:string" use="required" /> </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" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"> <xsl:output method="html" indent="yes"/> <xsl:template match="/"> <html> <head> <title> <xsl:value-of select="Veebipood/Info/Nimi"/> </title> </head> <body> <xsl:for-each select="Veebipood/Tooted/Toode"> <xsl:sort select="@ID"/> <div id="toode"> <div style="border:2px solid green"> <div style="float: left; width:250px"> <h1 style=" color:#00994C"> <xsl:value-of select="Nimi"/> </h1> <em style="color: #808080"> ID: <xsl:value-of select="@ID"/> </em> <br> <em style="color: #808080"> Kategooria: <xsl:value-of select="@Kategooria"/> </em> </br> <br> <em style="color: #808080"> Liik: <xsl:value-of select="@Liik"/> </em> </br> <br> <em style="color: #808080"> Kogus: <xsl:value-of select="@Kogus"/> </em> </br> </div> <xsl:variable name="link" select="Pilt" /> <div style="padding:100px 0px 0px 0px"> <img height ="250px" src="{$link}"></img> </div> <h3 style="color: #00CC66; padding:0px 0px 0px 200px" > <xsl:value-of select="Kirjeldus"/> </h3> <table> <tr> <td> <b style ="color: black; padding:0px 0px 0px 200px"> Bränd: <xsl:value-of select="Bränd"/> </b> </td> </tr> <tr> <td> <b style ="color: green; padding:0px 0px 0px 200px"> Hind: <xsl:value-of select="Hind"/> <xsl:value-of select="Hind/@Ühik"/> </b> </td> </tr> <tr> <td> <b style="padding:0px 0px 0px 200px"> Suurus: <xsl:value-of select="Suurus"/> </b> </td> </tr> </table> <button type="button">Osta</button> </div> <div style="margin-bottom: 5.0em;"></div> </div> </xsl:for-each> </body> </html> </xsl:template> </xsl:stylesheet>
Veebiteenuse analüüs
Meie veebiteenuseks on plaadipood. Domeenimudeliks on "Album", mille ümber põhiline tegevus toimub. Mudeleid on meil kokku 6. Nendeks on Album, Artist, Cart, User, Genre, Order. Igal mudelil on ka eraldi DTO(Data transfer object) mudelid, et andmebaasist ei tagastata liiga palju seoseid ega ebavajalikku infot. Esitades konkreetseid päringuid API veebiteenusele saab tagasi vastavad albumid, žanride ja artistidega. Kasutame Basic Authentication-it, mille filter atribuudi "[AdminAttribute]" lisame vastavale controllerile, millele soovime ligipääsu vaid adminile ning "[AuthAttribute]", kui ligipääs vaid konkreetsele userile, kes sisse logitud. API poole peal vastavale aadressile minna, ei ava ta enne andmeid, kui oled vastava (admin, user) resource omanikuna loginud. Mustreid kasutasime sarnaselt praktikumides läbi võetud teemadele. Addingdata klassiga saab lisada andmebaasi andmed (valides selle start-up projektiks).
Klientrakendus analüüs
Klientrakendusena ehitasime WPF-il üles plaadipood applicationi. Avades rakenduse, peab ennast enne kasutaja olemasolul sisse logima, kui ei oma kasutajat saab kohe selle seal registreerida. Rakendusel on olemas pärast andmete lisamisel admin - AdminPlaadiPood, parooliks - saavalmis. Kelle tuvastamisel, viskab rakendus admini vaate, kus saab siis albumeid, artiste, žanre ja kasutajaid muuta, kustutada, lisada. Tavakasutaja sisselogimisel avaneb poevaade, kus saab valida žanri, mille järel tulevad albumi nimed ja selekteerides albumi nime, avaneb vastav info albumi kohta. Seejärel saab albumeid lisada ostukorvi ning ostukorvist kustutada,osta toode/tooted. Peale ostmist salvestatakse tellimused orderhistorysse.
Veebiteenus ja klientrakendus
Allalaadimine: http://enos.itcollege.ee/~smaeots/V%f5rgurakendused%202/VeebiteenusJaRakendus
Zipis on olemas API ning WPF klient, eraldi solutionites. Et saaks klienti testida, peab API eelnevalt töötama.