diff --git a/services/pom.xml b/services/pom.xml index 0c48b240f..cecbd11d3 100644 --- a/services/pom.xml +++ b/services/pom.xml @@ -136,6 +136,7 @@ **/*.gif **/*.jpg **/*.png + **/*.idx diff --git a/services/src/main/java/org/exoplatform/webconferencing/domain/CallEntity.java b/services/src/main/java/org/exoplatform/webconferencing/domain/CallEntity.java index 37887e4ac..f263bcad6 100644 --- a/services/src/main/java/org/exoplatform/webconferencing/domain/CallEntity.java +++ b/services/src/main/java/org/exoplatform/webconferencing/domain/CallEntity.java @@ -26,33 +26,21 @@ import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.Id; -import jakarta.persistence.NamedQueries; import jakarta.persistence.NamedQuery; import jakarta.persistence.Table; -import org.exoplatform.commons.api.persistence.ExoEntity; -import org.exoplatform.webconferencing.WebConferencingService; - -/** - * Created by The eXo Platform SAS. - * - * @author Peter Nedonosko - * @version $Id: CallEntity.java 00000 Dec 22, 2017 pnedonosko $ - */ @Entity(name = "WebConfCall") -@ExoEntity @Table(name = "WBC_CALLS") -@NamedQueries({ - @NamedQuery(name = "WebConfCall.findGroupCallByOwnerId", // XXX skip OWNER_TYPE_SPACEEVENT to do get only spaces and user - query = "SELECT c FROM WebConfCall c WHERE c.isGroup = true AND c.ownerType != '" + OWNER_TYPE_SPACEEVENT + "' AND c.ownerId = :ownerId"), - @NamedQuery(name = "WebConfCall.findGroupCallByOwnerTypeId", - query = "SELECT c FROM WebConfCall c WHERE c.isGroup = true AND c.ownerType = :ownerType AND c.ownerId = :ownerId ORDER BY c.lastDate"), // TODO order by startDate - @NamedQuery(name = "WebConfCall.findUserGroupCalls", - query = "SELECT c FROM WebConfCall c, WebConfParticipant p WHERE c.id = p.callId AND p.id = :userId ORDER BY c.lastDate"), - @NamedQuery(name = "WebConfCall.deleteOwnerOlderCalls", - query = "DELETE FROM WebConfCall WHERE ownerType = :ownerType AND lastDate <= :expiredDate"), - @NamedQuery(name = "WebConfCall.findGroupCallsByState", - query = "SELECT c FROM WebConfCall c WHERE c.state = :state AND c.ownerType != '" + OWNER_TYPE_USER + "'")}) +@NamedQuery(name = "WebConfCall.findGroupCallByOwnerId", // XXX skip OWNER_TYPE_SPACEEVENT to do get only spaces and user + query = "SELECT c FROM WebConfCall c WHERE c.isGroup = true AND c.ownerType != '" + OWNER_TYPE_SPACEEVENT + "' AND c.ownerId = :ownerId") +@NamedQuery(name = "WebConfCall.findGroupCallByOwnerTypeId", + query = "SELECT c FROM WebConfCall c WHERE c.isGroup = true AND c.ownerType = :ownerType AND c.ownerId = :ownerId ORDER BY c.lastDate") // TODO order by startDate +@NamedQuery(name = "WebConfCall.findUserGroupCalls", + query = "SELECT c FROM WebConfCall c, WebConfParticipant p WHERE c.id = p.callId AND p.id = :userId ORDER BY c.lastDate") +@NamedQuery(name = "WebConfCall.deleteOwnerOlderCalls", + query = "DELETE FROM WebConfCall WHERE ownerType = :ownerType AND lastDate <= :expiredDate") +@NamedQuery(name = "WebConfCall.findGroupCallsByState", + query = "SELECT c FROM WebConfCall c WHERE c.state = :state AND c.ownerType != '" + OWNER_TYPE_USER + "'") public class CallEntity { /** The id. */ @@ -104,12 +92,6 @@ public class CallEntity { @Column(name = "IS_USER") protected boolean isUser; - /** - * Instantiates a new call entity. - */ - public CallEntity() { - } - /** * Gets the id. * diff --git a/services/src/main/java/org/exoplatform/webconferencing/domain/InviteEntity.java b/services/src/main/java/org/exoplatform/webconferencing/domain/InviteEntity.java index 155be1122..0f3822fb1 100644 --- a/services/src/main/java/org/exoplatform/webconferencing/domain/InviteEntity.java +++ b/services/src/main/java/org/exoplatform/webconferencing/domain/InviteEntity.java @@ -4,22 +4,16 @@ import jakarta.persistence.Entity; import jakarta.persistence.Id; import jakarta.persistence.IdClass; -import jakarta.persistence.NamedQueries; import jakarta.persistence.NamedQuery; import jakarta.persistence.Table; -import org.exoplatform.commons.api.persistence.ExoEntity; - /** * The Class InviteEntity. */ @Entity(name = "WebConfInvite") -@ExoEntity @Table(name = "WBC_INVITES") -@NamedQueries({ - @NamedQuery(name = "WebConfInvite.deleteCallInvites", query = "DELETE FROM WebConfInvite WHERE callId = :callId"), - @NamedQuery(name = "WebConfInvite.findCallInvites", query = "SELECT i FROM WebConfInvite i WHERE i.callId = :callId ORDER BY i.identity") -}) +@NamedQuery(name = "WebConfInvite.deleteCallInvites", query = "DELETE FROM WebConfInvite WHERE callId = :callId") +@NamedQuery(name = "WebConfInvite.findCallInvites", query = "SELECT i FROM WebConfInvite i WHERE i.callId = :callId ORDER BY i.identity") @IdClass(InviteId.class) public class InviteEntity { diff --git a/services/src/main/java/org/exoplatform/webconferencing/domain/InviteId.java b/services/src/main/java/org/exoplatform/webconferencing/domain/InviteId.java index 4d9e2d9fc..3b25907ae 100644 --- a/services/src/main/java/org/exoplatform/webconferencing/domain/InviteId.java +++ b/services/src/main/java/org/exoplatform/webconferencing/domain/InviteId.java @@ -91,11 +91,9 @@ public int hashCode() { */ @Override public boolean equals(Object obj) { - if (obj != null) { - if (InviteId.class.isAssignableFrom(obj.getClass())) { - InviteId other = InviteId.class.cast(obj); - return callId.equals(other.getCallId()) && identity.equals(other.getIdentity()); - } + if (obj != null && InviteId.class.isAssignableFrom(obj.getClass())) { + InviteId other = InviteId.class.cast(obj); + return callId.equals(other.getCallId()) && identity.equals(other.getIdentity()); } return false; } diff --git a/services/src/main/java/org/exoplatform/webconferencing/domain/OriginEntity.java b/services/src/main/java/org/exoplatform/webconferencing/domain/OriginEntity.java index 29ccdceed..f01671106 100644 --- a/services/src/main/java/org/exoplatform/webconferencing/domain/OriginEntity.java +++ b/services/src/main/java/org/exoplatform/webconferencing/domain/OriginEntity.java @@ -22,28 +22,18 @@ import jakarta.persistence.Entity; import jakarta.persistence.Id; import jakarta.persistence.IdClass; -import jakarta.persistence.NamedQueries; import jakarta.persistence.NamedQuery; import jakarta.persistence.Table; -import org.exoplatform.commons.api.persistence.ExoEntity; - /** * Call origins (from where participants are from). - * - * Created by The eXo Platform SAS. - * - * @author Peter Nedonosko - * @version $Id: OriginEntity.java 00000 Dec 18, 2020 pnedonosko $ */ @Entity(name = "WebConfOrigin") -@ExoEntity @Table(name = "WBC_ORIGINS") @IdClass(OriginId.class) -@NamedQueries({ - @NamedQuery(name = "WebConfOrigin.findCallOrigins", - query = "SELECT o FROM WebConfOrigin o WHERE o.callId = :callId AND o.type = :type ORDER BY o.type, o.state"), - @NamedQuery(name = "WebConfOrigin.deleteCallOrigins", query = "DELETE FROM WebConfOrigin WHERE callId = :callId") }) +@NamedQuery(name = "WebConfOrigin.findCallOrigins", + query = "SELECT o FROM WebConfOrigin o WHERE o.callId = :callId AND o.type = :type ORDER BY o.type, o.state") +@NamedQuery(name = "WebConfOrigin.deleteCallOrigins", query = "DELETE FROM WebConfOrigin WHERE callId = :callId") public class OriginEntity { /** The id. */ @@ -64,12 +54,6 @@ public class OriginEntity { @Column(name = "STATE") protected String state; - /** - * Instantiates a new origin entity. - */ - public OriginEntity() { - } - /** * Gets the id. * diff --git a/services/src/main/java/org/exoplatform/webconferencing/domain/OriginId.java b/services/src/main/java/org/exoplatform/webconferencing/domain/OriginId.java index ce7047a94..af5c7a142 100644 --- a/services/src/main/java/org/exoplatform/webconferencing/domain/OriginId.java +++ b/services/src/main/java/org/exoplatform/webconferencing/domain/OriginId.java @@ -28,6 +28,8 @@ */ public class OriginId implements Serializable { + private static final long serialVersionUID = -6786134308978492369L; + /** The id. */ protected String id; @@ -61,11 +63,9 @@ public OriginId(String id, String callId, String type) { * {@inheritDoc} */ public boolean equals(Object o) { - if (o != null) { - if (OriginId.class.isAssignableFrom(o.getClass())) { - OriginId other = OriginId.class.cast(o); - return id.equals(other.getId()) && callId.equals(other.getCallId()) && type.equals(other.getType()); - } + if (o != null && OriginId.class.isAssignableFrom(o.getClass())) { + OriginId other = OriginId.class.cast(o); + return id.equals(other.getId()) && callId.equals(other.getCallId()) && type.equals(other.getType()); } return false; } diff --git a/services/src/main/java/org/exoplatform/webconferencing/domain/ParticipantEntity.java b/services/src/main/java/org/exoplatform/webconferencing/domain/ParticipantEntity.java index dbeac6a45..4f3925c20 100644 --- a/services/src/main/java/org/exoplatform/webconferencing/domain/ParticipantEntity.java +++ b/services/src/main/java/org/exoplatform/webconferencing/domain/ParticipantEntity.java @@ -22,26 +22,18 @@ import jakarta.persistence.Entity; import jakarta.persistence.Id; import jakarta.persistence.IdClass; -import jakarta.persistence.NamedQueries; import jakarta.persistence.NamedQuery; import jakarta.persistence.Table; -import org.exoplatform.commons.api.persistence.ExoEntity; - /** * Created by The eXo Platform SAS. - * - * @author Peter Nedonosko - * @version $Id: ParticipantEntity.java 00000 Dec 22, 2017 pnedonosko $ */ @Entity(name = "WebConfParticipant") -@ExoEntity @Table(name = "WBC_PARTICIPANTS") @IdClass(ParticipantId.class) -@NamedQueries({ - @NamedQuery(name = "WebConfCall.findCallParts", - query = "SELECT p FROM WebConfParticipant p WHERE p.callId = :callId ORDER BY p.state, p.type"), - @NamedQuery(name = "WebConfCall.deleteCallParts", query = "DELETE FROM WebConfParticipant WHERE callId = :callId") }) +@NamedQuery(name = "WebConfCall.findCallParts", + query = "SELECT p FROM WebConfParticipant p WHERE p.callId = :callId ORDER BY p.state, p.type") +@NamedQuery(name = "WebConfCall.deleteCallParts", query = "DELETE FROM WebConfParticipant WHERE callId = :callId") public class ParticipantEntity { /** The id. */ @@ -66,12 +58,6 @@ public class ParticipantEntity { @Column(name = "CLIENT_ID") protected String clientId; - /** - * Instantiates a new participant entity. - */ - public ParticipantEntity() { - } - /** * Gets the id. * diff --git a/services/src/main/java/org/exoplatform/webconferencing/domain/ParticipantId.java b/services/src/main/java/org/exoplatform/webconferencing/domain/ParticipantId.java index b725d225a..ef3bc17e1 100644 --- a/services/src/main/java/org/exoplatform/webconferencing/domain/ParticipantId.java +++ b/services/src/main/java/org/exoplatform/webconferencing/domain/ParticipantId.java @@ -28,6 +28,8 @@ */ public class ParticipantId implements Serializable { + private static final long serialVersionUID = 3670760662832572112L; + /** The id. */ protected String id; @@ -56,11 +58,9 @@ public ParticipantId(String id, String callId) { * {@inheritDoc} */ public boolean equals(Object o) { - if (o != null) { - if (ParticipantId.class.isAssignableFrom(o.getClass())) { - ParticipantId other = ParticipantId.class.cast(o); - return id.equals(other.getId()) && callId.equals(other.getCallId()); - } + if (o != null && ParticipantId.class.isAssignableFrom(o.getClass())) { + ParticipantId other = ParticipantId.class.cast(o); + return id.equals(other.getId()) && callId.equals(other.getCallId()); } return false; } diff --git a/services/src/main/resources/jpa-entities.idx b/services/src/main/resources/jpa-entities.idx new file mode 100644 index 000000000..f31ad0d01 --- /dev/null +++ b/services/src/main/resources/jpa-entities.idx @@ -0,0 +1,4 @@ +org.exoplatform.webconferencing.domain.CallEntity +org.exoplatform.webconferencing.domain.InviteEntity +org.exoplatform.webconferencing.domain.OriginEntity +org.exoplatform.webconferencing.domain.ParticipantEntity diff --git a/webapp/pom.xml b/webapp/pom.xml index 99bd17388..d58868105 100644 --- a/webapp/pom.xml +++ b/webapp/pom.xml @@ -148,7 +148,7 @@ org.apache.maven.plugins maven-war-plugin - **/*.less,**/*.vue,css/lib/*,vue-apps/**,js/mock/**/*,**-dev.* + WEB-INF/lib/**,**/*.less,**/*.vue,css/lib/*,vue-apps/**,js/mock/**/*,**-dev.* diff --git a/webapp/src/main/java/org/exoplatform/webconferencing/WebConferencingApplication.java b/webapp/src/main/java/org/exoplatform/webconferencing/WebConferencingApplication.java index c354c280e..dfaa0c518 100644 --- a/webapp/src/main/java/org/exoplatform/webconferencing/WebConferencingApplication.java +++ b/webapp/src/main/java/org/exoplatform/webconferencing/WebConferencingApplication.java @@ -17,7 +17,7 @@ package org.exoplatform.webconferencing; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration; +import org.springframework.boot.liquibase.autoconfigure.LiquibaseAutoConfiguration; import org.springframework.context.annotation.PropertySource; import io.meeds.spring.AvailableIntegration; @@ -31,9 +31,9 @@ * Application Center badge means contributing a Spring bean, and a bean needs a * context to live in. Extending {@link PortalApplicationContextInitializer} * registers this WAR's context with the Kernel before the portal container - * boots, so beans of this add-on and of the platform become mutually - * injectable — which is how {@code VisioApplicationBadgePlugin} can - * {@code @Autowired} the Kernel-side {@link WebConferencingService}. + * boots, so beans of this add-on and of the platform become mutually injectable + * — which is how {@code VisioApplicationBadgePlugin} can {@code @Autowired} the + * Kernel-side {@link WebConferencingService}. *

* The scan is deliberately narrow. Only {@link #MODULE_NAME} is scanned, and * every class currently shipped under that package by this add-on, by @@ -65,13 +65,19 @@ * The JPA auto-configuration is deliberately not excluded, even though * this add-on owns no Spring-managed entity. Removing it was tried and broke * the boot differently: the platform modules scanned above expect an - * {@code entityManagerFactory} to exist ({@code jpaSharedEM_entityManagerFactory} - * resolves against it), so denying them one merely swaps a Liquibase failure - * for a missing-bean one. The add-on continues to manage its own schema through - * the Kernel regardless; the factory simply goes unused here. + * {@code entityManagerFactory} to exist + * ({@code jpaSharedEM_entityManagerFactory} resolves against it), so denying + * them one merely swaps a Liquibase failure for a missing-bean one. The add-on + * continues to manage its own schema through the Kernel regardless; the factory + * simply goes unused here. */ -@SpringBootApplication(scanBasePackages = { WebConferencingApplication.MODULE_NAME, AvailableIntegration.KERNEL_MODULE, - AvailableIntegration.WEB_MODULE }, exclude = { LiquibaseAutoConfiguration.class }) +@SpringBootApplication(scanBasePackages = { + WebConferencingApplication.MODULE_NAME, + AvailableIntegration.KERNEL_MODULE, + AvailableIntegration.WEB_MODULE +}, exclude = { + LiquibaseAutoConfiguration.class, +}) @PropertySource("classpath:application.properties") @PropertySource("classpath:application-common.properties") public class WebConferencingApplication extends PortalApplicationContextInitializer {