Revision 51525
Added by Panagiotis Kanakakis over 6 years ago
modules/uoa-repository-manager-service/branches/dev-api/src/main/java/eu/dnetlib/repo/manager/service/utils/OMTDAuthoritiesMapper.java | ||
---|---|---|
1 |
package eu.dnetlib.repo.manager.service.utils; |
|
2 |
|
|
3 |
import com.nimbusds.jwt.JWT; |
|
4 |
import org.mitre.openid.connect.client.OIDCAuthoritiesMapper; |
|
5 |
import org.mitre.openid.connect.model.UserInfo; |
|
6 |
import org.slf4j.Logger; |
|
7 |
import org.slf4j.LoggerFactory; |
|
8 |
import org.springframework.security.core.GrantedAuthority; |
|
9 |
import org.springframework.security.core.authority.SimpleGrantedAuthority; |
|
10 |
|
|
11 |
import java.util.*; |
|
12 |
|
|
13 |
public class OMTDAuthoritiesMapper implements OIDCAuthoritiesMapper { |
|
14 |
|
|
15 |
private static Logger logger = LoggerFactory.getLogger(OMTDAuthoritiesMapper.class); |
|
16 |
|
|
17 |
final private static String ROLE_CLAIMS = "edu_person_entitlements"; |
|
18 |
|
|
19 |
private Map<String,SimpleGrantedAuthority> userRolesMap; |
|
20 |
|
|
21 |
OMTDAuthoritiesMapper(Map<String,String> userRoles) { |
|
22 |
userRolesMap = new HashMap<>(); |
|
23 |
userRoles.forEach((omtdRole, appRole) -> userRolesMap.put(omtdRole, new SimpleGrantedAuthority(appRole))); |
|
24 |
} |
|
25 |
|
|
26 |
@Override |
|
27 |
public Collection<? extends GrantedAuthority> mapAuthorities(JWT idToken, UserInfo userInfo) { |
|
28 |
Set<GrantedAuthority> out = new HashSet<>(); |
|
29 |
out.add(new SimpleGrantedAuthority("ROLE_USER")); |
|
30 |
if(userInfo.getSource().getAsJsonArray(ROLE_CLAIMS) != null) { |
|
31 |
userInfo.getSource().getAsJsonArray(ROLE_CLAIMS).forEach(role -> { |
|
32 |
SimpleGrantedAuthority authority = userRolesMap.get(role.getAsString()); |
|
33 |
if (authority != null) { |
|
34 |
logger.debug("Role mapped " + role); |
|
35 |
out.add(authority); |
|
36 |
} |
|
37 |
}); |
|
38 |
} |
|
39 |
return out; |
|
40 |
} |
|
41 |
} |
modules/uoa-repository-manager-service/branches/dev-api/src/main/java/eu/dnetlib/repo/manager/service/utils/EmailUtils.java | ||
---|---|---|
1 |
package eu.dnetlib.repo.manager.service.utils; |
|
2 |
|
|
3 |
import eu.dnetlib.domain.data.PiwikInfo; |
|
4 |
import eu.dnetlib.domain.functionality.UserProfile; |
|
5 |
|
|
6 |
public interface EmailUtils { |
|
7 |
|
|
8 |
|
|
9 |
void reportException(Exception exception); |
|
10 |
|
|
11 |
void sendAdministratorRequestToEnableMetrics(PiwikInfo piwikInfo) throws Exception; |
|
12 |
|
|
13 |
void sendUserRequestToEnableMetrics(PiwikInfo piwikInfo) throws Exception; |
|
14 |
|
|
15 |
void sendAdministratorMetricsEnabled(PiwikInfo piwikInfo) throws Exception; |
|
16 |
|
|
17 |
void sendUserMetricsEnabled(PiwikInfo piwikInfo) throws Exception; |
|
18 |
} |
modules/uoa-repository-manager-service/branches/dev-api/src/main/java/eu/dnetlib/repo/manager/service/utils/EmailUtilsImpl.java | ||
---|---|---|
1 |
package eu.dnetlib.repo.manager.service.utils; |
|
2 |
|
|
3 |
import eu.dnetlib.domain.data.PiwikInfo; |
|
4 |
import eu.dnetlib.repo.manager.service.config.CascadingPropertyLoader; |
|
5 |
import eu.dnetlib.utils.MailLibrary; |
|
6 |
import org.apache.log4j.Logger; |
|
7 |
import org.springframework.beans.factory.annotation.Autowired; |
|
8 |
import org.springframework.beans.factory.annotation.Value; |
|
9 |
import org.springframework.stereotype.Component; |
|
10 |
|
|
11 |
import java.io.PrintWriter; |
|
12 |
import java.io.StringWriter; |
|
13 |
import java.io.Writer; |
|
14 |
import java.util.ArrayList; |
|
15 |
import java.util.List; |
|
16 |
|
|
17 |
|
|
18 |
@Component |
|
19 |
public class EmailUtilsImpl implements EmailUtils { |
|
20 |
|
|
21 |
private static Logger LOGGER = Logger.getLogger(EmailUtilsImpl.class); |
|
22 |
|
|
23 |
private List<String> specialRecipients = new ArrayList<String>(); |
|
24 |
private boolean override = false, logonly = false; |
|
25 |
private String overrideEmail = null, from = null; |
|
26 |
|
|
27 |
@Autowired |
|
28 |
private MailLibrary mailLibrary; |
|
29 |
|
|
30 |
@Autowired |
|
31 |
private CascadingPropertyLoader pLoader; |
|
32 |
|
|
33 |
@Value("${services.repo-manager.baseUrl}") |
|
34 |
private String baseUrl; |
|
35 |
|
|
36 |
@Value("${services.repo-manager.adminEmail}") |
|
37 |
private String adminEmail; |
|
38 |
|
|
39 |
@Value("${services.repomanager.usagestats.adminEmail}") |
|
40 |
private String usageStatsAdminEmail; |
|
41 |
|
|
42 |
|
|
43 |
@Override |
|
44 |
public void reportException(Exception exception) { |
|
45 |
Writer writer = new StringWriter(); |
|
46 |
PrintWriter printWriter = new PrintWriter(writer); |
|
47 |
exception.printStackTrace(printWriter); |
|
48 |
|
|
49 |
List<String> recipients = new ArrayList<String>(); |
|
50 |
|
|
51 |
try { |
|
52 |
recipients.add(this.adminEmail); |
|
53 |
String message = "An exception has occurred:\n"+writer.toString(); |
|
54 |
String subject = "Automatic Bug Report"; |
|
55 |
this.sendMail(recipients, subject, message, false, null); |
|
56 |
} catch (Exception e) { |
|
57 |
LOGGER.error("Error sending error report", e); |
|
58 |
} |
|
59 |
} |
|
60 |
|
|
61 |
@Override |
|
62 |
public void sendAdministratorRequestToEnableMetrics(PiwikInfo piwikInfo) throws Exception { |
|
63 |
|
|
64 |
try { |
|
65 |
String subject = "[OpenAIRE-Usage Statistics] New request to enable usage statistics"; |
|
66 |
|
|
67 |
String message = "Dear administrator,\n" + |
|
68 |
"\n" + |
|
69 |
"we have received a request to enable the OpenAIRE usage statistics for the following repository \n" + |
|
70 |
"\n" + |
|
71 |
"Repository - " + piwikInfo.getRepositoryName() + ", " + piwikInfo.getCountry() + " (" + piwikInfo.getRepositoryId() + ")\n" + |
|
72 |
"Requestor - " + piwikInfo.getRequestorName() + ", " + piwikInfo.getRequestorEmail() + "\n" + |
|
73 |
"Piwik ID - " + piwikInfo.getSiteId() + "\n" + |
|
74 |
"Authentication token - " + piwikInfo.getAuthenticationToken() + "\n" + |
|
75 |
"\n" + |
|
76 |
"For more information about this request, go here: \n" + |
|
77 |
this.baseUrl + "/#admin/metrics\n" + |
|
78 |
"\n" + |
|
79 |
"Best,\n" + |
|
80 |
"The OpenAIRE team"; |
|
81 |
|
|
82 |
this.sendMail(this.usageStatsAdminEmail, subject, message, false, null); |
|
83 |
|
|
84 |
} catch (Exception e) { |
|
85 |
LOGGER.error("Error while sending request to enable metrics email to administrator: " + this.usageStatsAdminEmail, e); |
|
86 |
throw e; |
|
87 |
} |
|
88 |
} |
|
89 |
|
|
90 |
@Override |
|
91 |
public void sendUserRequestToEnableMetrics(PiwikInfo piwikInfo) throws Exception { |
|
92 |
|
|
93 |
try { |
|
94 |
String subject = "[OpenAIRE-Usage Statistics] Your request to enable usage statistics"; |
|
95 |
|
|
96 |
String message = "Dear " + piwikInfo.getRequestorName() + ",\n" + |
|
97 |
"\n" + |
|
98 |
"we have received your request to enable the OpenAIRE usage statistics for your repository\n" + |
|
99 |
"\n" + |
|
100 |
"Repository - " + piwikInfo.getRepositoryName() + ", " + piwikInfo.getCountry() + " (" + piwikInfo.getRepositoryId() + ")\n" + |
|
101 |
"Piwik ID - " + piwikInfo.getSiteId() + "\n" + |
|
102 |
"Authentication token - " + piwikInfo.getAuthenticationToken() + "\n" + |
|
103 |
"\n" + |
|
104 |
"In order to enable the usage statistics, you must install the OpenAIRE's tracking code in your repository software. " + |
|
105 |
"OpenAIRE's usage statistics service tracking code is maintained on Github as a patch for various versions of DSpace " + |
|
106 |
"(https://github.com/openaire/OpenAIRE-Piwik-DSpace) and as an Eprints plugin for version 3 " + |
|
107 |
"(https://github.com/openaire/EPrints-OAPiwik). In case the platform is different from DSpace or EPrints please contact " + |
|
108 |
"the OpenAIRE team in repositoryusagestats@openaire.eu in order to find a solution.\n" + |
|
109 |
"\n" + |
|
110 |
"For more information about your request and configuration details, go here: \n" + |
|
111 |
this.baseUrl + "/#getImpact/instructions/" + piwikInfo.getRepositoryId() + "\n" + |
|
112 |
"\n" + |
|
113 |
"Once you have finished configuring your repository or if you have any questions, please notify the OpenAIRE team by sending \n" + |
|
114 |
"an email to repositoryusagestats@openaire.eu\n" + |
|
115 |
"\n" + |
|
116 |
"Best,\n" + |
|
117 |
"The OpenAIRE team"; |
|
118 |
|
|
119 |
this.sendMail(piwikInfo.getRequestorEmail(), subject, message, false, null); |
|
120 |
|
|
121 |
} catch (Exception e) { |
|
122 |
LOGGER.error("Error while sending request to enable metrics email to user: " + piwikInfo.getRequestorEmail(), e); |
|
123 |
throw e; |
|
124 |
} |
|
125 |
} |
|
126 |
|
|
127 |
@Override |
|
128 |
public void sendAdministratorMetricsEnabled(PiwikInfo piwikInfo) throws Exception { |
|
129 |
|
|
130 |
try { |
|
131 |
String subject = "[OpenAIRE-Usage Statistics] Usage statistics have been enabled"; |
|
132 |
|
|
133 |
String message = "Dear administrator,\n" + |
|
134 |
"\n" + |
|
135 |
"The installation and configuration of OpenAIRE's tracking code for the following repository " + |
|
136 |
"has been completed and validated and the usage statistics have been enabled in OpenAIRE.\n" + |
|
137 |
"\n" + |
|
138 |
"Repository - " + piwikInfo.getRepositoryName() + ", " + piwikInfo.getCountry() + " (" + piwikInfo.getRepositoryId() + ")\n" + |
|
139 |
"Requestor - " + piwikInfo.getRequestorName() + ", " + piwikInfo.getRequestorEmail() + "\n" + |
|
140 |
"Piwik ID - " + piwikInfo.getSiteId() + "\n" + |
|
141 |
"Authentication token - " + piwikInfo.getAuthenticationToken() + "\n" + |
|
142 |
"\n" + |
|
143 |
"Best,\n" + |
|
144 |
"The OpenAIRE team"; |
|
145 |
|
|
146 |
this.sendMail(piwikInfo.getRequestorEmail(), subject, message, false, null); |
|
147 |
|
|
148 |
} catch (Exception e) { |
|
149 |
LOGGER.error("Error while sending metrics enabled notification email to administator: " + this.usageStatsAdminEmail, e); |
|
150 |
throw e; |
|
151 |
} |
|
152 |
} |
|
153 |
|
|
154 |
@Override |
|
155 |
public void sendUserMetricsEnabled(PiwikInfo piwikInfo) throws Exception { |
|
156 |
|
|
157 |
try { |
|
158 |
String subject = "[OpenAIRE-Usage Statistics] Usage statistics have been enabled"; |
|
159 |
|
|
160 |
String message = "Dear " + piwikInfo.getRequestorName() + ",\n" + |
|
161 |
"\n" + |
|
162 |
"The installation and configuration of OpenAIRE's tracking code for your repository \"" + piwikInfo.getRepositoryName() + |
|
163 |
"\" has been completed and validated and the usage statistics have been enabled in OpenAIRE.\n" + |
|
164 |
"\n" + |
|
165 |
"You can preview the statistics in your repository's dashboard: \n" + |
|
166 |
this.baseUrl + "/#getImpact/" + piwikInfo.getRepositoryId() + "\n" + |
|
167 |
"\n" + |
|
168 |
" For more information and questions, you can contact the openaire support team by sending an email to " + |
|
169 |
"repositoryusagestats@openaire.eu\n" + |
|
170 |
"\n" + |
|
171 |
"Best,\n" + |
|
172 |
"The OpenAIRE team"; |
|
173 |
|
|
174 |
this.sendMail(piwikInfo.getRequestorEmail(), subject, message, false, null); |
|
175 |
|
|
176 |
} catch (Exception e) { |
|
177 |
LOGGER.error("Error while sending metrics enabled notification email to user: " + piwikInfo.getRequestorEmail(), e); |
|
178 |
throw e; |
|
179 |
} |
|
180 |
} |
|
181 |
|
|
182 |
private void sendMail(String email, String subject, String message, boolean sendToSpecial, List<String> repoAdminMails) throws Exception { |
|
183 |
ArrayList<String> to = new ArrayList<String>(); |
|
184 |
to.add(email); |
|
185 |
this.sendMail(to,subject,message,sendToSpecial,repoAdminMails); |
|
186 |
} |
|
187 |
|
|
188 |
private void sendMail(List<String> recipients, String subject, String message, boolean sendToSpecial, List<String> repoAdminMails) throws Exception { |
|
189 |
|
|
190 |
/* try { |
|
191 |
if (sendToSpecial) { |
|
192 |
recipients.addAll(this.specialRecipients); |
|
193 |
} |
|
194 |
|
|
195 |
if (repoAdminMails != null) |
|
196 |
recipients.addAll(repoAdminMails); |
|
197 |
|
|
198 |
if (this.override) { |
|
199 |
recipients.clear(); |
|
200 |
recipients.add(overrideEmail); |
|
201 |
} |
|
202 |
if (!logonly) |
|
203 |
mailLibrary.sendEmail(recipients.toArray(new String[]{}), subject, message); |
|
204 |
LOGGER.debug("Sending mail to Recipients: " + recipients + " Subject: " + subject + " Message: " + message); |
|
205 |
} catch (Exception e) { |
|
206 |
LOGGER.error("Error sending mail to Recipients: " + recipients + " Subject: " + subject + " Message: " + message, e); |
|
207 |
throw new Exception(e); |
|
208 |
}*/ |
|
209 |
} |
|
210 |
|
|
211 |
private String getEmailProperty(String key) { |
|
212 |
return pLoader.getProperties().getProperty(key); |
|
213 |
} |
|
214 |
|
|
215 |
public void setSpecialRecipients(String specialRecipients) { |
|
216 |
String[] recps = specialRecipients.split(","); |
|
217 |
|
|
218 |
for (String recp : recps) { |
|
219 |
recp = recp.trim(); |
|
220 |
|
|
221 |
this.specialRecipients.add(recp); |
|
222 |
} |
|
223 |
} |
|
224 |
|
|
225 |
|
|
226 |
public void setOverride(boolean override) { |
|
227 |
this.override = override; |
|
228 |
} |
|
229 |
|
|
230 |
public void setOverrideEmail(String overrideEmail) { |
|
231 |
this.overrideEmail = overrideEmail; |
|
232 |
} |
|
233 |
|
|
234 |
public String getFrom() { |
|
235 |
return from; |
|
236 |
} |
|
237 |
|
|
238 |
public void setFrom(String from) { |
|
239 |
this.from = from; |
|
240 |
} |
|
241 |
|
|
242 |
public boolean isLogonly() { |
|
243 |
return logonly; |
|
244 |
} |
|
245 |
|
|
246 |
public void setLogonly(boolean logonly) { |
|
247 |
this.logonly = logonly; |
|
248 |
} |
|
249 |
|
|
250 |
|
|
251 |
} |
modules/uoa-repository-manager-service/branches/dev-api/src/main/java/eu/dnetlib/repo/manager/service/utils/Converter.java | ||
---|---|---|
3 | 3 |
import com.fasterxml.jackson.databind.ObjectMapper; |
4 | 4 |
import eu.dnetlib.domain.data.Repository; |
5 | 5 |
import eu.dnetlib.domain.data.RepositoryInterface; |
6 |
import eu.dnetlib.repo.manager.service.controllers.PiWikApi; |
|
7 | 6 |
import eu.dnetlib.repo.manager.shared.AggregationDetails; |
8 | 7 |
import eu.dnetlib.repo.manager.shared.Timezone; |
9 | 8 |
import org.apache.commons.codec.digest.DigestUtils; |
... | ... | |
11 | 10 |
import org.json.JSONArray; |
12 | 11 |
import org.json.JSONException; |
13 | 12 |
import org.json.JSONObject; |
14 |
import org.springframework.beans.factory.annotation.Autowired; |
|
15 |
import org.springframework.web.bind.annotation.PathVariable; |
|
16 | 13 |
|
17 | 14 |
import java.io.BufferedReader; |
18 | 15 |
import java.io.IOException; |
... | ... | |
34 | 31 |
|
35 | 32 |
if( datasource.equals(null)) |
36 | 33 |
return null; |
37 |
|
|
38 |
repository.setActivationId(datasource.get("activationId").toString()); |
|
39 |
repository.setAggregator(datasource.get("aggregator").toString()); |
|
40 |
// repository.setCertificates(datasource.get("certificates").toString()); |
|
41 |
// repository.setCitationGuidelineUrl(datasource.get("citationguidelineurl").toString()); |
|
42 |
repository.setCollectedFrom( datasource.get("collectedfrom").toString()); |
|
43 | 34 |
|
44 |
repository.setContactEmail(datasource.get("contactemail").toString()); |
|
45 |
if(repository.getContactEmail().equals("null")) |
|
46 |
repository.setContactEmail(""); |
|
35 |
repository.setId(datasource.get("id").toString()); |
|
36 |
repository.setOfficialName(datasource.get("officialname").toString()); |
|
47 | 37 |
|
48 |
// repository.setDatabaseAccessRestriction(datasource.get("databaseaccessrestriction").toString()); |
|
49 |
// repository.setDatabaseAccessType(datasource.get("databaseaccesstype").toString()); |
|
50 |
// repository.setDataUploadRestriction(datasource.get("datauploadrestriction").toString()); |
|
51 |
// repository.setDataUploadType(datasource.get("datauploadtype").toString()); |
|
52 |
repository.setDateOfCollection(convertStringToDate( datasource.get("dateofcollection").toString())); |
|
53 |
repository.setDateOfValidation(convertStringToDate( datasource.get("dateofvalidation").toString())); |
|
54 |
|
|
55 |
repository.setDescription(datasource.get("description").toString()); |
|
56 |
if(repository.getDescription().equals("null")) |
|
57 |
repository.setDescription(""); |
|
58 |
|
|
59 |
repository.setEissn(datasource.get("eissn").toString()); |
|
60 |
|
|
61 | 38 |
repository.setEnglishName( datasource.get("englishname").toString()); |
62 | 39 |
if(repository.getEnglishName().equals("null")) |
63 | 40 |
repository.setEnglishName(""); |
64 | 41 |
|
65 |
|
|
66 |
repository.setId(datasource.get("id").toString()); |
|
67 |
repository.setIssn(datasource.get("issn").toString()); |
|
68 |
repository.setOdLanguages(datasource.get("languages").toString()); |
|
69 |
repository.setLatitude( toDouble(datasource.get("latitude").toString())); |
|
70 |
repository.setLissn(datasource.get("lissn").toString()); |
|
71 |
|
|
42 |
repository.setWebsiteUrl(datasource.get("websiteurl").toString()); |
|
72 | 43 |
repository.setLogoUrl(datasource.get("logourl").toString()); |
73 | 44 |
if(repository.getLogoUrl().equals("null")) |
74 | 45 |
repository.setLogoUrl(""); |
75 | 46 |
|
47 |
repository.setContactEmail(datasource.get("contactemail").toString()); |
|
48 |
repository.setLatitude( toDouble(datasource.get("latitude").toString())); |
|
76 | 49 |
repository.setLongitude(toDouble(datasource.get("longitude").toString())); |
77 |
//datasource.get("managed");
|
|
78 |
// repository.setMissionStatementUrl(datasource.get("missionstatementurl").toString());
|
|
50 |
Double timezone = toDouble(datasource.get("timezone").toString());
|
|
51 |
repository.setTimezone(timezone!=null?timezone:0.0);
|
|
79 | 52 |
repository.setNamespacePrefix(datasource.get("namespaceprefix").toString()); |
80 |
// repository.setOdContentTypes(datasource.get("od_contenttypes").toString()); |
|
81 |
repository.setOfficialName(datasource.get("officialname").toString()); |
|
82 |
if(repository.getOfficialName().equals("null")) |
|
83 |
repository.setOfficialName(""); |
|
53 |
repository.setOdLanguages(datasource.get("languages").toString()); |
|
54 |
repository.setDateOfValidation(convertStringToDate( datasource.get("dateofvalidation").toString())); |
|
84 | 55 |
|
85 |
// repository.setPidSystems(datasource.get("pidsystems").toString()); |
|
86 |
//datasource.get("platform"); |
|
87 |
// repository.setProvenanceActionClass( datasource.get("provenanceaction").toString()); |
|
88 |
// repository.setQualityManagementKind(datasource.get("qualitymanagementkind").toString()); |
|
56 |
/* typology -> platform |
|
57 |
* datasource class -> typology */ |
|
58 |
repository.setTypology(datasource.get("platform").toString()); |
|
59 |
if(repository.getTypology().equals("null")) |
|
60 |
repository.setTypology(""); |
|
61 |
repository.setDatasourceClass(datasource.get("typology").toString()); |
|
62 |
|
|
63 |
repository.setDateOfCollection(convertStringToDate( datasource.get("dateofcollection").toString())); |
|
64 |
repository.setActivationId(datasource.get("activationId").toString()); |
|
65 |
|
|
66 |
repository.setDescription(datasource.get("description").toString()); |
|
67 |
if(repository.getDescription().equals("null")) |
|
68 |
repository.setDescription(""); |
|
69 |
|
|
70 |
repository.setIssn(datasource.get("issn").toString()); |
|
71 |
repository.setLissn(datasource.get("lissn").toString()); |
|
72 |
repository.setEissn(datasource.get("eissn").toString()); |
|
89 | 73 |
repository.setRegisteredBy(datasource.get("registeredby").toString()); |
90 | 74 |
|
91 |
if(Objects.equals(repository.getRegisteredBy(),"null"))
|
|
92 |
repository.setRegistered(true);
|
|
75 |
/* managed field */
|
|
76 |
repository.setRegistered(Boolean.parseBoolean(datasource.get("managed").toString()));
|
|
93 | 77 |
|
94 |
// repository.setReleaseEndDate(convertStringToDate(datasource.get("releaseenddate").toString())); |
|
95 |
// repository.setReleaseStartDate(convertStringToDate(datasource.get("releasestartdate").toString())); |
|
96 |
// repository.setServiceProvider(Boolean.valueOf(datasource.get("serviceprovider").toString())); |
|
97 |
//datasource.get("subjects"); |
|
98 |
Double timezone = toDouble(datasource.get("timezone").toString()); |
|
99 |
repository.setTimezone(timezone!=null?timezone:0.0); |
|
100 |
repository.setTypology(datasource.get("platform").toString()); |
|
101 |
// repository.setVersioning(Boolean.valueOf(datasource.get("versioning").toString())); |
|
102 |
repository.setWebsiteUrl(datasource.get("websiteurl").toString()); |
|
103 |
repository.setDatasourceClass(datasource.get("typology").toString()); |
|
78 |
//subjects |
|
79 |
repository.setAggregator(datasource.get("aggregator").toString()); |
|
104 | 80 |
|
105 |
//TODO change organization to list |
|
106 |
JSONArray organizations = ((JSONArray)datasource.get("organizations")); |
|
107 |
if(organizations.length() != 0) { |
|
108 |
repository.setOrganization(((JSONArray) datasource.get("organizations")).getJSONObject(0).get("legalname").toString()); |
|
109 |
String countryCode = ((JSONArray) datasource.get("organizations")).getJSONObject(0).get("country").toString(); |
|
110 |
repository.setCountryCode(countryCode); |
|
111 |
} |
|
112 |
|
|
113 |
|
|
114 | 81 |
String collectedFrom = datasource.get("collectedfrom").toString(); |
115 | 82 |
//TODO check data consistency |
116 | 83 |
String type = "UNKNOWN"; |
... | ... | |
121 | 88 |
} else if (collectedFrom.equalsIgnoreCase("infrastruct_::openaire")) { |
122 | 89 |
type = "journal"; |
123 | 90 |
} |
91 |
/* collected from field */ |
|
124 | 92 |
repository.setDatasourceType(type); |
93 |
repository.setCollectedFrom(collectedFrom); |
|
94 |
|
|
95 |
//TODO change organization to list |
|
96 |
JSONArray organizations = ((JSONArray)datasource.get("organizations")); |
|
97 |
if(organizations.length() != 0) { |
|
98 |
repository.setOrganization(((JSONArray) datasource.get("organizations")).getJSONObject(0).get("legalname").toString()); |
|
99 |
String countryCode = ((JSONArray) datasource.get("organizations")).getJSONObject(0).get("country").toString(); |
|
100 |
repository.setCountryCode(countryCode); |
|
101 |
} |
|
102 |
|
|
103 |
/* identities field */ |
|
104 |
|
|
125 | 105 |
return repository; |
126 | 106 |
} |
127 | 107 |
|
... | ... | |
177 | 157 |
|
178 | 158 |
RepositoryInterface repositoryInterface = new RepositoryInterface(); |
179 | 159 |
|
180 |
repositoryInterface.setBaseUrl(repositoryInterfaceObject.get("baseurl").toString()); |
|
181 |
repositoryInterface.setContentDescription(repositoryInterfaceObject.get("contentdescription").toString()); |
|
182 | 160 |
repositoryInterface.setId(repositoryInterfaceObject.get("id").toString()); |
183 |
// repositoryInterface.setMetadataIdentifierPath(repositoryInterfaceObject.get("metadataIdentifierPath").toString()); |
|
184 | 161 |
repositoryInterface.setAccessProtocol(repositoryInterfaceObject.get("protocol").toString()); |
162 |
repositoryInterface.setContentDescription(repositoryInterfaceObject.get("contentdescription").toString()); |
|
185 | 163 |
repositoryInterface.setTypology(repositoryInterfaceObject.get("typology").toString()); |
186 |
repositoryInterface.setDesiredCompatibilityLevel(repositoryInterfaceObject.get("compatibility").toString()); |
|
187 |
//repositoryInterface.setActive(Boolean.parseBoolean(repositoryInterfaceObject.get("active").toString())); |
|
188 |
repositoryInterface.setRemovable(Boolean.parseBoolean(repositoryInterfaceObject.get("removable").toString())); |
|
189 | 164 |
repositoryInterface.setCompliance(repositoryInterfaceObject.get("compatibility").toString()); |
190 | 165 |
repositoryInterface.setLastCollectionDate(repositoryInterfaceObject.get("lastCollectionDate").toString()); |
191 | 166 |
|
167 |
repositoryInterface.setBaseUrl(repositoryInterfaceObject.get("baseurl").toString()); |
|
168 |
repositoryInterface.setRemovable(Boolean.parseBoolean(repositoryInterfaceObject.get("removable").toString())); |
|
192 | 169 |
|
170 |
|
|
171 |
// repositoryInterface.setMetadataIdentifierPath(repositoryInterfaceObject.get("metadataIdentifierPath").toString()); |
|
172 |
repositoryInterface.setDesiredCompatibilityLevel(repositoryInterfaceObject.get("compatibility").toString()); |
|
173 |
//repositoryInterface.setActive(Boolean.parseBoolean(repositoryInterfaceObject.get("active").toString())); |
|
174 |
|
|
175 |
|
|
193 | 176 |
Map<String, String> accessParams = new HashMap<>(); |
194 | 177 |
Map<String, String> extraFields = new HashMap<>(); |
195 | 178 |
|
... | ... | |
199 | 182 |
for(int i=0;i<apiparams.length();i++) |
200 | 183 |
accessParams.put(apiparams.getJSONObject(i).getString("param"),apiparams.getJSONObject(i).getString("value")); |
201 | 184 |
|
185 |
repositoryInterface.setAccessParams(accessParams); |
|
186 |
|
|
202 | 187 |
return repositoryInterface; |
203 | 188 |
} |
204 | 189 |
|
... | ... | |
219 | 204 |
jsonObject.put("namespaceprefix",repository.getNamespacePrefix()); |
220 | 205 |
jsonObject.put("languages",repository.getOdLanguages()); |
221 | 206 |
jsonObject.put("dateofvalidation",convertDateToString(repository.getDateOfValidation())); |
222 |
jsonObject.put("typology",repository.getTypology()); |
|
207 |
|
|
208 |
/* |
|
209 |
* typology -> platform |
|
210 |
* datasource class -> typology |
|
211 |
* */ |
|
212 |
jsonObject.put("typology",repository.getDatasourceClass()); |
|
213 |
jsonObject.put("platform",repository.getTypology()); |
|
214 |
|
|
223 | 215 |
jsonObject.put("dateofcollection",convertDateToString(repository.getDateOfCollection())); |
224 |
// jsonObject.put("platform",repository.getPlatform()); |
|
225 | 216 |
jsonObject.put("activationId",repository.getActivationId()); |
226 | 217 |
jsonObject.put("description",repository.getDescription()); |
227 | 218 |
jsonObject.put("eissn",repository.getEissn()); |
228 | 219 |
jsonObject.put("issn",repository.getIssn()); |
229 | 220 |
jsonObject.put("lissn",repository.getLissn()); |
230 | 221 |
jsonObject.put("registeredby",repository.getRegisteredBy()); |
231 |
// jsonObject.put("subjects",repository.getSubjects()); |
|
222 |
|
|
232 | 223 |
jsonObject.put("aggregator",repository.getAggregator()); |
233 | 224 |
jsonObject.put("collectedfrom",repository.getCollectedFrom()); |
234 |
// jsonObject.put("managed",repository.getIsManaged()); |
|
235 | 225 |
|
236 |
// jsonObject.put("organizations",repository.getOrganization()); |
|
237 |
// for(repository.getOrganization()) |
|
226 |
jsonObject.put("managed",repository.isRegistered()); |
|
238 | 227 |
|
228 |
JSONObject organization = new JSONObject(); |
|
229 |
organization.put("legalname",repository.getOrganization()); |
|
230 |
organization.put("country",repository.getCountryCode()); |
|
231 |
organization.put("legalshortname",""); |
|
232 |
organization.put("websiteurl",""); |
|
233 |
organization.put("logourl",""); |
|
234 |
|
|
235 |
JSONArray organizations = new JSONArray(); |
|
236 |
organizations.put(organization); |
|
237 |
jsonObject.put("organizations",organizations); |
|
238 |
|
|
239 |
|
|
240 |
|
|
241 |
|
|
239 | 242 |
//TODO check fields |
240 | 243 |
/* jsonObject.put("certificates",repository.getCertificates()); |
241 | 244 |
jsonObject.put("citationguidelineurl",repository.getCitationGuidelineUrl()); |
... | ... | |
262 | 265 |
|
263 | 266 |
JSONObject jsonObject = new JSONObject(); |
264 | 267 |
|
265 |
jsonObject.put("baseurl",repositoryInterface.getBaseUrl()); |
|
266 |
jsonObject.put("contentdescription",repositoryInterface.getContentDescription()); |
|
267 | 268 |
jsonObject.put("id",repositoryInterface.getId()); |
268 |
jsonObject.put("metadataIdentifierPath",repositoryInterface.getMetadataIdentifierPath()); |
|
269 | 269 |
jsonObject.put("protocol",repositoryInterface.getAccessProtocol()); |
270 |
jsonObject.put("datasource",repository.getId()); |
|
271 |
jsonObject.put("contentdescription",repositoryInterface.getContentDescription()); |
|
270 | 272 |
jsonObject.put("typology",repositoryInterface.getTypology()); |
271 | 273 |
jsonObject.put("compatibility",repositoryInterface.getDesiredCompatibilityLevel()); |
272 |
jsonObject.put("datasource",repository.getId()); |
|
273 |
jsonObject.put("metadataIdentifierPath",repositoryInterface.getMetadataIdentifierPath()); |
|
274 |
jsonObject.put("protocol",repositoryInterface.getAccessProtocol()); |
|
274 |
jsonObject.put("compatibilityOverride",repositoryInterface.getDesiredCompatibilityLevel()); |
|
275 |
|
|
276 |
jsonObject.put("lastCollectionTotal",""); |
|
277 |
|
|
278 |
jsonObject.put("lastCollectionDate",repositoryInterface.getLastCollectionDate()); |
|
279 |
jsonObject.put("lastAggregationTotal",""); |
|
280 |
jsonObject.put("lastAggregationDate",""); |
|
281 |
jsonObject.put("lastDownloadTotal",""); |
|
282 |
jsonObject.put("lastDownloadDate",""); |
|
283 |
|
|
284 |
jsonObject.put("baseurl",repositoryInterface.getBaseUrl()); |
|
275 | 285 |
jsonObject.put("removable",repositoryInterface.isRemovable()); |
276 |
jsonObject.put("active",repositoryInterface.isActive()); |
|
277 | 286 |
|
278 |
|
|
287 |
|
|
279 | 288 |
JSONArray apiparams = new JSONArray(); |
280 | 289 |
for(String param: repositoryInterface.getAccessParams().keySet()){ |
281 | 290 |
JSONObject jo = new JSONObject(); |
... | ... | |
283 | 292 |
jo.put("value",repositoryInterface.getAccessParams().get(param)); |
284 | 293 |
apiparams.put(jo); |
285 | 294 |
} |
286 |
jsonObject.put("apiparam",apiparams);
|
|
295 |
jsonObject.put("apiParams",apiparams);
|
|
287 | 296 |
|
288 | 297 |
|
289 |
jsonObject.put("lastCollectionDate",repositoryInterface.getLastCollectionDate()); |
|
290 |
//jsonObject.put("lastCollectionMdid",repositoryInterface); |
|
291 |
//jsonObject.put("lastCollectionTotal"); |
|
292 |
//jsonObject.put("lastDownloadDate"); |
|
293 |
// jsonObject.put("lastDownloadMdid"); |
|
294 |
// jsonObject.put("lastDownloadTotal"); |
|
295 |
// jsonObject.put("lastValidationJob"); |
|
296 |
//jsonObject.put("lastAggregationDate"); |
|
297 |
//jsonObject.put("lastAggregationMdid"); |
|
298 |
//jsonObject.put("lastAggregationTotal"); |
|
298 |
// jsonObject.put("metadataIdentifierPath",repositoryInterface.getMetadataIdentifierPath()); |
|
299 | 299 |
|
300 |
|
|
300 | 301 |
return jsonObject.toString(); |
301 | 302 |
} |
302 | 303 |
|
modules/uoa-repository-manager-service/branches/dev-api/src/main/java/eu/dnetlib/repo/manager/service/config/OpenAireProviderAuthoritiesMapper.java | ||
---|---|---|
1 |
package eu.dnetlib.repo.manager.service.config; |
|
2 |
|
|
3 |
import com.nimbusds.jwt.JWT; |
|
4 |
import org.mitre.openid.connect.client.OIDCAuthoritiesMapper; |
|
5 |
import org.mitre.openid.connect.model.UserInfo; |
|
6 |
import org.slf4j.Logger; |
|
7 |
import org.slf4j.LoggerFactory; |
|
8 |
import org.springframework.security.core.GrantedAuthority; |
|
9 |
import org.springframework.security.core.authority.SimpleGrantedAuthority; |
|
10 |
|
|
11 |
import java.util.*; |
|
12 |
|
|
13 |
public class OpenAireProviderAuthoritiesMapper implements OIDCAuthoritiesMapper { |
|
14 |
|
|
15 |
private static Logger logger = LoggerFactory.getLogger(OpenAireProviderAuthoritiesMapper.class); |
|
16 |
|
|
17 |
final private static String ROLE_CLAIMS = "edu_person_entitlements"; |
|
18 |
|
|
19 |
private Map<String,SimpleGrantedAuthority> userRolesMap; |
|
20 |
|
|
21 |
OpenAireProviderAuthoritiesMapper(Map<String,String> userRoles) { |
|
22 |
userRolesMap = new HashMap<>(); |
|
23 |
userRoles.forEach((openaireRole, appRole) -> userRolesMap.put(openaireRole, new SimpleGrantedAuthority(appRole))); |
|
24 |
} |
|
25 |
|
|
26 |
@Override |
|
27 |
public Collection<? extends GrantedAuthority> mapAuthorities(JWT idToken, UserInfo userInfo) { |
|
28 |
Set<GrantedAuthority> out = new HashSet<>(); |
|
29 |
out.add(new SimpleGrantedAuthority("ROLE_USER")); |
|
30 |
|
|
31 |
if(userInfo.getSource().getAsJsonArray(ROLE_CLAIMS) != null) { |
|
32 |
userInfo.getSource().getAsJsonArray(ROLE_CLAIMS).forEach(role -> { |
|
33 |
SimpleGrantedAuthority authority = userRolesMap.get(role.getAsString()); |
|
34 |
if (authority != null) { |
|
35 |
logger.debug("Role mapped " + role); |
|
36 |
out.add(authority); |
|
37 |
} |
|
38 |
}); |
|
39 |
} |
|
40 |
return out; |
|
41 |
} |
|
42 |
} |
modules/uoa-repository-manager-service/branches/dev-api/src/main/java/eu/dnetlib/repo/manager/service/config/FrontEndLinkURIAuthenticationSuccessHandler.java | ||
---|---|---|
27 | 27 |
@Override |
28 | 28 |
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException { |
29 | 29 |
|
30 |
LOGGER.info(request); |
|
31 |
LOGGER.info(response); |
|
32 |
|
|
33 | 30 |
OIDCAuthenticationToken authOIDC = (OIDCAuthenticationToken) authentication; |
34 | 31 |
Cookie sessionCookie = new Cookie("currentUser", authOIDC.getSub()); |
35 | 32 |
int expireSec = -1; |
modules/uoa-repository-manager-service/branches/dev-api/src/main/java/eu/dnetlib/repo/manager/service/controllers/PiWikApiImpl.java | ||
---|---|---|
1 | 1 |
package eu.dnetlib.repo.manager.service.controllers; |
2 | 2 |
|
3 |
import com.fasterxml.jackson.databind.ObjectMapper; |
|
3 | 4 |
import eu.dnetlib.domain.data.PiwikInfo; |
4 |
import eu.dnetlib.utils.md5.MD5;
|
|
5 |
import eu.dnetlib.repo.manager.shared.RepositoryServiceException;
|
|
5 | 6 |
import org.apache.commons.codec.digest.DigestUtils; |
6 | 7 |
import org.springframework.beans.factory.annotation.Autowired; |
7 | 8 |
import org.springframework.beans.factory.annotation.Qualifier; |
9 |
import org.springframework.beans.factory.annotation.Value; |
|
8 | 10 |
import org.springframework.dao.EmptyResultDataAccessException; |
9 | 11 |
import org.springframework.jdbc.core.JdbcTemplate; |
10 | 12 |
import org.springframework.jdbc.core.RowMapper; |
... | ... | |
12 | 14 |
import org.springframework.web.bind.annotation.PathVariable; |
13 | 15 |
import org.springframework.web.bind.annotation.RequestBody; |
14 | 16 |
|
15 |
import javax.annotation.PostConstruct; |
|
16 | 17 |
import javax.sql.DataSource; |
17 |
import java.security.NoSuchAlgorithmException; |
|
18 |
import java.sql.ResultSet; |
|
19 |
import java.sql.SQLException; |
|
18 |
import java.io.IOException; |
|
19 |
import java.io.UnsupportedEncodingException; |
|
20 |
import java.net.URL; |
|
21 |
import java.net.URLEncoder; |
|
20 | 22 |
import java.sql.Types; |
21 | 23 |
import java.util.List; |
24 |
import java.util.Map; |
|
22 | 25 |
|
23 | 26 |
@Component |
24 | 27 |
public class PiWikApiImpl implements PiWikApi{ |
... | ... | |
27 | 30 |
@Qualifier("repomanager.dataSource") |
28 | 31 |
private DataSource dataSource; |
29 | 32 |
|
33 |
|
|
34 |
@Value("${services.repomanager.analyticsURL}") |
|
35 |
private String analyticsURL; |
|
36 |
|
|
37 |
|
|
38 |
@Autowired |
|
39 |
@Qualifier("emailUtils") |
|
40 |
EmailUtils emailUtils; |
|
41 |
|
|
30 | 42 |
private static final org.apache.log4j.Logger LOGGER = org.apache.log4j.Logger |
31 | 43 |
.getLogger(PiWikApiImpl.class); |
32 | 44 |
|
... | ... | |
39 | 51 |
private final static String APPROVE_PIWIK_SITE = "update piwik_site set validated=true, validationdate=now() where repositoryid = ?;"; |
40 | 52 |
|
41 | 53 |
|
54 |
|
|
42 | 55 |
private RowMapper<PiwikInfo> piwikRowMapper = (rs, i) -> new PiwikInfo(rs.getString("repositoryid"), getOpenaireId(rs.getString("repositoryid")), rs.getString("repositoryname"), rs.getString("country"), |
43 | 56 |
rs.getString("siteid"), rs.getString("authenticationtoken"), rs.getTimestamp("creationdate"), rs.getString("requestorname"), rs.getString("requestoremail"), |
44 | 57 |
rs.getBoolean("validated"), rs.getTimestamp("validationdate"), rs.getString("comment")); |
... | ... | |
85 | 98 |
return null; |
86 | 99 |
} |
87 | 100 |
|
101 |
@Override |
|
102 |
public void markPiwikSiteAsValidated(@PathVariable("repositoryId") String repositoryId) throws RepositoryServiceException { |
|
103 |
try { |
|
104 |
approvePiwikSite(repositoryId); |
|
88 | 105 |
|
106 |
PiwikInfo piwikInfo = getPiwikSiteForRepo(repositoryId); |
|
107 |
emailUtils.sendAdministratorMetricsEnabled(piwikInfo); |
|
108 |
emailUtils.sendUserMetricsEnabled(piwikInfo); |
|
109 |
|
|
110 |
} catch (EmptyResultDataAccessException e) { |
|
111 |
LOGGER.error("Error while approving piwik site: ", e); |
|
112 |
emailUtils.reportException(e); |
|
113 |
throw new RepositoryServiceException("General error", RepositoryServiceException.ErrorCode.GENERAL_ERROR); |
|
114 |
} catch (Exception e) { |
|
115 |
LOGGER.error("Error while sending email to administrator or user about the enabling of metrics", e); |
|
116 |
emailUtils.reportException(e); |
|
117 |
} |
|
118 |
} |
|
119 |
|
|
120 |
@Override |
|
121 |
public void enableMetricsForRepository(@RequestBody PiwikInfo piwikInfo) throws RepositoryServiceException { |
|
122 |
|
|
123 |
try { |
|
124 |
String URL = analyticsURL + "siteName=" + URLEncoder.encode(piwikInfo.getRepositoryName(), "UTF-8") |
|
125 |
+ "&url=" + piwikInfo.getSiteId(); |
|
126 |
Map<String, Object> map = new ObjectMapper().readValue(new URL(URL), Map.class); |
|
127 |
|
|
128 |
/* String siteId = null; |
|
129 |
if(map.get("value")!=null) { |
|
130 |
siteId = map.get("value").toString(); |
|
131 |
} |
|
132 |
|
|
133 |
String authenticationToken = "32846584f571be9b57488bf4088f30ea"; |
|
134 |
|
|
135 |
PiwikInfo piwikInfo = new PiwikInfo(); |
|
136 |
piwikInfo.setRepositoryId(repository.getId()); |
|
137 |
piwikInfo.setRepositoryName(repository.getOfficialName()); |
|
138 |
piwikInfo.setCountry(repository.getCountryName()); |
|
139 |
piwikInfo.setSiteId(siteId); |
|
140 |
piwikInfo.setAuthenticationToken(authenticationToken); |
|
141 |
piwikInfo.setRequestorEmail(userProfile.getEmail()); |
|
142 |
piwikInfo.setRequestorName(userProfile.getFirstname() + " " + userProfile.getLastname()); |
|
143 |
piwikInfo.setValidated(false); |
|
144 |
*/ |
|
145 |
savePiwikInfo(piwikInfo); |
|
146 |
|
|
147 |
emailUtils.sendAdministratorRequestToEnableMetrics(piwikInfo); |
|
148 |
emailUtils.sendUserRequestToEnableMetrics(piwikInfo); |
|
149 |
|
|
150 |
} catch (UnsupportedEncodingException uee) { |
|
151 |
LOGGER.error("Error while creating piwikScript URL", uee); |
|
152 |
emailUtils.reportException(uee); |
|
153 |
throw new RepositoryServiceException("login.generalError", RepositoryServiceException.ErrorCode.GENERAL_ERROR); |
|
154 |
} catch (IOException ioe) { |
|
155 |
LOGGER.error("Error while creating piwik site", ioe); |
|
156 |
emailUtils.reportException(ioe); |
|
157 |
throw new RepositoryServiceException("login.generalError", RepositoryServiceException.ErrorCode.GENERAL_ERROR); |
|
158 |
} catch (Exception e) { |
|
159 |
LOGGER.error("Error while sending email to administrator or user about the request to enable metrics", e); |
|
160 |
emailUtils.reportException(e); |
|
161 |
} |
|
162 |
} |
|
163 |
|
|
164 |
|
|
89 | 165 |
} |
modules/uoa-repository-manager-service/branches/dev-api/src/main/java/eu/dnetlib/repo/manager/service/controllers/MonitorApiImpl.java | ||
---|---|---|
50 | 50 |
LOGGER.debug("Getting jobs of user : " + user); |
51 | 51 |
LOGGER.debug(user + "/" + jobType + "/" + offset + "/" + dateFrom + "/" + dateTo + "/" + validationStatus + "/" + includeJobsTotal); |
52 | 52 |
JobsOfUser retJobs = new JobsOfUser(); |
53 |
LOGGER.debug("Size of jobs list -> " + getValidationService().getStoredJobsNew(user, jobType, Integer.parseInt(offset), |
|
54 |
Integer.parseInt(limit), dateFrom, dateTo, validationStatus).size()); |
|
55 | 53 |
retJobs.setJobs(getValidationService().getStoredJobsNew(user, jobType, Integer.parseInt(offset), |
56 | 54 |
Integer.parseInt(limit), dateFrom, dateTo, validationStatus)); |
57 | 55 |
if (Boolean.parseBoolean(includeJobsTotal)) { |
... | ... | |
62 | 60 |
} |
63 | 61 |
|
64 | 62 |
//TODO fix status with new validator version |
65 |
for(StoredJob job :retJobs.getJobs()){ |
|
66 |
if (job.getContentJobStatus().equals("ongoing") || job.getUsageJobStatus().equals("ongoing")) { |
|
67 |
job.setValidationStatus("ongoing"); |
|
68 |
} else if ((job.getValidationType().equals("CU") && job.getContentJobStatus().equals("finished") && job.getUsageJobStatus().equals("finished") && job.getContentJobScore() > 50 && job.getUsageJobScore() > 50) |
|
69 |
|| (job.getValidationType().equals("C") && job.getContentJobStatus().equals("finished") && job.getUsageJobStatus().equals("none") && job.getContentJobScore() > 50) |
|
70 |
|| (job.getValidationType().equals("U") && job.getContentJobStatus().equals("none") && job.getUsageJobStatus().equals("finished") && job.getUsageJobScore() > 50)) { |
|
71 |
job.setValidationStatus("successful"); |
|
72 |
} else if ((job.getValidationType().equals("CU") && job.getContentJobStatus().equals("finished") && job.getUsageJobStatus().equals("finished") && (job.getContentJobScore() <= 50 || job.getUsageJobScore() <= 50)) |
|
73 |
|| (job.getValidationType().equals("C") && job.getContentJobStatus().equals("finished") && job.getUsageJobStatus().equals("none") && job.getContentJobScore() <= 50) |
|
74 |
|| (job.getValidationType().equals("U") && job.getContentJobStatus().equals("none") && job.getUsageJobStatus().equals("finished") && job.getUsageJobScore() <= 50) ) { |
|
75 |
job.setValidationStatus("failed"); |
|
63 |
if(retJobs.getJobs() != null){ |
|
64 |
for(StoredJob job :retJobs.getJobs()){ |
|
65 |
if (job.getContentJobStatus().equals("ongoing") || job.getUsageJobStatus().equals("ongoing")) { |
|
66 |
job.setValidationStatus("ongoing"); |
|
67 |
} else if ((job.getValidationType().equals("CU") && job.getContentJobStatus().equals("finished") && job.getUsageJobStatus().equals("finished") && job.getContentJobScore() > 50 && job.getUsageJobScore() > 50) |
|
68 |
|| (job.getValidationType().equals("C") && job.getContentJobStatus().equals("finished") && job.getUsageJobStatus().equals("none") && job.getContentJobScore() > 50) |
|
69 |
|| (job.getValidationType().equals("U") && job.getContentJobStatus().equals("none") && job.getUsageJobStatus().equals("finished") && job.getUsageJobScore() > 50)) { |
|
70 |
job.setValidationStatus("successful"); |
|
71 |
} else if ((job.getValidationType().equals("CU") && job.getContentJobStatus().equals("finished") && job.getUsageJobStatus().equals("finished") && (job.getContentJobScore() <= 50 || job.getUsageJobScore() <= 50)) |
|
72 |
|| (job.getValidationType().equals("C") && job.getContentJobStatus().equals("finished") && job.getUsageJobStatus().equals("none") && job.getContentJobScore() <= 50) |
|
73 |
|| (job.getValidationType().equals("U") && job.getContentJobStatus().equals("none") && job.getUsageJobStatus().equals("finished") && job.getUsageJobScore() <= 50) ) { |
|
74 |
job.setValidationStatus("failed"); |
|
75 |
} |
|
76 |
|
|
76 | 77 |
} |
77 |
|
|
78 | 78 |
} |
79 | 79 |
|
80 |
|
|
80 | 81 |
return retJobs; |
81 | 82 |
|
82 | 83 |
} |
modules/uoa-repository-manager-service/branches/dev-api/src/main/java/eu/dnetlib/repo/manager/service/controllers/EmailUtils.java | ||
---|---|---|
1 |
package eu.dnetlib.repo.manager.service.controllers; |
|
2 |
|
|
3 |
import eu.dnetlib.domain.data.PiwikInfo; |
|
4 |
|
|
5 |
public interface EmailUtils { |
|
6 |
|
|
7 |
|
|
8 |
void reportException(Exception exception); |
|
9 |
|
|
10 |
void sendAdministratorRequestToEnableMetrics(PiwikInfo piwikInfo) throws Exception; |
|
11 |
|
|
12 |
void sendUserRequestToEnableMetrics(PiwikInfo piwikInfo) throws Exception; |
|
13 |
|
|
14 |
void sendAdministratorMetricsEnabled(PiwikInfo piwikInfo) throws Exception; |
|
15 |
|
|
16 |
void sendUserMetricsEnabled(PiwikInfo piwikInfo) throws Exception; |
|
17 |
} |
modules/uoa-repository-manager-service/branches/dev-api/src/main/java/eu/dnetlib/repo/manager/service/controllers/RepositoryApi.java | ||
---|---|---|
2 | 2 |
|
3 | 3 |
import eu.dnetlib.domain.data.Repository; |
4 | 4 |
import eu.dnetlib.domain.data.RepositoryInterface; |
5 |
import eu.dnetlib.domain.functionality.UserProfile; |
|
5 | 6 |
import eu.dnetlib.repo.manager.shared.*; |
6 | 7 |
import io.swagger.annotations.Api; |
7 | 8 |
import org.json.JSONException; |
... | ... | |
68 | 69 |
Repository addRepository(String datatype, Repository repository) throws Exception; |
69 | 70 |
|
70 | 71 |
|
71 |
@RequestMapping(value = "/deleteInterface", method = RequestMethod.DELETE) |
|
72 |
@ResponseBody |
|
72 |
@RequestMapping(value = "/deleteInterface/", method = RequestMethod.DELETE) |
|
73 | 73 |
void deleteRepositoryInterface(String id); |
74 | 74 |
|
75 | 75 |
@RequestMapping(value = "/addInterface", method = RequestMethod.POST, |
... | ... | |
134 | 134 |
@ResponseBody |
135 | 135 |
Map<String, String> getListLatestUpdate(String mode) throws RepositoryServiceException, JSONException; |
136 | 136 |
|
137 |
@RequestMapping(value = "/updateRepositoryInterface", method = RequestMethod.POST, |
|
138 |
consumes = MediaType.APPLICATION_JSON_VALUE) |
|
139 |
@ResponseBody |
|
140 |
RepositoryInterface updateRepositoryInterface(String repositoryId,RepositoryInterface repositoryInterface) throws JSONException; |
|
137 | 141 |
|
138 | 142 |
|
143 |
|
|
139 | 144 |
} |
modules/uoa-repository-manager-service/branches/dev-api/src/main/java/eu/dnetlib/repo/manager/service/controllers/UserApiImpl.java | ||
---|---|---|
30 | 30 |
LOGGER.debug("User authentication : " + authentication); |
31 | 31 |
Map<String,Object> body = new HashMap<>(); |
32 | 32 |
body.put("sub",authentication.getSub()); |
33 |
if(authentication.getUserInfo().getName() == null || authentication.getUserInfo().getName().equals("")) {
|
|
33 |
if(authentication.getUserInfo().getName() == null || authentication.getUserInfo().getName().equals("")) |
|
34 | 34 |
body.put("name",authentication.getUserInfo().getGivenName() + " " + authentication.getUserInfo().getFamilyName()); |
35 |
} else {
|
|
35 |
else
|
|
36 | 36 |
body.put("name",authentication.getUserInfo().getName()); |
37 |
} |
|
37 |
|
|
38 |
for (GrantedAuthority authority : authentication.getAuthorities()) |
|
39 |
LOGGER.debug("Role: " + authority.getAuthority()); |
|
40 |
|
|
38 | 41 |
body.put("email",authentication.getUserInfo().getEmail()); |
39 | 42 |
List<String> roles = authentication.getAuthorities().stream().map(GrantedAuthority::getAuthority).collect(Collectors.toList()); |
40 | 43 |
body.put("role",roles); |
modules/uoa-repository-manager-service/branches/dev-api/src/main/java/eu/dnetlib/repo/manager/service/controllers/EmailUtilsImpl.java | ||
---|---|---|
1 |
package eu.dnetlib.repo.manager.service.controllers; |
|
2 |
|
|
3 |
import eu.dnetlib.domain.data.PiwikInfo; |
|
4 |
import eu.dnetlib.repo.manager.service.config.CascadingPropertyLoader; |
|
5 |
import eu.dnetlib.utils.MailLibrary; |
|
6 |
import org.apache.log4j.Logger; |
|
7 |
import org.springframework.beans.factory.annotation.Autowired; |
|
8 |
import org.springframework.beans.factory.annotation.Value; |
|
9 |
import org.springframework.stereotype.Component; |
|
10 |
|
|
11 |
import java.io.PrintWriter; |
|
12 |
import java.io.StringWriter; |
|
13 |
import java.io.Writer; |
|
14 |
import java.util.ArrayList; |
|
15 |
import java.util.List; |
|
16 |
|
|
17 |
|
|
18 |
@Component("emailUtils") |
|
19 |
public class EmailUtilsImpl implements EmailUtils { |
|
20 |
|
|
21 |
private static Logger LOGGER = Logger.getLogger(EmailUtilsImpl.class); |
|
22 |
|
|
23 |
private List<String> specialRecipients = new ArrayList<String>(); |
|
24 |
private boolean override = false, logonly = false; |
|
25 |
private String overrideEmail = null, from = null; |
|
26 |
|
|
27 |
@Autowired |
|
28 |
private MailLibrary mailLibrary; |
|
29 |
|
|
30 |
@Autowired |
|
31 |
private CascadingPropertyLoader pLoader; |
|
32 |
|
|
33 |
@Value("${services.repo-manager.baseUrl}") |
|
34 |
private String baseUrl; |
|
35 |
|
|
36 |
@Value("${services.repo-manager.adminEmail}") |
|
37 |
private String adminEmail; |
|
38 |
|
|
39 |
@Value("${services.repomanager.usagestats.adminEmail}") |
|
40 |
private String usageStatsAdminEmail; |
|
41 |
|
|
42 |
@Override |
|
43 |
public void reportException(Exception exception) { |
|
44 |
Writer writer = new StringWriter(); |
|
45 |
PrintWriter printWriter = new PrintWriter(writer); |
|
46 |
exception.printStackTrace(printWriter); |
|
47 |
|
|
48 |
List<String> recipients = new ArrayList<String>(); |
|
49 |
|
|
50 |
try { |
|
51 |
recipients.add(this.adminEmail); |
|
52 |
String message = "An exception has occurred:\n"+writer.toString(); |
|
53 |
String subject = "Automatic Bug Report"; |
|
54 |
this.sendMail(recipients, subject, message, false, null); |
|
55 |
} catch (Exception e) { |
|
56 |
LOGGER.error("Error sending error report", e); |
|
57 |
} |
|
58 |
} |
|
59 |
|
|
60 |
@Override |
|
61 |
public void sendAdministratorRequestToEnableMetrics(PiwikInfo piwikInfo) throws Exception { |
|
62 |
|
|
63 |
try { |
|
64 |
String subject = "[OpenAIRE-Usage Statistics] New request to enable usage statistics"; |
|
65 |
|
|
66 |
String message = "Dear administrator,\n" + |
|
67 |
"\n" + |
|
68 |
"we have received a request to enable the OpenAIRE usage statistics for the following repository \n" + |
|
69 |
"\n" + |
|
70 |
"Repository - " + piwikInfo.getRepositoryName() + ", " + piwikInfo.getCountry() + " (" + piwikInfo.getRepositoryId() + ")\n" + |
|
71 |
"Requestor - " + piwikInfo.getRequestorName() + ", " + piwikInfo.getRequestorEmail() + "\n" + |
|
72 |
"Piwik ID - " + piwikInfo.getSiteId() + "\n" + |
|
73 |
"Authentication token - " + piwikInfo.getAuthenticationToken() + "\n" + |
|
74 |
"\n" + |
|
75 |
"For more information about this request, go here: \n" + |
|
76 |
this.baseUrl + "/#admin/metrics\n" + |
|
77 |
"\n" + |
|
78 |
"Best,\n" + |
|
79 |
"The OpenAIRE team"; |
|
80 |
|
|
81 |
this.sendMail(this.usageStatsAdminEmail, subject, message, false, null); |
|
82 |
|
|
83 |
} catch (Exception e) { |
|
84 |
LOGGER.error("Error while sending request to enable metrics email to administrator: " + this.usageStatsAdminEmail, e); |
|
85 |
throw e; |
|
86 |
} |
|
87 |
} |
|
88 |
|
|
89 |
@Override |
|
90 |
public void sendUserRequestToEnableMetrics(PiwikInfo piwikInfo) throws Exception { |
|
91 |
|
|
92 |
try { |
|
93 |
String subject = "[OpenAIRE-Usage Statistics] Your request to enable usage statistics"; |
|
94 |
|
|
95 |
String message = "Dear " + piwikInfo.getRequestorName() + ",\n" + |
|
96 |
"\n" + |
|
97 |
"we have received your request to enable the OpenAIRE usage statistics for your repository\n" + |
|
98 |
"\n" + |
|
99 |
"Repository - " + piwikInfo.getRepositoryName() + ", " + piwikInfo.getCountry() + " (" + piwikInfo.getRepositoryId() + ")\n" + |
|
100 |
"Piwik ID - " + piwikInfo.getSiteId() + "\n" + |
|
101 |
"Authentication token - " + piwikInfo.getAuthenticationToken() + "\n" + |
|
102 |
"\n" + |
|
103 |
"In order to enable the usage statistics, you must install the OpenAIRE's tracking code in your repository software. " + |
|
104 |
"OpenAIRE's usage statistics service tracking code is maintained on Github as a patch for various versions of DSpace " + |
|
105 |
"(https://github.com/openaire/OpenAIRE-Piwik-DSpace) and as an Eprints plugin for version 3 " + |
|
106 |
"(https://github.com/openaire/EPrints-OAPiwik). In case the platform is different from DSpace or EPrints please contact " + |
|
107 |
"the OpenAIRE team in repositoryusagestats@openaire.eu in order to find a solution.\n" + |
|
108 |
"\n" + |
|
109 |
"For more information about your request and configuration details, go here: \n" + |
|
110 |
this.baseUrl + "/#getImpact/instructions/" + piwikInfo.getRepositoryId() + "\n" + |
|
111 |
"\n" + |
|
112 |
"Once you have finished configuring your repository or if you have any questions, please notify the OpenAIRE team by sending \n" + |
|
113 |
"an email to repositoryusagestats@openaire.eu\n" + |
|
114 |
"\n" + |
|
115 |
"Best,\n" + |
|
116 |
"The OpenAIRE team"; |
|
117 |
|
|
118 |
this.sendMail(piwikInfo.getRequestorEmail(), subject, message, false, null); |
|
119 |
|
|
120 |
} catch (Exception e) { |
|
121 |
LOGGER.error("Error while sending request to enable metrics email to user: " + piwikInfo.getRequestorEmail(), e); |
|
122 |
throw e; |
|
123 |
} |
|
124 |
} |
|
125 |
|
|
126 |
@Override |
|
127 |
public void sendAdministratorMetricsEnabled(PiwikInfo piwikInfo) throws Exception { |
|
128 |
|
|
129 |
try { |
|
130 |
String subject = "[OpenAIRE-Usage Statistics] Usage statistics have been enabled"; |
|
131 |
|
|
132 |
String message = "Dear administrator,\n" + |
|
133 |
"\n" + |
|
134 |
"The installation and configuration of OpenAIRE's tracking code for the following repository " + |
|
135 |
"has been completed and validated and the usage statistics have been enabled in OpenAIRE.\n" + |
|
136 |
"\n" + |
|
137 |
"Repository - " + piwikInfo.getRepositoryName() + ", " + piwikInfo.getCountry() + " (" + piwikInfo.getRepositoryId() + ")\n" + |
|
138 |
"Requestor - " + piwikInfo.getRequestorName() + ", " + piwikInfo.getRequestorEmail() + "\n" + |
|
139 |
"Piwik ID - " + piwikInfo.getSiteId() + "\n" + |
|
140 |
"Authentication token - " + piwikInfo.getAuthenticationToken() + "\n" + |
|
141 |
"\n" + |
|
142 |
"Best,\n" + |
|
143 |
"The OpenAIRE team"; |
|
144 |
|
|
145 |
this.sendMail(piwikInfo.getRequestorEmail(), subject, message, false, null); |
|
146 |
|
|
147 |
} catch (Exception e) { |
|
148 |
LOGGER.error("Error while sending metrics enabled notification email to administator: " + this.usageStatsAdminEmail, e); |
|
149 |
throw e; |
|
150 |
} |
|
151 |
} |
|
152 |
|
|
153 |
@Override |
|
154 |
public void sendUserMetricsEnabled(PiwikInfo piwikInfo) throws Exception { |
|
155 |
|
|
156 |
try { |
|
157 |
String subject = "[OpenAIRE-Usage Statistics] Usage statistics have been enabled"; |
|
158 |
|
|
159 |
String message = "Dear " + piwikInfo.getRequestorName() + ",\n" + |
|
160 |
"\n" + |
|
161 |
"The installation and configuration of OpenAIRE's tracking code for your repository \"" + piwikInfo.getRepositoryName() + |
|
162 |
"\" has been completed and validated and the usage statistics have been enabled in OpenAIRE.\n" + |
|
163 |
"\n" + |
|
164 |
"You can preview the statistics in your repository's dashboard: \n" + |
|
165 |
this.baseUrl + "/#getImpact/" + piwikInfo.getRepositoryId() + "\n" + |
|
166 |
"\n" + |
|
167 |
" For more information and questions, you can contact the openaire support team by sending an email to " + |
|
168 |
"repositoryusagestats@openaire.eu\n" + |
|
169 |
"\n" + |
|
170 |
"Best,\n" + |
|
171 |
"The OpenAIRE team"; |
|
172 |
|
|
173 |
this.sendMail(piwikInfo.getRequestorEmail(), subject, message, false, null); |
|
174 |
|
|
175 |
} catch (Exception e) { |
|
176 |
LOGGER.error("Error while sending metrics enabled notification email to user: " + piwikInfo.getRequestorEmail(), e); |
|
177 |
throw e; |
|
178 |
} |
|
179 |
} |
|
180 |
|
|
181 |
private void sendMail(String email, String subject, String message, boolean sendToSpecial, List<String> repoAdminMails) throws Exception { |
|
182 |
ArrayList<String> to = new ArrayList<String>(); |
|
183 |
to.add(email); |
|
184 |
this.sendMail(to,subject,message,sendToSpecial,repoAdminMails); |
|
185 |
} |
|
186 |
|
|
187 |
private void sendMail(List<String> recipients, String subject, String message, boolean sendToSpecial, List<String> repoAdminMails) throws Exception { |
|
188 |
|
|
189 |
try { |
|
190 |
if (sendToSpecial) { |
|
191 |
recipients.addAll(this.specialRecipients); |
|
192 |
} |
|
193 |
|
|
194 |
if (repoAdminMails != null) |
|
195 |
recipients.addAll(repoAdminMails); |
|
196 |
|
|
197 |
if (this.override) { |
|
198 |
recipients.clear(); |
|
199 |
recipients.add(overrideEmail); |
|
200 |
} |
|
201 |
if (!logonly) |
|
202 |
mailLibrary.sendEmail(recipients.toArray(new String[]{}), subject, message); |
|
203 |
LOGGER.debug("Sending mail to Recipients: " + recipients + " Subject: " + subject + " Message: " + message); |
|
204 |
} catch (Exception e) { |
|
205 |
LOGGER.error("Error sending mail to Recipients: " + recipients + " Subject: " + subject + " Message: " + message, e); |
|
206 |
throw new Exception(e); |
|
207 |
} |
|
208 |
} |
|
209 |
|
|
210 |
private String getEmailProperty(String key) { |
|
211 |
return pLoader.getProperties().getProperty(key); |
|
212 |
} |
|
213 |
|
|
214 |
public void setSpecialRecipients(String specialRecipients) { |
|
215 |
String[] recps = specialRecipients.split(","); |
|
216 |
|
|
217 |
for (String recp : recps) { |
|
218 |
recp = recp.trim(); |
|
219 |
|
|
220 |
this.specialRecipients.add(recp); |
|
221 |
} |
|
222 |
} |
|
223 |
|
|
224 |
|
|
225 |
public void setOverride(boolean override) { |
|
226 |
this.override = override; |
|
227 |
} |
|
228 |
|
|
229 |
public void setOverrideEmail(String overrideEmail) { |
|
230 |
this.overrideEmail = overrideEmail; |
|
231 |
} |
|
232 |
|
|
233 |
public String getFrom() { |
|
234 |
return from; |
|
235 |
} |
|
236 |
|
|
237 |
public void setFrom(String from) { |
|
238 |
this.from = from; |
|
239 |
} |
|
240 |
|
|
241 |
public boolean isLogonly() { |
|
242 |
return logonly; |
|
243 |
} |
|
244 |
|
|
245 |
public void setLogonly(boolean logonly) { |
|
246 |
this.logonly = logonly; |
|
247 |
} |
|
248 |
|
|
249 |
|
|
250 |
} |
modules/uoa-repository-manager-service/branches/dev-api/src/main/java/eu/dnetlib/repo/manager/service/controllers/RepositoryApiImpl.java | ||
---|---|---|
151 | 151 |
|
152 | 152 |
String countryCode = countriesMap.get(country); |
153 | 153 |
String filterKey = "UNKNOWN"; |
154 |
if (mode.equalsIgnoreCase("opendoar")) {
|
|
154 |
if (mode.equalsIgnoreCase("opendoar")) |
|
155 | 155 |
filterKey = "openaire____::opendoar"; |
156 |
} else if (mode.equalsIgnoreCase("re3data")) {
|
|
156 |
else if (mode.equalsIgnoreCase("re3data"))
|
|
157 | 157 |
filterKey = "openaire____::re3data"; |
158 |
} else if (mode.equalsIgnoreCase("jour_aggr")) { |
|
159 |
filterKey = "infrastruct_::openaire"; |
|
160 |
} |
|
161 | 158 |
|
159 |
|
|
162 | 160 |
LOGGER.debug("Country code equals : " + countryCode); |
163 | 161 |
LOGGER.debug("Filter mode equals : " + filterKey); |
162 |
|
|
164 | 163 |
UriComponents uriComponents = searchDatasource(String.valueOf(page),String.valueOf(size)); |
165 | 164 |
RequestFilter requestFilter = new RequestFilter(); |
166 | 165 |
requestFilter.setCountry(countryCode); |
... | ... | |
168 | 167 |
String rs = restTemplate.postForObject(uriComponents.toUri(),requestFilter, String.class); |
169 | 168 |
JSONArray jsonArray = (JSONArray) new JSONObject(rs).get("datasourceInfo"); |
170 | 169 |
while (jsonArray.length() > 0 ) { |
171 |
List<Repository> rep = Converter.jsonToRepositoryList(new JSONObject(rs)); |
|
172 |
|
|
173 |
Collection<Repository> repos = this.getRepositoriesByMode(filterKey, rep); |
|
174 |
resultSet.addAll(repos); |
|
175 |
|
|
170 |
resultSet.addAll(this.getRepositoriesByMode(filterKey, Converter.jsonToRepositoryList(new JSONObject(rs)))); |
|
176 | 171 |
page += 1; |
177 | 172 |
uriComponents = searchDatasource(String.valueOf(page),String.valueOf(size)); |
178 |
|
|
179 | 173 |
rs = restTemplate.postForObject(uriComponents.toUri(),requestFilter, String.class); |
180 | 174 |
jsonArray = (JSONArray) new JSONObject(rs).get("datasourceInfo"); |
181 | 175 |
} |
... | ... | |
198 | 192 |
for (Repository r : rs) { |
199 | 193 |
if (r.getCollectedFrom() != null && r.getCollectedFrom().equals(mode)) |
200 | 194 |
reps.add(r); |
195 |
|
|
201 | 196 |
} |
202 | 197 |
return reps; |
203 | 198 |
} |
... | ... | |
298 | 293 |
|
299 | 294 |
repository = this.setRepositoryFeatures(datatype,repository); |
300 | 295 |
LOGGER.debug("storing " + datatype + " repository with id: " + repository.getId()); |
301 |
if (!datatype.equalsIgnoreCase("opendoar") && !datatype.equalsIgnoreCase("re3data")) { |
|
302 |
if (datatype.equalsIgnoreCase("journal") || datatype.equalsIgnoreCase("aggregator")) { |
|
303 |
LOGGER.debug("looking if " + datatype + " " + repository.getOfficialName() + " is already in datasources"); |
|
304 |
if (getRepositoryById(repository.getId()) != null) { |
|
305 |
String retMessage = datatype + " '" + repository.getOfficialName() + "' is already in datasources."; |
|
306 |
repository.getInterfaces().clear(); |
|
307 |
LOGGER.debug(retMessage); |
|
308 |
} else { |
|
309 |
LOGGER.debug(datatype + " " + repository.getOfficialName() + " is not in datasources. Inserting.."); |
|
310 |
this.storeRepository(repository); |
|
311 |
} |
|
312 |
} |
|
313 |
} else { |
|
314 |
this.updateRepository(repository); |
|
315 |
} |
|
316 |
|
|
317 |
LOGGER.debug("Inserting Interfaces"); |
|
318 |
Iterator var11 = repository.getInterfaces().iterator(); |
|
319 |
|
|
320 |
while (var11.hasNext()) { |
|
321 |
RepositoryInterface iFace = (RepositoryInterface) var11.next(); |
|
322 |
if (!iFace.getBaseUrl().isEmpty() && !iFace.getDesiredCompatibilityLevel().isEmpty()) { |
|
323 |
if (iFace.getId() != null && !iFace.getId().isEmpty()) { |
|
324 |
LOGGER.debug("updating iface.."); |
|
325 |
this.updateInterface(datatype,iFace); |
|
326 |
LOGGER.debug("updated successfully"); |
|
327 |
} else { |
|
328 |
LOGGER.debug("adding new iface.."); |
|
329 |
this.registerRepositoryInterface(repository.getId(),iFace,datatype); |
|
330 |
} |
|
331 |
} |
|
332 |
} |
|
296 |
this.storeRepository(repository); |
|
333 | 297 |
return repository; |
334 | 298 |
} |
335 | 299 |
|
... | ... | |
345 | 309 |
return repository; |
346 | 310 |
} |
347 | 311 |
|
348 |
private void updateRegisteredByValue(String id, String registeredBy) { |
|
349 |
|
|
350 |
LOGGER.debug("Updating registered by value with : " + registeredBy ); |
|
351 |
UriComponents uriComponents = UriComponentsBuilder |
|
352 |
.fromHttpUrl(baseAddress + "/ds/registeredby/") |
|
353 |
.queryParam("dsId",id) |
|
354 |
.queryParam("registeredBy", registeredBy) |
|
355 |
.build() |
|
356 |
.encode(); |
|
357 |
|
|
358 |
restTemplate.postForObject(uriComponents.toUri(), null,String.class); |
|
359 |
} |
|
360 |
|
|
361 | 312 |
private Repository setRepositoryFeatures(String datatype, Repository repository) { |
362 | 313 |
|
363 | 314 |
//TODO update map |
... | ... | |
415 | 366 |
|
416 | 367 |
} |
417 | 368 |
|
418 |
private RepositoryInterface createRepositoryInterface(Repository repo, RepositoryInterface iFace, String datatype) { |
|
419 |
|
|
420 |
iFace.setContentDescription("metadata"); |
|
421 |
iFace.setCompliance("UNKNOWN"); |
|
422 |
if (datatype.equals("re3data")) { |
|
423 |
iFace.setAccessFormat("oai_datacite"); |
|
424 |
} else { |
|
425 |
iFace.setAccessFormat("oai_dc"); |
|
426 |
} |
|
427 |
|
|
428 |
if (repo.getDatasourceClass() != null && !repo.getDatasourceClass().isEmpty()) { |
|
429 |
iFace.setTypology(repo.getDatasourceClass()); |
|
430 |
} else if (datatype.equalsIgnoreCase("journal")) { |
|
431 |
iFace.setTypology("pubsrepository::journal"); |
|
432 |
} else if (datatype.equalsIgnoreCase("aggregator")) { |
|
433 |
iFace.setTypology("aggregator::pubsrepository::unknown"); |
|
434 |
} else if (datatype.equalsIgnoreCase("opendoar")) { |
|
435 |
iFace.setTypology("pubsrepository::unknown"); |
|
436 |
} else if (datatype.equalsIgnoreCase("re3data")) { |
|
437 |
iFace.setTypology("datarepository::unknown"); |
|
438 |
} |
|
439 |
|
|
440 |
iFace.setRemovable(true); |
|
441 |
iFace.setAccessProtocol("oai"); |
|
442 |
iFace.setMetadataIdentifierPath("//*[local-name()='header']/*[local-name()='identifier']"); |
|
443 |
iFace.setId("api_________::" + repo.getId() + "::" + UUID.randomUUID().toString().substring(0, 8)); |
|
444 |
if (iFace.getAccessSet().isEmpty()) { |
|
445 |
LOGGER.debug("set is empty: " + iFace.getAccessSet()); |
|
446 |
iFace.removeAccessSet(); |
|
447 |
} |
|
448 |
return iFace; |
|
449 |
} |
|
450 |
|
|
451 | 369 |
private void storeRepository(Repository repository) throws JSONException { |
452 | 370 |
|
453 | 371 |
Date utilDate = new Date(); |
454 | 372 |
Timestamp date = new Timestamp(utilDate.getTime()); |
455 | 373 |
repository.setDateOfCollection(date); |
456 | 374 |
repository.setAggregator("OPENAIRE"); |
375 |
repository.setCountryCode(countriesMap.get(repository.getCountryName())); |
|
457 | 376 |
|
458 | 377 |
UriComponents uriComponents = UriComponentsBuilder |
459 | 378 |
.fromHttpUrl(baseAddress + "/ds/add/") |
... | ... | |
465 | 384 |
} |
466 | 385 |
|
467 | 386 |
@Override |
468 |
public void deleteRepositoryInterface(@PathVariable("id") String id){
|
|
387 |
public void deleteRepositoryInterface(@RequestParam("id") String id){
|
|
469 | 388 |
UriComponents uriComponents = UriComponentsBuilder |
470 | 389 |
.fromHttpUrl(baseAddress + "/ds/api/") |
471 |
.path("/{id}/")
|
|
390 |
.path("/{id}") |
|
472 | 391 |
.build().expand(id).encode(); |
392 |
LOGGER.debug(uriComponents.toUri()); |
|
473 | 393 |
restTemplate.delete(uriComponents.toUri()); |
474 | 394 |
} |
475 | 395 |
|
... | ... | |
477 | 397 |
public RepositoryInterface addRepositoryInterface(@RequestParam("datatype") String datatype, |
478 | 398 |
@RequestParam("repoId") String repoId, |
479 | 399 |
@RequestBody RepositoryInterface repositoryInterface) throws JSONException { |
480 |
return registerRepositoryInterface(repoId,repositoryInterface,datatype); |
|
481 |
} |
|
482 |
|
|
483 |
private RepositoryInterface registerRepositoryInterface(String repoId, RepositoryInterface iFace, String datatype) { |
|
484 |
Repository e = null; |
|
485 | 400 |
try { |
486 |
e = this.getRepositoryById(repoId); |
|
487 |
iFace = createRepositoryInterface(e,iFace,datatype); |
|
401 |
Repository e = this.getRepositoryById(repoId); |
|
402 |
repositoryInterface = createRepositoryInterface(e,repositoryInterface,datatype); |
|
403 |
String json_interface = Converter.repositoryInterfaceObjectToJson(e,repositoryInterface); |
|
488 | 404 |
|
489 |
String json_interface = Converter.repositoryInterfaceObjectToJson(e,iFace); |
|
490 |
LOGGER.debug("iFace equals -> " + json_interface); |
|
491 | 405 |
UriComponents uriComponents = UriComponentsBuilder |
492 | 406 |
.fromHttpUrl(baseAddress + "/ds/api/add/") |
493 | 407 |
.build() |
494 | 408 |
.encode(); |
495 | 409 |
|
496 |
|
|
497 | 410 |
HttpEntity<String> httpEntity = new HttpEntity <String> (json_interface,httpHeaders); |
498 | 411 |
restTemplate.postForObject(uriComponents.toUri(),httpEntity,String.class); |
499 |
return iFace;
|
|
412 |
return repositoryInterface;
|
|
500 | 413 |
|
501 | 414 |
} catch (JSONException e1) { |
502 | 415 |
LOGGER.debug("Error parsing json ",e1); |
... | ... | |
504 | 417 |
return null; |
505 | 418 |
} |
506 | 419 |
|
420 |
private RepositoryInterface createRepositoryInterface(Repository repo, RepositoryInterface iFace, String datatype) { |
|
421 |
|
|
422 |
iFace.setContentDescription("metadata"); |
|
423 |
iFace.setCompliance("UNKNOWN"); |
|
424 |
|
|
425 |
if (datatype.equals("re3data")) |
|
426 |
iFace.setAccessFormat("oai_datacite"); |
|
427 |
else |
|
428 |
iFace.setAccessFormat("oai_dc"); |
|
429 |
|
|
430 |
|
|
431 |
if (repo.getDatasourceClass() != null && !repo.getDatasourceClass().isEmpty()) |
|
432 |
iFace.setTypology(repo.getDatasourceClass()); |
|
433 |
else if (datatype.equalsIgnoreCase("journal")) |
|
434 |
iFace.setTypology("pubsrepository::journal"); |
|
435 |
else if (datatype.equalsIgnoreCase("aggregator")) |
|
436 |
iFace.setTypology("aggregator::pubsrepository::unknown"); |
|
437 |
else if (datatype.equalsIgnoreCase("opendoar")) |
|
438 |
iFace.setTypology("pubsrepository::unknown"); |
|
439 |
else if (datatype.equalsIgnoreCase("re3data")) |
|
440 |
iFace.setTypology("datarepository::unknown"); |
|
441 |
|
|
442 |
iFace.setRemovable(true); |
|
443 |
iFace.setAccessProtocol("oai"); |
|
444 |
iFace.setMetadataIdentifierPath("//*[local-name()='header']/*[local-name()='identifier']"); |
|
445 |
iFace.setId("api_________::" + repo.getId() + "::" + UUID.randomUUID().toString().substring(0, 8)); |
|
446 |
if (iFace.getAccessSet().isEmpty()) { |
|
447 |
LOGGER.debug("set is empty: " + iFace.getAccessSet()); |
|
448 |
iFace.removeAccessSet(); |
|
449 |
} |
|
450 |
return iFace; |
|
451 |
} |
|
452 |
|
|
507 | 453 |
@Override |
508 | 454 |
public List<String> getDnetCountries() { |
509 | 455 |
LOGGER.debug("Getting dnet-countries!"); |
... | ... | |
656 | 602 |
return Collections.singletonMap("lastCollectionDate", getRepositoryInterface("openaire____::"+mode).get(1).getLastCollectionDate()); |
657 | 603 |
} |
658 | 604 |
|
605 |
@Override |
|
606 |
public RepositoryInterface updateRepositoryInterface(@RequestParam("repoId") String repoId, |
|
607 |
@RequestBody RepositoryInterface repositoryInterface) throws JSONException { |
|
608 |
|
|
609 |
this.updateBaseUrl(repoId,repositoryInterface.getId(),repositoryInterface.getBaseUrl()); |
|
610 |
this.updateCompliance(repoId,repositoryInterface.getId(),repositoryInterface.getCompliance()); |
|
611 |
return repositoryInterface; |
|
612 |
} |
|
613 |
|
|
614 |
|
|
615 |
private void updateBaseUrl(String repositoryId, String repositoryInterfaceId, String baseUrl) { |
|
616 |
UriComponents uriComponents = UriComponentsBuilder |
|
617 |
.fromHttpUrl(baseAddress + "/ds/api/baseurl") |
|
618 |
.queryParam("dsId",repositoryId) |
|
619 |
.queryParam("apiId",repositoryInterfaceId) |
|
620 |
.queryParam("baseUrl",baseUrl) |
|
621 |
.build().encode(); |
|
622 |
restTemplate.postForObject(uriComponents.toUri(),null,String.class); |
|
623 |
} |
|
624 |
|
|
625 |
private void updateCompliance(String repositoryId, String repositoryInterfaceId,String compliance) { |
|
626 |
UriComponents uriComponents = UriComponentsBuilder |
|
627 |
.fromHttpUrl(baseAddress + "/ds/api/compliance") |
|
628 |
.queryParam("dsId",repositoryId) |
|
629 |
.queryParam("apiId",repositoryInterfaceId) |
|
630 |
.queryParam("compliance",compliance) |
|
631 |
.build().encode(); |
|
632 |
restTemplate.postForObject(uriComponents.toUri(),null,String.class); |
|
633 |
} |
|
634 |
|
|
659 | 635 |
private MetricsNumbers getMetricsNumbers(String openAIREID) throws BrokerException { |
660 | 636 |
|
661 | 637 |
//build the uri params |
modules/uoa-repository-manager-service/branches/dev-api/src/main/java/eu/dnetlib/repo/manager/service/controllers/PiWikApi.java | ||
---|---|---|
2 | 2 |
|
3 | 3 |
|
4 | 4 |
import eu.dnetlib.domain.data.PiwikInfo; |
5 |
import eu.dnetlib.domain.data.Repository; |
|
6 |
import eu.dnetlib.domain.functionality.UserProfile; |
|
7 |
import eu.dnetlib.repo.manager.shared.RepositoryServiceException; |
|
5 | 8 |
import io.swagger.annotations.Api; |
6 | 9 |
import org.springframework.http.MediaType; |
7 | 10 |
import org.springframework.web.bind.annotation.*; |
... | ... | |
31 | 34 |
@RequestMapping(value = "/getOpenaireId/{repositoryId}" , method = RequestMethod.GET,produces = MediaType.APPLICATION_JSON_VALUE) |
32 | 35 |
@ResponseBody |
33 | 36 |
String getOpenaireId(String repositoryid); |
37 |
|
Also available in: Unified diff
1. Add roles for aai
2. Changes on converter file for new interface object
3. Move emailUtils to avoid bug on bean definitions
4. Add openaire provider authorities mapper class
5. Bug fixes on controllers