diff options
author | ddunne | 2010-07-27 03:19:36 +0000 |
---|---|---|
committer | ddunne | 2010-07-27 03:19:36 +0000 |
commit | 30d8ece0fc9414c0ed67a0364bf0201999c0f9b8 (patch) | |
tree | 599844be7bf1cd834c775124c2f68cc1942e278c | |
parent | 004f168e7854a5134e071741eb3a29b73e9597ef (diff) | |
download | org.eclipse.osee-30d8ece0fc9414c0ed67a0364bf0201999c0f9b8.tar.gz org.eclipse.osee-30d8ece0fc9414c0ed67a0364bf0201999c0f9b8.tar.xz org.eclipse.osee-30d8ece0fc9414c0ed67a0364bf0201999c0f9b8.zip |
make roles single attribute each
"Team Workflow" - A4C1F - "Improvements to the enter new defect dialog box"
5 files changed, 219 insertions, 48 deletions
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/defect/NewDefectDialog.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/defect/NewDefectDialog.java new file mode 100644 index 00000000000..e1d132554d4 --- /dev/null +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/defect/NewDefectDialog.java @@ -0,0 +1,150 @@ +/******************************************************************************* + * Copyright (c) 2004, 2007 Boeing. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Boeing - initial API and implementation + *******************************************************************************/ +package org.eclipse.osee.ats.util.widgets.defect; + +import org.eclipse.osee.ats.util.widgets.defect.DefectItem.Severity; +import org.eclipse.osee.framework.jdk.core.util.Strings; +import org.eclipse.osee.framework.ui.skynet.widgets.XCombo; +import org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener; +import org.eclipse.osee.framework.ui.skynet.widgets.XText; +import org.eclipse.osee.framework.ui.skynet.widgets.XWidget; +import org.eclipse.osee.framework.ui.skynet.widgets.dialog.EntryDialog; +import org.eclipse.swt.events.ModifyEvent; +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Listener; + +/** + * Dialog with two entry boxes + * + * @author Donald G. Dunne + */ +public class NewDefectDialog extends EntryDialog { + + private XText text2; + private XCombo severityCombo; + private String entryText2 = ""; + private final String label2; + private Listener okListener; + private Severity severity; + + public NewDefectDialog() { + super("Enter New Defect", "Enter Defect Description and Severity"); + super.setLabel("Enter Defect Description"); + super.setTextHeight(100); + this.label2 = "Enter Location of Defect"; + } + + @Override + protected void createOpenInEditorHyperlink(Composite parent) { + // do nothing, we don't want this here + } + + @Override + protected void createClearFixedFontWidgets(Composite headerComp) { + // do nothing + } + + @Override + protected void createExtendedArea(Composite parent) { + + severityCombo = new XCombo("Enter Defect Severity"); + severityCombo.setDataStrings(Severity.strValues().toArray(new String[Severity.strValues().size()])); + severityCombo.createWidgets(customAreaParent, 1); + severityCombo.addXModifiedListener(new XModifiedListener() { + + @Override + public void widgetModified(XWidget widget) { + String str = severityCombo.get(); + if (Strings.isValid(str)) { + severity = Severity.valueOf(str); + } else { + severity = null; + } + handleModified(); + } + }); + + text2 = new XText(label2); + text2.setFillHorizontally(true); + if (isFillVertically()) { + text2.setFillVertically(true); + text2.setHeight(100); + text.setHeight(100); + text2.setFont(getFont()); + } + text2.set(entryText2); + text2.createWidgets(customAreaParent, 1); + + text2.addModifyListener(new ModifyListener() { + + @Override + public void modifyText(ModifyEvent e) { + handleModified(); + entryText2 = text2.get(); + } + }); + + } + + public String getEntry2() { + return entryText2; + } + + public void setEntry2(String entry2) { + if (text2 != null) { + text2.set(entry2); + } + this.entryText2 = entry2; + } + + public void setOkListener(Listener okListener) { + this.okListener = okListener; + } + + @Override + protected void buttonPressed(int buttonId) { + super.buttonPressed(buttonId); + if (buttonId == 0 && okListener != null) { + okListener.handleEvent(null); + } + } + + public Severity getSeverity() { + return severity; + } + + @Override + public boolean isEntryValid() { + if (!super.isEntryValid()) { + return false; + } + if (!Strings.isValid(getEntry())) { + setErrorString("Must enter Description"); + return false; + } + + if (severity == null) { + setErrorString("Must select Severity"); + return false; + } + return true; + } + + @Override + protected Control createButtonBar(Composite parent) { + Control control = super.createButtonBar(parent); + handleModified(); + return control; + } + +} diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/defect/XDefectViewer.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/defect/XDefectViewer.java index 73907b36896..7978d2e4636 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/defect/XDefectViewer.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/defect/XDefectViewer.java @@ -15,7 +15,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.Iterator; -import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.logging.Level; @@ -33,6 +32,7 @@ import org.eclipse.osee.ats.util.widgets.defect.DefectItem.Disposition; import org.eclipse.osee.ats.util.widgets.defect.DefectItem.Severity; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.jdk.core.util.AHTML; +import org.eclipse.osee.framework.jdk.core.util.Strings; import org.eclipse.osee.framework.logging.OseeLevel; import org.eclipse.osee.framework.logging.OseeLog; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; @@ -92,8 +92,6 @@ public class XDefectViewer extends XWidget implements IArtifactWidget, IArtifact private static ToolItem newDefectItem, deleteDefectItem; private Label extraInfoLabel; private Composite parentComposite; - private static ToolItem expandDefectItem, collapseDefectItem; - private static Map<IReviewArtifact, Boolean> mapOfReviewArtifacts = new LinkedHashMap<IReviewArtifact, Boolean>(); private ToolBar toolBar; private static Map<IReviewArtifact, Integer> tableHeight = new HashMap<IReviewArtifact, Integer>(); @@ -207,28 +205,6 @@ public class XDefectViewer extends XWidget implements IArtifactWidget, IArtifact toolBar.setLayoutData(gd); ToolItem item = null; - expandDefectItem = new ToolItem(toolBar, SWT.PUSH); - expandDefectItem.setImage(ImageManager.getImage(FrameworkImage.EXPAND_ALL)); - expandDefectItem.setToolTipText("Expand Defect List"); - expandDefectItem.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - mapOfReviewArtifacts.put(reviewArt, true); - handleExpandCollapseDefectTableList(); - } - }); - - collapseDefectItem = new ToolItem(toolBar, SWT.PUSH); - collapseDefectItem.setImage(ImageManager.getImage(FrameworkImage.COLLAPSE_ALL)); - collapseDefectItem.setToolTipText("Collapse Defect List"); - collapseDefectItem.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - mapOfReviewArtifacts.put(reviewArt, false); - handleExpandCollapseDefectTableList(); - } - }); - newDefectItem = new ToolItem(toolBar, SWT.PUSH); newDefectItem.setImage(ImageManager.getImage(FrameworkImage.GREEN_PLUS)); newDefectItem.setToolTipText("New Defect"); @@ -403,13 +379,20 @@ public class XDefectViewer extends XWidget implements IArtifactWidget, IArtifact } public void handleNewDefect() { - EntryDialog ed = - new EntryDialog(Displays.getActiveShell(), "Create New Defect", null, "Enter Defect Description", - MessageDialog.QUESTION, new String[] {"OK", "Cancel"}, 0); + NewDefectDialog ed = new NewDefectDialog(); + ed.setFillVertically(true); if (ed.open() == 0) { try { SkynetTransaction transaction = new SkynetTransaction(AtsUtil.getAtsBranch(), "Add Review Defect"); - reviewArt.getDefectManager().addDefectItem(ed.getEntry(), false, transaction); + DefectItem item = new DefectItem(); + item.setDescription(ed.getEntry()); + if (ed.getSeverity() != null) { + item.setSeverity(ed.getSeverity()); + } + if (Strings.isValid(ed.getEntry2())) { + item.setLocation(ed.getEntry2()); + } + reviewArt.getDefectManager().addOrUpdateDefectItem(item, false, transaction); transaction.execute(); notifyXModifiedListeners(); loadTable(); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/role/UserRoleManager.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/role/UserRoleManager.java index df6c03a16fa..c637f574392 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/role/UserRoleManager.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/role/UserRoleManager.java @@ -14,6 +14,7 @@ import java.lang.ref.WeakReference; import java.util.HashSet; import java.util.Set; import java.util.regex.Matcher; +import java.util.regex.Pattern; import org.eclipse.osee.ats.artifact.IReviewArtifact; import org.eclipse.osee.ats.artifact.ReviewSMArtifact; import org.eclipse.osee.ats.artifact.StateMachineArtifact; @@ -29,6 +30,7 @@ import org.eclipse.osee.framework.logging.OseeLevel; import org.eclipse.osee.framework.logging.OseeLog; import org.eclipse.osee.framework.skynet.core.User; import org.eclipse.osee.framework.skynet.core.UserManager; +import org.eclipse.osee.framework.skynet.core.artifact.Attribute; import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; /** @@ -38,9 +40,10 @@ public class UserRoleManager { private final WeakReference<ReviewSMArtifact> artifactRef; private boolean enabled = true; - private static String ATS_DEFECT_TAG = "AtsRole"; - private static String DEFECT_ITEM_TAG = "Role"; - private static String REVIEW_DEFECT_ATTRIBUTE_NAME = "ats.Role"; + private static String ROLE_ITEM_TAG = "Role"; + private static String REVIEW_ROLE_ATTRIBUTE_NAME = "ats.Role"; + private final Matcher roleMatcher = java.util.regex.Pattern.compile( + "<" + ROLE_ITEM_TAG + ">(.*?)</" + ROLE_ITEM_TAG + ">", Pattern.DOTALL | Pattern.MULTILINE).matcher(""); public UserRoleManager(ReviewSMArtifact artifact) { this.artifactRef = new WeakReference<ReviewSMArtifact>(artifact); @@ -64,15 +67,15 @@ public class UserRoleManager { } public Set<UserRole> getUserRoles() throws OseeCoreException { - Set<UserRole> uRoles = new HashSet<UserRole>(); - String xml = getArtifact().getSoleAttributeValue(REVIEW_DEFECT_ATTRIBUTE_NAME, ""); - Matcher m = - java.util.regex.Pattern.compile("<" + DEFECT_ITEM_TAG + ">(.*?)</" + DEFECT_ITEM_TAG + ">").matcher(xml); - while (m.find()) { - UserRole item = new UserRole(m.group()); - uRoles.add(item); + Set<UserRole> roles = new HashSet<UserRole>(); + for (String xml : getArtifact().getAttributesToStringList(REVIEW_ROLE_ATTRIBUTE_NAME)) { + roleMatcher.reset(xml); + while (roleMatcher.find()) { + UserRole item = new UserRole(roleMatcher.group()); + roles.add(item); + } } - return uRoles; + return roles; } public Set<UserRole> getRoleUsersReviewComplete() throws OseeCoreException { @@ -117,19 +120,39 @@ public class UserRoleManager { private void saveRoleItems(Set<UserRole> defectItems, boolean persist, SkynetTransaction transaction) { try { - StringBuffer sb = new StringBuffer("<" + ATS_DEFECT_TAG + ">"); - for (UserRole item : defectItems) { - sb.append(AXml.addTagData(DEFECT_ITEM_TAG, item.toXml())); + // Change existing ones + for (Attribute<?> attr : getArtifact().getAttributes(REVIEW_ROLE_ATTRIBUTE_NAME)) { + UserRole dbPromoteItem = new UserRole((String) attr.getValue()); + for (UserRole pItem : defectItems) { + if (pItem.equals(dbPromoteItem)) { + attr.setFromString(AXml.addTagData(ROLE_ITEM_TAG, pItem.toXml())); + } + } + } + Set<UserRole> dbPromoteItems = getUserRoles(); + // Remove deleted ones; items in dbPromoteItems that are not in promoteItems + for (UserRole delPromoteItem : org.eclipse.osee.framework.jdk.core.util.Collections.setComplement( + dbPromoteItems, defectItems)) { + for (Attribute<?> attr : getArtifact().getAttributes(REVIEW_ROLE_ATTRIBUTE_NAME)) { + UserRole dbPromoteItem = new UserRole((String) attr.getValue()); + if (dbPromoteItem.equals(delPromoteItem)) { + attr.delete(); + } + } + } + // Add new ones: items in promoteItems that are not in dbPromoteItems + for (UserRole newPromoteItem : org.eclipse.osee.framework.jdk.core.util.Collections.setComplement(defectItems, + dbPromoteItems)) { + getArtifact().addAttributeFromString(REVIEW_ROLE_ATTRIBUTE_NAME, + AXml.addTagData(ROLE_ITEM_TAG, newPromoteItem.toXml())); } - sb.append("</" + ATS_DEFECT_TAG + ">"); - getArtifact().setSoleAttributeValue(REVIEW_DEFECT_ATTRIBUTE_NAME, sb.toString()); updateAssignees(); if (persist) { getArtifact().persist(transaction); } rollupHoursSpentToReviewState(persist, transaction); - } catch (Exception ex) { - OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "Can't create ats review defect document", ex); + } catch (OseeCoreException ex) { + OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "Can't create ats review role document", ex); } } diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/EntryDialog.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/EntryDialog.java index 6ad75cf5dbb..e6372a9ca61 100644 --- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/EntryDialog.java +++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/EntryDialog.java @@ -210,6 +210,7 @@ public class EntryDialog extends MessageDialog { } protected void createExtendedArea(Composite parent) { + // provided for subclass implementation } public void setInitialButtonState() { @@ -318,4 +319,18 @@ public class EntryDialog extends MessageDialog { this.textHeight = textHeight; } + /** + * @return the errorString + */ + public String getErrorString() { + return errorString; + } + + /** + * @param errorString the errorString to set + */ + public void setErrorString(String errorString) { + this.errorString = errorString; + } + } diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/EntryEntryDialog.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/EntryEntryDialog.java index b10881e7dd4..c4c84c9bee2 100644 --- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/EntryEntryDialog.java +++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/EntryEntryDialog.java @@ -42,7 +42,7 @@ public class EntryEntryDialog extends EntryDialog { @Override protected void createClearFixedFontWidgets(Composite headerComp) { - + // do nothing } @Override |