View Javadoc
1 /* 2 * Created on 26.04.2004 3 */ 4 package org.xpcards.model; 5 6 import java.beans.XMLDecoder; 7 import java.io.File; 8 import java.io.FileInputStream; 9 import java.io.FileOutputStream; 10 11 /*** 12 * Project source associated with a file 13 * 14 * @author Mikhail Galyutin 15 */ 16 public class FileProjectSource extends ProjectSource { 17 18 private String filename = null; 19 private boolean opened = false; 20 private boolean modified = false; 21 private Project project = null; 22 23 public FileProjectSource() { 24 } 25 26 public FileProjectSource(String filename, Project project) { 27 this.filename = filename; 28 setName(getFile().getName()); 29 this.project = project; 30 } 31 32 /*** 33 * @see org.xpcards.model.ProjectSource#isModified() 34 */ 35 public boolean isModified() { 36 return modified && opened; 37 } 38 39 /*** 40 * @see org.xpcards.model.ProjectSource#setModified(boolean) 41 */ 42 public void setModified(boolean modified) { 43 this.modified = false; 44 } 45 46 /*** 47 * @see org.xpcards.model.ProjectSource#isOpened() 48 */ 49 public boolean isOpened() { 50 return opened; 51 } 52 53 /*** 54 * @see org.xpcards.model.ProjectSource#setOpened(boolean) 55 */ 56 public void setOpened(boolean open) { 57 if (open == this.opened) { 58 return; 59 } 60 if (!this.opened) { 61 // Not opened 62 try { 63 updateProject(); 64 } catch (Exception e) { 65 // TODO! Auto-generated catch block 66 e.printStackTrace(); 67 } 68 } else { 69 // Opened 70 try { 71 commitProject(); 72 } catch (Exception e) { 73 // TODO! Auto-generated catch block 74 e.printStackTrace(); 75 } 76 } 77 } 78 79 /*** 80 * @see org.xpcards.model.ProjectSource#updateProject() 81 */ 82 public void updateProject() throws Exception { 83 XMLDecoder dec = new XMLDecoder(new FileInputStream(getFile())); 84 project = (Project) dec.readObject(); 85 dec.close(); 86 } 87 88 /*** 89 * @see org.xpcards.model.ProjectSource#commitProject() 90 */ 91 public void commitProject() throws Exception { 92 if (project == null) { 93 setModified(false); 94 return; 95 } 96 XPEncoder enc = new XPEncoder(new FileOutputStream(getFile())); 97 98 enc.writeObject(project); 99 enc.close(); 100 } 101 102 /*** 103 * @see org.xpcards.model.ProjectSource#getProject() 104 */ 105 public Project getProject() { 106 return project; 107 } 108 109 /*** 110 * @return 111 */ 112 public File getFile() { 113 return new File(filename); 114 } 115 116 /*** 117 * @param file 118 */ 119 public void setFileName(String filename) { 120 if (filename != null && !filename.equals(this.filename)) { 121 this.filename = filename; 122 if (opened) { 123 try { 124 updateProject(); 125 } catch (Exception e) { 126 // TODO! Auto-generated catch block 127 e.printStackTrace(); 128 } 129 } 130 } 131 } 132 133 /*** 134 * @param project 135 */ 136 public void setProject(Project project) { 137 if (project != null && this.project != project) { 138 this.project = project; 139 modified = true; 140 } 141 142 } 143 144 }

This page was automatically generated by Maven