--- a/src/main/java/net/timbusproject/dpes/alternative/kb/Package.java
+++ b/src/main/java/net/timbusproject/dpes/alternative/kb/Package.java
@@ -31,27 +31,26 @@
private static final long serialVersionUID = 1L;
public Package() {
- this.conflicts = new LinkedList<VersionedPackage>();
- this.depends = new LinkedList<VersionedPackage>();
- this.recommends = new LinkedList<VersionedPackage>();
- this.provides = new LinkedList<VersionedPackage>();
+ }
+
+ public Package(String name) {
+ this();
+ setName(name);
}
private String name;
- private Integer version;
-
private String suite;
private String section;
- private final LinkedList<VersionedPackage> depends;
-
- private final LinkedList<VersionedPackage> conflicts;
-
- private final LinkedList<VersionedPackage> recommends;
-
- private final LinkedList<VersionedPackage> provides;
+ private final LinkedList<PackageRelation> depends = new LinkedList<PackageRelation>();
+
+ private final LinkedList<PackageRelation> conflicts = new LinkedList<PackageRelation>();
+
+ private final LinkedList<PackageRelation> recommends = new LinkedList<PackageRelation>();
+
+ private final LinkedList<Package> provides = new LinkedList<Package>();
private Boolean installed;
@@ -81,14 +80,6 @@
this.name = name;
}
- public Integer getVersion() {
- return this.version;
- }
-
- public void setVersion(Integer version) {
- this.version = version;
- }
-
public String getSuite() {
return suite;
}
@@ -97,31 +88,31 @@
this.suite = suite;
}
- public LinkedList<VersionedPackage> getDepends() {
+ public LinkedList<PackageRelation> getDepends() {
return this.depends;
}
- public void setDepends(Collection<VersionedPackage> arrayList) {
+ public void setDepends(Collection<PackageRelation> arrayList) {
this.depends.addAll(arrayList);
}
- public LinkedList<VersionedPackage> getConflicts() {
+ public LinkedList<PackageRelation> getConflicts() {
return this.conflicts;
}
- public void setConflicts(Collection<VersionedPackage> conflicts) {
+ public void setConflicts(Collection<PackageRelation> conflicts) {
this.conflicts.addAll(conflicts);
}
- public LinkedList<VersionedPackage> getRecommends() {
+ public LinkedList<PackageRelation> getRecommends() {
return this.recommends;
}
- public void setRecommends(Collection<VersionedPackage> recommends) {
+ public void setRecommends(Collection<PackageRelation> recommends) {
this.recommends.addAll(recommends);
}
- public LinkedList<VersionedPackage> getProvides() {
+ public LinkedList<Package> getProvides() {
return provides;
}
@@ -179,7 +170,7 @@
@Override
public String toString() {
- return "package: " + this.name + " version: " + this.version;
+ return "package: " + this.name;
}
public void setDependsString(String dependsString) {
@@ -203,36 +194,70 @@
}
public void resolveLinks(Map<String, Package> packageNameMap) {
- setDepends(parseVersionedPackages(dependsString));
- setRecommends(parseVersionedPackages(recommendsString));
- setConflicts(parseVersionedPackages(conflictsString));
- }
-
- public ArrayList<VersionedPackage> parseVersionedPackages(String pkgListString) {
- ArrayList<VersionedPackage> pkgs = new ArrayList<VersionedPackage>();
+ setDepends(parseDependencyPackages(dependsString, packageNameMap));
+ setRecommends(parseDependencyPackages(recommendsString, packageNameMap));
+ setConflicts(parseDependencyPackages(conflictsString, packageNameMap));
+ }
+
+ public ArrayList<PackageRelation> parseDependencyPackages(String pkgListString, Map<String, Package> packageNameMap) {
+ ArrayList<PackageRelation> pkgs = new ArrayList<PackageRelation>();
if (pkgListString != null) {
final String[] elements = pkgListString.split(",");
for (String pkg : elements) {
- pkgs.add(parseVersionedPackage(pkg));
+ String packageRef = pkg.trim();
+
+ if (packageRef.contains("|")) {
+ // System.out.println("\t\tIgnoring package: " + parsedPackageInfo.getName() + "; ref was: " + packageRef);
+ } else {
+ PackageRelation parsedPackageInfo = parsePackageInfo(packageRef, packageNameMap);
+ if (parsedPackageInfo != null) {
+ if (parsedPackageInfo.getTargetPackageName() == null) {
+ System.out.println("Got null package for ref: " + packageRef);
+ parsedPackageInfo = parsePackageInfo(packageRef, packageNameMap);
+ } else if (parsedPackageInfo.getTargetPackageName().contains("<")) {
+ System.out.println("Not parsed correctly package : " + parsedPackageInfo.getTargetPackageName() + "; ref was: "
+ + packageRef);
+ parsedPackageInfo = parsePackageInfo(packageRef, packageNameMap);
+ }
+ pkgs.add(parsedPackageInfo);
+ }
+ }
+
}
}
return pkgs;
}
- public VersionedPackage parseVersionedPackage(String string) {
- VersionedPackage pkg = new VersionedPackage();
- if (string.contains("(") && string.contains(")")) {
- String[] pkgParts = string.split("\\(");
- String pkgName = pkgParts[0].trim();
- String pkgVersionDetail = pkgParts[1].substring(0, pkgParts[1].indexOf(")")).trim();
- String[] pkgVersionDetailParts = pkgVersionDetail.split(" ");
- pkg.setName(pkgName);
- pkg.setConstraint(pkgVersionDetailParts[0].trim());
- pkg.setVersion(pkgVersionDetailParts[1].trim());
- } else {
- pkg.setName(string);
+ public PackageRelation parsePackageInfo(String packageRef, Map<String, Package> packageNameMap) {
+ if (packageRef.contains("(") && packageRef.contains(")")) { // assume a versioned package relation
+ String[] pkgParts = packageRef.split("\\(");
+ String targetPackageName = pkgParts[0].trim();
+
+ String pkgRelation = pkgParts[1].trim();
+ if (!pkgRelation.endsWith(")")) {
+ System.out.println("The package relation string details doesn't end with ) for " + pkgRelation);
+ return null;
+ }
+ pkgRelation = pkgRelation.substring(0, pkgRelation.length() - 1);
+ String[] pkgVersionDetailParts = pkgRelation.split(" ");
+
+ Package targetPackage = packageNameMap.get(targetPackageName);
+ if (targetPackage == null) {
+
+ }
+
+ PackageRelation packageRelation = new PackageRelation(targetPackageName);
+ packageRelation.setConstraint(pkgVersionDetailParts[0].trim());
+ packageRelation.setVersion(pkgVersionDetailParts[1].trim());
+ return packageRelation;
+ } else { // simple package relation
+ String targetPackageName = packageRef.trim();
+ Package targetPackage = packageNameMap.get(targetPackageName);
+ if (targetPackage == null) {
+
+ }
+ return new PackageRelation(targetPackageName);
}
- return pkg;
}
public void setPackageInformation(ArrayList<String> packageInformation) {