|
1 | 1 | package fi.helsinki.cs.tmc.actions;
|
2 | 2 |
|
| 3 | +import fi.helsinki.cs.tmc.core.TmcCore; |
3 | 4 | import fi.helsinki.cs.tmc.core.communication.TmcServerCommunicationTaskFactory;
|
4 | 5 | import fi.helsinki.cs.tmc.core.domain.Exercise;
|
| 6 | +import fi.helsinki.cs.tmc.core.domain.ProgressObserver; |
5 | 7 | import fi.helsinki.cs.tmc.core.utilities.ServerErrorHelper;
|
6 | 8 | import fi.helsinki.cs.tmc.core.events.TmcEvent;
|
7 | 9 | import fi.helsinki.cs.tmc.events.TmcEventBus;
|
|
15 | 17 | import fi.helsinki.cs.tmc.utilities.BgTaskListener;
|
16 | 18 | import fi.helsinki.cs.tmc.utilities.zip.NbProjectUnzipper;
|
17 | 19 |
|
| 20 | +import com.google.common.collect.ImmutableList; |
18 | 21 | import java.awt.event.ActionEvent;
|
19 | 22 | import java.awt.event.ActionListener;
|
20 | 23 | import java.io.File;
|
21 | 24 | import java.io.IOException;
|
22 | 25 | import java.util.ArrayList;
|
23 | 26 | import java.util.Collection;
|
24 | 27 | import java.util.List;
|
| 28 | +import java.util.concurrent.Callable; |
25 | 29 | import java.util.logging.Logger;
|
26 | 30 |
|
27 | 31 | public class UpdateExercisesAction implements ActionListener {
|
@@ -77,27 +81,14 @@ public void bgTaskFailed(Throwable ex) {
|
77 | 81 | final File projectDir = projectMediator.getProjectDirForExercise(exercise);
|
78 | 82 | eventBus.post(new InvokedEvent(exercise));
|
79 | 83 |
|
80 |
| - BgTask.start("Downloading " + exercise.getName(), new TmcServerCommunicationTaskFactory().getDownloadingExerciseZipTask(exercise), new BgTaskListener<byte[]>() { |
| 84 | + Callable<List<Exercise>> downloadAndExtractExerciseTask = TmcCore.get().downloadOrUpdateExercises(ProgressObserver.NULL_OBSERVER, ImmutableList.of(exercise)); |
| 85 | + BgTask.start("Downloading " + exercise.getName(), downloadAndExtractExerciseTask, new BgTaskListener<List<Exercise>>() { |
81 | 86 |
|
82 | 87 | @Override
|
83 |
| - public void bgTaskReady(byte[] data) { |
84 |
| - TmcProjectInfo project = null; |
85 |
| - try { |
86 |
| - try { |
87 |
| - ExerciseUpdateOverwritingDecider overwriter = new ExerciseUpdateOverwritingDecider(projectDir); |
88 |
| - NbProjectUnzipper unzipper = new NbProjectUnzipper(overwriter); |
89 |
| - NbProjectUnzipper.Result result = unzipper.unzipProject(data, projectDir); |
90 |
| - log.info("== Exercise unzip result ==\n" + result); |
91 |
| - } catch (IOException ex) { |
92 |
| - dialogDisplayer.displayError("Failed to update project.", ex); |
93 |
| - return; |
94 |
| - } |
95 |
| - courseDb.exerciseDownloaded(exercise); |
96 |
| - |
97 |
| - project = projectMediator.tryGetProjectForExercise(exercise); |
98 |
| - } finally { |
99 |
| - projectOpener.bgTaskReady(project); |
100 |
| - } |
| 88 | + public void bgTaskReady(List<Exercise> exercises) { |
| 89 | + courseDb.exerciseDownloaded(exercise); |
| 90 | + TmcProjectInfo project = projectMediator.tryGetProjectForExercise(exercise); |
| 91 | + projectOpener.bgTaskReady(project); |
101 | 92 | }
|
102 | 93 |
|
103 | 94 | @Override
|
|
0 commit comments