Tomislav Capan - Muzika Hr Dodatak Primjeri (IT Showoff)

10
© Copyright Muzika.hr 2010. IT ShowOff – Dodatak - Primjeri - 12. veljače 2010.

description

Primjeri iz predavanja Tomislava Capana

Transcript of Tomislav Capan - Muzika Hr Dodatak Primjeri (IT Showoff)

Page 1: Tomislav Capan - Muzika Hr Dodatak Primjeri (IT Showoff)

© Copyright Muzika.hr 2010.

IT ShowOff – Dodatak- Primjeri -

12. veljače 2010.

Page 2: Tomislav Capan - Muzika Hr Dodatak Primjeri (IT Showoff)

© Copyright Muzika.hr 2010.

2

NHIBERNATE

Page 3: Tomislav Capan - Muzika Hr Dodatak Primjeri (IT Showoff)

© Copyright Muzika.hr 2010.

3

NHibernate- Primjer mapiranja objekta -

namespace MuzikaHr.Core.Model{ public class City { /// <summary>Protected constructor. Used internally by NHibernate.</summary> protected City() { }

public City(int id) { Id = id; }

protected virtual int Id { get; set; } public virtual string Name { get; set; } public virtual Region AssociatedRegion { get; set; } public virtual IList<EventLocation> EventLocations { get; protected set; }

// -- domain logic methods here... }}

Page 4: Tomislav Capan - Muzika Hr Dodatak Primjeri (IT Showoff)

© Copyright Muzika.hr 2010.

4

NHibernate- Primjer mapiranja objekta -

<?xml version="1.0" encoding="utf-8" ?><hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"> <class name=“MuzikaHr.Core.Model.City, MuzikaHr.Core" table="grad" lazy="true"> <id name="Id" column="sifGrad"> <generator class="native" /> </id> <property name="Name" column="imeGrad" /> <many-to-one name="AssociatedRegion" column="sifRegija" class="MuzikaHr.Core.Model.Region, MuzikaHr.Core” /> <bag name="EventLocations" table="eventLocation" inverse="true" cascade="none"> <key column="cityId" /> <one-to-many class="MuzikaHr.Core.Model.EventLocation, MuzikaHr.Core" /> </bag> </class></hibernate-mapping>

Page 5: Tomislav Capan - Muzika Hr Dodatak Primjeri (IT Showoff)

© Copyright Muzika.hr 2010.

5

NHibernate- Primjer dohvata podataka -

namespace MuzikaHr.Data.NHibernate{ public class CityDao : AbstractNHibernateDao<City, int>, ICityDao { // -- constructor here

public List<City> GetCitiesByRegion(int regionId) { ICriteria criteria = NHibernateSession.CreateCriteria(typeof(City)) .Add(Expression.Eq("AssociatedRegion.Id", regionId)) .AddOrder(Order.Asc("Name"));

try { return criteria.List<City>() as List<City>; } catch (HibernateException exc) {...} } }}

Page 6: Tomislav Capan - Muzika Hr Dodatak Primjeri (IT Showoff)

© Copyright Muzika.hr 2010.

6

SPARK VIEW ENGINE

Page 7: Tomislav Capan - Muzika Hr Dodatak Primjeri (IT Showoff)

© Copyright Muzika.hr 2010.

7

Spark View EngineViewData Dictionary, lokalne varijable

Template:<s:viewdata Articles="IList[[MuzikaHr.Models.Article]]"/><s:var styles="new[] {‘left',’right'}"/><p s:each="var article in Articles" class="${styles[articleIndex%2]}“>${article.Title}</p>

Rezultat:<p class="left">Vangelis</p><p class="right">Simple Minds</p><p class="left">The Stranglers</p><p class="right">Michael Jackson (1958.–2009.)</p><p class="left">A Perfect Circle</p><p class="right">Suede (1989.–2003.)</p>

Page 8: Tomislav Capan - Muzika Hr Dodatak Primjeri (IT Showoff)

© Copyright Muzika.hr 2010.

8

Spark View EngineIterator (for-each), if-clause

• automatske iterator-varijable: Index, Count, IsFirst, IsLast

Template:<s:for each="var lineItem in CurrentInvoice.LineItems"> <tr><td>Item ${lineItemIndex + 1} of ${lineItemCount}</td> <td>${lineItem.Etc}</td></tr> <tr s:if="lineItemIsLast"><td>Grand total</td><td>${grandTotal}</td></tr></s:for>

Rezultat:<tr><td>Item 1 of 14</td><td>5</td></tr><tr><td>Item 2 of 14</td><td>2</td></tr><tr><td>Item 3 of 14</td><td>9</td></tr>...<tr><td>Item 14 of 14</td><td>14</td></tr><tr><td>Grand total</td><td>97</td></tr>

Page 9: Tomislav Capan - Muzika Hr Dodatak Primjeri (IT Showoff)

© Copyright Muzika.hr 2010.

9

Spark View EngineConditional attribute output

Template:<s:viewdata featuredHeading=“MuzikaHr.Models.Heading"/><s:viewdata Headings=“IList[[MuzikaHr.Models.Heading]]"/><ul><li s:each="var heading in Headings"> <a ... class="selected?{heading.Id==featuredHeading.Id}">${heading.Name}</a><li></ul>

Rezultat:<ul> <li><a href="...">Sve</a></li> <li><a href="...">Interview</a></li> <li><a href="..." class="selected">Biografije</a></li> <li><a href="...">B Scena</a></li> <li><a href="...">Zanimljivosti</a></li></ul>

Page 10: Tomislav Capan - Muzika Hr Dodatak Primjeri (IT Showoff)

© Copyright Muzika.hr 2010.

10

Spark View Engine: MacroMacro helper function:

• Metoda koja prima argumente i kao rezultat vraća string

Macro definicija:<s:macro name="ShowError" caption="string" message="string"><div class="message error"> <h3>${caption}</h3> <div>${message}</div> <% logger.Warn(caption); %></div></s:macro>

Macro poziv iz templatea:<s:viewdata errorMessage="string" /><h2>Place Order</h2><s:test if="!string.IsNullOrEmpty(errorMessage)"> ${ShowError("Failed to place order", errorMessage)}</s:test>...