Föderaalreserv: Difference between revisions
(7 intermediate revisions by the same user not shown) | |||
Line 8: | Line 8: | ||
* Klientrakendus | * Klientrakendus | ||
== | ==Veebiteenus ja klientrakendus == | ||
=== Analüüs === | === Analüüs === | ||
==== Sissejuhatus ==== | |||
Finanzi on rakendus, mis võimaldab kasutajal märkida üles oma igapäevaseid oste, selleks et saada tagasivaatavalt aimu oma igapäevaste kulutuste kohta. Projekti idee on ajendatud minu personaalsest soovist jälgida, mille peale ning kuhu ma oma raha paigutan. Täpsemalt, kui suur osa igapäevastest kulutustest moodustub juhostudest elik šokolaadid, kommid, krõpsud jne ning kui palju ma reaalselt tarbin hädavajalikke tooteid ja teenuseid. Kuigi on olemas analoogsed personaalse rahatarkuse rakendused, siis otsustasin sellise rakenduse realiseerida ise, sest oma arendatud rakendust on hiljem võimalik täiendada lisafunktsionaalsusega vastavalt oma vajadustele. | |||
==== Andmebaasimudel ==== | |||
[[File:Mudel_v1.0.PNG]] | |||
==== Olemite kirjeldus ==== | |||
'''Shop''' - Pood, millest sooritatakse ost | |||
* Id - Identifikaator | |||
* Name - Nimi (Prisma) | |||
* Adress - Aadress, kus pood asub | |||
'''PurchasePeriod ''' - Iga sooritatud ost jääb mingi perioodi sisse (näiteks jaanuari kolmas nädal). Perioodid on kuupõhised, kuid sisaldavad eraldi nädalate kohta käivat infot. | |||
Kui üks nädal asub kuu vahetumisperioodis, siis selle tulemusena on baasis kaks kirjet sama nädalanumbriga, kuid erineva kuunumbriga (poolikud nädalad). | |||
* Id - Identifikaator | |||
* OpeningDate - Kirje alguskuupäev | |||
* ClosingDate - Kuu kirje lõppkuupäev | |||
* InterimWeek - Näitab, kas tegemist on nädalaga, mis jääb kuuvahetusse | |||
* Month - Mitmes kuu aastas | |||
* Week Mitmes nädal aastas. | |||
'''Purchase ''' - Konkreetne ost, mis omakorda on seotud mitme tootega. | |||
* Id - Identifikaator | |||
* PurchasePeriodId - Näitab perioodi, millal see ost tehti. | |||
* PurchaseDate - Ostu kuupäev | |||
* Cost - Ostu kogukulu, sisaldab antud ostuga soetatud asjade hindade summat. Agregeeritud üle PurchaseProduct’i TotalPrice’i. | |||
* ShopId - Pood, kust antud ost sooritati. | |||
'''PurchaseProduct ''' - Ühe ostuga käigus soetatud tooted. | |||
* Id - Identifikaator | |||
* PurchaseId - Ost, milega toode on seotud | |||
* ProductId - Toode, millega ost on seotud. | |||
* Amount - Soetatud toote kogus. | |||
* UnitPrice - Soetatud toote ühiku hind. | |||
* TotalPrice - Kogu tootegrupi hind = amount * UnitPrice | |||
'''Product''' - Konkreetne toode, mis sisaldub ühes ostus. | |||
* Id - Identifikaator | |||
* Name - Toote nimi | |||
* Description - Toote kirjeldus | |||
==XML, XSD ning XSL== | ==XML, XSD ning XSL== |
Latest revision as of 14:12, 16 February 2017
Meeskond
- Rene Ott
Retsensioonid
- XML
- Veebirakendus
- Klientrakendus
Veebiteenus ja klientrakendus
Analüüs
Sissejuhatus
Finanzi on rakendus, mis võimaldab kasutajal märkida üles oma igapäevaseid oste, selleks et saada tagasivaatavalt aimu oma igapäevaste kulutuste kohta. Projekti idee on ajendatud minu personaalsest soovist jälgida, mille peale ning kuhu ma oma raha paigutan. Täpsemalt, kui suur osa igapäevastest kulutustest moodustub juhostudest elik šokolaadid, kommid, krõpsud jne ning kui palju ma reaalselt tarbin hädavajalikke tooteid ja teenuseid. Kuigi on olemas analoogsed personaalse rahatarkuse rakendused, siis otsustasin sellise rakenduse realiseerida ise, sest oma arendatud rakendust on hiljem võimalik täiendada lisafunktsionaalsusega vastavalt oma vajadustele.
Andmebaasimudel
Olemite kirjeldus
Shop - Pood, millest sooritatakse ost
- Id - Identifikaator
- Name - Nimi (Prisma)
- Adress - Aadress, kus pood asub
PurchasePeriod - Iga sooritatud ost jääb mingi perioodi sisse (näiteks jaanuari kolmas nädal). Perioodid on kuupõhised, kuid sisaldavad eraldi nädalate kohta käivat infot.
Kui üks nädal asub kuu vahetumisperioodis, siis selle tulemusena on baasis kaks kirjet sama nädalanumbriga, kuid erineva kuunumbriga (poolikud nädalad).
- Id - Identifikaator
- OpeningDate - Kirje alguskuupäev
- ClosingDate - Kuu kirje lõppkuupäev
- InterimWeek - Näitab, kas tegemist on nädalaga, mis jääb kuuvahetusse
- Month - Mitmes kuu aastas
- Week Mitmes nädal aastas.
Purchase - Konkreetne ost, mis omakorda on seotud mitme tootega.
- Id - Identifikaator
- PurchasePeriodId - Näitab perioodi, millal see ost tehti.
- PurchaseDate - Ostu kuupäev
- Cost - Ostu kogukulu, sisaldab antud ostuga soetatud asjade hindade summat. Agregeeritud üle PurchaseProduct’i TotalPrice’i.
- ShopId - Pood, kust antud ost sooritati.
PurchaseProduct - Ühe ostuga käigus soetatud tooted.
- Id - Identifikaator
- PurchaseId - Ost, milega toode on seotud
- ProductId - Toode, millega ost on seotud.
- Amount - Soetatud toote kogus.
- UnitPrice - Soetatud toote ühiku hind.
- TotalPrice - Kogu tootegrupi hind = amount * UnitPrice
Product - Konkreetne toode, mis sisaldub ühes ostus.
- Id - Identifikaator
- Name - Toote nimi
- Description - Toote kirjeldus
XML, XSD ning XSL
XML
<?xml version="1.0" encoding="UTF-8"?>
<Asjad xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Asi onKohtuasi="false" id="1">
<AsjaNr>166366</AsjaNr>
<Liik>Väärteoasi</Liik>
<Menetlused kogus="1">
<Menetlus id="11">
<MenetluseNr>1666366</MenetluseNr>
<Liik>Kohtuväline menetlus</Liik>
<Osalised kogus="2">
<Osaline id="111" onMenetleja="true">
<Liik>Kohtuväline menetleja</Liik>
<Isik id="1000">
<Nimi>Inspektor Kukeke</Nimi>
</Isik>
</Osaline>
<Osaline id="112" onMenetleja="false">
<Liik>Menetlusalune isik</Liik>
<Isik id="1001">
<Nimi>Andrus ElBling</Nimi>
</Isik>
</Osaline>
<Osaline id="113" onMenetleja="false">
<Liik>Tunnistaja</Liik>
<Isik id="1002">
<Nimi>Paks Peeter</Nimi>
</Isik>
</Osaline>
</Osalised>
<Toimingud kogus="2">
<Toiming id="114">
<Liik>Kiirmenetluse otsus</Liik>
<ToiminguOsalised>
<ToiminguOsaline osaliseId="111" />
<ToiminguOsaline osaliseId="112" />
</ToiminguOsalised>
</Toiming>
<Toiming id="115">
<Liik>Ülekuulamisprotokoll</Liik>
<ToiminguOsalised>
<ToiminguOsaline osaliseId="111" />
<ToiminguOsaline osaliseId="113" />
</ToiminguOsalised>
</Toiming>
</Toimingud>
</Menetlus>
</Menetlused>
<SeotudAsjad>
<Asi id="2" />
</SeotudAsjad>
</Asi>
<Asi onKohtuasi="true" id="2">
<AsjaNr>1-3-455</AsjaNr>
<Liik>Väärteoasi</Liik>
<Menetlused kogus="1">
<Menetlus id="21">
<MenetluseNr>1-3-455(1)</MenetluseNr>
<Liik>Kohtu I Astme menetlus</Liik>
<Osalised>
<Osaline id="211" onMenetleja="true">
<Liik>Kohtunik</Liik>
<Isik id="1003">
<Nimi>Kohtu Mõistja</Nimi>
</Isik>
</Osaline>
<Osaline id="212" onMenetleja="false">
<Liik>Menetlusalune isik</Liik>
<Isik id="1001">
<Nimi>Andrus ElBling</Nimi>
</Isik>
</Osaline>
</Osalised>
<Toimingud kogus="2">
<Toiming>
<Liik>Kaebus kohtuvälise menetleja otsuse peale</Liik>
<ToiminguOsalised>
<ToiminguOsaline osaliseId="211" />
</ToiminguOsalised>
</Toiming>
<Toiming>
<Liik>Kohtuotsus</Liik>
<ToiminguOsalised>
<ToiminguOsaline osaliseId="211" />
<ToiminguOsaline osaliseId="212" />
</ToiminguOsalised>
</Toiming>
</Toimingud>
</Menetlus>
</Menetlused>
<SeotudAsjad>
<Asi id="1" />
</SeotudAsjad>
</Asi>
<Asi onKohtuasi="false" id="3">
<AsjaNr>180000</AsjaNr>
<Liik>Kriminaalasi</Liik>
<Menetlused kogus="1">
<Menetlus id="31">
<MenetluseNr>17554354</MenetluseNr>
<Liik>Kohtueelne menetlus</Liik>
<Osalised kogus="2">
<Osaline id="311" onMenetleja="true">
<Liik>Uurija</Liik>
<Isik id="1005">
<Nimi>Elmar Vaher</Nimi>
</Isik>
</Osaline>
<Osaline id="312" onMenetleja="true">
<Liik>Prokuror</Liik>
<Isik id="1006">
<Nimi>Lavly Perling</Nimi>
</Isik>
</Osaline>
</Osalised>
<Toimingud xsi:nil="true" />
</Menetlus>
</Menetlused>
<SeotudAsjad xsi:nil="true" />
</Asi>
<Asi onKohtuasi="false" id="4">
<AsjaNr>170000</AsjaNr>
<Liik>Kriminaalasi</Liik>
<Menetlused kogus="1">
<Menetlus id="41">
<MenetluseNr>17554355</MenetluseNr>
<Liik>Kohtueelne menetlus</Liik>
<Osalised kogus="2">
<Osaline id="411" onMenetleja="false">
<Liik>Uurija</Liik>
<Isik id="1005">
<Nimi>Elmar Vaher</Nimi>
</Isik>
</Osaline>
<Osaline id="412" onMenetleja="false">
<Liik>Prokuror</Liik>
<Isik id="1006">
<Nimi>Lavly Perling</Nimi>
</Isik>
</Osaline>
</Osalised>
<Toimingud kogus="1">
<Toiming>
<Liik>Kriminaalmenetluse lõpetamise määrus</Liik>
<ToiminguOsalised>
<ToiminguOsaline osaliseId="412" />
</ToiminguOsalised>
</Toiming>
</Toimingud>
</Menetlus>
</Menetlused>
<SeotudAsjad xsi:nil="true" />
</Asi>
</Asjad>
XSD
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Asjad">
<xs:complexType>
<xs:sequence>
<xs:element name="Asi" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="AsjaNr" type="xs:string"/>
<xs:element name="Liik" type="xs:string"/>
<xs:element name="Menetlused">
<xs:complexType>
<xs:sequence>
<xs:element name="Menetlus" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="MenetluseNr" type="xs:string"/>
<xs:element name="Liik" type="xs:string"/>
<xs:element name="Osalised" maxOccurs="1" nillable="true">
<xs:complexType>
<xs:sequence>
<xs:element name="Osaline" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Liik" type="xs:string"/>
<xs:element name="Isik">
<xs:complexType>
<xs:sequence>
<xs:element name="Nimi" type="xs:string"/>
</xs:sequence>
<xs:attribute name="id" type="xs:unsignedInt"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="id" type="xs:unsignedInt"/>
<xs:attribute name="onMenetleja" type="xs:boolean"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="kogus" type="xs:int"/>
</xs:complexType>
</xs:element>
<xs:element name="Toimingud" maxOccurs="1" nillable="true">
<xs:complexType>
<xs:sequence>
<xs:element name="Toiming" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Liik" type="xs:string"/>
<xs:element name="ToiminguOsalised" maxOccurs="1" nillable="true">
<xs:complexType>
<xs:sequence>
<xs:element name="ToiminguOsaline" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="osaliseId" type="xs:string"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="id" type="xs:unsignedInt"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="kogus" type="xs:unsignedInt"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="id" type="xs:unsignedInt"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="kogus" type="xs:unsignedInt"/>
</xs:complexType>
</xs:element>
<xs:element name="SeotudAsjad" maxOccurs="1" nillable="true">
<xs:complexType>
<xs:sequence>
<xs:element name="Asi" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="id" type="xs:unsignedInt"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="id" type="xs:unsignedInt"/>
<xs:attribute name="onKohtuasi" type="xs:boolean"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
XSLT 1
Kuvab isikute menetlusi, milles nad on osalised üle asjade.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes" encoding="UTF-8" />
<xsl:template match="/">
<html>
<head>
<title>Kuvab kõik isikud ning nendega seotud menetlused.</title>
</head>
<body>
<table border="1">
<thead>
<th>Isik</th>
<th>Menetlus</th>
</thead>
<tbody>
<xsl:apply-templates select="//Isik"/>
</tbody>
</table>
</body>
</html>
</xsl:template>
<!--Eraldab kõik erinevad nimed välja -->
<!-- Kasutame for loopi asemel eraldi template'i -->
<xsl:template match="//Isik">
<xsl:if test="Nimi[not(.=preceding::*)]">
<xsl:variable name="isikuId" select="./@id"/>
<tr>
<td>
<ul>
<li><xsl:value-of select="Nimi"/> [<xsl:value-of select="$isikuId"/>]</li>
</ul>
</td>
<td>
<xsl:call-template name="IsikuMenetlused">
<xsl:with-param name="isikuId" select="$isikuId"/>
</xsl:call-template>
</td>
</tr>
</xsl:if>
</xsl:template>
<!-- Eraldame kõikide isikute menetlused, kasutame alamtemplate'i -->
<xsl:template name="IsikuMenetlused">
<xsl:param name="isikuId"/>
<ul>
<xsl:for-each select="//Menetlus">
<xsl:if test="./Osalised/Osaline/Isik/@id=$isikuId">
<li>
<xsl:value-of select="./MenetluseNr"/> - <xsl:value-of select="./Liik"/>
</li>
</xsl:if>
</xsl:for-each>
</ul>
</xsl:template>
</xsl:stylesheet>
XSLT 2
Kuvab asjadega seotud infot toimingute täpsuseni.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes" encoding="UTF-8" />
<xsl:template match="/">
<html>
<head>
<title>Kuvab kõikide asjadega seotud info</title>
<!--
<link rel="stylesheet" type="text/css" href="asjad.css"/>
-->
<style>
.table {
border-collapse:collapse;
}
.inner-table{
width: 100%;
padding: 200px;
}
tr.equal-width td,
tr.equal-width th {
width: 25%;
}
</style>
</head>
<body>
<h1>
Kõik menetluses olevad asjad (<xsl:value-of select="count(Asjad/Asi)"/>)
</h1>
<table border="1" style="border-collapse:collapse">
<thead>
<th>Asi</th>
<th>Menetlused</th>
<th>Seotud asjade number</th>
</thead>
<tbody>
<xsl:apply-templates select="Asjad/Asi"/>
</tbody>
</table>
</body>
</html>
</xsl:template>
<!-- Koik menetletavad asjad -->
<xsl:template match="Asjad/Asi">
<tr>
<td>
<xsl:value-of select="./Liik"/>
<br/>
<xsl:value-of select="./AsjaNr"/>
</td>
<td>
<table border="1" class="table inner-table">
<thead>
<tr class="equal-width">
<th>Menetluse liik</th>
<th>Menetluse number</th>
<th>Kohtumenetlus</th>
<th>Toimingud</th>
</tr>
</thead>
<tbody>
<xsl:apply-templates select="Menetlused"/>
</tbody>
</table>
</td>
<td><xsl:apply-templates select="SeotudAsjad/Asi"/> </td>
</tr>
</xsl:template>
<!-- Asjas olevad menetlused -->
<xsl:template match="Menetlused">
<xsl:for-each select="./Menetlus">
<tr class="equal-width">
<td><xsl:value-of select="./Liik"/></td>
<td><xsl:value-of select="./MenetluseNr"/></td>
<td>
<xsl:choose >
<xsl:when test="../../@onKohtuasi='true'">Jah</xsl:when>
<xsl:otherwise>Ei</xsl:otherwise>
</xsl:choose>
</td>
<td>
<xsl:apply-templates select="./Toimingud"/>
</td>
</tr>
</xsl:for-each>
</xsl:template>
<!-- Menetluses olevad toimingud -->
<xsl:template match="Toimingud">
<xsl:variable name="toiminguidMenetluses" select="./Toiming"/>
<xsl:choose>
<xsl:when test="count($toiminguidMenetluses) != 0">
<ul>
<xsl:for-each select="./Toiming">
<li><xsl:value-of select="./Liik"/></li>
</xsl:for-each>
</ul>
</xsl:when>
<xsl:otherwise>
<em>Puuduvad</em>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- Asjaga seotud teised asjad -->
<xsl:template match="SeotudAsjad/Asi">
<xsl:variable name="seotudAsjaId" select="./@id"/>
<ul>
<xsl:for-each select="/Asjad/Asi">
<xsl:if test="./@id=$seotudAsjaId">
<li><xsl:value-of select="./AsjaNr"/></li>
</xsl:if>
</xsl:for-each>
</ul>
</xsl:template>
</xsl:stylesheet>