From: Jonathan O. <os...@us...> - 2005-11-29 21:53:40
|
Update of /cvsroot/dlese/dlese-tools-project/src/org/dlese/dpc/schemedit/dcs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv553/dcs Modified Files: DcsDataRecord.java Log Message: - added support for editing status records - fixed bug in which dcsDataRecords for all but adn frameworks were not getting current status set properly Index: DcsDataRecord.java =================================================================== RCS file: /cvsroot/dlese/dlese-tools-project/src/org/dlese/dpc/schemedit/dcs/DcsDataRecord.java,v retrieving revision 1.26 retrieving revision 1.27 diff -C2 -r1.26 -r1.27 *** DcsDataRecord.java 3 Nov 2005 20:25:29 -0000 1.26 --- DcsDataRecord.java 29 Nov 2005 21:53:31 -0000 1.27 *************** *** 87,91 **** prtln("failed to create document: " + e.getMessage()); } ! if (!source.exists()) { setValidationReport(UNKNOWN_VALIDITY); // an empty or null value means the record is valid --- 87,91 ---- prtln("failed to create document: " + e.getMessage()); } ! if (!source.exists()) { // this is a new DcsDataRecord setValidationReport(UNKNOWN_VALIDITY); // an empty or null value means the record is valid *************** *** 93,100 **** setLastTouchDate(dateString); Element currentEntry = (Element) getNode ("/dcsDataRecord/statusEntries"); currentEntry.clearContent(); - /* setStatus(StatusFlags.UNKNOWN_STATUS); - setChangeDate(dateString); */ } else { --- 93,100 ---- setLastTouchDate(dateString); + // clear the currentStatusEntry - it is initialized when the record is indexed + // (in RepositoryServices.saveNewRecord) Element currentEntry = (Element) getNode ("/dcsDataRecord/statusEntries"); currentEntry.clearContent(); } else { *************** *** 158,161 **** --- 158,168 ---- } + private synchronized void addStatusEntry (StatusEntry statusEntry) { + Element entries = doc.getRootElement().element("statusEntries"); + Element entryElement = (Element) statusEntry.getElement(); + entries.add(entryElement); + // force entry list to be recalcuated + entryList = null; + } /** *************** *** 176,185 **** throw new Exception(errorMsg); } ! // addStatusEntry (statusEntry); ! Element entries = doc.getRootElement().element("statusEntries"); Element entryElement = (Element) statusEntry.getElement(); entries.add(entryElement); // force entry list to be recalcuated ! entryList = null; dcsDataManager.notifyListeners(this); } --- 183,192 ---- throw new Exception(errorMsg); } ! addStatusEntry (statusEntry); ! /* Element entries = doc.getRootElement().element("statusEntries"); Element entryElement = (Element) statusEntry.getElement(); entries.add(entryElement); // force entry list to be recalcuated ! entryList = null; */ dcsDataManager.notifyListeners(this); } *************** *** 192,196 **** */ public StatusEntry getCurrentEntry() { ! return (StatusEntry) getEntryList().get(0); } --- 199,206 ---- */ public StatusEntry getCurrentEntry() { ! List entryList = getEntryList(); ! if (entryList.size() == 0) ! return null; ! return (StatusEntry) entryList.get(0); } *************** *** 216,220 **** --- 226,264 ---- } + private Element getHistoryElement (String changeDate) { + List dateElements = doc.selectNodes("//dcsDataRecord/statusEntries/statusEntry/changeDate"); + if (dateElements != null && dateElements.size() > 0) + for (Iterator i = dateElements.iterator(); i.hasNext(); ) { + Element dateElement = (Element) i.next(); + if (dateElement.getText().equals(changeDate)) + return dateElement.getParent(); + } + return null; + } + + public StatusEntry getStatusEntry (String changeDate) { + Element historyElement = getHistoryElement (changeDate); + if (historyElement != null) + return new StatusEntry (historyElement); + else + return null; + } + + public synchronized void replaceStatusEntry (String changeDate, StatusEntry statusEntry) throws Exception { + statusEntry.setChangeDate (changeDate); + deleteStatusEntry (changeDate); + addStatusEntry (statusEntry); + } + + public synchronized void deleteStatusEntry (String changeDate) throws Exception { + Element historyElement = getHistoryElement (changeDate); + if (historyElement == null) { + throw new Exception ("historyElement not found for " + changeDate); + } + historyElement.detach(); + entryList = null; + } + /** * Gets the framework attribute of the DcsDataRecord object |