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. |