001package org.dom4j.persistence;
002
003import org.dom4j.Document;
004
005import java.util.List;
006import java.util.ArrayList;
007import java.util.Iterator;
008
009/**
010 *
011 * @author
012 * @version 1.0
013 */
014
015public class PersitenceManager implements Initiator {
016
017  private static PersitenceManager orginator;
018  private List mementos;
019
020  protected PersitenceManager() {
021    mementos = new ArrayList();
022  }
023
024  public static PersitenceManager getInstance() {
025    if (PersitenceManager.orginator == null)
026      PersitenceManager.orginator = new PersitenceManager();
027
028    return PersitenceManager.orginator;
029  }
030
031  public Memento createMemento(Document doc, String systemId, MarshallingContext context) throws Exception {
032    DocumentMemento menento = new DocumentMemento(systemId, context);
033    menento.setState(doc);
034    this.mementos.add(menento);
035    return menento;
036  }
037
038  public List getMemeneto() {
039     return mementos;
040  }
041
042  public Iterator getMemenetoIterator() {
043    return mementos.iterator();
044  }
045
046
047  public Memento getMemento(String systemId) throws Exception
048  {
049    boolean searching = true;
050    Memento targetedMemento = null;
051    Iterator mememtoIter = this.getMemenetoIterator();
052    while(searching)
053    {
054      targetedMemento = (Memento) mememtoIter.next();
055      if (((Document)targetedMemento.getState()).getDocType().getSystemID().equals(systemId)) {
056        searching = false;
057    }
058  }
059
060    return targetedMemento;
061  }
062
063
064
065}