@ -36,7 +36,6 @@ import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service ;
import org.springframework.util.MimeType ;
import org.springframework.web.client.HttpClientErrorException ;
import org.springframework.web.client.RestClientException ;
import org.springframework.web.client.RestTemplate ;
import org.springframework.web.util.UriComponents ;
import org.springframework.web.util.UriComponentsBuilder ;
@ -178,17 +177,11 @@ public class RepositoryServiceImpl implements RepositoryService {
UriComponents uriComponents = searchDatasource ( Integer . toString ( Math . abs ( page ) ) , Integer . toString ( Math . abs ( size ) ) ) ;
RequestFilter requestFilter = new RequestFilter ( ) ;
try {
for ( String repoId : ids ) {
requestFilter . setId ( repoId ) ;
String rs = restTemplate . postForObject ( uriComponents . toUri ( ) , requestFilter , String . class ) ;
for ( String repoId : ids ) {
requestFilter . setId ( repoId ) ;
String rs = restTemplate . postForObject ( uriComponents . toUri ( ) , requestFilter , String . class ) ;
repos . addAll ( Converter . jsonToRepositoryList ( new JSONObject ( rs ) ) ) ;
}
} catch ( JSONException e ) {
LOGGER . debug ( "Exception on getRepositoriesOfUser" , e ) ;
emailUtils . reportException ( e ) ;
throw e ;
repos . addAll ( Converter . jsonToRepositoryList ( new JSONObject ( rs ) ) ) ;
}
for ( Repository r : repos )
@ -264,23 +257,20 @@ public class RepositoryServiceImpl implements RepositoryService {
requestFilter . setCountry ( country ) ;
requestFilter . setCollectedfrom ( filterKey ) ;
try {
String rs = restTemplate . postForObject ( uriComponents . toUri ( ) , requestFilter , String . class ) ;
JSONArray jsonArray = ( JSONArray ) new JSONObject ( rs ) . get ( "datasourceInfo" ) ;
while ( jsonArray . length ( ) > 0 ) {
resultSet . addAll ( mapper . readValue ( String . valueOf ( jsonArray ) ,
mapper . getTypeFactory ( ) . constructCollectionType ( List . class , RepositorySnippet . class ) ) ) ;
page + = 1 ;
uriComponents = searchSnipperDatasource ( String . valueOf ( page ) , String . valueOf ( size ) ) ;
rs = restTemplate . postForObject ( uriComponents . toUri ( ) , requestFilter , String . class ) ;
jsonArray = ( JSONArray ) new JSONObject ( rs ) . get ( "datasourceInfo" ) ;
}
return resultSet ;
} catch ( Exception e ) {
LOGGER . debug ( "Exception on getRepositoriesByCountry" , e ) ;
emailUtils . reportException ( e ) ;
throw e ;
String rs = restTemplate . postForObject ( uriComponents . toUri ( ) , requestFilter , String . class ) ;
JSONArray jsonArray = ( JSONArray ) new JSONObject ( rs ) . get ( "datasourceInfo" ) ;
while ( jsonArray . length ( ) > 0 ) {
LOGGER . debug ( "json: " + jsonArray ) ;
resultSet . addAll ( mapper . readValue ( String . valueOf ( jsonArray ) ,
mapper . getTypeFactory ( ) . constructCollectionType ( List . class , RepositorySnippet . class ) ) ) ;
page + = 1 ;
uriComponents = searchSnipperDatasource ( String . valueOf ( page ) , String . valueOf ( size ) ) ;
rs = restTemplate . postForObject ( uriComponents . toUri ( ) , requestFilter , String . class ) ;
jsonArray = ( JSONArray ) new JSONObject ( rs ) . get ( "datasourceInfo" ) ;
}
return resultSet ;
}
public List < RepositorySnippet > searchRegisteredRepositories ( String country , String typology , String englishName ,
@ -383,21 +373,14 @@ public class RepositoryServiceImpl implements RepositoryService {
RequestFilter requestFilter = new RequestFilter ( ) ;
requestFilter . setId ( id ) ;
try {
String rs = restTemplate . postForObject ( uriComponents . toUri ( ) , requestFilter , String . class ) ;
JSONArray jsonArray = ( JSONArray ) new JSONObject ( rs ) . get ( "datasourceInfo" ) ;
if ( jsonArray . length ( ) = = 0 )
throw new ResourceNotFoundException ( ) ;
String rs = restTemplate . postForObject ( uriComponents . toUri ( ) , requestFilter , String . class ) ;
JSONArray jsonArray = ( JSONArray ) new JSONObject ( rs ) . get ( "datasourceInfo" ) ;
repo = Converter . jsonToRepositorySnippetObject ( jsonArray . getJSONObject ( 0 ) ) ;
return repo ;
} catch ( JSONException e ) {
LOGGER . debug ( "Exception on getRepositoryById" , e ) ;
emailUtils . reportException ( e ) ;
throw e ;
}
if ( jsonArray . length ( ) = = 0 )
throw new ResourceNotFoundException ( ) ;
repo = Converter . jsonToRepositorySnippetObject ( jsonArray . getJSONObject ( 0 ) ) ;
return repo ;
}
@Override
@ -409,21 +392,14 @@ public class RepositoryServiceImpl implements RepositoryService {
RequestFilter requestFilter = new RequestFilter ( ) ;
requestFilter . setId ( id ) ;
try {
String rs = restTemplate . postForObject ( uriComponents . toUri ( ) , requestFilter , String . class ) ;
JSONArray jsonArray = ( JSONArray ) new JSONObject ( rs ) . get ( "datasourceInfo" ) ;
String rs = restTemplate . postForObject ( uriComponents . toUri ( ) , requestFilter , String . class ) ;
JSONArray jsonArray = ( JSONArray ) new JSONObject ( rs ) . get ( "datasourceInfo" ) ;
if ( jsonArray . length ( ) = = 0 )
throw new ResourceNotFoundException ( ) ;
repo = Converter . jsonToRepositoryObject ( jsonArray . getJSONObject ( 0 ) ) ;
return updateRepositoryInfo ( repo ) ;
} catch ( JSONException e ) {
LOGGER . debug ( "Exception on getRepositoryById" , e ) ;
emailUtils . reportException ( e ) ;
throw e ;
}
if ( jsonArray . length ( ) = = 0 )
throw new ResourceNotFoundException ( ) ;
repo = Converter . jsonToRepositoryObject ( jsonArray . getJSONObject ( 0 ) ) ;
return updateRepositoryInfo ( repo ) ;
}
@ -437,31 +413,25 @@ public class RepositoryServiceImpl implements RepositoryService {
List < AggregationDetails > aggregationHistory = new ArrayList < > ( ) ;
try {
long start = System . currentTimeMillis ( ) ;
String rs = restTemplate . postForObject ( uriComponents . toUri ( ) , requestFilter , String . class ) ;
long end = System . currentTimeMillis ( ) ;
System . out . println ( "Aggregations request through rest template took " + ( end - start ) + "ms" ) ;
JSONObject repository = new JSONObject ( rs ) ;
if ( repository . getJSONArray ( "datasourceInfo" ) . length ( ) = = 0 )
return aggregationHistory ;
start = System . currentTimeMillis ( ) ;
aggregationHistory . addAll ( Converter . getAggregationHistoryFromJson ( repository . getJSONArray ( "datasourceInfo" ) . getJSONObject ( 0 ) ) ) ;
end = System . currentTimeMillis ( ) ;
System . out . println ( "Getting aggregations history from json " + ( end - start ) + "ms" ) ;
return aggregationHistory . size ( ) = = 0 ? aggregationHistory : aggregationHistory . stream ( )
. sorted ( Comparator . comparing ( AggregationDetails : : getDate ) . reversed ( ) )
. limit ( size )
. collect ( Collectors . toList ( ) ) ;
} catch ( JSONException e ) {
LOGGER . debug ( "Exception on getRepositoryAggregations" , e ) ;
emailUtils . reportException ( e ) ;
throw e ;
}
long start = System . currentTimeMillis ( ) ;
String rs = restTemplate . postForObject ( uriComponents . toUri ( ) , requestFilter , String . class ) ;
long end = System . currentTimeMillis ( ) ;
System . out . println ( "Aggregations request through rest template took " + ( end - start ) + "ms" ) ;
JSONObject repository = new JSONObject ( rs ) ;
if ( repository . getJSONArray ( "datasourceInfo" ) . length ( ) = = 0 )
return aggregationHistory ;
start = System . currentTimeMillis ( ) ;
aggregationHistory . addAll ( Converter . getAggregationHistoryFromJson ( repository . getJSONArray ( "datasourceInfo" ) . getJSONObject ( 0 ) ) ) ;
end = System . currentTimeMillis ( ) ;
System . out . println ( "Getting aggregations history from json " + ( end - start ) + "ms" ) ;
return aggregationHistory . size ( ) = = 0 ? aggregationHistory : aggregationHistory . stream ( )
. sorted ( Comparator . comparing ( AggregationDetails : : getDate ) . reversed ( ) )
. limit ( size )
. collect ( Collectors . toList ( ) ) ;
}
@ -474,21 +444,15 @@ public class RepositoryServiceImpl implements RepositoryService {
List < AggregationDetails > aggregationHistory = new ArrayList < > ( ) ;
Map < String , List < AggregationDetails > > aggregationByYear = new HashMap < > ( ) ;
try {
String rs = restTemplate . postForObject ( uriComponents . toUri ( ) , requestFilter , String . class ) ;
JSONObject repository = new JSONObject ( rs ) ;
if ( repository . getJSONArray ( "datasourceInfo" ) . length ( ) = = 0 )
return aggregationByYear ;
String rs = restTemplate . postForObject ( uriComponents . toUri ( ) , requestFilter , String . class ) ;
JSONObject repository = new JSONObject ( rs ) ;
aggregationHistory . addAll ( Converter . getAggregationHistoryFromJson ( repository . getJSONArray ( "datasourceInfo" ) . getJSONObject( 0 ) ) ) ;
return aggregation History. size ( ) = = 0 ? aggregation ByYear : createYearMap ( aggregationHistory ) ;
if ( repository . getJSONArray ( "datasourceInfo" ) . length( ) = = 0 )
return aggregation ByYear;
} catch ( JSONException e ) {
LOGGER . debug ( "Exception on getRepositoryAggregations" , e ) ;
emailUtils . reportException ( e ) ;
throw e ;
}
aggregationHistory . addAll ( Converter . getAggregationHistoryFromJson ( repository . getJSONArray ( "datasourceInfo" ) . getJSONObject ( 0 ) ) ) ;
return aggregationHistory . size ( ) = = 0 ? aggregationByYear : createYearMap ( aggregationHistory ) ;
}
private Map < String , List < AggregationDetails > > createYearMap ( List < AggregationDetails > aggregationHistory ) {
@ -512,17 +476,11 @@ public class RepositoryServiceImpl implements RepositoryService {
RequestFilter requestFilter = new RequestFilter ( ) ;
requestFilter . setOfficialname ( name ) ;
try {
String rs = restTemplate . postForObject ( uriComponents . toUri ( ) , requestFilter , String . class ) ;
List < Repository > repos = Converter . jsonToRepositoryList ( new JSONObject ( rs ) ) ;
for ( Repository r : repos )
updateRepositoryInfo ( r ) ;
return repos ;
} catch ( Exception e ) {
LOGGER . debug ( "Exception on getRepositoriesByName" , e ) ;
emailUtils . reportException ( e ) ;
throw e ;
}
String rs = restTemplate . postForObject ( uriComponents . toUri ( ) , requestFilter , String . class ) ;
List < Repository > repos = Converter . jsonToRepositoryList ( new JSONObject ( rs ) ) ;
for ( Repository r : repos )
updateRepositoryInfo ( r ) ;
return repos ;
}
@ -534,20 +492,13 @@ public class RepositoryServiceImpl implements RepositoryService {
. path ( "/{id}" )
. build ( ) . expand ( id ) . encode ( ) ;
try {
String rs = restTemplate . getForObject ( uriComponents . toUri ( ) , String . class ) ;
return Converter . jsonToRepositoryInterfaceList ( new JSONObject ( rs ) ) ;
} catch ( Exception e ) {
LOGGER . debug ( "Exception on getRepositoryInterface" , e ) ;
emailUtils . reportException ( e ) ;
throw e ;
}
String rs = restTemplate . getForObject ( uriComponents . toUri ( ) , String . class ) ;
return Converter . jsonToRepositoryInterfaceList ( new JSONObject ( rs ) ) ;
}
@Override
public Repository addRepository ( String datatype ,
Repository repository ) throws Exception {
public Repository addRepository ( String datatype , Repository repository ) throws Exception {
LOGGER . debug ( "storing " + datatype + " repository with id: " + repository . getId ( ) ) ;
@ -611,27 +562,23 @@ public class RepositoryServiceImpl implements RepositoryService {
. build ( )
. encode ( ) ;
try {
String json_repository = Converter . repositoryObjectToJson ( repository ) ;
LOGGER . debug ( "JSON to add(update) -> " + json_repository ) ;
String json_repository = Converter . repositoryObjectToJson ( repository ) ;
LOGGER . debug ( "JSON to add(update) -> " + json_repository ) ;
HttpEntity < String > httpEntity = new HttpEntity < String > ( json_repository , httpHeaders ) ;
ResponseEntity responseEntity = restTemplate . exchange ( uriComponents . toUri ( ) , HttpMethod . POST , httpEntity , ResponseEntity . class ) ;
HttpEntity < String > httpEntity = new HttpEntity < String > ( json_repository , httpHeaders ) ;
ResponseEntity responseEntity = restTemplate . exchange ( uriComponents . toUri ( ) , HttpMethod . POST , httpEntity , ResponseEntity . class ) ;
if ( responseEntity . getStatusCode ( ) . equals ( HttpStatus . OK ) ) {
if ( responseEntity . getStatusCode ( ) . equals ( HttpStatus . OK ) ) {
try {
emailUtils . sendUserRegistrationEmail ( repository , authentication ) ;
emailUtils . sendAdminRegistrationEmail ( repository , authentication ) ;
} else
LOGGER . debug ( responseEntity . getBody ( ) . toString ( ) ) ;
return repository ;
} catch ( Exception e ) {
LOGGER . debug ( "Exception on updateRepository" , e ) ;
emailUtils . reportException ( e ) ;
throw e ;
}
} catch ( Exception e ) {
LOGGER . error ( "Error sending email" , e ) ;
}
} else
LOGGER . error ( "Error storing repository: " + responseEntity . getBody ( ) . toString ( ) ) ;
return repository ;
}
@Override
@ -641,27 +588,25 @@ public class RepositoryServiceImpl implements RepositoryService {
. build ( )
. encode ( ) ;
try {
String json_repository = Converter . repositoryObjectToJson ( repository ) ;
String json_repository = Converter . repositoryObjectToJson ( repository ) ;
LOGGER . debug ( "JSON to update -> " + json_repository ) ;
LOGGER . debug ( "JSON to update -> " + json_repository ) ;
HttpEntity < String > httpEntity = new HttpEntity < String > ( json_repository , httpHeaders ) ;
ResponseEntity responseEntity = restTemplate . exchange ( uriComponents . toUri ( ) , HttpMethod . POST , httpEntity
, ResponseEntity . class ) ;
HttpEntity < String > httpEntity = new HttpEntity < String > ( json_repository , httpHeaders ) ;
ResponseEntity responseEntity = restTemplate . exchange ( uriComponents . toUri ( ) , HttpMethod . POST , httpEntity
, ResponseEntity . class ) ;
if ( responseEntity . getStatusCode ( ) . equals ( HttpStatus . OK ) ) {
if ( responseEntity . getStatusCode ( ) . equals ( HttpStatus . OK ) ) {
try {
emailUtils . sendUserUpdateRepositoryInfoEmail ( repository , authentication ) ;
emailUtils . sendAdminUpdateRepositoryInfoEmail ( repository , authentication ) ;
} else
LOGGER . debug ( responseEntity . getBody ( ) . toString ( ) ) ;
} catch ( Exception e ) {
LOGGER . error ( "Error sending emails: " + e ) ;
}
} else
LOGGER . debug ( responseEntity . getBody ( ) . toString ( ) ) ;
return repository ;
} catch ( Exception e ) {
LOGGER . debug ( "Exception on updateRepository" , e ) ;
emailUtils . reportException ( e ) ;
throw e ;
}
return repository ;
}
private void storeRepository ( Repository repository , Authentication authentication ) throws Exception {
@ -681,8 +626,12 @@ public class RepositoryServiceImpl implements RepositoryService {
ResponseEntity responseEntity = restTemplate . exchange ( uriComponents . toUri ( ) , HttpMethod . POST , httpEntity , ResponseEntity . class ) ;
if ( responseEntity . getStatusCode ( ) . equals ( HttpStatus . OK ) ) {
emailUtils . sendUserRegistrationEmail ( repository , authentication ) ;
emailUtils . sendAdminRegistrationEmail ( repository , authentication ) ;
try {
emailUtils . sendUserRegistrationEmail ( repository , authentication ) ;
emailUtils . sendAdminRegistrationEmail ( repository , authentication ) ;
} catch ( Exception e ) {
LOGGER . error ( "Error sending emails: " + e ) ;
}
} else {
LOGGER . debug ( responseEntity . getBody ( ) . toString ( ) ) ;
}
@ -704,32 +653,29 @@ public class RepositoryServiceImpl implements RepositoryService {
String repoId ,
String registeredBy ,
String comment , RepositoryInterface repositoryInterface ) throws Exception {
try {
Repository e = this . getRepositoryById ( repoId ) ;
repositoryInterface = createRepositoryInterface ( e , repositoryInterface , datatype ) ;
String json_interface = Converter . repositoryInterfaceObjectToJson ( e , repositoryInterface ) ;
Repository e = this . getRepositoryById ( repoId ) ;
repositoryInterface = createRepositoryInterface ( e , repositoryInterface , datatype ) ;
String json_interface = Converter . repositoryInterfaceObjectToJson ( e , repositoryInterface ) ;
UriComponents uriComponents = UriComponentsBuilder
. fromHttpUrl ( baseAddress + "/ds/api/add/" )
. build ( )
. encode ( ) ;
UriComponents uriComponents = UriComponentsBuilder
. fromHttpUrl ( baseAddress + "/ds/api/add/" )
. build ( )
. encode ( ) ;
HttpEntity < String > httpEntity = new HttpEntity < > ( json_interface , httpHeaders ) ;
HttpEntity < String > httpEntity = new HttpEntity < > ( json_interface , httpHeaders ) ;
restTemplate . postForObject ( uriComponents . toUri ( ) , httpEntity , String . class ) ;
restTemplate . postForObject ( uriComponents . toUri ( ) , httpEntity , String . class ) ;
try {
emailUtils . sendAdminRegisterInterfaceEmail ( e , comment , repositoryInterface , SecurityContextHolder . getContext ( ) . getAuthentication ( ) ) ;
emailUtils . sendUserRegisterInterfaceEmail ( e , comment , repositoryInterface , SecurityContextHolder . getContext ( ) . getAuthentication ( ) ) ;
} catch ( Exception ex ) {
LOGGER . error ( "Error sending emails: " + ex ) ;
}
submitInterfaceValidation ( e , registeredBy , repositoryInterface , false ) ;
return repositoryInterface ;
submitInterfaceValidation ( e , registeredBy , repositoryInterface , false ) ;
} catch ( Exception e ) {
LOGGER . error ( "Exception on addRepositoryInterface" , e ) ;
emailUtils . reportException ( e ) ;
throw e ;
}
return repositoryInterface ;
}
@Override
@ -743,8 +689,12 @@ public class RepositoryServiceImpl implements RepositoryService {
Repository repository = this . getRepositoryById ( repoId ) ;
try {
emailUtils . sendAdminUpdateInterfaceEmail ( repository , comment , repositoryInterface , SecurityContextHolder . getContext ( ) . getAuthentication ( ) ) ;
emailUtils . sendUserUpdateInterfaceEmail ( repository , comment , repositoryInterface , SecurityContextHolder . getContext ( ) . getAuthentication ( ) ) ;
try {
emailUtils . sendAdminUpdateInterfaceEmail ( repository , comment , repositoryInterface , SecurityContextHolder . getContext ( ) . getAuthentication ( ) ) ;
emailUtils . sendUserUpdateInterfaceEmail ( repository , comment , repositoryInterface , SecurityContextHolder . getContext ( ) . getAuthentication ( ) ) ;
} catch ( Exception e ) {
LOGGER . error ( "Error sending emails: " + e ) ;
}
} catch ( Exception e ) {
LOGGER . warn ( "Could not send emails" , e ) ;
}
@ -834,15 +784,9 @@ public class RepositoryServiceImpl implements RepositoryService {
. path ( "/{page}/{size}" )
. build ( ) . expand ( page , size ) . encode ( ) ;
try {
RequestFilter requestFilter = new RequestFilter ( ) ;
requestFilter . setRegisteredby ( userEmail ) ;
return Arrays . asList ( restTemplate . postForObject ( uriComponents . toUri ( ) , requestFilter , String [ ] . class ) ) ;
} catch ( Exception e ) {
LOGGER . debug ( "Exception on addRepositoryInterface" , e ) ;
emailUtils . reportException ( e ) ;
throw e ;
}
RequestFilter requestFilter = new RequestFilter ( ) ;
requestFilter . setRegisteredby ( userEmail ) ;
return Arrays . asList ( restTemplate . postForObject ( uriComponents . toUri ( ) , requestFilter , String [ ] . class ) ) ;
}
@Override
@ -959,7 +903,6 @@ public class RepositoryServiceImpl implements RepositoryService {
} catch ( Exception e ) {
LOGGER . error ( "Error while getting metrics info for repository: " , e ) ;
emailUtils . reportException ( e ) ;
throw new RepositoryServiceException ( "General error" , RepositoryServiceException . ErrorCode . GENERAL_ERROR ) ;
}
}
@ -1016,19 +959,14 @@ public class RepositoryServiceImpl implements RepositoryService {
RestTemplate template = new RestTemplate ( ) ;
template . getMessageConverters ( ) . add ( new MappingJackson2HttpMessageConverter ( ) ) ;
ResponseEntity < MetricsNumbers > resp ;
try {
//communicate with endpoint
resp = template . exchange (
builder . build ( ) . encode ( ) . toUri ( ) ,
HttpMethod . GET ,
null ,
new ParameterizedTypeReference < MetricsNumbers > ( ) {
} ) ;
} catch ( RestClientException e ) {
LOGGER . debug ( "Exception on getMetricsNumbers" , e ) ;
emailUtils . reportException ( e ) ;
throw e ;
}
//communicate with endpoint
resp = template . exchange (
builder . build ( ) . encode ( ) . toUri ( ) ,
HttpMethod . GET ,
null ,
new ParameterizedTypeReference < MetricsNumbers > ( ) {
} ) ;
return resp . getBody ( ) ;
}