1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.module;
35
36 import info.magnolia.module.model.ModuleDefinition;
37 import info.magnolia.module.model.Version;
38 import info.magnolia.module.ui.ModuleManagerUI;
39 import info.magnolia.module.delta.Delta;
40 import info.magnolia.objectfactory.Components;
41
42 import java.util.ArrayList;
43 import java.util.List;
44
45
46
47
48
49
50
51
52 public interface ModuleManager {
53
54
55
56
57
58 List<ModuleDefinition> loadDefinitions() throws ModuleManagementException;
59
60
61
62
63 void checkForInstallOrUpdates() throws ModuleManagementException;
64
65
66
67
68
69 ModuleManagementState getStatus();
70
71 ModuleManagerUI getUI();
72
73 void performInstallOrUpdate();
74
75 InstallContext getInstallContext();
76
77 void startModules();
78
79 void stopModules();
80
81
82
83
84 public class Factory {
85 public static ModuleManager getInstance() {
86 return Components.getSingleton(ModuleManager.class);
87 }
88 }
89
90
91
92
93 public final static class ModuleManagementState {
94 private final List<ModuleAndDeltas> list;
95
96 public ModuleManagementState() {
97 this.list = new ArrayList<ModuleAndDeltas>();
98 }
99
100 public boolean needsUpdateOrInstall() {
101 return !(list.isEmpty());
102 }
103
104 void addModule(ModuleDefinition module, Version currentVersion, List<Delta> deltas) {
105 list.add(new ModuleAndDeltas(module, currentVersion, deltas));
106 }
107
108 public List<ModuleAndDeltas> getList() {
109 return list;
110 }
111 }
112
113
114
115
116 public final static class ModuleAndDeltas {
117 private final ModuleDefinition module;
118 private final Version currentVersion;
119 private final List<Delta> deltas;
120
121 public ModuleAndDeltas(ModuleDefinition module, Version currentVersion, List<Delta> deltas) {
122 this.module = module;
123 this.currentVersion = currentVersion;
124 this.deltas = deltas;
125 }
126
127 public ModuleDefinition getModule() {
128 return module;
129 }
130
131 public Version getCurrentVersion() {
132 return currentVersion;
133 }
134
135 public List<Delta> getDeltas() {
136 return deltas;
137 }
138
139 public String toString() {
140 final StringBuffer sb = new StringBuffer("ModuleAndDeltas for ");
141 sb.append(module.getName());
142 if (currentVersion != null) {
143 sb.append(": current version is ");
144 sb.append(currentVersion);
145 sb.append(", updating to ");
146 } else {
147 sb.append(": installing version ");
148 }
149 sb.append(module.getVersion());
150 sb.append(" with ");
151 sb.append(deltas.size());
152 sb.append(" deltas.");
153 return sb.toString();
154 }
155 }
156
157 }