a/src/main/java/net/timbusproject/dpes/alternative/kb/Package.java b/src/main/java/net/timbusproject/dpes/alternative/kb/Package.java
...
...
29
 */
29
 */
30
public class Package implements Serializable {
30
public class Package implements Serializable {
31
    private static final long serialVersionUID = 1L;
31
    private static final long serialVersionUID = 1L;
32
32
33
    public Package() {
33
    public Package() {
34
        this.conflicts = new LinkedList<VersionedPackage>();
34
    }
35
        this.depends = new LinkedList<VersionedPackage>();
35
36
        this.recommends = new LinkedList<VersionedPackage>();
36
    public Package(String name) {
37
        this.provides = new LinkedList<VersionedPackage>();
37
        this();
38
        setName(name);
38
    }
39
    }
39
40
40
    private String name;
41
    private String name;
41
42
42
    private Integer version;
43
44
    private String suite;
43
    private String suite;
45
44
46
    private String section;
45
    private String section;
47
46
48
    private final LinkedList<VersionedPackage> depends;
47
    private final LinkedList<PackageRelation> depends = new LinkedList<PackageRelation>();
49
48
50
    private final LinkedList<VersionedPackage> conflicts;
49
    private final LinkedList<PackageRelation> conflicts = new LinkedList<PackageRelation>();
51
50
52
    private final LinkedList<VersionedPackage> recommends;
51
    private final LinkedList<PackageRelation> recommends = new LinkedList<PackageRelation>();
53
52
54
    private final LinkedList<VersionedPackage> provides;
53
    private final LinkedList<Package> provides = new LinkedList<Package>();
55
54
56
    private Boolean installed;
55
    private Boolean installed;
57
56
58
    private Integer size;
57
    private Integer size;
59
58
...
...
79
78
80
    public void setName(String name) {
79
    public void setName(String name) {
81
        this.name = name;
80
        this.name = name;
82
    }
81
    }
83
82
84
    public Integer getVersion() {
85
        return this.version;
86
    }
87
88
    public void setVersion(Integer version) {
89
        this.version = version;
90
    }
91
92
    public String getSuite() {
83
    public String getSuite() {
93
        return suite;
84
        return suite;
94
    }
85
    }
95
86
96
    public void setSuite(String suite) {
87
    public void setSuite(String suite) {
97
        this.suite = suite;
88
        this.suite = suite;
98
    }
89
    }
99
90
100
    public LinkedList<VersionedPackage> getDepends() {
91
    public LinkedList<PackageRelation> getDepends() {
101
        return this.depends;
92
        return this.depends;
102
    }
93
    }
103
94
104
    public void setDepends(Collection<VersionedPackage> arrayList) {
95
    public void setDepends(Collection<PackageRelation> arrayList) {
105
        this.depends.addAll(arrayList);
96
        this.depends.addAll(arrayList);
106
    }
97
    }
107
98
108
    public LinkedList<VersionedPackage> getConflicts() {
99
    public LinkedList<PackageRelation> getConflicts() {
109
        return this.conflicts;
100
        return this.conflicts;
110
    }
101
    }
111
102
112
    public void setConflicts(Collection<VersionedPackage> conflicts) {
103
    public void setConflicts(Collection<PackageRelation> conflicts) {
113
        this.conflicts.addAll(conflicts);
104
        this.conflicts.addAll(conflicts);
114
    }
105
    }
115
106
116
    public LinkedList<VersionedPackage> getRecommends() {
107
    public LinkedList<PackageRelation> getRecommends() {
117
        return this.recommends;
108
        return this.recommends;
118
    }
109
    }
119
110
120
    public void setRecommends(Collection<VersionedPackage> recommends) {
111
    public void setRecommends(Collection<PackageRelation> recommends) {
121
        this.recommends.addAll(recommends);
112
        this.recommends.addAll(recommends);
122
    }
113
    }
123
114
124
    public LinkedList<VersionedPackage> getProvides() {
115
    public LinkedList<Package> getProvides() {
125
        return provides;
116
        return provides;
126
    }
117
    }
127
118
128
    public void setProvides(VersionedPackage provides) {
119
    public void setProvides(VersionedPackage provides) {
129
        this.provides.add(provides);
120
        this.provides.add(provides);
...
...
177
        this.section = section;
168
        this.section = section;
178
    }
169
    }
179
170
180
    @Override
171
    @Override
181
    public String toString() {
172
    public String toString() {
182
        return "package: " + this.name + " version: " + this.version;
173
        return "package: " + this.name;
183
    }
174
    }
184
175
185
    public void setDependsString(String dependsString) {
176
    public void setDependsString(String dependsString) {
186
        this.dependsString = dependsString;
177
        this.dependsString = dependsString;
187
    }
178
    }
...
...
201
    public void setVersionString(String versionString) {
192
    public void setVersionString(String versionString) {
202
        this.versionString = versionString;
193
        this.versionString = versionString;
203
    }
194
    }
204
195
205
    public void resolveLinks(Map<String, Package> packageNameMap) {
196
    public void resolveLinks(Map<String, Package> packageNameMap) {
206
        setDepends(parseVersionedPackages(dependsString));
197
        setDepends(parseDependencyPackages(dependsString, packageNameMap));
207
        setRecommends(parseVersionedPackages(recommendsString));
198
        setRecommends(parseDependencyPackages(recommendsString, packageNameMap));
208
        setConflicts(parseVersionedPackages(conflictsString));
199
        setConflicts(parseDependencyPackages(conflictsString, packageNameMap));
209
    }
200
    }
210
201
211
    public ArrayList<VersionedPackage> parseVersionedPackages(String pkgListString) {
202
    public ArrayList<PackageRelation> parseDependencyPackages(String pkgListString, Map<String, Package> packageNameMap) {
212
        ArrayList<VersionedPackage> pkgs = new ArrayList<VersionedPackage>();
203
        ArrayList<PackageRelation> pkgs = new ArrayList<PackageRelation>();
213
        if (pkgListString != null) {
204
        if (pkgListString != null) {
214
            final String[] elements = pkgListString.split(",");
205
            final String[] elements = pkgListString.split(",");
215
            for (String pkg : elements) {
206
            for (String pkg : elements) {
207
                String packageRef = pkg.trim();
208
209
                if (packageRef.contains("|")) {
210
                    // System.out.println("\t\tIgnoring package: " + parsedPackageInfo.getName() + "; ref was: " + packageRef);
211
                } else {
212
                    PackageRelation parsedPackageInfo = parsePackageInfo(packageRef, packageNameMap);
213
                    if (parsedPackageInfo != null) {
214
                        if (parsedPackageInfo.getTargetPackageName() == null) {
215
                            System.out.println("Got null package for ref: " + packageRef);
216
                            parsedPackageInfo = parsePackageInfo(packageRef, packageNameMap);
217
                        } else if (parsedPackageInfo.getTargetPackageName().contains("<")) {
218
                            System.out.println("Not parsed correctly package : " + parsedPackageInfo.getTargetPackageName() + "; ref was: "
219
                                    + packageRef);
220
                            parsedPackageInfo = parsePackageInfo(packageRef, packageNameMap);
221
                        }
216
                pkgs.add(parseVersionedPackage(pkg));
222
                        pkgs.add(parsedPackageInfo);
223
                    }
224
                }
225
217
            }
226
            }
218
        }
227
        }
219
        return pkgs;
228
        return pkgs;
220
    }
229
    }
221
230
222
    public VersionedPackage parseVersionedPackage(String string) {
231
    public PackageRelation parsePackageInfo(String packageRef, Map<String, Package> packageNameMap) {
223
        VersionedPackage pkg = new VersionedPackage();
232
        if (packageRef.contains("(") && packageRef.contains(")")) { // assume a versioned package relation
224
        if (string.contains("(") && string.contains(")")) {
225
            String[] pkgParts = string.split("\\(");
233
            String[] pkgParts = packageRef.split("\\(");
226
            String pkgName = pkgParts[0].trim();
234
            String targetPackageName = pkgParts[0].trim();
227
            String pkgVersionDetail = pkgParts[1].substring(0, pkgParts[1].indexOf(")")).trim();
235
236
            String pkgRelation = pkgParts[1].trim();
237
            if (!pkgRelation.endsWith(")")) {
238
                System.out.println("The package relation string details doesn't end with ) for " + pkgRelation);
239
                return null;
240
            }
241
            pkgRelation = pkgRelation.substring(0, pkgRelation.length() - 1);
228
            String[] pkgVersionDetailParts = pkgVersionDetail.split(" ");
242
            String[] pkgVersionDetailParts = pkgRelation.split(" ");
229
            pkg.setName(pkgName);
243
244
            Package targetPackage = packageNameMap.get(targetPackageName);
245
            if (targetPackage == null) {
246
247
            }
248
249
            PackageRelation packageRelation = new PackageRelation(targetPackageName);
230
            pkg.setConstraint(pkgVersionDetailParts[0].trim());
250
            packageRelation.setConstraint(pkgVersionDetailParts[0].trim());
231
            pkg.setVersion(pkgVersionDetailParts[1].trim());
251
            packageRelation.setVersion(pkgVersionDetailParts[1].trim());
232
        } else {
252
            return packageRelation;
233
            pkg.setName(string);
253
        } else { // simple package relation
254
            String targetPackageName = packageRef.trim();
255
            Package targetPackage = packageNameMap.get(targetPackageName);
256
            if (targetPackage == null) {
257
258
            }
259
            return new PackageRelation(targetPackageName);
234
        }
260
        }
235
        return pkg;
236
    }
261
    }
237
262
238
    public void setPackageInformation(ArrayList<String> packageInformation) {
263
    public void setPackageInformation(ArrayList<String> packageInformation) {
239
        this.packageInformation = packageInformation;
264
        this.packageInformation = packageInformation;
240
    }
265
    }