Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "Mylyn/Refactoring"

(API)
(Task Data)
Line 12: Line 12:
  
 
  ITaskDataManager {
 
  ITaskDataManager {
   TaskDataState getTaskData(String repositoryUrl, String id);
+
   TaskDataState getTaskDataState(String repositoryUrl, String id);
   void saveOldTaskData(RepositoryTaskData data);
+
   void saveTaskDataState(TaskDataState taskState);
  void saveNewTaskData(RepositoryTaskData data);
+
  void saveEdits(String repositoryUrl, String id, Set<RepositoryTaskAttributes> changedAttributes);
+
  void discardEdits(String repositoryUrl, String id);
+
 
   void refactorRepositoryUrl(String oldUrl, String newUrl);
 
   void refactorRepositoryUrl(String oldUrl, String newUrl);
   void removeTaskData(String repositoryUrl, String id);
+
   void removeTaskDataState(String repositoryUrl, String id);
   void saveNewUnsubmittedTaskData(RepositoryTaskData newUnsubmittedTaskData);
+
   void saveNewTaskDataState(TaskDataState newTaskDataState); // (rfc) Sets unique new id
   Set<TaskDataState> getNewUnsubmittedTaskData(String repositoryUrl);
+
   Set<TaskDataState> getNewTaskDataState(String repositoryUrl); // (rfc)
 
  }
 
  }
 +
 +
 +
*TaskDataState created via ITaskDataHandler.buildTaskDataState(RepositoryTaskData newData,  RepositoryTaskData oldData, Set<RepositoryTaskAttribute> edits);
 +
*TaskDataState is an unmodifiable object but not final.
  
 
  TaskDataState {
 
  TaskDataState {
 +
    public TaskDataState(RepositoryTaskData newTaskData, RepositoryTaskData oldTaskData, Set<RepositoryTaskAttribute> edits);  // Constructor sets values but does not do computation
 +
    public init();  // Perform constructor specific initialization (i.e. calc changed attributes etc)
 
     RepositoryTaskData newTaskData;
 
     RepositoryTaskData newTaskData;
 
     RepositoryTaskData oldTaskData;
 
     RepositoryTaskData oldTaskData;
 
     Set<RepositoryTaskAttribute> edits;
 
     Set<RepositoryTaskAttribute> edits;
 +
    isStateModified();
 +
    hasIncomingChanges();
 +
    hasChanged(RepositoryTaskAttribute attribute);
 +
    Set<RepositoryTaskAttribute> getChanged();
 +
    void discardEdits(String repositoryUrl, String id);
 
  }
 
  }
  

Revision as of 12:27, 15 May 2007

Requirements

  • Persistence
    • Provide a generic API for storing task attributes
  • Configuration extraction
  • Presenation api

API

Task Data

ITaskDataManager {
  TaskDataState getTaskDataState(String repositoryUrl, String id);
  void saveTaskDataState(TaskDataState taskState);
  void refactorRepositoryUrl(String oldUrl, String newUrl);
  void removeTaskDataState(String repositoryUrl, String id);
  void saveNewTaskDataState(TaskDataState newTaskDataState);  // (rfc) Sets unique new id
  Set<TaskDataState> getNewTaskDataState(String repositoryUrl); // (rfc)
}


  • TaskDataState created via ITaskDataHandler.buildTaskDataState(RepositoryTaskData newData, RepositoryTaskData oldData, Set<RepositoryTaskAttribute> edits);
  • TaskDataState is an unmodifiable object but not final.
TaskDataState {
   public TaskDataState(RepositoryTaskData newTaskData, RepositoryTaskData oldTaskData, Set<RepositoryTaskAttribute> edits);  // Constructor sets values but does not do computation
   public init();  // Perform constructor specific initialization (i.e. calc changed attributes etc)
   RepositoryTaskData newTaskData;
   RepositoryTaskData oldTaskData;
   Set<RepositoryTaskAttribute> edits;
   isStateModified();
   hasIncomingChanges();
   hasChanged(RepositoryTaskAttribute attribute);
   Set<RepositoryTaskAttribute> getChanged();
   void discardEdits(String repositoryUrl, String id);
}

Task Attributes

RepositoryTaskAttribute {
 boolean isModified()
 boolean hasIncomingChanges()
 void write(IMemento)
 void read(IMemento)
}


Mylar Task Model

Make this model explicit and define it in terms of Java classes. Accessor methods should mirror fields available on AbstractRepositoryTask. This could be separate from the offline storage so connectors without a TaskDataHandler could provide attachment support.

RepositoryTaskData {
 boolean isNew
 String description
 String summary
 String newComment
 String[] cc
 String[] addCC
 String[] removeCC
}
RepositoryTaskComment {
 String author
 Date created
 ...
}
RepositoryTaskAttachment {
 String filename
 String description
 ...
}
RepositoryTaskOperation {
 ...
}


Editor/UI

Connectors provide a factory for UI representation of attributes:

AbstractConnectorUi {
 abstract ITaskUiFactory getTaskUiFactory()
}
ITaskUiFactory {
 String getLabel(RepositoryTaskAttribute attr)
 Control createEditor(RepositoryTaskAttribute attr, Composite parent)
 String getToolTip(RepositoryTaskAttribute attr)
}

Mylar provides default implementations to create an editor for an attribute:

MylarEditorFactory {
 Control createComboEditor(RepositoryTaskAttribute attr, Composite parent, String[] options);
}

Copyright © Eclipse Foundation, Inc. All Rights Reserved.