add loop to search for dependencies
This commit is contained in:
parent
4bd7f32dae
commit
5c0b0e115b
@ -1,13 +1,15 @@
|
|||||||
package fr.packageviewer.ArchParser;
|
package fr.packageviewer.ArchParser;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.json.JSONArray;
|
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
|
||||||
public class ArchParser {
|
public class ArchParser {
|
||||||
|
|
||||||
public String getPackageFromAPI(String packageName){
|
public String getPackageFromAPI(String packageName){
|
||||||
|
|
||||||
String jsonStr = """
|
String jsonStr = """
|
||||||
{
|
{
|
||||||
"version": 2,
|
"version": 2,
|
||||||
@ -66,15 +68,14 @@ public class ArchParser {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Will parse the given json and store data in a Package
|
* Will parse the given json and store data in a Package
|
||||||
* @param jsonResponse the given json string
|
* @param packageName the packag name to search
|
||||||
* @param depth depth to search dependencies
|
* @param depth depth to search dependencies
|
||||||
* @return new Package
|
* @return new Package
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public Package getPackageTree(String packageName, int depth){
|
public Package getPackageTree(String packageName, int depth){
|
||||||
String name, version, repo, description;
|
String name, version, repo, description;
|
||||||
JSONArray dependencies;
|
List<Package> deps = new ArrayList<>();
|
||||||
List<Package> deps;
|
|
||||||
|
|
||||||
// parse the json
|
// parse the json
|
||||||
JSONObject json = new JSONObject(getPackageFromAPI(packageName));
|
JSONObject json = new JSONObject(getPackageFromAPI(packageName));
|
||||||
@ -87,7 +88,19 @@ public class ArchParser {
|
|||||||
repo = resultJson.getString("repo");
|
repo = resultJson.getString("repo");
|
||||||
description = resultJson.getString("pkgdesc");
|
description = resultJson.getString("pkgdesc");
|
||||||
|
|
||||||
System.out.println(name);
|
// if we're at the maximum depth, return the package without its dependencies
|
||||||
return null;
|
if(depth==0){
|
||||||
|
return new Package(name, version, repo, description, Collections.emptyList());
|
||||||
|
} else {
|
||||||
|
for (Object depPackageNameObj : json.getJSONArray("depends")) {
|
||||||
|
// convert object into String
|
||||||
|
String depPackageName = (String) depPackageNameObj;
|
||||||
|
// add package into Package List
|
||||||
|
deps.add(getPackageTree(depPackageName, depth - 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO this doesn't seem clean
|
||||||
|
return new Package(name, version, repo, description, deps);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user