Index: topia/src/java/org/codelutin/topia/persistence/serialization/SerializablePersistenceHelper.java diff -u topia/src/java/org/codelutin/topia/persistence/serialization/SerializablePersistenceHelper.java:1.4 topia/src/java/org/codelutin/topia/persistence/serialization/SerializablePersistenceHelper.java:1.5 --- topia/src/java/org/codelutin/topia/persistence/serialization/SerializablePersistenceHelper.java:1.4 Wed Jun 15 16:52:29 2005 +++ topia/src/java/org/codelutin/topia/persistence/serialization/SerializablePersistenceHelper.java Tue Jun 21 17:00:43 2005 @@ -24,7 +24,7 @@ * Created: 10 juin 2005 * * @author Arnaud Thimel -* @version $Revision: 1.4 $ +* @version $Revision: 1.5 $ */ @@ -43,6 +43,7 @@ import java.util.Iterator; import java.util.List; import java.util.Properties; +import java.util.logging.Logger; import org.codelutin.queryparser.QueryHelperException; import org.codelutin.topia.AsynchronousLoader; @@ -58,17 +59,25 @@ public class SerializablePersistenceHelper extends AbstractPersistenceHelper { + /** to use log facility, just put in your code: log.info("..."); */ + static private Logger log = Logger.getLogger("org.codelutin.topia." + + "persistence.serialization.SerializablePersistenceHelper"); + + HashMap entities; + public void finalize() { //Au cas où ca fonctionne... destroy(); } public void destroy() { File dbFile = getPersistenceFile(); + log.info("Using file : " + dbFile.getAbsolutePath()); ObjectOutputStream output; try { output = new ObjectOutputStream(new FileOutputStream(dbFile)); output.writeObject(entities); output.close(); + log.info(entities.size() + " entite(s) saved to file..."); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { @@ -76,8 +85,6 @@ } } - HashMap entities; - /** * @param context * @param properties @@ -85,7 +92,6 @@ public SerializablePersistenceHelper(TopiaContext context, Properties properties) { super(context, properties); load(); - printEntities(); } private File getPersistenceFile() { @@ -99,9 +105,9 @@ File dbFile = getPersistenceFile(); if (dbFile.exists()) { try { - ObjectInputStream intput = new ObjectInputStream(new FileInputStream(dbFile)); - entities = (HashMap)intput.readObject(); - intput.close(); + ObjectInputStream input = new ObjectInputStream(new FileInputStream(dbFile)); + entities = (HashMap)input.readObject(); + input.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { @@ -109,9 +115,10 @@ } catch (ClassNotFoundException e) { e.printStackTrace(); } - } else { - entities = new HashMap(); } + if (entities == null) + entities = new HashMap(); + log.info(entities.size() + " entite(s) loaded from file..."); } public TopiaEntity create(Class entityClass) throws TopiaException { @@ -127,7 +134,8 @@ entity.set_topiaLastUpdateDate_(new Date()); String entityId = entity.get_topiaId_(); TopiaEntity doEntity = (TopiaEntity)entities.get(entityId); - if ("0".equals(entity.get_topiaVersion_())) {//L'entité vient d'être créée + if ("0".equals(entity.get_topiaVersion_())) { + //L'entité vient d'être créée if (doEntity == null) { doEntity = entity; entities.put(entityId, doEntity); @@ -138,7 +146,7 @@ if (doEntity == null) { throw new TopiaException("Can't persist entity, can't find entity for topiaId : " + entityId); } else { - //TODO Arno : Update ??? + //Update doEntity = entity; entities.put(entityId, doEntity); } @@ -215,7 +223,7 @@ * @see org.codelutin.topia.persistence.PersistenceHelper#size(org.codelutin.topia.TopiaQuery) */ public int size(TopiaQuery query) throws TopiaException { - return find(query).size(); + return find(query).size(); //TODO Possible optimisation } /* (non-Javadoc)