Skip to content
This repository has been archived by the owner on May 28, 2020. It is now read-only.

Commit

Permalink
Assosiate API, ignore case - CAPP-4912
Browse files Browse the repository at this point in the history
  • Loading branch information
yaniv-cb4 committed May 29, 2016
1 parent 10b854f commit c1dec91
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 57 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -45,13 +45,15 @@
import org.jboss.aerogear.unifiedpush.rest.util.PushAppAuthHelper;
import org.jboss.aerogear.unifiedpush.service.DocumentService;
import org.jboss.aerogear.unifiedpush.service.PushApplicationService;
import org.jboss.aerogear.unifiedpush.utils.AeroGearLogger;
import org.jboss.resteasy.annotations.providers.multipart.PartType;
import org.jboss.resteasy.plugins.providers.multipart.MultipartFormDataOutput;

import com.qmino.miredot.annotations.ReturnType;

@Path("/applicationsData")
public class PushApplicationDataEndpoint extends AbstractBaseEndpoint {
private final AeroGearLogger logger = AeroGearLogger.getInstance(PushApplicationDataEndpoint.class);

@Inject
private PushApplicationService pushAppService;
Expand Down Expand Up @@ -146,6 +148,9 @@ public Response getDocumentsForPushApp(@PathParam("qualifier") String qualifer,
for (int i = 0; i < documents.size(); i++) {
mdo.addFormData("file" + i, documents.get(i), MediaType.TEXT_PLAIN_TYPE);
}

logger.info(String.format("%s documents found for push applicaiton %s", documents != null ? documents.size() : 0, pushApplicationID));

return Response.ok(mdo).build();
} catch (Exception e) {
logger.severe("Cannot retrieve documents for push app", e);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,16 +54,6 @@ public interface InstallationDao extends GenericBaseDao<Installation, String> {
*/
List<Installation> findInstallationsForVariantByDeviceTokens(String variantID, Set<String> deviceTokens);

/**
* Loads all installations matching the alias, for the given list of variants.
*
* @param variantIDs variant IDs by which to filter.
* @param alias alias by which to filter
*
* @return list of matching installations.
*/
List<Installation> findInstallationsForVariantsByAlias(List<String> variantIDs, String alias);

/**
* Sender API for installations:
*
Expand Down Expand Up @@ -154,12 +144,4 @@ public interface InstallationDao extends GenericBaseDao<Installation, String> {
* @return the number of installations that have been disabled
*/
int removeInstallationsByAlias(String alias);

/**
* Returns the subset of the given aliases whose device is marked as enabled.
*
* @param aliases aliases to filter
* @return aliases that are enabled
*/
Set<String> filterDisabledDevices(Set<String> aliases);
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,18 @@
*/
package org.jboss.aerogear.unifiedpush.jpa.dao.impl;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

import javax.persistence.TypedQuery;

import org.hibernate.Query;
import org.hibernate.ScrollMode;
import org.hibernate.ScrollableResults;
Expand All @@ -26,16 +38,6 @@
import org.jboss.aerogear.unifiedpush.dao.ResultsStream;
import org.jboss.aerogear.unifiedpush.dto.Count;

import javax.persistence.TypedQuery;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class JPAInstallationDao extends JPABaseDao<Installation, String> implements InstallationDao {

private static final String FIND_ALL_DEVICES_FOR_VARIANT_QUERY = "select distinct installation.deviceToken"
Expand Down Expand Up @@ -135,17 +137,6 @@ public List<Installation> findInstallationsForVariantByDeviceTokens(String varia
.getResultList();
}

@Override
public List<Installation> findInstallationsForVariantsByAlias(List<String> variantIDs, String alias) {
return createQuery("select installation from Installation installation " +
" join installation.variant abstractVariant " +
" where abstractVariant.variantID IN :variantIDs " +
" and installation.alias = :alias")
.setParameter("variantIDs", variantIDs)
.setParameter("alias", alias)
.getResultList();
}

@Override
public Set<String> findAllDeviceTokenForVariantID(String variantID) {
TypedQuery<String> query = createQuery(FIND_ALL_DEVICES_FOR_VARIANT_QUERY, String.class);
Expand Down Expand Up @@ -237,47 +228,45 @@ public long getNumberOfDevicesForVariantID(String variantId) {
.getSingleResult();
}

/**
* Return list of installations not in aliases list.
* Match is case insensitive and expect aliases list to be lowercase letters.
*/
@Override
public List<Installation> findByVariantIDsNotInAliasList(List<String> variantIDs, List<String> aliases) {
return createQuery("select installation from Installation installation " +
" join installation.variant abstractVariant " +
" where abstractVariant.variantID IN :variantIDs " +
" and installation.alias NOT IN :aliases")
" and LOWER(installation.alias) NOT IN :aliases")
.setParameter("variantIDs", variantIDs)
.setParameter("aliases", aliases)
.setParameter("aliases", getAliases(aliases))
.getResultList();
}

/**
* Return list of installations by aliases list.
* Match is case insensitive and expect aliases list to be lowercase letters.
*/
@Override
public List<Installation> findByVariantIDsInAliasList(List<String> variantIDs, List<String> aliases) {
return createQuery("select installation from Installation installation " +
" join installation.variant abstractVariant " +
" where abstractVariant.variantID IN :variantIDs " +
" and installation.alias IN :aliases")
" and LOWER(installation.alias) IN :aliases")
.setParameter("variantIDs", variantIDs)
.setParameter("aliases", aliases)
.setParameter("aliases", getAliases(aliases))
.getResultList();
}

@Override
public int removeInstallationsByAlias(String alias) {
return entityManager.createQuery(
" delete from Installation "
+ "where alias = :alias ")
.setParameter("alias", alias)
+ "where LOWER(alias) = :alias ")
.setParameter("alias", alias.toLowerCase())
.executeUpdate();
}

@Override
public Set<String> filterDisabledDevices(Set<String> aliases) {
return new HashSet<>(createQuery("select alias from Installation "
+ "where enabled = true "
+ "and alias in :aliases", String.class)
.setParameter("aliases", aliases)
.getResultList());
}


/**
*
* A dynamic finder for all sorts of queries around selecting Device-Token, based on different criterias.
Expand All @@ -293,9 +282,9 @@ private void appendDynamicQuery(final StringBuilder jpqlString, final Map<String
// are aliases present ??
if (isListNotEmpty(aliases)) {
// append the string:
jpqlString.append(" AND installation.alias IN :aliases");
jpqlString.append(" AND LOWER(installation.alias) IN :aliases");
// add the params:
parameters.put("aliases", aliases);
parameters.put("aliases", getAliases(aliases));
}

// are devices present ??
Expand Down Expand Up @@ -326,4 +315,21 @@ private StringBuilder getFindVariantByDeviceTokenQuery() {
" and installation.deviceToken = :deviceToken");
}

/**
* Transform alias list to lowercase aliases
*/
private List<String> getAliases(List<String> aliases){
if (!isListNotEmpty(aliases)){
return aliases;
}

List<String> lowerAliases = new ArrayList<>();

for (String alias: aliases){
lowerAliases.add(alias.toLowerCase());
}

return lowerAliases;
}

}

0 comments on commit c1dec91

Please sign in to comment.