Leemur

From ICO wiki
Jump to navigationJump to search

Meeskond "Leemur"

  • Liikmed
    • Marika Mäemets
    • Rasmus Hommuk
    • Mairo Puusepp
    • Einar Kivisalu

Idee

Et käesoleval hetkel on aktuaalne teedelagunemine ja augud tekivad igalepoole üleöö, siis on meie XML asfaldiaukude teemaline.

XML

XML fail

<?xml version="1.0" encoding="utf-8"?>
<teeauk>
  <tänavad>
    <tänav id = "CU00609359" tyyp = "tänav">
      <nimi>Raja</nimi>
      <pikkus yhik="meeter">856</pikkus>
      <augud>
        <auk id = "1">
          <xkoord>6584427.3</xkoord>
          <ykoord>537660</ykoord>
          <sügavus yhik="meeter">0.08</sügavus>
          <pindala yhik="ruutmeeter">0.4</pindala>
          <teataja id = "1">
            <nimi>Peeter Linnakodanik</nimi>
            <roll>autojuht</roll>
          </teataja>
          <avastatud>2013-02-15</avastatud>
          <likvideeritud>2013-04-10</likvideeritud>
        </auk>
        <auk id = "2">
          <xkoord>6584348.6</xkoord>
          <ykoord>537658.6</ykoord>
          <sügavus yhik="meeter">0.8</sügavus>
          <pindala yhik="ruutmeeter">0.54</pindala>
          <teataja id = "1">
            <nimi>Peeter Linnakodanik</nimi>
            <roll>autojuht</roll>
          </teataja>
          <avastatud>2013-02-15</avastatud>
        </auk>
      </augud>
    </tänav>
    <tänav id = "CU00464822" tyyp = "tänav">
      <nimi>Ehitajate tee</nimi>
      <pikkus yhik="meeter">23</pikkus>
      <augud>
        <auk id = "3">
          <xkoord>6584526.2</xkoord>
          <ykoord>537923.8</ykoord>
          <sügavus yhik="meeter">0.9</sügavus>
          <pindala yhik="ruutmeeter">0.5</pindala>
          <teataja id = "2">
            <nimi>Jüri Kõvaametnik</nimi>
            <roll>Maanteeameti kontroll</roll>
          </teataja>
          <avastatud>2013-02-15</avastatud>
          <likvideeritud>2013-02-15</likvideeritud>
        </auk>
        <auk id = "4">
          <xkoord>6584655.9</xkoord>
          <ykoord>537637.5</ykoord>
          <sügavus yhik="meeter">0.6</sügavus>
          <pindala yhik="ruutmeeter">0.7</pindala>
          <teataja id = "2">
            <nimi>Jüri Kõvaametnik</nimi>
            <roll>Maanteeameti kontroll</roll>
          </teataja>
          <avastatud>2013-02-15</avastatud>
          <likvideeritud>2013-02-15</likvideeritud>
        </auk>
        <auk id = "5">
          <xkoord>6584532</xkoord>
          <ykoord>537954.2</ykoord>
          <sügavus yhik="meeter">0.6</sügavus>
          <pindala yhik="ruutmeeter">1.7</pindala>
          <teataja id = "2">
            <nimi>Jüri Kõvaametnik</nimi>
            <roll>Maanteeameti kontroll</roll>
          </teataja>
          <avastatud>2013-02-15</avastatud>
          <likvideeritud>2013-02-15</likvideeritud>
        </auk>
      </augud>
    </tänav>
    <tänav id = "CU00464824" tyyp = "tänav">
      <nimi>Sõpruse puiestee</nimi>
      <pikkus yhik="meeter">4623</pikkus>
      <augud>
        <auk id = "6">
          <xkoord>6584621.1</xkoord>
          <ykoord>538267</ykoord>
          <sügavus yhik="meeter">0.11</sügavus>
          <pindala yhik="ruutmeeter">2.7</pindala>
          <teataja id = "2">
            <nimi>Jüri Kõvaametnik</nimi>
            <roll>Maanteeameti kontroll</roll>
          </teataja>
          <avastatud>2013-02-15</avastatud>
          <likvideeritud>2013-02-15</likvideeritud>
        </auk>
      </augud>
    </tänav>

    <tänav id = "CU00072238" tyyp = "tänav">
      <nimi>Ranna tee</nimi>
      <pikkus yhik="meeter">623</pikkus>
      <augud>
        <auk id = "11">
          <xkoord>6587966.2</xkoord>
          <ykoord>531049.2</ykoord>
          <sügavus yhik="meeter">0.07</sügavus>
          <pindala yhik="ruutmeeter">0.25</pindala>
          <teataja id = "3">
            <nimi>Mari Vallaametnik</nimi>
            <roll>Vallavalitsuse insener</roll>
          </teataja>
          <avastatud>2013-02-15</avastatud>
          <likvideeritud>2013-02-15</likvideeritud>
        </auk>
      </augud>
    </tänav>
    <tänav id = "CU00072411" tyyp = "tänav">
      <nimi>Ranna tee</nimi>
      <pikkus yhik="meeter">1023</pikkus>
      <augud>
        <auk id = "12">
          <xkoord>6587827.8</xkoord>
          <ykoord>531034.3</ykoord>
          <sügavus yhik="meeter">0.07</sügavus>
          <pindala yhik="ruutmeeter">0.75</pindala>
          <teataja id = "3">
            <nimi>Mari Vallaametnik</nimi>
            <roll>Vallavalitsuse insener</roll>
          </teataja>
          <avastatud>2013-02-15</avastatud>
          <likvideeritud>2013-02-15</likvideeritud>
        </auk>
      </augud>
    </tänav>
    <tänav id = "CU00069699" tyyp = "maantee">
      <nimi>Klooga mnt</nimi>
      <pikkus yhik="meeter">623</pikkus>
      <augud>
        <auk id = "13">
          <xkoord>6588082</xkoord>
          <ykoord>531159.8</ykoord>
          <sügavus yhik="meeter">0.16</sügavus>
          <pindala yhik="ruutmeeter">0.75</pindala>
          <teataja id = "3">
            <nimi>Mari Vallaametnik</nimi>
            <roll>Vallavalitsuse insener</roll>
          </teataja>
          <avastatud>2013-02-15</avastatud>
          <likvideeritud>2013-02-15</likvideeritud>
        </auk>
      </augud>
    </tänav>

    <tänav id = "CU02094396" tyyp = "tänav">
      <nimi>Nõlvaku tänav</nimi>
      <pikkus yhik="meeter">823</pikkus>
      <augud>
        <auk id = "11">
          <xkoord>6579325.4</xkoord>
          <ykoord>536312.7</ykoord>
          <sügavus yhik="meeter">0.11</sügavus>
          <pindala yhik="ruutmeeter">1.55</pindala>
          <teataja id = "4">
            <nimi>Ülo Vallavanem</nimi>
            <roll>Vallavanem</roll>
          </teataja>
          <avastatud>2013-02-15</avastatud>
          <likvideeritud>2013-02-15</likvideeritud>
        </auk>
      </augud>
    </tänav>
  </tänavad>

</teeauk>

XSD fail

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="XMLSchema1"
    targetNamespace="http://tempuri.org/teeauk.xsd"
    elementFormDefault="qualified"
    xmlns="http://tempuri.org/teeauk.xsd"
    xmlns:mstns="http://tempuri.org/teeauk.xsd"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
  <xs:simpleType name="yhikpikkus">
    <xs:restriction base="xs:string">
      <xs:enumeration value="meeter"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="yhiksygavus">
    <xs:restriction base="xs:string">
      <xs:enumeration value="meeter"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="yhikpindala">
    <xs:restriction base="xs:string">
      <xs:enumeration value="ruutmeeter"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="teeauk">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs ="0" maxOccurs="unbounded" name="tänavad">
          <xs:complexType>
            <xs:choice>
              <xs:element minOccurs ="0" maxOccurs="unbounded" name="tänav">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="nimi" type="xs:string"></xs:element>
                    <xs:element name="pikkus">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:extension base="xs:int">
                            <xs:attribute name="yhik" type="yhikpikkus"/>
                          </xs:extension>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="augud">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element maxOccurs="unbounded" name="auk">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element name="xkoord" type="xs:double"></xs:element>
                                <xs:element name="ykoord" type="xs:double"></xs:element>
                                <xs:element name="sügavus">
                                  <xs:complexType>
                                    <xs:simpleContent>
                                      <xs:extension base="xs:double">
                                        <xs:attribute name="yhik" type="yhiksygavus"/>
                                      </xs:extension>
                                    </xs:simpleContent>
                                  </xs:complexType>
                                </xs:element>
                                <xs:element name="pindala">
                                  <xs:complexType>
                                    <xs:simpleContent>
                                      <xs:extension base="xs:double">
                                        <xs:attribute name="yhik" type="yhikpindala"/>
                                      </xs:extension>
                                    </xs:simpleContent>
                                  </xs:complexType>
                                </xs:element>
                                <xs:element name="teataja">
                                  <xs:complexType>
                                    <xs:sequence>
                                      <xs:element name="nimi" type="xs:string"></xs:element>
                                      <xs:element name="roll" type="xs:string"></xs:element>
                                    </xs:sequence>
                                    <xs:attribute name="id" type="xs:int"></xs:attribute>
                                  </xs:complexType>
                                </xs:element>
                                <xs:element name="avastatud" type="xs:date"></xs:element>
                                <xs:element name="likvideeritud" type="xs:date" minOccurs ="0"></xs:element>
                              </xs:sequence>
                              <xs:attribute name="id" type="xs:int"></xs:attribute>
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                  <xs:attribute name="id" type="xs:string"></xs:attribute>
                  <xs:attribute name="tyyp" type="xs:string"></xs:attribute>
                </xs:complexType>
              </xs:element>
            </xs:choice>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

XSLT failid

Asfaldiaukude tabel

<?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"/>
  <xsl:template match="/">
    <html>
      <head>
        <title>Asfaldiaugud üle kogu maa</title>
      </head>
      <body>
        <h1>Asfaldiaukude nimekiri</h1>
        <ul>
          <xsl:for-each select="/teeauk/tänavad/tänav">
            <li>
              <xsl:value-of select="nimi"/>
              <xsl:text> </xsl:text>
              <xsl:value-of select="@tyyp"/>
              <xsl:text>-</xsl:text>
              <xsl:value-of select="pikkus"/>
              <xsl:value-of select="@yhik"/>
              <xsl:text>-</xsl:text>
                <table border="1">
                  <th>
                    <td>Koordinaadid</td>
                    <td>Sügavus ja pindlala</td>
                    <td>Teavitaja</td>
                    <td>Avastatud</td>
                    <td>Likvideeritud</td>
                  </th>
                  <xsl:for-each select="augud/auk">
                    <tr>
                      <td>
                        <xsl:value-of select="@id" />
                      </td>
                      <td>
                        <xsl:text>X </xsl:text>
                        <xsl:value-of select="xkoord" />
                        <br/>
                        <xsl:text>Y </xsl:text>
                        <xsl:value-of select="ykoord" />
                      </td>
                      <td>
                        <xsl:value-of select="sügavus" />
                        <br/>
                        <xsl:value-of select="pindala" />
                      </td>
                      <td>
                        <xsl:value-of select="teataja/nimi" />
                        <br/>
                        <xsl:value-of select="teataja/roll" />
                      </td>
                      <td>
                        <xsl:value-of select="avastatud" />
                      </td>
                      <td>
                        <xsl:value-of select="likvideeritud" />
                        <xsl:text>.</xsl:text>
                      </td>
                    </tr>
                  </xsl:for-each>
                </table>
            </li>
          </xsl:for-each>
        </ul>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

Aukudest teatajad

<?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"/>
  <xsl:template match="/">
    <html>
      <head>
        <title>Asfaldiaugud üle kogu maa</title>
      </head>
      <body>
        <h1>Aukudest teatajate nimekiri</h1>
        <ul>
          <xsl:for-each select="/teeauk/tänavad/tänav/augud/auk/teataja">
            <li>
              <xsl:value-of select="./nimi"/>
              <xsl:text> - </xsl:text>
              <xsl:value-of select="./roll"/>
              <xsl:text> </xsl:text>
            </li>
          </xsl:for-each>
        </ul>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

Tänavate nimekiri

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes"/>
  <xsl:template match="/">
    <html>
      <head>
        <title>Teede/tänavate nimekiri</title>
      </head>
      <body>
        <h1>Teede/tänavate nimekiri</h1>
        <ul>
          <xsl:for-each select="/teeauk/tänavad/tänav">
            <li>
              <xsl:value-of select="./nimi"/>
              <xsl:text> - </xsl:text>
              <xsl:value-of select="./pikkus"/>
              <xsl:text> meetrit </xsl:text>
            </li>
          </xsl:for-each>
        </ul>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

Retsensioonid

XML

XML

XML-failis on 6 loogilist dimensiooni. Tasemete kaupa välja kirjutatuna: tase 1: teeauk tase 2: tänavad tase 3: tänav (atribuudid: tüüp) tase 4: nimi, pikkus, augud tase 5: auk tase 6: xkoord, ykoord, sügavus, pindala, teataja, avastatud, likvideeritud. Atribuute on kasutatud nõuetele vastavas koguses. Taseme "tänav" juurde on loodud atribuut "tyyp", mis võib olla kas "tänav" või "maantee". Rühma Leemur oleks võinud paari sõnaga kommenteerida, miks on tänava ja maantee eristamine oluline.

XSD

XSD-faili põhjal võib aukudega tänavaid ka üldse mitte eksisteerida või olla piiramata arv. Põhimõtteliselt võiks tänavate arv olla piiratud mõne mõistliku numbriga, aga samas ei tohiks ka piiramata arv olla probleem. Dimensioon "tänavad" sisaldab järgmise tasemena elemente tüübist "tänav". Miks on sealjuures taseme "tänavad" elementide kirjeldamiseks kasutatud tag'i "choise", mille sees on ainult üks element? Dimensiooni "tänavad" elemendid peavad olema kirjeldatud kindlas järjekorras (nimi, pikkus, augud). Koodi loetavuse seisukohalt on hea, kui see nii on. Atribuutide kirjelduses võiks ehk augu pindala ja sügavus olla lubatud kirjeldada ka vastavalt sentimeetrites ja ruutsentimeetrites.

XSL

XSL-faile on kokku 3, mida on rohkem kui minimaalselt nõutud- 2. Asfaldiaukude tabel Tabelis on augu id, koordinaadid, pindala, teataja nimi ja roll, avastamise ja likvideerimise kuupäev. Aukudest teatajate tabel Tabelis näidatakse teatajate nimesid ja rollisid. Tänavate tabel Näidatakse tänavanimesid koos tänavate pikkustega. Mõne sõnaga võiks ehk kirjeldada, millist eesmärki html-kujule teisendatud tabelid kasutaja seisukohast võiksid täita.

Kokkuvõtvalt võib öelda, et meeskond "Leemur" on oma XML-, XSD -ja XSL-failid koostanud loogiliselt ja hästi struktureeritult.

Meeskond TeravC


Tiim "Leemur" on pakkunud välja XML liidese definitsiooni tänavaaukude kohta käiva info edastamiseks. Teema on igati ajakohane ning antud lahendus omab ka reaalset rakendust näiteks autojuhi GPS tarkvaras. Iseasi, et andmemahu kokkuhoiu mõttes võibolla oleks kasulik terved kohad edastada aukude asemel.


Esitatud lahendus vastab kodutöös nõutud tingimustele ja ootustele keerukuse osas ning isegi ületab neid. XML faili struktuur on arusaadav ja lisakommentaare ei vaja. Näidisena välja pakutud XSLT abil õnnestub genereerida väljund nii HTML kui XML formaadis.


Andmete grupeerimine tänavate kaupa tundub mõistlik arvestades potentsiaalse info tarbija vajadust saada infot parasjagu läbitava tänava kohta. Tänava pikkuse esitamise vajadusest ei saa hästi aru. Aukudel on ka omadus taastekkida, antud struktuur võimaldab aga esitada ühe(viimase?) teataja ning parandaja. Rakenduse võib muidugi luua selliselt, et uuesti teatades muutub parandaja väli väljund XML'is uuesti tühjaks. samas oleks hea info aukude kohta, mis pidevalt lagunevad ja parandatud saavad.


XML välja nimetuses täpitähtede kasutamine ei pruugi olla alati hea mõte, ehkki on loomulikult lubatud.

Meeskond Hops


Veebiteenus

Jätkame asfaldiaukude teemaga, kuna tänavate seisukord on endiselt päevakorral olev teema ja ei ole näha, et see aktuaalsuse minetaks.

Veebiteenus peab olema valmis ja ja wikilehel kirjeldatud hiljemalt 20. mai 2013.

Retsensioonid veebiteenuste kohta peavad tehtud olema 27. mai 2013

  • Loodav veebiteenus peab võimaldama:
    • Teenuse pakkumist
    • Teenuse kasutajate tuvastamist ning haldamist
    • Teenuse kasutajate ja kasutusstatistika üle arve pidamist kasutajate lõikes

Soovitav on luua teenus (FE) ja teenuse seadistamiseks ning kasutajate haldamiseks mõeldud rakendus (BE).

plaanitav funktsionaalsus

 - teha teenus, mis väljastab viimased lisatud augud
 - teha teenus, mis väljastab valitud tänaval asuvad augud
 - teha teenus, mis väljastab kõige suurema aukude arvuga tänavad (suhtes pikkusega)
 - teha teenus, mis ...
 - teha teenus, mis ...

Tööd

 - Versioonihaldus ülesse seada - Asjassepühendatute jaoks paikneb see siin: https://leemur.visualstudio.com/ 15.05.2013.
 - Andmebaasiserver töökorda seada (OK - Rasmus). Installeeritud MS SQL Express 12 (version 11.0.3128.0) 16.05.2013
 - Domeeni mudel valmis teha - OK
 - EF raamistik paika () - OK
 - Luua standard Repod iga objekti klassi kohta (I{KlassiNimi}Repository + {KlassiNimi}Repository)
    
 - Funktsionaalsuse teostus (Controllers) (Get + Post + Put + Delete) - OK
    
 - Autentimine, Autoriseerimine - veidi problemaatiline.

Klientrakendus

Klientrakendused peavad olema valmis ja wikilehel kirjeldatud hiljemalt 10. juuni 2013. Retsensioonid veebiteenuste kohta peavad tehtud olema 15. juuni 2013

Klientrakendus mõnele olemasolevale veebiteenusele, võib olla teostatud veebirakendusena, Silverlight, WPF või vormirakendusena.

Variant1: teha klientrakendus enda loodud veebiteenusele