Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 75245 Details for
Bug 189518
support import/export of Task List queries
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
Query export/import with repositories information in Zip file included
query-export-import-with-repositories-info_1_0.txt (text/plain), 22.64 KB, created by
Jevgeni Holodkov
on 2007-08-02 12:33:50 EDT
(
hide
)
Description:
Query export/import with repositories information in Zip file included
Filename:
MIME Type:
Creator:
Jevgeni Holodkov
Created:
2007-08-02 12:33:50 EDT
Size:
22.64 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.mylyn.tasks.core >Index: src/org/eclipse/mylyn/internal/tasks/core/TaskRepositoriesExternalizer.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/internal/tasks/core/TaskRepositoriesExternalizer.java,v >retrieving revision 1.11 >diff -u -r1.11 TaskRepositoriesExternalizer.java >--- src/org/eclipse/mylyn/internal/tasks/core/TaskRepositoriesExternalizer.java 10 Jul 2007 00:31:10 -0000 1.11 >+++ src/org/eclipse/mylyn/internal/tasks/core/TaskRepositoriesExternalizer.java 2 Aug 2007 16:34:33 -0000 >@@ -28,6 +28,7 @@ > > /** > * @author Rob Elves >+ * @author Jevgeni Holodkov > */ > public class TaskRepositoriesExternalizer { > >@@ -46,15 +47,7 @@ > file.createNewFile(); > > outputStream = new ZipOutputStream(new FileOutputStream(file)); >- ZipEntry zipEntry = new ZipEntry(TaskRepositoryManager.OLD_REPOSITORIES_FILE); >- outputStream.putNextEntry(zipEntry); >- outputStream.setMethod(ZipOutputStream.DEFLATED); >- >- // OutputStream stream = new FileOutputStream(file); >- writer.setOutputStream(outputStream); >- writer.writeRepositoriesToStream(repositories); >- outputStream.flush(); >- outputStream.closeEntry(); >+ writeRepositoriesToZipEntry(repositories, outputStream); > outputStream.close(); > > } catch (IOException e) { >@@ -70,6 +63,24 @@ > } > } > >+ /** >+ * @param repositories >+ * @param outputStream >+ * @throws IOException >+ */ >+ public void writeRepositoriesToZipEntry(Collection<TaskRepository> repositories, ZipOutputStream outputStream) >+ throws IOException { >+ ZipEntry zipEntry = new ZipEntry(TaskRepositoryManager.OLD_REPOSITORIES_FILE); >+ outputStream.putNextEntry(zipEntry); >+ outputStream.setMethod(ZipOutputStream.DEFLATED); >+ >+ // OutputStream stream = new FileOutputStream(file); >+ writer.setOutputStream(outputStream); >+ writer.writeRepositoriesToStream(repositories); >+ outputStream.flush(); >+ outputStream.closeEntry(); >+ } >+ > public Set<TaskRepository> readRepositoriesFromXML(File file) { > > if (!file.exists()) >@@ -77,7 +88,20 @@ > InputStream inputStream = null; > try { > inputStream = new ZipInputStream(new FileInputStream(file)); >- ((ZipInputStream) inputStream).getNextEntry(); >+ >+ // search for REPOSITORIES entry >+ ZipEntry entry = ((ZipInputStream) inputStream).getNextEntry(); >+ while (entry != null) { >+ if (TaskRepositoryManager.OLD_REPOSITORIES_FILE.equals(entry.getName())) { >+ break; >+ } >+ entry = ((ZipInputStream) inputStream).getNextEntry(); >+ } >+ >+ if (entry == null) { >+ return null; >+ } >+ > SaxRepositoriesContentHandler contentHandler = new SaxRepositoriesContentHandler(); > XMLReader reader = XMLReaderFactory.createXMLReader(); > reader.setContentHandler(contentHandler); >Index: src/org/eclipse/mylyn/tasks/core/TaskRepositoryManager.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskRepositoryManager.java,v >retrieving revision 1.39 >diff -u -r1.39 TaskRepositoryManager.java >--- src/org/eclipse/mylyn/tasks/core/TaskRepositoryManager.java 13 Jul 2007 17:45:28 -0000 1.39 >+++ src/org/eclipse/mylyn/tasks/core/TaskRepositoryManager.java 2 Aug 2007 16:34:33 -0000 >@@ -27,6 +27,7 @@ > * > * @author Mik Kersten > * @author Rob Elves >+ * @author Jevgeni Holodkov > * @since 2.0 > */ > public class TaskRepositoryManager { >@@ -374,4 +375,12 @@ > listener.repositorySettingsChanged(repository); > } > } >+ >+ public void insertRepositories(Set<TaskRepository> repositories, String repositoryFilePath) { >+ for(TaskRepository repository : repositories) { >+ if (getRepository(repository.getConnectorKind(), repository.getUrl()) == null) { >+ addRepository(repository, repositoryFilePath); >+ } >+ } >+ } > } >#P org.eclipse.mylyn.tasks.tests >Index: src/org/eclipse/mylyn/tasks/tests/QueryExportImportTest.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/QueryExportImportTest.java,v >retrieving revision 1.2 >diff -u -r1.2 QueryExportImportTest.java >--- src/org/eclipse/mylyn/tasks/tests/QueryExportImportTest.java 24 Jul 2007 05:59:42 -0000 1.2 >+++ src/org/eclipse/mylyn/tasks/tests/QueryExportImportTest.java 2 Aug 2007 16:34:34 -0000 >@@ -12,17 +12,23 @@ > package org.eclipse.mylyn.tasks.tests; > > import java.io.File; >+import java.io.FileInputStream; > import java.util.ArrayList; > import java.util.HashMap; > import java.util.List; > import java.util.Map; > import java.util.Set; >+import java.util.zip.ZipEntry; >+import java.util.zip.ZipInputStream; > > import junit.framework.TestCase; > >+import org.eclipse.mylyn.internal.tasks.core.TaskRepositoriesExternalizer; >+import org.eclipse.mylyn.internal.tasks.ui.ITasksUiConstants; > import org.eclipse.mylyn.tasks.core.AbstractRepositoryQuery; > import org.eclipse.mylyn.tasks.core.AbstractTaskListFactory; > import org.eclipse.mylyn.tasks.core.TaskRepository; >+import org.eclipse.mylyn.tasks.core.TaskRepositoryManager; > import org.eclipse.mylyn.tasks.tests.connector.MockRepositoryConnector; > import org.eclipse.mylyn.tasks.tests.connector.MockRepositoryQuery; > import org.eclipse.mylyn.tasks.tests.connector.MockTaskListFactory; >@@ -70,7 +76,9 @@ > List<AbstractRepositoryQuery> queries = new ArrayList<AbstractRepositoryQuery>(); > > MockRepositoryQuery query1 = new MockRepositoryQuery("Test Query"); >+ query1.setRepositoryUrl(MockRepositoryConnector.REPOSITORY_URL); > MockRepositoryQuery query2 = new MockRepositoryQuery("Test Query 2"); >+ query2.setRepositoryUrl(MockRepositoryConnector.REPOSITORY_URL); > queries.add(query1); > queries.add(query2); > >@@ -237,6 +245,65 @@ > assertTrue("'Test Query' query inserted", queriesMap.containsKey("Test Query")); > } > >+ public void testExportImportQueryWithRepositoryInfo() throws Exception { >+ // prepare for test >+ TasksUiPlugin.getTaskListManager().resetTaskList(); >+ >+ List<AbstractTaskListFactory> externalizers = new ArrayList<AbstractTaskListFactory>(); >+ externalizers.add(new MockTaskListFactory()); >+ TasksUiPlugin.getTaskListManager().getTaskListWriter().setDelegateExternalizers(externalizers); >+ >+ TaskRepository repository = new TaskRepository(MockRepositoryConnector.REPOSITORY_KIND, MockRepositoryConnector.REPOSITORY_URL); >+ TasksUiPlugin.getRepositoryManager().addRepository(repository, TasksUiPlugin.getDefault().getRepositoriesFilePath()); >+ >+ // create test data >+ List<AbstractRepositoryQuery> queries = new ArrayList<AbstractRepositoryQuery>(); >+ MockRepositoryQuery query1 = new MockRepositoryQuery("Test Query"); >+ query1.setRepositoryUrl(repository.getUrl()); >+ queries.add(query1); >+ >+ File outFile = new File(dest, "test-repository-query.xml.zip"); >+ >+ TasksUiPlugin.getTaskListManager().getTaskListWriter().writeQueries(queries, outFile); >+ >+ assertTrue(outFile.exists()); >+ >+ List<String> files = new ArrayList<String>(); >+ ZipInputStream inputStream = new ZipInputStream(new FileInputStream(outFile)); >+ ZipEntry entry = null; >+ while ((entry = inputStream.getNextEntry()) != null) { >+ files.add(entry.getName()); >+ } >+ inputStream.close(); >+ >+ assertTrue("exported file contains a file with queries", files.contains(ITasksUiConstants.OLD_TASK_LIST_FILE)); >+ assertTrue("exported file contains a file with repositories", files.contains(TaskRepositoryManager.OLD_REPOSITORIES_FILE)); >+ >+ >+ TasksUiPlugin.getRepositoryManager().clearRepositories(TasksUiPlugin.getDefault().getRepositoriesFilePath()); >+ assertTrue("There are currently no repositories defined", TasksUiPlugin.getRepositoryManager().getRepository( >+ MockRepositoryConnector.REPOSITORY_URL) == null); >+ >+ List<AbstractRepositoryQuery> resultQueries = TasksUiPlugin.getTaskListManager().getTaskListWriter().readQueries(outFile); >+ Set<TaskRepository> repositories = TasksUiPlugin.getTaskListManager().getTaskListWriter().readRepositories(outFile); >+ >+ TasksUiPlugin.getRepositoryManager().insertRepositories(repositories, TasksUiPlugin.getDefault().getRepositoriesFilePath()); >+ TasksUiPlugin.getTaskListManager().insertQueries(resultQueries); >+ >+ // extract results >+ Set<AbstractRepositoryQuery> queriesSet = TasksUiPlugin.getTaskListManager().getTaskList().getQueries(); >+ Map<String, AbstractRepositoryQuery> queriesMap = new HashMap<String, AbstractRepositoryQuery>(); >+ for (AbstractRepositoryQuery query : queriesSet) { >+ queriesMap.put(query.getHandleIdentifier(), query); >+ } >+ >+ // check that the actual result is correct >+ assertTrue("'Test Query' query inserted", queriesMap.containsKey("Test Query")); >+ assertTrue("1 repository is loaded", TasksUiPlugin.getRepositoryManager().getRepository( >+ MockRepositoryConnector.REPOSITORY_URL) != null); >+ >+ } >+ > > private void removeFiles(File root) { > if (root.isDirectory()) { >Index: src/org/eclipse/mylyn/tasks/tests/connector/MockTaskListFactory.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.tests/src/org/eclipse/mylyn/tasks/tests/connector/MockTaskListFactory.java,v >retrieving revision 1.5 >diff -u -r1.5 MockTaskListFactory.java >--- src/org/eclipse/mylyn/tasks/tests/connector/MockTaskListFactory.java 10 Jul 2007 20:00:48 -0000 1.5 >+++ src/org/eclipse/mylyn/tasks/tests/connector/MockTaskListFactory.java 2 Aug 2007 16:34:34 -0000 >@@ -18,6 +18,7 @@ > > /** > * @author Mik Kersten >+ * @author Jevgeni Holodkov > */ > public class MockTaskListFactory extends AbstractTaskListFactory { > >@@ -52,6 +53,7 @@ > @Override > public AbstractRepositoryQuery createQuery(String repositoryUrl, String queryString, String label, Element element) { > MockRepositoryQuery query = new MockRepositoryQuery(label, queryString); >+ query.setRepositoryUrl(repositoryUrl); > return query; > } > >#P org.eclipse.mylyn.tasks.ui >Index: src/org/eclipse/mylyn/internal/tasks/ui/util/TaskListWriter.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TaskListWriter.java,v >retrieving revision 1.37 >diff -u -r1.37 TaskListWriter.java >--- src/org/eclipse/mylyn/internal/tasks/ui/util/TaskListWriter.java 24 Jul 2007 05:59:41 -0000 1.37 >+++ src/org/eclipse/mylyn/internal/tasks/ui/util/TaskListWriter.java 2 Aug 2007 16:34:35 -0000 >@@ -17,6 +17,7 @@ > import java.util.ArrayList; > import java.util.Date; > import java.util.HashMap; >+import java.util.HashSet; > import java.util.List; > import java.util.Map; > import java.util.Set; >@@ -40,13 +41,16 @@ > import org.eclipse.jface.dialogs.MessageDialog; > import org.eclipse.mylyn.internal.tasks.core.TaskDataManager; > import org.eclipse.mylyn.internal.tasks.core.TaskExternalizationException; >+import org.eclipse.mylyn.internal.tasks.core.TaskRepositoriesExternalizer; > import org.eclipse.mylyn.internal.tasks.ui.ITasksUiConstants; > import org.eclipse.mylyn.monitor.core.StatusHandler; > import org.eclipse.mylyn.tasks.core.AbstractRepositoryQuery; >-import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; > import org.eclipse.mylyn.tasks.core.AbstractTask; >+import org.eclipse.mylyn.tasks.core.AbstractTaskContainer; > import org.eclipse.mylyn.tasks.core.AbstractTaskListFactory; > import org.eclipse.mylyn.tasks.core.TaskList; >+import org.eclipse.mylyn.tasks.core.TaskRepository; >+import org.eclipse.mylyn.tasks.ui.TasksUiPlugin; > import org.w3c.dom.Document; > import org.w3c.dom.Element; > import org.w3c.dom.Node; >@@ -82,6 +86,8 @@ > private List<AbstractTaskListFactory> externalizers; > > private DelegatingTaskExternalizer delagatingExternalizer; >+ >+ private TaskRepositoriesExternalizer repositoriesExternalizer; > > private List<Node> orphanedTaskNodes = new ArrayList<Node>(); > >@@ -93,6 +99,7 @@ > > public TaskListWriter() { > this.delagatingExternalizer = new DelegatingTaskExternalizer(); >+ this.repositoriesExternalizer = new TaskRepositoriesExternalizer(); > } > > public void setDelegateExternalizers(List<AbstractTaskListFactory> externalizers) { >@@ -196,13 +203,7 @@ > private void writeDOMtoFile(Document doc, File file) { > try { > ZipOutputStream outputStream = new ZipOutputStream(new FileOutputStream(file)); >- ZipEntry zipEntry = new ZipEntry(ITasksUiConstants.OLD_TASK_LIST_FILE); >- outputStream.putNextEntry(zipEntry); >- outputStream.setMethod(ZipOutputStream.DEFLATED); >- // OutputStream outputStream = new FileOutputStream(file); >- writeDOMtoStream(doc, outputStream); >- outputStream.flush(); >- outputStream.closeEntry(); >+ writeTaskListToZipEntry(doc, outputStream); > outputStream.close(); > } catch (Exception fnfe) { > StatusHandler.log(fnfe, "TaskList could not be found"); >@@ -210,6 +211,21 @@ > } > > /** >+ * @param doc >+ * @param outputStream >+ * @throws IOException >+ */ >+ private void writeTaskListToZipEntry(Document doc, ZipOutputStream outputStream) throws IOException { >+ ZipEntry zipEntry = new ZipEntry(ITasksUiConstants.OLD_TASK_LIST_FILE); >+ outputStream.putNextEntry(zipEntry); >+ outputStream.setMethod(ZipOutputStream.DEFLATED); >+ // OutputStream outputStream = new FileOutputStream(file); >+ writeDOMtoStream(doc, outputStream); >+ outputStream.flush(); >+ outputStream.closeEntry(); >+ } >+ >+ /** > * Writes the provided XML document out to the specified output stream. > * > * doc - the document to be written outputStream - the stream to which the document is to be written >@@ -427,7 +443,17 @@ > if (inputFile.getName().endsWith(ITasksUiConstants.FILE_EXTENSION)) { > // is zipped context > inputStream = new ZipInputStream(new FileInputStream(inputFile)); >- ((ZipInputStream) inputStream).getNextEntry(); >+ // search for TaskList entry >+ ZipEntry entry = ((ZipInputStream) inputStream).getNextEntry(); >+ while (entry != null) { >+ if (ITasksUiConstants.OLD_TASK_LIST_FILE.equals(entry.getName())) { >+ break; >+ } >+ entry = ((ZipInputStream) inputStream).getNextEntry(); >+ } >+ if (entry == null) { >+ return null; >+ } > } else { > inputStream = new FileInputStream(inputFile); > } >@@ -494,9 +520,24 @@ > } > > public void writeQueries(List<AbstractRepositoryQuery> queries, File outFile) { >+ Set<TaskRepository> repositories = new HashSet<TaskRepository>(); >+ for (AbstractRepositoryQuery query : queries) { >+ TaskRepository repository = TasksUiPlugin.getRepositoryManager().getRepository(query.getRepositoryUrl()); >+ if (repository != null) { >+ repositories.add(repository); >+ } >+ } >+ > Document doc = createQueryDocument(queries); > if (doc != null) { >- writeDOMtoFile(doc, outFile); >+ try { >+ ZipOutputStream outputStream = new ZipOutputStream(new FileOutputStream(outFile)); >+ writeTaskListToZipEntry(doc, outputStream); >+ repositoriesExternalizer.writeRepositoriesToZipEntry(repositories, outputStream); >+ outputStream.close(); >+ } catch (Exception fnfe) { >+ StatusHandler.log(fnfe, "TaskList could not be found"); >+ } > } > return; > } >@@ -582,4 +623,12 @@ > > return queries; > } >+ >+ public Set<TaskRepository> readRepositories(File file) { >+ Set<TaskRepository> repository = repositoriesExternalizer.readRepositoriesFromXML(file); >+ if (repository == null) { >+ repository = new HashSet<TaskRepository>(); >+ } >+ return repository; >+ } > } >Index: src/org/eclipse/mylyn/internal/tasks/ui/actions/QueryImportAction.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/QueryImportAction.java,v >retrieving revision 1.1 >diff -u -r1.1 QueryImportAction.java >--- src/org/eclipse/mylyn/internal/tasks/ui/actions/QueryImportAction.java 24 Jul 2007 05:59:41 -0000 1.1 >+++ src/org/eclipse/mylyn/internal/tasks/ui/actions/QueryImportAction.java 2 Aug 2007 16:34:35 -0000 >@@ -10,6 +10,7 @@ > > import java.io.File; > import java.util.List; >+import java.util.Set; > > import org.eclipse.jface.action.Action; > import org.eclipse.jface.action.IAction; >@@ -17,6 +18,7 @@ > import org.eclipse.jface.viewers.ISelection; > import org.eclipse.mylyn.internal.tasks.ui.ITasksUiConstants; > import org.eclipse.mylyn.tasks.core.AbstractRepositoryQuery; >+import org.eclipse.mylyn.tasks.core.TaskRepository; > import org.eclipse.mylyn.tasks.ui.TasksUiPlugin; > import org.eclipse.swt.widgets.FileDialog; > import org.eclipse.swt.widgets.Shell; >@@ -58,25 +60,12 @@ > .getTaskListWriter() > .readQueries(file); > >+ Set<TaskRepository> repositories = TasksUiPlugin.getTaskListManager() >+ .getTaskListWriter() >+ .readRepositories(file); >+ > if (queries.size() > 0) { >- List<AbstractRepositoryQuery> badQueries = TasksUiPlugin.getTaskListManager().insertQueries(queries); >- >- // notify user about importing >- String message = "The following queries were imported successfully: "; >- for(AbstractRepositoryQuery imported : queries) { >- if(!badQueries.contains(imported)) { >- message += "\n" + imported.getHandleIdentifier(); >- } >- } >- >- if(badQueries.size() > 0) { >- message += "\n\n These queries were not imported, since their repository was not found: "; >- for (AbstractRepositoryQuery bad : badQueries) { >- message += "\n" + bad.getHandleIdentifier(); >- } >- } >- >- MessageDialog.openInformation(shell, "Query Export Completed", message); >+ importQueries(queries, repositories, shell); > } else { > MessageDialog.openError(shell, "Query Export Error", > "The specified file is not an exported query. Please, check that you have provided the correct file."); >@@ -87,4 +76,31 @@ > return; > } > >+ /** >+ * @param queries >+ * @param repositories >+ * @param shell >+ */ >+ public void importQueries(List<AbstractRepositoryQuery> queries, Set<TaskRepository> repositories, Shell shell) { >+ TasksUiPlugin.getRepositoryManager().insertRepositories(repositories, TasksUiPlugin.getDefault().getRepositoriesFilePath()); >+ List<AbstractRepositoryQuery> badQueries = TasksUiPlugin.getTaskListManager().insertQueries(queries); >+ >+ // notify user about importing >+ String message = "The following queries were imported successfully: "; >+ for(AbstractRepositoryQuery imported : queries) { >+ if(!badQueries.contains(imported)) { >+ message += "\n" + imported.getHandleIdentifier(); >+ } >+ } >+ >+ if(badQueries.size() > 0) { >+ message += "\n\n These queries were not imported, since their repository was not found: "; >+ for (AbstractRepositoryQuery bad : badQueries) { >+ message += "\n" + bad.getHandleIdentifier(); >+ } >+ } >+ >+ MessageDialog.openInformation(shell, "Query Export Completed", message); >+ } >+ > } >Index: src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListDropAdapter.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListDropAdapter.java,v >retrieving revision 1.37 >diff -u -r1.37 TaskListDropAdapter.java >--- src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListDropAdapter.java 26 Jun 2007 23:01:43 -0000 1.37 >+++ src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListDropAdapter.java 2 Aug 2007 16:34:35 -0000 >@@ -11,7 +11,9 @@ > import java.io.File; > import java.util.ArrayList; > import java.util.Calendar; >+import java.util.HashSet; > import java.util.List; >+import java.util.Set; > > import org.eclipse.core.runtime.CoreException; > import org.eclipse.core.runtime.NullProgressMonitor; >@@ -29,6 +31,7 @@ > import org.eclipse.mylyn.internal.tasks.ui.ITasksUiConstants; > import org.eclipse.mylyn.internal.tasks.ui.RetrieveTitleFromUrlJob; > import org.eclipse.mylyn.internal.tasks.ui.TaskTransfer; >+import org.eclipse.mylyn.internal.tasks.ui.actions.QueryImportAction; > import org.eclipse.mylyn.internal.tasks.ui.actions.TaskActivateAction; > import org.eclipse.mylyn.monitor.core.StatusHandler; > import org.eclipse.mylyn.tasks.core.AbstractRepositoryConnector; >@@ -47,6 +50,7 @@ > /** > * @author Mik Kersten > * @author Rob Elves (added URL based task creation support) >+ * @author Jevgeni Holodkov > */ > public class TaskListDropAdapter extends ViewerDropAdapter { > >@@ -88,11 +92,9 @@ > } else if (data instanceof String && createTaskFromString((String) data)) { > tasksToMove.add(newTask); > } else if (FileTransfer.getInstance().isSupportedType(currentTransfer)) { >- AbstractTask targetTask = null; >+ // transfer the context if the target is a Task > if (getCurrentTarget() instanceof AbstractTask) { >- targetTask = (AbstractTask) getCurrentTarget(); >- } >- if (targetTask != null) { >+ AbstractTask targetTask = (AbstractTask) getCurrentTarget(); > final String[] names = (String[]) data; > boolean confirmed = MessageDialog.openConfirm(getViewer().getControl().getShell(), > ITasksUiConstants.TITLE_DIALOG, "Overwrite the context of the target task with the source's?"); >@@ -105,6 +107,22 @@ > new TaskActivateAction().run(targetTask); > } > } >+ } else { >+ // otherwise it is queries >+ final String[] names = (String[]) data; >+ List<AbstractRepositoryQuery> queries = new ArrayList<AbstractRepositoryQuery>(); >+ Set<TaskRepository> repositories = new HashSet<TaskRepository>(); >+ for (int i = 0; i < names.length; i++) { >+ String path = names[i]; >+ File file = new File(path); >+ if (file.isFile()) { >+ queries.addAll(TasksUiPlugin.getTaskListManager().getTaskListWriter().readQueries(file)); >+ repositories.addAll(TasksUiPlugin.getTaskListManager().getTaskListWriter().readRepositories(file)); >+ } >+ } >+ if (queries.size() > 0) { >+ new QueryImportAction().importQueries(queries, repositories, getViewer().getControl().getShell()); >+ } > } > } > >@@ -256,9 +274,8 @@ > > Object selectedObject = ((IStructuredSelection) ((TreeViewer) getViewer()).getSelection()).getFirstElement(); > if (FileTransfer.getInstance().isSupportedType(currentTransfer)) { >- if (getCurrentTarget() instanceof AbstractTask) { >- return true; >- } >+ // handle all files >+ return true; > } else if (selectedObject != null && !(selectedObject instanceof AbstractRepositoryQuery)) { > if (getCurrentTarget() instanceof TaskCategory || getCurrentTarget() instanceof UnfiledCategory) { > return true;
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 189518
:
73436
|
73437
|
73863
|
73864
|
74255
|
74256
|
74262
|
74263
|
74311
| 75245 |
75246