GWT Frameworky  Ujorm 1.20 v prostředí Ext GWT           (Sencha) Google User Groups, Praha 9.6.2011, Autor: Pavel Ponec
ÚvodUjorm je "lehko-tonážní" framework se silnou typovoukontrolou postavenou na Java <generikách>, který nabízí(prostředni...
MotivaceProč použít Ujorm ? ● výčet Properties (podoba s Enum + PropertyDescriptor)    ○ překlepy odhalí kompilátor    ○ d...
Ujorm pro GXTDva moduly:    ● Ujo-gxt-core       ○ nabzí klientskou verzi UJO objektů (Cujo)       ○ cache Property vlastn...
Ujorm pro GXTDva moduly:    ● Ujo-gxt-core       ○ nabzí klientskou verzi UJO objektů (Cujo)       ○ cache Property vlastn...
Class model Ujo + PropertyInstance Ujo  ● obsahuje data  ● nabízí seznam Properties  ● může splňovat specifikaci JavaBeans...
Class model Ujo + PropertyInstance Ujo...Instance UjoProperty  ● poskytuje meta-data       ○ název a       ○ typ property ...
GXT: ModelDataModelData je datový model grafických GXT komponent   - jedna instance reprezentuje například: jeden řádek ta...
GXT: ModelDataModelData je datový model grafických GXT komponent   - příkladem použití je jeden řádek tabulkyUjorm: CujoCu...
Příklad implementace Cujo/UjoUkázka implementace Cujo pomocí abstraktní třídy:  public class Employee extends AbstractCujo...
Příklad implementace Cujo/UjoUkázka implementace Cujo pomocí abstraktní třídy:  public class Employee extends AbstractCujo...
Ukázka práce s datyJak zapsat hodnoty ?  GXT: ModelData   ModelData person = new ModelData();// Write:person.set("ID", 7L)...
Ukázka práce s datyJak zapsat hodnoty ?  GXT: ModelData                         Ujorm: Cujo                               ...
Ukázka práce s datyJak načíst data ?  GXT: ModelData                            Ujorm: Cujo                               ...
Ukázka práce s datyJak načíst data ?  GXT: ModelData                            Ujorm: Cujo                               ...
Ukázka práce s datyJak na atributy relačních objektů ?  GXT: ModelData                 Ujorm: Cujo                        ...
Ukázka práce s datyJak na atributy relačních objektů ?  GXT: ModelData                 Ujorm: Cujo                        ...
Kopie hodnot           Jak přepsat hodnoty       z jednoho objektu do druhého                   ?
Kopie hodnotJak přepsat hodnoty do druhého objektu ? ModelData (GXT):   ModelData emplA = findEmployee();ModelData emplB =...
Kopie hodnotJak přepsat hodnoty do druhého objektu ? ModelData (GXT):              Cujo (Ujorm):                          ...
Obnova defaultních hodnot        Jak obnovit defaultní hodnoty                  v objektu                                 ...
Obnova defaultních hodnotJak obnovit defaultní hodnoty objektu ? ModelData (GXT):   ModelData employee = findEmployee();fo...
Obnova defaultních hodnotJak obnovit defaultní hodnoty objektu ? ModelData (GXT):   ModelData employee = findEmployee();fo...
Obnova defaultních hodnotJak obnovit defaultní hodnoty objektu ? ModelData (GXT):               Cujo (Ujorm):             ...
CriterionTest platnosti (validace) objektu v run-time ModelData (GXT):        Cujo (Ujorm):                        import ...
Mapování klientských objektůServerová strana: Ujo   Klientská strana: Cujo
Criterion v databázovém dotazuJak sestavit DB dotaz pro GRID na straně klienta ?  import static CEmployee.*;  CujoProperty...
Referenční aplikace Ujorm:  ● eCall  ● ÚZEI   ● Inspectime (funkční demo: http://inspectime.com)
Dotazy       ?
GWT Frameworky: Ujorm      Děkuji za pozornost Odkazy:  ● Ujorm: http://ujorm.org  ● Ext GWT: http://www.sencha.com/produc...
Upcoming SlideShare
Loading in...5
×

Gwt frameworky GXT + UJORM

591

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
591
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Gwt frameworky GXT + UJORM

  1. 1. GWT Frameworky  Ujorm 1.20 v prostředí Ext GWT (Sencha) Google User Groups, Praha 9.6.2011, Autor: Pavel Ponec
  2. 2. ÚvodUjorm je "lehko-tonážní" framework se silnou typovoukontrolou postavenou na Java <generikách>, který nabízí(prostřednictvím svých modulů) služby:  ● perzitence objektů do relačích databází (ORM služby) ● integrace s Ext GWT projektu Sencha (dále jen GXT) ● API + serializace objektů do/z textových formátů Ujorm pracuje s objekty implementující 2 interface:Ujo + Property
  3. 3. MotivaceProč použít Ujorm ? ● výčet Properties (podoba s Enum + PropertyDescriptor) ○ překlepy odhalí kompilátor ○ dostupná meta-data ○ vhodné pro data binding ● nadstandardní typová kontrola ● bezpečný refactoring zdrojového kódu ● snadná tvorba generických komponent ● používání UjoProperty je zábavné :) Úspora zdrojů: ● úspora času ● úspora finančních nákladů ● vyšší produktivita
  4. 4. Ujorm pro GXTDva moduly: ● Ujo-gxt-core ○ nabzí klientskou verzi UJO objektů (Cujo) ○ cache Property vlastností (mandatory, length) ○ podpora pro mapování klientských UJO objektů na serverové ○ nástroj pro automatizovanou konverzi klientských objektů  ○ na serverové (doménové objekty, db dotazy) 
  5. 5. Ujorm pro GXTDva moduly: ● Ujo-gxt-core ○ nabzí klientskou verzi UJO objektů (Cujo) ○ cache Property vlastností (mandatory, length) ○ podpora pro mapování klientských UJO objektů na serverové ○ nástroj pro automatizovanou konverzi klientských objektů  ○ na serverové (doménové objekty, db dotazy)  ● Ujo-gxt-crud ○ grafické komponenty podporující DB operace: ■ Create ■ Read ■ Update ■ Delete
  6. 6. Class model Ujo + PropertyInstance Ujo ● obsahuje data ● nabízí seznam Properties ● může splňovat specifikaci JavaBeans (ale nemusí)
  7. 7. Class model Ujo + PropertyInstance Ujo...Instance UjoProperty ● poskytuje meta-data  ○ název a  ○ typ property ○ defaultní hodnotu ○ defaultní směr řazení ● nabízí řetězení s jinou UjoProperty ● a různé užitečné metody  ● včetně metod pro čtení a zápis ● statická neměnná instance (immutable object)
  8. 8. GXT: ModelDataModelData je datový model grafických GXT komponent   - jedna instance reprezentuje například: jeden řádek tabulky
  9. 9. GXT: ModelDataModelData je datový model grafických GXT komponent   - příkladem použití je jeden řádek tabulkyUjorm: CujoCujo je klientská verze rozhraní Ujo pro GXTCujo je potomkem ModelData !
  10. 10. Příklad implementace Cujo/UjoUkázka implementace Cujo pomocí abstraktní třídy: public class Employee extends AbstractCujo implements Serializable {     /** Property List */     private static final CujoPropertyList pList  = list(Employee.class);       @Override public CujoPropertyList readProperties() {         return pList;     }
  11. 11. Příklad implementace Cujo/UjoUkázka implementace Cujo pomocí abstraktní třídy: public class Employee extends AbstractCujo implements Serializable {     /** Property List */     private static final CujoPropertyList pList  = list(Employee.class);     /** Unique key */     public static final CujoProperty<Employee, Long> ID  = pList.newProperty("id", Long.class);     /** User name */     public static final CujoProperty<Employee, String> NAME                 = pList.newProperty("name", String.class);     /** Hourly wage */     public static final CujoProperty<Employee, Double> WAGE = pList.newPropertyDef("wage", 0.0);     /** A reference to Company */     public static final CujoProperty<Employee, Company> COMPANY                 = pList.newProperty("company", Company.class);       @Override public CujoPropertyList readProperties() {         return pList;     }
  12. 12. Ukázka práce s datyJak zapsat hodnoty ?  GXT: ModelData   ModelData person = new ModelData();// Write:person.set("ID", 7L);person.set("NAME", "Pavel");person.set("WAGE", 20.00);person.set("COMPANY", new Company()); 
  13. 13. Ukázka práce s datyJak zapsat hodnoty ?  GXT: ModelData Ujorm: Cujo          import static Employee.*  import static Company.CITY;ModelData person = new ModelData(); Employee person = new Employee();// Write: // Write:person.set("ID", 7L); person.set(ID, 7L);person.set("NAME", "Pavel"); person.set(NAME, "Pavel");person.set("WAGE", 20.00); person.set(WAGE, 20.00);person.set("COMPANY", new Company()); person.set(COMPANY, new Company()); 
  14. 14. Ukázka práce s datyJak načíst data ?  GXT: ModelData Ujorm: Cujo          import static Employee.*  import static Company.CITY;ModelData person = new ModelData(); Employee person = new Employee();// Write: // Write:person.set("ID", 7L); person.set(ID, 7L);person.set("NAME", "Pavel"); person.set(NAME, "Pavel");person.set("WAGE", 20.00); person.set(WAGE, 20.00);person.set("COMPANY", new Company()); person.set(COMPANY, new Company());// Read: Ujorm:Long id = person.get("ID");String name = person.get("NAME");double wage = person.get("WAGE");Company address = person.get("COMPANY"); 
  15. 15. Ukázka práce s datyJak načíst data ?  GXT: ModelData Ujorm: Cujo          import static Employee.*  import static Company.CITY;ModelData person = new ModelData(); Employee person = new Employee();// Write: // Write:person.set("ID", 7L); person.set(ID, 7L);person.set("NAME", "Pavel"); person.set(NAME, "Pavel");person.set("WAGE", 20.00); person.set(WAGE, 20.00);person.set("COMPANY", new Company()); person.set(COMPANY, new Company());// Read: // Read:Long id = person.get("ID"); Long id = person.get(ID);String name = person.get("NAME"); String name = person.get(NAME);double wage = person.get("WAGE"); double wage = person.get(WAGE);Company address = person.get("COMPANY"); Company address = person.get(COMPANY); 
  16. 16. Ukázka práce s datyJak na atributy relačních objektů ?  GXT: ModelData Ujorm: Cujo          import static Employee.*  import static Company.CITY;ModelData person = new ModelData(); Employee person = new Employee();// Write: // Write:person.set("ID", 7L); person.set(ID, 7L);person.set("NAME", "Pavel"); person.set(NAME, "Pavel");person.set("WAGE", 20.00); person.set(WAGE, 20.00);person.set("COMPANY", new Company()); person.set(COMPANY, new Company());person.set("COMPANY.CITY", "Prague"); // No// Read: // Read:Long id = person.get("ID"); Long id = person.get(ID);String name = person.get("NAME"); String name = person.get(NAME);double wage = person.get("WAGE"); double wage = person.get(WAGE);Company address = person.get("COMPANY"); Company address = person.get(COMPANY);String cn = person.get("COMPANY.CITY"); // No 
  17. 17. Ukázka práce s datyJak na atributy relačních objektů ?  GXT: ModelData Ujorm: Cujo          import static Employee.*  import static Company.CITY;ModelData person = new ModelData(); Employee person = new Employee();// Write: // Write:person.set("ID", 7L); person.set(ID, 7L);person.set("NAME", "Pavel"); person.set(NAME, "Pavel");person.set("WAGE", 20.00); person.set(WAGE, 20.00);person.set("COMPANY", new Company()); person.set(COMPANY, new Company());person.set("COMPANY.CITY", "Prague"); // No person.set(COMPANY.add(CITY), "Prague";// Read: // Read:Long id = person.get("ID"); Long id = person.get(ID);String name = person.get("NAME"); String name = person.get(NAME);double wage = person.get("WAGE"); double wage = person.get(WAGE);Company address = person.get("COMPANY"); Company address = person.get(COMPANY);String cn = person.get("COMPANY.CITY"); // No  String cn = person.get(COMPANY.add(CITY);
  18. 18. Kopie hodnot Jak přepsat hodnoty  z jednoho objektu do druhého   ?
  19. 19. Kopie hodnotJak přepsat hodnoty do druhého objektu ? ModelData (GXT):   ModelData emplA = findEmployee();ModelData emplB = new ModelData();for (String p : emplA.getPropertyNames()) {     Object o = emplA.get(p);     emplB.set(p, o);}GWT.log("Employee B: " + emplB);
  20. 20. Kopie hodnotJak přepsat hodnoty do druhého objektu ? ModelData (GXT): Cujo (Ujorm):            ModelData emplA = findEmployee(); Cujo emplA = findEmployee();ModelData emplB = new ModelData(); Cujo emplB = employee1.createInstance();for (String p : emplA.getPropertyNames())  for (CujoProperty p : emplA.readProperties()) { {     Object o = emplA.get(p);      p.copy(emplA, emplB);     emplB.set(p, o); }}  GWT.log("Employee B: " + emplB); GWT.log("Employee B: " + emplB);
  21. 21. Obnova defaultních hodnot Jak obnovit defaultní hodnoty  v objektu      ?
  22. 22. Obnova defaultních hodnotJak obnovit defaultní hodnoty objektu ? ModelData (GXT):   ModelData employee = findEmployee();for (String p : employee1.getPropertyNames()) {     Object o = employee1.get(p);     p.set(p, null); // ??}GWT.log("Employee: " + employee);
  23. 23. Obnova defaultních hodnotJak obnovit defaultní hodnoty objektu ? ModelData (GXT):   ModelData employee = findEmployee();for (String p : employee1.getPropertyNames()) {     Object o = employee1.get(p);     p.set(p, null); // ??     p.set(p, getDefaultForProperty(p));}GWT.log("Employee: " + employee);
  24. 24. Obnova defaultních hodnotJak obnovit defaultní hodnoty objektu ? ModelData (GXT): Cujo (Ujorm):            ModelData employee = findEmployee(); Cujo employee = findEmployee();for (String p : employee1.getPropertyNames())  for (CujoProperty p : employee.readProperties()) { {     Object o = employee1.get(p);         p.set(p, p.getDefault());      p.set(p, null); // ??     p.set(p, getDefaultForProperty(p)); }}  GWT.log("Employee: " + employee); GWT.log("Employee: " + employee);
  25. 25. CriterionTest platnosti (validace) objektu v run-time ModelData (GXT): Cujo (Ujorm): import static org.ujorm.gxt.client.cquery.COperator.*; CCriterion<Employee> validWage, validStreet,validator; validWage = CCriterion.where(WAGE, GT, 10.0); validStreet = CCriterion.where(COMPANY.add(CITY), "Prague"); ? validator = validWage.or(validStreet); Employee employee = findEmployee(); boolean isValid = validator.evaluate(employee); GXT.log("Is valid: " + isValid + " for " + employee);   
  26. 26. Mapování klientských objektůServerová strana: Ujo Klientská strana: Cujo
  27. 27. Criterion v databázovém dotazuJak sestavit DB dotaz pro GRID na straně klienta ? import static CEmployee.*; CujoProperty[] gridColumns = new CujoProperty[]           {  NAME            , WAGE            , COMPANY.add(CCompany.NAME)             , COMPANY.add(CCompany.CITY)            }; CQuery<CEmployee> query = CQuery.newInstance(CEmployee.class, gridColumns); query.setCriterion(CCriterion.where(COMPANY.add(CCompany.CITY), "Prague"));     grid = new Grid<CUJO>(createStore(query) query.getColumnModel();
  28. 28. Referenční aplikace Ujorm: ● eCall ● ÚZEI  ● Inspectime (funkční demo: http://inspectime.com)
  29. 29. Dotazy    ?
  30. 30. GWT Frameworky: Ujorm Děkuji za pozornost Odkazy: ● Ujorm: http://ujorm.org ● Ext GWT: http://www.sencha.com/products/extgwt/ ● Referenční demo aplikace: http://inspectime.com ● Tato prezentace: http://ujorm.org/gxt ● Download: http://sourceforge.net/projects/ujoframework/ ● Maven repository: groupId=org.ujoframework,artifactId:ujo-* Google User Groups, Praha 9.6.2011, Autor: Pavel Ponec
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×