30 |
30 |
private static final long serialVersionUID = -2912240396302341015L;
|
31 |
31 |
private static Logger logger = Logger.getLogger(RepoRegistration.class);
|
32 |
32 |
|
33 |
|
|
34 |
33 |
private VocabularyLoader vocabularyLoader = null;
|
35 |
34 |
private Map<String, Object> session;
|
36 |
35 |
private List<String> adminEmails;
|
... | ... | |
130 |
129 |
fileIface.setAccessProtocol("files_from_metadata");
|
131 |
130 |
fileIface.getAccessParams().put("xpath",pubFileIface.getXpath());
|
132 |
131 |
}
|
133 |
|
|
134 |
132 |
//
|
135 |
133 |
logger.debug("source: " + pubFileIface.getMethodology());
|
136 |
134 |
logger.debug("protocol: " + pubFileIface.getProtocol());
|
... | ... | |
151 |
149 |
return "exception";
|
152 |
150 |
}
|
153 |
151 |
|
154 |
|
try {
|
155 |
|
// Map <String, String> compMap;
|
156 |
|
// compMap = getRepoAPI().getRepoCompatibility(repo.getOfficialName(), repo.getId());
|
157 |
|
if (!this.getOpenAIREValidator().userOverridesRepoRegistration((String) session.get(Constants.loggedInField))) {
|
158 |
|
logger.debug("User is not regRepoOverrrider");
|
159 |
|
//FOR TESTING
|
160 |
|
// this.adminEmails.clear();
|
161 |
|
// this.adminEmails.add((String) session.get(Constants.loggedInField));
|
162 |
|
//FOR TESTING
|
163 |
|
logger.debug("interfacesToRegister : " + interfacesToRegister.size());
|
164 |
|
for (RepositoryInterface iFace : interfacesToRegister) {
|
165 |
|
if(iFace.getAccessSet() == null || iFace.getAccessSet().isEmpty()) {
|
166 |
|
logger.debug("updating set to none");
|
167 |
|
iFace.setAccessSet("none");
|
168 |
|
}
|
169 |
|
this.printInterface(iFace);
|
170 |
|
// logger.debug("current ComplianceEname: "+ iFace.getComplianceName());
|
171 |
|
// logger.debug("current ComplianceCode: "+ iFace.getCompliance());
|
172 |
|
// logger.debug("desired Compliance: "+ iFace.getDesiredCompatibilityLevel());
|
173 |
|
// if ((this.getDbMode().equalsIgnoreCase("direct") && !compMap.containsKey(iFace.getDesiredCompatibilityLevel()))
|
174 |
|
// || (this.getDbMode().equalsIgnoreCase("dms") && (!(iFace.getDesiredCompatibilityLevel().equalsIgnoreCase(getComplianceCode(iFace.getCompliance()))) &&
|
175 |
|
// !(iFace.getDesiredCompatibilityLevel().equalsIgnoreCase("openaire2.0_data") && getComplianceCode(iFace.getCompliance()).equalsIgnoreCase("openaire2.0"))))){
|
176 |
|
if (this.getDbMode().equalsIgnoreCase("dms") && (!(iFace.getDesiredCompatibilityLevel().equalsIgnoreCase(iFace.getCompliance())) &&
|
177 |
|
!(iFace.getDesiredCompatibilityLevel().equalsIgnoreCase("openaire2.0_data") && iFace.getCompliance().equalsIgnoreCase("openaire2.0")))){
|
178 |
|
logger.debug("initiating preregistration validations on repo :" + iFace.getBaseUrl() + "for set: " + iFace.getAccessSet() + " and compliance: " + iFace.getDesiredCompatibilityLevel());
|
179 |
|
JobForRegistration job = new JobForRegistration();
|
180 |
|
job.setActivation_id(UUID.randomUUID().toString());
|
181 |
|
job.setAdmin_emails(this.adminEmails);
|
182 |
|
job.setBaseurl(iFace.getBaseUrl());
|
183 |
|
job.setDatasource_id(repo.getId());
|
184 |
|
job.setDesired_compatiblity_level(iFace.getDesiredCompatibilityLevel());
|
185 |
|
job.setInterface_id(iFace.getId());
|
186 |
|
job.setInterface_id_old(null);
|
187 |
|
job.setOfficial_name(repo.getOfficialName());
|
188 |
|
job.setRepo_type(repoType);
|
189 |
|
job.setUser((String) session.get(Constants.loggedInField));
|
190 |
|
job.setValidation_set(iFace.getAccessSet());
|
191 |
|
job.setPurpose("register");
|
|
152 |
logger.debug("interfacesToRegister : " + interfacesToRegister.size());
|
|
153 |
if (interfacesToRegister.size() > 0) {
|
|
154 |
try {
|
|
155 |
// Map <String, String> compMap;
|
|
156 |
// compMap = getRepoAPI().getRepoCompatibility(repo.getOfficialName(), repo.getId());
|
|
157 |
if (!this.getOpenAIREValidator().userOverridesRepoRegistration((String) session.get(Constants.loggedInField))) {
|
|
158 |
logger.debug("User is not regRepoOverrrider");
|
|
159 |
//FOR TESTING
|
|
160 |
// this.adminEmails.clear();
|
|
161 |
// this.adminEmails.add((String) session.get(Constants.loggedInField));
|
|
162 |
//FOR TESTING
|
|
163 |
|
|
164 |
for (RepositoryInterface iFace : interfacesToRegister) {
|
|
165 |
if(iFace.getAccessSet() == null || iFace.getAccessSet().isEmpty()) {
|
|
166 |
logger.debug("updating set to none");
|
|
167 |
iFace.setAccessSet("none");
|
|
168 |
}
|
192 |
169 |
this.printInterface(iFace);
|
193 |
|
this.getOpenAIREValidator().storeJobForRegistration(job);
|
194 |
|
this.getOpenAIREValidator().preRegistrationValidations(job);
|
195 |
|
} else {
|
196 |
|
logger.debug("repo :" + iFace.getBaseUrl() + " for : " + iFace.getAccessSet() + " is already compliant on desiredcompliance: " + iFace.getCompliance());
|
197 |
|
List<String> rec = new ArrayList<String>();
|
198 |
|
rec.add((String) session.get(Constants.loggedInField));
|
199 |
|
String msgUpgrade = "";
|
200 |
|
if (iFace.getCompliance() != null && !mode.equalsIgnoreCase("re3data") && !iFace.getCompliance().equalsIgnoreCase("openaire3.0"))
|
201 |
|
msgUpgrade = "\n\n Please consider to upgrade to OpenAIRE Guidelines v3. Link: https://guidelines.openaire.eu/wiki/OpenAIRE_Guidelines:_For_Literature_repositories";
|
202 |
|
|
203 |
|
this.getEmailer().sendMail(rec, "Request to Join OpenAIRE - Test Results [" + repo.getOfficialName() + "]", "Your " + repoType + " is already \"" + iFace.getDesiredCompatibilityLevel() + "\" compliant. As a result, there is no need to run registration test for url: " + iFace.getBaseUrl() + " and set: " + iFace.getAccessSet() + " ." + msgUpgrade, false, null);
|
|
170 |
// logger.debug("current ComplianceEname: "+ iFace.getComplianceName());
|
|
171 |
// logger.debug("current ComplianceCode: "+ iFace.getCompliance());
|
|
172 |
// logger.debug("desired Compliance: "+ iFace.getDesiredCompatibilityLevel());
|
|
173 |
// if ((this.getDbMode().equalsIgnoreCase("direct") && !compMap.containsKey(iFace.getDesiredCompatibilityLevel()))
|
|
174 |
// || (this.getDbMode().equalsIgnoreCase("dms") && (!(iFace.getDesiredCompatibilityLevel().equalsIgnoreCase(getComplianceCode(iFace.getCompliance()))) &&
|
|
175 |
// !(iFace.getDesiredCompatibilityLevel().equalsIgnoreCase("openaire2.0_data") && getComplianceCode(iFace.getCompliance()).equalsIgnoreCase("openaire2.0"))))){
|
|
176 |
if (this.getDbMode().equalsIgnoreCase("dms") && (!(iFace.getDesiredCompatibilityLevel().equalsIgnoreCase(iFace.getCompliance())) &&
|
|
177 |
!(iFace.getDesiredCompatibilityLevel().equalsIgnoreCase("openaire2.0_data") && iFace.getCompliance().equalsIgnoreCase("openaire2.0")))){
|
|
178 |
logger.debug("initiating preregistration validations on repo :" + iFace.getBaseUrl() + "for set: " + iFace.getAccessSet() + " and compliance: " + iFace.getDesiredCompatibilityLevel());
|
|
179 |
JobForRegistration job = new JobForRegistration();
|
|
180 |
job.setActivation_id(UUID.randomUUID().toString());
|
|
181 |
job.setAdmin_emails(this.adminEmails);
|
|
182 |
job.setBaseurl(iFace.getBaseUrl());
|
|
183 |
job.setDatasource_id(repo.getId());
|
|
184 |
job.setDesired_compatiblity_level(iFace.getDesiredCompatibilityLevel());
|
|
185 |
job.setInterface_id(iFace.getId());
|
|
186 |
job.setInterface_id_old(null);
|
|
187 |
job.setOfficial_name(repo.getOfficialName());
|
|
188 |
job.setRepo_type(repoType);
|
|
189 |
job.setUser((String) session.get(Constants.loggedInField));
|
|
190 |
job.setValidation_set(iFace.getAccessSet());
|
|
191 |
job.setPurpose("register");
|
|
192 |
this.printInterface(iFace);
|
|
193 |
this.getOpenAIREValidator().storeJobForRegistration(job);
|
|
194 |
this.getOpenAIREValidator().preRegistrationValidations(job);
|
|
195 |
} else {
|
|
196 |
logger.debug("repo :" + iFace.getBaseUrl() + " for : " + iFace.getAccessSet() + " is already compliant on desiredcompliance: " + iFace.getCompliance());
|
|
197 |
List<String> rec = new ArrayList<String>();
|
|
198 |
rec.add((String) session.get(Constants.loggedInField));
|
|
199 |
String msgUpgrade = "";
|
|
200 |
if (iFace.getCompliance() != null && !mode.equalsIgnoreCase("re3data") && !iFace.getCompliance().equalsIgnoreCase("openaire3.0"))
|
|
201 |
msgUpgrade = "\n\n Please consider to upgrade to OpenAIRE Guidelines v3. Link: https://guidelines.openaire.eu/wiki/OpenAIRE_Guidelines:_For_Literature_repositories";
|
|
202 |
|
|
203 |
this.getEmailer().sendMail(rec, "Request to Join OpenAIRE - Test Results [" + repo.getOfficialName() + "]", "Your " + repoType + " is already \"" + iFace.getDesiredCompatibilityLevel() + "\" compliant. As a result, there is no need to run registration test for url: " + iFace.getBaseUrl() + " and set: " + iFace.getAccessSet() + " ." + msgUpgrade, false, null);
|
|
204 |
}
|
204 |
205 |
}
|
|
206 |
String validationStarted = "Compatibility test(s) for the " + repoType + " you wish to add have automatically started . You will be notified via email with further instructions when the test(s) has finished. For this " + repoType + " to be added in the OpenAIRE compliant list, the test must be successful.";
|
|
207 |
this.addActionMessage(validationStarted);
|
|
208 |
// this.addActionMessage(this.getText("repoRegistration.validationStarted"));
|
|
209 |
this.addActionMessage("Administrator email:" + this.adminEmails.get(0));
|
|
210 |
this.addActionMessage((this.getText("general.unblock") + " " + this.getEmailer().getFrom()));
|
|
211 |
List<String> recipients = new ArrayList<String>();
|
|
212 |
recipients.addAll(this.adminEmails);
|
|
213 |
this.getEmailer().sendMail(recipients, "Request to Join OpenAIRE - Confirmation [" + repo.getOfficialName() + "]", "A request has been sent to add '" + repo.getOfficialName() + "' " + repoType + " to the OpenAIRE compliant list. If you have any questions you can communicate with the user that made the request using this email: " + (String) session.get(Constants.loggedInField), false, null);
|
|
214 |
recipients.clear();
|
|
215 |
recipients.add((String) session.get(Constants.loggedInField));
|
|
216 |
this.getEmailer().sendMail(recipients, "Request to Join OpenAIRE - Confirmation [" + repo.getOfficialName() + "]", "A request has been sent to add '" + repo.getOfficialName() + "' " + repoType + " to the OpenAIRE compliant list. The neccessary compatibility tests will begin shortly", true, null);
|
|
217 |
} else {
|
|
218 |
logger.debug("User is regRepoOverrider");
|
|
219 |
List<String> recipients = new ArrayList<String>();
|
|
220 |
recipients.add((String) session.get(Constants.loggedInField));
|
|
221 |
this.getEmailer().sendMail(recipients, "Request to Join OpenAIRE [" + repo.getOfficialName() + "]", "A request has been sent to add '" + repo.getOfficialName() + "' to the OpenAIRE compliant list. Since you are logged-in as administrator, registration tests are bypassed.", false, null);
|
|
222 |
|
|
223 |
this.addActionMessage((this.getText("repoRegistration.overriden.successful")));
|
|
224 |
for (RepositoryInterface iFace : repo.getInterfaces()) {
|
|
225 |
getRepoAPI().updateRepositoryInterfaceCompliance(repo.getOfficialName(), repo.getId(), iFace.getId(), iFace.getDesiredCompatibilityLevel(),iFace.getAccessSet(),iFace.getBaseUrl(), iFace.getExtraFields().get("oldId")); }
|
205 |
226 |
}
|
206 |
|
String validationStarted = "Compatibility test(s) for the " + repoType + " you wish to add have automatically started . You will be notified via email with further instructions when the test(s) has finished. For this " + repoType + " to be added in the OpenAIRE compliant list, the test must be successful.";
|
207 |
|
this.addActionMessage(validationStarted);
|
208 |
|
// this.addActionMessage(this.getText("repoRegistration.validationStarted"));
|
209 |
|
this.addActionMessage("Administrator email:" + this.adminEmails.get(0));
|
210 |
|
this.addActionMessage((this.getText("general.unblock") + " " + this.getEmailer().getFrom()));
|
211 |
|
List<String> recipients = new ArrayList<String>();
|
212 |
|
recipients.addAll(this.adminEmails);
|
213 |
|
this.getEmailer().sendMail(recipients, "Request to Join OpenAIRE - Confirmation [" + repo.getOfficialName() + "]", "A request has been sent to add '" + repo.getOfficialName() + "' " + repoType + " to the OpenAIRE compliant list. If you have any questions you can communicate with the user that made the request using this email: " + (String) session.get(Constants.loggedInField), false, null);
|
214 |
|
recipients.clear();
|
215 |
|
recipients.add((String) session.get(Constants.loggedInField));
|
216 |
|
this.getEmailer().sendMail(recipients, "Request to Join OpenAIRE - Confirmation [" + repo.getOfficialName() + "]", "A request has been sent to add '" + repo.getOfficialName() + "' " + repoType + " to the OpenAIRE compliant list. The neccessary compatibility tests will begin shortly", true, null);
|
217 |
|
} else {
|
218 |
|
logger.debug("User is regRepoOverrider");
|
219 |
|
List<String> recipients = new ArrayList<String>();
|
220 |
|
recipients.add((String) session.get(Constants.loggedInField));
|
221 |
|
this.getEmailer().sendMail(recipients, "Request to Join OpenAIRE [" + repo.getOfficialName() + "]", "A request has been sent to add '" + repo.getOfficialName() + "' to the OpenAIRE compliant list. Since you are logged-in as administrator, registration tests are bypassed.", false, null);
|
222 |
|
|
223 |
|
this.addActionMessage((this.getText("repoRegistration.overriden.successful")));
|
224 |
|
for (RepositoryInterface iFace : repo.getInterfaces()) {
|
225 |
|
getRepoAPI().updateRepositoryInterfaceCompliance(repo.getOfficialName(), repo.getId(), iFace.getId(), iFace.getDesiredCompatibilityLevel(),iFace.getAccessSet(),iFace.getBaseUrl(), iFace.getExtraFields().get("oldId")); }
|
|
227 |
} catch (Exception e) {
|
|
228 |
logger.error("error registering repo " + repo.getOfficialName(), e);
|
|
229 |
this.addActionError(this.getText("generic.error"));
|
|
230 |
reportException(e);
|
|
231 |
return "exception";
|
226 |
232 |
}
|
227 |
|
} catch (Exception e) {
|
228 |
|
logger.error("error registering repo " + repo.getOfficialName(), e);
|
229 |
|
this.addActionError(this.getText("generic.error"));
|
230 |
|
reportException(e);
|
231 |
|
return "exception";
|
232 |
233 |
}
|
233 |
|
|
234 |
|
|
235 |
234 |
return Action.SUCCESS;
|
236 |
|
|
237 |
235 |
}
|
238 |
236 |
|
239 |
237 |
private String getCountryCode(String countryName) {
|
*fixed a bug while registering aggregator without set
*fixed a wrong response message when a journal/aggregator were already registered in db