From: <se...@us...> - 2008-05-29 09:30:24
|
Revision: 178 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=178&view=rev Author: sem62 Date: 2008-05-29 02:30:08 -0700 (Thu, 29 May 2008) Log Message: ----------- * Added ItemConfigurationManager that must manage all item configurations. * Saving all item configurations in one file at saving course. It's some optimization. Modified Paths: -------------- WebEditor/src/deploy.jardesc WebEditor/src/edu/lnu/FireFly/WebEditor/Data/ManifestFactory.java WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/Chapter/ChapterItemData.java WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/Chapter/ChapterModel.java WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQData.java WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemData.java WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemModel.java WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemModels.java WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/Lecture/LectureData.java WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ResourcedItemModel.java WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/SimpleQuestion/SimpleQuestionData.java WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/SummaryPageModel/SummaryPageData.java WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/UnknownItemModel.java WebEditor/src/edu/lnu/FireFly/WebEditor/WebEditor.java Added Paths: ----------- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemDataFactory.java WebEditor/src/edu/lnu/FireFly/WebEditor/itemConfiguration/ WebEditor/src/edu/lnu/FireFly/WebEditor/itemConfiguration/ItemConfigurationManager.java Property Changed: ---------------- WebEditor/ Property changes on: WebEditor ___________________________________________________________________ Name: svn:ignore - *.classpath *.project .settings + Modified: WebEditor/src/deploy.jardesc =================================================================== --- WebEditor/src/deploy.jardesc 2008-05-28 10:29:19 UTC (rev 177) +++ WebEditor/src/deploy.jardesc 2008-05-29 09:30:08 UTC (rev 178) @@ -11,9 +11,6 @@ </sealing> </manifest> <selectedElements exportClassFiles="true" exportJavaFiles="true" exportOutputFolder="false"> - <file path="/webEditor/.classpath"/> <javaElement handleIdentifier="=webEditor/src"/> - <file path="/webEditor/webEditor.eap"/> - <file path="/webEditor/.project"/> </selectedElements> </jardesc> Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/Data/ManifestFactory.java =================================================================== --- WebEditor/src/edu/lnu/FireFly/WebEditor/Data/ManifestFactory.java 2008-05-28 10:29:19 UTC (rev 177) +++ WebEditor/src/edu/lnu/FireFly/WebEditor/Data/ManifestFactory.java 2008-05-29 09:30:08 UTC (rev 178) @@ -15,6 +15,7 @@ import edu.lnu.FireFly.FFManifest.resource.Resources; import edu.lnu.FireFly.WebEditor.ItemModels.OrganizationModel; import edu.lnu.FireFly.WebEditor.ItemModels.Chapter.ChapterItemData; +import edu.lnu.FireFly.WebEditor.itemConfiguration.ItemConfigurationManager; public class ManifestFactory { static public Manifest createManifest() { @@ -33,8 +34,9 @@ e.printStackTrace(); return null; } - - model.setItemData(root, new ChapterItemData()); + + ItemConfigurationManager.getInstance().clear(); + ItemConfigurationManager.getInstance().update(root, new ChapterItemData()); model.updateItemResource(root, false); return manifest; Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/Chapter/ChapterItemData.java =================================================================== --- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/Chapter/ChapterItemData.java 2008-05-28 10:29:19 UTC (rev 177) +++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/Chapter/ChapterItemData.java 2008-05-29 09:30:08 UTC (rev 178) @@ -1,22 +1,17 @@ package edu.lnu.FireFly.WebEditor.ItemModels.Chapter; -import java.io.Reader; - -import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; -import org.dom4j.io.SAXReader; -import edu.lnu.FireFly.FFManifest.TreeItem; import edu.lnu.FireFly.WebEditor.ItemModels.ItemData; public class ChapterItemData extends ItemData { private boolean showSummaryPage = true; @Override - public String marshal(TreeItem anItem) { - Document doc = DocumentHelper.createDocument(); - Element root = doc.addElement("ChapterItemData"); + public Element marshal() { + Element root = DocumentHelper.createElement("ItemData"); + root.addElement("ShowSummaryPage").setText( String.valueOf(isShowSummaryPage())); @@ -26,7 +21,7 @@ root.addElement("Configuration").setText( String.valueOf(getConfiguration())); - return doc.asXML(); + return root; } private boolean flow; @@ -86,23 +81,9 @@ } @Override - public boolean unmarshal(Reader aXmlInputStream, TreeItem anItem) { - SAXReader reader = new SAXReader(); - - Document doc = null; - Element root = null; + public boolean unmarshal(Element root) { try { - doc = reader.read(aXmlInputStream); - - root = doc.getRootElement(); - } catch (Exception e) { - e.printStackTrace(); - return false; - } - - try { - boolean showSP = Boolean.valueOf(root - .elementTextTrim("ShowSummaryPage")); + boolean showSP = Boolean.valueOf(root.elementTextTrim("ShowSummaryPage")); setShowSummaryPage(showSP); boolean showOnSP = Boolean.valueOf(root Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/Chapter/ChapterModel.java =================================================================== --- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/Chapter/ChapterModel.java 2008-05-28 10:29:19 UTC (rev 177) +++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/Chapter/ChapterModel.java 2008-05-29 09:30:08 UTC (rev 178) @@ -164,12 +164,6 @@ public void setShowSummaryPage(TreeItem anItem, boolean state) { ChapterItemData itemData = getData(anItem); - if (itemData == null) { - ItemData data = new ChapterItemData(); - setItemData(anItem, data); - itemData = (ChapterItemData) getItemData(anItem); - } - if (itemData.isShowSummaryPage() != state) { itemData.setShowSummaryPage(state); updateItemResource(anItem, true); Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQData.java =================================================================== --- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQData.java 2008-05-28 10:29:19 UTC (rev 177) +++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQData.java 2008-05-29 09:30:08 UTC (rev 178) @@ -1,21 +1,16 @@ package edu.lnu.FireFly.WebEditor.ItemModels.CompileQ; -import java.io.Reader; import java.util.Iterator; -import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; -import org.dom4j.io.SAXReader; -import edu.lnu.FireFly.FFManifest.TreeItem; import edu.lnu.FireFly.WebEditor.ItemModels.ItemData; public class CompileQData extends ItemData { @Override - public String marshal(TreeItem anItem) { - Document doc = DocumentHelper.createDocument(); - Element root = doc.addElement("CompileQuestion"); + public Element marshal() { + Element root = DocumentHelper.createElement("ItemData"); root.addElement("caption").setText(getCaption()); root.addElement("ShowOnSummaryPage").setText( @@ -41,7 +36,7 @@ partElement.setText(part.getAnswerText()); } - return doc.asXML(); + return root; } private String caption = ""; @@ -59,14 +54,8 @@ @Override @SuppressWarnings("unchecked") - public boolean unmarshal(Reader res, TreeItem anItem) { - SAXReader reader = new SAXReader(); - - Document doc = null; + public boolean unmarshal(Element root) { try { - doc = reader.read(res); - - Element root = doc.getRootElement(); Element answers = root.element("parts"); setCaption(root.elementTextTrim("caption")); Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemData.java =================================================================== --- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemData.java 2008-05-28 10:29:19 UTC (rev 177) +++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemData.java 2008-05-29 09:30:08 UTC (rev 178) @@ -1,9 +1,7 @@ package edu.lnu.FireFly.WebEditor.ItemModels; -import java.io.Reader; +import org.dom4j.Element; -import edu.lnu.FireFly.FFManifest.TreeItem; - public abstract class ItemData { private Boolean showOnSummaryPage = false; @@ -15,7 +13,7 @@ this.showOnSummaryPage = showOnSummaryPage; } - public abstract boolean unmarshal(Reader res, TreeItem anItem); + public abstract boolean unmarshal(Element root); - public abstract String marshal(TreeItem anItem); + public abstract Element marshal(); } Added: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemDataFactory.java =================================================================== --- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemDataFactory.java (rev 0) +++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemDataFactory.java 2008-05-29 09:30:08 UTC (rev 178) @@ -0,0 +1,45 @@ +package edu.lnu.FireFly.WebEditor.ItemModels; + +import edu.lnu.FireFly.WebEditor.ItemModels.Chapter.ChapterItemData; +import edu.lnu.FireFly.WebEditor.ItemModels.CompileQ.CompileQData; +import edu.lnu.FireFly.WebEditor.ItemModels.Lecture.LectureData; +import edu.lnu.FireFly.WebEditor.ItemModels.SimpleQuestion.SimpleQuestionData; +import edu.lnu.FireFly.WebEditor.ItemModels.SummaryPageModel.SummaryPageData; + +public class ItemDataFactory { + private static ItemDataFactory obj = null; + + private ItemDataFactory(){} + + public static ItemDataFactory getInstance(){ + if (obj == null){ + obj = new ItemDataFactory(); + } + + return obj; + } + + public ItemData createItemData(String type){ + if (LectureData.class.getSimpleName().equalsIgnoreCase(type)){ + return new LectureData(); + } + + if (ChapterItemData.class.getSimpleName().equalsIgnoreCase(type)){ + return new ChapterItemData(); + } + + if (SimpleQuestionData.class.getSimpleName().equalsIgnoreCase(type)){ + return new SimpleQuestionData(); + } + + if (SummaryPageData.class.getSimpleName().equalsIgnoreCase(type)){ + return new SummaryPageData(); + } + + if (CompileQData.class.getSimpleName().equalsIgnoreCase(type)){ + return new CompileQData(); + } + + return null; + } +} Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemModel.java =================================================================== --- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemModel.java 2008-05-28 10:29:19 UTC (rev 177) +++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemModel.java 2008-05-29 09:30:08 UTC (rev 178) @@ -4,7 +4,6 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.net.URL; -import java.util.HashMap; import java.util.UUID; import edu.lnu.FireFly.FFManifest.Organization; @@ -23,18 +22,13 @@ import edu.lnu.FireFly.WebEditor.GUI.Dialogs.PropertyDlg; import edu.lnu.FireFly.WebEditor.ItemModels.SummaryPageModel.SummaryPageModel; import edu.lnu.FireFly.WebEditor.UserAnswerStatus.UserAnswerStatus; +import edu.lnu.FireFly.WebEditor.itemConfiguration.ItemConfigurationManager; public abstract class ItemModel { - protected static HashMap<TreeItem, ItemData> questionsData = new HashMap<TreeItem, ItemData>(); - protected String modelName = "Abstract model"; protected abstract String getDefaultTitle(); - public void setItemData(TreeItem anItem, ItemData data) { - questionsData.put(anItem, data); - } - protected boolean isContainerItem = false; private PropertyDlg propertyDlg = null; @@ -119,11 +113,7 @@ } public ItemData getItemData(TreeItem anItem) { - if (questionsData.containsKey(anItem)) { - return questionsData.get(anItem); - } - - return null; + return ItemConfigurationManager.getInstance().get(anItem); } public final String getModelName() { @@ -180,12 +170,8 @@ TreeDataModel.getInstance().treeNodesChanged(item); } - public abstract boolean synchronizeItemWithResource(TreeItem anItem, - String location); + public abstract boolean updateItemResource(TreeItem item, boolean updateSummaryPages); - public abstract boolean updateItemResource(TreeItem item, - boolean updateSummaryPages); - public abstract boolean getLimitConditionsMenuVisible(TreeItem anItem); public abstract boolean getShowOnSummaryPageMenuVisible(); Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemModels.java =================================================================== --- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemModels.java 2008-05-28 10:29:19 UTC (rev 177) +++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemModels.java 2008-05-29 09:30:08 UTC (rev 178) @@ -2,7 +2,6 @@ import java.util.ArrayList; -import edu.lnu.FireFly.FFManifest.Organization; import edu.lnu.FireFly.FFManifest.TreeItem; import edu.lnu.FireFly.WebEditor.ItemModels.Chapter.ChapterModel; import edu.lnu.FireFly.WebEditor.ItemModels.CompileQ.CompileQModel; @@ -52,30 +51,6 @@ return getUnknownModel(); } - public static void synchronizeAllItemDatas(TreeItem root) { - int childsCount = root.getChildCount(); - - if (root.getClass() == Organization.class) { - // this is a root of tree. - synchronizeItemDatas(root, false); - } - - for (int i = 0; i < childsCount; i++) { - synchronizeItemDatas(root.getChild(i), true); - } - } - - private static void synchronizeItemDatas(TreeItem item, boolean recursivly) { - ItemModel model = ItemModels.getModelFromItem(item); - - model.synchronizeItemWithResource(item, "course"); - - if ((model.getClass() == ChapterModel.class || model.getClass() == OrganizationModel.class) - && recursivly) { - synchronizeAllItemDatas(item); - } - } - public static void clear() { registeredModels.clear(); } Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/Lecture/LectureData.java =================================================================== --- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/Lecture/LectureData.java 2008-05-28 10:29:19 UTC (rev 177) +++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/Lecture/LectureData.java 2008-05-29 09:30:08 UTC (rev 178) @@ -1,13 +1,8 @@ package edu.lnu.FireFly.WebEditor.ItemModels.Lecture; -import java.io.Reader; - -import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; -import org.dom4j.io.SAXReader; -import edu.lnu.FireFly.FFManifest.TreeItem; import edu.lnu.FireFly.WebEditor.ItemModels.ItemData; public class LectureData extends ItemData { @@ -31,19 +26,7 @@ } @Override - public boolean unmarshal(Reader stringReader, TreeItem anItem) { - SAXReader reader = new SAXReader(); - - Document doc = null; - try { - doc = reader.read(stringReader); - } catch (Exception e) { - e.printStackTrace(); - return false; - } - - Element root = doc.getRootElement(); - + public boolean unmarshal(Element root) { setCaption(root.elementTextTrim("caption")); setContent(root.elementTextTrim("content")); @@ -56,15 +39,14 @@ } @Override - public String marshal(TreeItem anItem) { - Document doc = DocumentHelper.createDocument(); - Element root = doc.addElement("LectureData"); + public Element marshal() { + Element root = DocumentHelper.createElement("ItemData"); root.addElement("caption").setText(getCaption()); root.addElement("content").setText(getContent()); root.addElement("ShowOnSummaryPage").setText( String.valueOf(getShowOnSummaryPage())); - return doc.asXML(); + return root; } } Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ResourcedItemModel.java =================================================================== --- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ResourcedItemModel.java 2008-05-28 10:29:19 UTC (rev 177) +++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ResourcedItemModel.java 2008-05-29 09:30:08 UTC (rev 178) @@ -1,6 +1,5 @@ package edu.lnu.FireFly.WebEditor.ItemModels; -import java.io.StringReader; import java.util.UUID; import edu.lnu.FireFly.FFManifest.Manifest; @@ -12,6 +11,7 @@ import edu.lnu.FireFly.WebEditor.Data.SummaryPageManager; import edu.lnu.FireFly.WebEditor.GUI.TreeDataModel; import edu.lnu.FireFly.WebEditor.WSClients.WebEditorServiceClient; +import edu.lnu.FireFly.WebEditor.itemConfiguration.ItemConfigurationManager; public abstract class ResourcedItemModel extends ItemModel { @@ -46,7 +46,7 @@ ConfigureItem(item); } - protected final String loadResource(String location, TreeItem anItem) { + protected final String getConfFileContent(String location, TreeItem anItem) { String res = ""; if (location.equalsIgnoreCase("course")) { @@ -125,27 +125,6 @@ return !isSubTreeUsingResource(root, getIdentifier(anItem), anItem); } - @Override - public final boolean synchronizeItemWithResource(TreeItem anItem, - String location) { - String res = loadResource(location, anItem); - - ItemData itemData = getItemData(anItem); - - if (itemData == null) { - itemData = createItemDataInstance(); - setItemData(anItem, itemData); - } - - if (res == null || res.trim().equals("")) { - return false; - } - - itemData.unmarshal(new StringReader(res), anItem); - - return true; - } - protected String getConfFileName(TreeItem anItem) { Resource resource = WebEditor.instance.getManifest().resources .findResourceByIdentifier(getIdentifierRef(anItem)); @@ -157,11 +136,11 @@ protected final void initializeDataForItem(Item anItem) { ItemData itemData = createItemDataInstance(); - String res = loadResource("template", anItem); + //String res = getConfFileContent("template", anItem); - itemData.unmarshal(new StringReader(res), anItem); + //itemData.unmarshal(new StringReader(res), anItem); - setItemData(anItem, itemData); + ItemConfigurationManager.getInstance().update(anItem, itemData); } protected abstract void updateResourceFile(TreeItem anItem); @@ -171,11 +150,7 @@ boolean updateSummaryPages) { updateResourceFile(anItem); - ItemData itemData = getItemData(anItem); - WebEditorServiceClient.getInstance().setFileContent( - getConfFileName(anItem), itemData.marshal(anItem)); - if (updateSummaryPages) { SummaryPageManager.getInstance().updateSummaryPages(); } Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/SimpleQuestion/SimpleQuestionData.java =================================================================== --- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/SimpleQuestion/SimpleQuestionData.java 2008-05-28 10:29:19 UTC (rev 177) +++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/SimpleQuestion/SimpleQuestionData.java 2008-05-29 09:30:08 UTC (rev 178) @@ -1,21 +1,16 @@ package edu.lnu.FireFly.WebEditor.ItemModels.SimpleQuestion; -import java.io.Reader; import java.util.Iterator; -import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; -import org.dom4j.io.SAXReader; -import edu.lnu.FireFly.FFManifest.TreeItem; import edu.lnu.FireFly.WebEditor.ItemModels.ItemData; public class SimpleQuestionData extends ItemData { @Override - public String marshal(TreeItem anItem) { - Document doc = DocumentHelper.createDocument(); - Element root = doc.addElement("SimpleQuestion"); + public Element marshal() { + Element root = DocumentHelper.createElement("ItemData"); root.addElement("caption").setText(getCaption()); root.addElement("question").setText(getQuestion()); @@ -38,7 +33,7 @@ ansEl.setText(answer.getAnswerText()); } - return doc.asXML(); + return root; } private SimpleQuestionAnswersDataModel answers = new SimpleQuestionAnswersDataModel(); @@ -71,14 +66,8 @@ @Override @SuppressWarnings("unchecked") - public boolean unmarshal(Reader res, TreeItem anItem) { - SAXReader reader = new SAXReader(); - - Document doc = null; + public boolean unmarshal(Element root) { try { - doc = reader.read(res); - - Element root = doc.getRootElement(); Element answers = root.element("answers"); setCaption(root.elementTextTrim("caption")); Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/SummaryPageModel/SummaryPageData.java =================================================================== --- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/SummaryPageModel/SummaryPageData.java 2008-05-28 10:29:19 UTC (rev 177) +++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/SummaryPageModel/SummaryPageData.java 2008-05-29 09:30:08 UTC (rev 178) @@ -1,25 +1,21 @@ package edu.lnu.FireFly.WebEditor.ItemModels.SummaryPageModel; -import java.io.Reader; - -import org.dom4j.Document; import org.dom4j.DocumentHelper; +import org.dom4j.Element; -import edu.lnu.FireFly.FFManifest.TreeItem; import edu.lnu.FireFly.WebEditor.ItemModels.ItemData; public class SummaryPageData extends ItemData { @Override - public String marshal(TreeItem anItem) { - Document doc = DocumentHelper.createDocument(); - doc.addElement(this.getClass().getSimpleName()); + public Element marshal() { + Element root = DocumentHelper.createElement("ItemData"); - return doc.asXML(); + return root; } @Override - public boolean unmarshal(Reader res, TreeItem anItem) { + public boolean unmarshal(Element root) { // TODO Auto-generated method stub return true; } Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/UnknownItemModel.java =================================================================== --- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/UnknownItemModel.java 2008-05-28 10:29:19 UTC (rev 177) +++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/UnknownItemModel.java 2008-05-29 09:30:08 UTC (rev 178) @@ -81,10 +81,10 @@ TreeDataModel.getInstance().treeNodesDeleted(anItem); } - @Override - public boolean synchronizeItemWithResource(TreeItem anItem, String location) { - return false; - } +// @Override +// public boolean synchronizeItemWithResource(TreeItem anItem, String location) { +// return false; +// } @Override public boolean updateItemResource(TreeItem item, boolean updateSummaryPages) { Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/WebEditor.java =================================================================== --- WebEditor/src/edu/lnu/FireFly/WebEditor/WebEditor.java 2008-05-28 10:29:19 UTC (rev 177) +++ WebEditor/src/edu/lnu/FireFly/WebEditor/WebEditor.java 2008-05-29 09:30:08 UTC (rev 178) @@ -17,9 +17,8 @@ import edu.lnu.FireFly.WebEditor.Data.SummaryPageManager; import edu.lnu.FireFly.WebEditor.GUI.CourseTreePopupMenu; import edu.lnu.FireFly.WebEditor.GUI.TreeDataModel; -import edu.lnu.FireFly.WebEditor.ItemModels.ItemModels; -import edu.lnu.FireFly.WebEditor.ItemModels.OrganizationModel; import edu.lnu.FireFly.WebEditor.WSClients.WebEditorServiceClient; +import edu.lnu.FireFly.WebEditor.itemConfiguration.ItemConfigurationManager; public class WebEditor extends AppletWithWYSIWYGEditor implements MainMenuListenet { @@ -47,6 +46,8 @@ WebEditorServiceClient.getInstance().setFileContent("imsmanifest.xml", parser.toXML(manifest)); + + ItemConfigurationManager.getInstance().save(); } @Override @@ -59,7 +60,7 @@ .getFileContent("imsmanifest.xml", "course")); TreeDataModel.initInstance(manifest); - ItemModels.synchronizeAllItemDatas(manifest.getRoot()); + ItemConfigurationManager.getInstance().load(); SummaryPageManager.getInstance().setManifest(manifest); AnswersStatusManager.getInstance().resetAllAnswers(); @@ -100,7 +101,7 @@ public void showEmptyDocument() throws MalformedURLException { AppletWithApiHandle.setNextItemIdentifier(""); - getAppletContext().showDocument(new URL("/empty.html"), "ContentFrame"); + getAppletContext().showDocument(new URL(Settings.getInstance().getResourceLocation() + "/empty.html"), "ContentFrame"); System.out.println("redirected to empty page"); } @@ -135,14 +136,9 @@ try { manifest = ManifestFactory.createManifest(); SummaryPageManager.getInstance().setManifest(manifest); - ItemModels.synchronizeAllItemDatas(manifest.getRoot()); + TreeDataModel.initInstance(manifest); - TreeItem root = manifest.getRoot(); - OrganizationModel model = (OrganizationModel) ItemModels - .getModelFromItem(root); - - model.synchronizeItemWithResource(root, "template"); SummaryPageManager.getInstance().updateSummaryPages(); AnswersStatusManager.getInstance().resetAllAnswers(); Added: WebEditor/src/edu/lnu/FireFly/WebEditor/itemConfiguration/ItemConfigurationManager.java =================================================================== --- WebEditor/src/edu/lnu/FireFly/WebEditor/itemConfiguration/ItemConfigurationManager.java (rev 0) +++ WebEditor/src/edu/lnu/FireFly/WebEditor/itemConfiguration/ItemConfigurationManager.java 2008-05-29 09:30:08 UTC (rev 178) @@ -0,0 +1,99 @@ +package edu.lnu.FireFly.WebEditor.itemConfiguration; + +import java.io.StringReader; +import java.util.HashMap; +import java.util.Iterator; + +import org.dom4j.Document; +import org.dom4j.DocumentHelper; +import org.dom4j.Element; +import org.dom4j.io.SAXReader; + +import edu.lnu.FireFly.FFManifest.TreeItem; +import edu.lnu.FireFly.WebEditor.ItemModels.ItemData; +import edu.lnu.FireFly.WebEditor.ItemModels.ItemDataFactory; +import edu.lnu.FireFly.WebEditor.WSClients.WebEditorServiceClient; + +public class ItemConfigurationManager { + protected HashMap<String, ItemData> itemDatas = new HashMap<String, ItemData>(); + + private ItemConfigurationManager() { + } + + private static ItemConfigurationManager obj = null; + + public static ItemConfigurationManager getInstance() { + if (obj == null) { + obj = new ItemConfigurationManager(); + } + + return obj; + } + + public void update(TreeItem anItem, ItemData anItemData) { + itemDatas.put(anItem.getIdentifier(), anItemData); + } + + public ItemData get(TreeItem anItem) { + return itemDatas.get(anItem.getIdentifier()); + } + + @SuppressWarnings("unchecked") + public void load() { + String xml = WebEditorServiceClient.getInstance().getFileContent( + "config.xml", "course"); + + Document document = null; + try { + SAXReader reader = new SAXReader(); + document = reader.read(new StringReader(xml)); + } catch (Exception e) { + e.printStackTrace(); + return; + } + + Element root = document.getRootElement(); + + itemDatas.clear(); + + Iterator<Element> iter = root.elementIterator("ItemData"); + while (iter.hasNext()) { + Element itemDataElement = iter.next(); + ItemData itemData = ItemDataFactory.getInstance().createItemData(itemDataElement.attributeValue("type")); + itemData.unmarshal(itemDataElement); + + itemDatas.put(itemDataElement.attributeValue("id"), itemData); + } + } + + public void save() { + String config = ""; + + Document doc = DocumentHelper.createDocument(); + + Element root = DocumentHelper.createElement("ItemConfigurations"); + doc.add(root); + + String[] keys = new String[itemDatas.size()]; + itemDatas.keySet().toArray(keys); + for (String key : keys) { + ItemData itemData = itemDatas.get(key); + Element itemElement = itemData.marshal(); + + itemElement.add(DocumentHelper.createAttribute(root, "type", + itemData.getClass().getSimpleName())); + itemElement.add(DocumentHelper.createAttribute(root, "id", key)); + + root.add(itemElement); + } + + config = doc.asXML(); + + WebEditorServiceClient.getInstance().setFileContent("config.xml", + config); + } + + public void clear() { + itemDatas.clear(); + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |