1474 |
29 Nov 11 |
pawels |
1 |
/******************************************************************************* |
1474 |
29 Nov 11 |
pawels |
* Copyright (c) 2011 The Norwegian Microarray Consortium. |
1474 |
29 Nov 11 |
pawels |
* All rights reserved. This program and the accompanying materials |
1474 |
29 Nov 11 |
pawels |
* are made available under the terms of the GNU Public License v3.0 |
1474 |
29 Nov 11 |
pawels |
* which accompanies this distribution, and is available at |
1474 |
29 Nov 11 |
pawels |
* http://www.gnu.org/licenses/gpl-3.0.html |
1474 |
29 Nov 11 |
pawels |
7 |
* |
1474 |
29 Nov 11 |
pawels |
* Contributors: |
1474 |
29 Nov 11 |
pawels |
* The Norwegian Microarray Consortium - initial API and implementation |
1474 |
29 Nov 11 |
pawels |
10 |
******************************************************************************/ |
1474 |
29 Nov 11 |
pawels |
11 |
package no.uib.cbu.base.magetabexport; |
1474 |
29 Nov 11 |
pawels |
12 |
|
1474 |
29 Nov 11 |
pawels |
13 |
import java.util.ArrayList; |
1474 |
29 Nov 11 |
pawels |
14 |
import java.util.List; |
1474 |
29 Nov 11 |
pawels |
15 |
import java.util.regex.Matcher; |
1474 |
29 Nov 11 |
pawels |
16 |
import java.util.regex.Pattern; |
1474 |
29 Nov 11 |
pawels |
17 |
|
1474 |
29 Nov 11 |
pawels |
18 |
import net.sf.basedb.core.Experiment; |
1474 |
29 Nov 11 |
pawels |
19 |
import net.sf.basedb.core.User; |
1474 |
29 Nov 11 |
pawels |
20 |
|
1474 |
29 Nov 11 |
pawels |
21 |
public class IDFCreator { |
1474 |
29 Nov 11 |
pawels |
22 |
|
1474 |
29 Nov 11 |
pawels |
23 |
private Experiment experiment; |
1474 |
29 Nov 11 |
pawels |
24 |
|
1474 |
29 Nov 11 |
pawels |
25 |
private List<String> protocolNames, protocolTypes, protocolDescriptions, |
1474 |
29 Nov 11 |
pawels |
26 |
protocolParameters, protocolTermSrcRefs; |
1474 |
29 Nov 11 |
pawels |
27 |
private List<String> factorNames, factorTypes, factorSrcTerms; |
1474 |
29 Nov 11 |
pawels |
28 |
private List<String> termSrcNames, termSrcFiles, termSrcVersions; |
1474 |
29 Nov 11 |
pawels |
29 |
|
1474 |
29 Nov 11 |
pawels |
30 |
|
1474 |
29 Nov 11 |
pawels |
/** MGED Ontology terms used in IDFCreator */ |
1474 |
29 Nov 11 |
pawels |
32 |
private final String MGED_ONTOLOGY_TERM_INVESTIGATOR = "investigator"; |
1474 |
29 Nov 11 |
pawels |
33 |
private final String MGED_ONTOLOGY_TERM_SUBMITTER = "submitter"; |
1474 |
29 Nov 11 |
pawels |
34 |
|
1474 |
29 Nov 11 |
pawels |
35 |
|
1474 |
29 Nov 11 |
pawels |
36 |
public IDFCreator(Experiment exp) { |
1474 |
29 Nov 11 |
pawels |
37 |
experiment = exp; |
1474 |
29 Nov 11 |
pawels |
38 |
} |
1474 |
29 Nov 11 |
pawels |
39 |
|
1474 |
29 Nov 11 |
pawels |
40 |
public IDF getIDFForExperiment(SDRF sdrf) { |
1474 |
29 Nov 11 |
pawels |
41 |
|
1474 |
29 Nov 11 |
pawels |
42 |
IDF idf = new IDF(); |
1474 |
29 Nov 11 |
pawels |
43 |
|
1474 |
29 Nov 11 |
pawels |
// experiment details |
1474 |
29 Nov 11 |
pawels |
45 |
idf.setFieldContent(IDF.INVESTIGATION_TITLE, experiment.getName()); |
1474 |
29 Nov 11 |
pawels |
46 |
idf.setFieldContent(IDF.EXPERIMENTAL_DESIGN, experiment.getExperimentDesign()); |
1474 |
29 Nov 11 |
pawels |
47 |
idf.setFieldContent(IDF.QUALITY_CONTROL_TYPE, experiment.getExperimentType()); |
1474 |
29 Nov 11 |
pawels |
48 |
idf.setFieldContent(IDF.QUALITY_CONTROL_TERM_SOURCE_REF, TermSources.MGED_ONTOLOGY_TERM_SOURCE_REF); |
1474 |
29 Nov 11 |
pawels |
49 |
idf.setFieldContent(IDF.REPLICATE_TYPE, experiment.getExperimentType()); |
1474 |
29 Nov 11 |
pawels |
50 |
idf.setFieldContent(IDF.REPLICATE_TERM_SOURCE_REF, TermSources.MGED_ONTOLOGY_TERM_SOURCE_REF); |
1474 |
29 Nov 11 |
pawels |
51 |
if (experiment.getEntryDate() != null) { |
1474 |
29 Nov 11 |
pawels |
52 |
idf.setFieldContent(IDF.DATE_OF_EXPERIMENT, experiment.getEntryDate().toString()); |
1474 |
29 Nov 11 |
pawels |
53 |
} else { |
1474 |
29 Nov 11 |
pawels |
54 |
idf.setFieldContent(IDF.DATE_OF_EXPERIMENT, (String)null); |
1474 |
29 Nov 11 |
pawels |
55 |
} |
1474 |
29 Nov 11 |
pawels |
// public release date is set outside, in the plugin |
1474 |
29 Nov 11 |
pawels |
57 |
/* |
1474 |
29 Nov 11 |
pawels |
if (experiment.getPublicationDate() != null) { |
1474 |
29 Nov 11 |
pawels |
idf.setFieldContent(IDF.PUBLIC_RELEASE_DATE, experiment.getPublicationDate().toString()); |
1474 |
29 Nov 11 |
pawels |
} else { |
1474 |
29 Nov 11 |
pawels |
idf.setFieldContent(IDF.PUBLIC_RELEASE_DATE, (String)null); |
1474 |
29 Nov 11 |
pawels |
62 |
} |
1474 |
29 Nov 11 |
pawels |
63 |
*/ |
1474 |
29 Nov 11 |
pawels |
64 |
idf.setFieldContent(IDF.PUBMED_ID, experiment.getPubMedId()); |
1474 |
29 Nov 11 |
pawels |
65 |
idf.setFieldContent(IDF.EXPERIMENT_DESCRIPTION, experiment.getDescription()); |
1474 |
29 Nov 11 |
pawels |
66 |
|
1474 |
29 Nov 11 |
pawels |
// experimental factors |
1474 |
29 Nov 11 |
pawels |
68 |
populateFactors(sdrf); |
1474 |
29 Nov 11 |
pawels |
69 |
idf.setFieldContent(IDF.EXPERIMENTAL_FACTOR_NAME, factorNames); |
1474 |
29 Nov 11 |
pawels |
70 |
idf.setFieldContent(IDF.EXPERIMENTAL_FACTOR_TYPE, factorTypes); |
1474 |
29 Nov 11 |
pawels |
71 |
idf.setFieldContent(IDF.EXPERIMENTAL_FACTOR_TERM_SOURCE_REF, factorSrcTerms); |
1474 |
29 Nov 11 |
pawels |
72 |
|
1474 |
29 Nov 11 |
pawels |
73 |
|
1474 |
29 Nov 11 |
pawels |
// include information on submitter and authors |
1474 |
29 Nov 11 |
pawels |
75 |
List<PersonInformation> persons = new ArrayList<PersonInformation>(); |
1474 |
29 Nov 11 |
pawels |
76 |
persons.add(getSubmitterInformation()); |
1474 |
29 Nov 11 |
pawels |
77 |
String[] allAffiliationsList = parseAffiliations(); |
1474 |
29 Nov 11 |
pawels |
78 |
persons.addAll(parseAuthorInformation(allAffiliationsList)); |
1474 |
29 Nov 11 |
pawels |
79 |
|
1474 |
29 Nov 11 |
pawels |
80 |
List<String> tmp = new ArrayList<String>(); |
1474 |
29 Nov 11 |
pawels |
81 |
for (PersonInformation a : persons) { tmp.add(a.getLastName()); } |
1474 |
29 Nov 11 |
pawels |
82 |
idf.setFieldContent(IDF.PERSON_LAST_NAME, tmp); |
1474 |
29 Nov 11 |
pawels |
83 |
tmp = new ArrayList<String>(); |
1474 |
29 Nov 11 |
pawels |
84 |
for (PersonInformation a : persons) { tmp.add(a.getFirstName()); } |
1474 |
29 Nov 11 |
pawels |
85 |
idf.setFieldContent(IDF.PERSON_FIRST_NAME, tmp); |
1474 |
29 Nov 11 |
pawels |
86 |
tmp = new ArrayList<String>(); |
1474 |
29 Nov 11 |
pawels |
87 |
for (PersonInformation a : persons) { tmp.add(a.getMidInitials()); } |
1474 |
29 Nov 11 |
pawels |
88 |
idf.setFieldContent(IDF.PERSON_MID_INITIALS, tmp); |
1474 |
29 Nov 11 |
pawels |
89 |
tmp = new ArrayList<String>(); |
1474 |
29 Nov 11 |
pawels |
90 |
for (PersonInformation a : persons) { tmp.add(a.getEmail()); } |
1474 |
29 Nov 11 |
pawels |
91 |
idf.setFieldContent(IDF.PERSON_EMAIL, tmp); |
1474 |
29 Nov 11 |
pawels |
92 |
tmp = new ArrayList<String>(); |
1474 |
29 Nov 11 |
pawels |
93 |
for (PersonInformation a : persons) { tmp.add(a.getPhone()); } |
1474 |
29 Nov 11 |
pawels |
94 |
idf.setFieldContent(IDF.PERSON_PHONE, tmp); |
1474 |
29 Nov 11 |
pawels |
95 |
tmp = new ArrayList<String>(); |
1474 |
29 Nov 11 |
pawels |
96 |
for (PersonInformation a : persons) { tmp.add(a.getAddress()); } |
1474 |
29 Nov 11 |
pawels |
97 |
idf.setFieldContent(IDF.PERSON_ADDRESS, tmp); |
1474 |
29 Nov 11 |
pawels |
98 |
tmp = new ArrayList<String>(); |
1474 |
29 Nov 11 |
pawels |
99 |
for (PersonInformation a : persons) { tmp.add(a.getAffiliations()); } |
1474 |
29 Nov 11 |
pawels |
100 |
idf.setFieldContent(IDF.PERSON_AFFILIATION, tmp); |
1474 |
29 Nov 11 |
pawels |
101 |
tmp = new ArrayList<String>(); |
1474 |
29 Nov 11 |
pawels |
102 |
for (PersonInformation a : persons) { tmp.add(a.getRoles()); } |
1474 |
29 Nov 11 |
pawels |
103 |
idf.setFieldContent(IDF.PERSON_ROLES, tmp); |
1474 |
29 Nov 11 |
pawels |
104 |
tmp = new ArrayList<String>(); |
1474 |
29 Nov 11 |
pawels |
105 |
for (PersonInformation a : persons) { tmp.add(a.getRoles()!=null ? TermSources.MGED_ONTOLOGY_TERM_SOURCE_REF : null); } |
1474 |
29 Nov 11 |
pawels |
106 |
idf.setFieldContent(IDF.PERSON_ROLES_TERM_SOURCE_REF, tmp); |
1474 |
29 Nov 11 |
pawels |
107 |
|
1474 |
29 Nov 11 |
pawels |
// protocol definitions |
1474 |
29 Nov 11 |
pawels |
109 |
populateProtocols(sdrf); |
1474 |
29 Nov 11 |
pawels |
110 |
idf.setFieldContent(IDF.PROTOCOL_NAME, protocolNames); |
1474 |
29 Nov 11 |
pawels |
111 |
idf.setFieldContent(IDF.PROTOCOL_TYPE, protocolTypes); |
1474 |
29 Nov 11 |
pawels |
112 |
idf.setFieldContent(IDF.PROTOCOL_DESCRIPTION, protocolDescriptions); |
1474 |
29 Nov 11 |
pawels |
113 |
idf.setFieldContent(IDF.PROTOCOL_PARAMETERS, protocolParameters); |
1474 |
29 Nov 11 |
pawels |
114 |
idf.setFieldContent(IDF.PROTOCOL_TERM_SOURCE_REF, protocolTermSrcRefs); |
1474 |
29 Nov 11 |
pawels |
115 |
|
1474 |
29 Nov 11 |
pawels |
// term source (ontology) definitions |
1474 |
29 Nov 11 |
pawels |
117 |
populateTermSources(); |
1474 |
29 Nov 11 |
pawels |
118 |
idf.setFieldContent(IDF.TERM_SOURCE_NAME, termSrcNames); |
1474 |
29 Nov 11 |
pawels |
119 |
idf.setFieldContent(IDF.TERM_SOURCE_FILE, termSrcFiles); |
1474 |
29 Nov 11 |
pawels |
120 |
idf.setFieldContent(IDF.TERM_SOURCE_VERSION, termSrcVersions); |
1474 |
29 Nov 11 |
pawels |
121 |
|
1474 |
29 Nov 11 |
pawels |
// sdrf file name |
1474 |
29 Nov 11 |
pawels |
//idf.setFieldContent(IDF.SDRF_FILE, sdrfFileName); |
1474 |
29 Nov 11 |
pawels |
124 |
|
1474 |
29 Nov 11 |
pawels |
125 |
return idf; |
1474 |
29 Nov 11 |
pawels |
126 |
} |
1474 |
29 Nov 11 |
pawels |
127 |
|
1474 |
29 Nov 11 |
pawels |
128 |
/** |
1474 |
29 Nov 11 |
pawels |
* Create lists of protocol names, types, descriptions and parameters |
1474 |
29 Nov 11 |
pawels |
* @param sdrf - SDRF containing the protocol information |
1474 |
29 Nov 11 |
pawels |
131 |
*/ |
1474 |
29 Nov 11 |
pawels |
132 |
private void populateProtocols(SDRF sdrf) { |
1474 |
29 Nov 11 |
pawels |
133 |
|
1474 |
29 Nov 11 |
pawels |
134 |
protocolNames = new ArrayList<String>(); |
1474 |
29 Nov 11 |
pawels |
135 |
protocolTypes = new ArrayList<String>(); |
1474 |
29 Nov 11 |
pawels |
136 |
protocolDescriptions = new ArrayList<String>(); |
1474 |
29 Nov 11 |
pawels |
137 |
protocolParameters = new ArrayList<String>(); |
1474 |
29 Nov 11 |
pawels |
138 |
protocolTermSrcRefs = new ArrayList<String>(); |
1474 |
29 Nov 11 |
pawels |
139 |
|
1474 |
29 Nov 11 |
pawels |
140 |
for (ProtocolInfo pi : sdrf.getReferencedProtocols()) { |
1474 |
29 Nov 11 |
pawels |
141 |
|
1474 |
29 Nov 11 |
pawels |
142 |
if (pi.getProtocolRef() == null) { continue; } |
1474 |
29 Nov 11 |
pawels |
143 |
|
1474 |
29 Nov 11 |
pawels |
144 |
protocolNames.add(pi.getProtocolRef()); |
1474 |
29 Nov 11 |
pawels |
145 |
protocolTypes.add(pi.getType().name()); |
1474 |
29 Nov 11 |
pawels |
146 |
protocolDescriptions.add(pi.getDescription()==null?"":pi.getDescription()); |
1474 |
29 Nov 11 |
pawels |
147 |
|
1474 |
29 Nov 11 |
pawels |
148 |
String protocolParams = ""; |
1474 |
29 Nov 11 |
pawels |
149 |
for (String param : pi.getAllParameterNames()) { |
1474 |
29 Nov 11 |
pawels |
150 |
protocolParams += param + "; "; |
1474 |
29 Nov 11 |
pawels |
151 |
} |
1474 |
29 Nov 11 |
pawels |
152 |
protocolParameters.add(Utils.removeTrailingString(protocolParams, "; ")); |
1474 |
29 Nov 11 |
pawels |
153 |
protocolTermSrcRefs.add(TermSources.BASE_TERM_SOURCE_REF); |
1474 |
29 Nov 11 |
pawels |
154 |
} |
1474 |
29 Nov 11 |
pawels |
155 |
} |
1474 |
29 Nov 11 |
pawels |
156 |
|
1474 |
29 Nov 11 |
pawels |
157 |
private void populateFactors(SDRF sdrf) { |
1474 |
29 Nov 11 |
pawels |
158 |
factorNames = new ArrayList<String>(); |
1474 |
29 Nov 11 |
pawels |
159 |
factorTypes = new ArrayList<String>(); |
1474 |
29 Nov 11 |
pawels |
160 |
factorSrcTerms = new ArrayList<String>(); |
1474 |
29 Nov 11 |
pawels |
161 |
for (String f : sdrf.getExperimentFactors()) { |
1474 |
29 Nov 11 |
pawels |
162 |
factorNames.add(f); |
1474 |
29 Nov 11 |
pawels |
163 |
|
1474 |
29 Nov 11 |
pawels |
// where should these come from? annotation category? |
1474 |
29 Nov 11 |
pawels |
165 |
factorTypes.add(null); |
1474 |
29 Nov 11 |
pawels |
166 |
factorSrcTerms.add(null); |
1474 |
29 Nov 11 |
pawels |
167 |
} |
1474 |
29 Nov 11 |
pawels |
168 |
} |
1474 |
29 Nov 11 |
pawels |
169 |
|
1474 |
29 Nov 11 |
pawels |
170 |
private void populateTermSources() { |
1474 |
29 Nov 11 |
pawels |
171 |
|
1474 |
29 Nov 11 |
pawels |
172 |
/* |
1474 |
29 Nov 11 |
pawels |
* TODO should all of these always be added? |
1474 |
29 Nov 11 |
pawels |
* should they be inferred from sdrf? |
1474 |
29 Nov 11 |
pawels |
175 |
*/ |
1474 |
29 Nov 11 |
pawels |
176 |
|
1474 |
29 Nov 11 |
pawels |
177 |
|
1474 |
29 Nov 11 |
pawels |
178 |
termSrcNames = new ArrayList<String>(); |
1474 |
29 Nov 11 |
pawels |
179 |
termSrcNames.add(TermSources.ARRAY_EXPRESS_TERM_SOURCE_REF); |
1474 |
29 Nov 11 |
pawels |
180 |
termSrcNames.add(TermSources.MGED_ONTOLOGY_TERM_SOURCE_REF); |
1474 |
29 Nov 11 |
pawels |
181 |
termSrcNames.add(TermSources.BASE_TERM_SOURCE_REF); |
1474 |
29 Nov 11 |
pawels |
182 |
|
1474 |
29 Nov 11 |
pawels |
183 |
termSrcFiles = new ArrayList<String>(); |
1474 |
29 Nov 11 |
pawels |
184 |
termSrcFiles.add(TermSources.ARRAY_EXPRESS_TERM_SOURCE_FILE); |
1474 |
29 Nov 11 |
pawels |
185 |
termSrcFiles.add(TermSources.MGED_ONTOLOGY_TERM_SOURCE_FILE); |
1474 |
29 Nov 11 |
pawels |
186 |
termSrcFiles.add(TermSources.BASE_TERM_SOURCE_FILE); |
1474 |
29 Nov 11 |
pawels |
187 |
|
1474 |
29 Nov 11 |
pawels |
188 |
termSrcVersions = new ArrayList<String>(); |
1474 |
29 Nov 11 |
pawels |
189 |
termSrcVersions.add(""); |
1474 |
29 Nov 11 |
pawels |
190 |
termSrcVersions.add(""); |
1474 |
29 Nov 11 |
pawels |
191 |
termSrcVersions.add(""); |
1474 |
29 Nov 11 |
pawels |
192 |
} |
1474 |
29 Nov 11 |
pawels |
193 |
|
1474 |
29 Nov 11 |
pawels |
194 |
|
1474 |
29 Nov 11 |
pawels |
195 |
private PersonInformation getSubmitterInformation() { |
1474 |
29 Nov 11 |
pawels |
196 |
User submitter = experiment.getOwner(); |
1474 |
29 Nov 11 |
pawels |
197 |
PersonInformation submitterInfo = new PersonInformation(); |
1474 |
29 Nov 11 |
pawels |
198 |
|
1474 |
29 Nov 11 |
pawels |
199 |
String[] names = splitNamesOfOnePerson(submitter.getName()); |
1474 |
29 Nov 11 |
pawels |
200 |
submitterInfo.setFirstName(names[0]); |
1474 |
29 Nov 11 |
pawels |
201 |
submitterInfo.setMidInitials(names[1]); |
1474 |
29 Nov 11 |
pawels |
202 |
submitterInfo.setLastName(names[2]); |
1474 |
29 Nov 11 |
pawels |
203 |
submitterInfo.setAffiliations(submitter.getOrganisation()); |
1474 |
29 Nov 11 |
pawels |
204 |
submitterInfo.setAddress(submitter.getAddress()); |
1474 |
29 Nov 11 |
pawels |
205 |
submitterInfo.setPhone(submitter.getPhone()); |
1474 |
29 Nov 11 |
pawels |
206 |
submitterInfo.setEmail(submitter.getEmail()); |
1474 |
29 Nov 11 |
pawels |
207 |
submitterInfo.setRoles(MGED_ONTOLOGY_TERM_SUBMITTER); |
1474 |
29 Nov 11 |
pawels |
208 |
|
1474 |
29 Nov 11 |
pawels |
209 |
return submitterInfo; |
1474 |
29 Nov 11 |
pawels |
210 |
} |
1474 |
29 Nov 11 |
pawels |
211 |
|
1474 |
29 Nov 11 |
pawels |
212 |
private String[] parseAffiliations() { |
1474 |
29 Nov 11 |
pawels |
213 |
String affList = experiment.getAffiliations(); |
1474 |
29 Nov 11 |
pawels |
214 |
if (affList != null && !affList.equals("")) { |
1474 |
29 Nov 11 |
pawels |
215 |
List<String> affiliations = new ArrayList<String>(); |
1474 |
29 Nov 11 |
pawels |
216 |
String[] affs = affList.split("[\\n|\\r]"); |
1474 |
29 Nov 11 |
pawels |
217 |
for (String a : affs) { |
1474 |
29 Nov 11 |
pawels |
218 |
if (!a.equals("")) { affiliations.add(a); } |
1474 |
29 Nov 11 |
pawels |
219 |
} |
1474 |
29 Nov 11 |
pawels |
220 |
return affiliations.toArray(new String[affiliations.size()]); |
1474 |
29 Nov 11 |
pawels |
221 |
} |
1474 |
29 Nov 11 |
pawels |
222 |
return null; |
1474 |
29 Nov 11 |
pawels |
223 |
} |
1474 |
29 Nov 11 |
pawels |
224 |
|
1474 |
29 Nov 11 |
pawels |
225 |
private List<PersonInformation> parseAuthorInformation(String[] allAffiliationsList) { |
1474 |
29 Nov 11 |
pawels |
226 |
|
1474 |
29 Nov 11 |
pawels |
227 |
List<PersonInformation> personInfoList = new ArrayList<PersonInformation>(); |
1474 |
29 Nov 11 |
pawels |
228 |
|
1474 |
29 Nov 11 |
pawels |
// get authors/investigators |
1474 |
29 Nov 11 |
pawels |
230 |
String authorsList = experiment.getAuthors(); |
1474 |
29 Nov 11 |
pawels |
231 |
if (authorsList != null && !authorsList.equals("")) { |
1474 |
29 Nov 11 |
pawels |
232 |
String[] authors = authorsList.split(", "); |
1474 |
29 Nov 11 |
pawels |
233 |
for (String a : authors) { |
1474 |
29 Nov 11 |
pawels |
234 |
PersonInformation pi = new PersonInformation(); |
1474 |
29 Nov 11 |
pawels |
235 |
|
1474 |
29 Nov 11 |
pawels |
236 |
String[] names = splitNamesOfOnePerson(a); |
1474 |
29 Nov 11 |
pawels |
237 |
pi.setFirstName(names[0]); |
1474 |
29 Nov 11 |
pawels |
238 |
pi.setMidInitials(names[1]); |
1474 |
29 Nov 11 |
pawels |
239 |
pi.setLastName(names[2]); |
1474 |
29 Nov 11 |
pawels |
240 |
|
1474 |
29 Nov 11 |
pawels |
241 |
if (allAffiliationsList != null) { |
1474 |
29 Nov 11 |
pawels |
242 |
int[] affNumbers = retrieveAffiliationNumbers(pi.getLastName()); |
1474 |
29 Nov 11 |
pawels |
243 |
if (affNumbers != null && affNumbers.length > 0) { |
1474 |
29 Nov 11 |
pawels |
244 |
String affiliations = ""; |
1474 |
29 Nov 11 |
pawels |
245 |
for (int affNum : affNumbers) { |
1474 |
29 Nov 11 |
pawels |
246 |
if (affNum > 0 && affNum <= allAffiliationsList.length) { |
1474 |
29 Nov 11 |
pawels |
247 |
affiliations += allAffiliationsList[affNum-1]+"; "; |
1474 |
29 Nov 11 |
pawels |
248 |
} |
1474 |
29 Nov 11 |
pawels |
249 |
} |
1474 |
29 Nov 11 |
pawels |
250 |
pi.setAffiliations(Utils.removeTrailingString(affiliations,"; ")); |
1474 |
29 Nov 11 |
pawels |
251 |
} |
1474 |
29 Nov 11 |
pawels |
252 |
} |
1474 |
29 Nov 11 |
pawels |
//pi.setAddress(null); |
1474 |
29 Nov 11 |
pawels |
//pi.setPhone(null); |
1474 |
29 Nov 11 |
pawels |
//pi.setEmail(null); |
1474 |
29 Nov 11 |
pawels |
256 |
|
1474 |
29 Nov 11 |
pawels |
257 |
pi.setRoles(MGED_ONTOLOGY_TERM_INVESTIGATOR); |
1474 |
29 Nov 11 |
pawels |
258 |
personInfoList.add(pi); |
1474 |
29 Nov 11 |
pawels |
259 |
} |
1474 |
29 Nov 11 |
pawels |
260 |
} |
1474 |
29 Nov 11 |
pawels |
261 |
|
1474 |
29 Nov 11 |
pawels |
262 |
return personInfoList; |
1474 |
29 Nov 11 |
pawels |
263 |
} |
1474 |
29 Nov 11 |
pawels |
264 |
|
1474 |
29 Nov 11 |
pawels |
265 |
public int[] retrieveAffiliationNumbers(String lastName) { |
1474 |
29 Nov 11 |
pawels |
266 |
Pattern p = Pattern.compile("(\\d,)*\\d"); |
1474 |
29 Nov 11 |
pawels |
267 |
Matcher m = p.matcher(lastName); |
1474 |
29 Nov 11 |
pawels |
268 |
if (m.find() && m.end() == lastName.length()) { |
1474 |
29 Nov 11 |
pawels |
269 |
String affiliations = lastName.substring(m.start()); |
1474 |
29 Nov 11 |
pawels |
270 |
String[] affs = affiliations.split(","); |
1474 |
29 Nov 11 |
pawels |
271 |
int[] affNumbers = new int[affs.length]; |
1474 |
29 Nov 11 |
pawels |
272 |
for (int i = 0; i<affs.length; i++) { |
1474 |
29 Nov 11 |
pawels |
273 |
affNumbers[i] = Integer.parseInt(affs[i]); |
1474 |
29 Nov 11 |
pawels |
274 |
} |
1474 |
29 Nov 11 |
pawels |
275 |
return affNumbers; |
1474 |
29 Nov 11 |
pawels |
276 |
} |
1474 |
29 Nov 11 |
pawels |
277 |
return null; |
1474 |
29 Nov 11 |
pawels |
278 |
} |
1474 |
29 Nov 11 |
pawels |
279 |
|
1474 |
29 Nov 11 |
pawels |
280 |
|
1474 |
29 Nov 11 |
pawels |
281 |
private String[] splitNamesOfOnePerson(String names) { |
1474 |
29 Nov 11 |
pawels |
282 |
String[] splitNames = new String[3]; |
1474 |
29 Nov 11 |
pawels |
283 |
String[] tmp = names.split(" "); |
1474 |
29 Nov 11 |
pawels |
284 |
if (tmp.length >= 2) { |
1474 |
29 Nov 11 |
pawels |
285 |
splitNames[0] = tmp[0].trim(); |
1474 |
29 Nov 11 |
pawels |
286 |
splitNames[2] = tmp[tmp.length - 1].trim(); |
1474 |
29 Nov 11 |
pawels |
287 |
String mid = ""; |
1474 |
29 Nov 11 |
pawels |
288 |
for (int i=1; i<tmp.length-1; i++) { |
1474 |
29 Nov 11 |
pawels |
289 |
mid += tmp[i]+" "; |
1474 |
29 Nov 11 |
pawels |
290 |
} |
1474 |
29 Nov 11 |
pawels |
291 |
splitNames[1] = mid.trim(); |
1474 |
29 Nov 11 |
pawels |
292 |
} else { |
1474 |
29 Nov 11 |
pawels |
293 |
splitNames[2] = names.trim(); |
1474 |
29 Nov 11 |
pawels |
294 |
} |
1474 |
29 Nov 11 |
pawels |
295 |
return splitNames; |
1474 |
29 Nov 11 |
pawels |
296 |
} |
1474 |
29 Nov 11 |
pawels |
297 |
|
1474 |
29 Nov 11 |
pawels |
298 |
} |
1474 |
29 Nov 11 |
pawels |
299 |
class PersonInformation { |
1474 |
29 Nov 11 |
pawels |
300 |
private String firstName, midInitials, lastName; |
1474 |
29 Nov 11 |
pawels |
301 |
private String affiliations, address, phone, email; |
1474 |
29 Nov 11 |
pawels |
302 |
private String roles; |
1474 |
29 Nov 11 |
pawels |
303 |
|
1474 |
29 Nov 11 |
pawels |
304 |
public String getFirstName() { |
1474 |
29 Nov 11 |
pawels |
305 |
return firstName; |
1474 |
29 Nov 11 |
pawels |
306 |
} |
1474 |
29 Nov 11 |
pawels |
307 |
public void setFirstName(String firstName) { |
1474 |
29 Nov 11 |
pawels |
308 |
this.firstName = firstName; |
1474 |
29 Nov 11 |
pawels |
309 |
} |
1474 |
29 Nov 11 |
pawels |
310 |
public String getMidInitials() { |
1474 |
29 Nov 11 |
pawels |
311 |
return midInitials; |
1474 |
29 Nov 11 |
pawels |
312 |
} |
1474 |
29 Nov 11 |
pawels |
313 |
public void setMidInitials(String midInitials) { |
1474 |
29 Nov 11 |
pawels |
314 |
this.midInitials = midInitials; |
1474 |
29 Nov 11 |
pawels |
315 |
} |
1474 |
29 Nov 11 |
pawels |
316 |
public String getLastName() { |
1474 |
29 Nov 11 |
pawels |
317 |
return lastName; |
1474 |
29 Nov 11 |
pawels |
318 |
} |
1474 |
29 Nov 11 |
pawels |
319 |
public void setLastName(String lastName) { |
1474 |
29 Nov 11 |
pawels |
320 |
this.lastName = lastName; |
1474 |
29 Nov 11 |
pawels |
321 |
} |
1474 |
29 Nov 11 |
pawels |
322 |
public String getAffiliations() { |
1474 |
29 Nov 11 |
pawels |
323 |
return affiliations; |
1474 |
29 Nov 11 |
pawels |
324 |
} |
1474 |
29 Nov 11 |
pawels |
325 |
public void setAffiliations(String affiliation) { |
1474 |
29 Nov 11 |
pawels |
326 |
this.affiliations = affiliation; |
1474 |
29 Nov 11 |
pawels |
327 |
} |
1474 |
29 Nov 11 |
pawels |
328 |
public String getAddress() { |
1474 |
29 Nov 11 |
pawels |
329 |
return address; |
1474 |
29 Nov 11 |
pawels |
330 |
} |
1474 |
29 Nov 11 |
pawels |
331 |
public void setAddress(String address) { |
1474 |
29 Nov 11 |
pawels |
332 |
this.address = address; |
1474 |
29 Nov 11 |
pawels |
333 |
} |
1474 |
29 Nov 11 |
pawels |
334 |
public String getPhone() { |
1474 |
29 Nov 11 |
pawels |
335 |
return phone; |
1474 |
29 Nov 11 |
pawels |
336 |
} |
1474 |
29 Nov 11 |
pawels |
337 |
public void setPhone(String phone) { |
1474 |
29 Nov 11 |
pawels |
338 |
this.phone = phone; |
1474 |
29 Nov 11 |
pawels |
339 |
} |
1474 |
29 Nov 11 |
pawels |
340 |
public String getEmail() { |
1474 |
29 Nov 11 |
pawels |
341 |
return email; |
1474 |
29 Nov 11 |
pawels |
342 |
} |
1474 |
29 Nov 11 |
pawels |
343 |
public void setEmail(String email) { |
1474 |
29 Nov 11 |
pawels |
344 |
this.email = email; |
1474 |
29 Nov 11 |
pawels |
345 |
} |
1474 |
29 Nov 11 |
pawels |
346 |
public String getRoles() { |
1474 |
29 Nov 11 |
pawels |
347 |
return roles; |
1474 |
29 Nov 11 |
pawels |
348 |
} |
1474 |
29 Nov 11 |
pawels |
349 |
public void setRoles(String roles) { |
1474 |
29 Nov 11 |
pawels |
350 |
this.roles = roles; |
1474 |
29 Nov 11 |
pawels |
351 |
} |
1474 |
29 Nov 11 |
pawels |
352 |
|
1474 |
29 Nov 11 |
pawels |
353 |
|
1474 |
29 Nov 11 |
pawels |
354 |
} |