Index: topia/src/java/org/codelutin/topia/persistence/topia/TopiaPersistenceObject.java diff -u topia/src/java/org/codelutin/topia/persistence/topia/TopiaPersistenceObject.java:1.2 topia/src/java/org/codelutin/topia/persistence/topia/TopiaPersistenceObject.java:1.3 --- topia/src/java/org/codelutin/topia/persistence/topia/TopiaPersistenceObject.java:1.2 Wed Jul 6 22:35:20 2005 +++ topia/src/java/org/codelutin/topia/persistence/topia/TopiaPersistenceObject.java Tue Jul 19 13:15:13 2005 @@ -23,9 +23,9 @@ * Created: 22 juin 2005 11:43:49 CEST * * @author Benjamin POUSSIN -* @version $Revision: 1.2 $ +* @version $Revision: 1.3 $ * -* Last update: $Date: 2005/07/06 22:35:20 $ +* Last update: $Date: 2005/07/19 13:15:13 $ * by : $Author: bpoussin $ */ @@ -46,12 +46,14 @@ * L'objet peut avoir plusieurs etat: dans une transation ou non, créer, stocker, * supprimé. *

-* Créer indique que l'objet n'a pas encore été ajouté au stokage (date == -1). +* Créer indique que l'objet n'a pas encore été ajouté au stokage (date <= 0). * Stocker indique que l'objet est dans le stokage (date > 0) * supprimé indique que l'objet à été supprimé du stockage (removed == true) *

* L'objet est dans une transaction si inTransaction == true, dans ce cas * date == id de la transaction. +*

+* Tous les champs de l'objet sont transients, */ public class TopiaPersistenceObject extends BasicDynaBean { // TopiaPersistenceObject @@ -69,7 +71,7 @@ } /** l'id de l'objet */ - protected String id = null; + transient protected String id = null; /** id de la transaction ou date de commit de l'objet negatif si cet objet appartient a une transaction. Ce champs n'est pas sauver car il est dans le nom du fichier de sauvegarde */ @@ -79,9 +81,9 @@ /** Etat de l'objet */ transient protected State state = State.UNKNOW; /** version de schema de l'objet (definition des champs */ - protected String schemaVersion = null; + transient protected String schemaVersion = null; /** version de l'objet */ - protected String version = null; + transient protected String version = null; // /** map contenant les champs */ // protected Map fields = new HashMap(); @@ -252,6 +254,14 @@ void setAllFields(Map values){ getAllFields().clear(); getAllFields().putAll(values); + } + + Set getModifiedFields(){ + return modifiedFields; + } + + set getAskedFields(){ + return askedFields; } } // TopiaPersistenceObject Index: topia/src/java/org/codelutin/topia/persistence/topia/TopiaStorage.java diff -u topia/src/java/org/codelutin/topia/persistence/topia/TopiaStorage.java:1.2 topia/src/java/org/codelutin/topia/persistence/topia/TopiaStorage.java:1.3 --- topia/src/java/org/codelutin/topia/persistence/topia/TopiaStorage.java:1.2 Wed Jul 6 22:35:20 2005 +++ topia/src/java/org/codelutin/topia/persistence/topia/TopiaStorage.java Tue Jul 19 13:15:13 2005 @@ -23,9 +23,9 @@ * Created: 22 juin 2005 12:02:07 CEST * * @author Benjamin POUSSIN - * @version $Revision: 1.2 $ + * @version $Revision: 1.3 $ * - * Last update: $Date: 2005/07/06 22:35:20 $ + * Last update: $Date: 2005/07/19 13:15:13 $ * by : $Author: bpoussin $ */ @@ -86,18 +86,6 @@ * ont ete supprimer durant la transaction. */ public void remove(TopiaPersistenceObject e) throws TopiaException; - - /** - * Permet de stocker un objet model dans le storage - */ - public void storeSchema(ObjectModel schema); - - /** - * Permet de recuperer un objet model dans le storage - * @param version la version du schema souhaité, null pour avoir le dernier - * schema - */ - public ObjectModel getSchema(String version); } // TopiaStorage Index: topia/src/java/org/codelutin/topia/persistence/topia/TopiaStorageSerialization.java diff -u topia/src/java/org/codelutin/topia/persistence/topia/TopiaStorageSerialization.java:1.2 topia/src/java/org/codelutin/topia/persistence/topia/TopiaStorageSerialization.java:1.3 --- topia/src/java/org/codelutin/topia/persistence/topia/TopiaStorageSerialization.java:1.2 Wed Jul 6 22:35:20 2005 +++ topia/src/java/org/codelutin/topia/persistence/topia/TopiaStorageSerialization.java Tue Jul 19 13:15:13 2005 @@ -23,9 +23,9 @@ * Created: 22 juin 2005 12:30:39 CEST * * @author Benjamin POUSSIN - * @version $Revision: 1.2 $ + * @version $Revision: 1.3 $ * - * Last update: $Date: 2005/07/06 22:35:20 $ + * Last update: $Date: 2005/07/19 13:15:13 $ * by : $Author: bpoussin $ */ @@ -184,9 +184,15 @@ throw new TopiaException("Tentative de sauvegarde d'un objet de transaction, dont la transaction(" + e.getDate() + ") est terminée: " + e.getId()); } - // si l'objet n'est pas encore chargé il faut le faire pour que la - // sauvegarde se passe bien - restore(e); + // si c une suppression et qu'aucun champs n'a ete modifié on renome + // juste le fichier + if(e.isRemoved() && e.getModifiedFields().size() == 0){ + + } else { + // si l'objet n'est pas encore chargé il faut le faire pour que la + // sauvegarde se passe bien + restore(e); + } // normalement le block suivant ne sert plus a rien car // la date est maintenant toujours unique @@ -395,21 +401,6 @@ } } } - } - - public void storeSchema(ObjectModel schema){ -/* -File f = new File(directory, "schema-" + schema.getVersion()); - FileWriter out = new FileWriter(f); - out.write(schema.toXML()); - out.close(); -*/ - } - - public ObjectModel getSchema(String version){ - // TODO relecture du schema - - return null; } } // TopiaStorageSerialization Index: topia/src/java/org/codelutin/topia/persistence/topia/package.html diff -u topia/src/java/org/codelutin/topia/persistence/topia/package.html:1.2 topia/src/java/org/codelutin/topia/persistence/topia/package.html:1.3 --- topia/src/java/org/codelutin/topia/persistence/topia/package.html:1.2 Wed Jul 6 22:35:20 2005 +++ topia/src/java/org/codelutin/topia/persistence/topia/package.html Tue Jul 19 13:15:13 2005 @@ -25,9 +25,9 @@ ; Created: 23 juin 2005 22:04:24 CEST ; ; author Benjamin POUSSIN -; version $Revision: 1.2 $ +; version $Revision: 1.3 $ ; -; Last update: $Date: 2005/07/06 22:35:20 $ +; Last update: $Date: 2005/07/19 13:15:13 $ ; by : $Author: bpoussin $ ; ;---------------------------------------------------------------------------- @@ -125,9 +125,18 @@ - ObjectModel.getVersion() - ObjectModel.toXML() +plus besoin durant la sauvegarde conserve dans 2eme fichier la liste de toute les classes storees + + + +a priori conserver le schema ne sert a rien, car seul les methodes convert en ont besoin et l'utilisateur sais ce qu'il doit faire lorsqu'il code sa methode. + + + +Lors du store, ne faire le restore que si des champs de l'objet initial a changé.