Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
atlas
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
dataplatform
atlas
Commits
7cce1c4a
Commit
7cce1c4a
authored
7 years ago
by
ashutoshm
Committed by
Madhan Neethiraj
7 years ago
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ATLAS-2160: added REST APIs to execute a saved-search
Signed-off-by:
Madhan Neethiraj
<
madhan@apache.org
>
parent
a9ca60e3
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
193 additions
and
82 deletions
+193
-82
AtlasUserSavedSearch.java
.../org/apache/atlas/model/profile/AtlasUserSavedSearch.java
+0
-4
AtlasDiscoveryService.java
...ava/org/apache/atlas/discovery/AtlasDiscoveryService.java
+19
-8
EntityDiscoveryService.java
...va/org/apache/atlas/discovery/EntityDiscoveryService.java
+84
-12
AtlasSavedSearchDTO.java
.../org/apache/atlas/repository/ogm/AtlasSavedSearchDTO.java
+1
-1
UserProfileService.java
...ache/atlas/repository/userprofile/UserProfileService.java
+4
-6
UserProfileServiceTest.java
.../atlas/repository/userprofile/UserProfileServiceTest.java
+5
-5
DiscoveryREST.java
...rc/main/java/org/apache/atlas/web/rest/DiscoveryREST.java
+80
-46
No files found.
intg/src/main/java/org/apache/atlas/model/profile/AtlasUserSavedSearch.java
View file @
7cce1c4a
...
@@ -61,10 +61,6 @@ public class AtlasUserSavedSearch extends AtlasBaseModelObject implements Serial
...
@@ -61,10 +61,6 @@ public class AtlasUserSavedSearch extends AtlasBaseModelObject implements Serial
this
(
ownerName
,
name
,
SavedSearchType
.
BASIC
,
null
);
this
(
ownerName
,
name
,
SavedSearchType
.
BASIC
,
null
);
}
}
public
AtlasUserSavedSearch
(
String
ownerName
,
String
name
,
SavedSearchType
searchType
)
{
this
(
ownerName
,
name
,
searchType
,
null
);
}
public
AtlasUserSavedSearch
(
String
ownerName
,
String
name
,
SavedSearchType
savedSearchType
,
SearchParameters
searchParameters
)
{
public
AtlasUserSavedSearch
(
String
ownerName
,
String
name
,
SavedSearchType
savedSearchType
,
SearchParameters
searchParameters
)
{
setOwnerName
(
ownerName
);
setOwnerName
(
ownerName
);
setName
(
name
);
setName
(
name
);
...
...
This diff is collapsed.
Click to expand it.
repository/src/main/java/org/apache/atlas/discovery/AtlasDiscoveryService.java
View file @
7cce1c4a
...
@@ -24,7 +24,6 @@ import org.apache.atlas.exception.AtlasBaseException;
...
@@ -24,7 +24,6 @@ import org.apache.atlas.exception.AtlasBaseException;
import
org.apache.atlas.model.discovery.AtlasSearchResult
;
import
org.apache.atlas.model.discovery.AtlasSearchResult
;
import
org.apache.atlas.model.discovery.SearchParameters
;
import
org.apache.atlas.model.discovery.SearchParameters
;
import
org.apache.atlas.model.profile.AtlasUserSavedSearch
;
import
org.apache.atlas.model.profile.AtlasUserSavedSearch
;
import
org.apache.atlas.model.profile.AtlasUserSavedSearch.SavedSearchType
;
import
java.util.List
;
import
java.util.List
;
...
@@ -40,6 +39,15 @@ public interface AtlasDiscoveryService {
...
@@ -40,6 +39,15 @@ public interface AtlasDiscoveryService {
/**
/**
*
*
* @param query query
* @param typeName type name
* @param classification classification
* @return Query in DSL form
*/
String
getDslQueryUsingTypeNameClassification
(
String
query
,
String
typeName
,
String
classification
);
/**
*
* @param query search query.
* @param query search query.
* @param excludeDeletedEntities exclude deleted entities in search result.
* @param excludeDeletedEntities exclude deleted entities in search result.
* @param limit number of resultant rows (for pagination). [ limit > 0 ] and [ limit < maxlimit ]. -1 maps to atlas.search.defaultlimit property.
* @param limit number of resultant rows (for pagination). [ limit > 0 ] and [ limit < maxlimit ]. -1 maps to atlas.search.defaultlimit property.
...
@@ -90,14 +98,14 @@ public interface AtlasDiscoveryService {
...
@@ -90,14 +98,14 @@ public interface AtlasDiscoveryService {
* @param savedSearch Search to be saved
* @param savedSearch Search to be saved
* @throws AtlasBaseException
* @throws AtlasBaseException
*/
*/
AtlasUserSavedSearch
addSavedSearch
(
AtlasUserSavedSearch
savedSearch
)
throws
AtlasBaseException
;
AtlasUserSavedSearch
addSavedSearch
(
String
currentUser
,
AtlasUserSavedSearch
savedSearch
)
throws
AtlasBaseException
;
/**
/**
*
*
* @param savedSearch Search to be saved
* @param savedSearch Search to be saved
* @throws AtlasBaseException
* @throws AtlasBaseException
*/
*/
AtlasUserSavedSearch
updateSavedSearch
(
AtlasUserSavedSearch
savedSearch
)
throws
AtlasBaseException
;
AtlasUserSavedSearch
updateSavedSearch
(
String
currentUser
,
AtlasUserSavedSearch
savedSearch
)
throws
AtlasBaseException
;
/**
/**
*
*
...
@@ -105,7 +113,7 @@ public interface AtlasDiscoveryService {
...
@@ -105,7 +113,7 @@ public interface AtlasDiscoveryService {
* @return List of saved searches for the user
* @return List of saved searches for the user
* @throws AtlasBaseException
* @throws AtlasBaseException
*/
*/
List
<
AtlasUserSavedSearch
>
getSavedSearches
(
String
userName
)
throws
AtlasBaseException
;
List
<
AtlasUserSavedSearch
>
getSavedSearches
(
String
currentUser
,
String
userName
)
throws
AtlasBaseException
;
/**
/**
*
*
...
@@ -113,7 +121,7 @@ public interface AtlasDiscoveryService {
...
@@ -113,7 +121,7 @@ public interface AtlasDiscoveryService {
* @return Search object identified by the guid
* @return Search object identified by the guid
* @throws AtlasBaseException
* @throws AtlasBaseException
*/
*/
AtlasUserSavedSearch
getSavedSearch
(
String
guid
)
throws
AtlasBaseException
;
AtlasUserSavedSearch
getSavedSearch
ByGuid
(
String
currentUser
,
String
guid
)
throws
AtlasBaseException
;
/**
/**
*
*
...
@@ -122,10 +130,13 @@ public interface AtlasDiscoveryService {
...
@@ -122,10 +130,13 @@ public interface AtlasDiscoveryService {
* @return Search object identified by the name
* @return Search object identified by the name
* @throws AtlasBaseException
* @throws AtlasBaseException
*/
*/
AtlasUserSavedSearch
getSavedSearch
(
String
userName
,
String
searchName
,
SavedSearchType
searchTyp
e
)
throws
AtlasBaseException
;
AtlasUserSavedSearch
getSavedSearch
ByName
(
String
currentUser
,
String
userName
,
String
searchNam
e
)
throws
AtlasBaseException
;
/**
/**
* @param guid Guid for the saved search
*
* @param currentUser User requesting the operation
* @param guid Guid used to look up Saved Search
* @throws AtlasBaseException
*/
*/
void
deleteSavedSearch
(
String
guid
)
throws
AtlasBaseException
;
void
deleteSavedSearch
(
String
currentUser
,
String
guid
)
throws
AtlasBaseException
;
}
}
This diff is collapsed.
Click to expand it.
repository/src/main/java/org/apache/atlas/discovery/EntityDiscoveryService.java
View file @
7cce1c4a
...
@@ -34,7 +34,6 @@ import org.apache.atlas.model.discovery.SearchParameters;
...
@@ -34,7 +34,6 @@ import org.apache.atlas.model.discovery.SearchParameters;
import
org.apache.atlas.model.instance.AtlasEntityHeader
;
import
org.apache.atlas.model.instance.AtlasEntityHeader
;
import
org.apache.atlas.model.instance.AtlasObjectId
;
import
org.apache.atlas.model.instance.AtlasObjectId
;
import
org.apache.atlas.model.profile.AtlasUserSavedSearch
;
import
org.apache.atlas.model.profile.AtlasUserSavedSearch
;
import
org.apache.atlas.model.profile.AtlasUserSavedSearch.SavedSearchType
;
import
org.apache.atlas.query.Expressions.AliasExpression
;
import
org.apache.atlas.query.Expressions.AliasExpression
;
import
org.apache.atlas.query.Expressions.Expression
;
import
org.apache.atlas.query.Expressions.Expression
;
import
org.apache.atlas.query.Expressions.SelectExpression
;
import
org.apache.atlas.query.Expressions.SelectExpression
;
...
@@ -807,8 +806,14 @@ public class EntityDiscoveryService implements AtlasDiscoveryService {
...
@@ -807,8 +806,14 @@ public class EntityDiscoveryService implements AtlasDiscoveryService {
@Override
@Override
public
AtlasUserSavedSearch
addSavedSearch
(
AtlasUserSavedSearch
savedSearch
)
throws
AtlasBaseException
{
public
AtlasUserSavedSearch
addSavedSearch
(
String
currentUser
,
AtlasUserSavedSearch
savedSearch
)
throws
AtlasBaseException
{
try
{
try
{
if
(
StringUtils
.
isEmpty
(
savedSearch
.
getOwnerName
()))
{
savedSearch
.
setOwnerName
(
currentUser
);
}
checkSavedSearchOwnership
(
currentUser
,
savedSearch
);
return
userProfileService
.
addSavedSearch
(
savedSearch
);
return
userProfileService
.
addSavedSearch
(
savedSearch
);
}
catch
(
AtlasBaseException
e
)
{
}
catch
(
AtlasBaseException
e
)
{
LOG
.
error
(
"addSavedSearch({})"
,
savedSearch
,
e
);
LOG
.
error
(
"addSavedSearch({})"
,
savedSearch
,
e
);
...
@@ -818,8 +823,14 @@ public class EntityDiscoveryService implements AtlasDiscoveryService {
...
@@ -818,8 +823,14 @@ public class EntityDiscoveryService implements AtlasDiscoveryService {
@Override
@Override
public
AtlasUserSavedSearch
updateSavedSearch
(
AtlasUserSavedSearch
savedSearch
)
throws
AtlasBaseException
{
public
AtlasUserSavedSearch
updateSavedSearch
(
String
currentUser
,
AtlasUserSavedSearch
savedSearch
)
throws
AtlasBaseException
{
try
{
try
{
if
(
StringUtils
.
isEmpty
(
savedSearch
.
getOwnerName
()))
{
savedSearch
.
setOwnerName
(
currentUser
);
}
checkSavedSearchOwnership
(
currentUser
,
savedSearch
);
return
userProfileService
.
updateSavedSearch
(
savedSearch
);
return
userProfileService
.
updateSavedSearch
(
savedSearch
);
}
catch
(
AtlasBaseException
e
)
{
}
catch
(
AtlasBaseException
e
)
{
LOG
.
error
(
"updateSavedSearch({})"
,
savedSearch
,
e
);
LOG
.
error
(
"updateSavedSearch({})"
,
savedSearch
,
e
);
...
@@ -828,8 +839,14 @@ public class EntityDiscoveryService implements AtlasDiscoveryService {
...
@@ -828,8 +839,14 @@ public class EntityDiscoveryService implements AtlasDiscoveryService {
}
}
@Override
@Override
public
List
<
AtlasUserSavedSearch
>
getSavedSearches
(
String
userName
)
throws
AtlasBaseException
{
public
List
<
AtlasUserSavedSearch
>
getSavedSearches
(
String
currentUser
,
String
userName
)
throws
AtlasBaseException
{
try
{
try
{
if
(
StringUtils
.
isEmpty
(
userName
))
{
userName
=
currentUser
;
}
else
if
(!
StringUtils
.
equals
(
currentUser
,
userName
))
{
throw
new
AtlasBaseException
(
AtlasErrorCode
.
BAD_REQUEST
,
"invalid data"
);
}
return
userProfileService
.
getSavedSearches
(
userName
);
return
userProfileService
.
getSavedSearches
(
userName
);
}
catch
(
AtlasBaseException
e
)
{
}
catch
(
AtlasBaseException
e
)
{
LOG
.
error
(
"getSavedSearches({})"
,
userName
,
e
);
LOG
.
error
(
"getSavedSearches({})"
,
userName
,
e
);
...
@@ -838,27 +855,82 @@ public class EntityDiscoveryService implements AtlasDiscoveryService {
...
@@ -838,27 +855,82 @@ public class EntityDiscoveryService implements AtlasDiscoveryService {
}
}
@Override
@Override
public
AtlasUserSavedSearch
getSavedSearch
(
String
guid
)
throws
AtlasBaseException
{
public
AtlasUserSavedSearch
getSavedSearchByGuid
(
String
currentUser
,
String
guid
)
throws
AtlasBaseException
{
try
{
AtlasUserSavedSearch
savedSearch
=
userProfileService
.
getSavedSearch
(
guid
);
checkSavedSearchOwnership
(
currentUser
,
savedSearch
);
return
savedSearch
;
}
catch
(
AtlasBaseException
e
)
{
LOG
.
error
(
"getSavedSearchByGuid({})"
,
guid
,
e
);
throw
e
;
}
}
@Override
public
AtlasUserSavedSearch
getSavedSearchByName
(
String
currentUser
,
String
userName
,
String
searchName
)
throws
AtlasBaseException
{
try
{
try
{
return
userProfileService
.
getSavedSearch
(
guid
);
if
(
StringUtils
.
isEmpty
(
userName
))
{
userName
=
currentUser
;
}
else
if
(!
StringUtils
.
equals
(
currentUser
,
userName
))
{
throw
new
AtlasBaseException
(
AtlasErrorCode
.
BAD_REQUEST
,
"invalid data"
);
}
return
userProfileService
.
getSavedSearch
(
userName
,
searchName
);
}
catch
(
AtlasBaseException
e
)
{
}
catch
(
AtlasBaseException
e
)
{
LOG
.
error
(
"getSavedSearch
({})"
,
guid
,
e
);
LOG
.
error
(
"getSavedSearch
ByName({}, {})"
,
userName
,
searchName
,
e
);
throw
e
;
throw
e
;
}
}
}
}
@Override
@Override
public
AtlasUserSavedSearch
getSavedSearch
(
String
userName
,
String
searchName
,
SavedSearchType
searchType
)
throws
AtlasBaseException
{
public
void
deleteSavedSearch
(
String
currentUser
,
String
guid
)
throws
AtlasBaseException
{
try
{
try
{
return
userProfileService
.
getSavedSearch
(
userName
,
searchName
,
searchType
);
AtlasUserSavedSearch
savedSearch
=
userProfileService
.
getSavedSearch
(
guid
);
checkSavedSearchOwnership
(
currentUser
,
savedSearch
);
userProfileService
.
deleteSavedSearch
(
guid
);
}
catch
(
AtlasBaseException
e
)
{
}
catch
(
AtlasBaseException
e
)
{
LOG
.
error
(
"
getSavedSearch({}, {})"
,
userName
,
searchName
,
e
);
LOG
.
error
(
"
deleteSavedSearch({})"
,
guid
,
e
);
throw
e
;
throw
e
;
}
}
}
}
@Override
@Override
public
void
deleteSavedSearch
(
String
guid
)
throws
AtlasBaseException
{
public
String
getDslQueryUsingTypeNameClassification
(
String
query
,
String
typeName
,
String
classification
)
{
userProfileService
.
deleteSavedSearch
(
guid
);
String
queryStr
=
query
==
null
?
""
:
query
;
if
(
org
.
apache
.
commons
.
lang3
.
StringUtils
.
isNoneEmpty
(
typeName
))
{
queryStr
=
escapeTypeName
(
typeName
)
+
" "
+
queryStr
;
}
if
(
org
.
apache
.
commons
.
lang3
.
StringUtils
.
isNoneEmpty
(
classification
))
{
// isa works with a type name only - like hive_column isa PII; it doesn't work with more complex query
if
(
StringUtils
.
isEmpty
(
query
))
{
queryStr
+=
(
" isa "
+
classification
);
}
}
return
queryStr
;
}
private
String
escapeTypeName
(
String
typeName
)
{
String
ret
;
if
(
StringUtils
.
startsWith
(
typeName
,
"`"
)
&&
StringUtils
.
endsWith
(
typeName
,
"`"
))
{
ret
=
typeName
;
}
else
{
ret
=
String
.
format
(
"`%s`"
,
typeName
);
}
return
ret
;
}
private
void
checkSavedSearchOwnership
(
String
claimedOwner
,
AtlasUserSavedSearch
savedSearch
)
throws
AtlasBaseException
{
// block attempt to delete another user's saved-search
if
(
savedSearch
!=
null
&&
!
StringUtils
.
equals
(
savedSearch
.
getOwnerName
(),
claimedOwner
))
{
throw
new
AtlasBaseException
(
AtlasErrorCode
.
BAD_REQUEST
,
"invalid data"
);
}
}
}
}
}
This diff is collapsed.
Click to expand it.
repository/src/main/java/org/apache/atlas/repository/ogm/AtlasSavedSearchDTO.java
View file @
7cce1c4a
...
@@ -95,6 +95,6 @@ public class AtlasSavedSearchDTO extends AbstractDataTransferObject<AtlasUserSav
...
@@ -95,6 +95,6 @@ public class AtlasSavedSearchDTO extends AbstractDataTransferObject<AtlasUserSav
}
}
private
String
getUniqueValue
(
AtlasUserSavedSearch
obj
)
{
private
String
getUniqueValue
(
AtlasUserSavedSearch
obj
)
{
return
String
.
format
(
"%s:%s
:%s"
,
obj
.
getOwnerName
(),
obj
.
getName
(),
obj
.
getSearchTyp
e
())
;
return
String
.
format
(
"%s:%s
"
,
obj
.
getOwnerName
(),
obj
.
getNam
e
())
;
}
}
}
}
This diff is collapsed.
Click to expand it.
repository/src/main/java/org/apache/atlas/repository/userprofile/UserProfileService.java
View file @
7cce1c4a
...
@@ -22,7 +22,6 @@ import org.apache.atlas.annotation.AtlasService;
...
@@ -22,7 +22,6 @@ import org.apache.atlas.annotation.AtlasService;
import
org.apache.atlas.exception.AtlasBaseException
;
import
org.apache.atlas.exception.AtlasBaseException
;
import
org.apache.atlas.model.profile.AtlasUserProfile
;
import
org.apache.atlas.model.profile.AtlasUserProfile
;
import
org.apache.atlas.model.profile.AtlasUserSavedSearch
;
import
org.apache.atlas.model.profile.AtlasUserSavedSearch
;
import
org.apache.atlas.model.profile.AtlasUserSavedSearch.SavedSearchType
;
import
org.apache.atlas.repository.ogm.DataAccess
;
import
org.apache.atlas.repository.ogm.DataAccess
;
import
org.apache.commons.lang.StringUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
...
@@ -70,7 +69,7 @@ public class UserProfileService {
...
@@ -70,7 +69,7 @@ public class UserProfileService {
userProfile
.
getSavedSearches
().
add
(
savedSearch
);
userProfile
.
getSavedSearches
().
add
(
savedSearch
);
userProfile
=
dataAccess
.
save
(
userProfile
);
userProfile
=
dataAccess
.
save
(
userProfile
);
for
(
AtlasUserSavedSearch
s
:
userProfile
.
getSavedSearches
())
{
for
(
AtlasUserSavedSearch
s
:
userProfile
.
getSavedSearches
())
{
if
(
s
.
getName
().
equals
(
savedSearch
.
getName
())
&&
s
.
getSearchType
().
equals
(
savedSearch
.
getSearchType
())
)
{
if
(
s
.
getName
().
equals
(
savedSearch
.
getName
()))
{
return
s
;
return
s
;
}
}
}
}
...
@@ -81,8 +80,7 @@ public class UserProfileService {
...
@@ -81,8 +80,7 @@ public class UserProfileService {
private
void
checkIfQueryAlreadyExists
(
AtlasUserSavedSearch
savedSearch
,
AtlasUserProfile
userProfile
)
throws
AtlasBaseException
{
private
void
checkIfQueryAlreadyExists
(
AtlasUserSavedSearch
savedSearch
,
AtlasUserProfile
userProfile
)
throws
AtlasBaseException
{
for
(
AtlasUserSavedSearch
exisingSearch
:
userProfile
.
getSavedSearches
())
{
for
(
AtlasUserSavedSearch
exisingSearch
:
userProfile
.
getSavedSearches
())
{
if
(
StringUtils
.
equals
(
exisingSearch
.
getOwnerName
(),
savedSearch
.
getOwnerName
())
&&
if
(
StringUtils
.
equals
(
exisingSearch
.
getOwnerName
(),
savedSearch
.
getOwnerName
())
&&
StringUtils
.
equals
(
exisingSearch
.
getName
(),
savedSearch
.
getName
())
&&
StringUtils
.
equals
(
exisingSearch
.
getName
(),
savedSearch
.
getName
()))
{
exisingSearch
.
getSearchType
().
equals
(
savedSearch
.
getSearchType
()))
{
throw
new
AtlasBaseException
(
AtlasErrorCode
.
SAVED_SEARCH_ALREADY_EXISTS
,
savedSearch
.
getName
(),
savedSearch
.
getOwnerName
());
throw
new
AtlasBaseException
(
AtlasErrorCode
.
SAVED_SEARCH_ALREADY_EXISTS
,
savedSearch
.
getName
(),
savedSearch
.
getOwnerName
());
}
}
}
}
...
@@ -129,8 +127,8 @@ public class UserProfileService {
...
@@ -129,8 +127,8 @@ public class UserProfileService {
return
(
profile
!=
null
)
?
profile
.
getSavedSearches
()
:
null
;
return
(
profile
!=
null
)
?
profile
.
getSavedSearches
()
:
null
;
}
}
public
AtlasUserSavedSearch
getSavedSearch
(
String
userName
,
String
searchName
,
SavedSearchType
searchType
)
throws
AtlasBaseException
{
public
AtlasUserSavedSearch
getSavedSearch
(
String
userName
,
String
searchName
)
throws
AtlasBaseException
{
AtlasUserSavedSearch
ss
=
new
AtlasUserSavedSearch
(
userName
,
searchName
,
searchType
);
AtlasUserSavedSearch
ss
=
new
AtlasUserSavedSearch
(
userName
,
searchName
);
return
dataAccess
.
load
(
ss
);
return
dataAccess
.
load
(
ss
);
}
}
...
...
This diff is collapsed.
Click to expand it.
repository/src/test/java/org/apache/atlas/repository/userprofile/UserProfileServiceTest.java
View file @
7cce1c4a
...
@@ -111,7 +111,7 @@ public class UserProfileServiceTest {
...
@@ -111,7 +111,7 @@ public class UserProfileServiceTest {
AtlasUserSavedSearch
actual
=
userProfileService
.
addSavedSearch
(
getDefaultSavedSearch
(
userName
,
queryName
,
expectedSearchParameter
));
AtlasUserSavedSearch
actual
=
userProfileService
.
addSavedSearch
(
getDefaultSavedSearch
(
userName
,
queryName
,
expectedSearchParameter
));
assertNotNull
(
actual
);
assertNotNull
(
actual
);
AtlasUserSavedSearch
savedSearch
=
userProfileService
.
getSavedSearch
(
userName
,
queryName
,
BASIC
);
AtlasUserSavedSearch
savedSearch
=
userProfileService
.
getSavedSearch
(
userName
,
queryName
);
assertNotNull
(
savedSearch
);
assertNotNull
(
savedSearch
);
assertEquals
(
savedSearch
.
getSearchParameters
(),
expectedSearchParameter
);
assertEquals
(
savedSearch
.
getSearchParameters
(),
expectedSearchParameter
);
}
}
...
@@ -156,7 +156,7 @@ public class UserProfileServiceTest {
...
@@ -156,7 +156,7 @@ public class UserProfileServiceTest {
saveQueries
(
userName
,
actualSearchParameter
);
saveQueries
(
userName
,
actualSearchParameter
);
for
(
int
i
=
0
;
i
<
max_searches
;
i
++)
{
for
(
int
i
=
0
;
i
<
max_searches
;
i
++)
{
AtlasUserSavedSearch
savedSearch
=
userProfileService
.
getSavedSearch
(
userName
,
getIndexBasedQueryName
(
i
)
,
BASIC
);
AtlasUserSavedSearch
savedSearch
=
userProfileService
.
getSavedSearch
(
userName
,
getIndexBasedQueryName
(
i
));
assertEquals
(
savedSearch
.
getName
(),
getIndexBasedQueryName
(
i
));
assertEquals
(
savedSearch
.
getName
(),
getIndexBasedQueryName
(
i
));
assertEquals
(
savedSearch
.
getSearchParameters
(),
actualSearchParameter
);
assertEquals
(
savedSearch
.
getSearchParameters
(),
actualSearchParameter
);
}
}
...
@@ -194,7 +194,7 @@ public class UserProfileServiceTest {
...
@@ -194,7 +194,7 @@ public class UserProfileServiceTest {
public
void
updateSearch
()
throws
AtlasBaseException
{
public
void
updateSearch
()
throws
AtlasBaseException
{
final
String
queryName
=
getIndexBasedQueryName
(
0
);
final
String
queryName
=
getIndexBasedQueryName
(
0
);
String
userName
=
getIndexBasedUserName
(
0
);
String
userName
=
getIndexBasedUserName
(
0
);
AtlasUserSavedSearch
expected
=
userProfileService
.
getSavedSearch
(
userName
,
queryName
,
BASIC
);
AtlasUserSavedSearch
expected
=
userProfileService
.
getSavedSearch
(
userName
,
queryName
);
assertNotNull
(
expected
);
assertNotNull
(
expected
);
SearchParameters
sp
=
expected
.
getSearchParameters
();
SearchParameters
sp
=
expected
.
getSearchParameters
();
...
@@ -212,11 +212,11 @@ public class UserProfileServiceTest {
...
@@ -212,11 +212,11 @@ public class UserProfileServiceTest {
final
String
queryName
=
getIndexBasedQueryName
(
1
);
final
String
queryName
=
getIndexBasedQueryName
(
1
);
String
userName
=
getIndexBasedUserName
(
0
);
String
userName
=
getIndexBasedUserName
(
0
);
AtlasUserSavedSearch
expected
=
userProfileService
.
getSavedSearch
(
userName
,
queryName
,
BASIC
);
AtlasUserSavedSearch
expected
=
userProfileService
.
getSavedSearch
(
userName
,
queryName
);
assertNotNull
(
expected
);
assertNotNull
(
expected
);
userProfileService
.
deleteSavedSearch
(
expected
.
getGuid
());
userProfileService
.
deleteSavedSearch
(
expected
.
getGuid
());
userProfileService
.
getSavedSearch
(
userName
,
queryName
,
BASIC
);
userProfileService
.
getSavedSearch
(
userName
,
queryName
);
}
}
@Test
(
dependsOnMethods
=
{
"createsNewProfile"
,
"savesMultipleQueriesForUser"
,
"verifyQueryNameListForUser"
})
@Test
(
dependsOnMethods
=
{
"createsNewProfile"
,
"savesMultipleQueriesForUser"
,
"verifyQueryNameListForUser"
})
...
...
This diff is collapsed.
Click to expand it.
webapp/src/main/java/org/apache/atlas/web/rest/DiscoveryREST.java
View file @
7cce1c4a
...
@@ -24,7 +24,6 @@ import org.apache.atlas.exception.AtlasBaseException;
...
@@ -24,7 +24,6 @@ import org.apache.atlas.exception.AtlasBaseException;
import
org.apache.atlas.model.discovery.AtlasSearchResult
;
import
org.apache.atlas.model.discovery.AtlasSearchResult
;
import
org.apache.atlas.model.discovery.SearchParameters
;
import
org.apache.atlas.model.discovery.SearchParameters
;
import
org.apache.atlas.model.profile.AtlasUserSavedSearch
;
import
org.apache.atlas.model.profile.AtlasUserSavedSearch
;
import
org.apache.atlas.model.profile.AtlasUserSavedSearch.SavedSearchType
;
import
org.apache.atlas.utils.AtlasPerfTracer
;
import
org.apache.atlas.utils.AtlasPerfTracer
;
import
org.apache.atlas.web.util.Servlets
;
import
org.apache.atlas.web.util.Servlets
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.collections.CollectionUtils
;
...
@@ -98,18 +97,7 @@ public class DiscoveryREST {
...
@@ -98,18 +97,7 @@ public class DiscoveryREST {
+
","
+
classification
+
","
+
limit
+
","
+
offset
+
")"
);
+
","
+
classification
+
","
+
limit
+
","
+
offset
+
")"
);
}
}
String
queryStr
=
query
==
null
?
""
:
query
;
String
queryStr
=
atlasDiscoveryService
.
getDslQueryUsingTypeNameClassification
(
query
,
typeName
,
classification
);
if
(
StringUtils
.
isNoneEmpty
(
typeName
))
{
queryStr
=
escapeTypeName
(
typeName
)
+
" "
+
queryStr
;
}
if
(
StringUtils
.
isNoneEmpty
(
classification
))
{
// isa works with a type name only - like hive_column isa PII; it doesn't work with more complex query
if
(
StringUtils
.
isEmpty
(
query
))
{
queryStr
+=
(
" isa "
+
classification
);
}
}
return
atlasDiscoveryService
.
searchUsingDslQuery
(
queryStr
,
limit
,
offset
);
return
atlasDiscoveryService
.
searchUsingDslQuery
(
queryStr
,
limit
,
offset
);
}
finally
{
}
finally
{
...
@@ -117,6 +105,8 @@ public class DiscoveryREST {
...
@@ -117,6 +105,8 @@ public class DiscoveryREST {
}
}
}
}
/**
/**
* Retrieve data for the specified fulltext query
* Retrieve data for the specified fulltext query
*
*
...
@@ -332,17 +322,15 @@ public class DiscoveryREST {
...
@@ -332,17 +322,15 @@ public class DiscoveryREST {
@Path
(
"saved"
)
@Path
(
"saved"
)
@Consumes
(
Servlets
.
JSON_MEDIA_TYPE
)
@Consumes
(
Servlets
.
JSON_MEDIA_TYPE
)
@Produces
(
Servlets
.
JSON_MEDIA_TYPE
)
@Produces
(
Servlets
.
JSON_MEDIA_TYPE
)
public
AtlasUserSavedSearch
createSavedSearch
(
AtlasUserSavedSearch
savedSearch
)
throws
AtlasBaseException
,
IOException
{
public
AtlasUserSavedSearch
addSavedSearch
(
AtlasUserSavedSearch
savedSearch
)
throws
AtlasBaseException
,
IOException
{
savedSearch
.
setOwnerName
(
Servlets
.
getUserName
(
httpServletRequest
));
AtlasPerfTracer
perf
=
null
;
AtlasPerfTracer
perf
=
null
;
try
{
try
{
if
(
AtlasPerfTracer
.
isPerfTraceEnabled
(
PERF_LOG
))
{
if
(
AtlasPerfTracer
.
isPerfTraceEnabled
(
PERF_LOG
))
{
perf
=
AtlasPerfTracer
.
getPerfTracer
(
PERF_LOG
,
"DiscoveryREST.
createSavedSearch(own
erName="
+
savedSearch
.
getOwnerName
()
+
", name="
+
savedSearch
.
getName
()
+
", searchType="
+
savedSearch
.
getSearchType
()
+
")"
);
perf
=
AtlasPerfTracer
.
getPerfTracer
(
PERF_LOG
,
"DiscoveryREST.
addSavedSearch(us
erName="
+
savedSearch
.
getOwnerName
()
+
", name="
+
savedSearch
.
getName
()
+
", searchType="
+
savedSearch
.
getSearchType
()
+
")"
);
}
}
return
atlasDiscoveryService
.
addSavedSearch
(
savedSearch
);
return
atlasDiscoveryService
.
addSavedSearch
(
Servlets
.
getUserName
(
httpServletRequest
),
savedSearch
);
}
finally
{
}
finally
{
AtlasPerfTracer
.
log
(
perf
);
AtlasPerfTracer
.
log
(
perf
);
}
}
...
@@ -359,16 +347,14 @@ public class DiscoveryREST {
...
@@ -359,16 +347,14 @@ public class DiscoveryREST {
@Consumes
(
Servlets
.
JSON_MEDIA_TYPE
)
@Consumes
(
Servlets
.
JSON_MEDIA_TYPE
)
@Produces
(
Servlets
.
JSON_MEDIA_TYPE
)
@Produces
(
Servlets
.
JSON_MEDIA_TYPE
)
public
AtlasUserSavedSearch
updateSavedSearch
(
AtlasUserSavedSearch
savedSearch
)
throws
AtlasBaseException
{
public
AtlasUserSavedSearch
updateSavedSearch
(
AtlasUserSavedSearch
savedSearch
)
throws
AtlasBaseException
{
savedSearch
.
setOwnerName
(
Servlets
.
getUserName
(
httpServletRequest
));
AtlasPerfTracer
perf
=
null
;
AtlasPerfTracer
perf
=
null
;
try
{
try
{
if
(
AtlasPerfTracer
.
isPerfTraceEnabled
(
PERF_LOG
))
{
if
(
AtlasPerfTracer
.
isPerfTraceEnabled
(
PERF_LOG
))
{
perf
=
AtlasPerfTracer
.
getPerfTracer
(
PERF_LOG
,
"DiscoveryREST.updateSavedSearch(
own
erName="
+
savedSearch
.
getOwnerName
()
+
", name="
+
savedSearch
.
getName
()
+
", searchType="
+
savedSearch
.
getSearchType
()
+
")"
);
perf
=
AtlasPerfTracer
.
getPerfTracer
(
PERF_LOG
,
"DiscoveryREST.updateSavedSearch(
us
erName="
+
savedSearch
.
getOwnerName
()
+
", name="
+
savedSearch
.
getName
()
+
", searchType="
+
savedSearch
.
getSearchType
()
+
")"
);
}
}
return
atlasDiscoveryService
.
updateSavedSearch
(
savedSearch
);
return
atlasDiscoveryService
.
updateSavedSearch
(
Servlets
.
getUserName
(
httpServletRequest
),
savedSearch
);
}
finally
{
}
finally
{
AtlasPerfTracer
.
log
(
perf
);
AtlasPerfTracer
.
log
(
perf
);
}
}
...
@@ -376,34 +362,34 @@ public class DiscoveryREST {
...
@@ -376,34 +362,34 @@ public class DiscoveryREST {
/**
/**
*
*
* @param userName User for whom the search is retrieved
* @param searchName Name of the saved search
* @param searchName Name of the saved search
* @param userName User for whom the search is retrieved
* @return
* @return
* @throws AtlasBaseException
* @throws AtlasBaseException
*/
*/
@GET
@GET
@Path
(
"saved/{
type}/{
name}"
)
@Path
(
"saved/{name}"
)
@Consumes
(
Servlets
.
JSON_MEDIA_TYPE
)
@Consumes
(
Servlets
.
JSON_MEDIA_TYPE
)
@Produces
(
Servlets
.
JSON_MEDIA_TYPE
)
@Produces
(
Servlets
.
JSON_MEDIA_TYPE
)
public
AtlasUserSavedSearch
getSavedSearch
(
@PathParam
(
"type"
)
String
searchType
,
public
AtlasUserSavedSearch
getSavedSearch
(
@PathParam
(
"name"
)
String
searchName
,
@PathParam
(
"name"
)
String
searchName
,
@QueryParam
(
"user"
)
String
userName
)
throws
AtlasBaseException
{
@QueryParam
(
"user"
)
String
userName
)
throws
AtlasBaseException
{
userName
=
StringUtils
.
isBlank
(
userName
)
?
Servlets
.
getUserName
(
httpServletRequest
)
:
userName
;
AtlasPerfTracer
perf
=
null
;
AtlasPerfTracer
perf
=
null
;
try
{
try
{
if
(
AtlasPerfTracer
.
isPerfTraceEnabled
(
PERF_LOG
))
{
if
(
AtlasPerfTracer
.
isPerfTraceEnabled
(
PERF_LOG
))
{
perf
=
AtlasPerfTracer
.
getPerfTracer
(
PERF_LOG
,
"DiscoveryREST.getSavedSearch(user
="
+
userName
+
", name="
+
searchName
+
", type="
+
searchTyp
e
+
")"
);
perf
=
AtlasPerfTracer
.
getPerfTracer
(
PERF_LOG
,
"DiscoveryREST.getSavedSearch(user
Name="
+
userName
+
", name="
+
searchNam
e
+
")"
);
}
}
return
atlasDiscoveryService
.
getSavedSearch
(
userName
,
searchName
,
SavedSearchType
.
to
(
searchType
)
);
return
atlasDiscoveryService
.
getSavedSearch
ByName
(
Servlets
.
getUserName
(
httpServletRequest
),
userName
,
searchName
);
}
finally
{
}
finally
{
AtlasPerfTracer
.
log
(
perf
);
AtlasPerfTracer
.
log
(
perf
);
}
}
}
}
/**
/**
*
* @param userName User for whom the search is retrieved
* @throws AtlasBaseException
* @return list of all saved searches for given user
* @return list of all saved searches for given user
*/
*/
@GET
@GET
...
@@ -411,16 +397,14 @@ public class DiscoveryREST {
...
@@ -411,16 +397,14 @@ public class DiscoveryREST {
@Consumes
(
Servlets
.
JSON_MEDIA_TYPE
)
@Consumes
(
Servlets
.
JSON_MEDIA_TYPE
)
@Produces
(
Servlets
.
JSON_MEDIA_TYPE
)
@Produces
(
Servlets
.
JSON_MEDIA_TYPE
)
public
List
<
AtlasUserSavedSearch
>
getSavedSearches
(
@QueryParam
(
"user"
)
String
userName
)
throws
AtlasBaseException
{
public
List
<
AtlasUserSavedSearch
>
getSavedSearches
(
@QueryParam
(
"user"
)
String
userName
)
throws
AtlasBaseException
{
userName
=
StringUtils
.
isBlank
(
userName
)
?
Servlets
.
getUserName
(
httpServletRequest
)
:
userName
;
AtlasPerfTracer
perf
=
null
;
AtlasPerfTracer
perf
=
null
;
try
{
try
{
if
(
AtlasPerfTracer
.
isPerfTraceEnabled
(
PERF_LOG
))
{
if
(
AtlasPerfTracer
.
isPerfTraceEnabled
(
PERF_LOG
))
{
perf
=
AtlasPerfTracer
.
getPerfTracer
(
PERF_LOG
,
"DiscoveryREST.getSavedSearches(user="
+
userName
+
")"
);
perf
=
AtlasPerfTracer
.
getPerfTracer
(
PERF_LOG
,
"DiscoveryREST.getSavedSearches(user
Name
="
+
userName
+
")"
);
}
}
return
atlasDiscoveryService
.
getSavedSearches
(
userName
);
return
atlasDiscoveryService
.
getSavedSearches
(
Servlets
.
getUserName
(
httpServletRequest
),
userName
);
}
finally
{
}
finally
{
AtlasPerfTracer
.
log
(
perf
);
AtlasPerfTracer
.
log
(
perf
);
}
}
...
@@ -441,34 +425,84 @@ public class DiscoveryREST {
...
@@ -441,34 +425,84 @@ public class DiscoveryREST {
perf
=
AtlasPerfTracer
.
getPerfTracer
(
PERF_LOG
,
"DiscoveryREST.deleteSavedSearch(guid="
+
guid
+
")"
);
perf
=
AtlasPerfTracer
.
getPerfTracer
(
PERF_LOG
,
"DiscoveryREST.deleteSavedSearch(guid="
+
guid
+
")"
);
}
}
AtlasUserSavedSearch
savedSearch
=
atlasDiscoveryService
.
getSavedSearch
(
guid
);
atlasDiscoveryService
.
deleteSavedSearch
(
Servlets
.
getUserName
(
httpServletRequest
),
guid
);
}
finally
{
AtlasPerfTracer
.
log
(
perf
);
}
}
/**
* Attribute based search for entities satisfying the search parameters
*
* @param searchName name of saved-search
* @param userName saved-search owner
* @return Atlas search result
* @throws AtlasBaseException
*/
@Path
(
"saved/execute/{name}"
)
@GET
@Consumes
(
Servlets
.
JSON_MEDIA_TYPE
)
@Produces
(
Servlets
.
JSON_MEDIA_TYPE
)
public
AtlasSearchResult
executeSavedSearchByName
(
@PathParam
(
"name"
)
String
searchName
,
@QueryParam
(
"user"
)
String
userName
)
throws
AtlasBaseException
{
AtlasPerfTracer
perf
=
null
;
// block attempt to delete another user's saved-search
try
{
if
(!
StringUtils
.
equals
(
savedSearch
.
getOwnerName
(),
Servlets
.
getUserName
(
httpServletRequest
)))
{
if
(
AtlasPerfTracer
.
isPerfTraceEnabled
(
PERF_LOG
))
{
throw
new
AtlasBaseException
(
AtlasErrorCode
.
BAD_REQUEST
,
"invalid data"
);
perf
=
AtlasPerfTracer
.
getPerfTracer
(
PERF_LOG
,
"DiscoveryREST.executeSavedSearchByName(userName="
+
userName
+
", "
+
"name="
+
searchName
+
")"
);
}
}
atlasDiscoveryService
.
deleteSavedSearch
(
guid
);
AtlasUserSavedSearch
savedSearch
=
atlasDiscoveryService
.
getSavedSearchByName
(
Servlets
.
getUserName
(
httpServletRequest
),
userName
,
searchName
);
return
executeSavedSearch
(
savedSearch
);
}
finally
{
}
finally
{
AtlasPerfTracer
.
log
(
perf
);
AtlasPerfTracer
.
log
(
perf
);
}
}
}
}
/**
* Attribute based search for entities satisfying the search parameters
*
* @param searchGuid Guid identifying saved search
* @return Atlas search result
* @throws AtlasBaseException
*/
@Path
(
"saved/execute/guid/{guid}"
)
@GET
@Consumes
(
Servlets
.
JSON_MEDIA_TYPE
)
@Produces
(
Servlets
.
JSON_MEDIA_TYPE
)
public
AtlasSearchResult
executeSavedSearchByGuid
(
@PathParam
(
"guid"
)
String
searchGuid
)
throws
AtlasBaseException
{
AtlasPerfTracer
perf
=
null
;
try
{
if
(
AtlasPerfTracer
.
isPerfTraceEnabled
(
PERF_LOG
))
{
perf
=
AtlasPerfTracer
.
getPerfTracer
(
PERF_LOG
,
"DiscoveryREST.executeSavedSearchByGuid("
+
searchGuid
+
")"
);
}
AtlasUserSavedSearch
savedSearch
=
atlasDiscoveryService
.
getSavedSearchByGuid
(
Servlets
.
getUserName
(
httpServletRequest
),
searchGuid
);
return
executeSavedSearch
(
savedSearch
);
}
finally
{
AtlasPerfTracer
.
log
(
perf
);
}
}
private
boolean
isEmpty
(
SearchParameters
.
FilterCriteria
filterCriteria
)
{
private
boolean
isEmpty
(
SearchParameters
.
FilterCriteria
filterCriteria
)
{
return
filterCriteria
==
null
||
return
filterCriteria
==
null
||
(
StringUtils
.
isEmpty
(
filterCriteria
.
getAttributeName
())
&&
CollectionUtils
.
isEmpty
(
filterCriteria
.
getCriterion
()));
(
StringUtils
.
isEmpty
(
filterCriteria
.
getAttributeName
())
&&
CollectionUtils
.
isEmpty
(
filterCriteria
.
getCriterion
()));
}
}
private
String
escapeTypeName
(
String
typeName
)
{
private
AtlasSearchResult
executeSavedSearch
(
AtlasUserSavedSearch
savedSearch
)
throws
AtlasBaseException
{
String
ret
;
SearchParameters
sp
=
savedSearch
.
getSearchParameters
();
if
(
savedSearch
.
getSearchType
()
==
AtlasUserSavedSearch
.
SavedSearchType
.
ADVANCED
)
{
String
dslQuery
=
atlasDiscoveryService
.
getDslQueryUsingTypeNameClassification
(
sp
.
getQuery
(),
sp
.
getTypeName
(),
sp
.
getClassification
());
if
(
StringUtils
.
startsWith
(
typeName
,
"`"
)
&&
StringUtils
.
endsWith
(
typeName
,
"`"
))
{
return
atlasDiscoveryService
.
searchUsingDslQuery
(
dslQuery
,
sp
.
getLimit
(),
sp
.
getOffset
());
ret
=
typeName
;
}
else
{
}
else
{
ret
=
String
.
format
(
"`%s`"
,
typeName
);
ret
urn
atlasDiscoveryService
.
searchWithParameters
(
sp
);
}
}
return
ret
;
}
}
}
}
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment