Agile Group – DIEE, Università degli studi di Cagliari Eclipse Modeling Framework (EMF) Lavoro di: Antonio Cuccu
Agile Group – DIEE, Università degli studi di Cagliari Sommario Che cosa è EMF Ecore di EMF Come installare EMF Come lavorare con EMF La persistenza degli oggetti con EMF Conclusioni
Agile Group – DIEE, Università degli studi di Cagliari Che cosa è EMF EMF è un plug-in di Eclipse EMF è un progetto open source EMF consente: -La generazione automatica di codice Java a partire da un modello preesistente -La generazione di un XMI Schema a partire dal modello dei dati -La serializzazione delle istanze (oggetti) del modello in XMI -La deserializzazione di un’istanza del modello a partire da un documento XMI
Agile Group – DIEE, Università degli studi di Cagliari Ecore di EMF
Agile Group – DIEE, Università degli studi di Cagliari Come installare EMF EMF Download Aggiungere EMF nella cartella plugins di Eclipse
Agile Group – DIEE, Università degli studi di Cagliari Come lavorare con EMF EMF consente la generazione di codice Java a partire da un modello che può essere specificato in diversi modi: 1) XML Schema 2) Annotated Java interfaces 3) Rational Rose
Agile Group – DIEE, Università degli studi di Cagliari Come lavorare con EMF XML schema <xsd:schema targetNamespace=" xmlns= xmlns:xsd="
Agile Group – DIEE, Università degli studi di Cagliari Come lavorare con EMF Annotated Java interfaces */ public interface Book { /** */ String getTitle(); /** */ int getPages(); }
Agile Group – DIEE, Università degli studi di Cagliari Come lavorare con EMF Rational Rose (UML)
Agile Group – DIEE, Università degli studi di Cagliari Come lavorare con EMF Un esempio in Rational Rose
Agile Group – DIEE, Università degli studi di Cagliari Come lavorare con EMF Importazione del modello UML
Agile Group – DIEE, Università degli studi di Cagliari Come lavorare con EMF Importazione del modello UML
Agile Group – DIEE, Università degli studi di Cagliari Come lavorare con EMF Importazione del modello UML
Agile Group – DIEE, Università degli studi di Cagliari Come lavorare con EMF Importazione del modello UML
Agile Group – DIEE, Università degli studi di Cagliari Come lavorare con EMF Importazione del modello UML
Agile Group – DIEE, Università degli studi di Cagliari Come lavorare con EMF Importazione del modello UML
Agile Group – DIEE, Università degli studi di Cagliari Come lavorare con EMF Generazione dell’XMI Schema
Agile Group – DIEE, Università degli studi di Cagliari Come lavorare con EMF Generazione dell’XMI Schema
Agile Group – DIEE, Università degli studi di Cagliari Come lavorare con EMF Generazione dell’XMI Schema
Agile Group – DIEE, Università degli studi di Cagliari Come lavorare con EMF Generazione dell’XMI Schema XMI Schema
Agile Group – DIEE, Università degli studi di Cagliari Come lavorare con EMF Generazione dell’XMI Schema
Agile Group – DIEE, Università degli studi di Cagliari Come lavorare con EMF Generazione dell’XMI Schema
Agile Group – DIEE, Università degli studi di Cagliari Come lavorare con EMF Generazione del codice Java
Agile Group – DIEE, Università degli studi di Cagliari Come lavorare con EMF Generazione del codice Java
Agile Group – DIEE, Università degli studi di Cagliari Come lavorare con EMF public interface Videocassetta extends EObject { String getTitolo(); void setTitolo(String value); String getCodice(); void setCodice(String value); Videoteca getVideoteca(); void setVideoteca(Videoteca value); } Generazione del codice Java
Agile Group – DIEE, Università degli studi di Cagliari Persistenza degli oggetti in EMF EMF fornisce un insieme di classi che consentono la creazione oggetti persistenti EMF fornisce un insieme di classi che consentono di “manipolare” oggetti persistenti La creazione degli oggetti persistenti avviene attraverso una serializzazione XMI
Agile Group – DIEE, Università degli studi di Cagliari Persistenza degli oggetti in EMF Serializzazione //Crea un'istanza della EsempioemfFactory EsempioemfFactory factory = EsempioemfFactory.eINSTANCE; //L'oggetto factory crea un oggetto della classe videoteca Videoteca videoteca=factory.createVideoteca(); videoteca.setIndirizzo("Via Is Maglias 12 Cagliari"); videoteca.setNome("UnicaVideo"); //L'oggetto factory crea un oggetto della classe videocassetta Videocassetta videoOne = factory.createVideocassetta(); videoOne.setCodice("vid12cc"); videoOne.setTitolo("Kill Bill volume primo"); videoOne.setVideoteca(videoteca);
Agile Group – DIEE, Università degli studi di Cagliari Persistenza degli oggetti in EMF Serializzazione //L'oggetto factory crea un oggetto della classe videocassetta Videocassetta videoTwo = factory.createVideocassetta(); videoTwo.setCodice("vid13cc"); videoTwo.setTitolo("Kill Bill volume secondo"); videoTwo.setVideoteca(videoteca); //Creazione di un resource set. ResourceSet resourceSet = new ResourceSetImpl(); //Inizializzazione del resource set. resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().p ut(Resource.Factory.Registry.DEFAULT_EXTENSION, new XMIResourceFactoryImpl());
Agile Group – DIEE, Università degli studi di Cagliari Persistenza degli oggetti in EMF Serializzazione //Viene creato l'URI per il file. URI fileURI = URI.createFileURI(new File("Videoteca.xmi").getAbsolutePath()); //Creazione di una resource a cui andranno associati gli oggetti da serializzare Resource resource = resourceSet.createResource(fileURI); //Gli oggetti da serializzare vengono associati alla resource resource.getContents().add(videoteca); resource.getContents().add(videoOne); resource.getContents().add(videoTwo); //Il file con gli oggetti serializzati vengono salvati nel workspace del progetto try { resource.save(Collections.EMPTY_MAP); } catch (IOException e) { }
Agile Group – DIEE, Università degli studi di Cagliari Persistenza degli oggetti in EMF Serializzazione
Agile Group – DIEE, Università degli studi di Cagliari Persistenza degli oggetti in EMF //Creazione di un resource set. ResourceSet resourceSet2 = new ResourceSetImpl(); //Inizializzazione del resource set. resourceSet2.getResourceFactoryRegistry().getExtensionToFactoryMap().put( Resource.Factory.Registry.DEFAULT_EXTENSION, new XMIResourceFactoryImpl()); //Si ottiene una URI per il file. URI fileURI = URI.createFileURI(new File("Videoteca.xmi").getAbsolutePath()); // Creazione di una risorsa per il file. Resource resource=resourceSet2.getResource(fileURI,true); Deserializzazione
Agile Group – DIEE, Università degli studi di Cagliari Persistenza degli oggetti in EMF for(int i=0;i<resource.getContents().size();i++) if(resource.getContents().get(i) instanceof Videocassetta) { videocassetteArray[x]=(Videocassetta)resource.getVideoteca.get(i); x=x+1; } else { videotecaArray[y]=(Videoteca)resource.getVideoteca.get(i); y=y+1; } Deserializzazione
Agile Group – DIEE, Università degli studi di Cagliari Persistenza degli oggetti in EMF for(int i=0;i<NumVideocassette;i++) { System.out.println(videocassetteArray[i].getTitolo()); System.out.println("reperibile nella videoteca:“ +videocassetteArray[i].getContiene().getNome()+ videocassetteArray[i].getContiene().getIndirizzo()); } Deserializzazione
Agile Group – DIEE, Università degli studi di Cagliari Persistenza degli oggetti in EMF “Kill Bill volume primo reperibile nella videoteca:UnicaVideo Via Is Maglias 12 Cagliari” “Kill Bill volume secondo reperibile nella videoteca:UnicaVideo Via Is Maglias 12 Cagliari” Deserializzazione
Agile Group – DIEE, Università degli studi di Cagliari Conclusioni Caratteristiche principali del software EMF: –Generazione automatica di codice Java –Generazione dell’XMI Schema del modello –Serializzazione degli oggetti in XMI –Deserializzazione degli oggetti