From 8cc9fe823f0d1ba531cd41a4feeb3e0bd8b0ff5d Mon Sep 17 00:00:00 2001 From: Kirill Liubun Date: Wed, 28 Sep 2016 14:38:22 +0300 Subject: [PATCH] OverloadMethodsDeclarationOrder fix and fixed Indentation in Hibernate-* classes --- .../kaa/client/util/AndroidBase64.java | 10 +- .../channel/impl/DefaultChannelManager.java | 48 +- .../DefaultNotificationManager.java | 106 ++-- .../kaa/client/util/CommonsBase64.java | 10 +- .../security/MessageEncoderDecoder.java | 38 +- .../dao/impl/sql/HibernateAbstractDao.java | 477 ++++++++-------- .../dao/impl/sql/HibernateApplicationDao.java | 128 ++--- .../dao/impl/sql/HibernateCTLSchemaDao.java | 525 +++++++++--------- .../sql/HibernateCTLSchemaMetaInfoDao.java | 268 ++++----- .../sql/HibernateConfigurationSchemaDao.java | 164 +++--- .../impl/sql/HibernateEndpointGroupDao.java | 301 +++++----- .../dao/impl/sql/HibernateHistoryDao.java | 160 +++--- .../impl/sql/HibernateProfileFilterDao.java | 514 ++++++++--------- .../common/dao/model/sql/GenericModel.java | 4 +- .../common/dao/model/sql/ModelUtils.java | 27 +- .../cli/server/BaseCliThriftService.java | 32 +- .../transport/AbstractKaaTransport.java | 27 +- .../server/common/zk/WorkerNodeTracker.java | 80 ++- .../http/transport/HttpTransport.java | 2 +- .../tcp/transport/TcpTransport.java | 2 +- 20 files changed, 1478 insertions(+), 1445 deletions(-) diff --git a/client/client-multi/client-java-android/src/main/java/org/kaaproject/kaa/client/util/AndroidBase64.java b/client/client-multi/client-java-android/src/main/java/org/kaaproject/kaa/client/util/AndroidBase64.java index db5f6ec1ec..9eedfe09b9 100755 --- a/client/client-multi/client-java-android/src/main/java/org/kaaproject/kaa/client/util/AndroidBase64.java +++ b/client/client-multi/client-java-android/src/main/java/org/kaaproject/kaa/client/util/AndroidBase64.java @@ -33,13 +33,15 @@ public byte[] decodeBase64(byte[] base64Data) { } @Override - public byte[] encodeBase64(byte[] binaryData) { - return android.util.Base64.encode(binaryData, android.util.Base64.DEFAULT); + public byte[] decodeBase64(String base64String) { + return android.util.Base64.decode(base64String, android.util.Base64.DEFAULT); } @Override - public byte[] decodeBase64(String base64String) { - return android.util.Base64.decode(base64String, android.util.Base64.DEFAULT); + public byte[] encodeBase64(byte[] binaryData) { + return android.util.Base64.encode(binaryData, android.util.Base64.DEFAULT); } + + } diff --git a/client/client-multi/client-java-core/src/main/java/org/kaaproject/kaa/client/channel/impl/DefaultChannelManager.java b/client/client-multi/client-java-core/src/main/java/org/kaaproject/kaa/client/channel/impl/DefaultChannelManager.java index 013a6f3016..b5c98f92c9 100644 --- a/client/client-multi/client-java-core/src/main/java/org/kaaproject/kaa/client/channel/impl/DefaultChannelManager.java +++ b/client/client-multi/client-java-core/src/main/java/org/kaaproject/kaa/client/channel/impl/DefaultChannelManager.java @@ -231,11 +231,33 @@ private KaaDataChannel getChannel(TransportType type) { return result; } + @Override + public synchronized KaaDataChannel getChannel(String id) { + for (KaaDataChannel channel : channels) { + if (channel.getId().equals(id)) { + return channel; + } + } + return null; + } + + @Override public void sync(TransportType type) { sync(type, false, false); } + private void sync(TransportType type, boolean ack, boolean all) { + LOG.debug("Lookup channel by type {}", type); + KaaDataChannel channel = getChannel(type); + BlockingQueue queue = syncTaskQueueMap.get(channel.getId()); + if (queue != null) { + queue.offer(new SyncTask(type, ack, all)); + } else { + LOG.warn("Can't find queue for channel [{}]", channel.getId()); + } + } + @Override public void syncAck(TransportType type) { sync(type, true, false); @@ -246,15 +268,7 @@ public void syncAll(TransportType type) { sync(type, false, true); } - @Override - public synchronized KaaDataChannel getChannel(String id) { - for (KaaDataChannel channel : channels) { - if (channel.getId().equals(id)) { - return channel; - } - } - return null; - } + @Override public synchronized void onTransportConnectionInfoUpdated(TransportConnectionInfo newServer) { @@ -270,8 +284,10 @@ public synchronized void onTransportConnectionInfoUpdated(TransportConnectionInf } for (KaaDataChannel channel : channels) { - if (channel.getServerType() == newServer.getServerType() && channel.getTransportProtocolId().equals(newServer.getTransportId())) { - LOG.debug("Applying server {} for channel [{}] type {}", newServer, channel.getId(), channel.getTransportProtocolId()); + if (channel.getServerType() == newServer.getServerType() + && channel.getTransportProtocolId().equals(newServer.getTransportId())) { + LOG.debug("Applying server {} for channel [{}] type {}", + newServer, channel.getId(), channel.getTransportProtocolId()); channel.setServer(newServer); if (failoverManager != null) { failoverManager.onServerChanged(newServer); @@ -467,16 +483,6 @@ public void setBootstrapDemultiplexer(KaaDataDemultiplexer demultiplexer) { this.bootstrapDemultiplexer = demultiplexer; } - private void sync(TransportType type, boolean ack, boolean all) { - LOG.debug("Lookup channel by type {}", type); - KaaDataChannel channel = getChannel(type); - BlockingQueue queue = syncTaskQueueMap.get(channel.getId()); - if (queue != null) { - queue.offer(new SyncTask(type, ack, all)); - } else { - LOG.warn("Can't find queue for channel [{}]", channel.getId()); - } - } private void startWorker(KaaDataChannel channel) { stopWorker(channel); diff --git a/client/client-multi/client-java-core/src/main/java/org/kaaproject/kaa/client/notification/DefaultNotificationManager.java b/client/client-multi/client-java-core/src/main/java/org/kaaproject/kaa/client/notification/DefaultNotificationManager.java index adcbaaaa95..94605fb167 100755 --- a/client/client-multi/client-java-core/src/main/java/org/kaaproject/kaa/client/notification/DefaultNotificationManager.java +++ b/client/client-multi/client-java-core/src/main/java/org/kaaproject/kaa/client/notification/DefaultNotificationManager.java @@ -84,6 +84,28 @@ public void addNotificationListener(NotificationListener listener) { } } + @Override + public void addNotificationListener(Long topicId, NotificationListener listener) + throws UnavailableTopicException { + if (listener == null) { + LOG.warn("Failed to add listener: id={}, listener={}", topicId, null); + throw new IllegalArgumentException("Bad listener data"); + } + + findTopicById(topicId); + + synchronized (optionalListeners) { + List listeners = optionalListeners.get(topicId); + + if (listeners == null) { + listeners = new LinkedList<>(); + optionalListeners.put(topicId, listeners); + } + + listeners.add(listener); + } + } + @Override public void removeNotificationListener(NotificationListener listener) { if (listener == null) { @@ -96,6 +118,25 @@ public void removeNotificationListener(NotificationListener listener) { } } + @Override + public void removeNotificationListener(Long topicId, NotificationListener listener) + throws UnavailableTopicException { + if (topicId == null || listener == null) { + LOG.warn("Failed to remove listener: id={}, listener={}", topicId, listener); + throw new IllegalArgumentException("Bad listener data"); + } + + findTopicById(topicId); + + synchronized (optionalListeners) { + List listeners = optionalListeners.get(topicId); + + if (listeners != null) { + listeners.remove(listener); + } + } + } + @Override public void addTopicListListener(NotificationTopicListListener listener) { if (listener == null) { @@ -120,6 +161,8 @@ public void removeTopicListListener(NotificationTopicListListener listener) { } } + + @Override public List getTopics() { List topicList = new LinkedList(); @@ -149,7 +192,8 @@ public void subscribeToTopic(Long topicId, boolean forceSync) throws Unavailable } @Override - public void subscribeToTopics(List topicIds, boolean forceSync) throws UnavailableTopicException { + public void subscribeToTopics(List topicIds, boolean forceSync) + throws UnavailableTopicException { List subscriptionUpdate = new LinkedList<>(); for (Long id : topicIds) { @@ -170,7 +214,8 @@ public void subscribeToTopics(List topicIds, boolean forceSync) throws Una } @Override - public void unsubscribeFromTopic(Long topicId, boolean forceSync) throws UnavailableTopicException { + public void unsubscribeFromTopic(Long topicId, boolean forceSync) + throws UnavailableTopicException { Topic topic = findTopicById(topicId); if (topic.getSubscriptionType() != SubscriptionType.OPTIONAL_SUBSCRIPTION) { LOG.warn("Failed to unsubscribe: topic '{}' isn't optional", topicId); @@ -185,7 +230,8 @@ public void unsubscribeFromTopic(Long topicId, boolean forceSync) throws Unavail } @Override - public void unsubscribeFromTopics(List topicIds, boolean forceSync) throws UnavailableTopicException { + public void unsubscribeFromTopics(List topicIds, boolean forceSync) + throws UnavailableTopicException { List subscriptionUpdate = new LinkedList<>(); for (Long id : topicIds) { @@ -205,44 +251,7 @@ public void unsubscribeFromTopics(List topicIds, boolean forceSync) throws } } - @Override - public void addNotificationListener(Long topicId, NotificationListener listener) throws UnavailableTopicException { - if (listener == null) { - LOG.warn("Failed to add listener: id={}, listener={}", topicId, listener); - throw new IllegalArgumentException("Bad listener data"); - } - - findTopicById(topicId); - - synchronized (optionalListeners) { - List listeners = optionalListeners.get(topicId); - - if (listeners == null) { - listeners = new LinkedList<>(); - optionalListeners.put(topicId, listeners); - } - - listeners.add(listener); - } - } - - @Override - public void removeNotificationListener(Long topicId, NotificationListener listener) throws UnavailableTopicException { - if (topicId == null || listener == null) { - LOG.warn("Failed to remove listener: id={}, listener={}", topicId, listener); - throw new IllegalArgumentException("Bad listener data"); - } - - findTopicById(topicId); - synchronized (optionalListeners) { - List listeners = optionalListeners.get(topicId); - - if (listeners != null) { - listeners.remove(listener); - } - } - } @Override public void sync() { @@ -301,22 +310,27 @@ public void notificationReceived(List notifications) throws IOExce notifyListeners(mandatoryListeners, topic, notification); } } - } catch (UnavailableTopicException e) { - LOG.warn("Received notification for an unknown topic (id={}), exception catched: {}", notification.getTopicId(), e); + } catch (UnavailableTopicException ex) { + LOG.warn("Received notification for an unknown topic (id={}), exception catched: {}", + notification.getTopicId(), ex); } } } - private void notifyListeners(Collection listeners, final Topic topic, final Notification notification) { + private void notifyListeners(Collection listeners, final Topic topic, + final Notification notification) { final Collection listenersCopy = new ArrayList(listeners); if (notification.getBody() != null) { executorContext.getCallbackExecutor().submit(new Runnable() { @Override public void run() { try { - deserializer.notify(Collections.unmodifiableCollection(listenersCopy), topic, notification.getBody().array()); - } catch (IOException e) { - LOG.error("Failed to process notification for topic {}", topic.getId(), e); + deserializer.notify( + Collections.unmodifiableCollection(listenersCopy), + topic, + notification.getBody().array()); + } catch (IOException ex) { + LOG.error("Failed to process notification for topic {}", topic.getId(), ex); } } }); diff --git a/client/client-multi/client-java-core/src/main/java/org/kaaproject/kaa/client/util/CommonsBase64.java b/client/client-multi/client-java-core/src/main/java/org/kaaproject/kaa/client/util/CommonsBase64.java index 7dfc9b301a..dbb4e0e364 100755 --- a/client/client-multi/client-java-core/src/main/java/org/kaaproject/kaa/client/util/CommonsBase64.java +++ b/client/client-multi/client-java-core/src/main/java/org/kaaproject/kaa/client/util/CommonsBase64.java @@ -33,13 +33,15 @@ public byte[] decodeBase64(byte[] base64Data) { } @Override - public byte[] encodeBase64(byte[] binaryData) { - return org.apache.commons.codec.binary.Base64.encodeBase64(binaryData); + public byte[] decodeBase64(String base64String) { + return org.apache.commons.codec.binary.Base64.decodeBase64(base64String); } @Override - public byte[] decodeBase64(String base64String) { - return org.apache.commons.codec.binary.Base64.decodeBase64(base64String); + public byte[] encodeBase64(byte[] binaryData) { + return org.apache.commons.codec.binary.Base64.encodeBase64(binaryData); } + + } diff --git a/common/endpoint-shared/src/main/java/org/kaaproject/kaa/common/endpoint/security/MessageEncoderDecoder.java b/common/endpoint-shared/src/main/java/org/kaaproject/kaa/common/endpoint/security/MessageEncoderDecoder.java index df0f0830d0..4655c5c1e3 100644 --- a/common/endpoint-shared/src/main/java/org/kaaproject/kaa/common/endpoint/security/MessageEncoderDecoder.java +++ b/common/endpoint-shared/src/main/java/org/kaaproject/kaa/common/endpoint/security/MessageEncoderDecoder.java @@ -135,9 +135,9 @@ static Signature signatureForAlgorithm(String algorithm) { public static String bytesToHex(byte[] bytes) { char[] hexChars = new char[bytes.length * 3]; for (int j = 0; j < bytes.length; j++) { - int v = bytes[j] & 0xFF; - hexChars[j * 3] = HEX_ARRAY[v >>> 4]; - hexChars[j * 3 + 1] = HEX_ARRAY[v & 0x0F]; + int value = bytes[j] & 0xFF; + hexChars[j * 3] = HEX_ARRAY[value >>> 4]; + hexChars[j * 3 + 1] = HEX_ARRAY[value & 0x0F]; hexChars[j * 3 + 2] = ' '; } return new String(hexChars); @@ -170,21 +170,10 @@ public byte[] encodeData(byte[] message) throws GeneralSecurityException { return sessionCipherPair.encCipher.doFinal(message); } - /** - * Decode data using session key then is decoded using private key. - * - * @param message the message - * @param encodedKey the encoded key - * @return the byte[] - * @throws GeneralSecurityException the general security exception - */ - public byte[] decodeData(byte[] message, byte[] encodedKey) throws GeneralSecurityException { - sessionCipherPair = null; - decodeSessionKey(encodedKey); - return decodeData(message); - } - private void decodeSessionKey(byte[] encodedKey) throws InvalidKeyException, IllegalBlockSizeException, + private void decodeSessionKey(byte[] encodedKey) throws + InvalidKeyException, + IllegalBlockSizeException, BadPaddingException { Cipher sessionKeyCipher = RSA_CIPHER.get(); sessionKeyCipher.init(Cipher.DECRYPT_MODE, privateKey); @@ -206,6 +195,21 @@ public byte[] decodeData(byte[] message) throws GeneralSecurityException { return sessionCipherPair.decCipher.doFinal(message); } + + /** + * Decode data using session key then is decoded using private key. + * + * @param message the message + * @param encodedKey the encoded key + * @return the byte[] + * @throws GeneralSecurityException the general security exception + */ + public byte[] decodeData(byte[] message, byte[] encodedKey) throws GeneralSecurityException { + sessionCipherPair = null; + decodeSessionKey(encodedKey); + return decodeData(message); + } + /** * Sign message using private key. * diff --git a/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/impl/sql/HibernateAbstractDao.java b/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/impl/sql/HibernateAbstractDao.java index 1035be7ee2..9f2f61839e 100644 --- a/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/impl/sql/HibernateAbstractDao.java +++ b/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/impl/sql/HibernateAbstractDao.java @@ -16,6 +16,8 @@ package org.kaaproject.kaa.server.common.dao.impl.sql; +import static org.apache.commons.lang.StringUtils.isNotBlank; + import org.hibernate.Criteria; import org.hibernate.FlushMode; import org.hibernate.LockMode; @@ -36,276 +38,277 @@ import java.util.Collections; import java.util.List; -import static org.apache.commons.lang.StringUtils.isNotBlank; - @SuppressWarnings("unchecked") public abstract class HibernateAbstractDao> implements SqlDao { - private static final Logger LOG = LoggerFactory.getLogger(HibernateAbstractDao.class); + private static final Logger LOG = LoggerFactory.getLogger(HibernateAbstractDao.class); - public static final int FIRST = 1; - private static final int MAX_TIMEOUT = 30000; + public static final int FIRST = 1; + private static final int MAX_TIMEOUT = 30000; - @Autowired - private SessionFactory sessionFactory; + @Autowired + private SessionFactory sessionFactory; - protected abstract Class getEntityClass(); + protected abstract Class getEntityClass(); - @Override - public Session getSession(FlushMode flushMode) { - Session session = sessionFactory.getCurrentSession(); - session.setFlushMode(flushMode); - return session; - } + @Override + public Session getSession(FlushMode flushMode) { + Session session = sessionFactory.getCurrentSession(); + session.setFlushMode(flushMode); + return session; + } - @Override - public Session getSession() { - return getSession(FlushMode.AUTO); - } + @Override + public Session getSession() { + return getSession(FlushMode.AUTO); + } - @Override - public void refresh(Object object) { - getSession().refresh(object); - } + @Override + public void refresh(Object object) { + getSession().refresh(object); + } - protected Criteria getCriteria() { - return getSession().createCriteria(getEntityClass()); - } + protected Criteria getCriteria() { + return getSession().createCriteria(getEntityClass()); + } - protected Query getQuery(String hql) { - return getSession().createQuery(hql); - } + protected Query getQuery(String hql) { + return getSession().createQuery(hql); + } - protected List findListByCriterion(Criterion criterion) { - String className = getSimpleClassName(); - LOG.trace("Searching {} entities by criterion [{}] ", className, criterion); - Criteria criteria = getCriteria(); - criteria.add(criterion); - List resultList = criteria.list(); - if (resultList == null) { - resultList = Collections.emptyList(); - } - return resultList; + protected List findListByCriterion(Criterion criterion) { + String className = getSimpleClassName(); + LOG.trace("Searching {} entities by criterion [{}] ", className, criterion); + Criteria criteria = getCriteria(); + criteria.add(criterion); + List resultList = criteria.list(); + if (resultList == null) { + resultList = Collections.emptyList(); } - - protected List toLongIds(List ids) { - List lids = Collections.emptyList(); - if (ids != null && !ids.isEmpty()) { - lids = new ArrayList<>(); - for (String id : ids) { - try { - Long lid = Long.parseLong(id); - lids.add(lid); - } catch (NumberFormatException e) { - LOG.warn("Can't convert string id {} to Long id", id); - } - } + return resultList; + } + + protected List toLongIds(List ids) { + List lids = Collections.emptyList(); + if (ids != null && !ids.isEmpty()) { + lids = new ArrayList<>(); + for (String id : ids) { + try { + Long lid = Long.parseLong(id); + lids.add(lid); + } catch (NumberFormatException ex) { + LOG.warn("Can't convert string id {} to Long id", id); } - return lids; + } } - - protected List findListByCriterionWithAlias(String path, String alias, Criterion criterion) { - return findListByCriterionWithAlias(path, alias, null, criterion); + return lids; + } + + protected List findListByCriterionWithAlias(String path, String alias, Criterion criterion) { + return findListByCriterionWithAlias(path, alias, null, criterion); + } + + protected List findListByCriterionWithAlias(String path, String alias, + JoinType type, Criterion criterion) { + String className = getSimpleClassName(); + LOG.trace("Searching {} entities by criterion [{}] ", className, criterion); + Criteria criteria = getCriteria(); + if (type == null) { + criteria.createAlias(path, alias); + } else { + criteria.createAlias(path, alias, type); } - - protected List findListByCriterionWithAlias(String path, String alias, JoinType type, Criterion criterion) { - String className = getSimpleClassName(); - LOG.trace("Searching {} entities by criterion [{}] ", className, criterion); - Criteria criteria = getCriteria(); - if (type == null) { - criteria.createAlias(path, alias); - } else { - criteria.createAlias(path, alias, type); - } - criteria.add(criterion); - List resultList = criteria.list(); - if (resultList == null) { - resultList = Collections.emptyList(); - } - return resultList; + criteria.add(criterion); + List resultList = criteria.list(); + if (resultList == null) { + resultList = Collections.emptyList(); } - - protected List findListByCriteria(Criteria criteria) { - String className = getSimpleClassName(); - LOG.trace("Searching {} entities by criteria [{}] ", className, criteria); - List resultList = criteria.list(); - if (resultList == null) { - resultList = Collections.emptyList(); - } - return resultList; + return resultList; + } + + protected List findListByCriteria(Criteria criteria) { + String className = getSimpleClassName(); + LOG.trace("Searching {} entities by criteria [{}] ", className, criteria); + List resultList = criteria.list(); + if (resultList == null) { + resultList = Collections.emptyList(); } - - protected T findOneByCriterion(Criterion criterion) { - String className = getSimpleClassName(); - LOG.trace("Searching {} entity by criterion [{}] ", className, criterion); - Criteria criteria = getCriteria(); - criteria.add(criterion); - return (T) criteria.uniqueResult(); + return resultList; + } + + protected T findOneByCriterion(Criterion criterion) { + String className = getSimpleClassName(); + LOG.trace("Searching {} entity by criterion [{}] ", className, criterion); + Criteria criteria = getCriteria(); + criteria.add(criterion); + return (T) criteria.uniqueResult(); + } + + protected T findOneByCriterionWithLock(Criterion criterion, LockMode lockMode) { + String className = getSimpleClassName(); + LOG.trace("Searching {} entity by criterion [{}] ", className, criterion); + Criteria criteria = getCriteria(); + criteria.setLockMode(lockMode); + criteria.add(criterion); + return (T) criteria.uniqueResult(); + } + + protected T findOneByCriterionWithAlias(String path, String alias, Criterion criterion) { + String className = getSimpleClassName(); + LOG.trace("Searching {} entity by criterion [{}] ", className, criterion); + Criteria criteria = getCriteria(); + criteria.createAlias(path, alias); + criteria.add(criterion); + return (T) criteria.uniqueResult(); + } + + protected T findOneByCriteria(Criteria criteria) { + String className = getSimpleClassName(); + LOG.trace("Searching {} entity by criteria [{}] ", className, criteria); + return (T) criteria.uniqueResult(); + } + + @Override + public T save(T object, boolean flush) { + LOG.debug("Saving {} entity {}", getEntityClass(), object); + Session session = getSession(); + object = (T) session.merge(object); + if (flush) { + session.flush(); } - - protected T findOneByCriterionWithLock(Criterion criterion, LockMode lockMode) { - String className = getSimpleClassName(); - LOG.trace("Searching {} entity by criterion [{}] ", className, criterion); - Criteria criteria = getCriteria(); - criteria.setLockMode(lockMode); - criteria.add(criterion); - return (T) criteria.uniqueResult(); + if (LOG.isTraceEnabled()) { + LOG.trace("Saving result: {}", object); + } else { + LOG.debug("Saving result: {}", object != null); } - - protected T findOneByCriterionWithAlias(String path, String alias, Criterion criterion) { - String className = getSimpleClassName(); - LOG.trace("Searching {} entity by criterion [{}] ", className, criterion); - Criteria criteria = getCriteria(); - criteria.createAlias(path, alias); - criteria.add(criterion); - return (T) criteria.uniqueResult(); + return object; + } + + @Override + public T save(T object) { + return save(object, false); + } + + @Override + public V save(V object, Class clazz) { + LOG.debug("Saving {} entity {}", clazz, object); + Session session = getSession(); + session.saveOrUpdate(object); + if (LOG.isTraceEnabled()) { + LOG.trace("[{}] Saving result: {}", clazz, object); + } else { + LOG.debug("[{}] Saving result: {}", clazz, object != null); } - - protected T findOneByCriteria(Criteria criteria) { - String className = getSimpleClassName(); - LOG.trace("Searching {} entity by criteria [{}] ", className, criteria); - return (T) criteria.uniqueResult(); + return object; + } + + + public T update(T obj) { + LOG.trace("Updated {} entity: {} ", getSimpleClassName(), obj); + getSession().update(obj); + LOG.trace("[{}] Update result: {}", getSimpleClassName(), obj != null); + return obj; + } + + @Override + public T persist(T object) { + LOG.debug("Persisting {} entity {}", getEntityClass(), object); + Session session = getSession(); + session.persist(object); + if (LOG.isTraceEnabled()) { + LOG.trace("Persisting result: {}", object); + } else { + LOG.debug("Persisting result: {}", object != null); } + return object; + } - @Override - public T save(T object, boolean flush) { - LOG.debug("Saving {} entity {}", getEntityClass(), object); - Session session = getSession(); - object = (T) session.merge(object); - if (flush) { - session.flush(); - } - if (LOG.isTraceEnabled()) { - LOG.trace("Saving result: {}", object); - } else { - LOG.debug("Saving result: {}", object != null); - } - return object; - } - @Override - public T save(T object) { - return save(object, false); + @Override + public List find() { + List resultList = getCriteria().list(); + if (resultList == null) { + resultList = Collections.emptyList(); } - - public T update(T o) { - LOG.trace("Updated {} entity: {} ", getSimpleClassName(), o); - getSession().update(o); - LOG.trace("[{}] Update result: {}", getSimpleClassName(), o != null); - return o; + if (LOG.isTraceEnabled()) { + LOG.trace("Search result: {}.", Arrays.toString(resultList.toArray())); + } else { + LOG.debug("Search result: {}.", resultList.size()); } - - @Override - public T persist(T object) { - LOG.debug("Persisting {} entity {}", getEntityClass(), object); - Session session = getSession(); - session.persist(object); - if (LOG.isTraceEnabled()) { - LOG.trace("Persisting result: {}", object); - } else { - LOG.debug("Persisting result: {}", object != null); - } - return object; - } - - @Override - public V save(V object, Class clazz) { - LOG.debug("Saving {} entity {}", clazz, object); - Session session = getSession(); - session.saveOrUpdate(object); - if (LOG.isTraceEnabled()) { - LOG.trace("[{}] Saving result: {}", clazz, object); - } else { - LOG.debug("[{}] Saving result: {}", clazz, object != null); - } - return object; - } - - @Override - public List find() { - List resultList = getCriteria().list(); - if (resultList == null) { - resultList = Collections.emptyList(); - } - if (LOG.isTraceEnabled()) { - LOG.trace("Search result: {}.", Arrays.toString(resultList.toArray())); - } else { - LOG.debug("Search result: {}.", resultList.size()); - } - return resultList; - } - - @Override - public T findById(String id) { - return findById(id, false); - } - - @Override - public T findById(String id, boolean lazy) { - T result = null; - String className = getSimpleClassName(); - LOG.debug("Searching {} entity by id [{}] ", className, id); - if (isNotBlank(id)) { - Session session = getSession(); - if (lazy) { - result = (T) session.load(getEntityClass(), Long.parseLong(id)); - } else { - result = (T) session.get(getEntityClass(), Long.parseLong(id)); - } - } - if (LOG.isTraceEnabled()) { - LOG.trace("[{}] Search result: {}.", id, result); - } else { - LOG.debug("[{}] Search result: {}.", id, result != null); - } - return result; + return resultList; + } + + @Override + public T findById(String id) { + return findById(id, false); + } + + @Override + public T findById(String id, boolean lazy) { + T result = null; + String className = getSimpleClassName(); + LOG.debug("Searching {} entity by id [{}] ", className, id); + if (isNotBlank(id)) { + Session session = getSession(); + if (lazy) { + result = (T) session.load(getEntityClass(), Long.parseLong(id)); + } else { + result = (T) session.get(getEntityClass(), Long.parseLong(id)); + } } - - @Override - public void removeAll() { - Session session = getSession(); - session.delete(getEntityClass()); - LOG.debug("Removed all {} entities ", getSimpleClassName()); + if (LOG.isTraceEnabled()) { + LOG.trace("[{}] Search result: {}.", id, result); + } else { + LOG.debug("[{}] Search result: {}.", id, result != null); } - - @Override - public void removeById(String id) { - if (isNotBlank(id)) { - Session session = getSession(); - session.delete(findById(id, true)); - LOG.debug("Removed {} entity by id [{}]", getSimpleClassName(), id); - } + return result; + } + + @Override + public void removeAll() { + Session session = getSession(); + session.delete(getEntityClass()); + LOG.debug("Removed all {} entities ", getSimpleClassName()); + } + + @Override + public void removeById(String id) { + if (isNotBlank(id)) { + Session session = getSession(); + session.delete(findById(id, true)); + LOG.debug("Removed {} entity by id [{}]", getSimpleClassName(), id); } + } - @Override - public Session.LockRequest lockRequest(LockOptions lockOptions) { - int timeout = lockOptions.getTimeOut(); - if (timeout > MAX_TIMEOUT) { - lockOptions.setTimeOut(MAX_TIMEOUT); - } - LOG.debug("Build lock request with options {}", lockOptions); - return getSession().buildLockRequest(lockOptions); + @Override + public Session.LockRequest lockRequest(LockOptions lockOptions) { + int timeout = lockOptions.getTimeOut(); + if (timeout > MAX_TIMEOUT) { + lockOptions.setTimeOut(MAX_TIMEOUT); } - - protected void remove(T o) { - if (o != null) { - getSession().delete(o); - LOG.debug("Removed entity {} ", o); - } + LOG.debug("Build lock request with options {}", lockOptions); + return getSession().buildLockRequest(lockOptions); + } + + protected void remove(T obj) { + if (obj != null) { + getSession().delete(obj); + LOG.debug("Removed entity {} ", obj); } - - protected void removeList(List list) { - if (list != null && !list.isEmpty()) { - Session session = getSession(); - for (T o : list) { - session.delete(o); - } - LOG.debug("Removed list of {} entities ", list); - } + } + + protected void removeList(List list) { + if (list != null && !list.isEmpty()) { + Session session = getSession(); + for (T o : list) { + session.delete(o); + } + LOG.debug("Removed list of {} entities ", list); } + } - private String getSimpleClassName() { - return getEntityClass().getSimpleName(); - } + private String getSimpleClassName() { + return getEntityClass().getSimpleName(); + } } diff --git a/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/impl/sql/HibernateApplicationDao.java b/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/impl/sql/HibernateApplicationDao.java index 2dc64483e3..73f7f5d352 100644 --- a/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/impl/sql/HibernateApplicationDao.java +++ b/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/impl/sql/HibernateApplicationDao.java @@ -16,6 +16,13 @@ package org.kaaproject.kaa.server.common.dao.impl.sql; +import static org.kaaproject.kaa.server.common.dao.DaoConstants.APPLICATION_NAME_PROPERTY; +import static org.kaaproject.kaa.server.common.dao.DaoConstants.APPLICATION_TOKEN_PROPERTY; +import static org.kaaproject.kaa.server.common.dao.DaoConstants.TENANT_ALIAS; +import static org.kaaproject.kaa.server.common.dao.DaoConstants.TENANT_ENTITY_NAME; +import static org.kaaproject.kaa.server.common.dao.DaoConstants.TENANT_PROPERTY; +import static org.kaaproject.kaa.server.common.dao.DaoConstants.TENANT_REFERENCE; + import org.hibernate.criterion.Restrictions; import org.kaaproject.kaa.server.common.dao.impl.ApplicationDao; import org.kaaproject.kaa.server.common.dao.model.sql.Application; @@ -26,84 +33,77 @@ import java.util.Arrays; import java.util.List; -import static org.kaaproject.kaa.server.common.dao.DaoConstants.APPLICATION_NAME_PROPERTY; -import static org.kaaproject.kaa.server.common.dao.DaoConstants.APPLICATION_TOKEN_PROPERTY; -import static org.kaaproject.kaa.server.common.dao.DaoConstants.TENANT_ALIAS; -import static org.kaaproject.kaa.server.common.dao.DaoConstants.TENANT_ENTITY_NAME; -import static org.kaaproject.kaa.server.common.dao.DaoConstants.TENANT_PROPERTY; -import static org.kaaproject.kaa.server.common.dao.DaoConstants.TENANT_REFERENCE; - @Repository public class HibernateApplicationDao extends HibernateAbstractDao implements ApplicationDao { - private static final Logger LOG = LoggerFactory.getLogger(HibernateApplicationDao.class); + private static final Logger LOG = LoggerFactory.getLogger(HibernateApplicationDao.class); - @Override - protected Class getEntityClass() { - return Application.class; - } + @Override + protected Class getEntityClass() { + return Application.class; + } - @Override - public List findByTenantId(String tenantId) { - LOG.debug("Searching applications by tenant id [{}]", tenantId); - List applications = findListByCriterionWithAlias( - TENANT_ENTITY_NAME, TENANT_ALIAS, - Restrictions.eq(TENANT_REFERENCE, Long.valueOf(tenantId))); + @Override + public List findByTenantId(String tenantId) { + LOG.debug("Searching applications by tenant id [{}]", tenantId); + List applications = findListByCriterionWithAlias( + TENANT_ENTITY_NAME, TENANT_ALIAS, + Restrictions.eq(TENANT_REFERENCE, Long.valueOf(tenantId))); - if (LOG.isTraceEnabled()) { - LOG.trace("[{}] Search result: {}.", tenantId, Arrays.toString(applications.toArray())); - } else { - LOG.debug("[{}] Search result: {}.", tenantId, applications.size()); - } - return applications; + if (LOG.isTraceEnabled()) { + LOG.trace("[{}] Search result: {}.", tenantId, Arrays.toString(applications.toArray())); + } else { + LOG.debug("[{}] Search result: {}.", tenantId, applications.size()); } + return applications; + } - @Override - public Application findByApplicationToken(String token) { - LOG.debug("Searching for application by token {}", token); - Application app = findOneByCriterion(Restrictions.eq(APPLICATION_TOKEN_PROPERTY, token)); - if (LOG.isTraceEnabled()) { - LOG.trace("[{}] Search result: {}.", token, app); - } else { - LOG.debug("[{}] Search result: {}.", token, app != null); - } - return app; + @Override + public Application findByApplicationToken(String token) { + LOG.debug("Searching for application by token {}", token); + Application app = findOneByCriterion(Restrictions.eq(APPLICATION_TOKEN_PROPERTY, token)); + if (LOG.isTraceEnabled()) { + LOG.trace("[{}] Search result: {}.", token, app); + } else { + LOG.debug("[{}] Search result: {}.", token, app != null); } + return app; + } - // TODO: Need to add optimistic lock - @Override - public Application getNextSeqNumber(String id) { - Application app = findById(id); - if (app != null) { - app.incrementSequenceNumber(); - save(app); - LOG.debug("Incremented application sequence number to {}", app.getSequenceNumber()); - } - return app; + // TODO: Need to add optimistic lock + @Override + public Application getNextSeqNumber(String id) { + Application app = findById(id); + if (app != null) { + app.incrementSequenceNumber(); + save(app); + LOG.debug("Incremented application sequence number to {}", app.getSequenceNumber()); } + return app; + } - @Override - public Application findByNameAndTenantId(String name, String tenantId) { - LOG.debug("Searching for application by name [{}] and tenant id [{}] ", name, tenantId); - Application application = findOneByCriterionWithAlias(TENANT_PROPERTY, TENANT_ALIAS, - Restrictions.and( - Restrictions.eq(TENANT_REFERENCE, Long.valueOf(tenantId)), - Restrictions.eq(APPLICATION_NAME_PROPERTY, name))); - if (LOG.isTraceEnabled()) { - LOG.trace("[{},{}] Search result: {}.", name, tenantId, application); - } else { - LOG.debug("[{},{}] Search result: {}.", name, tenantId, application != null); - } - return application; + @Override + public Application findByNameAndTenantId(String name, String tenantId) { + LOG.debug("Searching for application by name [{}] and tenant id [{}] ", name, tenantId); + Application application = findOneByCriterionWithAlias(TENANT_PROPERTY, TENANT_ALIAS, + Restrictions.and( + Restrictions.eq(TENANT_REFERENCE, Long.valueOf(tenantId)), + Restrictions.eq(APPLICATION_NAME_PROPERTY, name))); + if (LOG.isTraceEnabled()) { + LOG.trace("[{},{}] Search result: {}.", name, tenantId, application); + } else { + LOG.debug("[{},{}] Search result: {}.", name, tenantId, application != null); } + return application; + } - @Override - public void removeByApplicationToken(String token) { - Application app = findByApplicationToken(token); - if (app != null) { - remove(app); - } - LOG.debug("Removed application by application token [{}] ", token); + @Override + public void removeByApplicationToken(String token) { + Application app = findByApplicationToken(token); + if (app != null) { + remove(app); } + LOG.debug("Removed application by application token [{}] ", token); + } } diff --git a/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/impl/sql/HibernateCTLSchemaDao.java b/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/impl/sql/HibernateCTLSchemaDao.java index 3f4eaea251..b19c7d7d5b 100644 --- a/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/impl/sql/HibernateCTLSchemaDao.java +++ b/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/impl/sql/HibernateCTLSchemaDao.java @@ -29,9 +29,6 @@ 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_VERSION; -import java.util.Arrays; -import java.util.List; - import org.hibernate.Criteria; import org.hibernate.criterion.Criterion; import org.hibernate.criterion.Order; @@ -45,294 +42,306 @@ import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; +import java.util.List; + @Repository public class HibernateCTLSchemaDao extends HibernateAbstractDao implements CtlSchemaDao { - private static final Logger LOG = LoggerFactory.getLogger(HibernateCTLSchemaDao.class); + private static final Logger LOG = LoggerFactory.getLogger(HibernateCTLSchemaDao.class); - @Override - protected Class getEntityClass() { - return CTLSchema.class; - } + @Override + protected Class getEntityClass() { + return CTLSchema.class; + } - private Criterion buildScopeCriterion(String tenantId, String applicationId) { - if (isBlank(tenantId)) { - // SYSTEM - tenantId=null && appId=null - return Restrictions.and(Restrictions.isNull(CTL_SCHEMA_META_INFO_ALIAS_TENANT_ID), - Restrictions.isNull(CTL_SCHEMA_META_INFO_ALIAS_APPLICATION_ID)); - } else { - if (isBlank(applicationId)) { - // TENANT - (tenantId=id or tenantId=null) && appId=null - return Restrictions.and(Restrictions.or( - Restrictions.eq(CTL_SCHEMA_META_INFO_ALIAS_TENANT_ID, Long.valueOf(tenantId)), - Restrictions.isNull(CTL_SCHEMA_META_INFO_ALIAS_TENANT_ID) - ), - Restrictions.isNull(CTL_SCHEMA_META_INFO_ALIAS_APPLICATION_ID)); - } else { - // APPLICATION - (tenantId=id or tenantId=null) && (appId=id or appId=null) - return Restrictions.and(Restrictions.or( - Restrictions.eq(CTL_SCHEMA_META_INFO_ALIAS_TENANT_ID, Long.valueOf(tenantId)), - Restrictions.isNull(CTL_SCHEMA_META_INFO_ALIAS_TENANT_ID) - ), - Restrictions.or( - Restrictions.eq(CTL_SCHEMA_META_INFO_ALIAS_APPLICATION_ID, Long.valueOf(applicationId)), - Restrictions.isNull(CTL_SCHEMA_META_INFO_ALIAS_APPLICATION_ID))); - } - } - } - - @Override - @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) - public CTLSchema save(CTLSchema object) { - return super.save(object); + private Criterion buildScopeCriterion(String tenantId, String applicationId) { + if (isBlank(tenantId)) { + // SYSTEM - tenantId=null && appId=null + return Restrictions.and(Restrictions.isNull(CTL_SCHEMA_META_INFO_ALIAS_TENANT_ID), + Restrictions.isNull(CTL_SCHEMA_META_INFO_ALIAS_APPLICATION_ID)); + } else { + if (isBlank(applicationId)) { + // TENANT - (tenantId=id or tenantId=null) && appId=null + return Restrictions.and(Restrictions.or( + Restrictions.eq(CTL_SCHEMA_META_INFO_ALIAS_TENANT_ID, Long.valueOf(tenantId)), + Restrictions.isNull(CTL_SCHEMA_META_INFO_ALIAS_TENANT_ID) + ), + Restrictions.isNull(CTL_SCHEMA_META_INFO_ALIAS_APPLICATION_ID)); + } else { + // APPLICATION - (tenantId=id or tenantId=null) && (appId=id or appId=null) + return Restrictions.and(Restrictions.or( + Restrictions.eq(CTL_SCHEMA_META_INFO_ALIAS_TENANT_ID, Long.valueOf(tenantId)), + Restrictions.isNull(CTL_SCHEMA_META_INFO_ALIAS_TENANT_ID) + ), + Restrictions.or( + Restrictions.eq(CTL_SCHEMA_META_INFO_ALIAS_APPLICATION_ID, + Long.valueOf(applicationId)), + Restrictions.isNull(CTL_SCHEMA_META_INFO_ALIAS_APPLICATION_ID))); + } } + } - @Override - @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) - public CTLSchema save(CTLSchema object, boolean flush) { - return super.save(object, flush); - } + @Override + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) + public CTLSchema save(CTLSchema object) { + return super.save(object); + } - @Override - public List findSystemSchemas() { - LOG.debug("Searching system ctl metadata"); - List schemas = findListByCriterionWithAlias( - CTL_SCHEMA_META_INFO_PROPERTY, CTL_SCHEMA_META_INFO_ALIAS, - buildScopeCriterion(null, null)); - if (LOG.isTraceEnabled()) { - LOG.trace("Search result: [{}].", Arrays.toString(schemas.toArray())); - } else { - LOG.debug("Search result: [{}].", schemas.size()); - } - return schemas; + @Override + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) + public CTLSchema save(CTLSchema object, boolean flush) { + return super.save(object, flush); + } + + @Override + public List findSystemSchemas() { + LOG.debug("Searching system ctl metadata"); + List schemas = findListByCriterionWithAlias( + CTL_SCHEMA_META_INFO_PROPERTY, CTL_SCHEMA_META_INFO_ALIAS, + buildScopeCriterion(null, null)); + if (LOG.isTraceEnabled()) { + LOG.trace("Search result: [{}].", Arrays.toString(schemas.toArray())); + } else { + LOG.debug("Search result: [{}].", schemas.size()); } + return schemas; + } - @Override - public List findAvailableSchemasForTenant(String tenantId) { - LOG.debug("Searching available ctl schemas for tenant with id [{}]", tenantId); - List availableSchemas = findListByCriterionWithAlias( - CTL_SCHEMA_META_INFO_PROPERTY, CTL_SCHEMA_META_INFO_ALIAS, - buildScopeCriterion(tenantId, null)); - 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 findAvailableSchemasForTenant(String tenantId) { + LOG.debug("Searching available ctl schemas for tenant with id [{}]", tenantId); + List availableSchemas = findListByCriterionWithAlias( + CTL_SCHEMA_META_INFO_PROPERTY, CTL_SCHEMA_META_INFO_ALIAS, + buildScopeCriterion(tenantId, null)); + 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 findAvailableSchemasForApplication(String tenantId, String appId) { - LOG.debug("Searching available ctl schemas for application by tenant id [{}] " - + "and application id [{}]", - tenantId, appId); - List availableSchemas = findListByCriterionWithAlias( - CTL_SCHEMA_META_INFO_PROPERTY, CTL_SCHEMA_META_INFO_ALIAS, - buildScopeCriterion(tenantId, appId)); + @Override + public List findAvailableSchemasForApplication(String tenantId, String appId) { + LOG.debug("Searching available ctl schemas for application by tenant id [{}] " + + "and application id [{}]", + tenantId, appId); + List availableSchemas = findListByCriterionWithAlias( + CTL_SCHEMA_META_INFO_PROPERTY, CTL_SCHEMA_META_INFO_ALIAS, + buildScopeCriterion(tenantId, appId)); - if (LOG.isTraceEnabled()) { - LOG.trace("[{}][{}] Search result: [{}].", tenantId, appId, Arrays.toString(availableSchemas.toArray())); - } else { - LOG.debug("[{}][{}] Search result: [{}].", tenantId, appId, availableSchemas.size()); - } - return availableSchemas; + if (LOG.isTraceEnabled()) { + LOG.trace("[{}][{}] Search result: [{}].", + tenantId, appId, Arrays.toString(availableSchemas.toArray())); + } else { + LOG.debug("[{}][{}] Search result: [{}].", tenantId, appId, availableSchemas.size()); } + return availableSchemas; + } - @Override - public CTLSchema findByFqnAndVerAndTenantIdAndApplicationId(String fqn, - Integer version, String tenantId, String applicationId) { - CTLSchema ctlSchema = null; - LOG.debug("Searching ctl schema by fqn [{}], version [{}], tenant [{}] and applicationId [{}]", - fqn, version, tenantId, applicationId); - if (isNotBlank(fqn) && version != null) { - ctlSchema = findOneByCriterionWithAlias( - CTL_SCHEMA_META_INFO_PROPERTY, CTL_SCHEMA_META_INFO_ALIAS, - Restrictions.and(Restrictions.eq(CTL_SCHEMA_VERSION, version), - Restrictions.eq(CTL_SCHEMA_META_INFO_ALIAS_FQN, fqn), - tenantId != null - ? Restrictions.eq( - CTL_SCHEMA_META_INFO_ALIAS_TENANT_ID, - Long.valueOf(tenantId)) - : Restrictions.isNull( - CTL_SCHEMA_META_INFO_ALIAS_TENANT_ID), - applicationId != null - ? Restrictions.eq( - CTL_SCHEMA_META_INFO_ALIAS_APPLICATION_ID, - Long.valueOf(applicationId)) - : Restrictions.isNull( - CTL_SCHEMA_META_INFO_ALIAS_APPLICATION_ID))); - } + @Override + public CTLSchema findByFqnAndVerAndTenantIdAndApplicationId( + String fqn, Integer version, String tenantId, String applicationId) { + CTLSchema ctlSchema = null; + LOG.debug("Searching ctl schema by fqn [{}], version [{}], tenant [{}] and applicationId [{}]", + fqn, version, tenantId, applicationId); + if (isNotBlank(fqn) && version != null) { + ctlSchema = findOneByCriterionWithAlias( + CTL_SCHEMA_META_INFO_PROPERTY, CTL_SCHEMA_META_INFO_ALIAS, + Restrictions.and(Restrictions.eq(CTL_SCHEMA_VERSION, version), + Restrictions.eq(CTL_SCHEMA_META_INFO_ALIAS_FQN, fqn), + tenantId != null + ? Restrictions.eq( + CTL_SCHEMA_META_INFO_ALIAS_TENANT_ID, + Long.valueOf(tenantId)) + : Restrictions.isNull( + CTL_SCHEMA_META_INFO_ALIAS_TENANT_ID), + applicationId != null + ? Restrictions.eq( + CTL_SCHEMA_META_INFO_ALIAS_APPLICATION_ID, + Long.valueOf(applicationId)) + : Restrictions.isNull( + CTL_SCHEMA_META_INFO_ALIAS_APPLICATION_ID))); + } - if (LOG.isTraceEnabled()) { - LOG.trace("[{},{},{},{}] Search result: [{}].", fqn, version, tenantId, applicationId, ctlSchema); - } else { - LOG.debug("[{},{},{},{}] Search result: [{}].", fqn, version, tenantId, applicationId, ctlSchema != null); - } - return ctlSchema; + if (LOG.isTraceEnabled()) { + LOG.trace("[{},{},{},{}] Search result: [{}].", + fqn, version, tenantId, applicationId, ctlSchema); + } else { + LOG.debug("[{},{},{},{}] Search result: [{}].", + fqn, version, tenantId, applicationId, ctlSchema != null); } + return ctlSchema; + } - @Override - public CTLSchema findByMetaInfoIdAndVer(String metaInfoId, Integer version) { - CTLSchema ctlSchema = null; - LOG.debug("Searching ctl schema by meta info id [{}] and version [{}]", - metaInfoId, version); - if (isNotBlank(metaInfoId) && version != null) { - ctlSchema = findOneByCriterionWithAlias( - CTL_SCHEMA_META_INFO_PROPERTY, CTL_SCHEMA_META_INFO_ALIAS, - Restrictions.and(Restrictions.eq(CTL_SCHEMA_VERSION, version), - Restrictions.eq( - CTL_SCHEMA_META_INFO_ALIAS_ID, - Long.valueOf(metaInfoId)))); - } + @Override + public CTLSchema findByMetaInfoIdAndVer(String metaInfoId, Integer version) { + CTLSchema ctlSchema = null; + LOG.debug("Searching ctl schema by meta info id [{}] and version [{}]", + metaInfoId, version); + if (isNotBlank(metaInfoId) && version != null) { + ctlSchema = findOneByCriterionWithAlias( + CTL_SCHEMA_META_INFO_PROPERTY, CTL_SCHEMA_META_INFO_ALIAS, + Restrictions.and(Restrictions.eq(CTL_SCHEMA_VERSION, version), + Restrictions.eq( + CTL_SCHEMA_META_INFO_ALIAS_ID, + Long.valueOf(metaInfoId)))); + } - if (LOG.isTraceEnabled()) { - LOG.trace("[{},{}] Search result: [{}].", metaInfoId, version, ctlSchema); - } else { - LOG.debug("[{},{}] Search result: [{}].", metaInfoId, version, ctlSchema != null); - } - return ctlSchema; + if (LOG.isTraceEnabled()) { + LOG.trace("[{},{}] Search result: [{}].", metaInfoId, version, ctlSchema); + } else { + LOG.debug("[{},{}] Search result: [{}].", metaInfoId, version, ctlSchema != null); } + return ctlSchema; + } - @Override - public CTLSchema findAnyByFqnAndVerAndTenantIdAndApplicationId(String fqn, - Integer version, - String tenantId, - String applicationId) { - CTLSchema ctlSchema = null; - LOG.debug("Searching any ctl schema by fqn [{}], version [{}], " - +"tenant [{}] and applicationId [{}]", - fqn, version, tenantId, applicationId); - if (isNotBlank(fqn) && version != null) { - ctlSchema = findOneByCriterionWithAlias( - CTL_SCHEMA_META_INFO_PROPERTY, CTL_SCHEMA_META_INFO_ALIAS, - Restrictions.and(Restrictions.eq(CTL_SCHEMA_VERSION, version), - Restrictions.eq(CTL_SCHEMA_META_INFO_ALIAS_FQN, fqn), - buildScopeCriterion(tenantId, applicationId))); - } + @Override + public CTLSchema findAnyByFqnAndVerAndTenantIdAndApplicationId(String fqn, + Integer version, + String tenantId, + String applicationId) { + CTLSchema ctlSchema = null; + LOG.debug("Searching any ctl schema by fqn [{}], version [{}], " + + "tenant [{}] and applicationId [{}]", + fqn, version, tenantId, applicationId); + if (isNotBlank(fqn) && version != null) { + ctlSchema = findOneByCriterionWithAlias( + CTL_SCHEMA_META_INFO_PROPERTY, CTL_SCHEMA_META_INFO_ALIAS, + Restrictions.and(Restrictions.eq(CTL_SCHEMA_VERSION, version), + Restrictions.eq(CTL_SCHEMA_META_INFO_ALIAS_FQN, fqn), + buildScopeCriterion(tenantId, applicationId))); + } - if (LOG.isTraceEnabled()) { - LOG.trace("[{},{},{},{}] Search result: [{}].", - fqn, version, tenantId, applicationId, ctlSchema); - } else { - LOG.debug("[{},{},{},{}] Search result: [{}].", - fqn, version, tenantId, applicationId, ctlSchema != null); - } - return ctlSchema; + if (LOG.isTraceEnabled()) { + LOG.trace("[{},{},{},{}] Search result: [{}].", + fqn, version, tenantId, applicationId, ctlSchema); + } else { + LOG.debug("[{},{},{},{}] Search result: [{}].", + fqn, version, tenantId, applicationId, ctlSchema != null); } + return ctlSchema; + } - @Override - public CTLSchema findLatestByFqnAndTenantIdAndApplicationId(String fqn, - String tenantId, - String applicationId) { - LOG.debug("Searching latest ctl schema by fqn [{}], tenantId [{}] and applicationId [{}]", - fqn, tenantId, applicationId); - Criteria criteria = getCriteria().createAlias( - CTL_SCHEMA_META_INFO_PROPERTY, - CTL_SCHEMA_META_INFO_ALIAS) - .add(Restrictions.and( - Restrictions.eq(CTL_SCHEMA_META_INFO_ALIAS_FQN, fqn), - tenantId != null - ? Restrictions.eq( - CTL_SCHEMA_META_INFO_ALIAS_TENANT_ID, - Long.valueOf(tenantId)) - : Restrictions.isNull(CTL_SCHEMA_META_INFO_ALIAS_TENANT_ID), - applicationId != null - ? Restrictions.eq( - CTL_SCHEMA_META_INFO_ALIAS_APPLICATION_ID, - Long.valueOf(applicationId)) - : Restrictions.isNull(CTL_SCHEMA_META_INFO_ALIAS_APPLICATION_ID)) - ).addOrder(Order.desc(CTL_SCHEMA_VERSION)) - .setMaxResults(FIRST); - CTLSchema latestSchema = findOneByCriteria(criteria); - if (LOG.isTraceEnabled()) { - LOG.trace("[{},{},{}] Search result: [{}].", - fqn, tenantId, applicationId, latestSchema); - } else { - LOG.debug("[{},{},{}] Search result: [{}].", - fqn, tenantId, applicationId, latestSchema != null); - } - return latestSchema; + @Override + public CTLSchema findLatestByFqnAndTenantIdAndApplicationId(String fqn, + String tenantId, + String applicationId) { + LOG.debug("Searching latest ctl schema by fqn [{}], tenantId [{}] and applicationId [{}]", + fqn, tenantId, applicationId); + Criteria criteria = getCriteria().createAlias( + CTL_SCHEMA_META_INFO_PROPERTY, + CTL_SCHEMA_META_INFO_ALIAS) + .add(Restrictions.and( + Restrictions.eq(CTL_SCHEMA_META_INFO_ALIAS_FQN, fqn), + tenantId != null + ? Restrictions.eq( + CTL_SCHEMA_META_INFO_ALIAS_TENANT_ID, + Long.valueOf(tenantId)) + : Restrictions.isNull(CTL_SCHEMA_META_INFO_ALIAS_TENANT_ID), + applicationId != null + ? Restrictions.eq( + CTL_SCHEMA_META_INFO_ALIAS_APPLICATION_ID, + Long.valueOf(applicationId)) + : Restrictions.isNull(CTL_SCHEMA_META_INFO_ALIAS_APPLICATION_ID)) + ).addOrder(Order.desc(CTL_SCHEMA_VERSION)) + .setMaxResults(FIRST); + CTLSchema latestSchema = findOneByCriteria(criteria); + if (LOG.isTraceEnabled()) { + LOG.trace("[{},{},{}] Search result: [{}].", + fqn, tenantId, applicationId, latestSchema); + } else { + LOG.debug("[{},{},{}] Search result: [{}].", + fqn, tenantId, applicationId, latestSchema != null); } + return latestSchema; + } - @Override - public CTLSchema findLatestByMetaInfoId(String metaInfoId) { - CTLSchema latestSchema = null; - LOG.debug("Searching latest version of ctl schema by meta info id [{}]", - metaInfoId); - if (isNotBlank(metaInfoId)) { - Criteria criteria = getCriteria().createAlias(CTL_SCHEMA_META_INFO_PROPERTY, CTL_SCHEMA_META_INFO_ALIAS) - .add(Restrictions.eq(CTL_SCHEMA_META_INFO_ALIAS_ID, Long.valueOf(metaInfoId))) - .addOrder(Order.desc(CTL_SCHEMA_VERSION)) - .setMaxResults(FIRST); - latestSchema = findOneByCriteria(criteria); - } - if (LOG.isTraceEnabled()) { - LOG.trace("[{}] Search result: [{}].", metaInfoId, latestSchema); - } else { - LOG.debug("[{}] Search result: [{}].", metaInfoId, latestSchema != null); - } - return latestSchema; + @Override + public CTLSchema findLatestByMetaInfoId(String metaInfoId) { + CTLSchema latestSchema = null; + LOG.debug("Searching latest version of ctl schema by meta info id [{}]", + metaInfoId); + if (isNotBlank(metaInfoId)) { + Criteria criteria = getCriteria() + .createAlias(CTL_SCHEMA_META_INFO_PROPERTY, CTL_SCHEMA_META_INFO_ALIAS) + .add(Restrictions.eq(CTL_SCHEMA_META_INFO_ALIAS_ID, Long.valueOf(metaInfoId))) + .addOrder(Order.desc(CTL_SCHEMA_VERSION)) + .setMaxResults(FIRST); + latestSchema = findOneByCriteria(criteria); + } + if (LOG.isTraceEnabled()) { + LOG.trace("[{}] Search result: [{}].", metaInfoId, latestSchema); + } else { + LOG.debug("[{}] Search result: [{}].", metaInfoId, latestSchema != null); } + return latestSchema; + } - @Override - public List findAllByFqnAndTenantIdAndApplicationId(String fqn, - String tenantId, - String applicationId) { - LOG.debug("Searching available version of ctl schema by fqn [{}], " - + "tenantId [{}] and applicationId [{}]", - fqn, tenantId, applicationId); - Criteria criteria = getCriteria().createAlias( - CTL_SCHEMA_META_INFO_PROPERTY, - CTL_SCHEMA_META_INFO_ALIAS) - .add(Restrictions.and( - Restrictions.eq(CTL_SCHEMA_META_INFO_ALIAS_FQN, fqn), - tenantId != null - ? Restrictions.eq( - CTL_SCHEMA_META_INFO_ALIAS_TENANT_ID, - Long.valueOf(tenantId)) - : Restrictions.isNull(CTL_SCHEMA_META_INFO_ALIAS_TENANT_ID), - applicationId != null - ? Restrictions.eq( - CTL_SCHEMA_META_INFO_ALIAS_APPLICATION_ID, - Long.valueOf(applicationId)) - : Restrictions.isNull(CTL_SCHEMA_META_INFO_ALIAS_APPLICATION_ID)) - ).addOrder(Order.asc(CTL_SCHEMA_VERSION)); + @Override + public List findAllByFqnAndTenantIdAndApplicationId(String fqn, + String tenantId, + String applicationId) { + LOG.debug("Searching available version of ctl schema by fqn [{}], " + + "tenantId [{}] and applicationId [{}]", + fqn, tenantId, applicationId); + Criteria criteria = getCriteria().createAlias( + CTL_SCHEMA_META_INFO_PROPERTY, + CTL_SCHEMA_META_INFO_ALIAS) + .add(Restrictions.and( + Restrictions.eq(CTL_SCHEMA_META_INFO_ALIAS_FQN, fqn), + tenantId != null + ? Restrictions.eq( + CTL_SCHEMA_META_INFO_ALIAS_TENANT_ID, + Long.valueOf(tenantId)) + : Restrictions.isNull(CTL_SCHEMA_META_INFO_ALIAS_TENANT_ID), + applicationId != null + ? Restrictions.eq( + CTL_SCHEMA_META_INFO_ALIAS_APPLICATION_ID, + Long.valueOf(applicationId)) + : Restrictions.isNull(CTL_SCHEMA_META_INFO_ALIAS_APPLICATION_ID)) + ).addOrder(Order.asc(CTL_SCHEMA_VERSION)); - List schemas = findListByCriteria(criteria); - if (LOG.isTraceEnabled()) { - LOG.trace("Search result: [{}].", Arrays.toString(schemas.toArray())); - } else { - LOG.debug("Search result: [{}].", schemas.size()); - } - return schemas; + List schemas = findListByCriteria(criteria); + if (LOG.isTraceEnabled()) { + LOG.trace("Search result: [{}].", Arrays.toString(schemas.toArray())); + } else { + LOG.debug("Search result: [{}].", schemas.size()); } + return schemas; + } - @Override - public List findAllByMetaInfoId(String metaInfoId) { - LOG.debug("Searching available version of ctl schema by meta info id [{}]", metaInfoId); - Criteria criteria = getCriteria().createAlias(CTL_SCHEMA_META_INFO_PROPERTY, CTL_SCHEMA_META_INFO_ALIAS) - .add(Restrictions.eq(CTL_SCHEMA_META_INFO_ALIAS_ID, Long.valueOf(metaInfoId)) - ).addOrder(Order.asc(CTL_SCHEMA_VERSION)); - List schemas = findListByCriteria(criteria); - if (LOG.isTraceEnabled()) { - LOG.trace("Search result: [{}].", Arrays.toString(schemas.toArray())); - } else { - LOG.debug("Search result: [{}].", schemas.size()); - } - return schemas; + @Override + public List findAllByMetaInfoId(String metaInfoId) { + LOG.debug("Searching available version of ctl schema by meta info id [{}]", metaInfoId); + Criteria criteria = getCriteria() + .createAlias(CTL_SCHEMA_META_INFO_PROPERTY, CTL_SCHEMA_META_INFO_ALIAS) + .add(Restrictions.eq(CTL_SCHEMA_META_INFO_ALIAS_ID, Long.valueOf(metaInfoId))) + .addOrder(Order.asc(CTL_SCHEMA_VERSION)); + List schemas = findListByCriteria(criteria); + if (LOG.isTraceEnabled()) { + LOG.trace("Search result: [{}].", Arrays.toString(schemas.toArray())); + } else { + LOG.debug("Search result: [{}].", schemas.size()); } + return schemas; + } - @Override - public List findDependentSchemas(String schemaId) { - LOG.debug("Searching dependents ctl schemas for schema with id [{}]", schemaId); - List dependentsList = findListByCriterionWithAlias(CTL_SCHEMA_DEPENDENCY_PROP, CTL_SCHEMA_DEPENDENCY_ALIAS, - JoinType.INNER_JOIN, Restrictions.eq(CTL_SCHEMA_DEPENDENCY_ID_ALIAS, Long.valueOf(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 findDependentSchemas(String schemaId) { + LOG.debug("Searching dependents ctl schemas for schema with id [{}]", schemaId); + List dependentsList = findListByCriterionWithAlias( + CTL_SCHEMA_DEPENDENCY_PROP, + CTL_SCHEMA_DEPENDENCY_ALIAS, + JoinType.INNER_JOIN, + Restrictions.eq(CTL_SCHEMA_DEPENDENCY_ID_ALIAS, Long.valueOf(schemaId))); + if (LOG.isTraceEnabled()) { + LOG.trace("[{}] Search result: [{}].", schemaId, Arrays.toString(dependentsList.toArray())); + } else { + LOG.debug("[{}] Search result: [{}].", schemaId, dependentsList.size()); } + return dependentsList; + } } diff --git a/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/impl/sql/HibernateCTLSchemaMetaInfoDao.java b/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/impl/sql/HibernateCTLSchemaMetaInfoDao.java index e870b325ca..5e7babdf42 100644 --- a/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/impl/sql/HibernateCTLSchemaMetaInfoDao.java +++ b/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/impl/sql/HibernateCTLSchemaMetaInfoDao.java @@ -22,11 +22,6 @@ import static org.kaaproject.kaa.server.common.dao.DaoConstants.CTL_SCHEMA_META_INFO_TENANT_ID_ALIAS; import static org.kaaproject.kaa.server.common.dao.DaoConstants.ID_PROPERTY; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - import org.hibernate.criterion.Criterion; import org.hibernate.criterion.Restrictions; import org.kaaproject.kaa.server.common.dao.impl.CTLSchemaMetaInfoDao; @@ -37,150 +32,155 @@ import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + @Repository public class HibernateCTLSchemaMetaInfoDao extends HibernateAbstractDao implements CTLSchemaMetaInfoDao { - private static final Logger LOG = LoggerFactory.getLogger(HibernateCTLSchemaMetaInfoDao.class); + private static final Logger LOG = LoggerFactory.getLogger(HibernateCTLSchemaMetaInfoDao.class); - public HibernateCTLSchemaMetaInfoDao() { - } + public HibernateCTLSchemaMetaInfoDao() { + } + + @Override + protected Class getEntityClass() { + return CTLSchemaMetaInfo.class; + } - @Override - protected Class getEntityClass() { - return CTLSchemaMetaInfo.class; + @Override + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) + public CTLSchemaMetaInfo save(CTLSchemaMetaInfo object) { + String tenantId = object.getTenant() != null ? object.getTenant().getStringId() : null; + String applicationId = object.getApplication() != null ? object.getApplication().getStringId() : null; + LOG.debug("Try to save or find meta info with fqn [{}], tenantId [{}] and applicationId [{}]", object.getFqn(), + tenantId, applicationId); + CTLSchemaMetaInfo uniqueMetaInfo = findByFqnTenantIdAndApplicationId(object.getFqn(), tenantId, applicationId); + if (uniqueMetaInfo == null) { + uniqueMetaInfo = super.save(object, true); + LOG.debug("Save result: {}", uniqueMetaInfo); + } else { + LOG.debug("Search result: {}", uniqueMetaInfo); } + return uniqueMetaInfo; + } - @Override - @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) - public CTLSchemaMetaInfo save(CTLSchemaMetaInfo object) { - String tenantId = object.getTenant() != null ? object.getTenant().getStringId() : null; - String applicationId = object.getApplication() != null ? object.getApplication().getStringId() : null; - LOG.debug("Try to save or find meta info with fqn [{}], tenantId [{}] and applicationId [{}]", object.getFqn(), - tenantId, applicationId); - CTLSchemaMetaInfo uniqueMetaInfo = findByFqnTenantIdAndApplicationId(object.getFqn(), tenantId, applicationId); - if (uniqueMetaInfo == null) { - uniqueMetaInfo = super.save(object, true); - LOG.debug("Save result: {}", uniqueMetaInfo); - } else { - LOG.debug("Search result: {}", uniqueMetaInfo); - } - return uniqueMetaInfo; + private Criterion buildSearchCriterion(String fqn, String tenantId, String applicationId) { + List searchCriterions = new ArrayList<>(); + searchCriterions.add(Restrictions.eq(CTL_SCHEMA_META_INFO_FQN, fqn)); + if (isNotBlank(tenantId)) { + searchCriterions.add(Restrictions.eq(CTL_SCHEMA_META_INFO_TENANT_ID_ALIAS, Long.valueOf(tenantId))); + } else { + searchCriterions.add(Restrictions.isNull(CTL_SCHEMA_META_INFO_TENANT_ID_ALIAS)); } - - private Criterion buildSearchCriterion(String fqn, String tenantId, String applicationId) { - List searchCriterions = new ArrayList<>(); - searchCriterions.add(Restrictions.eq(CTL_SCHEMA_META_INFO_FQN, fqn)); - if (isNotBlank(tenantId)) { - searchCriterions.add(Restrictions.eq(CTL_SCHEMA_META_INFO_TENANT_ID_ALIAS, Long.valueOf(tenantId))); - } else { - searchCriterions.add(Restrictions.isNull(CTL_SCHEMA_META_INFO_TENANT_ID_ALIAS)); - } - if (isNotBlank(applicationId)) { - searchCriterions.add(Restrictions.eq(CTL_SCHEMA_META_INFO_APPLICATION_ID_ALIAS, Long.valueOf(applicationId))); - } else { - searchCriterions.add(Restrictions.isNull(CTL_SCHEMA_META_INFO_APPLICATION_ID_ALIAS)); - } - return Restrictions.and(searchCriterions.toArray(new Criterion[searchCriterions.size()])); + if (isNotBlank(applicationId)) { + searchCriterions.add(Restrictions.eq(CTL_SCHEMA_META_INFO_APPLICATION_ID_ALIAS, Long.valueOf(applicationId))); + } else { + searchCriterions.add(Restrictions.isNull(CTL_SCHEMA_META_INFO_APPLICATION_ID_ALIAS)); } - - @Override - @Transactional(propagation = Propagation.REQUIRED) - public CTLSchemaMetaInfo findByFqnTenantIdAndApplicationId(String fqn, String tenantId, String applicationId) { - LOG.debug("Searching ctl metadata by fqn [{}], tenantId [{}] and applicationId [{}]", fqn, tenantId, applicationId); - CTLSchemaMetaInfo ctlSchemaMetaInfo = findOneByCriterion(buildSearchCriterion(fqn, tenantId, applicationId)); - if (LOG.isTraceEnabled()) { - LOG.trace("[{},{},{}] Search result: {}.", fqn, tenantId, applicationId, ctlSchemaMetaInfo); - } else { - LOG.debug("[{},{},{}] Search result: {}.", fqn, tenantId, applicationId, ctlSchemaMetaInfo != null); - } - return ctlSchemaMetaInfo; + return Restrictions.and(searchCriterions.toArray(new Criterion[searchCriterions.size()])); + } + + @Override + @Transactional(propagation = Propagation.REQUIRED) + public CTLSchemaMetaInfo findByFqnTenantIdAndApplicationId(String fqn, String tenantId, String applicationId) { + LOG.debug("Searching ctl metadata by fqn [{}], tenantId [{}] and applicationId [{}]", fqn, tenantId, applicationId); + CTLSchemaMetaInfo ctlSchemaMetaInfo = findOneByCriterion(buildSearchCriterion(fqn, tenantId, applicationId)); + if (LOG.isTraceEnabled()) { + LOG.trace("[{},{},{}] Search result: {}.", fqn, tenantId, applicationId, ctlSchemaMetaInfo); + } else { + LOG.debug("[{},{},{}] Search result: {}.", fqn, tenantId, applicationId, ctlSchemaMetaInfo != null); } - - @Override - public List findSiblingsByFqnTenantIdAndApplicationId(String fqn, String tenantId, - String applicationId) { - LOG.debug("Searching siblings of ctl by fqn [{}], tenantId [{}] and applicationId [{}]", fqn, tenantId, applicationId); - List ctlSchemaMetaInfos; - if (isNotBlank(fqn) && isNotBlank(tenantId) && isNotBlank(applicationId)) { - ctlSchemaMetaInfos = findListByCriterion( - Restrictions.and( - Restrictions.eq(CTL_SCHEMA_META_INFO_FQN, fqn), - Restrictions.eq(CTL_SCHEMA_META_INFO_TENANT_ID_ALIAS, Long.valueOf(tenantId)), - Restrictions.isNotNull(CTL_SCHEMA_META_INFO_APPLICATION_ID_ALIAS), - Restrictions.ne(CTL_SCHEMA_META_INFO_APPLICATION_ID_ALIAS, Long.valueOf(applicationId)) - )); - } else { - ctlSchemaMetaInfos = Collections.emptyList(); - } - if (LOG.isTraceEnabled()) { - LOG.trace("[{}][{}][{}] Search result: [{}].", fqn, tenantId, applicationId, Arrays.toString(ctlSchemaMetaInfos.toArray())); - } else { - LOG.debug("[{}][{}][{}] Search result: [{}].", fqn, tenantId, applicationId, ctlSchemaMetaInfos.size()); - } - return ctlSchemaMetaInfos; + return ctlSchemaMetaInfo; + } + + @Override + public List findSiblingsByFqnTenantIdAndApplicationId(String fqn, String tenantId, + String applicationId) { + LOG.debug("Searching siblings of ctl by fqn [{}], tenantId [{}] and applicationId [{}]", fqn, tenantId, applicationId); + List ctlSchemaMetaInfos; + if (isNotBlank(fqn) && isNotBlank(tenantId) && isNotBlank(applicationId)) { + ctlSchemaMetaInfos = findListByCriterion( + Restrictions.and( + Restrictions.eq(CTL_SCHEMA_META_INFO_FQN, fqn), + Restrictions.eq(CTL_SCHEMA_META_INFO_TENANT_ID_ALIAS, Long.valueOf(tenantId)), + Restrictions.isNotNull(CTL_SCHEMA_META_INFO_APPLICATION_ID_ALIAS), + Restrictions.ne(CTL_SCHEMA_META_INFO_APPLICATION_ID_ALIAS, Long.valueOf(applicationId)) + )); + } else { + ctlSchemaMetaInfos = Collections.emptyList(); } - - private Criterion buildExludingSearchCriterion(String fqn, String excludingTenantId, String excludingApplicationId) { - List searchCriterions = new ArrayList<>(); - if (isNotBlank(excludingTenantId)) { - searchCriterions.add(Restrictions.isNull(CTL_SCHEMA_META_INFO_TENANT_ID_ALIAS)); - if (isNotBlank(excludingApplicationId)) { - searchCriterions.add(Restrictions.and( - Restrictions.eq(CTL_SCHEMA_META_INFO_TENANT_ID_ALIAS, Long.valueOf(excludingTenantId)), - Restrictions.isNull(CTL_SCHEMA_META_INFO_APPLICATION_ID_ALIAS))); - } else { - searchCriterions.add(Restrictions.and( - Restrictions.eq(CTL_SCHEMA_META_INFO_TENANT_ID_ALIAS, Long.valueOf(excludingTenantId)), - Restrictions.isNotNull(CTL_SCHEMA_META_INFO_APPLICATION_ID_ALIAS))); - } - } else { - searchCriterions.add(Restrictions.isNotNull(CTL_SCHEMA_META_INFO_TENANT_ID_ALIAS)); - } - return Restrictions.and(Restrictions.eq(CTL_SCHEMA_META_INFO_FQN, fqn), - Restrictions.or(searchCriterions.toArray(new Criterion[searchCriterions.size()]))); + if (LOG.isTraceEnabled()) { + LOG.trace("[{}][{}][{}] Search result: [{}].", fqn, tenantId, applicationId, Arrays.toString(ctlSchemaMetaInfos.toArray())); + } else { + LOG.debug("[{}][{}][{}] Search result: [{}].", fqn, tenantId, applicationId, ctlSchemaMetaInfos.size()); } + return ctlSchemaMetaInfos; + } - @Override - public List findExistingFqns(String fqn, String excludingTenantId, String excludingApplicationId) { - LOG.debug("Searching ctl metadata by fqn [{}], excludingTenantId [{}] and excludingApplicationId [{}]", fqn, excludingTenantId, excludingApplicationId); - List ctlSchemasMetaInfos = findListByCriterion(buildExludingSearchCriterion(fqn, excludingTenantId, excludingApplicationId)); - if (LOG.isTraceEnabled()) { - LOG.trace("[{},{},{}] Search result: {}.", fqn, excludingTenantId, excludingApplicationId, Arrays.toString(ctlSchemasMetaInfos.toArray())); - } else { - LOG.debug("[{},{},{}] Search result: {}.", fqn, excludingTenantId, excludingApplicationId, ctlSchemasMetaInfos.size()); - } - return ctlSchemasMetaInfos; + private Criterion buildExludingSearchCriterion(String fqn, String excludingTenantId, String excludingApplicationId) { + List searchCriterions = new ArrayList<>(); + if (isNotBlank(excludingTenantId)) { + searchCriterions.add(Restrictions.isNull(CTL_SCHEMA_META_INFO_TENANT_ID_ALIAS)); + if (isNotBlank(excludingApplicationId)) { + searchCriterions.add(Restrictions.and( + Restrictions.eq(CTL_SCHEMA_META_INFO_TENANT_ID_ALIAS, Long.valueOf(excludingTenantId)), + Restrictions.isNull(CTL_SCHEMA_META_INFO_APPLICATION_ID_ALIAS))); + } else { + searchCriterions.add(Restrictions.and( + Restrictions.eq(CTL_SCHEMA_META_INFO_TENANT_ID_ALIAS, Long.valueOf(excludingTenantId)), + Restrictions.isNotNull(CTL_SCHEMA_META_INFO_APPLICATION_ID_ALIAS))); + } + } else { + searchCriterions.add(Restrictions.isNotNull(CTL_SCHEMA_META_INFO_TENANT_ID_ALIAS)); } - - @Override - public List findOthersByFqnAndTenantId(String fqn, String tenantId, String excludingId) { - LOG.debug("Searching other ctl schema meta infos by fqn [{}], tenant id [{}] and excluding id [{}]", - fqn, tenantId, excludingId); - List availableSchemas = findListByCriterion( - Restrictions.and(Restrictions.ne(ID_PROPERTY, Long.valueOf(excludingId)), - Restrictions.eq(CTL_SCHEMA_META_INFO_FQN, fqn), - Restrictions.or( - Restrictions.eq(CTL_SCHEMA_META_INFO_TENANT_ID_ALIAS, Long.valueOf(tenantId)), - Restrictions.isNull(CTL_SCHEMA_META_INFO_TENANT_ID_ALIAS)))); - if (LOG.isTraceEnabled()) { - LOG.trace("[{}][{}][{}] Search result: [{}].", fqn, tenantId, excludingId, Arrays.toString(availableSchemas.toArray())); - } else { - LOG.debug("[{}][{}][{}] Search result: [{}].", fqn, tenantId, excludingId, availableSchemas.size()); - } - return availableSchemas; + return Restrictions.and(Restrictions.eq(CTL_SCHEMA_META_INFO_FQN, fqn), + Restrictions.or(searchCriterions.toArray(new Criterion[searchCriterions.size()]))); + } + + @Override + public List findExistingFqns(String fqn, String excludingTenantId, String excludingApplicationId) { + LOG.debug("Searching ctl metadata by fqn [{}], excludingTenantId [{}] and excludingApplicationId [{}]", fqn, excludingTenantId, excludingApplicationId); + List ctlSchemasMetaInfos = findListByCriterion(buildExludingSearchCriterion(fqn, excludingTenantId, excludingApplicationId)); + if (LOG.isTraceEnabled()) { + LOG.trace("[{},{},{}] Search result: {}.", fqn, excludingTenantId, excludingApplicationId, Arrays.toString(ctlSchemasMetaInfos.toArray())); + } else { + LOG.debug("[{},{},{}] Search result: {}.", fqn, excludingTenantId, excludingApplicationId, ctlSchemasMetaInfos.size()); + } + return ctlSchemasMetaInfos; + } + + @Override + public List findOthersByFqnAndTenantId(String fqn, String tenantId, String excludingId) { + LOG.debug("Searching other ctl schema meta infos by fqn [{}], tenant id [{}] and excluding id [{}]", + fqn, tenantId, excludingId); + List availableSchemas = findListByCriterion( + Restrictions.and(Restrictions.ne(ID_PROPERTY, Long.valueOf(excludingId)), + Restrictions.eq(CTL_SCHEMA_META_INFO_FQN, fqn), + Restrictions.or( + Restrictions.eq(CTL_SCHEMA_META_INFO_TENANT_ID_ALIAS, Long.valueOf(tenantId)), + Restrictions.isNull(CTL_SCHEMA_META_INFO_TENANT_ID_ALIAS)))); + if (LOG.isTraceEnabled()) { + LOG.trace("[{}][{}][{}] Search result: [{}].", fqn, tenantId, excludingId, Arrays.toString(availableSchemas.toArray())); + } else { + LOG.debug("[{}][{}][{}] Search result: [{}].", fqn, tenantId, excludingId, availableSchemas.size()); } - - @Override - public CTLSchemaMetaInfo updateScope(CTLSchemaMetaInfo ctlSchemaMetaInfo) { - LOG.debug("Updating ctl meta info scope {}", ctlSchemaMetaInfo); - CTLSchemaMetaInfo metaInfo = findById(ctlSchemaMetaInfo.getStringId()); - if (metaInfo != null) { - metaInfo.setTenant(ctlSchemaMetaInfo.getTenant()); - metaInfo.setApplication(ctlSchemaMetaInfo.getApplication()); - metaInfo = super.save(metaInfo); - } - LOG.debug("Update result: {}", metaInfo != null); - return metaInfo; + return availableSchemas; + } + + @Override + public CTLSchemaMetaInfo updateScope(CTLSchemaMetaInfo ctlSchemaMetaInfo) { + LOG.debug("Updating ctl meta info scope {}", ctlSchemaMetaInfo); + CTLSchemaMetaInfo metaInfo = findById(ctlSchemaMetaInfo.getStringId()); + if (metaInfo != null) { + metaInfo.setTenant(ctlSchemaMetaInfo.getTenant()); + metaInfo.setApplication(ctlSchemaMetaInfo.getApplication()); + metaInfo = super.save(metaInfo); } + LOG.debug("Update result: {}", metaInfo != null); + return metaInfo; + } } diff --git a/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/impl/sql/HibernateConfigurationSchemaDao.java b/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/impl/sql/HibernateConfigurationSchemaDao.java index 4e03390065..66a824fcdd 100644 --- a/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/impl/sql/HibernateConfigurationSchemaDao.java +++ b/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/impl/sql/HibernateConfigurationSchemaDao.java @@ -16,6 +16,13 @@ package org.kaaproject.kaa.server.common.dao.impl.sql; +import static org.apache.commons.lang.StringUtils.isNotBlank; +import static org.kaaproject.kaa.server.common.dao.DaoConstants.APPLICATION_ALIAS; +import static org.kaaproject.kaa.server.common.dao.DaoConstants.APPLICATION_PROPERTY; +import static org.kaaproject.kaa.server.common.dao.DaoConstants.APPLICATION_REFERENCE; +import static org.kaaproject.kaa.server.common.dao.DaoConstants.ID_PROPERTY; +import static org.kaaproject.kaa.server.common.dao.DaoConstants.VERSION_PROPERTY; + import org.hibernate.Criteria; import org.hibernate.criterion.Order; import org.hibernate.criterion.Restrictions; @@ -29,100 +36,93 @@ import java.util.Collections; import java.util.List; -import static org.apache.commons.lang.StringUtils.isNotBlank; -import static org.kaaproject.kaa.server.common.dao.DaoConstants.APPLICATION_ALIAS; -import static org.kaaproject.kaa.server.common.dao.DaoConstants.APPLICATION_PROPERTY; -import static org.kaaproject.kaa.server.common.dao.DaoConstants.APPLICATION_REFERENCE; -import static org.kaaproject.kaa.server.common.dao.DaoConstants.ID_PROPERTY; -import static org.kaaproject.kaa.server.common.dao.DaoConstants.VERSION_PROPERTY; - @Repository public class HibernateConfigurationSchemaDao extends HibernateAbstractDao implements ConfigurationSchemaDao { - private static final Logger LOG = LoggerFactory.getLogger(HibernateConfigurationSchemaDao.class); + private static final Logger LOG = LoggerFactory.getLogger(HibernateConfigurationSchemaDao.class); - @Override - public List findByApplicationId(String appId) { - List schemas = Collections.emptyList(); - LOG.debug("Searching configuration schemas by application id [{}] ", appId); - if (isNotBlank(appId)) { - schemas = findListByCriterionWithAlias(APPLICATION_PROPERTY, APPLICATION_ALIAS, - Restrictions.eq(APPLICATION_REFERENCE, 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 List findByApplicationId(String appId) { + List schemas = Collections.emptyList(); + LOG.debug("Searching configuration schemas by application id [{}] ", appId); + if (isNotBlank(appId)) { + schemas = findListByCriterionWithAlias(APPLICATION_PROPERTY, APPLICATION_ALIAS, + Restrictions.eq(APPLICATION_REFERENCE, Long.valueOf(appId))); } - - @Override - public ConfigurationSchema findLatestByApplicationId(String appId) { - ConfigurationSchema latestSchema = null; - LOG.debug("Searching latest configuration schema by application id [{}] ", appId); - if (isNotBlank(appId)) { - Criteria criteria = getCriteria().createAlias(APPLICATION_PROPERTY, APPLICATION_ALIAS) - .add(Restrictions.eq(APPLICATION_REFERENCE, Long.valueOf(appId))) - .addOrder(Order.desc(VERSION_PROPERTY)) - .setMaxResults(FIRST); - latestSchema = findOneByCriteria(criteria); - } - if (LOG.isTraceEnabled()) { - LOG.trace("[{}] Search result: {}.", appId, latestSchema); - } else { - LOG.debug("[{}] Search result: {}.", appId, latestSchema != null); - } - return latestSchema; + if (LOG.isTraceEnabled()) { + LOG.trace("[{}] Search result: {}.", appId, Arrays.toString(schemas.toArray())); + } else { + LOG.debug("[{}] Search result: {}.", appId, schemas.size()); } + return schemas; + } - @Override - public ConfigurationSchema findByAppIdAndVersion(String appId, int version) { - ConfigurationSchema schema = null; - LOG.debug("Searching configuration schema by application id [{}] and version [{}]", - appId, version); - if (isNotBlank(appId)) { - schema = findOneByCriterionWithAlias(APPLICATION_PROPERTY, APPLICATION_ALIAS, - Restrictions.and( - Restrictions.eq(APPLICATION_REFERENCE, Long.valueOf(appId)), - Restrictions.eq(VERSION_PROPERTY, version))); - } + @Override + public ConfigurationSchema findLatestByApplicationId(String appId) { + ConfigurationSchema latestSchema = null; + LOG.debug("Searching latest configuration schema by application id [{}] ", appId); + if (isNotBlank(appId)) { + Criteria criteria = getCriteria().createAlias(APPLICATION_PROPERTY, APPLICATION_ALIAS) + .add(Restrictions.eq(APPLICATION_REFERENCE, Long.valueOf(appId))) + .addOrder(Order.desc(VERSION_PROPERTY)) + .setMaxResults(FIRST); + latestSchema = findOneByCriteria(criteria); + } + if (LOG.isTraceEnabled()) { + LOG.trace("[{}] Search result: {}.", appId, latestSchema); + } else { + LOG.debug("[{}] Search result: {}.", appId, latestSchema != null); + } + return latestSchema; + } - if (LOG.isTraceEnabled()) { - LOG.trace("[{},{}] Search result: {}.", appId, version, schema); - } else { - LOG.debug("[{},{}] Search result: {}.", appId, version, schema != null); - } - return schema; + @Override + public ConfigurationSchema findByAppIdAndVersion(String appId, int version) { + ConfigurationSchema schema = null; + LOG.debug("Searching configuration schema by application id [{}] and version [{}]", + appId, version); + if (isNotBlank(appId)) { + schema = findOneByCriterionWithAlias(APPLICATION_PROPERTY, APPLICATION_ALIAS, + Restrictions.and( + Restrictions.eq(APPLICATION_REFERENCE, Long.valueOf(appId)), + Restrictions.eq(VERSION_PROPERTY, version))); } - @Override - public List findVacantSchemas(String appId, List usedSchemaIds) { - LOG.debug("Searching vacant schemas by application id [{}] ", appId); - List schemas = Collections.emptyList(); - if (isNotBlank(appId)) { - List lids = toLongIds(usedSchemaIds); - if (lids.isEmpty()) { - schemas = findListByCriterionWithAlias(APPLICATION_PROPERTY, APPLICATION_ALIAS, - Restrictions.eq(APPLICATION_REFERENCE, Long.valueOf(appId))); - } else { - schemas = findListByCriterionWithAlias(APPLICATION_PROPERTY, APPLICATION_ALIAS, - Restrictions.and( - Restrictions.eq(APPLICATION_REFERENCE, Long.valueOf(appId)), - Restrictions.not(Restrictions.in(ID_PROPERTY, lids)))); - } - } - if (LOG.isTraceEnabled()) { - LOG.trace("[{}] Search result: {}.", appId, Arrays.toString(schemas.toArray())); - } else { - LOG.debug("[{}] Search result: {}.", appId, schemas.size()); - } - return schemas; + if (LOG.isTraceEnabled()) { + LOG.trace("[{},{}] Search result: {}.", appId, version, schema); + } else { + LOG.debug("[{},{}] Search result: {}.", appId, version, schema != null); } + return schema; + } - @Override - protected Class getEntityClass() { - return ConfigurationSchema.class; + @Override + public List findVacantSchemas(String appId, List usedSchemaIds) { + LOG.debug("Searching vacant schemas by application id [{}] ", appId); + List schemas = Collections.emptyList(); + if (isNotBlank(appId)) { + List lids = toLongIds(usedSchemaIds); + if (lids.isEmpty()) { + schemas = findListByCriterionWithAlias(APPLICATION_PROPERTY, APPLICATION_ALIAS, + Restrictions.eq(APPLICATION_REFERENCE, Long.valueOf(appId))); + } else { + schemas = findListByCriterionWithAlias(APPLICATION_PROPERTY, APPLICATION_ALIAS, + Restrictions.and( + Restrictions.eq(APPLICATION_REFERENCE, Long.valueOf(appId)), + Restrictions.not(Restrictions.in(ID_PROPERTY, lids)))); + } } + if (LOG.isTraceEnabled()) { + LOG.trace("[{}] Search result: {}.", appId, Arrays.toString(schemas.toArray())); + } else { + LOG.debug("[{}] Search result: {}.", appId, schemas.size()); + } + return schemas; + } + + @Override + protected Class getEntityClass() { + return ConfigurationSchema.class; + } } diff --git a/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/impl/sql/HibernateEndpointGroupDao.java b/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/impl/sql/HibernateEndpointGroupDao.java index e888083c3c..c14a8ed313 100644 --- a/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/impl/sql/HibernateEndpointGroupDao.java +++ b/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/impl/sql/HibernateEndpointGroupDao.java @@ -16,6 +16,16 @@ package org.kaaproject.kaa.server.common.dao.impl.sql; +import static org.apache.commons.lang.StringUtils.isNotBlank; +import static org.kaaproject.kaa.server.common.dao.DaoConstants.APPLICATION_ALIAS; +import static org.kaaproject.kaa.server.common.dao.DaoConstants.APPLICATION_PROPERTY; +import static org.kaaproject.kaa.server.common.dao.DaoConstants.APPLICATION_REFERENCE; +import static org.kaaproject.kaa.server.common.dao.DaoConstants.NAME_PROPERTY; +import static org.kaaproject.kaa.server.common.dao.DaoConstants.TOPICS_PROPERTY; +import static org.kaaproject.kaa.server.common.dao.DaoConstants.TOPIC_ALIAS; +import static org.kaaproject.kaa.server.common.dao.DaoConstants.TOPIC_REFERENCE; +import static org.kaaproject.kaa.server.common.dao.DaoConstants.WEIGHT_PROPERTY; + import org.hibernate.Criteria; import org.hibernate.criterion.Restrictions; import org.kaaproject.kaa.server.common.dao.impl.EndpointGroupDao; @@ -33,171 +43,164 @@ import java.util.List; import java.util.Set; -import static org.apache.commons.lang.StringUtils.isNotBlank; -import static org.kaaproject.kaa.server.common.dao.DaoConstants.APPLICATION_ALIAS; -import static org.kaaproject.kaa.server.common.dao.DaoConstants.APPLICATION_PROPERTY; -import static org.kaaproject.kaa.server.common.dao.DaoConstants.APPLICATION_REFERENCE; -import static org.kaaproject.kaa.server.common.dao.DaoConstants.TOPICS_PROPERTY; -import static org.kaaproject.kaa.server.common.dao.DaoConstants.TOPIC_ALIAS; -import static org.kaaproject.kaa.server.common.dao.DaoConstants.TOPIC_REFERENCE; -import static org.kaaproject.kaa.server.common.dao.DaoConstants.WEIGHT_PROPERTY; -import static org.kaaproject.kaa.server.common.dao.DaoConstants.NAME_PROPERTY; - @Repository -public class HibernateEndpointGroupDao extends HibernateAbstractDao implements EndpointGroupDao { +public class HibernateEndpointGroupDao extends HibernateAbstractDao + implements EndpointGroupDao { - private static final Logger LOG = LoggerFactory.getLogger(HibernateEndpointGroupDao.class); + private static final Logger LOG = LoggerFactory.getLogger(HibernateEndpointGroupDao.class); - @Autowired - private TopicDao topicDao; + @Autowired + private TopicDao topicDao; - @Override - public List findByApplicationId(String appId) { - List groups = Collections.emptyList(); - LOG.debug("Searching endpoint group by application id [{}] ", appId); - if (isNotBlank(appId)) { - groups = findListByCriterionWithAlias(APPLICATION_PROPERTY, APPLICATION_ALIAS, - Restrictions.eq(APPLICATION_REFERENCE, Long.valueOf(appId))); - } - if (LOG.isTraceEnabled()) { - LOG.trace("[{}] Search result: {}.", appId, Arrays.toString(groups.toArray())); - } else { - LOG.debug("[{}] Search result: {}.", appId, groups.size()); - } - return groups; + @Override + public List findByApplicationId(String appId) { + List groups = Collections.emptyList(); + LOG.debug("Searching endpoint group by application id [{}] ", appId); + if (isNotBlank(appId)) { + groups = findListByCriterionWithAlias(APPLICATION_PROPERTY, APPLICATION_ALIAS, + Restrictions.eq(APPLICATION_REFERENCE, Long.valueOf(appId))); } - - @Override - public EndpointGroup findByAppIdAndWeight(String appId, int weight) { - EndpointGroup group = null; - LOG.debug("Searching endpoint group by application id [{}] and weight [{}]", appId, weight); - if (isNotBlank(appId)) { - group = findOneByCriterionWithAlias(APPLICATION_PROPERTY, APPLICATION_ALIAS, - Restrictions.and( - Restrictions.eq(APPLICATION_REFERENCE, Long.valueOf(appId)), - Restrictions.eq(WEIGHT_PROPERTY, weight))); - } - if (LOG.isTraceEnabled()) { - LOG.trace("[{},{}] Search result: {}.", appId, weight, group); - } else { - LOG.debug("[{},{}] Search result: {}.", appId, weight, group != null); - } - return group; + if (LOG.isTraceEnabled()) { + LOG.trace("[{}] Search result: {}.", appId, Arrays.toString(groups.toArray())); + } else { + LOG.debug("[{}] Search result: {}.", appId, groups.size()); } - - @Override - public EndpointGroup findByAppIdAndName(String applicationId, String name) { - EndpointGroup group = null; - LOG.debug("Searching endpoint group by application id [{}] and name [{}]", applicationId, name); - if (isNotBlank(applicationId)) { - group = findOneByCriterionWithAlias(APPLICATION_PROPERTY, APPLICATION_ALIAS, - Restrictions.and( - Restrictions.eq(APPLICATION_REFERENCE, Long.valueOf(applicationId)), - Restrictions.eq(NAME_PROPERTY, name))); - } - if (LOG.isTraceEnabled()) { - LOG.trace("[{},{}] Search result: {}.", applicationId, name, group); - } else { - LOG.debug("[{},{}] Search result: {}.", applicationId, name, group != null); - } - return group; + return groups; + } + + @Override + public EndpointGroup findByAppIdAndWeight(String appId, int weight) { + EndpointGroup group = null; + LOG.debug("Searching endpoint group by application id [{}] and weight [{}]", appId, weight); + if (isNotBlank(appId)) { + group = findOneByCriterionWithAlias(APPLICATION_PROPERTY, APPLICATION_ALIAS, + Restrictions.and( + Restrictions.eq(APPLICATION_REFERENCE, Long.valueOf(appId)), + Restrictions.eq(WEIGHT_PROPERTY, weight))); } - - @Override - public EndpointGroup removeTopicFromEndpointGroup(String id, String topicId) { - LOG.debug("Removing topic [{}] from endpoint group [{}]", topicId, id); - EndpointGroup endpointGroup = findById(id); - Set topics = endpointGroup.getTopics(); - Iterator it = topics.iterator(); - while (it.hasNext()) { - Topic topic = it.next(); - if (topic.getId() == Long.parseLong(topicId)) { - it.remove(); - topic.getEndpointGroups().remove(endpointGroup); - topicDao.save(topic); - break; - } - } - return save(endpointGroup); + if (LOG.isTraceEnabled()) { + LOG.trace("[{},{}] Search result: {}.", appId, weight, group); + } else { + LOG.debug("[{},{}] Search result: {}.", appId, weight, group != null); } - - @Override - public List findEndpointGroupsByTopicIdAndAppId(String appId, String topicId) { - List groups = Collections.emptyList(); - LOG.debug("Searching endpoint group by application id [{}] and topic id [{}]", appId, topicId); - if (isNotBlank(appId)) { - Criteria criteria = getCriteria(); - criteria.createAlias(APPLICATION_PROPERTY, APPLICATION_ALIAS); - criteria.createAlias(TOPICS_PROPERTY, TOPIC_ALIAS); - criteria.add(Restrictions.and( - Restrictions.eq(APPLICATION_REFERENCE, Long.valueOf(appId)), - Restrictions.eq(TOPIC_REFERENCE, Long.valueOf(topicId)))); - groups = findListByCriteria(criteria); - } - if (LOG.isTraceEnabled()) { - LOG.trace("[{}] Search result: {}.", appId, Arrays.toString(groups.toArray())); - } else { - LOG.debug("[{}] Search result: {}.", appId, groups.size()); - } - return groups; + return group; + } + + @Override + public EndpointGroup findByAppIdAndName(String applicationId, String name) { + EndpointGroup group = null; + LOG.debug("Searching endpoint group by application id [{}] and name [{}]", applicationId, name); + if (isNotBlank(applicationId)) { + group = findOneByCriterionWithAlias(APPLICATION_PROPERTY, APPLICATION_ALIAS, + Restrictions.and( + Restrictions.eq(APPLICATION_REFERENCE, Long.valueOf(applicationId)), + Restrictions.eq(NAME_PROPERTY, name))); } - - //TODO: Check if it thread safe. - @Override - public EndpointGroup addTopicToEndpointGroup(String id, String topicId) { - EndpointGroup endpointGroup = findById(id); - if (endpointGroup != null) { - addTopicToEndpointGroup(endpointGroup, topicId); - } - return endpointGroup; + if (LOG.isTraceEnabled()) { + LOG.trace("[{},{}] Search result: {}.", applicationId, name, group); + } else { + LOG.debug("[{},{}] Search result: {}.", applicationId, name, group != null); } - - @Override - public EndpointGroup save(EndpointGroup object) { - LOG.debug("Saving endpoint group {}", object); - Set topics = object.getTopics(); - object = super.save(object); - if (topics != null && !topics.isEmpty()) { - for (Topic topic : topics) { - addTopicToEndpointGroup(object, topic.getStringId()); - } - } - if (LOG.isTraceEnabled()) { - LOG.trace("Saving result: {}.", object); - } else { - LOG.debug("Saving result: {}.", object != null); - } - return object; + return group; + } + + @Override + public EndpointGroup removeTopicFromEndpointGroup(String id, String topicId) { + LOG.debug("Removing topic [{}] from endpoint group [{}]", topicId, id); + EndpointGroup endpointGroup = findById(id); + Set topics = endpointGroup.getTopics(); + Iterator it = topics.iterator(); + while (it.hasNext()) { + Topic topic = it.next(); + if (topic.getId() == Long.parseLong(topicId)) { + it.remove(); + topic.getEndpointGroups().remove(endpointGroup); + topicDao.save(topic); + break; + } } - - private EndpointGroup addTopicToEndpointGroup(EndpointGroup endpointGroup, String topicId) { - Topic topic = topicDao.findById(topicId); - if (topic != null) { - topic.getEndpointGroups().add(endpointGroup); - } - endpointGroup.getTopics().add(save(topic, Topic.class)); - return endpointGroup; + return save(endpointGroup); + } + + @Override + public List findEndpointGroupsByTopicIdAndAppId(String appId, String topicId) { + List groups = Collections.emptyList(); + LOG.debug("Searching endpoint group by application id [{}] and topic id [{}]", appId, topicId); + if (isNotBlank(appId)) { + Criteria criteria = getCriteria(); + criteria.createAlias(APPLICATION_PROPERTY, APPLICATION_ALIAS); + criteria.createAlias(TOPICS_PROPERTY, TOPIC_ALIAS); + criteria.add(Restrictions.and( + Restrictions.eq(APPLICATION_REFERENCE, Long.valueOf(appId)), + Restrictions.eq(TOPIC_REFERENCE, Long.valueOf(topicId)))); + groups = findListByCriteria(criteria); + } + if (LOG.isTraceEnabled()) { + LOG.trace("[{}] Search result: {}.", appId, Arrays.toString(groups.toArray())); + } else { + LOG.debug("[{}] Search result: {}.", appId, groups.size()); + } + return groups; + } + + //TODO: Check if it thread safe. + @Override + public EndpointGroup addTopicToEndpointGroup(String id, String topicId) { + EndpointGroup endpointGroup = findById(id); + if (endpointGroup != null) { + addTopicToEndpointGroup(endpointGroup, topicId); } + return endpointGroup; + } - @Override - protected Class getEntityClass() { - return EndpointGroup.class; + private EndpointGroup addTopicToEndpointGroup(EndpointGroup endpointGroup, String topicId) { + Topic topic = topicDao.findById(topicId); + if (topic != null) { + topic.getEndpointGroups().add(endpointGroup); } + endpointGroup.getTopics().add(save(topic, Topic.class)); + return endpointGroup; + } + + @Override + public EndpointGroup save(EndpointGroup object) { + LOG.debug("Saving endpoint group {}", object); + Set topics = object.getTopics(); + object = super.save(object); + if (topics != null && !topics.isEmpty()) { + for (Topic topic : topics) { + addTopicToEndpointGroup(object, topic.getStringId()); + } + } + if (LOG.isTraceEnabled()) { + LOG.trace("Saving result: {}.", object); + } else { + LOG.debug("Saving result: {}.", object != null); + } + return object; + } + + + + @Override + protected Class getEntityClass() { + return EndpointGroup.class; + } - @Override - public void removeById(String id) { - EndpointGroup endpointGroup = findById(id); - if (endpointGroup != null) { - Set topics = endpointGroup.getTopics(); - if (topics != null && !topics.isEmpty()) { - for (Topic topic : topics) { - topic.getEndpointGroups().remove(endpointGroup); - topicDao.save(topic); - } - } + @Override + public void removeById(String id) { + EndpointGroup endpointGroup = findById(id); + if (endpointGroup != null) { + Set topics = endpointGroup.getTopics(); + if (topics != null && !topics.isEmpty()) { + for (Topic topic : topics) { + topic.getEndpointGroups().remove(endpointGroup); + topicDao.save(topic); } - remove(endpointGroup); - LOG.debug("Removed endpoint group by id [{}] ", id); + } } + remove(endpointGroup); + LOG.debug("Removed endpoint group by id [{}] ", id); + } } diff --git a/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/impl/sql/HibernateHistoryDao.java b/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/impl/sql/HibernateHistoryDao.java index ed6ff97987..6517031d6d 100644 --- a/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/impl/sql/HibernateHistoryDao.java +++ b/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/impl/sql/HibernateHistoryDao.java @@ -16,6 +16,12 @@ package org.kaaproject.kaa.server.common.dao.impl.sql; +import static org.apache.commons.lang.StringUtils.isNotBlank; +import static org.kaaproject.kaa.server.common.dao.DaoConstants.APPLICATION_ALIAS; +import static org.kaaproject.kaa.server.common.dao.DaoConstants.APPLICATION_PROPERTY; +import static org.kaaproject.kaa.server.common.dao.DaoConstants.APPLICATION_REFERENCE; +import static org.kaaproject.kaa.server.common.dao.DaoConstants.SEQUENCE_NUMBER_PROPERTY; + import org.hibernate.criterion.Restrictions; import org.kaaproject.kaa.server.common.dao.impl.HistoryDao; import org.kaaproject.kaa.server.common.dao.model.sql.History; @@ -27,99 +33,93 @@ import java.util.Collections; import java.util.List; -import static org.apache.commons.lang.StringUtils.isNotBlank; -import static org.kaaproject.kaa.server.common.dao.DaoConstants.APPLICATION_ALIAS; -import static org.kaaproject.kaa.server.common.dao.DaoConstants.APPLICATION_PROPERTY; -import static org.kaaproject.kaa.server.common.dao.DaoConstants.APPLICATION_REFERENCE; -import static org.kaaproject.kaa.server.common.dao.DaoConstants.SEQUENCE_NUMBER_PROPERTY; - @Repository public class HibernateHistoryDao extends HibernateAbstractDao implements HistoryDao { - private static final Logger LOG = LoggerFactory.getLogger(HibernateHistoryDao.class); + private static final Logger LOG = LoggerFactory.getLogger(HibernateHistoryDao.class); - @Override - public List findByAppId(String appId) { - List histories = Collections.emptyList(); - LOG.debug("Searching history by application id [{}]", appId); - if (isNotBlank(appId)) { - histories = findListByCriterionWithAlias(APPLICATION_PROPERTY, APPLICATION_ALIAS, - Restrictions.eq(APPLICATION_REFERENCE, Long.valueOf(appId))); - } - if (LOG.isTraceEnabled()) { - LOG.trace("[{}] Search result: {}.", appId, Arrays.toString(histories.toArray())); - } else { - LOG.debug("[{}] Search result: {}.", appId, histories.size()); - } - return histories; + @Override + public List findByAppId(String appId) { + List histories = Collections.emptyList(); + LOG.debug("Searching history by application id [{}]", appId); + if (isNotBlank(appId)) { + histories = findListByCriterionWithAlias(APPLICATION_PROPERTY, APPLICATION_ALIAS, + Restrictions.eq(APPLICATION_REFERENCE, Long.valueOf(appId))); } - - @Override - public History findBySeqNumber(String appId, int seqNum) { - History history = null; - LOG.debug("Searching history by application id [{}] and sequence number [{}]", appId, seqNum); - if (isNotBlank(appId)) { - history = findOneByCriterionWithAlias(APPLICATION_PROPERTY, APPLICATION_ALIAS, - Restrictions.and( - Restrictions.eq(APPLICATION_REFERENCE, Long.valueOf(appId)), - Restrictions.eq(SEQUENCE_NUMBER_PROPERTY, seqNum))); - } - if (LOG.isTraceEnabled()) { - LOG.trace("[{},{}] Search result: {}.", appId, seqNum, history); - } else { - LOG.debug("[{},{}] Search result: {}.", appId, seqNum, history != null); - } - return history; + if (LOG.isTraceEnabled()) { + LOG.trace("[{}] Search result: {}.", appId, Arrays.toString(histories.toArray())); + } else { + LOG.debug("[{}] Search result: {}.", appId, histories.size()); } + return histories; + } - @Override - public List findBySeqNumberStart(String appId, int startSeqNum) { - List histories = Collections.emptyList(); - LOG.debug("Searching history by application id [{}] start sequence number [{}]", - appId, startSeqNum); - if (isNotBlank(appId)) { - histories = findListByCriterionWithAlias(APPLICATION_PROPERTY, APPLICATION_ALIAS, - Restrictions.and( - Restrictions.eq(APPLICATION_REFERENCE, Long.valueOf(appId)), - Restrictions.gt(SEQUENCE_NUMBER_PROPERTY, startSeqNum))); - } + @Override + public History findBySeqNumber(String appId, int seqNum) { + History history = null; + LOG.debug("Searching history by application id [{}] and sequence number [{}]", appId, seqNum); + if (isNotBlank(appId)) { + history = findOneByCriterionWithAlias(APPLICATION_PROPERTY, APPLICATION_ALIAS, + Restrictions.and( + Restrictions.eq(APPLICATION_REFERENCE, Long.valueOf(appId)), + Restrictions.eq(SEQUENCE_NUMBER_PROPERTY, seqNum))); + } + if (LOG.isTraceEnabled()) { + LOG.trace("[{},{}] Search result: {}.", appId, seqNum, history); + } else { + LOG.debug("[{},{}] Search result: {}.", appId, seqNum, history != null); + } + return history; + } - if (LOG.isTraceEnabled()) { - LOG.trace("[{},{}] Search result: {}.", - appId, startSeqNum, Arrays.toString(histories.toArray())); - } else { - LOG.debug("[{},{}] Search result: {}.", - appId, startSeqNum, histories.size()); - } - return histories; + @Override + public List findBySeqNumberStart(String appId, int startSeqNum) { + List histories = Collections.emptyList(); + LOG.debug("Searching history by application id [{}] start sequence number [{}]", + appId, startSeqNum); + if (isNotBlank(appId)) { + histories = findListByCriterionWithAlias(APPLICATION_PROPERTY, APPLICATION_ALIAS, + Restrictions.and( + Restrictions.eq(APPLICATION_REFERENCE, Long.valueOf(appId)), + Restrictions.gt(SEQUENCE_NUMBER_PROPERTY, startSeqNum))); } - @Override - public List findBySeqNumberRange(String appId, int startSeqNum, int endSeqNum) { - List histories = Collections.emptyList(); - LOG.debug("Searching history by application id {} start sequence number {} and end {}", - appId, startSeqNum, endSeqNum); - if (isNotBlank(appId)) { - histories = findListByCriterionWithAlias(APPLICATION_PROPERTY, APPLICATION_ALIAS, - Restrictions.and( - Restrictions.eq(APPLICATION_REFERENCE, Long.valueOf(appId)), - Restrictions.gt(SEQUENCE_NUMBER_PROPERTY, startSeqNum), - Restrictions.le(SEQUENCE_NUMBER_PROPERTY, endSeqNum))); - } + if (LOG.isTraceEnabled()) { + LOG.trace("[{},{}] Search result: {}.", + appId, startSeqNum, Arrays.toString(histories.toArray())); + } else { + LOG.debug("[{},{}] Search result: {}.", + appId, startSeqNum, histories.size()); + } + return histories; + } - if (LOG.isTraceEnabled()) { - LOG.trace("[{},{},{}] Search result: {}.", - appId, startSeqNum, endSeqNum, Arrays.toString(histories.toArray())); - } else { - LOG.debug("[{},{},{}] Search result: {}.", - appId, startSeqNum, endSeqNum, histories.size()); - } - return histories; + @Override + public List findBySeqNumberRange(String appId, int startSeqNum, int endSeqNum) { + List histories = Collections.emptyList(); + LOG.debug("Searching history by application id {} start sequence number {} and end {}", + appId, startSeqNum, endSeqNum); + if (isNotBlank(appId)) { + histories = findListByCriterionWithAlias(APPLICATION_PROPERTY, APPLICATION_ALIAS, + Restrictions.and( + Restrictions.eq(APPLICATION_REFERENCE, Long.valueOf(appId)), + Restrictions.gt(SEQUENCE_NUMBER_PROPERTY, startSeqNum), + Restrictions.le(SEQUENCE_NUMBER_PROPERTY, endSeqNum))); } - @Override - protected Class getEntityClass() { - return History.class; + if (LOG.isTraceEnabled()) { + LOG.trace("[{},{},{}] Search result: {}.", + appId, startSeqNum, endSeqNum, Arrays.toString(histories.toArray())); + } else { + LOG.debug("[{},{},{}] Search result: {}.", + appId, startSeqNum, endSeqNum, histories.size()); } + return histories; + } + + @Override + protected Class getEntityClass() { + return History.class; + } } diff --git a/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/impl/sql/HibernateProfileFilterDao.java b/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/impl/sql/HibernateProfileFilterDao.java index f001dca849..4df96060f6 100644 --- a/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/impl/sql/HibernateProfileFilterDao.java +++ b/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/impl/sql/HibernateProfileFilterDao.java @@ -16,24 +16,6 @@ package org.kaaproject.kaa.server.common.dao.impl.sql; -import org.hibernate.Criteria; -import org.hibernate.criterion.Criterion; -import org.hibernate.criterion.Order; -import org.hibernate.criterion.Projections; -import org.hibernate.criterion.Restrictions; -import org.hibernate.sql.JoinType; -import org.kaaproject.kaa.common.dto.UpdateStatus; -import org.kaaproject.kaa.server.common.dao.impl.ProfileFilterDao; -import org.kaaproject.kaa.server.common.dao.model.sql.ModelUtils; -import org.kaaproject.kaa.server.common.dao.model.sql.ProfileFilter; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Repository; - -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - import static org.apache.commons.lang.StringUtils.isBlank; import static org.apache.commons.lang.StringUtils.isNotBlank; import static org.kaaproject.kaa.server.common.dao.DaoConstants.APPLICATION_ALIAS; @@ -53,271 +35,289 @@ import static org.kaaproject.kaa.server.common.dao.DaoConstants.SERVER_PROFILE_SCHEMA_VERSION_REFERENCE; import static org.kaaproject.kaa.server.common.dao.DaoConstants.STATUS_PROPERTY; +import org.hibernate.Criteria; +import org.hibernate.criterion.Criterion; +import org.hibernate.criterion.Order; +import org.hibernate.criterion.Projections; +import org.hibernate.criterion.Restrictions; +import org.hibernate.sql.JoinType; +import org.kaaproject.kaa.common.dto.UpdateStatus; +import org.kaaproject.kaa.server.common.dao.impl.ProfileFilterDao; +import org.kaaproject.kaa.server.common.dao.model.sql.ModelUtils; +import org.kaaproject.kaa.server.common.dao.model.sql.ProfileFilter; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Repository; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + @Repository public class HibernateProfileFilterDao extends HibernateAbstractDao implements ProfileFilterDao { - private static final Logger LOG = LoggerFactory.getLogger(HibernateProfileFilterDao.class); + private static final Logger LOG = LoggerFactory.getLogger(HibernateProfileFilterDao.class); - @Override - public List findActualByEndpointGroupId(String groupId) { - LOG.debug("Searching actual profile filters by endpoint group id [{}] ", groupId); - List filters = Collections.emptyList(); - if (isNotBlank(groupId)) { - filters = findListByCriterionWithAlias(ENDPOINT_GROUP_PROPERTY, ENDPOINT_GROUP_ALIAS, - Restrictions.and( - Restrictions.eq(ENDPOINT_GROUP_REFERENCE, Long.valueOf(groupId)), - Restrictions.ne(STATUS_PROPERTY, UpdateStatus.DEPRECATED))); - } - if (LOG.isTraceEnabled()) { - LOG.trace("[{}] Search result: {}.", groupId, Arrays.toString(filters.toArray())); - } else { - LOG.debug("[{}] Search result: {}.", groupId, filters.size()); - } - return filters; + @Override + public List findActualByEndpointGroupId(String groupId) { + LOG.debug("Searching actual profile filters by endpoint group id [{}] ", groupId); + List filters = Collections.emptyList(); + if (isNotBlank(groupId)) { + filters = findListByCriterionWithAlias(ENDPOINT_GROUP_PROPERTY, ENDPOINT_GROUP_ALIAS, + Restrictions.and( + Restrictions.eq(ENDPOINT_GROUP_REFERENCE, Long.valueOf(groupId)), + Restrictions.ne(STATUS_PROPERTY, UpdateStatus.DEPRECATED))); } - - @Override - public List findActualBySchemaIdAndGroupId(String endpointProfileSchemaId, String serverProfileSchemaId, String groupId) { - LOG.debug("Searching actual profile filters by endpoint schema id [{}], server schema id [{}] and group id [{}] ", - endpointProfileSchemaId, serverProfileSchemaId, groupId); - List filters = Collections.emptyList(); - if (isNotBlank(groupId)) { - Criteria criteria = getCriteria(); - criteria.createAlias(ENDPOINT_GROUP_PROPERTY, ENDPOINT_GROUP_ALIAS); - criteria.createAlias(ENDPOINT_PROFILE_SCHEMA_PROPERTY, ENDPOINT_PROFILE_SCHEMA_ALIAS, JoinType.LEFT_OUTER_JOIN); - criteria.createAlias(SERVER_PROFILE_SCHEMA_PROPERTY, SERVER_PROFILE_SCHEMA_ALIAS, JoinType.LEFT_OUTER_JOIN); - criteria.add(Restrictions.and( - Restrictions.eq(ENDPOINT_GROUP_REFERENCE, Long.valueOf(groupId)), - buildEqIdCriterion(ENDPOINT_PROFILE_SCHEMA_REFERENCE, endpointProfileSchemaId), - buildEqIdCriterion(SERVER_PROFILE_SCHEMA_REFERENCE, serverProfileSchemaId), - Restrictions.ne(STATUS_PROPERTY, UpdateStatus.DEPRECATED))); - filters = findListByCriteria(criteria); - } - if (LOG.isTraceEnabled()) { - LOG.trace("[{},{},{}] Search result: {}.", endpointProfileSchemaId, serverProfileSchemaId, groupId, Arrays.toString(filters.toArray())); - } else { - LOG.debug("[{},{},{}] Search result: {}.", endpointProfileSchemaId, serverProfileSchemaId, groupId, filters.size()); - } - return filters; + if (LOG.isTraceEnabled()) { + LOG.trace("[{}] Search result: {}.", groupId, Arrays.toString(filters.toArray())); + } else { + LOG.debug("[{}] Search result: {}.", groupId, filters.size()); } + return filters; + } - @Override - public ProfileFilter findLatestDeprecated(String endpointProfileSchemaId, String serverProfileSchemaId, String groupId) { - LOG.debug("Searching latest deprecated profile filter by endpoint profile schema id [{}], server profile schema id [{}] and group id [{}] ", - endpointProfileSchemaId, serverProfileSchemaId, groupId); - ProfileFilter filter = null; - if (isNotBlank(groupId)) { - Criteria criteria = getCriteria(); - criteria.createAlias(ENDPOINT_PROFILE_SCHEMA_PROPERTY, ENDPOINT_PROFILE_SCHEMA_ALIAS, JoinType.LEFT_OUTER_JOIN); - criteria.createAlias(SERVER_PROFILE_SCHEMA_PROPERTY, SERVER_PROFILE_SCHEMA_ALIAS, JoinType.LEFT_OUTER_JOIN); - criteria.createAlias(ENDPOINT_GROUP_PROPERTY, ENDPOINT_GROUP_ALIAS); - Criterion crit = Restrictions.and( - Restrictions.eq(ENDPOINT_GROUP_REFERENCE, Long.valueOf(groupId)), - buildEqIdCriterion(ENDPOINT_PROFILE_SCHEMA_REFERENCE, endpointProfileSchemaId), - buildEqIdCriterion(SERVER_PROFILE_SCHEMA_REFERENCE, serverProfileSchemaId), - Restrictions.eq(STATUS_PROPERTY, UpdateStatus.DEPRECATED)); - filter = (ProfileFilter) criteria.add(crit).addOrder(Order.desc(SEQUENCE_NUMBER_PROPERTY)).setMaxResults(FIRST).uniqueResult(); - } - if (LOG.isTraceEnabled()) { - LOG.trace("[{},{},{}] Search result: {}.", endpointProfileSchemaId, serverProfileSchemaId, groupId, filter); - } else { - LOG.debug("[{},{},{}] Search result: {}.", endpointProfileSchemaId, serverProfileSchemaId, groupId, filter != null); - } - return filter; + @Override + public List findActualBySchemaIdAndGroupId(String endpointProfileSchemaId, String serverProfileSchemaId, String groupId) { + LOG.debug("Searching actual profile filters by endpoint schema id [{}], server schema id [{}] and group id [{}] ", + endpointProfileSchemaId, serverProfileSchemaId, groupId); + List filters = Collections.emptyList(); + if (isNotBlank(groupId)) { + Criteria criteria = getCriteria(); + criteria.createAlias(ENDPOINT_GROUP_PROPERTY, ENDPOINT_GROUP_ALIAS); + criteria.createAlias(ENDPOINT_PROFILE_SCHEMA_PROPERTY, ENDPOINT_PROFILE_SCHEMA_ALIAS, JoinType.LEFT_OUTER_JOIN); + criteria.createAlias(SERVER_PROFILE_SCHEMA_PROPERTY, SERVER_PROFILE_SCHEMA_ALIAS, JoinType.LEFT_OUTER_JOIN); + criteria.add(Restrictions.and( + Restrictions.eq(ENDPOINT_GROUP_REFERENCE, Long.valueOf(groupId)), + buildEqIdCriterion(ENDPOINT_PROFILE_SCHEMA_REFERENCE, endpointProfileSchemaId), + buildEqIdCriterion(SERVER_PROFILE_SCHEMA_REFERENCE, serverProfileSchemaId), + Restrictions.ne(STATUS_PROPERTY, UpdateStatus.DEPRECATED))); + filters = findListByCriteria(criteria); + } + if (LOG.isTraceEnabled()) { + LOG.trace("[{},{},{}] Search result: {}.", endpointProfileSchemaId, serverProfileSchemaId, groupId, Arrays.toString(filters.toArray())); + } else { + LOG.debug("[{},{},{}] Search result: {}.", endpointProfileSchemaId, serverProfileSchemaId, groupId, filters.size()); } + return filters; + } - @Override - public List findByAppIdAndSchemaVersionsCombination(String appId, int endpointSchemaVersion, int serverSchemaVersion) { - List filters = null; - LOG.debug("Searching configuration by application id [{}] and schema version [{}]", appId, serverSchemaVersion); - if (isNotBlank(appId)) { - Criteria criteria = getCriteria(); - criteria.createAlias(APPLICATION_PROPERTY, APPLICATION_ALIAS); - criteria.createAlias(ENDPOINT_PROFILE_SCHEMA_PROPERTY, ENDPOINT_PROFILE_SCHEMA_ALIAS, JoinType.LEFT_OUTER_JOIN); - criteria.createAlias(SERVER_PROFILE_SCHEMA_PROPERTY, SERVER_PROFILE_SCHEMA_ALIAS, JoinType.LEFT_OUTER_JOIN); - Criterion criterion = Restrictions.and( - Restrictions.eq(APPLICATION_REFERENCE, Long.valueOf(appId)), - Restrictions.eq(STATUS_PROPERTY, UpdateStatus.ACTIVE), - Restrictions.or(Restrictions.and( - Restrictions.eq(ENDPOINT_PROFILE_SCHEMA_VERSION_REFERENCE, endpointSchemaVersion), - Restrictions.eq(SERVER_PROFILE_SCHEMA_VERSION_REFERENCE, serverSchemaVersion) - ), Restrictions.and( - Restrictions.eq(ENDPOINT_PROFILE_SCHEMA_VERSION_REFERENCE, endpointSchemaVersion), - Restrictions.isNull(SERVER_PROFILE_SCHEMA_VERSION_REFERENCE) - ), Restrictions.and( - Restrictions.eq(SERVER_PROFILE_SCHEMA_VERSION_REFERENCE, serverSchemaVersion), - Restrictions.isNull(ENDPOINT_PROFILE_SCHEMA_VERSION_REFERENCE) - ))); - criteria.add(criterion); - filters = findListByCriteria(criteria); - } - if (LOG.isTraceEnabled()) { - LOG.trace("[{},{}] Search result: {}.", appId, serverSchemaVersion, Arrays.toString(filters.toArray())); - } else { - LOG.debug("[{},{}] Search result: {}.", appId, serverSchemaVersion, filters.size()); - } - return filters; + @Override + public ProfileFilter findLatestDeprecated(String endpointProfileSchemaId, String serverProfileSchemaId, String groupId) { + LOG.debug("Searching latest deprecated profile filter by endpoint profile schema id [{}], server profile schema id [{}] and group id [{}] ", + endpointProfileSchemaId, serverProfileSchemaId, groupId); + ProfileFilter filter = null; + if (isNotBlank(groupId)) { + Criteria criteria = getCriteria(); + criteria.createAlias(ENDPOINT_PROFILE_SCHEMA_PROPERTY, ENDPOINT_PROFILE_SCHEMA_ALIAS, JoinType.LEFT_OUTER_JOIN); + criteria.createAlias(SERVER_PROFILE_SCHEMA_PROPERTY, SERVER_PROFILE_SCHEMA_ALIAS, JoinType.LEFT_OUTER_JOIN); + criteria.createAlias(ENDPOINT_GROUP_PROPERTY, ENDPOINT_GROUP_ALIAS); + Criterion crit = Restrictions.and( + Restrictions.eq(ENDPOINT_GROUP_REFERENCE, Long.valueOf(groupId)), + buildEqIdCriterion(ENDPOINT_PROFILE_SCHEMA_REFERENCE, endpointProfileSchemaId), + buildEqIdCriterion(SERVER_PROFILE_SCHEMA_REFERENCE, serverProfileSchemaId), + Restrictions.eq(STATUS_PROPERTY, UpdateStatus.DEPRECATED)); + filter = (ProfileFilter) criteria.add(crit).addOrder(Order.desc(SEQUENCE_NUMBER_PROPERTY)).setMaxResults(FIRST).uniqueResult(); + } + if (LOG.isTraceEnabled()) { + LOG.trace("[{},{},{}] Search result: {}.", endpointProfileSchemaId, serverProfileSchemaId, groupId, filter); + } else { + LOG.debug("[{},{},{}] Search result: {}.", endpointProfileSchemaId, serverProfileSchemaId, groupId, filter != null); } + return filter; + } - @Override - public ProfileFilter findInactiveFilter(String endpointProfileSchemaId, String serverProfileSchemaId, String groupId) { - ProfileFilter filter = null; - LOG.debug("Searching inactive profile filter by endpoint profile schema id [{}], server profile schema id [{}] and group id [{}] ", - endpointProfileSchemaId, serverProfileSchemaId, groupId); - if (isNotBlank(groupId)) { - Criteria criteria = getCriteria(); - criteria.createAlias(ENDPOINT_PROFILE_SCHEMA_PROPERTY, ENDPOINT_PROFILE_SCHEMA_ALIAS, JoinType.LEFT_OUTER_JOIN); - criteria.createAlias(SERVER_PROFILE_SCHEMA_PROPERTY, SERVER_PROFILE_SCHEMA_ALIAS, JoinType.LEFT_OUTER_JOIN); - criteria.createAlias(ENDPOINT_GROUP_PROPERTY, ENDPOINT_GROUP_ALIAS); - criteria.add(Restrictions.and( - Restrictions.eq(ENDPOINT_GROUP_REFERENCE, Long.valueOf(groupId)), - buildEqIdCriterion(ENDPOINT_PROFILE_SCHEMA_REFERENCE, endpointProfileSchemaId), - buildEqIdCriterion(SERVER_PROFILE_SCHEMA_REFERENCE, serverProfileSchemaId), - Restrictions.eq(STATUS_PROPERTY, UpdateStatus.INACTIVE))); - filter = findOneByCriteria(criteria); - } - if (LOG.isTraceEnabled()) { - LOG.trace("[{},{},{}] Search result: {}.", endpointProfileSchemaId, serverProfileSchemaId, groupId, filter); - } else { - LOG.debug("[{},{},{}] Search result: {}.", endpointProfileSchemaId, groupId, serverProfileSchemaId, filter != null); - } - return filter; + @Override + public List findByAppIdAndSchemaVersionsCombination(String appId, int endpointSchemaVersion, int serverSchemaVersion) { + List filters = null; + LOG.debug("Searching configuration by application id [{}] and schema version [{}]", appId, serverSchemaVersion); + if (isNotBlank(appId)) { + Criteria criteria = getCriteria(); + criteria.createAlias(APPLICATION_PROPERTY, APPLICATION_ALIAS); + criteria.createAlias(ENDPOINT_PROFILE_SCHEMA_PROPERTY, ENDPOINT_PROFILE_SCHEMA_ALIAS, JoinType.LEFT_OUTER_JOIN); + criteria.createAlias(SERVER_PROFILE_SCHEMA_PROPERTY, SERVER_PROFILE_SCHEMA_ALIAS, JoinType.LEFT_OUTER_JOIN); + Criterion criterion = Restrictions.and( + Restrictions.eq(APPLICATION_REFERENCE, Long.valueOf(appId)), + Restrictions.eq(STATUS_PROPERTY, UpdateStatus.ACTIVE), + Restrictions.or(Restrictions.and( + Restrictions.eq(ENDPOINT_PROFILE_SCHEMA_VERSION_REFERENCE, endpointSchemaVersion), + Restrictions.eq(SERVER_PROFILE_SCHEMA_VERSION_REFERENCE, serverSchemaVersion) + ), Restrictions.and( + Restrictions.eq(ENDPOINT_PROFILE_SCHEMA_VERSION_REFERENCE, endpointSchemaVersion), + Restrictions.isNull(SERVER_PROFILE_SCHEMA_VERSION_REFERENCE) + ), Restrictions.and( + Restrictions.eq(SERVER_PROFILE_SCHEMA_VERSION_REFERENCE, serverSchemaVersion), + Restrictions.isNull(ENDPOINT_PROFILE_SCHEMA_VERSION_REFERENCE) + ))); + criteria.add(criterion); + filters = findListByCriteria(criteria); } + if (LOG.isTraceEnabled()) { + LOG.trace("[{},{}] Search result: {}.", appId, serverSchemaVersion, Arrays.toString(filters.toArray())); + } else { + LOG.debug("[{},{}] Search result: {}.", appId, serverSchemaVersion, filters.size()); + } + return filters; + } - @Override - public ProfileFilter findLatestFilter(String endpointProfileSchemaId, String serverProfileSchemaId, String groupId) { - LOG.debug("Searching latest active profile filter by profile schema id [{}] and group id [{}]", - endpointProfileSchemaId, serverProfileSchemaId, groupId); - ProfileFilter filter = null; - if (isNotBlank(groupId)) { - Criteria criteria = getCriteria(); - criteria.createAlias(ENDPOINT_PROFILE_SCHEMA_PROPERTY, ENDPOINT_PROFILE_SCHEMA_ALIAS, JoinType.LEFT_OUTER_JOIN); - criteria.createAlias(SERVER_PROFILE_SCHEMA_PROPERTY, SERVER_PROFILE_SCHEMA_ALIAS, JoinType.LEFT_OUTER_JOIN); - criteria.createAlias(ENDPOINT_GROUP_PROPERTY, ENDPOINT_GROUP_ALIAS); - criteria.add(Restrictions.and( - Restrictions.eq(ENDPOINT_GROUP_REFERENCE, Long.valueOf(groupId)), - buildEqIdCriterion(ENDPOINT_PROFILE_SCHEMA_REFERENCE, endpointProfileSchemaId), - buildEqIdCriterion(SERVER_PROFILE_SCHEMA_REFERENCE, serverProfileSchemaId), - Restrictions.eq(STATUS_PROPERTY, UpdateStatus.ACTIVE))); - filter = findOneByCriteria(criteria); - } - if (LOG.isTraceEnabled()) { - LOG.trace("[{},{},{}] Search result: {}.", endpointProfileSchemaId, serverProfileSchemaId, groupId, filter); - } else { - LOG.debug("[{},{},{}] Search result: {}.", endpointProfileSchemaId, serverProfileSchemaId, groupId, filter != null); - } - return filter; + @Override + public ProfileFilter findInactiveFilter(String endpointProfileSchemaId, String serverProfileSchemaId, String groupId) { + ProfileFilter filter = null; + LOG.debug("Searching inactive profile filter by endpoint profile schema id [{}], server profile schema id [{}] and group id [{}] ", + endpointProfileSchemaId, serverProfileSchemaId, groupId); + if (isNotBlank(groupId)) { + Criteria criteria = getCriteria(); + criteria.createAlias(ENDPOINT_PROFILE_SCHEMA_PROPERTY, ENDPOINT_PROFILE_SCHEMA_ALIAS, JoinType.LEFT_OUTER_JOIN); + criteria.createAlias(SERVER_PROFILE_SCHEMA_PROPERTY, SERVER_PROFILE_SCHEMA_ALIAS, JoinType.LEFT_OUTER_JOIN); + criteria.createAlias(ENDPOINT_GROUP_PROPERTY, ENDPOINT_GROUP_ALIAS); + criteria.add(Restrictions.and( + Restrictions.eq(ENDPOINT_GROUP_REFERENCE, Long.valueOf(groupId)), + buildEqIdCriterion(ENDPOINT_PROFILE_SCHEMA_REFERENCE, endpointProfileSchemaId), + buildEqIdCriterion(SERVER_PROFILE_SCHEMA_REFERENCE, serverProfileSchemaId), + Restrictions.eq(STATUS_PROPERTY, UpdateStatus.INACTIVE))); + filter = findOneByCriteria(criteria); + } + if (LOG.isTraceEnabled()) { + LOG.trace("[{},{},{}] Search result: {}.", endpointProfileSchemaId, serverProfileSchemaId, groupId, filter); + } else { + LOG.debug("[{},{},{}] Search result: {}.", endpointProfileSchemaId, groupId, serverProfileSchemaId, filter != null); } + return filter; + } - @Override - public ProfileFilter activate(String id, String username) { - LOG.debug("Activating profile filter with id [{}] by username [{}]", id, username); - ProfileFilter filter = findById(id); - if (filter != null) { - filter.setStatus(UpdateStatus.ACTIVE); - filter.setActivatedTime(System.currentTimeMillis()); - filter.setActivatedUsername(username); - filter.incrementSequenceNumber(); - filter = save(filter); - } - if (LOG.isTraceEnabled()) { - LOG.trace("[{},{}] Activating result: {}.", id, username, filter); - } else { - LOG.debug("[{},{}] Activating result: {}.", id, username, filter != null); - } - return filter; + @Override + public ProfileFilter findLatestFilter(String endpointProfileSchemaId, String serverProfileSchemaId, String groupId) { + LOG.debug("Searching latest active profile filter by profile schema id [{}] and group id [{}]", + endpointProfileSchemaId, serverProfileSchemaId, groupId); + ProfileFilter filter = null; + if (isNotBlank(groupId)) { + Criteria criteria = getCriteria(); + criteria.createAlias(ENDPOINT_PROFILE_SCHEMA_PROPERTY, ENDPOINT_PROFILE_SCHEMA_ALIAS, JoinType.LEFT_OUTER_JOIN); + criteria.createAlias(SERVER_PROFILE_SCHEMA_PROPERTY, SERVER_PROFILE_SCHEMA_ALIAS, JoinType.LEFT_OUTER_JOIN); + criteria.createAlias(ENDPOINT_GROUP_PROPERTY, ENDPOINT_GROUP_ALIAS); + criteria.add(Restrictions.and( + Restrictions.eq(ENDPOINT_GROUP_REFERENCE, Long.valueOf(groupId)), + buildEqIdCriterion(ENDPOINT_PROFILE_SCHEMA_REFERENCE, endpointProfileSchemaId), + buildEqIdCriterion(SERVER_PROFILE_SCHEMA_REFERENCE, serverProfileSchemaId), + Restrictions.eq(STATUS_PROPERTY, UpdateStatus.ACTIVE))); + filter = findOneByCriteria(criteria); + } + if (LOG.isTraceEnabled()) { + LOG.trace("[{},{},{}] Search result: {}.", endpointProfileSchemaId, serverProfileSchemaId, groupId, filter); + } else { + LOG.debug("[{},{},{}] Search result: {}.", endpointProfileSchemaId, serverProfileSchemaId, groupId, filter != null); } + return filter; + } - @Override - public ProfileFilter deactivate(String id, String username) { - LOG.debug("Deactivating profile filter with id [{}] ", id); - ProfileFilter filter = findById(id); - if (filter != null) { - filter.setStatus(UpdateStatus.DEPRECATED); - filter.setDeactivatedTime(System.currentTimeMillis()); - filter.setDeactivatedUsername(username); - filter = save(filter); - } - if (LOG.isTraceEnabled()) { - LOG.trace("[{},{}] Deactivating result: {}.", id, username, filter); - } else { - LOG.debug("[{},{}] Deactivating result: {}.", id, username, filter != null); - } - return filter; + @Override + public ProfileFilter activate(String id, String username) { + LOG.debug("Activating profile filter with id [{}] by username [{}]", id, username); + ProfileFilter filter = findById(id); + if (filter != null) { + filter.setStatus(UpdateStatus.ACTIVE); + filter.setActivatedTime(System.currentTimeMillis()); + filter.setActivatedUsername(username); + filter.incrementSequenceNumber(); + filter = save(filter); } + if (LOG.isTraceEnabled()) { + LOG.trace("[{},{}] Activating result: {}.", id, username, filter); + } else { + LOG.debug("[{},{}] Activating result: {}.", id, username, filter != null); + } + return filter; + } - @Override - public ProfileFilter deactivateOldFilter(String endpointProfileSchemaId, String serverProfileSchemaId, String groupId, String username) { - LOG.debug("Deactivating old profile filter with endpoint profile schema id [{}], server profile schema id [{}], group id [{}] by username [{}]", - endpointProfileSchemaId, serverProfileSchemaId, groupId, username); - ProfileFilter filter = null; - if (isNotBlank(groupId)) { - Criteria criteria = getCriteria(); - criteria.createAlias(ENDPOINT_PROFILE_SCHEMA_PROPERTY, ENDPOINT_PROFILE_SCHEMA_ALIAS, JoinType.LEFT_OUTER_JOIN); - criteria.createAlias(SERVER_PROFILE_SCHEMA_PROPERTY, SERVER_PROFILE_SCHEMA_ALIAS, JoinType.LEFT_OUTER_JOIN); - criteria.createAlias(ENDPOINT_GROUP_PROPERTY, ENDPOINT_GROUP_ALIAS); - criteria.add(Restrictions.and( - Restrictions.eq(ENDPOINT_GROUP_REFERENCE, Long.valueOf(groupId)), - buildEqIdCriterion(ENDPOINT_PROFILE_SCHEMA_REFERENCE, endpointProfileSchemaId), - buildEqIdCriterion(SERVER_PROFILE_SCHEMA_REFERENCE, serverProfileSchemaId), - Restrictions.eq(STATUS_PROPERTY, UpdateStatus.ACTIVE))); - filter = findOneByCriteria(criteria); - } - if (filter != null) { - filter.setStatus(UpdateStatus.DEPRECATED); - filter.setDeactivatedTime(System.currentTimeMillis()); - filter.setDeactivatedUsername(username); - filter = save(filter); - } - if (LOG.isTraceEnabled()) { - LOG.trace("[{},{},{},{}] Deactivating result: {}.", endpointProfileSchemaId, serverProfileSchemaId, groupId, username, filter); - } else { - LOG.debug("[{},{},{},{}] Deactivating result: {}.", endpointProfileSchemaId, serverProfileSchemaId, groupId, username, filter != null); - } - return filter; + @Override + public ProfileFilter deactivate(String id, String username) { + LOG.debug("Deactivating profile filter with id [{}] ", id); + ProfileFilter filter = findById(id); + if (filter != null) { + filter.setStatus(UpdateStatus.DEPRECATED); + filter.setDeactivatedTime(System.currentTimeMillis()); + filter.setDeactivatedUsername(username); + filter = save(filter); + } + if (LOG.isTraceEnabled()) { + LOG.trace("[{},{}] Deactivating result: {}.", id, username, filter); + } else { + LOG.debug("[{},{}] Deactivating result: {}.", id, username, filter != null); } + return filter; + } - @Override - public ProfileFilter save(ProfileFilter object) { - ProfileFilter saved = super.save(object); - getSession().flush(); - return saved; + @Override + public ProfileFilter deactivateOldFilter(String endpointProfileSchemaId, String serverProfileSchemaId, String groupId, String username) { + LOG.debug("Deactivating old profile filter with endpoint profile schema id [{}], server profile schema id [{}], group id [{}] by username [{}]", + endpointProfileSchemaId, serverProfileSchemaId, groupId, username); + ProfileFilter filter = null; + if (isNotBlank(groupId)) { + Criteria criteria = getCriteria(); + criteria.createAlias(ENDPOINT_PROFILE_SCHEMA_PROPERTY, ENDPOINT_PROFILE_SCHEMA_ALIAS, JoinType.LEFT_OUTER_JOIN); + criteria.createAlias(SERVER_PROFILE_SCHEMA_PROPERTY, SERVER_PROFILE_SCHEMA_ALIAS, JoinType.LEFT_OUTER_JOIN); + criteria.createAlias(ENDPOINT_GROUP_PROPERTY, ENDPOINT_GROUP_ALIAS); + criteria.add(Restrictions.and( + Restrictions.eq(ENDPOINT_GROUP_REFERENCE, Long.valueOf(groupId)), + buildEqIdCriterion(ENDPOINT_PROFILE_SCHEMA_REFERENCE, endpointProfileSchemaId), + buildEqIdCriterion(SERVER_PROFILE_SCHEMA_REFERENCE, serverProfileSchemaId), + Restrictions.eq(STATUS_PROPERTY, UpdateStatus.ACTIVE))); + filter = findOneByCriteria(criteria); + } + if (filter != null) { + filter.setStatus(UpdateStatus.DEPRECATED); + filter.setDeactivatedTime(System.currentTimeMillis()); + filter.setDeactivatedUsername(username); + filter = save(filter); } + if (LOG.isTraceEnabled()) { + LOG.trace("[{},{},{},{}] Deactivating result: {}.", endpointProfileSchemaId, serverProfileSchemaId, groupId, username, filter); + } else { + LOG.debug("[{},{},{},{}] Deactivating result: {}.", endpointProfileSchemaId, serverProfileSchemaId, groupId, username, filter != null); + } + return filter; + } - @Override - public long findActiveFilterCount(String endpointProfileSchemaId, String serverProfileSchemaId, String groupId) { - long count = 0; - LOG.debug("Searching active profile filters by endpoint profile schema id [{}], server profile schema id [{}] and group id [{}]", - endpointProfileSchemaId, serverProfileSchemaId, groupId); - if (isNotBlank(groupId)) { - Criteria criteria = getCriteria(); - criteria.createAlias(ENDPOINT_PROFILE_SCHEMA_PROPERTY, ENDPOINT_PROFILE_SCHEMA_ALIAS, JoinType.LEFT_OUTER_JOIN); - criteria.createAlias(SERVER_PROFILE_SCHEMA_PROPERTY, SERVER_PROFILE_SCHEMA_ALIAS, JoinType.LEFT_OUTER_JOIN); - criteria.createAlias(ENDPOINT_GROUP_PROPERTY, ENDPOINT_GROUP_ALIAS); + @Override + public ProfileFilter save(ProfileFilter object) { + ProfileFilter saved = super.save(object); + getSession().flush(); + return saved; + } - criteria.add(Restrictions.and( - Restrictions.eq(ENDPOINT_GROUP_REFERENCE, Long.valueOf(groupId)), - buildEqIdCriterion(ENDPOINT_PROFILE_SCHEMA_REFERENCE, endpointProfileSchemaId), - buildEqIdCriterion(SERVER_PROFILE_SCHEMA_REFERENCE, serverProfileSchemaId), - Restrictions.eq(STATUS_PROPERTY, UpdateStatus.ACTIVE))); - count = (Long) criteria.setProjection(Projections.rowCount()).uniqueResult(); - } - LOG.debug("[{},{},{}] Search result: {}.", endpointProfileSchemaId, serverProfileSchemaId, groupId, count); - return count; - } + @Override + public long findActiveFilterCount(String endpointProfileSchemaId, String serverProfileSchemaId, String groupId) { + long count = 0; + LOG.debug("Searching active profile filters by endpoint profile schema id [{}], server profile schema id [{}] and group id [{}]", + endpointProfileSchemaId, serverProfileSchemaId, groupId); + if (isNotBlank(groupId)) { + Criteria criteria = getCriteria(); + criteria.createAlias(ENDPOINT_PROFILE_SCHEMA_PROPERTY, ENDPOINT_PROFILE_SCHEMA_ALIAS, JoinType.LEFT_OUTER_JOIN); + criteria.createAlias(SERVER_PROFILE_SCHEMA_PROPERTY, SERVER_PROFILE_SCHEMA_ALIAS, JoinType.LEFT_OUTER_JOIN); + criteria.createAlias(ENDPOINT_GROUP_PROPERTY, ENDPOINT_GROUP_ALIAS); - @Override - protected Class getEntityClass() { - return ProfileFilter.class; + criteria.add(Restrictions.and( + Restrictions.eq(ENDPOINT_GROUP_REFERENCE, Long.valueOf(groupId)), + buildEqIdCriterion(ENDPOINT_PROFILE_SCHEMA_REFERENCE, endpointProfileSchemaId), + buildEqIdCriterion(SERVER_PROFILE_SCHEMA_REFERENCE, serverProfileSchemaId), + Restrictions.eq(STATUS_PROPERTY, UpdateStatus.ACTIVE))); + count = (Long) criteria.setProjection(Projections.rowCount()).uniqueResult(); } + LOG.debug("[{},{},{}] Search result: {}.", endpointProfileSchemaId, serverProfileSchemaId, groupId, count); + return count; + } + + @Override + protected Class getEntityClass() { + return ProfileFilter.class; + } - private Criterion buildEqIdCriterion(String reference, String id) { - Criterion criterion; - if (isBlank(id)) { - criterion = Restrictions.isNull(reference); - } else { - criterion = Restrictions.eq(reference, ModelUtils.getLongId(id)); - } - return criterion; + private Criterion buildEqIdCriterion(String reference, String id) { + Criterion criterion; + if (isBlank(id)) { + criterion = Restrictions.isNull(reference); + } else { + criterion = Restrictions.eq(reference, ModelUtils.getLongId(id)); } + return criterion; + } } diff --git a/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/model/sql/GenericModel.java b/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/model/sql/GenericModel.java index eea4c1f491..55a824a6e8 100644 --- a/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/model/sql/GenericModel.java +++ b/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/model/sql/GenericModel.java @@ -50,7 +50,9 @@ public GenericModel newInstance(String id) { return newInstance(ModelUtils.getLongId(id)); } + protected abstract GenericModel newInstance(Long id); + protected abstract T createDto(); - protected abstract GenericModel newInstance(Long id); + } diff --git a/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/model/sql/ModelUtils.java b/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/model/sql/ModelUtils.java index 3d502adf1c..73e2c2f77e 100644 --- a/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/model/sql/ModelUtils.java +++ b/server/common/dao/src/main/java/org/kaaproject/kaa/server/common/dao/model/sql/ModelUtils.java @@ -102,32 +102,33 @@ public static Set getGenericModelIds(Set idSet, GenericModel mode return dataSet; } - public static List getDtoIds(Set set) { - List ids; + public static Set getGenericModelIds(Set> set) { + Set ids; if (set == null || set.isEmpty()) { - ids = Collections.emptyList(); + ids = Collections.emptySet(); } else { - ids = new ArrayList<>(set.size()); - for (HasId hasId : set) { - ids.add(hasId.getId()); + ids = new HashSet<>(set.size()); + for (GenericModel model : set) { + ids.add(model.getStringId()); } } return ids; } - public static Set getGenericModelIds(Set> set) { - Set ids; + public static List getDtoIds(Set set) { + List ids; if (set == null || set.isEmpty()) { - ids = Collections.emptySet(); + ids = Collections.emptyList(); } else { - ids = new HashSet<>(set.size()); - for (GenericModel model : set) { - ids.add(model.getStringId()); + ids = new ArrayList<>(set.size()); + for (HasId hasId : set) { + ids.add(hasId.getId()); } } return ids; } + public static Set getGenericModelVersions(Set set) { Set ids; if (set == null || set.isEmpty()) { @@ -195,7 +196,7 @@ public static byte[] stringToBinary(String body) { } /** - * This method take string id from GenericModel object + * This method take string id from GenericModel object. * * @param model GenericModel object * @return the id as string type diff --git a/server/common/thrift-cli-server/src/main/java/org/kaaproject/kaa/server/common/thrift/cli/server/BaseCliThriftService.java b/server/common/thrift-cli-server/src/main/java/org/kaaproject/kaa/server/common/thrift/cli/server/BaseCliThriftService.java index d4eb3e3c7d..57392dd506 100644 --- a/server/common/thrift-cli-server/src/main/java/org/kaaproject/kaa/server/common/thrift/cli/server/BaseCliThriftService.java +++ b/server/common/thrift-cli-server/src/main/java/org/kaaproject/kaa/server/common/thrift/cli/server/BaseCliThriftService.java @@ -180,6 +180,20 @@ public void run() { new Thread(shutdownCommand).start(); } + /** + * Shutdown server. + * + * @param writer the writer to output shutdown information. + */ + private void shutdown(PrintWriter writer) { + writer.println("Server shutdown initiated."); + try { + shutdown(); + } catch (TException ex) { + LOG.error("Catch exception when execute shutdown command", ex); + } + } + /* * (non-Javadoc) * @@ -188,9 +202,9 @@ public void run() { * .Iface#getMemoryUsage(boolean) */ @Override - public MemoryUsage getMemoryUsage(boolean forceGC) + public MemoryUsage getMemoryUsage(boolean forceGc) throws TException { - if (forceGC) { + if (forceGc) { System.gc(); //NOSONAR } MemoryUsage memUsage = new MemoryUsage(); @@ -476,19 +490,7 @@ private void allThreadsFromGroup(ThreadGroup group, } } - /** - * Shutdown server. - * - * @param writer the writer to output shutdown information. - */ - private void shutdown(PrintWriter writer) { - writer.println("Server shutdown initiated."); - try { - shutdown(); - } catch (TException ex) { - LOG.error("Catch exception when execute shutdown command", ex); - } - } + /** * Creates the string padding. diff --git a/server/common/transport-shared/src/main/java/org/kaaproject/kaa/server/transport/AbstractKaaTransport.java b/server/common/transport-shared/src/main/java/org/kaaproject/kaa/server/transport/AbstractKaaTransport.java index c6ade318c5..40da299473 100644 --- a/server/common/transport-shared/src/main/java/org/kaaproject/kaa/server/transport/AbstractKaaTransport.java +++ b/server/common/transport-shared/src/main/java/org/kaaproject/kaa/server/transport/AbstractKaaTransport.java @@ -42,9 +42,7 @@ public abstract class AbstractKaaTransport impleme protected static final String LOCALHOST = "localhost"; private static final Logger LOG = LoggerFactory.getLogger(AbstractKaaTransport.class); private static final Charset UTF8 = Charset.forName("UTF-8"); - /** - * A message handler - */ + protected MessageHandler handler; protected SpecificTransportContext context; @@ -64,12 +62,21 @@ public void init(GenericTransportContext context) throws TransportLifecycleExcep this.context = new SpecificTransportContext(context, config); init(this.context); LOG.info("Transport {} initialized with {}", getClassName(), this.context.getConfiguration()); - } catch (IOException e) { - LOG.error(MessageFormat.format("Failed to initialize transport {0}", getClassName()), e); - throw new TransportLifecycleException(e); + } catch (IOException ex) { + LOG.error(MessageFormat.format("Failed to initialize transport {0}", getClassName()), ex); + throw new TransportLifecycleException(ex); } } + /** + * Initializes the transport with specified context. + * + * @param context the initialization context + */ + protected abstract void init(SpecificTransportContext context) + throws TransportLifecycleException; + + @Override public TransportMetaData getConnectionInfo() { LOG.info("Serializing connection info"); @@ -80,12 +87,6 @@ public TransportMetaData getConnectionInfo() { return new TransportMetaData(getMinSupportedVersion(), getMaxSupportedVersion(), buffs); } - /** - * Initializes the transport with specified context. - * - * @param context the initialization context - */ - protected abstract void init(SpecificTransportContext context) throws TransportLifecycleException; /** * Gets the configuration class. @@ -108,7 +109,7 @@ protected String replaceProperty(String source, String propertyName, String prop return source.replace("${" + propertyName + "}", propertyValue); } - protected byte[] toUTF8Bytes(String str) { + protected byte[] toUtf8Bytes(String str) { return str.getBytes(UTF8); } } diff --git a/server/common/zk/src/main/java/org/kaaproject/kaa/server/common/zk/WorkerNodeTracker.java b/server/common/zk/src/main/java/org/kaaproject/kaa/server/common/zk/WorkerNodeTracker.java index b498461784..4495a3dae3 100644 --- a/server/common/zk/src/main/java/org/kaaproject/kaa/server/common/zk/WorkerNodeTracker.java +++ b/server/common/zk/src/main/java/org/kaaproject/kaa/server/common/zk/WorkerNodeTracker.java @@ -36,61 +36,41 @@ import java.util.Map; import java.util.concurrent.CopyOnWriteArrayList; -/** - * The Class WorkerNodeTracker. - */ + public abstract class WorkerNodeTracker extends ControlNodeTracker { - /** - * The Constant LOG. - */ private static final Logger LOG = LoggerFactory.getLogger(WorkerNodeTracker.class); - /** - * The endpoint cache. - */ + private PathChildrenCache endpointCache; - /** - * The bootstrap cache. - */ + private PathChildrenCache bootstrapCache; - /** - * The endpoint listeners. - */ + private List endpointListeners; - /** - * The bootstrap listeners. - */ + private List bootstrapListeners; /** * Correspondence between each functioning operation node's thriftHost+thriftPort - * string and its start time + * string and its start time. */ private Map operationNodesStartTimes; /** * Correspondence between each functioning bootstrap node's thriftHost+thriftPort - * string and its start time + * string and its start time. */ private Map bootstrapNodesStartTimes; - /** - * Instantiates a new worker node tracker. - */ + public WorkerNodeTracker() { super(); init(); } - /** - * Instantiates a new worker node tracker. - * - * @param zkClient Zookeeper client - */ public WorkerNodeTracker(CuratorFramework zkClient) { super(); this.zkClient = zkClient; @@ -300,6 +280,17 @@ public void addListener(OperationsNodeListener listener) { endpointListeners.add(listener); } + /** + * Adds the listener. + * + * @param listener the listener + */ + public void addListener(BootstrapNodeListener listener) { + LOG.debug("Listener registered: " + listener); + bootstrapListeners.add(listener); + } + + /** * Removes the listener. * @@ -316,16 +307,6 @@ public boolean removeListener(OperationsNodeListener listener) { } } - /** - * Adds the listener. - * - * @param listener the listener - */ - public void addListener(BootstrapNodeListener listener) { - LOG.debug("Listener registered: " + listener); - bootstrapListeners.add(listener); - } - /** * Removes the listener. * @@ -342,6 +323,7 @@ public boolean removeListener(BootstrapNodeListener listener) { } } + /** * Extract endpoint server info. * @@ -351,9 +333,10 @@ public boolean removeListener(BootstrapNodeListener listener) { private OperationsNodeInfo extractOperationServerInfo(ChildData currentData) { OperationsNodeInfo endpointServerInfo = null; try { - endpointServerInfo = operationsNodeAvroConverter.get().fromByteArray(currentData.getData(), null); - } catch (IOException e) { - LOG.error("error reading control service info", e); + endpointServerInfo = operationsNodeAvroConverter.get().fromByteArray(currentData.getData(), + null); + } catch (IOException ex) { + LOG.error("error reading control service info", ex); } return endpointServerInfo; } @@ -367,21 +350,22 @@ private OperationsNodeInfo extractOperationServerInfo(ChildData currentData) { private BootstrapNodeInfo extractBootstrapServerInfo(ChildData currentData) { BootstrapNodeInfo bootstrapServerInfo = null; try { - bootstrapServerInfo = bootstrapNodeAvroConverter.get().fromByteArray(currentData.getData(), null); - } catch (IOException e) { - LOG.error("error reading control service info", e); + bootstrapServerInfo = bootstrapNodeAvroConverter.get().fromByteArray(currentData.getData(), + null); + } catch (IOException ex) { + LOG.error("error reading control service info", ex); } return bootstrapServerInfo; } private String constructEndpointAddress(OperationsNodeInfo nodeInfo) { - return nodeInfo.getConnectionInfo().getThriftHost() + ":" + - String.valueOf(nodeInfo.getConnectionInfo().getThriftPort()); + return nodeInfo.getConnectionInfo().getThriftHost() + ":" + + String.valueOf(nodeInfo.getConnectionInfo().getThriftPort()); } private String constructBootstrapAddress(BootstrapNodeInfo nodeInfo) { - return nodeInfo.getConnectionInfo().getThriftHost() + ":" + - String.valueOf(nodeInfo.getConnectionInfo().getThriftPort()); + return nodeInfo.getConnectionInfo().getThriftHost() + ":" + + String.valueOf(nodeInfo.getConnectionInfo().getThriftPort()); } /* diff --git a/server/transports/http/transport/src/main/java/org/kaaproject/kaa/server/transports/http/transport/HttpTransport.java b/server/transports/http/transport/src/main/java/org/kaaproject/kaa/server/transports/http/transport/HttpTransport.java index 3baee5001f..4b44efcb77 100644 --- a/server/transports/http/transport/src/main/java/org/kaaproject/kaa/server/transports/http/transport/HttpTransport.java +++ b/server/transports/http/transport/src/main/java/org/kaaproject/kaa/server/transports/http/transport/HttpTransport.java @@ -118,7 +118,7 @@ protected List getSerializedConnectionInfoList() { RangeExpressionParser rangeExpressionParser = new RangeExpressionParser(); List publicPorts = rangeExpressionParser.getNumbersFromRanges(context.getConfiguration().getPublicPorts()); for (int publicPort : publicPorts) { - byte[] interfaceData = toUTF8Bytes(context.getConfiguration().getPublicInterface()); + byte[] interfaceData = toUtf8Bytes(context.getConfiguration().getPublicInterface()); byte[] publicKeyData = context.getServerKey().getEncoded(); ByteBuffer buf = ByteBuffer.wrap(new byte[SIZE_OF_INT * 3 + interfaceData.length + publicKeyData.length]); buf.putInt(publicKeyData.length); diff --git a/server/transports/tcp/transport/src/main/java/org/kaaproject/kaa/server/transports/tcp/transport/TcpTransport.java b/server/transports/tcp/transport/src/main/java/org/kaaproject/kaa/server/transports/tcp/transport/TcpTransport.java index 3c46a21654..895fb1261e 100644 --- a/server/transports/tcp/transport/src/main/java/org/kaaproject/kaa/server/transports/tcp/transport/TcpTransport.java +++ b/server/transports/tcp/transport/src/main/java/org/kaaproject/kaa/server/transports/tcp/transport/TcpTransport.java @@ -100,7 +100,7 @@ protected List getSerializedConnectionInfoList() { RangeExpressionParser rangeExpressionParser = new RangeExpressionParser(); List publicPorts = rangeExpressionParser.getNumbersFromRanges(context.getConfiguration().getPublicPorts()); for (int publicPort : publicPorts) { - byte[] interfaceData = toUTF8Bytes(context.getConfiguration().getPublicInterface()); + byte[] interfaceData = toUtf8Bytes(context.getConfiguration().getPublicInterface()); byte[] publicKeyData = context.getServerKey().getEncoded(); ByteBuffer buf = ByteBuffer.wrap(new byte[SIZE_OF_INT * 3 + interfaceData.length + publicKeyData.length]); buf.putInt(publicKeyData.length);