• Welcome to TUKE FÓRUM - Fórum pre študentov Technickej Univerzity v Košiciach.
 

MaGSA - Modelovanie a generovanie softvérových architektúr

Started by jan, 04.02.2011, 22:09:45

« predchdzajce - alie »

jan

Quote from: Cheiftan on  25.02.2011, 16:24:59
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.
*/

   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();
   }
- Understanding is a three edged sword. (Your side, their side, and the truth) [Vorlons' saying]
(thanks to Agamemnon)

santa99

Janci asi tak som si to predstavoval. Presne tak je to volitelna cesta a funguje to zarucene.

Macro

viete mi pomoct s tymto?
Ú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

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

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

Quote from: elvolcanoik on  28.02.2011, 19:14:26
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

ako si otestujem po tych dvoch cvikach, ci to bezi korektne? resp. co musi byt vyastup po kompoílacii?

Squirrel_sK

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

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

Quote from: thom on  06.03.2011, 18:29:58
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

Quote from: Easoft on  06.03.2011, 18:59:06
Quote from: thom on  06.03.2011, 18:29:58
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

GlassFish je aplikacny server a v sebe zahrna JavaDB, takze ked ho nainstalujes dostanes s tym aj Java DB

MackoZlesa

z nejakeho dovodu mi nechce nacitat generator.properties file. kde ho mam ulozit?

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

Quote from: MackoZlesa on  06.03.2011, 21:18:58
z nejakeho dovodu mi nechce nacitat generator.properties file. kde ho mam ulozit?

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

Quote from: thom on  06.03.2011, 19:11:23
Quote from: Easoft on  06.03.2011, 18:59:06
Quote from: thom on  06.03.2011, 18:29:58
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

Quote from: Havran on  20.02.2011, 00:22:38
dal som to na FTP, a este aj ine ked tak chcete :)

kde je? :) das nam ho :) ?

vivat academicus

MackoZlesa

Ako ste riesili UPDATE v dao_impl.java.vm?

String query = "UPDATE Oddelenie SET nazov=?, kod=?, poschodie=? WHERE ident=?";

Konkretne to ident ma zaujima

jan

Quote from: MackoZlesa on  07.03.2011, 23:19:46
Ako ste riesili UPDATE v dao_impl.java.vm?

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

QuotePokú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

5.cviko, uloha6.Ú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

Quote from: Domino3D on  19.03.2011, 18:08:43
5.cviko, uloha6.Ú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

-

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?
vivat academicus

qwerty

Quote from: Domino3D on  19.03.2011, 20:17:26
-
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
Quote from: Domino3D on  19.03.2011, 20:17:26
PS: a to hasConstraint je to iste s tym ze miesto objectov vrati len true alebo false hej?
presne tak
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

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?
vivat academicus

qwerty

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.