1 package org.columba.addressbook.folder; 19 20 import java.io.File ; 21 import java.io.IOException ; 22 23 import org.columba.addressbook.model.ContactModelXMLFactory; 24 import org.columba.addressbook.model.IContactModel; 25 import org.columba.addressbook.parser.SyntaxException; 26 import org.columba.api.exception.StoreException; 27 import org.columba.core.xml.XmlNewIO; 28 import org.jdom.Document; 29 30 37 public class XmlDataStorage implements DataStorage { 38 39 private AbstractFolder folder; 40 41 44 public XmlDataStorage(AbstractFolder folder) { 45 super(); 46 47 this.folder = folder; 48 } 49 50 53 public IContactModel load(String uid) throws StoreException { 54 File file = getFile(uid); 55 56 Document doc = XmlNewIO.load(file); 57 58 if (doc == null) 59 return null; 60 61 IContactModel model; 62 try { 63 model = ContactModelXMLFactory.unmarshall(doc, uid); 64 } catch (SyntaxException e) { 65 throw new StoreException(e); 66 } 67 68 return model; 69 } 70 71 75 private File getFile(String uid) throws StoreException { 76 File file = new File (folder.getDirectoryFile().toString() + "/" + uid 77 + ".xml"); 78 return file; 79 } 80 81 85 public void save(String uid, IContactModel contact) throws StoreException { 86 File file = getFile(uid); 87 88 Document doc; 89 try { 90 doc = ContactModelXMLFactory.marshall(contact); 91 } catch (SyntaxException e) { 92 throw new StoreException(e); 93 } 94 95 try { 96 XmlNewIO.save(doc, file); 97 } catch (IOException e) { 98 throw new StoreException(e); 99 } 100 101 } 102 103 107 public void modify(String uid, IContactModel contact) throws StoreException { 108 save(uid, contact); 109 110 } 111 112 115 public void remove(String uid) throws StoreException { 116 File file = getFile(uid); 117 file.delete(); 118 119 } 120 121 }
| Popular Tags
|