aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/io/trygvis/esper/testing/gitorious/GitoriousProject.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/io/trygvis/esper/testing/gitorious/GitoriousProject.java')
-rw-r--r--src/main/java/io/trygvis/esper/testing/gitorious/GitoriousProject.java89
1 files changed, 89 insertions, 0 deletions
diff --git a/src/main/java/io/trygvis/esper/testing/gitorious/GitoriousProject.java b/src/main/java/io/trygvis/esper/testing/gitorious/GitoriousProject.java
new file mode 100644
index 0000000..725b678
--- /dev/null
+++ b/src/main/java/io/trygvis/esper/testing/gitorious/GitoriousProject.java
@@ -0,0 +1,89 @@
+package io.trygvis.esper.testing.gitorious;
+
+import static org.apache.commons.lang.StringUtils.*;
+import org.dom4j.*;
+
+import java.net.*;
+import java.util.*;
+
+public class GitoriousProject {
+ public final String slug;
+ public final List<GitoriousRepository> repositories;
+
+ public GitoriousProject(String slug, List<GitoriousRepository> repositories) {
+ this.slug = slug;
+ this.repositories = repositories;
+ }
+
+ public static GitoriousProject fromXml(String gitoriousUrl, Element project) throws URISyntaxException {
+ String slug = trimToNull(project.elementText("slug"));
+
+ if (slug == null) {
+ System.out.println("Missing slug");
+ return null;
+ }
+
+ Element repositories = project.element("repositories");
+ if (repositories == null) {
+ System.out.println("Missing <repositories>");
+ return null;
+ }
+
+ Element mainlines = repositories.element("mainlines");
+ if (mainlines == null) {
+ System.out.println("Missing <mainlines>");
+ return null;
+ }
+
+ List<Element> list = (List<Element>) mainlines.elements("repository");
+ List<GitoriousRepository> repositoryList = new ArrayList<>(list.size());
+ for (Element repository : list) {
+ GitoriousRepository r = GitoriousRepository.fromXml(gitoriousUrl, slug, repository);
+
+ if (r == null) {
+ continue;
+ }
+
+ repositoryList.add(r);
+ }
+
+ return new GitoriousProject(slug, repositoryList);
+ }
+
+ public static List<GitoriousProject> projectsFromXml(String gitoriousUrl, Element root) throws URISyntaxException {
+ List<GitoriousProject> projects = new ArrayList<>();
+ for (Element project : (List<Element>) root.elements("project")) {
+
+ GitoriousProject p = GitoriousProject.fromXml(gitoriousUrl, project);
+ if (p == null) {
+ System.out.println(project.toString());
+ continue;
+ }
+ projects.add(p);
+ }
+
+ return projects;
+ }
+}
+
+class GitoriousRepository {
+ public final String project;
+ public final String name;
+ public final URI atom;
+
+ GitoriousRepository(String project, String name, URI atom) {
+ this.project = project;
+ this.name = name;
+ this.atom = atom;
+ }
+
+ public static GitoriousRepository fromXml(String gitoriousUrl, String project, Element element) throws URISyntaxException {
+ String name = trimToNull(element.elementText("name"));
+
+ if (name == null) {
+ return null;
+ }
+
+ return new GitoriousRepository(project, name, new URI(gitoriousUrl + "/" + project + "/" + name + ".atom"));
+ }
+}