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}