Skip to content
Snippets Groups Projects
Commit 8b7c0e9a authored by Kelly Kelly's avatar Kelly Kelly
Browse files

modified the getAccountWithResources SQL

parent cfa46159
No related branches found
No related tags found
No related merge requests found
...@@ -662,13 +662,24 @@ public List<AccountDeviceInstance> getAccountDeviceInstancesWithRelationships(Co ...@@ -662,13 +662,24 @@ public List<AccountDeviceInstance> getAccountDeviceInstancesWithRelationships(Co
CommunicationsFilter.RelationshipTypeFilter.class.getName() CommunicationsFilter.RelationshipTypeFilter.class.getName()
)); ));
String innerQueryfilterSQL = getCommunicationsFilterSQL(filter, applicableInnerQueryFilters); String innerQueryfilterSQL = getCommunicationsFilterSQL(filter, applicableInnerQueryFilters);
String limitSQL = "";
for (CommunicationsFilter.SubFilter subFilter : filter.getAndFilters()) {
if(subFilter.getClass().getName().equals(CommunicationsFilter.MostRecentFilter.class.getName())) {
limitSQL = subFilter.getSQL(this);
}
}
String filterQuery =
"SELECT * "
+ "FROM account_relationships as relationships"
+ (innerQueryfilterSQL.isEmpty() ? "" : " WHERE " + innerQueryfilterSQL)
+ (limitSQL.isEmpty() ? "" : limitSQL);
String innerQueryTemplate String innerQueryTemplate
= " SELECT %1$1s as account_id," = " SELECT %1$1s as account_id,"
+ " data_source_obj_id," + " data_source_obj_id"
+ " date_time" + " FROM ( " + filterQuery + ")";
+ " FROM account_relationships as relationships"
+ (innerQueryfilterSQL.isEmpty() ? "" : " WHERE " + innerQueryfilterSQL);
String innerQuery1 = String.format(innerQueryTemplate, "account1_id"); String innerQuery1 = String.format(innerQueryTemplate, "account1_id");
String innerQuery2 = String.format(innerQueryTemplate, "account2_id"); String innerQuery2 = String.format(innerQueryTemplate, "account2_id");
...@@ -676,7 +687,7 @@ public List<AccountDeviceInstance> getAccountDeviceInstancesWithRelationships(Co ...@@ -676,7 +687,7 @@ public List<AccountDeviceInstance> getAccountDeviceInstancesWithRelationships(Co
//this query groups by account_id and data_source_obj_id across both innerQueries //this query groups by account_id and data_source_obj_id across both innerQueries
String combinedInnerQuery String combinedInnerQuery
= "SELECT DISTINCT account_id, data_source_obj_id" = "SELECT DISTINCT account_id, data_source_obj_id"
+ " FROM ( " + innerQuery1 + " UNION " + innerQuery2 + " " + getUnionLimitSQL(filter) + " ) AS inner_union" + " FROM ( " + innerQuery1 + " UNION " + innerQuery2 + " ) AS inner_union"
+ " GROUP BY account_id, data_source_obj_id"; + " GROUP BY account_id, data_source_obj_id";
// set up applicable filters // set up applicable filters
...@@ -897,7 +908,13 @@ public long getRelationshipSourcesCount(AccountDeviceInstance accountDeviceInsta ...@@ -897,7 +908,13 @@ public long getRelationshipSourcesCount(AccountDeviceInstance accountDeviceInsta
s = connection.createStatement(); s = connection.createStatement();
String innerQuery = " account_relationships AS relationships"; String innerQuery = " account_relationships AS relationships";
String limitStr = getUnionLimitSQL(filter); String limitStr = "";
for (CommunicationsFilter.SubFilter subFilter : filter.getAndFilters()) {
if(subFilter.getClass().getName().equals(CommunicationsFilter.MostRecentFilter.class.getName())) {
limitStr = subFilter.getSQL(this);
}
}
if(!limitStr.isEmpty()) { if(!limitStr.isEmpty()) {
innerQuery = "(SELECT * FROM account_relationships as relationships " + limitStr + ") as relationships"; innerQuery = "(SELECT * FROM account_relationships as relationships " + limitStr + ") as relationships";
} }
...@@ -980,7 +997,13 @@ public Set<Content> getRelationshipSources(Set<AccountDeviceInstance> accountDev ...@@ -980,7 +997,13 @@ public Set<Content> getRelationshipSources(Set<AccountDeviceInstance> accountDev
String filterSQL = getCommunicationsFilterSQL(filter, applicableFilters); String filterSQL = getCommunicationsFilterSQL(filter, applicableFilters);
String limitQuery = " account_relationships AS relationships"; String limitQuery = " account_relationships AS relationships";
String limitStr = getUnionLimitSQL(filter); String innerQuery = " account_relationships AS relationships";
String limitStr = "";
for (CommunicationsFilter.SubFilter subFilter : filter.getAndFilters()) {
if(subFilter.getClass().getName().equals(CommunicationsFilter.MostRecentFilter.class.getName())) {
limitStr = subFilter.getSQL(this);
}
}
if(!limitStr.isEmpty()) { if(!limitStr.isEmpty()) {
limitQuery = "(SELECT * FROM account_relationships as relationships " + limitStr + ") as relationships"; limitQuery = "(SELECT * FROM account_relationships as relationships " + limitStr + ") as relationships";
} }
...@@ -1167,7 +1190,13 @@ public List<Content> getRelationshipSources(AccountDeviceInstance account1, Acco ...@@ -1167,7 +1190,13 @@ public List<Content> getRelationshipSources(AccountDeviceInstance account1, Acco
)); ));
String limitQuery = " account_relationships AS relationships"; String limitQuery = " account_relationships AS relationships";
String limitStr = getUnionLimitSQL(filter); String innerQuery = " account_relationships AS relationships";
String limitStr = "";
for (CommunicationsFilter.SubFilter subFilter : filter.getAndFilters()) {
if(subFilter.getClass().getName().equals(CommunicationsFilter.MostRecentFilter.class.getName())) {
limitStr = subFilter.getSQL(this);
}
}
if(!limitStr.isEmpty()) { if(!limitStr.isEmpty()) {
limitQuery = "(SELECT * FROM account_relationships as relationships " + limitStr + ") as relationships"; limitQuery = "(SELECT * FROM account_relationships as relationships " + limitStr + ") as relationships";
} }
...@@ -1352,14 +1381,4 @@ private String getCommunicationsFilterSQL(CommunicationsFilter commFilter, Set<S ...@@ -1352,14 +1381,4 @@ private String getCommunicationsFilterSQL(CommunicationsFilter commFilter, Set<S
} }
return sqlStr; return sqlStr;
} }
private String getUnionLimitSQL(CommunicationsFilter commFilter) {
for (CommunicationsFilter.SubFilter subFilter : commFilter.getAndFilters()) {
if(subFilter.getClass().getName().equals(CommunicationsFilter.MostRecentFilter.class.getName())) {
return subFilter.getSQL(this);
}
}
return "";
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment