Skip to content

Commit

Permalink
KAA-600: Added logging info and constants for hibernate mapping.
Browse files Browse the repository at this point in the history
  • Loading branch information
Igor Khanenko committed Nov 17, 2015
1 parent 24a2c83 commit 177a8ef
Show file tree
Hide file tree
Showing 17 changed files with 347 additions and 124 deletions.
Expand Up @@ -283,11 +283,11 @@ public class DaoConstants {
* Plugin constants.
*/
public static final String PLUGIN_TABLE_NAME = "plugin";
public static final String PLUGIN_NAME = "name";
public static final String PLUGIN_NAME = NAME;
public static final String PLUGIN_DESCRIPTION = DESCRIPTION;
public static final String PLUGIN_CREATED_USERNAME = CREATED_USERNAME;
public static final String PLUGIN_CREATED_TIME = CREATED_TIME;
public static final String PLUGIN_APPLICATION_ID = "application_id";
public static final String PLUGIN_APPLICATION_ID = APPLICATION_ID;
public static final String PLUGIN_TYPE_NAME = "plugin_type_name";
public static final String PLUGIN_CLASS_NAME = "plugin_class_name";
public static final String PLUGIN_RAW_CONFIGURATION = "raw_configuration";
Expand Down Expand Up @@ -334,6 +334,53 @@ public class DaoConstants {
public static final String SDK_PROFILE_TABLE_NAME = "sdk_token";
public static final String SDK_PROFILE_TOKEN = "token";

/**
* CTL schema constants
*/
public static final String CTL_SCHEMA_TABLE_NAME = "ctl";
public static final String CTL_SCHEMA_APPLICATION_ID = APPLICATION_ID;
public static final String CTL_SCHEMA_TENANT_ID = TENANT_ID;
public static final String CTL_SCHEMA_META_INFO_ID = "metainfo_id";
public static final String CTL_SCHEMA_BODY = "body";
public static final String CTL_SCHEMA_NAME = NAME;
public static final String CTL_SCHEMA_DESCRIPTION = DESCRIPTION;
public static final String CTL_SCHEMA_CREATED_USERNAME = CREATED_USERNAME;
public static final String CTL_SCHEMA_CREATED_TIME = CREATED_TIME;
// CTL schema foreign keys
public static final String CTL_SCHEMA_APPLICATION_FK = "fk_ctl_app_id";
public static final String CTL_SCHEMA_TENANT_FK = "fk_ctl_tenant_id";
public static final String CTL_SCHEMA_META_INFO_FK = "fk_ctl_metainfo_id";
public static final String CTL_SCHEMA_JOIN_TABLE_PARENT_FK = "fk_ctl_pr_id";
public static final String CTL_SCHEMA_JOIN_TABLE_CHILD_FK = "fk_ctl_ch_id";
// CTL schema constraints
public static final String CTL_SCHEMA_UNIQUE_CONSTRAINT = "ctl_unique_constraint";
public static final String CTL_SCHEMA_JOIN_TABLE_NAME = "ctl_dependency";
public static final String CTL_SCHEMA_JOIN_TABLE_PARENT_ID = "parent_id";
public static final String CTL_SCHEMA_JOIN_TABLE_CHILD_ID = "child_id";
// Properties and alias constants
public static final String CTL_SCHEMA_TENANT_ID_ALIAS = "tenant.id";
public static final String CTL_SCHEMA_APPLICATION_ID_ALIAS = "application.id";
public static final String CTL_SCHEMA_DEPENDENCY_PROP = "dependencySet";
public static final String CTL_SCHEMA_DEPENDENCY_ALIAS = "dep";
public static final String CTL_SCHEMA_DEPENDENCY_ID_ALIAS = CTL_SCHEMA_DEPENDENCY_ALIAS + "." + ID;


/**
* CTL schema meta info constants
*/
public static final String CTL_SCHEMA_META_INFO_TABLE_NAME = "ctl_metainfo";
public static final String CTL_SCHEMA_META_INFO_FQN = FQN;
public static final String CTL_SCHEMA_META_INFO_VERSION = VERSION;
public static final String CTL_SCHEMA_META_INFO_SCOPE = "scope";
public static final String CTL_SCHEMA_META_INFO_UNIQUE_CONSTRAINT = "ctl_metainfo_unique_constraint";
// Properties and alias constants
public static final String CTL_SCHEMA_META_INFO_PROPERTY = "metaInfo";
public static final String CTL_SCHEMA_META_INFO_ALIAS = "mi";
public static final String CTL_SCHEMA_META_INFO_ALIAS_VERSION = CTL_SCHEMA_META_INFO_ALIAS + "." + CTL_SCHEMA_META_INFO_VERSION;
public static final String CTL_SCHEMA_META_INFO_ALIAS_FQN = CTL_SCHEMA_META_INFO_ALIAS + "." + CTL_SCHEMA_META_INFO_FQN;
public static final String CTL_SCHEMA_META_INFO_ALIAS_SCOPE = CTL_SCHEMA_META_INFO_ALIAS + "." + CTL_SCHEMA_META_INFO_SCOPE;


public static final String LAST_PAGE_MESSAGE = "It is the last page";
public static final String PROFILE = "profile";

Expand Down
@@ -1,7 +1,5 @@
package org.kaaproject.kaa.server.common.dao.impl;

import org.kaaproject.kaa.common.dto.ctl.CTLSchemaDto;

import java.util.List;

public interface CTLSchemaDao<T> extends SqlDao<T> {
Expand All @@ -16,11 +14,9 @@ public interface CTLSchemaDao<T> extends SqlDao<T> {

T findByFqnAndVerAndTenantId(String fqn, Integer version, String tenantId);

T updateScope(CTLSchemaDto ctlSchema);

void removeByFqnAndVerAndTenantId(String fqn, Integer version, String tenantId);

List<T> findDependentsSchemas(Long schemaId);

List<T> findMetaInfoByApplicationId(String appId);
List<T> findAvailableSchemas(String tenantId);
}
@@ -1,5 +1,7 @@
package org.kaaproject.kaa.server.common.dao.impl;

import org.kaaproject.kaa.server.common.dao.model.sql.CTLSchemaMetaInfo;

import java.util.List;

public interface CTLSchemaMetaInfoDao<T> extends SqlDao<T> {
Expand All @@ -9,4 +11,6 @@ public interface CTLSchemaMetaInfoDao<T> extends SqlDao<T> {
T findByFqnAndVersion(String fqn, Integer version);

List<T> findSystemSchemaMetaInfo();

T updateScope(CTLSchemaMetaInfo ctlSchema);
}
Expand Up @@ -15,7 +15,6 @@
*/
package org.kaaproject.kaa.server.common.dao.impl.sql;

import org.hibernate.CacheMode;
import org.hibernate.Criteria;
import org.hibernate.FlushMode;
import org.hibernate.LockMode;
Expand Down Expand Up @@ -44,18 +43,23 @@ public abstract class HibernateAbstractDao<T extends GenericModel<?>> implements
private static final Logger LOG = LoggerFactory.getLogger(HibernateAbstractDao.class);

public static final int FIRST = 1;
private static final int MAX_TIMEOUT = 30000;

@Autowired
private SessionFactory sessionFactory;

protected abstract Class<T> getEntityClass();

public Session getSession() {
public Session getSession(FlushMode flushMode) {
Session session = sessionFactory.getCurrentSession();
session.setFlushMode(FlushMode.ALWAYS);
session.setFlushMode(flushMode);
return session;
}

public Session getSession() {
return getSession(FlushMode.AUTO);
}

protected Criteria getCriteria() {
return getSession().createCriteria(getEntityClass());
}
Expand Down Expand Up @@ -129,7 +133,6 @@ protected T findOneByCriterion(Criterion criterion) {
LOG.trace("Searching {} entity by criterion [{}] ", className, criterion);
Criteria criteria = getCriteria();
criteria.add(criterion);
// criteria.setCacheMode(CacheMode.REFRESH);
return (T) criteria.uniqueResult();
}

Expand Down Expand Up @@ -252,7 +255,7 @@ public T findById(String id, boolean lazy, LockOptions lockOptions) {
} else {
result = (T) session.get(getEntityClass(), Long.parseLong(id));
}
session.buildLockRequest(lockOptions).setScope(true).lock(result);
lockRequest(lockOptions).lock(result);
}
if (LOG.isTraceEnabled()) {
LOG.trace("[{}] Search result: {}.", id, result);
Expand Down Expand Up @@ -280,7 +283,11 @@ public void removeById(String id) {

@Override
public Session.LockRequest lockRequest(LockOptions lockOptions) {
LOG.info("---> Got lock request");
int timeout = lockOptions.getTimeOut();
if (timeout > MAX_TIMEOUT) {
lockOptions.setTimeOut(MAX_TIMEOUT);
}
LOG.debug("Build lock request with options {}", lockOptions);
return getSession().buildLockRequest(lockOptions);
}

Expand Down
Expand Up @@ -85,11 +85,10 @@ public Application findByNameAndTenantId(String name, String tenantId) {
Restrictions.and(
Restrictions.eq(TENANT_REFERENCE, Long.valueOf(tenantId)),
Restrictions.eq(APPLICATION_NAME_PROPERTY, name)));
LOG.debug("Found application {} by tenant id [{}] and name [{}]", application, tenantId, name);
if (LOG.isTraceEnabled()) {
LOG.trace("[{},{}] Search result: {}.", name, tenantId, application);
} else {
LOG.trace("[{},{}] Search result: {}.", name, tenantId, application != null);
LOG.debug("[{},{}] Search result: {}.", name, tenantId, application != null);
}
return application;
}
Expand Down
@@ -1,17 +1,30 @@
package org.kaaproject.kaa.server.common.dao.impl.sql;

import org.hibernate.Criteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.hibernate.sql.JoinType;
import org.kaaproject.kaa.common.dto.ctl.CTLSchemaDto;
import org.kaaproject.kaa.common.dto.ctl.CTLSchemaScopeDto;
import org.kaaproject.kaa.server.common.dao.impl.CTLSchemaDao;
import org.kaaproject.kaa.server.common.dao.model.sql.CTLSchema;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Repository;

import java.util.Arrays;
import java.util.List;

import static org.apache.commons.lang.StringUtils.isNotBlank;
import static org.kaaproject.kaa.server.common.dao.DaoConstants.CTL_SCHEMA_APPLICATION_ID_ALIAS;
import static org.kaaproject.kaa.server.common.dao.DaoConstants.CTL_SCHEMA_DEPENDENCY_ALIAS;
import static org.kaaproject.kaa.server.common.dao.DaoConstants.CTL_SCHEMA_DEPENDENCY_ID_ALIAS;
import static org.kaaproject.kaa.server.common.dao.DaoConstants.CTL_SCHEMA_DEPENDENCY_PROP;
import static org.kaaproject.kaa.server.common.dao.DaoConstants.CTL_SCHEMA_META_INFO_ALIAS;
import static org.kaaproject.kaa.server.common.dao.DaoConstants.CTL_SCHEMA_META_INFO_ALIAS_FQN;
import static org.kaaproject.kaa.server.common.dao.DaoConstants.CTL_SCHEMA_META_INFO_ALIAS_SCOPE;
import static org.kaaproject.kaa.server.common.dao.DaoConstants.CTL_SCHEMA_META_INFO_ALIAS_VERSION;
import static org.kaaproject.kaa.server.common.dao.DaoConstants.CTL_SCHEMA_META_INFO_PROPERTY;
import static org.kaaproject.kaa.server.common.dao.DaoConstants.CTL_SCHEMA_TENANT_ID_ALIAS;

@Repository
public class HibernateCTLSchemaDao extends HibernateAbstractDao<CTLSchema> implements CTLSchemaDao<CTLSchema> {
Expand All @@ -28,52 +41,102 @@ public CTLSchema findByFqnAndVerAndTenantId(String fqn, Integer version, String
CTLSchema ctlSchema = null;
LOG.debug("Searching ctl schema by fqn [{}] and version [{}]", fqn, version);
if (isNotBlank(fqn) && version != null) {
ctlSchema = findOneByCriterionWithAlias("metaInfo", "mi", Restrictions.and(
Restrictions.eq("mi.version", version),
Restrictions.eq("mi.fqn", fqn)));
ctlSchema = findOneByCriterionWithAlias(CTL_SCHEMA_META_INFO_PROPERTY, CTL_SCHEMA_META_INFO_ALIAS, Restrictions.and(
Restrictions.eq(CTL_SCHEMA_META_INFO_ALIAS_VERSION, version),
Restrictions.eq(CTL_SCHEMA_META_INFO_ALIAS_FQN, fqn)));
}
if (LOG.isTraceEnabled()) {
LOG.trace("[{},{}] Search result: {}.", fqn, version, ctlSchema);
LOG.trace("[{},{}] Search result: [{}].", fqn, version, ctlSchema);
} else {
LOG.debug("[{},{}] Search result: {}.", fqn, version, ctlSchema != null);
LOG.debug("[{},{}] Search result: [{}].", fqn, version, ctlSchema != null);
}
return ctlSchema;
}

@Override
public List<CTLSchema> findSystemSchemas() {
return null;
LOG.debug("Searching system ctl metadata");
List<CTLSchema> schemas = findListByCriterionWithAlias(CTL_SCHEMA_META_INFO_PROPERTY, CTL_SCHEMA_META_INFO_ALIAS,
Restrictions.eq(CTL_SCHEMA_META_INFO_ALIAS_SCOPE, CTLSchemaScopeDto.SYSTEM));
if (LOG.isTraceEnabled()) {
LOG.trace("Search result: [{}].", Arrays.toString(schemas.toArray()));
} else {
LOG.debug("Search result: [{}].", schemas.size());
}
return schemas;
}

@Override
public List<CTLSchema> findByTenantId(String tenantId) {
return null;
LOG.debug("Searching ctl schemas by tenant id [{}]", tenantId);
List<CTLSchema> availableSchemas = findListByCriterion(Restrictions.eq(CTL_SCHEMA_TENANT_ID_ALIAS, Long.valueOf(tenantId)));
if (LOG.isTraceEnabled()) {
LOG.trace("[{}] Search result: [{}].", tenantId, Arrays.toString(availableSchemas.toArray()));
} else {
LOG.debug("[{}] Search result: [{}].", tenantId, availableSchemas.size());
}
return availableSchemas;
}

@Override
public List<CTLSchema> findByApplicationId(String appId) {
return null;
LOG.debug("Searching ctl schemas by application id [{}]", appId);
List<CTLSchema> schemas = findListByCriterion(Restrictions.eq(CTL_SCHEMA_APPLICATION_ID_ALIAS, Long.valueOf(appId)));
if (LOG.isTraceEnabled()) {
LOG.trace("[{}] Search result: [{}].", appId, Arrays.toString(schemas.toArray()));
} else {
LOG.debug("[{}] Search result: [{}].", appId, schemas.size());
}
return schemas;
}

@Override
public CTLSchema findLatestByFqn(String fqn) {
return null;
}

@Override
public CTLSchema updateScope(CTLSchemaDto ctlSchema) {
return null;
LOG.debug("Searching latest ctl schema by fqn [{}]", fqn);
Criteria criteria = getCriteria().createAlias(CTL_SCHEMA_META_INFO_PROPERTY, CTL_SCHEMA_META_INFO_ALIAS)
.add(Restrictions.eq(CTL_SCHEMA_META_INFO_ALIAS_FQN, fqn)).addOrder(Order.desc(CTL_SCHEMA_META_INFO_ALIAS_VERSION))
.setMaxResults(FIRST);
CTLSchema latestSchema = findOneByCriteria(criteria);
if (LOG.isTraceEnabled()) {
LOG.trace("[{}] Search result: [{}].", fqn, latestSchema);
} else {
LOG.debug("[{}] Search result: [{}].", fqn, latestSchema != null);
}
return latestSchema;
}

@Override
public void removeByFqnAndVerAndTenantId(String fqn, Integer version, String tenantId) {

CTLSchema ctlSchema = findByFqnAndVerAndTenantId(fqn, version, tenantId);
if (ctlSchema != null) {
remove(ctlSchema);
}
LOG.debug("Removed ctl schema by fqn [{}], version [{}] tenant id [{}]", fqn, version, tenantId);
}

@Override
public List<CTLSchema> findDependentsSchemas(Long schemaId) {
List<CTLSchema> dependentsList = findListByCriterionWithAlias("dependencySet", "dep", JoinType.INNER_JOIN,
Restrictions.eq("dep.id", schemaId));
LOG.debug("Searching dependents ctl schemas for schema with id [{}]", schemaId);
List<CTLSchema> dependentsList = findListByCriterionWithAlias(CTL_SCHEMA_DEPENDENCY_PROP, CTL_SCHEMA_DEPENDENCY_ALIAS,
JoinType.INNER_JOIN, Restrictions.eq(CTL_SCHEMA_DEPENDENCY_ID_ALIAS, schemaId));
if (LOG.isTraceEnabled()) {
LOG.trace("[{}] Search result: [{}].", schemaId, Arrays.toString(dependentsList.toArray()));
} else {
LOG.debug("[{}] Search result: [{}].", schemaId, dependentsList.size());
}
return dependentsList;
}

@Override
public List<CTLSchema> findAvailableSchemas(String tenantId) {
LOG.debug("Searching available ctl schemas for tenant with id [{}]", tenantId);
List<CTLSchema> availableSchemas = findListByCriterion(Restrictions.eqOrIsNull(CTL_SCHEMA_TENANT_ID_ALIAS,
Long.valueOf(tenantId)));
if (LOG.isTraceEnabled()) {
LOG.trace("[{}] Search result: [{}].", tenantId, Arrays.toString(availableSchemas.toArray()));
} else {
LOG.debug("[{}] Search result: [{}].", tenantId, availableSchemas.size());
}
return availableSchemas;
}
}

0 comments on commit 177a8ef

Please sign in to comment.