1
|
package eu.dnetlib.data.claims.migration;
|
2
|
|
3
|
import eu.dnetlib.data.claimsDemo.ClaimUtils;
|
4
|
|
5
|
import java.io.BufferedWriter;
|
6
|
import java.io.FileWriter;
|
7
|
import java.io.IOException;
|
8
|
import java.io.PrintWriter;
|
9
|
import java.sql.Timestamp;
|
10
|
import java.util.Date;
|
11
|
|
12
|
/**
|
13
|
* Created by argirok on 21/1/2016.
|
14
|
*/
|
15
|
public class ClaimValidation {
|
16
|
private PrintWriter out;
|
17
|
|
18
|
|
19
|
/*
|
20
|
Claim:
|
21
|
Mandatory Fields : id, sourceType,targetType, User e-mail, Date, Target, Source
|
22
|
|
23
|
*/
|
24
|
public boolean validateClaim(Claim claim){
|
25
|
boolean isValid=true;
|
26
|
try{
|
27
|
out = new PrintWriter(new BufferedWriter(new FileWriter("validationFile.txt", true)));
|
28
|
if(claim==null){
|
29
|
isValid=false;
|
30
|
out.println("Claim invalid (null)..." );
|
31
|
}else if(claim.getId()==null||claim.getId().isEmpty()){
|
32
|
isValid=false;
|
33
|
out.println("Claim invalid (id)..." );
|
34
|
}else if(claim.getTargetType()==null||claim.getTargetType().isEmpty()){
|
35
|
isValid=false;
|
36
|
out.println("Claim invalid (target type): "+claim.getId());
|
37
|
}else if(claim.getSourceType()==null||claim.getSourceType().isEmpty()){
|
38
|
isValid=false;
|
39
|
out.println("Claim invalid (source type): "+claim.getId());
|
40
|
}else if(claim.getDate()==null){
|
41
|
isValid=false;
|
42
|
out.println("Claim invalid (date): "+claim.getId());
|
43
|
}else if(claim.getUserMail()==null||claim.getUserMail().isEmpty()){
|
44
|
isValid=false;
|
45
|
out.println("Claim invalid (mail): "+claim.getId());
|
46
|
}else if(claim.getSource()==null || claim.getTarget()==null){
|
47
|
isValid=false;
|
48
|
out.println("Result invalid : "+claim.getId());
|
49
|
}else{
|
50
|
boolean sourceIsValid=validateByType(claim.getSource(),claim.getSourceType(),claim.getId());
|
51
|
boolean targetIsValid=validateByType(claim.getTarget(),claim.getTargetType(),claim.getId());
|
52
|
isValid= isValid&&sourceIsValid&&targetIsValid;
|
53
|
if(!isValid){
|
54
|
out.println("Claim invalid (source /target): "+claim.getId()+"\n");
|
55
|
}
|
56
|
}
|
57
|
out.close();
|
58
|
}catch (IOException e) {
|
59
|
isValid=false;
|
60
|
e.printStackTrace();
|
61
|
System.err.println("Couldn't write to file " + "validationFile.txt");
|
62
|
}
|
63
|
return isValid;
|
64
|
}
|
65
|
/*
|
66
|
Project:
|
67
|
Mandatory Fields : id, type, Collected from
|
68
|
|
69
|
*/
|
70
|
public boolean validateResult(Result result, String claimId){
|
71
|
boolean isValid=true;
|
72
|
if(result==null){
|
73
|
isValid=false;
|
74
|
out.println("Result invalid (null): - claimId:"+claimId);
|
75
|
}else if(result.getOpenaireId()==null||result.getOpenaireId().isEmpty()){
|
76
|
isValid=false;
|
77
|
out.println("Result invalid (Id): - claimId:"+claimId);
|
78
|
}else if(result.getResultType()==null||result.getResultType().isEmpty()){
|
79
|
isValid=false;
|
80
|
out.println("Result invalid (Type): "+result.getOpenaireId()+"- claimId:"+claimId);
|
81
|
}/*
|
82
|
//http://services.openaire.eu:8380/search/search?action=search&sTransformer=results_openaire&query=%28%28%28deletedbyinference+%3D+false%29+AND+%28oaftype+exact+result%29%29+and+%28%28resulttypeid+exact+publication%29+or+%28resulttypeid+exact+dataset%29%29%29+and+%28%28objIdentifier+
|
83
|
//exact+od______1389%3A%3A6ba133c8460d5a67dfb18f34cc5303fb%29+or+%28resultdupid+exact+od______1389%3A%3A6ba133c8460d5a67dfb18f34cc5303fb%29%29&size=10&locale=en_GB
|
84
|
//There are resuts with no title
|
85
|
//so I am
|
86
|
else if(result.getTitle()==null||result.getTitle().isEmpty()){
|
87
|
isValid=false;
|
88
|
out.println("Result invalid (title): "+result.getOpenaireId()+"- claimId:"+claimId);
|
89
|
}*/else if(result.getCollectedFrom()==null||result.getCollectedFrom().isEmpty()){
|
90
|
isValid=false;
|
91
|
out.println("Result invalid (collectedFrom) : "+result.getOpenaireId()+"- claimId:"+claimId);
|
92
|
}
|
93
|
return isValid;
|
94
|
}
|
95
|
/*
|
96
|
Project:
|
97
|
Mandatory Fields : id, name
|
98
|
|
99
|
*/
|
100
|
public boolean validateProject(Project project, String claimId){
|
101
|
boolean isValid=true;
|
102
|
if(project==null){
|
103
|
isValid=false;
|
104
|
out.println("Project invalid (null): - claimId:"+claimId);
|
105
|
}else if(project.getOpenaireId()==null||project.getOpenaireId().isEmpty()){
|
106
|
isValid=false;
|
107
|
out.println("Project invalid (id): - claimId:"+claimId);
|
108
|
}else if((project.getName()==null||project.getName().isEmpty())&&(project.getAcronym()==null||project.getAcronym().isEmpty())){
|
109
|
isValid=false;
|
110
|
out.println("Project invalid (name/acronym): "+project.getOpenaireId()+"- claimId:"+claimId);
|
111
|
}else if(project.getFunderId()==null||project.getFunderId().isEmpty()){
|
112
|
isValid=false;
|
113
|
out.println("Project invalid (funder id): "+project.getOpenaireId()+"- claimId:"+claimId);
|
114
|
}
|
115
|
else if(project.getFunderName()==null||project.getFunderName().isEmpty()){
|
116
|
isValid=false;
|
117
|
out.println("Project invalid (funder name): "+project.getOpenaireId()+"- claimId:"+claimId);
|
118
|
}
|
119
|
|
120
|
return isValid;
|
121
|
}
|
122
|
/*
|
123
|
Context:
|
124
|
Mandatory Fields : id, title
|
125
|
|
126
|
*/
|
127
|
public boolean validateContext(Context context, String claimId){
|
128
|
boolean isValid=true;
|
129
|
if(context==null){
|
130
|
isValid=false;
|
131
|
out.println("Context invalid (null): - claimId:"+claimId);
|
132
|
}else if(context.getOpenaireId()==null||context.getOpenaireId().isEmpty()){
|
133
|
isValid=false;
|
134
|
out.println("Context invalid (id): - claimId:"+claimId);
|
135
|
}/*
|
136
|
//This is commented since There isn't a way to fill this field right now.
|
137
|
else if(context.getTitle()==null||context.getTitle().isEmpty()){
|
138
|
isValid=false;
|
139
|
out.println("Context invalid : "+context.getOpenaireId()+"- claimId:"+claimId);
|
140
|
}*/
|
141
|
return isValid;
|
142
|
}
|
143
|
private boolean validateByType(OpenaireEntity entity,String type , String claimId ){
|
144
|
//TODO add more types (e.g. patends) when they are available
|
145
|
if(type.equals(ClaimUtils.PUBLICATION)||type.equals(ClaimUtils.DATASET)){
|
146
|
return validateResult((Result)entity,claimId);
|
147
|
} else if(type.equals(ClaimUtils.CONTEXT)){
|
148
|
return validateContext((Context)entity,claimId);
|
149
|
}else if(type.equals(ClaimUtils.PROJECT)){
|
150
|
return validateProject((Project)entity,claimId);
|
151
|
}else{
|
152
|
if(entity.getOpenaireId()!=null){
|
153
|
out.println("Entity invalid type ("+type+"):"+entity.getOpenaireId()+" - claimId:"+claimId);
|
154
|
}else {
|
155
|
out.println("Entity invalid type (" + type + "): - claimId:" + claimId);
|
156
|
}
|
157
|
}
|
158
|
return false;
|
159
|
}
|
160
|
}
|