# [EMF,XSD] PatternMatcher für eigene Methoden benutzen



## dermoritz (11. Nov 2010)

Ich benutze EMF für "Java-XML-Binding" auf Basis einer XSD-Datei (http://www.java-forum.org/xml-co/105856-xsd-java-eclipse.html).

Der Hauptgrund für die Benutzung von EMF ist die Generierung von Code um die "restrictions" abzubilden (Formatangaben für bestimmte Felder).
Nun würde ich gerne für Setter für bestimmte Felder in meiner XML-Api diesen Code benutzen. Speziell gibt es z.B. viele Felder die Integer mit führenden Nullen darstellen. Im Moment benutze ich einfach z.B.

```
setVersion((String.format("%02d", wert))
```
um diese Formatierung zu realisieren. Das Problem ist, falls sich die XSD ändert stimmt der Code nicht mehr. Andererseits generiert EMF ja Code wo dies Info drinne Steht (unte .util/...Validator). Für obiges Feld findet man da z.B.:

```
public static final  PatternMatcher [][] VERSION_TYPE__PATTERN__VALUES =
		new PatternMatcher [][] {
			new PatternMatcher [] {
				XMLTypeUtil.createPatternMatcher("\\d{2}")
			}
		};
```

Nun Frage ich mich wie ich diesen Code bzw. diesen PatternMatcher für meine Zwecke nutzen kann? Einmal würde ich ihn gerne direkt benutzen: also ob ein gegebener Sring "matcht".
Andererseits frage ich mich ob ich das "Pattern" extrahieren kann und damit einen String formatieren kann (analog zu oben).


----------



## Wildcard (11. Nov 2010)

Das Ding ist doch public static final, also kannst doch ganz einfach auf den PatternMatcher zugreifen.
Wenn du nur den String und nicht das Objekt haben willst ändere den generierten Code und ziehe ihn als Konstante raus.


----------



## dermoritz (12. Nov 2010)

den generierten Code zu ändern ist leider keine Option. Ich will ja eben nix am Code machen müssen nach dem sich das Modell geändert hat.
Und das man den "PtternMatcher" verwenden kann ist mir klar. die Frage ist wie verwendet man den? Das ist ein "org.eclipse.emf.ecore.EValidator.PatternMatcher" - hat da jemand Erfahrung mit?


----------



## Wildcard (12. Nov 2010)

Wie man ihn benutzt sollte doch recht eindeutig sein, da er genau eine Methode hat und die heiß 'matches'


----------

