|
From: <se...@us...> - 2008-06-02 19:43:11
|
Revision: 200
http://acmcontester.svn.sourceforge.net/acmcontester/?rev=200&view=rev
Author: sem62
Date: 2008-06-02 12:42:49 -0700 (Mon, 02 Jun 2008)
Log Message:
-----------
* Fixed bug with removing unknown model item.
Code moved to ItemModel.
For ChapterModel need individual remove metod.
* Some code refactorings (moved UnknownUserStatus to another package).
Modified Paths:
--------------
WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/Chapter/ChapterModel.java
WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemModel.java
WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ResourcedItemModel.java
WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/SummaryPageModel/SummaryPageModel.java
Added Paths:
-----------
WebEditor/src/edu/lnu/FireFly/WebEditor/Data/AnswersManager.java
WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/UnknownItemModel.java
WebEditor/src/edu/lnu/FireFly/WebEditor/UserAnswerStatus/UnknownModelAnswerStatus.java
Removed Paths:
-------------
WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/UnknownItemModel.java
WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/UnknownModelAnswerStatus.java
Added: WebEditor/src/edu/lnu/FireFly/WebEditor/Data/AnswersManager.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/Data/AnswersManager.java (rev 0)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/Data/AnswersManager.java 2008-06-02 19:42:49 UTC (rev 200)
@@ -0,0 +1,89 @@
+package edu.lnu.FireFly.WebEditor.Data;
+
+import java.io.StringReader;
+import java.util.Iterator;
+
+import org.dom4j.Document;
+import org.dom4j.Element;
+import org.dom4j.io.SAXReader;
+
+import edu.lnu.FireFly.FFManifest.Manifest;
+import edu.lnu.FireFly.FFManifest.item.Item;
+import edu.lnu.FireFly.WebEditor.WSClients.WebEditorServiceClient;
+
+public class AnswersManager {
+
+ private Document answers = null;
+ private Manifest manifest = null;
+
+ private AnswersManager() {
+ }
+
+ private static AnswersManager obj = null;
+
+ public static AnswersManager getInstance() {
+ if (obj == null) {
+ obj = new AnswersManager();
+ }
+
+ return obj;
+ }
+
+ /**
+ * update all answer items in answer.xml document.
+ * Modifying only items, that was created with this tool.
+ */
+ private void updateAllOurAnswerItems(){
+
+ }
+
+ @SuppressWarnings("unchecked")
+ private void deleteAnswersForNotExistingItems(){
+ Element organization = answers.getRootElement().element("organization");
+
+ // FIXME need tested loop for working properly.
+ for (Iterator<Element> it = organization.elementIterator("item"); it.hasNext(); ){
+ Element itemElement = it.next();
+ String id = itemElement.attributeValue("id");
+
+ Item item = (Item)manifest.findItemByIdentifier(id);
+
+ if (item == null){
+ it.remove();
+ }
+ }
+ }
+
+ public void update(){
+ deleteAnswersForNotExistingItems();
+ updateAllOurAnswerItems();
+ }
+
+ public void load() {
+ String xml = WebEditorServiceClient.getInstance().getFileContent(
+ "answers.xml", "course");
+
+ try {
+ SAXReader reader = new SAXReader();
+ answers = reader.read(new StringReader(xml));
+ } catch (Exception e) {
+ e.printStackTrace();
+ return;
+ }
+ }
+
+
+
+ public void save() {
+ WebEditorServiceClient.getInstance().setFileContent("answers.xml",
+ answers.asXML());
+ }
+
+ public Manifest getManifest() {
+ return manifest;
+ }
+
+ public void setManifest(Manifest manifest) {
+ this.manifest = manifest;
+ }
+}
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/Chapter/ChapterModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/Chapter/ChapterModel.java 2008-06-02 13:33:19 UTC (rev 199)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/Chapter/ChapterModel.java 2008-06-02 19:42:49 UTC (rev 200)
@@ -1,8 +1,6 @@
package edu.lnu.FireFly.WebEditor.ItemModels.Chapter;
import edu.lnu.FireFly.FFManifest.TreeItem;
-import edu.lnu.FireFly.WebEditor.Data.SummaryPageManager;
-import edu.lnu.FireFly.WebEditor.GUI.TreeDataModel;
import edu.lnu.FireFly.WebEditor.GUI.Dialogs.ChapterPropertiestsDlg;
import edu.lnu.FireFly.WebEditor.ItemModels.ItemModel;
import edu.lnu.FireFly.WebEditor.ItemModels.ItemModels;
@@ -148,10 +146,7 @@
model.remove(item);
}
- TreeDataModel.getInstance().treeNodesDeleted(aChapter);
- aChapter.getParent().removeChild(aChapter);
-
- SummaryPageManager.getInstance().updateSummaryPages();
+ super.remove(aChapter);
}
public void setShowSummaryPage(TreeItem anItem, boolean state) {
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemModel.java 2008-06-02 13:33:19 UTC (rev 199)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemModel.java 2008-06-02 19:42:49 UTC (rev 200)
@@ -6,22 +6,26 @@
import java.net.URL;
import java.util.UUID;
+import edu.lnu.FireFly.FFManifest.Manifest;
import edu.lnu.FireFly.FFManifest.Organization;
import edu.lnu.FireFly.FFManifest.TreeItem;
import edu.lnu.FireFly.FFManifest.item.Item;
import edu.lnu.FireFly.FFManifest.item.sequencing.Sequencing;
import edu.lnu.FireFly.FFManifest.item.sequencing.objectives.MapInfo;
import edu.lnu.FireFly.FFManifest.item.sequencing.objectives.Objectives;
+import edu.lnu.FireFly.FFManifest.parser.TestDocException;
import edu.lnu.FireFly.FFManifest.resource.Resource;
import edu.lnu.FireFly.Rte.Cmi;
import edu.lnu.FireFly.Rte.CmiManager;
import edu.lnu.FireFly.WebEditor.WebEditor;
import edu.lnu.FireFly.WebEditor.Data.AnswersStatusManager;
import edu.lnu.FireFly.WebEditor.Data.ManifestFactory;
+import edu.lnu.FireFly.WebEditor.Data.SummaryPageManager;
import edu.lnu.FireFly.WebEditor.GUI.TreeDataModel;
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.WSClients.WebEditorServiceClient;
import edu.lnu.FireFly.WebEditor.itemConfiguration.ItemConfigurationManager;
import edu.lnu.FireFly.WebEditor.itemConfiguration.ItemData;
@@ -164,8 +168,77 @@
public abstract boolean isRemovable();
- public abstract void remove(TreeItem anItem);
+ public void remove(TreeItem anItem){
+ TreeDataModel.getInstance().treeNodesDeleted(anItem);
+ anItem.getParent().removeChild(anItem);
+ deleteResource(anItem);
+
+ SummaryPageManager.getInstance().updateSummaryPages();
+ }
+
+ /**
+ * Determine that we can delete resource, that mapped to item,
+ * or not.
+ *
+ * It goes about all manifest tree, and if exists at least one
+ * another item that using the same resource - it return false;
+ *
+ * @param anItem Item which resource we want to know that we can
+ * remove it or not.
+ *
+ * @return <b>true</b> if resource not have any more links and we
+ * can delete it and <b>false</b> if it haven't more links and we can delete it.
+ */
+ private boolean canDeleteResource(TreeItem anItem) {
+ Manifest manifest = SummaryPageManager.getInstance().getManifest();
+
+ TreeItem root = null;
+ try {
+ root = manifest.getRoot();
+ } catch (TestDocException e) {
+ e.printStackTrace();
+ }
+
+ return !isSubTreeUsingResource(root, getIdentifier(anItem), anItem);
+ }
+
+ private boolean isSubTreeUsingResource(TreeItem root, String identifierref,
+ TreeItem exceptItem) {
+ if (root != exceptItem) {
+ if (getIdentifierRef(root).equals(identifierref)) {
+ return true;
+ }
+ }
+
+ for (int i = 0; i < root.getChildCount(); i++) {
+ TreeItem newRoot = root.getChild(i);
+
+ if (isSubTreeUsingResource(newRoot, identifierref, exceptItem)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ private void deleteResource(TreeItem anItem) {
+ if (canDeleteResource(anItem)) {
+ Manifest manifest = SummaryPageManager.getInstance().getManifest();
+
+ String identifier = getIdentifierRef(anItem);
+ Resource resource = manifest.resources
+ .findResourceByIdentifier(identifier);
+
+ WebEditorServiceClient.getInstance().deleteFile(
+ resource.getFullHref());
+
+ manifest.resources.deleteResource(identifier);
+
+ SummaryPageManager.getInstance().updateSummaryPages();
+ }
+ }
+
public void rename(TreeItem item, String newTitle) {
((Item) item).title = newTitle;
TreeDataModel.getInstance().treeNodesChanged(item);
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ResourcedItemModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ResourcedItemModel.java 2008-06-02 13:33:19 UTC (rev 199)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ResourcedItemModel.java 2008-06-02 19:42:49 UTC (rev 200)
@@ -2,14 +2,10 @@
import java.util.UUID;
-import edu.lnu.FireFly.FFManifest.Manifest;
import edu.lnu.FireFly.FFManifest.TreeItem;
import edu.lnu.FireFly.FFManifest.item.Item;
-import edu.lnu.FireFly.FFManifest.parser.TestDocException;
-import edu.lnu.FireFly.FFManifest.resource.Resource;
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;
import edu.lnu.FireFly.WebEditor.itemConfiguration.ItemData;
@@ -52,65 +48,6 @@
}
@Override
- public void remove(TreeItem anItem) {
- TreeDataModel.getInstance().treeNodesDeleted(anItem);
- anItem.getParent().removeChild(anItem);
-
- deleteResource(anItem);
- }
-
- private void deleteResource(TreeItem anItem) {
- if (canDeleteResource(anItem)) {
- Manifest manifest = SummaryPageManager.getInstance().getManifest();
-
- String identifier = getIdentifierRef(anItem);
- Resource resource = manifest.resources
- .findResourceByIdentifier(identifier);
-
- WebEditorServiceClient.getInstance().deleteFile(
- resource.getFullHref());
-
- manifest.resources.deleteResource(identifier);
-
- SummaryPageManager.getInstance().updateSummaryPages();
- }
- }
-
- private boolean isSubTreeUsingResource(TreeItem root, String identifierref,
- TreeItem exceptItem) {
- if (root != exceptItem) {
- if (getIdentifierRef(root).equals(identifierref)) {
- return true;
- }
- }
-
- for (int i = 0; i < root.getChildCount(); i++) {
- TreeItem newRoot = root.getChild(i);
-
- if (isSubTreeUsingResource(newRoot, identifierref, exceptItem)) {
- return true;
- }
- }
-
- return false;
- }
-
- private boolean canDeleteResource(TreeItem anItem) {
- // TODO need check links to resource from other items in course tree.
-
- Manifest manifest = SummaryPageManager.getInstance().getManifest();
-
- TreeItem root = null;
- try {
- root = manifest.getRoot();
- } catch (TestDocException e) {
- e.printStackTrace();
- }
-
- return !isSubTreeUsingResource(root, getIdentifier(anItem), anItem);
- }
-
- @Override
protected final void initializeDataForItem(Item anItem) {
ItemData itemData = createItemDataInstance();
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/SummaryPageModel/SummaryPageModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/SummaryPageModel/SummaryPageModel.java 2008-06-02 13:33:19 UTC (rev 199)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/SummaryPageModel/SummaryPageModel.java 2008-06-02 19:42:49 UTC (rev 200)
@@ -10,6 +10,7 @@
import edu.lnu.FireFly.WebEditor.ItemModels.ResourcedItemModel;
import edu.lnu.FireFly.WebEditor.ItemModels.Template;
import edu.lnu.FireFly.WebEditor.ItemModels.Chapter.ChapterModel;
+import edu.lnu.FireFly.WebEditor.ItemModels.CompileQ.CompileQModel;
import edu.lnu.FireFly.WebEditor.ItemModels.Lecture.LectureModel;
import edu.lnu.FireFly.WebEditor.ItemModels.SimpleQuestion.SimpleQuestionModel;
import edu.lnu.FireFly.WebEditor.UserAnswerStatus.UserAnswerStatus;
@@ -119,7 +120,9 @@
}
if (model.getClass() == SimpleQuestionModel.class
- || model.getClass() == LectureModel.class) {
+ || model.getClass() == LectureModel.class
+ || model.getClass() == CompileQModel.class
+ ) {
return "add(\"" + anItem.getTitle() + "\", \""
+ model.getModelName() + "\", \""
Deleted: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/UnknownItemModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/UnknownItemModel.java 2008-06-02 13:33:19 UTC (rev 199)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/UnknownItemModel.java 2008-06-02 19:42:49 UTC (rev 200)
@@ -1,107 +0,0 @@
-package edu.lnu.FireFly.WebEditor.ItemModels;
-
-import edu.lnu.FireFly.FFManifest.TreeItem;
-import edu.lnu.FireFly.FFManifest.item.Item;
-import edu.lnu.FireFly.WebEditor.GUI.TreeDataModel;
-import edu.lnu.FireFly.WebEditor.UserAnswerStatus.UserAnswerStatus;
-import edu.lnu.FireFly.WebEditor.itemConfiguration.ItemData;
-
-public class UnknownItemModel extends ItemModel {
-
- @Override
- public double getAnswerRawScore(TreeItem anItem, String[] userAnswers) {
- return 0;
- }
-
- @Override
- public void showAnswerStatus(UserAnswerStatus answerStatus) {
- }
-
- @Override
- public UserAnswerStatus createUserAnswerInstance(TreeItem anItem) {
- return new UnknownModelAnswerStatus(anItem);
- }
-
- @Override
- public void addItem(TreeItem parent) {
- System.out
- .println("Can't doing this operation with unknown item model");
- }
-
- @Override
- public boolean canAddToItem(TreeItem parent) {
- return false;
- }
-
- @Override
- public boolean canConvertItem(TreeItem parent) {
- return false;
- }
-
- @Override
- protected ItemData createItemDataInstance() {
- System.out
- .println("Can't doing this operation with unknown item model");
- return null;
- }
-
- @Override
- protected String getDefaultTitle() {
- return "Unknown";
- }
-
- @Override
- public boolean getLimitConditionsMenuVisible(TreeItem anItem) {
- return anItem.getChildCount() == 0;
- }
-
- @Override
- public boolean getShowOnSummaryPageMenuVisible() {
- return false;
- }
-
- @Override
- public boolean getShowSummaryPageMenuVisible() {
- return false;
- }
-
- @Override
- protected void initializeDataForItem(Item anItem) {
- System.out
- .println("Can't doing this operation with unknown item model");
- }
-
- @Override
- public boolean isRemovable() {
- return true;
- }
-
- @Override
- public void remove(TreeItem anItem) {
- anItem.getParent().removeChild(anItem);
- TreeDataModel.getInstance().treeNodesDeleted(anItem);
- }
-
-// @Override
-// public boolean synchronizeItemWithResource(TreeItem anItem, String location) {
-// return false;
-// }
-
- @Override
- public boolean updateItemResource(TreeItem item, boolean updateSummaryPages) {
- return false;
- }
-
- @Override
- public double getAnswerMaxScore(TreeItem item) {
- // TODO Auto-generated method stub
- return 0;
- }
-
- @Override
- public double getAnswerMinScore(TreeItem item) {
- // TODO Auto-generated method stub
- return 0;
- }
-
-}
Added: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/UnknownItemModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/UnknownItemModel.java (rev 0)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/UnknownItemModel.java 2008-06-02 19:42:49 UTC (rev 200)
@@ -0,0 +1,96 @@
+package edu.lnu.FireFly.WebEditor.ItemModels;
+
+import edu.lnu.FireFly.FFManifest.TreeItem;
+import edu.lnu.FireFly.FFManifest.item.Item;
+import edu.lnu.FireFly.WebEditor.UserAnswerStatus.UnknownModelAnswerStatus;
+import edu.lnu.FireFly.WebEditor.UserAnswerStatus.UserAnswerStatus;
+import edu.lnu.FireFly.WebEditor.itemConfiguration.ItemData;
+
+public class UnknownItemModel extends ItemModel {
+
+ @Override
+ public double getAnswerRawScore(TreeItem anItem, String[] userAnswers) {
+ return 0;
+ }
+
+ @Override
+ public void showAnswerStatus(UserAnswerStatus answerStatus) {
+ }
+
+ @Override
+ public UserAnswerStatus createUserAnswerInstance(TreeItem anItem) {
+ return new UnknownModelAnswerStatus(anItem);
+ }
+
+ @Override
+ public void addItem(TreeItem parent) {
+ System.out
+ .println("Can't doing this operation with unknown item model");
+ }
+
+ @Override
+ public boolean canAddToItem(TreeItem parent) {
+ return false;
+ }
+
+ @Override
+ public boolean canConvertItem(TreeItem parent) {
+ return false;
+ }
+
+ @Override
+ protected ItemData createItemDataInstance() {
+ System.out
+ .println("Can't doing this operation with unknown item model");
+ return null;
+ }
+
+ @Override
+ protected String getDefaultTitle() {
+ return "Unknown";
+ }
+
+ @Override
+ public boolean getLimitConditionsMenuVisible(TreeItem anItem) {
+ return anItem.getChildCount() == 0;
+ }
+
+ @Override
+ public boolean getShowOnSummaryPageMenuVisible() {
+ return false;
+ }
+
+ @Override
+ public boolean getShowSummaryPageMenuVisible() {
+ return false;
+ }
+
+ @Override
+ protected void initializeDataForItem(Item anItem) {
+ System.out
+ .println("Can't doing this operation with unknown item model");
+ }
+
+ @Override
+ public boolean isRemovable() {
+ return true;
+ }
+
+ @Override
+ public boolean updateItemResource(TreeItem item, boolean updateSummaryPages) {
+ return false;
+ }
+
+ @Override
+ public double getAnswerMaxScore(TreeItem item) {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ @Override
+ public double getAnswerMinScore(TreeItem item) {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+}
Deleted: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/UnknownModelAnswerStatus.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/UnknownModelAnswerStatus.java 2008-06-02 13:33:19 UTC (rev 199)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/UnknownModelAnswerStatus.java 2008-06-02 19:42:49 UTC (rev 200)
@@ -1,28 +0,0 @@
-package edu.lnu.FireFly.WebEditor.ItemModels;
-
-import edu.lnu.FireFly.FFManifest.TreeItem;
-import edu.lnu.FireFly.Rte.Cmi;
-import edu.lnu.FireFly.Rte.ElementName;
-import edu.lnu.FireFly.WebEditor.UserAnswerStatus.UserAnswerStatus;
-
-public class UnknownModelAnswerStatus extends UserAnswerStatus {
-
- public UnknownModelAnswerStatus(TreeItem anItem) {
- super(anItem);
- }
-
- @Override
- public void updateRteFields(Cmi cmi) {
- int interaction = 0;
- String cmiElement = "interactions." + interaction + ".learner_response";
-
- cmi.setValue(new ElementName(cmiElement), "{"
- + Utils.getInstance().marge(getRawAnswer(), ",") + "}");
- }
-
- @Override
- protected void updateValues() {
- // TODO Auto-generated method stub
-
- }
-}
Copied: WebEditor/src/edu/lnu/FireFly/WebEditor/UserAnswerStatus/UnknownModelAnswerStatus.java (from rev 177, WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/UnknownModelAnswerStatus.java)
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/UserAnswerStatus/UnknownModelAnswerStatus.java (rev 0)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/UserAnswerStatus/UnknownModelAnswerStatus.java 2008-06-02 19:42:49 UTC (rev 200)
@@ -0,0 +1,28 @@
+package edu.lnu.FireFly.WebEditor.UserAnswerStatus;
+
+import edu.lnu.FireFly.FFManifest.TreeItem;
+import edu.lnu.FireFly.Rte.Cmi;
+import edu.lnu.FireFly.Rte.ElementName;
+import edu.lnu.FireFly.WebEditor.ItemModels.Utils;
+
+public class UnknownModelAnswerStatus extends UserAnswerStatus {
+
+ public UnknownModelAnswerStatus(TreeItem anItem) {
+ super(anItem);
+ }
+
+ @Override
+ public void updateRteFields(Cmi cmi) {
+ int interaction = 0;
+ String cmiElement = "interactions." + interaction + ".learner_response";
+
+ cmi.setValue(new ElementName(cmiElement), "{"
+ + Utils.getInstance().marge(getRawAnswer(), ",") + "}");
+ }
+
+ @Override
+ protected void updateValues() {
+ // TODO Auto-generated method stub
+
+ }
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|