Browse Source

Entity DAOs

pull/118/head
mp-loki 10 years ago
parent
commit
9def2e21d5
  1. 45
      dao/src/main/java/org/thingsboard/server/dao/model/sql/AdminSettingsEntity.java
  2. 76
      dao/src/main/java/org/thingsboard/server/dao/model/sql/ComponentDescriptorEntity.java
  3. 121
      dao/src/main/java/org/thingsboard/server/dao/model/sql/CustomerEntity.java
  4. 63
      dao/src/main/java/org/thingsboard/server/dao/model/sql/DashboardEntity.java
  5. 37
      dao/src/main/java/org/thingsboard/server/dao/model/sql/DashboardInfoEntity.java
  6. 45
      dao/src/main/java/org/thingsboard/server/dao/sql/component/ComponentDescriptorRepository.java
  7. 98
      dao/src/main/java/org/thingsboard/server/dao/sql/component/JpaBaseComponentDescriptorDao.java
  8. 30
      dao/src/main/java/org/thingsboard/server/dao/sql/customer/CustomerRepository.java
  9. 52
      dao/src/main/java/org/thingsboard/server/dao/sql/customer/JpaCustomerDao.java
  10. 36
      dao/src/main/java/org/thingsboard/server/dao/sql/dashboard/DashboardInfoRepository.java
  11. 14
      dao/src/main/java/org/thingsboard/server/dao/sql/dashboard/DashboardRepository.java
  12. 40
      dao/src/main/java/org/thingsboard/server/dao/sql/dashboard/JpaDashboardDao.java
  13. 65
      dao/src/main/java/org/thingsboard/server/dao/sql/dashboard/JpaDashboardInfoDao.java
  14. 15
      dao/src/main/java/org/thingsboard/server/dao/sql/settings/AdminSettingsRepository.java
  15. 42
      dao/src/main/java/org/thingsboard/server/dao/sql/settings/JpaAdminSettingsDao.java
  16. 71
      dao/src/test/java/org/thingsboard/server/dao/sql/component/JpaBaseComponentDescriptorDaoTest.java
  17. 52
      dao/src/test/java/org/thingsboard/server/dao/sql/customer/JpaCustomerDaoTest.java
  18. 78
      dao/src/test/java/org/thingsboard/server/dao/sql/dashboard/JpaDashboardInfoDaoTest.java
  19. 18
      dao/src/test/java/org/thingsboard/server/dao/sql/device/JpaDeviceDaoTest.java
  20. 4
      dao/src/test/resources/jpa-test.properties

45
dao/src/main/java/org/thingsboard/server/dao/model/sql/AdminSettingsEntity.java

@ -22,15 +22,21 @@ import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.thingsboard.server.common.data.AdminSettings;
import org.thingsboard.server.common.data.id.AdminSettingsId;
import org.thingsboard.server.dao.model.BaseEntity;
import java.io.IOException;
import java.util.UUID;
import static org.thingsboard.server.dao.model.ModelConstants.*;
//@Entity
@Data
@Slf4j
@Entity
@Table(name = ADMIN_SETTINGS_COLUMN_FAMILY_NAME)
public final class AdminSettingsEntity implements BaseEntity<AdminSettings> {
@ -45,7 +51,7 @@ public final class AdminSettingsEntity implements BaseEntity<AdminSettings> {
private String key;
@Column(name = ADMIN_SETTINGS_JSON_VALUE_PROPERTY)
private JsonNode jsonValue;
private String jsonValue;
public AdminSettingsEntity() {
super();
@ -56,33 +62,21 @@ public final class AdminSettingsEntity implements BaseEntity<AdminSettings> {
this.id = adminSettings.getId().getId();
}
this.key = adminSettings.getKey();
this.jsonValue = adminSettings.getJsonValue();
if (jsonValue != null) {
this.jsonValue = adminSettings.getJsonValue().toString();
}
}
@Override
public UUID getId() {
return id;
}
@Override
public void setId(UUID id) {
this.id = id;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public JsonNode getJsonValue() {
return jsonValue;
}
public void setJsonValue(JsonNode jsonValue) {
this.jsonValue = jsonValue;
}
@Override
public int hashCode() {
final int prime = 31;
@ -138,7 +132,16 @@ public final class AdminSettingsEntity implements BaseEntity<AdminSettings> {
AdminSettings adminSettings = new AdminSettings(new AdminSettingsId(id));
adminSettings.setCreatedTime(UUIDs.unixTimestamp(id));
adminSettings.setKey(key);
adminSettings.setJsonValue(jsonValue);
if (jsonValue != null) {
ObjectMapper mapper = new ObjectMapper();
JsonNode jsonNode = null;
try {
jsonNode = mapper.readTree(jsonValue);
adminSettings.setJsonValue(jsonNode);
} catch (IOException e) {
log.error(e.getMessage(), e);
}
}
return adminSettings;
}

76
dao/src/main/java/org/thingsboard/server/dao/model/sql/ComponentDescriptorEntity.java

@ -21,6 +21,9 @@ import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.thingsboard.server.common.data.id.ComponentDescriptorId;
import org.thingsboard.server.common.data.plugin.ComponentDescriptor;
import org.thingsboard.server.common.data.plugin.ComponentScope;
@ -28,12 +31,12 @@ import org.thingsboard.server.common.data.plugin.ComponentType;
import org.thingsboard.server.dao.model.ModelConstants;
import org.thingsboard.server.dao.model.SearchTextEntity;
import java.io.IOException;
import java.util.UUID;
/**
* @author Andrew Shvayka
*/
//@Entity
@Data
@Slf4j
@Entity
@Table(name = ModelConstants.COMPONENT_DESCRIPTOR_COLUMN_FAMILY_NAME)
public class ComponentDescriptorEntity implements SearchTextEntity<ComponentDescriptor> {
@ -57,7 +60,7 @@ public class ComponentDescriptorEntity implements SearchTextEntity<ComponentDesc
private String clazz;
@Column(name = ModelConstants.COMPONENT_DESCRIPTOR_CONFIGURATION_DESCRIPTOR_PROPERTY)
private JsonNode configurationDescriptor;
private String configurationDescriptor;
@Column(name = ModelConstants.COMPONENT_DESCRIPTOR_ACTIONS_PROPERTY)
private String actions;
@ -77,7 +80,9 @@ public class ComponentDescriptorEntity implements SearchTextEntity<ComponentDesc
this.scope = component.getScope();
this.name = component.getName();
this.clazz = component.getClazz();
this.configurationDescriptor = component.getConfigurationDescriptor();
if (configurationDescriptor != null) {
this.configurationDescriptor = component.getConfigurationDescriptor().toString();
}
this.searchText = component.getName();
}
@ -89,7 +94,16 @@ public class ComponentDescriptorEntity implements SearchTextEntity<ComponentDesc
data.setName(this.getName());
data.setClazz(this.getClazz());
data.setActions(this.getActions());
data.setConfigurationDescriptor(this.getConfigurationDescriptor());
if (configurationDescriptor != null) {
ObjectMapper mapper = new ObjectMapper();
JsonNode jsonNode = null;
try {
jsonNode = mapper.readTree(configurationDescriptor);
data.setConfigurationDescriptor(jsonNode);
} catch (IOException e) {
log.error(e.getMessage(), e);
}
}
return data;
}
@ -103,54 +117,6 @@ public class ComponentDescriptorEntity implements SearchTextEntity<ComponentDesc
this.id = id;
}
public String getActions() {
return actions;
}
public void setActions(String actions) {
this.actions = actions;
}
public ComponentType getType() {
return type;
}
public void setType(ComponentType type) {
this.type = type;
}
public ComponentScope getScope() {
return scope;
}
public void setScope(ComponentScope scope) {
this.scope = scope;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getClazz() {
return clazz;
}
public void setClazz(String clazz) {
this.clazz = clazz;
}
public JsonNode getConfigurationDescriptor() {
return configurationDescriptor;
}
public void setConfigurationDescriptor(JsonNode configurationDescriptor) {
this.configurationDescriptor = configurationDescriptor;
}
public String getSearchText() {
return searchText;
}

121
dao/src/main/java/org/thingsboard/server/dao/model/sql/CustomerEntity.java

@ -22,15 +22,21 @@ import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.thingsboard.server.common.data.Customer;
import org.thingsboard.server.common.data.id.CustomerId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.dao.model.ModelConstants;
import org.thingsboard.server.dao.model.SearchTextEntity;
import java.io.IOException;
import java.util.UUID;
//@Entity
@Data
@Slf4j
@Entity
@Table(name = ModelConstants.CUSTOMER_COLUMN_FAMILY_NAME)
public final class CustomerEntity implements SearchTextEntity<Customer> {
@ -75,7 +81,7 @@ public final class CustomerEntity implements SearchTextEntity<Customer> {
private String email;
@Column(name = ModelConstants.CUSTOMER_ADDITIONAL_INFO_PROPERTY)
private JsonNode additionalInfo;
private String additionalInfo;
public CustomerEntity() {
super();
@ -95,105 +101,21 @@ public final class CustomerEntity implements SearchTextEntity<Customer> {
this.zip = customer.getZip();
this.phone = customer.getPhone();
this.email = customer.getEmail();
this.additionalInfo = customer.getAdditionalInfo();
if (additionalInfo != null) {
this.additionalInfo = customer.getAdditionalInfo().toString();
}
}
@Override
public UUID getId() {
return id;
}
@Override
public void setId(UUID id) {
this.id = id;
}
public UUID getTenantId() {
return tenantId;
}
public void setTenantId(UUID tenantId) {
this.tenantId = tenantId;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getAddress2() {
return address2;
}
public void setAddress2(String address2) {
this.address2 = address2;
}
public String getZip() {
return zip;
}
public void setZip(String zip) {
this.zip = zip;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public JsonNode getAdditionalInfo() {
return additionalInfo;
}
public void setAdditionalInfo(JsonNode additionalInfo) {
this.additionalInfo = additionalInfo;
}
@Override
public String getSearchTextSource() {
return title;
@ -204,10 +126,6 @@ public final class CustomerEntity implements SearchTextEntity<Customer> {
this.searchText = searchText;
}
public String getSearchText() {
return searchText;
}
@Override
public int hashCode() {
final int prime = 31;
@ -344,8 +262,15 @@ public final class CustomerEntity implements SearchTextEntity<Customer> {
customer.setZip(zip);
customer.setPhone(phone);
customer.setEmail(email);
customer.setAdditionalInfo(additionalInfo);
if (additionalInfo != null) {
ObjectMapper mapper = new ObjectMapper();
try {
JsonNode jsonNode = mapper.readTree(additionalInfo);
customer.setAdditionalInfo(jsonNode);
} catch (IOException e) {
log.error(e.getMessage(), e);
}
}
return customer;
}
}

63
dao/src/main/java/org/thingsboard/server/dao/model/sql/DashboardEntity.java

@ -22,6 +22,9 @@ import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.thingsboard.server.common.data.Dashboard;
import org.thingsboard.server.common.data.id.CustomerId;
import org.thingsboard.server.common.data.id.DashboardId;
@ -29,9 +32,12 @@ import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.dao.model.ModelConstants;
import org.thingsboard.server.dao.model.SearchTextEntity;
import java.io.IOException;
import java.util.UUID;
//@Entity
@Data
@Slf4j
@Entity
@Table(name = ModelConstants.DASHBOARD_COLUMN_FAMILY_NAME)
public final class DashboardEntity implements SearchTextEntity<Dashboard> {
@ -55,7 +61,7 @@ public final class DashboardEntity implements SearchTextEntity<Dashboard> {
private String searchText;
@Column(name = ModelConstants.DASHBOARD_CONFIGURATION_PROPERTY)
private JsonNode configuration;
private String configuration;
public DashboardEntity() {
super();
@ -72,47 +78,18 @@ public final class DashboardEntity implements SearchTextEntity<Dashboard> {
this.customerId = dashboard.getCustomerId().getId();
}
this.title = dashboard.getTitle();
this.configuration = dashboard.getConfiguration();
if (configuration != null) {
this.configuration = dashboard.getConfiguration().toString();
}
}
@Override
public UUID getId() {
return id;
}
@Override
public void setId(UUID id) {
this.id = id;
}
public UUID getTenantId() {
return tenantId;
}
public void setTenantId(UUID tenantId) {
this.tenantId = tenantId;
}
public UUID getCustomerId() {
return customerId;
}
public void setCustomerId(UUID customerId) {
this.customerId = customerId;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public JsonNode getConfiguration() {
return configuration;
}
public void setConfiguration(JsonNode configuration) {
this.configuration = configuration;
}
@Override
@ -214,8 +191,16 @@ public final class DashboardEntity implements SearchTextEntity<Dashboard> {
dashboard.setCustomerId(new CustomerId(customerId));
}
dashboard.setTitle(title);
dashboard.setConfiguration(configuration);
if (configuration != null) {
ObjectMapper mapper = new ObjectMapper();
JsonNode jsonNode = null;
try {
jsonNode = mapper.readTree(configuration);
dashboard.setConfiguration(jsonNode);
} catch (IOException e) {
log.error(e.getMessage(), e);
}
}
return dashboard;
}
}

37
dao/src/main/java/org/thingsboard/server/dao/model/sql/DashboardInfoEntity.java

@ -21,6 +21,8 @@ import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;
import lombok.Data;
import org.thingsboard.server.common.data.DashboardInfo;
import org.thingsboard.server.common.data.id.CustomerId;
import org.thingsboard.server.common.data.id.DashboardId;
@ -30,7 +32,8 @@ import org.thingsboard.server.dao.model.SearchTextEntity;
import java.util.UUID;
//@Entity
@Data
@Entity
@Table(name = ModelConstants.DASHBOARD_COLUMN_FAMILY_NAME)
public class DashboardInfoEntity implements SearchTextEntity<DashboardInfo> {
@ -70,38 +73,6 @@ public class DashboardInfoEntity implements SearchTextEntity<DashboardInfo> {
this.title = dashboardInfo.getTitle();
}
public UUID getId() {
return id;
}
public void setId(UUID id) {
this.id = id;
}
public UUID getTenantId() {
return tenantId;
}
public void setTenantId(UUID tenantId) {
this.tenantId = tenantId;
}
public UUID getCustomerId() {
return customerId;
}
public void setCustomerId(UUID customerId) {
this.customerId = customerId;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
@Override
public String getSearchTextSource() {
return title;

45
dao/src/main/java/org/thingsboard/server/dao/sql/component/ComponentDescriptorRepository.java

@ -0,0 +1,45 @@
package org.thingsboard.server.dao.sql.component;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Component;
import org.thingsboard.server.common.data.plugin.ComponentScope;
import org.thingsboard.server.common.data.plugin.ComponentType;
import org.thingsboard.server.dao.model.ToData;
import org.thingsboard.server.dao.model.sql.ComponentDescriptorEntity;
import java.util.Collection;
import java.util.List;
import java.util.UUID;
/**
* Created by Valerii Sosliuk on 5/6/2017.
*/
@ConditionalOnProperty(prefix = "sql", value = "enabled", havingValue = "true", matchIfMissing = false)
public interface ComponentDescriptorRepository extends CrudRepository<ComponentDescriptorEntity, UUID> {
ComponentDescriptorEntity findByClazz(String clazz);
@Query(nativeQuery = true, value = "SELECT * FROM COMPONENT_DESCRIPTOR WHERE TYPE = ?2 " +
"AND LOWER(SEARCH_TEXT) LIKE LOWER(CONCAT(?3, '%')) " +
"ORDER BY ID LIMIT ?1")
List<ComponentDescriptorEntity> findByTypeFirstPage(int limit, int type, String textSearch);
@Query(nativeQuery = true, value = "SELECT * FROM COMPONENT_DESCRIPTOR WHERE TYPE = ?2 " +
"AND LOWER(SEARCH_TEXT) LIKE LOWER(CONCAT(?3, '%')) " +
"AND ID > ?4 ORDER BY ID LIMIT ?1")
List<ComponentDescriptorEntity> findByTypeNextPage(int limit, int type, String textSearch, UUID idOffset);
@Query(nativeQuery = true, value = "SELECT * FROM COMPONENT_DESCRIPTOR WHERE TYPE = ?2 " +
"AND SCOPE = ?3 AND LOWER(SEARCH_TEXT) LIKE LOWER(CONCAT(?4, '%')) " +
"ORDER BY ID LIMIT ?1")
List<ComponentDescriptorEntity> findByScopeAndTypeFirstPage(int limit, int type, int scope, String textSearch);
@Query(nativeQuery = true, value = "SELECT * FROM COMPONENT_DESCRIPTOR WHERE TYPE = ?2 " +
"AND SCOPE = ?3 AND LOWER(SEARCH_TEXT) LIKE LOWER(CONCAT(?4, '%')) " +
"AND ID > ?5 ORDER BY ID LIMIT ?1")
List<ComponentDescriptorEntity> findByScopeAndTypeNextPage(int limit, int type, int scope, String textSearch, UUID idOffset);
void deleteByClazz(String clazz);
}

98
dao/src/main/java/org/thingsboard/server/dao/sql/component/JpaBaseComponentDescriptorDao.java

@ -0,0 +1,98 @@
package org.thingsboard.server.dao.sql.component;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Component;
import org.thingsboard.server.common.data.id.ComponentDescriptorId;
import org.thingsboard.server.common.data.page.TextPageLink;
import org.thingsboard.server.common.data.plugin.ComponentDescriptor;
import org.thingsboard.server.common.data.plugin.ComponentScope;
import org.thingsboard.server.common.data.plugin.ComponentType;
import org.thingsboard.server.dao.DaoUtil;
import org.thingsboard.server.dao.component.ComponentDescriptorDao;
import org.thingsboard.server.dao.model.ModelConstants;
import org.thingsboard.server.dao.model.sql.ComponentDescriptorEntity;
import org.thingsboard.server.dao.sql.JpaAbstractSearchTextDao;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
/**
* Created by Valerii Sosliuk on 5/6/2017.
*/
@Component
@ConditionalOnProperty(prefix = "sql", value = "enabled", havingValue = "true", matchIfMissing = false)
public class JpaBaseComponentDescriptorDao extends JpaAbstractSearchTextDao<ComponentDescriptorEntity, ComponentDescriptor>
implements ComponentDescriptorDao {
@Autowired
private ComponentDescriptorRepository componentDescriptorRepository;
@Override
protected Class<ComponentDescriptorEntity> getEntityClass() {
return ComponentDescriptorEntity.class;
}
@Override
protected String getColumnFamilyName() {
return ModelConstants.COMPONENT_DESCRIPTOR_COLUMN_FAMILY_NAME;
}
@Override
protected CrudRepository<ComponentDescriptorEntity, UUID> getCrudRepository() {
return componentDescriptorRepository;
}
@Override
public Optional<ComponentDescriptor> saveIfNotExist(ComponentDescriptor component) {
boolean exists = componentDescriptorRepository.findOne(component.getId().getId()) != null;
if (exists) {
return Optional.empty();
}
return Optional.of(save(component));
}
@Override
public ComponentDescriptor findById(ComponentDescriptorId componentId) {
return findById(componentId.getId());
}
@Override
public ComponentDescriptor findByClazz(String clazz) {
return DaoUtil.getData(componentDescriptorRepository.findByClazz(clazz));
}
@Override
public List<ComponentDescriptor> findByTypeAndPageLink(ComponentType type, TextPageLink pageLink) {
if (pageLink.getIdOffset() == null) {
return DaoUtil.convertDataList(componentDescriptorRepository.findByTypeFirstPage(pageLink.getLimit(),
type.ordinal(), pageLink.getTextSearch()));
} else {
return DaoUtil.convertDataList(componentDescriptorRepository.findByTypeNextPage(pageLink.getLimit(),
type.ordinal(), pageLink.getTextSearch(), pageLink.getIdOffset()));
}
}
@Override
public List<ComponentDescriptor> findByScopeAndTypeAndPageLink(ComponentScope scope, ComponentType type, TextPageLink pageLink) {
if (pageLink.getIdOffset() == null) {
return DaoUtil.convertDataList(componentDescriptorRepository.findByScopeAndTypeFirstPage(pageLink.getLimit(),
type.ordinal(), scope.ordinal(), pageLink.getTextSearch()));
} else {
return DaoUtil.convertDataList(componentDescriptorRepository.findByScopeAndTypeNextPage(pageLink.getLimit(),
type.ordinal(), scope.ordinal(), pageLink.getTextSearch(), pageLink.getIdOffset()));
}
}
@Override
public void deleteById(ComponentDescriptorId componentId) {
removeById(componentId.getId());
}
@Override
public void deleteByClazz(String clazz) {
componentDescriptorRepository.deleteByClazz(clazz);
}
}

30
dao/src/main/java/org/thingsboard/server/dao/sql/customer/CustomerRepository.java

@ -0,0 +1,30 @@
package org.thingsboard.server.dao.sql.customer;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.thingsboard.server.common.data.Customer;
import org.thingsboard.server.dao.model.sql.CustomerEntity;
import java.util.List;
import java.util.UUID;
/**
* Created by Valerii Sosliuk on 5/6/2017.
*/
@ConditionalOnProperty(prefix = "sql", value = "enabled", havingValue = "true", matchIfMissing = false)
public interface CustomerRepository extends CrudRepository<CustomerEntity, UUID> {
@Query(nativeQuery = true, value = "SELECT * FROM CUSTOMER WHERE TENANT_ID = ?2 " +
"AND LOWER(SEARCH_TEXT) LIKE LOWER(CONCAT(?3, '%')) " +
"ORDER BY ID LIMIT ?1")
List<CustomerEntity> findByTenantIdFirstPage(int limit, UUID tenantId, String textSearch);
@Query(nativeQuery = true, value = "SELECT * FROM CUSTOMER WHERE TENANT_ID = ?2 " +
"AND LOWER(SEARCH_TEXT) LIKE LOWER(CONCAT(?3, '%')) " +
"AND ID > ?4 ORDER BY ID LIMIT ?1")
List<CustomerEntity> findByTenantIdNextPage(int limit, UUID tenantId, String textSearch, UUID idOffset);
@Query(nativeQuery = true, value = "SELECT * FROM CUSTOMER WHERE TENANT_ID = ?1")
List<CustomerEntity> findByTenantId(UUID tenantId);
}

52
dao/src/main/java/org/thingsboard/server/dao/sql/customer/JpaCustomerDao.java

@ -0,0 +1,52 @@
package org.thingsboard.server.dao.sql.customer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Component;
import org.thingsboard.server.common.data.Customer;
import org.thingsboard.server.common.data.page.TextPageLink;
import org.thingsboard.server.dao.DaoUtil;
import org.thingsboard.server.dao.customer.CustomerDao;
import org.thingsboard.server.dao.model.ModelConstants;
import org.thingsboard.server.dao.model.sql.CustomerEntity;
import org.thingsboard.server.dao.sql.JpaAbstractSearchTextDao;
import java.util.List;
import java.util.UUID;
/**
* Created by Valerii Sosliuk on 5/6/2017.
*/
@Component
@ConditionalOnProperty(prefix = "sql", value = "enabled", havingValue = "true", matchIfMissing = false)
public class JpaCustomerDao extends JpaAbstractSearchTextDao<CustomerEntity, Customer> implements CustomerDao{
@Autowired
private CustomerRepository customerRepository;
@Override
protected Class<CustomerEntity> getEntityClass() {
return CustomerEntity.class;
}
@Override
protected String getColumnFamilyName() {
return ModelConstants.CUSTOMER_COLUMN_FAMILY_NAME;
}
@Override
protected CrudRepository<CustomerEntity, UUID> getCrudRepository() {
return customerRepository;
}
@Override
public List<Customer> findCustomersByTenantId(UUID tenantId, TextPageLink pageLink) {
if (pageLink.getIdOffset() == null) {
return DaoUtil.convertDataList(customerRepository.findByTenantIdFirstPage(pageLink.getLimit(), tenantId, pageLink.getTextSearch()));
} else {
return DaoUtil.convertDataList(customerRepository.findByTenantIdNextPage(pageLink.getLimit(), tenantId,
pageLink.getTextSearch(), pageLink.getIdOffset()));
}
}
}

36
dao/src/main/java/org/thingsboard/server/dao/sql/dashboard/DashboardInfoRepository.java

@ -0,0 +1,36 @@
package org.thingsboard.server.dao.sql.dashboard;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.thingsboard.server.dao.model.sql.DashboardInfoEntity;
import java.util.List;
import java.util.UUID;
/**
* Created by Valerii Sosliuk on 5/6/2017.
*/
@ConditionalOnProperty(prefix = "sql", value = "enabled", havingValue = "true", matchIfMissing = false)
public interface DashboardInfoRepository extends CrudRepository<DashboardInfoEntity, UUID> {
@Query(nativeQuery = true, value = "SELECT * FROM DASHBOARD WHERE TENANT_ID = ?2 " +
"AND LOWER(SEARCH_TEXT) LIKE LOWER(CONCAT(?3, '%')) " +
"ORDER BY ID LIMIT ?1")
List<DashboardInfoEntity> findByTenantIdFirstPage(int limit, UUID tenantId, String textSearch);
@Query(nativeQuery = true, value = "SELECT * FROM DASHBOARD WHERE TENANT_ID = ?2 " +
"AND LOWER(SEARCH_TEXT) LIKE LOWER(CONCAT(?3, '%')) " +
"AND ID > ?4 ORDER BY ID LIMIT ?1")
List<DashboardInfoEntity> findByTenantIdNextPage(int limit, UUID tenantId, String textSearch, UUID idOffset);
@Query(nativeQuery = true, value = "SELECT * FROM DASHBOARD WHERE TENANT_ID = ?2 " +
"AND CUSTOMER_ID = ?3 AND LOWER(SEARCH_TEXT) LIKE LOWER(CONCAT(?4, '%')) " +
"ORDER BY ID LIMIT ?1")
List<DashboardInfoEntity> findByTenantIdAndCustomerIdFirstPage(int limit, UUID tenantId, UUID customerId, String textSearch);
@Query(nativeQuery = true, value = "SELECT * FROM DASHBOARD WHERE TENANT_ID = ?2 " +
"AND CUSTOMER_ID = ?3 AND LOWER(SEARCH_TEXT) LIKE LOWER(CONCAT(?4, '%')) " +
"AND ID > ?5 ORDER BY ID LIMIT ?1")
List<DashboardInfoEntity> findByTenantIdAndCustomerIdNextPage(int limit, UUID tenantId, UUID customerId, String textSearch, UUID idOffset);
}

14
dao/src/main/java/org/thingsboard/server/dao/sql/dashboard/DashboardRepository.java

@ -0,0 +1,14 @@
package org.thingsboard.server.dao.sql.dashboard;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.data.repository.CrudRepository;
import org.thingsboard.server.dao.model.sql.DashboardEntity;
import java.util.UUID;
/**
* Created by Valerii Sosliuk on 5/6/2017.
*/
@ConditionalOnProperty(prefix = "sql", value = "enabled", havingValue = "true", matchIfMissing = false)
public interface DashboardRepository extends CrudRepository<DashboardEntity, UUID> {
}

40
dao/src/main/java/org/thingsboard/server/dao/sql/dashboard/JpaDashboardDao.java

@ -0,0 +1,40 @@
package org.thingsboard.server.dao.sql.dashboard;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Component;
import org.thingsboard.server.common.data.Dashboard;
import org.thingsboard.server.dao.dashboard.DashboardDao;
import org.thingsboard.server.dao.model.sql.DashboardEntity;
import org.thingsboard.server.dao.sql.JpaAbstractSearchTextDao;
import java.util.UUID;
import static org.thingsboard.server.dao.model.ModelConstants.DASHBOARD_COLUMN_FAMILY_NAME;
/**
* Created by Valerii Sosliuk on 5/6/2017.
*/
@Component
@ConditionalOnProperty(prefix = "sql", value = "enabled", havingValue = "true", matchIfMissing = false)
public class JpaDashboardDao extends JpaAbstractSearchTextDao<DashboardEntity, Dashboard> implements DashboardDao {
@Autowired
DashboardRepository dashboardRepository;
@Override
protected Class<DashboardEntity> getEntityClass() {
return DashboardEntity.class;
}
@Override
protected String getColumnFamilyName() {
return DASHBOARD_COLUMN_FAMILY_NAME;
}
@Override
protected CrudRepository<DashboardEntity, UUID> getCrudRepository() {
return dashboardRepository;
}
}

65
dao/src/main/java/org/thingsboard/server/dao/sql/dashboard/JpaDashboardInfoDao.java

@ -0,0 +1,65 @@
package org.thingsboard.server.dao.sql.dashboard;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Component;
import org.thingsboard.server.common.data.DashboardInfo;
import org.thingsboard.server.common.data.page.TextPageLink;
import org.thingsboard.server.dao.DaoUtil;
import org.thingsboard.server.dao.dashboard.DashboardInfoDao;
import org.thingsboard.server.dao.model.sql.DashboardInfoEntity;
import org.thingsboard.server.dao.sql.JpaAbstractSearchTextDao;
import java.util.List;
import java.util.UUID;
import static org.thingsboard.server.dao.model.ModelConstants.DASHBOARD_COLUMN_FAMILY_NAME;
/**
* Created by Valerii Sosliuk on 5/6/2017.
*/
@Component
@ConditionalOnProperty(prefix = "sql", value = "enabled", havingValue = "true", matchIfMissing = false)
public class JpaDashboardInfoDao extends JpaAbstractSearchTextDao<DashboardInfoEntity, DashboardInfo> implements DashboardInfoDao {
@Autowired
private DashboardInfoRepository dashboardInfoRepository;
@Override
protected Class getEntityClass() {
return DashboardInfoEntity.class;
}
@Override
protected String getColumnFamilyName() {
return DASHBOARD_COLUMN_FAMILY_NAME;
}
@Override
protected CrudRepository getCrudRepository() {
return dashboardInfoRepository;
}
@Override
public List<DashboardInfo> findDashboardsByTenantId(UUID tenantId, TextPageLink pageLink) {
if (pageLink.getIdOffset() == null) {
return DaoUtil.convertDataList(dashboardInfoRepository.findByTenantIdFirstPage(
pageLink.getLimit(), tenantId, pageLink.getTextSearch()));
} else {
return DaoUtil.convertDataList(dashboardInfoRepository.findByTenantIdNextPage(
pageLink.getLimit(), tenantId, pageLink.getTextSearch(), pageLink.getIdOffset()));
}
}
@Override
public List<DashboardInfo> findDashboardsByTenantIdAndCustomerId(UUID tenantId, UUID customerId, TextPageLink pageLink) {
if (pageLink.getIdOffset() == null) {
return DaoUtil.convertDataList(dashboardInfoRepository.findByTenantIdAndCustomerIdFirstPage(
pageLink.getLimit(), tenantId, customerId, pageLink.getTextSearch()));
} else {
return DaoUtil.convertDataList(dashboardInfoRepository.findByTenantIdAndCustomerIdNextPage(
pageLink.getLimit(), tenantId, customerId, pageLink.getTextSearch(), pageLink.getIdOffset()));
}
}
}

15
dao/src/main/java/org/thingsboard/server/dao/sql/settings/AdminSettingsRepository.java

@ -0,0 +1,15 @@
package org.thingsboard.server.dao.sql.settings;
import org.springframework.data.repository.CrudRepository;
import org.thingsboard.server.dao.model.ToData;
import org.thingsboard.server.dao.model.sql.AdminSettingsEntity;
import java.util.UUID;
/**
* Created by Valerii Sosliuk on 5/6/2017.
*/
public interface AdminSettingsRepository extends CrudRepository<AdminSettingsEntity, UUID> {
AdminSettingsEntity findByKey(String key);
}

42
dao/src/main/java/org/thingsboard/server/dao/sql/settings/JpaAdminSettingsDao.java

@ -0,0 +1,42 @@
package org.thingsboard.server.dao.sql.settings;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.repository.CrudRepository;
import org.thingsboard.server.common.data.AdminSettings;
import org.thingsboard.server.dao.DaoUtil;
import org.thingsboard.server.dao.model.sql.AdminSettingsEntity;
import org.thingsboard.server.dao.settings.AdminSettingsDao;
import org.thingsboard.server.dao.sql.JpaAbstractDao;
import java.util.UUID;
import static org.thingsboard.server.dao.model.ModelConstants.ADMIN_SETTINGS_COLUMN_FAMILY_NAME;
/**
* Created by Valerii Sosliuk on 5/6/2017.
*/
public class JpaAdminSettingsDao extends JpaAbstractDao<AdminSettingsEntity, AdminSettings> implements AdminSettingsDao{
@Autowired
private AdminSettingsRepository adminSettingsRepository;
@Override
protected Class<AdminSettingsEntity> getEntityClass() {
return AdminSettingsEntity.class;
}
@Override
protected String getColumnFamilyName() {
return ADMIN_SETTINGS_COLUMN_FAMILY_NAME;
}
@Override
protected CrudRepository<AdminSettingsEntity, UUID> getCrudRepository() {
return adminSettingsRepository;
}
@Override
public AdminSettings findByKey(String key) {
return DaoUtil.getData(adminSettingsRepository.findByKey(key));
}
}

71
dao/src/test/java/org/thingsboard/server/dao/sql/component/JpaBaseComponentDescriptorDaoTest.java

@ -0,0 +1,71 @@
package org.thingsboard.server.dao.sql.component;
import com.datastax.driver.core.utils.UUIDs;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.thingsboard.server.common.data.Customer;
import org.thingsboard.server.common.data.id.ComponentDescriptorId;
import org.thingsboard.server.common.data.page.TextPageLink;
import org.thingsboard.server.common.data.plugin.ComponentDescriptor;
import org.thingsboard.server.common.data.plugin.ComponentScope;
import org.thingsboard.server.common.data.plugin.ComponentType;
import org.thingsboard.server.dao.AbstractJpaDaoTest;
import org.thingsboard.server.dao.component.ComponentDescriptorDao;
import java.util.List;
import static org.junit.Assert.assertEquals;
/**
* Created by Valerii Sosliuk on 5/6/2017.
*/
public class JpaBaseComponentDescriptorDaoTest extends AbstractJpaDaoTest {
@Autowired
private ComponentDescriptorDao componentDescriptorDao;
@Test
public void findByType() {
for (int i = 0; i < 20; i++) {
createComponentDescriptor(ComponentType.PLUGIN, ComponentScope.SYSTEM, i);
createComponentDescriptor(ComponentType.ACTION, ComponentScope.TENANT, i + 20);
}
TextPageLink pageLink1 = new TextPageLink(15, "COMPONENT_");
List<ComponentDescriptor> components1 = componentDescriptorDao.findByTypeAndPageLink(ComponentType.PLUGIN, pageLink1);
assertEquals(15, components1.size());
TextPageLink pageLink2 = new TextPageLink(15, "COMPONENT_", components1.get(14).getId().getId(), null);
List<ComponentDescriptor> components2 = componentDescriptorDao.findByTypeAndPageLink(ComponentType.PLUGIN, pageLink2);
assertEquals(5, components2.size());
}
@Test
public void findByTypeAndSocpe() {
for (int i = 0; i < 20; i++) {
createComponentDescriptor(ComponentType.PLUGIN, ComponentScope.SYSTEM, i);
createComponentDescriptor(ComponentType.ACTION, ComponentScope.TENANT, i + 20);
createComponentDescriptor(ComponentType.FILTER, ComponentScope.SYSTEM, i + 40);
}
TextPageLink pageLink1 = new TextPageLink(15, "COMPONENT_");
List<ComponentDescriptor> components1 = componentDescriptorDao.findByScopeAndTypeAndPageLink(
ComponentScope.SYSTEM, ComponentType.FILTER, pageLink1);
assertEquals(15, components1.size());
TextPageLink pageLink2 = new TextPageLink(15, "COMPONENT_", components1.get(14).getId().getId(), null);
List<ComponentDescriptor> components2 = componentDescriptorDao.findByScopeAndTypeAndPageLink(
ComponentScope.SYSTEM, ComponentType.FILTER, pageLink2);
assertEquals(5, components2.size());
}
private void createComponentDescriptor(ComponentType type, ComponentScope scope, int index) {
ComponentDescriptor component = new ComponentDescriptor();
component.setId(new ComponentDescriptorId(UUIDs.timeBased()));
component.setType(type);
component.setScope(scope);
component.setName("COMPONENT_" + index);
componentDescriptorDao.save(component);
}
}

52
dao/src/test/java/org/thingsboard/server/dao/sql/customer/JpaCustomerDaoTest.java

@ -0,0 +1,52 @@
package org.thingsboard.server.dao.sql.customer;
import com.datastax.driver.core.utils.UUIDs;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.thingsboard.server.common.data.Customer;
import org.thingsboard.server.common.data.id.CustomerId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.page.TextPageLink;
import org.thingsboard.server.dao.AbstractJpaDaoTest;
import org.thingsboard.server.dao.customer.CustomerDao;
import java.util.List;
import java.util.UUID;
import static org.junit.Assert.assertEquals;
/**
* Created by Valerii Sosliuk on 5/6/2017.
*/
public class JpaCustomerDaoTest extends AbstractJpaDaoTest {
@Autowired
private CustomerDao customerDao;
@Test
public void testFindByTenantId() {
UUID tenantId1 = UUIDs.timeBased();
UUID tenantId2 = UUIDs.timeBased();
for (int i = 0; i < 20; i++) {
createCustomer(tenantId1, i);
createCustomer(tenantId2, i * 2);
}
TextPageLink pageLink1 = new TextPageLink(15, "CUSTOMER");
List<Customer> customers1 = customerDao.findCustomersByTenantId(tenantId1, pageLink1);
assertEquals(15, customers1.size());
TextPageLink pageLink2 = new TextPageLink(15, "CUSTOMER", customers1.get(14).getId().getId(), null);
List<Customer> customers2 = customerDao.findCustomersByTenantId(tenantId1, pageLink2);
assertEquals(5, customers2.size());
}
private void createCustomer(UUID tenantId, int index) {
Customer customer = new Customer();
customer.setId(new CustomerId(UUIDs.timeBased()));
customer.setTenantId(new TenantId(tenantId));
customer.setTitle("CUSTOMER_" + index);
customerDao.save(customer);
}
}

78
dao/src/test/java/org/thingsboard/server/dao/sql/dashboard/JpaDashboardInfoDaoTest.java

@ -0,0 +1,78 @@
package org.thingsboard.server.dao.sql.dashboard;
import com.datastax.driver.core.utils.UUIDs;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.thingsboard.server.common.data.DashboardInfo;
import org.thingsboard.server.common.data.id.CustomerId;
import org.thingsboard.server.common.data.id.DashboardId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.page.TextPageLink;
import org.thingsboard.server.dao.AbstractJpaDaoTest;
import org.thingsboard.server.dao.dashboard.DashboardInfoDao;
import java.util.List;
import java.util.UUID;
/**
* Created by Valerii Sosliuk on 5/6/2017.
*/
public class JpaDashboardInfoDaoTest extends AbstractJpaDaoTest {
@Autowired
private DashboardInfoDao dashboardInfoDao;
@Test
public void testFindDashboardsByTenantId() {
UUID tenantId1 = UUIDs.timeBased();
UUID customerId1 = UUIDs.timeBased();
UUID tenantId2 = UUIDs.timeBased();
UUID customerId2 = UUIDs.timeBased();
for (int i = 0; i < 20; i++) {
createDashboard(tenantId1, customerId1, i);
createDashboard(tenantId2, customerId2, i * 2);
}
TextPageLink pageLink1 = new TextPageLink(15, "DASHBOARD");
List<DashboardInfo> dashboardInfos1 = dashboardInfoDao.findDashboardsByTenantId(tenantId1, pageLink1);
assertEquals(15, dashboardInfos1.size());
TextPageLink pageLink2 = new TextPageLink(15, "DASHBOARD", dashboardInfos1.get(14).getId().getId(), null);
List<DashboardInfo> dashboardInfos2 = dashboardInfoDao.findDashboardsByTenantId(tenantId1, pageLink2);
assertEquals(5, dashboardInfos2.size());
}
@Test
public void testFindDashboardsByTenantAndCustomerId() {
UUID tenantId1 = UUIDs.timeBased();
UUID customerId1 = UUIDs.timeBased();
UUID tenantId2 = UUIDs.timeBased();
UUID customerId2 = UUIDs.timeBased();
for (int i = 0; i < 20; i++) {
createDashboard(tenantId1, customerId1, i);
createDashboard(tenantId2, customerId2, i * 2);
}
TextPageLink pageLink1 = new TextPageLink(15, "DASHBOARD");
List<DashboardInfo> dashboardInfos1 = dashboardInfoDao.findDashboardsByTenantIdAndCustomerId(tenantId1, customerId1, pageLink1);
assertEquals(15, dashboardInfos1.size());
TextPageLink pageLink2 = new TextPageLink(15, "DASHBOARD", dashboardInfos1.get(14).getId().getId(), null);
List<DashboardInfo> dashboardInfos2 = dashboardInfoDao.findDashboardsByTenantIdAndCustomerId(tenantId1, customerId1, pageLink2);
assertEquals(5, dashboardInfos2.size());
}
private void assertEquals(int i, int size) {
}
private void createDashboard(UUID tenantId, UUID customerId, int index) {
DashboardInfo dashboardInfo = new DashboardInfo();
dashboardInfo.setId(new DashboardId(UUIDs.timeBased()));
dashboardInfo.setTenantId(new TenantId(tenantId));
dashboardInfo.setCustomerId(new CustomerId(customerId));
dashboardInfo.setTitle("DASHBOARD_" + index);
dashboardInfoDao.save(dashboardInfo);
}
}

18
dao/src/test/java/org/thingsboard/server/dao/sql/device/JpaDeviceDaoTest.java

@ -1,13 +1,11 @@
package org.thingsboard.server.dao.sql.device;
import com.datastax.driver.core.utils.UUIDs;
import com.github.springtestdbunit.annotation.DatabaseOperation;
import com.github.springtestdbunit.annotation.DatabaseSetup;
import com.github.springtestdbunit.annotation.DatabaseTearDown;
import com.google.common.util.concurrent.*;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.ListeningExecutorService;
import com.google.common.util.concurrent.MoreExecutors;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.thingsboard.server.common.data.Device;
import org.thingsboard.server.common.data.id.CustomerId;
import org.thingsboard.server.common.data.id.DeviceId;
@ -17,7 +15,6 @@ import org.thingsboard.server.dao.AbstractJpaDaoTest;
import org.thingsboard.server.dao.device.DeviceDao;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.ExecutionException;
@ -29,15 +26,12 @@ import static org.junit.Assert.assertNotNull;
/**
* Created by Valerii Sosliuk on 5/6/2017.
*/
@Transactional
public class JpaDeviceDaoTest extends AbstractJpaDaoTest {
@Autowired
private DeviceDao deviceDao;
@Test
@DatabaseSetup(value = "classpath:dbunit/empty_dataset.xml",type = DatabaseOperation.DELETE_ALL)
@DatabaseTearDown(value = "classpath:dbunit/empty_dataset.xml",type = DatabaseOperation.DELETE_ALL)
public void testFindDevicesByTenantId() {
UUID tenantId1 = UUIDs.timeBased();
UUID tenantId2 = UUIDs.timeBased();
@ -55,8 +49,6 @@ public class JpaDeviceDaoTest extends AbstractJpaDaoTest {
}
@Test
@DatabaseSetup(value = "classpath:dbunit/empty_dataset.xml",type = DatabaseOperation.DELETE_ALL)
@DatabaseTearDown(value = "classpath:dbunit/empty_dataset.xml",type = DatabaseOperation.DELETE_ALL)
public void testFindAsync() throws ExecutionException, InterruptedException {
UUID tenantId = UUIDs.timeBased();
UUID customerId = UUIDs.timeBased();
@ -75,8 +67,6 @@ public class JpaDeviceDaoTest extends AbstractJpaDaoTest {
}
@Test
@DatabaseSetup(value = "classpath:dbunit/empty_dataset.xml",type = DatabaseOperation.DELETE_ALL)
@DatabaseTearDown(value = "classpath:dbunit/empty_dataset.xml",type = DatabaseOperation.DELETE_ALL)
public void testFindDevicesByTenantIdAndIdsAsync() throws ExecutionException, InterruptedException {
UUID tenantId1 = UUIDs.timeBased();
UUID customerId1 = UUIDs.timeBased();
@ -100,8 +90,6 @@ public class JpaDeviceDaoTest extends AbstractJpaDaoTest {
}
@Test
@DatabaseSetup(value = "classpath:dbunit/empty_dataset.xml",type = DatabaseOperation.DELETE_ALL)
@DatabaseTearDown(value = "classpath:dbunit/empty_dataset.xml",type = DatabaseOperation.DELETE_ALL)
public void testFindDevicesByTenantIdAndCustomerIdAndIdsAsync() throws ExecutionException, InterruptedException {
UUID tenantId1 = UUIDs.timeBased();
UUID customerId1 = UUIDs.timeBased();

4
dao/src/test/resources/jpa-test.properties

@ -1,10 +1,6 @@
cassandra.enabled=false
sql.enabled=true
#sql.datasource.url=jdbc:h2:mem:thingsboard
#sql.datasource.username=sa
#sql.datasource.password=
#spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.show-sql=false
spring.jpa.hibernate.ddl-auto=create-drop

Loading…
Cancel
Save