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