Meeskond "Kujuneb"
From ICO wiki
Jump to navigationJump to search
Teema
Muusikapoe tootekataloogi osaline realisatsioon klient-server põhimõttel.
Liikmed
- Rauno Väli
- Andreas Lea
- Erik Peinar
Lähtekood
- Versioonihalduseks kasutatud GitHub-i võimalusi:
https://github.com/R3ality/tootekataloog
XML
Andmefail (XML)
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!-- <?xml-stylesheet type="text/xsl" href="style.xslt"?> -->
<tootekataloog>
<!-- zanride loetelu-->
<zanrid>
<zanr id="1">
<nimi>Pop</nimi>
</zanr>
<zanr id="2">
<nimi>Rap</nimi>
</zanr>
</zanrid>
<!-- artistide loetelu-->
<artistid>
<artist id="1">
<nimi>Queen</nimi>
</artist>
<artist id="2">
<nimi>Madonna</nimi>
</artist>
</artistid>
<!-- albumite loetelu-->
<albumid>
<album id="1">
<zanr>1</zanr>
<artist>1</artist>
<nimi>Greatest Hits</nimi>
<aasta>2005</aasta>
<lugusi>15</lugusi>
<pilt>http://bit.ly/jreygb</pilt>
<hind>12</hind>
</album>
<album id="2">
<zanr>2</zanr>
<artist>2</artist>
<nimi>American Life</nimi>
<aasta>2002</aasta>
<lugusi>19</lugusi>
<pilt>http://bit.ly/jwEHdl</pilt>
<hind>8.3</hind>
</album>
</albumid>
</tootekataloog>
Skeemifail (XSD)
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="tootekataloog">
<xs:complexType>
<xs:sequence>
<xs:element name="zanrid">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="zanr">
<xs:complexType>
<xs:sequence>
<xs:element name="nimi" type="xs:string" />
</xs:sequence>
<xs:attribute name="id" type="xs:unsignedByte" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="artistid">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="artist">
<xs:complexType>
<xs:sequence>
<xs:element name="nimi" type="xs:string" />
</xs:sequence>
<xs:attribute name="id" type="xs:unsignedByte" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="albumid">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="album">
<xs:complexType>
<xs:sequence>
<xs:element name="zanr" type="xs:unsignedByte" />
<xs:element name="artist" type="xs:unsignedByte" />
<xs:element name="nimi" type="xs:string" />
<xs:element name="aasta" type="xs:unsignedShort" />
<xs:element name="lugusi" type="xs:unsignedByte" />
<xs:element name="pilt" type="xs:string" />
<xs:element name="hind" type="xs:decimal" />
</xs:sequence>
<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>
Stiilifail (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>
<head>
<title>Tootekataloog</title>
<style type="text/css">
body {
font-family: Arial, Verdana;
}
table {
font-size: 12px;
border-collapse: collapse;
}
table.main {
border: 1px solid #98bf21;
}
table.main th {
padding: 3px 10px 3px 10px;
border: 1px solid #98bf21;
background-color: #A7C942;
color: #FFFFFF;
}
table.main tr {
background-color: #FFFFFF;
}
table.main td {
text-align: center;
padding: 3px;
border: 1px solid #98bf21;
}
a, a:hover, a:active, a:visited {
color: #000000;
}
a img {
border: none;
}
</style>
</head>
<body>
<h3>Albumid</h3>
<table class="main">
<tr>
<th>Artist</th>
<th>Album</th>
<th>Žanr</th>
<th>Aasta</th>
<th>Lugusi</th>
<th>Pilt</th>
<th>YouTube</th>
<th>Hind</th>
</tr>
<xsl:for-each select="tootekataloog/albumid/album">
<xsl:variable name="artistID" select="artist"/>
<xsl:variable name="zanrID" select="zanr"/>
<tr>
<xsl:if test="position() mod 2 =0">
<xsl:attribute name="style">
background-color: #EAF2D3;
</xsl:attribute>
</xsl:if>
<td>
<xsl:value-of select="/tootekataloog/artistid/artist[@id=$artistID]/nimi"/>
</td>
<td>
<xsl:value-of select="nimi"/>
</td>
<td>
<xsl:value-of select="/tootekataloog/zanrid/zanr[@id=$zanrID]/nimi"/>
</td>
<td>
<xsl:value-of select="aasta"/>
</td>
<td>
<xsl:value-of select="lugusi"/>
</td>
<td>
<img width="100" height="100">
<xsl:attribute name="src">
<xsl:value-of select="pilt"/>
</xsl:attribute>
</img>
</td>
<td>
<a>
<xsl:attribute name="href">
<xsl:text>http://www.youtube.com/results?search_query=</xsl:text><xsl:value-of select="/tootekataloog/artistid/artist[@id=$artistID]/nimi"/>+<xsl:value-of select="nimi"/>
</xsl:attribute>
<img src="http://www.upload.ee/image/1288041/youtube-badge-64x64.png">
</img>
</a>
</td>
<td>
<xsl:value-of select="hind"/> €
</td>
</tr>
</xsl:for-each>
</table>
<br/><br/>
<h3>Toored andmed</h3>
<table>
<tr>
<td style="padding-right: 50px; vertical-align: top;">
<h4>Žanrid</h4>
<table class="main">
<tr>
<th>id</th>
<th>nimi</th>
</tr>
<xsl:for-each select="tootekataloog/zanrid/zanr">
<tr>
<xsl:if test="position() mod 2 =0">
<xsl:attribute name="style">
background-color: #EAF2D3;
</xsl:attribute>
</xsl:if>
<td>
<xsl:value-of select="@id"/>
</td>
<td>
<xsl:value-of select="nimi"/>
</td>
</tr>
</xsl:for-each>
</table>
</td>
<td style="padding-right: 50px; vertical-align: top;">
<h4>Artistid</h4>
<table class="main">
<tr>
<th>id</th>
<th>nimi</th>
</tr>
<xsl:for-each select="tootekataloog/artistid/artist">
<tr>
<xsl:if test="position() mod 2 =0">
<xsl:attribute name="style">
background-color: #EAF2D3;
</xsl:attribute>
</xsl:if>
<td>
<xsl:value-of select="@id"/>
</td>
<td>
<xsl:value-of select="nimi"/>
</td>
</tr>
</xsl:for-each>
</table>
</td>
<td style="vertical-align: top;">
<h4>Albumid</h4>
<table class="main">
<tr>
<th>id</th>
<th>zanr</th>
<th>artist</th>
<th>nimi</th>
<th>aasta</th>
<th>lugusi</th>
<th>pilt</th>
<th>hind</th>
</tr>
<xsl:for-each select="tootekataloog/albumid/album">
<tr>
<xsl:if test="position() mod 2 =0">
<xsl:attribute name="style">
background-color: #EAF2D3;
</xsl:attribute>
</xsl:if>
<td>
<xsl:value-of select="@id"/>
</td>
<td>
<xsl:value-of select="zanr"/>
</td>
<td>
<xsl:value-of select="artist"/>
</td>
<td>
<xsl:value-of select="nimi"/>
</td>
<td>
<xsl:value-of select="aasta"/>
</td>
<td>
<xsl:value-of select="lugusi"/>
</td>
<td>
<xsl:value-of select="pilt"/>
</td>
<td>
<xsl:value-of select="hind"/>
</td>
</tr>
</xsl:for-each>
</table>
</td>
</tr>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Andmefaili vaade stiilifailiga
Teenus
- Online jooksev teenus:
http://kujuneb.somee.com/Teenus.asmx
Teenuse signatuur
Hetkeseisuga on teenusel järgnevad avalikud veebimeetodid (tärniga tähistatud meetodid nõuavad autentimist):
AnnaAlbum(int Id)
AnnaAlbumLaos()
AnnaAlbumiLood()
AnnaAlbumid()
AnnaAlbumidByZanr()
AnnaAlbumidByArtist()
AnnaArtist()
AnnaArtistid()
AnnaKasutajaNimi()
AnnaLadu()
AnnaLaod()
AnnaLogi()*
AnnaLood()
AnnaLooAlbum()
AnnaLugu()
AnnaRiigid()
AnnaRiik()
AnnaZanr()
AnnaZanrid()
KasOnAutenditud()
KustutaAlbum()*
KustutaArtist()*
KustutaLugu()*
LisaAlbum()*
LisaArtist()*
LisaLugu()*
LoendaMeetodiParingud()*
LogiValja()
MuudaAlbum()*
Otsi()
MuudaArtist()*
MuudaLugu()*
Andmetabelid
Statistika
Klientrakendus
Klientrakendus on teostatud C# Windows Forms rakendusena
Demoprogramm
- TootekatKlient-local.exe
http://www.upload.ee/files/1372294/TootekatKlient-local.exe.html (versioon 1) http://www.upload.ee/files/1389696/TootekatKlient-v2-local.exe.html (versioon 2) Eeldab et teenus jookseb lokaalses masinas (näiteks Visual Studiost debugima panduna)
- TootekatKlient-remote.exe
http://www.upload.ee/files/1372297/TootekatKlient-remote.exe.html (versioon 1) http://www.upload.ee/files/1389698/TootekatKlient-v2-remote.exe.html (versioon 2) Online teenuse pihta käiv klient. Administreerimisfunktsioonid sihipäraselt eemaldatud. Autentimine ei toimi.