diff --git a/src/main/java/de/jottyfan/timetrack/modules/projectmanagement/AppRepository.java b/src/main/java/de/jottyfan/timetrack/modules/projectmanagement/AppRepository.java index 3eba221..2a81a80 100644 --- a/src/main/java/de/jottyfan/timetrack/modules/projectmanagement/AppRepository.java +++ b/src/main/java/de/jottyfan/timetrack/modules/projectmanagement/AppRepository.java @@ -12,9 +12,12 @@ import java.util.Map; import org.jooq.DSLContext; import org.jooq.DeleteConditionStep; import org.jooq.InsertValuesStep2; +import org.jooq.Name; import org.jooq.Record1; import org.jooq.Record7; +import org.jooq.Record8; import org.jooq.SelectConditionStep; +import org.jooq.SelectHavingStep; import org.jooq.impl.DSL; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; @@ -31,7 +34,7 @@ import de.jottyfan.timetrack.modules.projectmanagement.model.WorkpackageBean; */ @Repository public class AppRepository { - + @Autowired private DSLContext jooq; @@ -42,7 +45,8 @@ public class AppRepository { * @return the list of app beans; an empty list at least */ public List getAllAppBeans(Integer fkWorkpackage) { - SelectConditionStep> sql = jooq + Name WORKPACKAGES = DSL.name("workpackages"); + SelectHavingStep> sql = jooq // @formatter:off .select(T_APP.PK_APP, T_APP.FK_BUNDLE, @@ -50,10 +54,19 @@ public class AppRepository { T_APP.NAME, T_APP.DESCRIPTION, T_APP.FK_REPLACED_BY_APP, - T_APP.REPOSITORY_URL) + T_APP.REPOSITORY_URL, + DSL.arrayAgg(T_WORKPACKAGE.NAME).as(WORKPACKAGES)) .from(T_APP) .leftJoin(T_WORKPACKAGE_APP).on(T_WORKPACKAGE_APP.FK_APP.eq(T_APP.PK_APP)) - .where(fkWorkpackage == null ? DSL.trueCondition() : T_WORKPACKAGE_APP.FK_WORKPACKAGE.eq(fkWorkpackage)); + .leftJoin(T_WORKPACKAGE).on(T_WORKPACKAGE.PK_WORKPACKAGE.eq(T_WORKPACKAGE_APP.FK_WORKPACKAGE)) + .where(fkWorkpackage == null ? DSL.trueCondition() : T_WORKPACKAGE_APP.FK_WORKPACKAGE.eq(fkWorkpackage)) + .groupBy(T_APP.PK_APP, + T_APP.FK_BUNDLE, + T_APP.BASIC_FUNCTIONALITY, + T_APP.NAME, + T_APP.DESCRIPTION, + T_APP.FK_REPLACED_BY_APP, + T_APP.REPOSITORY_URL); // @formatter:on return sql.fetchInto(AppBean.class); } diff --git a/src/main/java/de/jottyfan/timetrack/modules/projectmanagement/model/AppBean.java b/src/main/java/de/jottyfan/timetrack/modules/projectmanagement/model/AppBean.java index 7d146d6..0e25898 100644 --- a/src/main/java/de/jottyfan/timetrack/modules/projectmanagement/model/AppBean.java +++ b/src/main/java/de/jottyfan/timetrack/modules/projectmanagement/model/AppBean.java @@ -17,6 +17,17 @@ public class AppBean implements Serializable { private String description; private Integer fkReplacedByApp; private String repositoryUrl; + private String[] workpackages; + + public String workpackagesString() { + String result = null; + if (workpackages != null) { + for (String s : workpackages) { + result = result == null ? s : String.format("%s, %s", result, s); + } + } + return result; + } /** * @return the pkApp @@ -115,4 +126,18 @@ public class AppBean implements Serializable { public void setRepositoryUrl(String repositoryUrl) { this.repositoryUrl = repositoryUrl; } + + /** + * @return the workpackages + */ + public String[] getWorkpackages() { + return workpackages; + } + + /** + * @param workpackages the workpackages to set + */ + public void setWorkpackages(String[] workpackages) { + this.workpackages = workpackages; + } } diff --git a/src/main/resources/templates/projectmanagement/app/assign.html b/src/main/resources/templates/projectmanagement/app/assign.html index ea51f0e..37fd3d2 100644 --- a/src/main/resources/templates/projectmanagement/app/assign.html +++ b/src/main/resources/templates/projectmanagement/app/assign.html @@ -12,13 +12,13 @@
Name
-
+
Beschreibung
Basisfunktion
URL der Entwicklung
-
+
Ersetzt durch andere App
@@ -28,7 +28,7 @@
- +
diff --git a/src/main/resources/templates/projectmanagement/app/list.html b/src/main/resources/templates/projectmanagement/app/list.html index d65ef38..f7e69ac 100644 --- a/src/main/resources/templates/projectmanagement/app/list.html +++ b/src/main/resources/templates/projectmanagement/app/list.html @@ -26,7 +26,7 @@ gitlab - zuordnen + zuordnen