Author Topic: MaGSA - Modelovanie a generovanie softvérových architektúr  (Read 44257 times)

jan

  • Jr. Member
  • **
  • Posts: 59
    • View Profile
    • skolska stranka
ja som pouzil dva regularne vyrazy na identifikatory (na mena properties):

[_$a-zA-Z][0-9a-zA-Z_$]+
([_$a-zA-Z][0-9a-zA-Z_$]+)[\\s]:[\\s](INTEGER|REAL|STRING)+  -> ked sa definuje aj typ

opravte ma ak to mam zle

/*
 * takto:
 * [\\s]*[_$a-zA-Z][0-9a-zA-Z_$]*[\\s]*(:[\\s]*(Integer|Real|String)[\\s]*)?
 *
 * napr. "  vaha  :  Real  " alebo len "  vaha  "
 *
 */

vysvetlenie:
[\\s]* - odfiltrovanie whitespaces [ \t\n\x0B\f\r]
[_$a-zA-Z] - 1. znak identifikatora
[0-9a-zA-Z_$]* - ostatne znaky identifikatora
[\\s]* -
(:[\\s]*(Integer|Real|String)[\\s]*)? - volitelna cast, typ moze a nemusi byt
: - podla zadania
[\\s]* -
(Integer|Real|String) - Integer alebo Real alebo String
[\\s]* -

/*
 * zdroje:
 * http://download.oracle.com/javase/tutorial/essential/regex/char_classes.html
 * http://download.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html#cg
 *
 * def. ako bolo spomenute:
 * http://www.exampledepot.com/egs/java.lang/IsJavaId.html
 * valid Java identifier must start with a Unicode letter, underscore, or dollar sign ($).
 * The other characters, if any, can be a Unicode letter, underscore, dollar sign, or digit.
 */

Code: [Select]
   public Boolean hasProperLineSyntax(String line) {
        Pattern pattern = Pattern.compile("[\\s]*[_$a-zA-Z][0-9a-zA-Z_$]*[\\s]*(:[\\s]*(Integer|Real|String)[\\s]*)?");
        Matcher matcher = pattern.matcher(line);
        return matcher.matches();
    }
« Last Edit: 26.02.2011, 07:28:12 by jan »
- Understanding is a three edged sword. (Your side, their side, and the truth) [Vorlons' saying]
(thanks to Agamemnon)

santa99

  • Newbie
  • *
  • Posts: 10
    • View Profile
Janci asi tak som si to predstavoval. Presne tak je to volitelna cesta a funguje to zarucene.

Macro

  • Newbie
  • *
  • Posts: 30
    • View Profile
viete mi pomoct s tymto?
Code: [Select]
Úloha: Rozšírte vlastnosť o možnosť definovania údajového typu - string, integer, real. Typ je uvedený za názvom vlastnosti a je oddelený dvojbodkou. V prípade, že typ nie je uvedený, má vlastnosť údajový typ string.
ako viem si zistit ci to ma byt string, integer alebo real, ale neviem co potom s tym. ako to ulozit modelu ze vlastnost ma byt typu string? proste co s tym ak uz mam zisteny typ

piton

  • Hero Member
  • *****
  • Posts: 715
    • View Profile
to je jednoduche, do triedy Property musis pridat premennu:
private final Type type;
a tej potom priradis urceny typ... Type je enum v baliku sk.tuke.magsa.tools.metamodel ;-)
"Iba život, ktorý žijeme pre ostatných, stojí za to." - Albert Einstein

elvolcanoik

  • Jr. Member
  • **
  • Posts: 77
    • View Profile
a naj ... je pouzit:


boolean javax.lang.model.SourceVersion.isIdentifier(CharSequence name)

isIdentifier

public static boolean isIdentifier(CharSequence name)

    Returns whether or not name is a syntactically valid identifier (simple name) or keyword in the latest source version. The method returns true if the name consists of an initial character for which Character.isJavaIdentifierStart(int) returns true, followed only by characters for which Character.isJavaIdentifierPart(int) returns true. This pattern matches regular identifiers, keywords, and the literals "true", "false", and "null". The method returns false for all other strings.

    Parameters:
        name - the string to check
    Returns:
        true if this string is a syntactically valid identifier or keyword, false otherwise.

Squirrel_sK

  • Full Member
  • ***
  • Posts: 170
    • View Profile
a naj ... je pouzit:


boolean javax.lang.model.SourceVersion.isIdentifier(CharSequence name)

isIdentifier

public static boolean isIdentifier(CharSequence name)

    Returns whether or not name is a syntactically valid identifier (simple name) or keyword in the latest source version. The method returns true if the name consists of an initial character for which Character.isJavaIdentifierStart(int) returns true, followed only by characters for which Character.isJavaIdentifierPart(int) returns true. This pattern matches regular identifiers, keywords, and the literals "true", "false", and "null". The method returns false for all other strings.

    Parameters:
        name - the string to check
    Returns:
        true if this string is a syntactically valid identifier or keyword, false otherwise.


diky... ale toto zobere aj keyword.. takze aby to zobralo len validne meno identifikatora, tak treba pouzit SourceVersion.isName(CharSequence name)
Odkladanie robí ľahkú vec ťažkou a ťažkú vec nemožnou.

jardo

  • Sr. Member
  • ****
  • Posts: 288
    • View Profile
ako si otestujem po tych dvoch cvikach, ci to bezi korektne? resp. co musi byt vyastup po kompoílacii?

Squirrel_sK

  • Full Member
  • ***
  • Posts: 170
    • View Profile
mal by si mat z druheho cvika vypisany model so vsetkymi entitami a properties.. pripadne aj datove typy, ked je chyba vypisat, komentar preskocit, atd.

V 3. cviku generujes DB skript.. ten si otestujes tak ze ho vykonas. Dalej sa generuju triedy na pracu s CRUD operaciami. takze v generovanom projekte si vytvoris novu entitu, nastavis jej nejake parametre. Zikas si aj ....DaoImpl ten konkretnej entity a zavolas napr. na objekte ZamestnanecDaoImpl metodu create(Zamestnanec zam).. to ti vytvori v DB zamestnanca... dalsie metody su edit, remove, find, selectAll... tak poskusaj
Odkladanie robí ľahkú vec ťažkou a ťažkú vec nemožnou.

thom

  • Jr. Member
  • **
  • Posts: 92
    • View Profile
Neviete mi poradit ako vytvorim v netbeanse Java DerbyDB? Vytvoril som si v Services->Drivers driver podla informacii z database properties.
Ale nepripoji ma kedze nemam vytvorenu databazu, a v Java DB mozem editovat iba properties - Je tam Java DB Installation a Database installation a tam neviem co mam zadat.

Easoft

  • Newbie
  • *
  • Posts: 39
  • We are not programs, we are people...
    • View Profile
    • DCStats
Neviete mi poradit ako vytvorim v netbeanse Java DerbyDB? Vytvoril som si v Services->Drivers driver podla informacii z database properties.
Ale nepripoji ma kedze nemam vytvorenu databazu, a v Java DB mozem editovat iba properties - Je tam Java DB Installation a Database installation a tam neviem co mam zadat.

Z vlastnej skusenosti mas na vyber bud preinstalovat cely netbeans a potom to nainstalovat vsetko naraz,
alebo ked doinstalovavas tak skus tento postup, som to podla toho rozbehal:
http://netbeans.org/kb/docs/ide/java-db.html#configuring

thom

  • Jr. Member
  • **
  • Posts: 92
    • View Profile
Neviete mi poradit ako vytvorim v netbeanse Java DerbyDB? Vytvoril som si v Services->Drivers driver podla informacii z database properties.
Ale nepripoji ma kedze nemam vytvorenu databazu, a v Java DB mozem editovat iba properties - Je tam Java DB Installation a Database installation a tam neviem co mam zadat.

Z vlastnej skusenosti mas na vyber bud preinstalovat cely netbeans a potom to nainstalovat vsetko naraz,
alebo ked doinstalovavas tak skus tento postup, som to podla toho rozbehal:
http://netbeans.org/kb/docs/ide/java-db.html#configuring

No podla toho som sa to aj snazil rozbehat, ale uz hned na druhom odstavci sa neviem pohnut :
If you downloaded the GlassFish application server separately and need help registering it in NetBeans IDE, see Registering a GlassFish Application Server Instance in the IDE's Help Contents (F1).
To potrebujem naistalovat GlassFish application server k tomu aby som vedel pracovat s JavaDB?? A samozrejme, ze v menu F1 mi nenajde potrebne informacie, pretoze nemam modul naistalovany a v netbeans moduloch nieco ohladom glassfish ani nie je.

Easoft

  • Newbie
  • *
  • Posts: 39
  • We are not programs, we are people...
    • View Profile
    • DCStats
GlassFish je aplikacny server a v sebe zahrna JavaDB, takze ked ho nainstalujes dostanes s tym aj Java DB

MackoZlesa

  • Jr. Member
  • **
  • Posts: 89
    • View Profile
z nejakeho dovodu mi nechce nacitat generator.properties file. kde ho mam ulozit?

Code: [Select]
run:
model [entity Oddelenie [nazov, kod, poschodie], entity Zamestnanec [meno, priezvisko, vek]]
Exception in thread "main" java.lang.ExceptionInInitializerError
        at Make.main(Make.java:22)
Caused by: sk.tuke.magsa.tools.generator.ConfigurationException: Failed during loading of the configuration file 'generator.properties'
        at sk.tuke.magsa.tools.generator.Generator.<clinit>(Generator.java:21)
        ... 1 more
Caused by: java.lang.NullPointerException
        at java.util.Properties$LineReader.readLine(Properties.java:418)
        at java.util.Properties.load0(Properties.java:337)
        at java.util.Properties.load(Properties.java:325)
        at sk.tuke.magsa.tools.generator.Generator.<clinit>(Generator.java:19)
        ... 1 more
Java Result: 1
BUILD SUCCESSFUL (total time: 1 second)

Easoft

  • Newbie
  • *
  • Posts: 39
  • We are not programs, we are people...
    • View Profile
    • DCStats
z nejakeho dovodu mi nechce nacitat generator.properties file. kde ho mam ulozit?

Code: [Select]
run:
model [entity Oddelenie [nazov, kod, poschodie], entity Zamestnanec [meno, priezvisko, vek]]
Exception in thread "main" java.lang.ExceptionInInitializerError
        at Make.main(Make.java:22)
Caused by: sk.tuke.magsa.tools.generator.ConfigurationException: Failed during loading of the configuration file 'generator.properties'
        at sk.tuke.magsa.tools.generator.Generator.<clinit>(Generator.java:21)
        ... 1 more
Caused by: java.lang.NullPointerException
        at java.util.Properties$LineReader.readLine(Properties.java:418)
        at java.util.Properties.load0(Properties.java:337)
        at java.util.Properties.load(Properties.java:325)
        at sk.tuke.magsa.tools.generator.Generator.<clinit>(Generator.java:19)
        ... 1 more
Java Result: 1
BUILD SUCCESSFUL (total time: 1 second)

Priamo v zlozke src, tam kde je Make.java.

Squirrel_sK

  • Full Member
  • ***
  • Posts: 170
    • View Profile
Neviete mi poradit ako vytvorim v netbeanse Java DerbyDB? Vytvoril som si v Services->Drivers driver podla informacii z database properties.
Ale nepripoji ma kedze nemam vytvorenu databazu, a v Java DB mozem editovat iba properties - Je tam Java DB Installation a Database installation a tam neviem co mam zadat.

Z vlastnej skusenosti mas na vyber bud preinstalovat cely netbeans a potom to nainstalovat vsetko naraz,
alebo ked doinstalovavas tak skus tento postup, som to podla toho rozbehal:
http://netbeans.org/kb/docs/ide/java-db.html#configuring

No podla toho som sa to aj snazil rozbehat, ale uz hned na druhom odstavci sa neviem pohnut :
If you downloaded the GlassFish application server separately and need help registering it in NetBeans IDE, see Registering a GlassFish Application Server Instance in the IDE's Help Contents (F1).
To potrebujem naistalovat GlassFish application server k tomu aby som vedel pracovat s JavaDB?? A samozrejme, ze v menu F1 mi nenajde potrebne informacie, pretoze nemam modul naistalovany a v netbeans moduloch nieco ohladom glassfish ani nie je.

stiahni si Java DB tuto:
http://www.oracle.com/technetwork/java/javadb/downloads/index.html

a potom v netbeans nastav cestu k nainstalovnej Java DB.. potom to pojde
Odkladanie robí ľahkú vec ťažkou a ťažkú vec nemožnou.

domino3d

  • Full Member
  • ***
  • Posts: 161
    • View Profile
dal som to na FTP, a este aj ine ked tak chcete :)

kde je? :) das nam ho :) ?

« Last Edit: 07.03.2011, 19:31:55 by Domino3D »
vivat academicus

MackoZlesa

  • Jr. Member
  • **
  • Posts: 89
    • View Profile
Ako ste riesili UPDATE v dao_impl.java.vm?

Code: [Select]
String query = "UPDATE Oddelenie SET nazov=?, kod=?, poschodie=? WHERE ident=?";
Konkretne to ident ma zaujima

jan

  • Jr. Member
  • **
  • Posts: 59
    • View Profile
    • skolska stranka
Ako ste riesili UPDATE v dao_impl.java.vm?

Code: [Select]
String query = "UPDATE Oddelenie SET nazov=?, kod=?, poschodie=? WHERE ident=?";
Konkretne to ident ma zaujima

pozri si od coho dedia vygenerovane entity, tie mas potom ako vstupny parameter "object"
- Understanding is a three edged sword. (Your side, their side, and the truth) [Vorlons' saying]
(thanks to Agamemnon)

jan

  • Jr. Member
  • **
  • Posts: 59
    • View Profile
    • skolska stranka
Quote
Pokúste sa definovať a implementovať ďalšie typy obmedzení vlastností entít.

ake dalsie obmedzenia by sem mohli ist, nic ma nenapada
- Understanding is a three edged sword. (Your side, their side, and the truth) [Vorlons' saying]
(thanks to Agamemnon)

domino3d

  • Full Member
  • ***
  • Posts: 161
    • View Profile
5.cviko, uloha6.
Code: [Select]
Úloha: Do triedy Property pridajte metódu na získanie obmedzenia vlastnosti podľa typu public <T extends Constraint> T getConstraint(Class<T> clazz). V prípade, že vlastnosť neobsahuje obmedzenie daného typu, je návratová hodnota null. V prípade, že existuje viacero obmedzení toho istého typu, je návratová hodnota ľubovoľné z týchto obmedzení.
neviete mi prosim s tymto pomoct? neviem s tym uz 2 dni pohnut
co to ma robit alebo nemozte mi postnut fragment tohto kodu triedy?
dakujem za odpoved
vivat academicus

Easoft

  • Newbie
  • *
  • Posts: 39
  • We are not programs, we are people...
    • View Profile
    • DCStats
5.cviko, uloha6.
Code: [Select]
Úloha: Do triedy Property pridajte metódu na získanie obmedzenia vlastnosti podľa typu public <T extends Constraint> T getConstraint(Class<T> clazz). V prípade, že vlastnosť neobsahuje obmedzenie daného typu, je návratová hodnota null. V prípade, že existuje viacero obmedzení toho istého typu, je návratová hodnota ľubovoľné z týchto obmedzení.
neviete mi prosim s tymto pomoct? neviem s tym uz 2 dni pohnut
co to ma robit alebo nemozte mi postnut fragment tohto kodu triedy?
dakujem za odpoved

Napr:

public <T extends Constraint> T getConstraint(Class<T> c) {
      for(Constraint myConstraint : this.constraints)
      {
        if (c.isInstance(myConstraint)) return (T) myConstraint;
      }
      return null;
   }

domino3d

  • Full Member
  • ***
  • Posts: 161
    • View Profile
Code: [Select]
-
akurat som chcel napisat ze som to takto spravil ci to bude robit to co ma?
pozeram ze asi ...no neviem
thanks

PS: a to hasConstraint je to iste s tym ze miesto objectov vrati len true alebo false hej?
« Last Edit: 23.03.2011, 02:25:12 by Domino3D »
vivat academicus

qwerty

  • Newbie
  • *
  • Posts: 24
    • View Profile
Code: [Select]
-
toto riesenie podla mna nie je uplne spravne. Dovod: ked nenarazi na to spravne obmedzenie hned v prvej iteracii for cyklu tak vracia null a tym padom sa ani nedostane k testovaniu vyskytu dalsich obmedzeni v danej property
PS: a to hasConstraint je to iste s tym ze miesto objectov vrati len true alebo false hej?
presne tak
« Last Edit: 23.03.2011, 02:25:22 by Domino3D »
Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why. Programmers combine theory and practice: Nothing works and they don't know why.

domino3d

  • Full Member
  • ***
  • Posts: 161
    • View Profile
aha, a Easoftove je dobre? lebo podla mna je to to iste

a ta validate co ma robit? tam je ze overí či sú použité správne mená entít a vlastností s ohľadom na väzbu na vety jazyka entít. Ja to chapem tak ze prejdem vsetky prvky a skontrolujem ci maju neake obmedzenia cez napriklad ... property.hasConstraint(Required.class)

ed: ci valstne zoberem model a entityRef a porovnam obsah?
« Last Edit: 19.03.2011, 21:58:34 by Domino3D »
vivat academicus

qwerty

  • Newbie
  • *
  • Posts: 24
    • View Profile
ano, to od Easoft je ok, lebo vracia null az vtedy ked preslo celym cyklom (teda vsetkymi obmedzeniami danej property) a nenarazilo na obmedzenie ktore hladas, resp. posuvas metode ako formalny parameter teda to Class<T> clazz...

a k tomu validate. ja to chapem takto:
musis prechadzat vsetkymi prvkami zoznamu entities v triede ConstraintBuilder a kontrolovat ich spravne "mapovanie" na entity z modelu.Na to sa vyuzije metoda findEntity a vynimka ConstraintProcessingException. Zaroven v tom cykle musis kontrolovat aj mapovanie vsetkych property danej entity, pricom zase vyuzivas prislusnu metodu findProperty a tu istu vynimku(takze budes mat cyklus v cykle).
Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why. Programmers combine theory and practice: Nothing works and they don't know why.