|
From: Christian G. [M. Mitch] <mas...@us...> - 2002-01-21 22:38:12
|
Update of /cvsroot/jprojecttimer/jprojecttimer/de/cgarbs/apps/jprojecttimer
In directory usw-pr-cvs1:/tmp/cvs-serv30336
Modified Files:
MainWindow.java Project.java TaskList.java
Log Message:
Included XML file handling (code from Boris)
Index: MainWindow.java
===================================================================
RCS file: /cvsroot/jprojecttimer/jprojecttimer/de/cgarbs/apps/jprojecttimer/MainWindow.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** MainWindow.java 2002/01/20 13:09:34 1.4
--- MainWindow.java 2002/01/21 22:25:45 1.5
***************
*** 2,6 ****
* $Id$
*
! * 2001 (C) by Christian Garbs <mi...@un...>
*
* Licensed under GNU GPL (see COPYING for details)
--- 2,6 ----
* $Id$
*
! * 2001,2002 (C) by Christian Garbs <mi...@cg...>
*
* Licensed under GNU GPL (see COPYING for details)
***************
*** 20,23 ****
--- 20,24 ----
import java.awt.print.PrinterJob;
import java.io.FileOutputStream;
+ import java.io.IOException;
import java.io.PrintStream;
import javax.swing.JFileChooser;
***************
*** 178,182 ****
int returnVal = chooser.showOpenDialog(this);
if(returnVal == JFileChooser.APPROVE_OPTION) {
! project.readFromStream(chooser.getSelectedFile());
setTitle(Resource.get("JProjectTimer") + " - " + project.getFile().getName());
// Refresh all Panes
--- 179,184 ----
int returnVal = chooser.showOpenDialog(this);
if(returnVal == JFileChooser.APPROVE_OPTION) {
! //project.readFromStream(chooser.getSelectedFile());
! project.readFromXML(chooser.getSelectedFile());
setTitle(Resource.get("JProjectTimer") + " - " + project.getFile().getName());
// Refresh all Panes
***************
*** 198,202 ****
} else {
try {
! project.writeToStream(new PrintStream(new FileOutputStream(project.getFile())));
project.hasBeenSaved();
} catch (Exception e) {}
--- 200,205 ----
} else {
try {
! //project.writeToStream(new PrintStream(new FileOutputStream(project.getFile())));
! project.writeToXML(new PrintStream(new FileOutputStream(project.getFile())));
project.hasBeenSaved();
} catch (Exception e) {}
Index: Project.java
===================================================================
RCS file: /cvsroot/jprojecttimer/jprojecttimer/de/cgarbs/apps/jprojecttimer/Project.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** Project.java 2002/01/11 20:31:16 1.2
--- Project.java 2002/01/21 22:25:46 1.3
***************
*** 2,6 ****
* $Id$
*
! * 2001 (C) by Christian Garbs <mi...@un...>
*
* Licensed under GNU GPL (see COPYING for details)
--- 2,7 ----
* $Id$
*
! * 2001,2002 (C) by Christian Garbs <mi...@cg...>
! * Boris Unckel <b.u...@gm...>
*
* Licensed under GNU GPL (see COPYING for details)
***************
*** 13,18 ****
--- 14,23 ----
import java.io.File;
import java.io.FileReader;
+ import java.io.IOException;
import java.io.PrintStream;
import java.util.Date;
+ import org.jdom.*;
+ import org.jdom.input.*;
+ import org.jdom.output.*;
public class Project
***************
*** 43,46 ****
--- 48,55 ----
}
+ /**
+ * @param file input file to read from
+ * @deprecated XML is preferred format: use readFromXML instead.
+ */
public void readFromStream(File file)
{
***************
*** 101,104 ****
--- 110,117 ----
}
+ /**
+ * @param out Stream where data is written
+ * @deprecated XML is preferred format: use writeToXML instead
+ */
public void writeToStream(PrintStream out)
{
***************
*** 112,114 ****
--- 125,196 ----
out.println("</project>");
}
+
+ /**
+ * Read data from XML-input file. Does not check for valid format
+ * @param file Input File to read from.
+ */
+
+ public void readFromXML(File file)
+ {
+ this.file = file;
+
+ /**
+ * If the input file is readable the current tasklist is deleted
+ */
+
+ if (file.canRead())
+ {
+ tasks.removeAllElements();
+ try {
+ SAXBuilder aSAXBuilder = new SAXBuilder();
+ Document aDocument = aSAXBuilder.build(file);
+ Element root = aDocument.getRootElement();
+
+ if (root.getName().equalsIgnoreCase("project"))
+ {
+ name = root.getChild("name").getText();
+ timeScale =
+ Integer.parseInt(root.getChild("timeScale")
+ .getText());
+ anchored =
+ Boolean.valueOf(root.getChild("anchored").getText())
+ .booleanValue();
+ start.setTime(Long
+ .parseLong(root.getChild("startTime").getText()));
+ Element dependencies = root.getChild("tasklist");
+
+ if (dependencies != null) tasks.readFromXml(dependencies);
+ }
+ else
+ throw new Exception(
+ "Input XML false. Needs to be project format");
+ } catch (Exception e) {
+ System.err.println(e);
+ }
+ }
+ else
+ System.err.println(
+ "File not readable. Check input format for XML and prject type");
+ }
+
+ /** @param out Stream where XML is written to
+ * @throws IOException if a problem with the stream occurs */
+
+ public void writeToXML(PrintStream out) throws IOException
+ {
+ XMLOutputter aXMLOutputter = new XMLOutputter(" ", true);
+ Element root = new Element("project");
+
+ root.addAttribute("version", "1.0");
+ Document aDocument = new Document(root);
+
+ root.addContent(new Element("name").addContent(name));
+ root.addContent(new Element("timeScale").addContent(timeScale + ""));
+ root.addContent(new Element("anchored").addContent(anchored + ""));
+ root.addContent(new Element("startTime").addContent(start.getTime()
+ + ""));
+ tasks.addToXmlElement(root);
+ aXMLOutputter.output(aDocument, out);
+ }
+
}
Index: TaskList.java
===================================================================
RCS file: /cvsroot/jprojecttimer/jprojecttimer/de/cgarbs/apps/jprojecttimer/TaskList.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** TaskList.java 2002/01/12 14:18:45 1.2
--- TaskList.java 2002/01/21 22:25:46 1.3
***************
*** 2,6 ****
* $Id$
*
! * 2001 (C) by Christian Garbs <mi...@un...>
*
* Licensed under GNU GPL (see COPYING for details)
--- 2,7 ----
* $Id$
*
! * 2001,2002 (C) by Christian Garbs <mi...@cg...>
! * Boris Unckel <b.u...@gm...>
*
* Licensed under GNU GPL (see COPYING for details)
***************
*** 16,21 ****
--- 17,24 ----
import java.util.Collection;
import java.util.Iterator;
+ import java.util.List;
import java.util.StringTokenizer;
import java.util.Vector;
+ import org.jdom.*;
/** A task list stores all tasks that are part of a project.
***************
*** 217,219 ****
--- 220,338 ----
}
+ /**
+ *
+ * @param tasklist XML Tasklist Element
+ */
+
+ public void readFromXml(Element tasklist)
+ {
+ try {
+ List aList = tasklist.getChildren("task");
+ int first = size();
+ Vector tmp = new Vector();
+
+ for (Iterator i = aList.iterator(); i.hasNext(); )
+ {
+ Element taskElement = ( Element ) i.next();
+ int id =
+ Integer.parseInt(taskElement.getChildText("id"));
+ String name = taskElement.getChildText("name");
+ int length =
+ Integer.parseInt(taskElement.getChildText("length"));
+ int completion =
+ Integer.parseInt(taskElement.getChildText("completion"));
+
+ addElement(new Task(name, length, completion,
+ new TaskList()));
+
+ Vector aVector = new Vector();
+
+ // read and store dependencies
+
+ Element dependencies = taskElement.getChild("dependencies");
+ List ids = dependencies.getChildren("id");
+
+ for (Iterator i2 = ids.iterator(); i2.hasNext(); )
+ {
+ Element idElement = ( Element ) i2.next();
+
+ aVector.addElement(new Integer(Integer
+ .parseInt(idElement.getText())));
+ }
+ tmp.addElement(aVector);
+ }
+
+ // actually set dependencies
+
+ int i = 0;
+
+ for (Iterator i1 = tmp.iterator(); i1.hasNext(); i++)
+ {
+ Vector v = ( Vector ) i1.next();
+ TaskList t = new TaskList();
+
+ for (Iterator i2 = v.iterator(); i2.hasNext(); )
+ {
+ t.addElement(elementAt(first
+ + (( Integer ) i2.next())
+ .intValue()));
+ }
+ (( Task ) elementAt(first + i)).setDependencies(t);
+
+ // It's just loaded, but setDependencies sets needsToBeSavedTo true.
+
+ (( Task ) elementAt(first + i)).hasBeenSaved();
+ }
+
+ } catch (Exception e) {
+ System.err.println("TaskList: readFromXML");
+ System.err.println(e);
+ }
+
+ }
+
+ /** @param aElement Element where the Data of the tasklist are added */
+
+ public void addToXmlElement(Element aElement)
+ {
+ Element tasklist = new Element("tasklist");
+
+ aElement.addContent(tasklist);
+ int id = 0;
+
+ for (Iterator i1 = iterator(); i1.hasNext(); id++)
+ {
+ Task aTask = ( Task ) i1.next();
+ Element taskElement = new Element("task");
+
+ tasklist.addContent(taskElement);
+ taskElement.addContent(new Element("id").addContent(id + ""));
+ taskElement
+ .addContent(new Element("length")
+ .addContent(aTask.getLength() + ""));
+ taskElement
+ .addContent(new Element("name")
+ .addContent(aTask.getName() + ""));
+ taskElement
+ .addContent(new Element("completion")
+ .addContent(aTask.getCompletion() + ""));
+
+ /**
+ * @todo Hier fehlen die Dependencies
+ * Ursprünglich wohl über die Position geregelt
+ */
+
+ Element dependencies = new Element("dependencies");
+
+ taskElement.addContent(dependencies);
+ for (Iterator i2 = aTask.getDependencies().iterator();
+ i2.hasNext(); )
+ {
+ Element depend = new Element("id");
+
+ depend.addContent(indexOf(i2.next()) + "");
+ dependencies.addContent(depend);
+ }
+ }
+ }
}
|