Meeskond "GAP"

From ICO wiki
Jump to navigationJump to search

Liikmed

  • Priit Siimo - projektijuht, klientrakendus
  • Gaspar Karm - veebiteenus
  • Andrus Reedla - veebiteenus, andmemudel


Planeering

  • Arenduskeskond - Visual Studio 2010
  • Kliendirakendus valmib Asp.net projektina
  • Veebiteenus - WCF
  • Andmebaasina kasutame SQL2008
  • Andmemudeli koostamiseks kasutasime QSEE Superlite-i
  • Meeskonna suhtlus vahendiks on Skype ning versioonihaldustarkvara TortoiseSVN ning MyVersionControl


Teenus

Tegemist on universaalse tarkvaraga hulgifirmadele. Näidiseks on võetud arvutikaupade hulgimüügiga tegelev firma, kellel on tosin edasimüüjat. Hulgifirmale valmistatakse tarkvara, mis võimaldab temal omakorda oma klientidele (arvutikaupade edasimüüjatele) pakkuda tootevaliku teenust.

St, et hulgifirma klient, ei pea hakkama ise oma veebilehele sisestama pakutavaid tooteid, vaid kasutab selleks hulgifirma poolt pakutavat teenust. Läbi teenuse on võimalik pärida kõik tellitavad tooted, koos piltide, kirjelduse, hindade ja muu vajalikuga.

Võit mõlemale poolele:

1. Edasimüüjad ei pea enam tegelema andmete uuendamisega ja nende kliendid saavad tellida alati kõige uuemaid tooteid.

2. Hulgimüüjal tekib suur konkurentsieelis võrreldes teiste pakkujatega.


Veebiteenused

Kasutajatega seotud meetodid:

  • String GetData()
  • ICollection<Product> GetProducts(int cat_id) - meetod tagastab listi vastava kategooria toodetega. Sisendparameetriks kategooria id.
  • Product GetProduct(int id) - meetod tagastab toote info. Sisendparameetriks toote id.
  • ICollection<Category> GetCategories() - meetod tagastab tootegruppide listi.
  • ICollection<Comment> GetProductComments(int prod_id) - meetod tagastab tootele lisatud kommentaarid. Sisendparameetriks toote id.
  • void SetProductComment(Comment c) - meetod lisab tootele kommentaari.

Administreerimisega seotd meetodid:

  • void InsertProduct(Product p) - meetod lisab andmebaasi uue toote. Parameetriks lisatav toode.
  • void UpdateProduct(Product p) - meetod uuendab andmebaasis toote infot. Parameetriks vaadeldav toode.
  • void DeleteProduct(int prod_id) - meetod kustutab andmebaasist toote. Sisendparameetriks toote id.
  • void InsertProductGroup(Category cat) - meetod lisab andmebaasi uue tootegrupi. Parameetriks lisatav tootegrupp.
  • void DeleteProductGroup(int cat_id) - meetod kustutab tootegrupi andmebaasist. Sisendparameetriks tootegrupi id.
  • int GetStatistic() - meetod tagastab üldise meetodite kasutamise statistika.
  • Object GetStatistic(string name, string method) - meetod tagastab kliendi meetodite kasutamise statistika.

Kood

Veebiteenus [1]

Kliendirakendus [2]

Andmemudel

XML

<?xml version="1.0" encoding="utf-8"?>
<TeenusedKaubad>
  <TeenusKaup>
    <Nimetused>
      <Nimetus keel =""></Nimetus>
    </Nimetused>
    <Kood></Kood>
    <Kirjeldused>
      <Kirjeldus>
        <Keel></Keel>
        <Tekst></Tekst>
      </Kirjeldus>
    </Kirjeldused>
    <Hinnad>
      <Hind>
        <HinnaGrupp></HinnaGrupp>
        <Valuuta></Valuuta>
        <Vaartus></Vaartus>
      </Hind>
    </Hinnad>
    <Kogus></Kogus>
    <Grupid>
      <Grupp></Grupp>
    </Grupid>
    <Parameetrid>
      <Parameeter>
        <Nimetus></Nimetus>
        <Vaartus></Vaartus>
        <Yhik></Yhik>
      </Parameeter>
    </Parameetrid>
    <Pildid>
      <Pilt>
        <Nimi></Nimi>
        <Aadress></Aadress>
      </Pilt>
    </Pildid>
    <Kommentaarid>
      <Kommentaar>
        <Autor></Autor>
        <Pealkiri></Pealkiri>
        <Tekst></Tekst>
        <Hinnang></Hinnang>
        <Aeg>
          <Aasta></Aasta>
          <Kuu></Kuu>
          <KuuPaev></KuuPaev>
          <Tund></Tund>
          <Minut></Minut>
        </Aeg>
      </Kommentaar>
    </Kommentaarid>
  </TeenusKaup>
</TeenusedKaubad>

XML Schema

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="TeenusedKaubad">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="TeenusKaup">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Nimetused">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="Nimetus">
                      <xs:complexType>
                        <xs:attribute name="keel" type="xs:string" use="required" />
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="Kood" />
              <xs:element name="Kirjeldused">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="Kirjeldus">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="Keel" />
                          <xs:element name="Tekst" />
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="Hinnad">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="Hind">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="HinnaGrupp" />
                          <xs:element name="Valuuta" />
                          <xs:element name="Vaartus" />
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="Kogus" />
              <xs:element name="Grupid">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="Grupp" />
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="Parameetrid">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="Parameeter">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="Nimetus" />
                          <xs:element name="Vaartus" />
                          <xs:element name="Yhik" />
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="Pildid">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="Pilt">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="Nimi" />
                          <xs:element name="Aadress" />
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="Kommentaarid">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="Kommentaar">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="Autor" />
                          <xs:element name="Pealkiri" />
                          <xs:element name="Tekst" />
                          <xs:element name="Hinnang" />
                          <xs:element name="Aeg">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element name="Aasta" />
                                <xs:element name="Kuu" />
                                <xs:element name="KuuPaev" />
                                <xs:element name="Tund" />
                                <xs:element name="Minut" />
                              </xs:sequence>
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </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">

  <xsl:template match="/">
    <html>
      <body>
        <head>
          <style>
            table{
            font-family:"Verdana";
            font-size:12;
            border-width: 1px;
            border-spacing: 0px;
            border-style: outset;
            border-color: green;
            border-collapse: collapse;
            }

            th{
            border-width: 2px;
            padding: 4px;
            border-style: hidden;
            border-color: green;
            background-color: #daa520;
            -moz-border-radius: 4px 5px 4px 5px;
            }
            td{
            border-width: 1px;
            padding: 4px;
            border-style: solid;
            border-color: #f5f000;
            background-color: #f5f5dc;
            -moz-border-radius: 3px 3px 3px 3px;
            }
            .subTable{
            border-width: 0px;
            }
            .nimetus {
            font-weight: bold;
            }
          </style>
        </head>

        <h2>Kaubad poes</h2>
        <table>
          <tr>
            <th>Tootegrupp</th>
            <th>Toode</th>
            <th>Toote kood</th>
            <th>Kirjeldus</th>
            <th>Hind</th>
            <th>Kogus</th>
            <th>Parameetrid</th>
            <th>Kommentaarid</th>
          </tr>
          <xsl:for-each select="TeenusedKaubad/TeenusKaup">
            <tr>

              <td>
                <xsl:for-each select="Grupid/Grupp">
                  /<xsl:value-of select="Nimetus
"/>
                </xsl:for-each>
              </td>

              <td class="nimetus">
                <xsl:for-each select="Nimetused">
                  <xsl:value-of select="Nimetus"/>
                </xsl:for-each>
              </td>

              <td>
                <xsl:value-of select="Kood"/>
              </td>

              <td>
                <xsl:for-each select="Kirjeldused/Kirjeldus">
                  <table class ="subTable">
                    <tr>
                      <dt>
                        <xsl:value-of select="Tekst"/>
                        <!--(<xsl:value-of select="Keel"/>)-->
                      </dt>
                    </tr>
                  </table>
                </xsl:for-each>
              </td>

              <td>
                <xsl:for-each select="Hinnad/Hind">
                  <table class ="subTable">
                    <tr>
                      <dt>
                        *<xsl:value-of select="HinnaGrupp"/>&nbsp;
                        <xsl:value-of select="Vaartus"/>&nbsp;
                        (<xsl:value-of select="Valuuta"/>)
                      </dt>
                    </tr>
                  </table>
                </xsl:for-each>
              </td>

              <td align="center">
                <xsl:value-of select="Kogus"/>
              </td>

              <td>
                <xsl:for-each select="Parameetrid/Parameeter">
                  <table class ="subTable">
                    <tr>
                      <dt>
                        <xsl:value-of select="Nimetus"/>:
                        <xsl:value-of select="Vaartus"/>
                        <xsl:value-of select="Yhik"/>
                      </dt>
                    </tr>
                  </table>
                </xsl:for-each>
              </td>

              <td>
                <xsl:for-each select="Kommentaarid/Kommentaar">
                  <table class ="subTable">
                    <tr>
                      <dt>
                        <xsl:value-of select="Pealkiri"/><br />
                        <xsl:value-of select="Tekst"/><br />
                        <xsl:value-of select="Autor"/>: &nbsp;
                        <xsl:value-of select="Aeg/Tund"/>:
                           <xsl:value-of select="Aeg/Minut"/>&nbsp;
                           <xsl:value-of select="Aeg/KuuPaev"/>/
                           <xsl:value-of select="Aeg/Kuu"/>/
                           <xsl:value-of select="Aeg/Aasta"/>
                      </dt>
                    </tr>
                  </table>
                </xsl:for-each>
              </td>

            </tr>
          </xsl:for-each>
        </table>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

Esmases veebiteenuse versioonis kasutatav andmemudel

Klientrakendus


Teenuse API