diff --git a/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/model/sql/EventClass.java b/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/model/sql/EventClass.java index bf7fe2bd0c..105c05371d 100644 --- a/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/model/sql/EventClass.java +++ b/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/model/sql/EventClass.java @@ -62,10 +62,6 @@ public EventClass(EventClassDto dto) { if (tenantId != null) { this.tenant = new Tenant(tenantId); } - Long ecfId = getLongId(dto.getEcfId()); - if (ecfId != null) { - this.ecf = new EventClassFamilyVersion(ecfId); - } this.fqn = dto.getFqn(); this.type = dto.getType(); } diff --git a/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/model/sql/EventClassFamily.java b/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/model/sql/EventClassFamily.java index fea06a8b8d..09d112d91b 100644 --- a/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/model/sql/EventClassFamily.java +++ b/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/model/sql/EventClassFamily.java @@ -72,7 +72,7 @@ public class EventClassFamily extends GenericModel { protected long createdTime; @OneToMany(cascade = CascadeType.ALL) - @JoinColumn(name = EVENT_CLASS_FAMILY_VERSION_EVENT_CLASS_FAMILY_ID) + @JoinColumn(name = EVENT_CLASS_FAMILY_VERSION_EVENT_CLASS_FAMILY_ID, nullable = false) private List schemas; public EventClassFamily() { diff --git a/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/model/sql/EventClassFamilyVersion.java b/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/model/sql/EventClassFamilyVersion.java index 42de4ca8c1..1539337d53 100644 --- a/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/model/sql/EventClassFamilyVersion.java +++ b/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/model/sql/EventClassFamilyVersion.java @@ -36,7 +36,7 @@ public class EventClassFamilyVersion extends GenericModel records; @Column(name = EVENT_CLASS_FAMILY_VERSION_VERSION) diff --git a/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/service/EventClassServiceImpl.java b/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/service/EventClassServiceImpl.java index dee68cf6dd..b8be2466c0 100644 --- a/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/service/EventClassServiceImpl.java +++ b/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/service/EventClassServiceImpl.java @@ -26,6 +26,7 @@ import java.util.Collections; import java.util.Comparator; import java.util.List; +import java.util.stream.Collectors; import org.apache.commons.lang.StringUtils; import org.kaaproject.avro.ui.shared.NamesValidator; @@ -163,9 +164,10 @@ public int compare(EventClassFamilyVersionDto o1, EventClassFamily ecf = new EventClassFamily(eventClassFamily); List schemas = new ArrayList<>(); for (EventClassDto eventClass : records) { - saveEventClass(eventClassFamily, eventClass, version); + setEventClassProperties(eventClassFamily, eventClass, version); } schemasDto.forEach(s -> schemas.add(new EventClassFamilyVersion(s))); + setEventClassECF(schemas); ecf.setSchemas(schemas); eventClassFamilyDao.save(ecf); } else { @@ -178,11 +180,14 @@ public int compare(EventClassFamilyVersionDto o1, } } - private void saveEventClass(EventClassFamilyDto eventClassFamilyDto, EventClassDto eventClass, int version) { + private void setEventClassProperties(EventClassFamilyDto eventClassFamilyDto, EventClassDto eventClass, int version) { eventClass.setTenantId(eventClassFamilyDto.getTenantId()); eventClass.setEcfId(eventClassFamilyDto.getId()); eventClass.setVersion(version); - //eventClassDao.save(new EventClass(eventClass)); + } + + private void setEventClassECF(List ecfvList) { + ecfvList.forEach(ecfv -> ecfv.getRecords().forEach(ec -> ec.setEcf(ecfv))); } private boolean validateEventClassFamilyFqns(EventClassFamilyDto eventClassFamily, List fqns) { @@ -194,7 +199,9 @@ public List findEventClassesByFamilyIdVersionAndType(String ecfId List eventClasses; if (isValidSqlId(ecfId)) { LOG.debug("Find event classes by family id [{}] version [{}] and type [{}]", ecfId, version, type); - eventClasses = convertDtoList(eventClassDao.findByEcfIdVersionAndType(ecfId, version, type)); + EventClassFamily ecf = eventClassFamilyDao.findById(ecfId); + EventClassFamilyVersion ecfv = ecf.getSchemas().stream().filter(s -> s.getVersion() == version).collect(Collectors.toList()).get(0); + eventClasses = convertDtoList(eventClassDao.findByEcfIdVersionAndType(String.valueOf(ecfv.getId()), ecfv.getVersion(), type)); } else { throw new IncorrectParameterException("Incorrect event class family id: " + ecfId); } diff --git a/server/node/src/test/java/org/kaaproject/kaa/server/control/AbstractTestControlServer.java b/server/node/src/test/java/org/kaaproject/kaa/server/control/AbstractTestControlServer.java index f3618af413..4493def15b 100644 --- a/server/node/src/test/java/org/kaaproject/kaa/server/control/AbstractTestControlServer.java +++ b/server/node/src/test/java/org/kaaproject/kaa/server/control/AbstractTestControlServer.java @@ -292,7 +292,6 @@ protected void clearDBData() { if (url.contains("h2")) { LOG.info("Deleting data from H2 database"); new H2DBTestRunner().truncateTables(dataSource); - new H2DBTestRunner().truncateSequences(dataSource); } else { LOG.info("Deleting data from PostgreSQL database"); new PostgreDBTestRunner().truncateTables(dataSource); diff --git a/server/node/src/test/java/org/kaaproject/kaa/server/control/ControlServerEventClassFamilyIT.java b/server/node/src/test/java/org/kaaproject/kaa/server/control/ControlServerEventClassFamilyIT.java index a19079e34d..04ec753ae3 100644 --- a/server/node/src/test/java/org/kaaproject/kaa/server/control/ControlServerEventClassFamilyIT.java +++ b/server/node/src/test/java/org/kaaproject/kaa/server/control/ControlServerEventClassFamilyIT.java @@ -134,8 +134,9 @@ public void testGetEventClassesByFamilyIdVersionAndType() throws Exception { List eventClasses = client.getEventClassesByFamilyIdVersionAndType(eventClassFamily.getId(), 1, EventClassType.EVENT); Assert.assertNotNull(eventClasses); Assert.assertEquals(1, eventClasses.size()); + eventClassFamilyVersion = client.getEventClassFamilyVersionsById(eventClassFamily.getId()).get(0); for (EventClassDto eventClass : eventClasses) { - Assert.assertEquals(eventClassFamily.getId(), eventClass.getEcfId()); + Assert.assertEquals(eventClassFamilyVersion.getId(), eventClass.getEcfId()); Assert.assertEquals(0, eventClass.getVersion()); } }